From 62347850be38806019052cdd435600f3feb1c812 Mon Sep 17 00:00:00 2001 From: trzhang-msft Date: Mon, 9 Aug 2021 11:20:26 -0700 Subject: [PATCH 001/186] test dhcp acl (#8359) --- src/sonic-host-services/pytest.ini | 2 +- .../tests/caclmgrd/__init__.py | 0 .../tests/caclmgrd/caclmgrd_dhcp_test.py | 54 ++++++ .../tests/caclmgrd/test_dhcp_vectors.py | 163 ++++++++++++++++++ .../{hostcfgd => common}/mock_configdb.py | 2 +- .../tests/hostcfgd/hostcfgd_radius_test.py | 2 +- .../tests/hostcfgd/hostcfgd_test.py | 2 +- 7 files changed, 221 insertions(+), 4 deletions(-) create mode 100644 src/sonic-host-services/tests/caclmgrd/__init__.py create mode 100644 src/sonic-host-services/tests/caclmgrd/caclmgrd_dhcp_test.py create mode 100644 src/sonic-host-services/tests/caclmgrd/test_dhcp_vectors.py rename src/sonic-host-services/tests/{hostcfgd => common}/mock_configdb.py (96%) diff --git a/src/sonic-host-services/pytest.ini b/src/sonic-host-services/pytest.ini index ae0c05fcb5f1..8823631c6283 100644 --- a/src/sonic-host-services/pytest.ini +++ b/src/sonic-host-services/pytest.ini @@ -1,2 +1,2 @@ [pytest] -addopts = --cov=scripts --cov-report html --cov-report term --cov-report xml --ignore=tests/hostcfgd/test_vectors.py --ignore=tests/hostcfgd/test_radius_vectors.py +addopts = --cov=scripts --cov-report html --cov-report term --cov-report xml --ignore=tests/hostcfgd/test_vectors.py --ignore=tests/hostcfgd/test_radius_vectors.py --ignore=tests/caclmgrd/test_dhcp_vectors.py diff --git a/src/sonic-host-services/tests/caclmgrd/__init__.py b/src/sonic-host-services/tests/caclmgrd/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/src/sonic-host-services/tests/caclmgrd/caclmgrd_dhcp_test.py b/src/sonic-host-services/tests/caclmgrd/caclmgrd_dhcp_test.py new file mode 100644 index 000000000000..9e12fa9994d3 --- /dev/null +++ b/src/sonic-host-services/tests/caclmgrd/caclmgrd_dhcp_test.py @@ -0,0 +1,54 @@ +import os +import sys +import swsscommon + +from parameterized import parameterized +from sonic_py_common.general import load_module_from_source +from unittest import TestCase, mock +from pyfakefs.fake_filesystem_unittest import patchfs + +from .test_dhcp_vectors import CACLMGRD_DHCP_TEST_VECTOR +from tests.common.mock_configdb import MockConfigDb + + +DBCONFIG_PATH = '/var/run/redis/sonic-db/database_config.json' + + +swsscommon.swsscommon.ConfigDBConnector = MockConfigDb +test_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +modules_path = os.path.dirname(test_path) +scripts_path = os.path.join(modules_path, "scripts") +sys.path.insert(0, modules_path) +caclmgrd_path = os.path.join(scripts_path, 'caclmgrd') +caclmgrd = load_module_from_source('caclmgrd', caclmgrd_path) + + +class TestCaclmgrdDhcp(TestCase): + """ + Test caclmgrd dhcp + """ + @parameterized.expand(CACLMGRD_DHCP_TEST_VECTOR) + @patchfs + def test_caclmgrd_dhcp(self, test_name, test_data, fs): + if not os.path.exists(DBCONFIG_PATH): + fs.create_file(DBCONFIG_PATH) # fake database_config.json + + MockConfigDb.set_config_db(test_data["config_db"]) + + with mock.patch("caclmgrd.subprocess") as mocked_subprocess: + popen_mock = mock.Mock() + popen_attrs = test_data["popen_attributes"] + popen_mock.configure_mock(**popen_attrs) + mocked_subprocess.Popen.return_value = popen_mock + + call_mock = mock.Mock() + call_rc = test_data["call_rc"] + mocked_subprocess.call.return_value = call_rc + + caclmgrd_daemon = caclmgrd.ControlPlaneAclManager("caclmgrd") + mux_update = test_data["mux_update"] + + for key,data in mux_update: + caclmgrd_daemon.update_dhcp_acl(key, '', data) + + mocked_subprocess.call.assert_has_calls(test_data["expected_subprocess_calls"], any_order=False) diff --git a/src/sonic-host-services/tests/caclmgrd/test_dhcp_vectors.py b/src/sonic-host-services/tests/caclmgrd/test_dhcp_vectors.py new file mode 100644 index 000000000000..6a58f761251b --- /dev/null +++ b/src/sonic-host-services/tests/caclmgrd/test_dhcp_vectors.py @@ -0,0 +1,163 @@ +from unittest.mock import call + +""" + caclmgrd dhcp test vector +""" +CACLMGRD_DHCP_TEST_VECTOR = [ + [ + "Active_Present", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "active"}), + ("Ethernet8", {"state": "active"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --delete DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + call("iptables --delete DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 0, + }, + ], + [ + "Active_Absent", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "active"}), + ("Ethernet8", {"state": "active"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 1, + }, + ], + [ + "Standby_Present", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "standby"}), + ("Ethernet8", {"state": "standby"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 0, + }, + ], + [ + "Standby_Absent", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "standby"}), + ("Ethernet8", {"state": "standby"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --insert DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + call("iptables --insert DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 1, + }, + ], + [ + "Unknown_Present", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "unknown"}), + ("Ethernet8", {"state": "unknown"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --delete DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + call("iptables --delete DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 0, + }, + ], + [ + "Uknown_Absent", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "unknown"}), + ("Ethernet8", {"state": "unknown"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 1, + }, + ], +] diff --git a/src/sonic-host-services/tests/hostcfgd/mock_configdb.py b/src/sonic-host-services/tests/common/mock_configdb.py similarity index 96% rename from src/sonic-host-services/tests/hostcfgd/mock_configdb.py rename to src/sonic-host-services/tests/common/mock_configdb.py index 5edfc8618d54..7783e6e8eaa5 100644 --- a/src/sonic-host-services/tests/hostcfgd/mock_configdb.py +++ b/src/sonic-host-services/tests/common/mock_configdb.py @@ -5,7 +5,7 @@ class MockConfigDb(object): STATE_DB = None CONFIG_DB = None - def __init__(self): + def __init__(self, **kwargs): pass @staticmethod diff --git a/src/sonic-host-services/tests/hostcfgd/hostcfgd_radius_test.py b/src/sonic-host-services/tests/hostcfgd/hostcfgd_radius_test.py index 39c77b5beae7..5ae05bd9ac6e 100644 --- a/src/sonic-host-services/tests/hostcfgd/hostcfgd_radius_test.py +++ b/src/sonic-host-services/tests/hostcfgd/hostcfgd_radius_test.py @@ -10,7 +10,7 @@ from parameterized import parameterized from unittest import TestCase, mock from tests.hostcfgd.test_radius_vectors import HOSTCFGD_TEST_RADIUS_VECTOR -from tests.hostcfgd.mock_configdb import MockConfigDb +from tests.common.mock_configdb import MockConfigDb swsscommon.ConfigDBConnector = MockConfigDb diff --git a/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py b/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py index e3126dc5eafd..9bd82a76afc7 100644 --- a/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py +++ b/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py @@ -7,7 +7,7 @@ from unittest import TestCase, mock from .test_vectors import HOSTCFGD_TEST_VECTOR -from .mock_configdb import MockConfigDb +from tests.common.mock_configdb import MockConfigDb from pyfakefs.fake_filesystem_unittest import patchfs From 4e0b2751a8f996cbc9301f7ef1a3719259e8e351 Mon Sep 17 00:00:00 2001 From: lguohan Date: Mon, 9 Aug 2021 13:48:18 -0700 Subject: [PATCH 002/186] [openssh]: move build dep installation to sonic-slave-buster (#8381) install build dep causes dpkg lock issue in parallel build Signed-off-by: Guohan Lu --- sonic-slave-buster/Dockerfile.j2 | 2 ++ src/openssh/Makefile | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sonic-slave-buster/Dockerfile.j2 b/sonic-slave-buster/Dockerfile.j2 index 890572320fa2..bbd68a31396e 100644 --- a/sonic-slave-buster/Dockerfile.j2 +++ b/sonic-slave-buster/Dockerfile.j2 @@ -348,6 +348,8 @@ RUN apt-get update && apt-get install -y \ libsystemd-dev \ pkg-config +RUN apt-get -y build-dep openssh + # Build fix for ARMHF buster libsairedis {%- if CONFIGURED_ARCH == "armhf" %} # Install doxygen build dependency packages diff --git a/src/openssh/Makefile b/src/openssh/Makefile index 0fd8642b1285..be05c6ffd675 100644 --- a/src/openssh/Makefile +++ b/src/openssh/Makefile @@ -19,7 +19,6 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : stg import -s ../patch/series # Build package - sudo http_proxy=$(http_proxy) apt-get -y build-dep openssh dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $(SONIC_DPKG_ADMINDIR) popd From fa9f8eecf1b21bd05407032a24ea6d6c8decba2d Mon Sep 17 00:00:00 2001 From: Aravind Mani <53524901+aravindmani-1@users.noreply.github.com> Date: Mon, 9 Aug 2021 14:56:48 -0700 Subject: [PATCH 003/186] DellEMC: Change PG values for S5232f,Z9264f (#7102) * DellEMC: Change PG values for S5232f,Z9264f * change-v1 --- .../DellEMC-S5232f-C32/pg_profile_lookup.ini | 32 +++++++++---------- .../pg_profile_lookup.ini | 32 +++++++++---------- .../pg_profile_lookup.ini | 17 ++++++++++ .../pg_profile_lookup.ini | 17 ++++++++++ .../pg_profile_lookup.ini | 17 ++++++++++ .../DellEMC-Z9264f-C64/pg_profile_lookup.ini | 32 +++++++++---------- .../pg_profile_lookup.ini | 32 +++++++++---------- .../DellEMC-Z9264f-Q64/pg_profile_lookup.ini | 32 +++++++++---------- 8 files changed, 131 insertions(+), 80 deletions(-) create mode 100644 device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-100G/pg_profile_lookup.ini create mode 100644 device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-10G/pg_profile_lookup.ini create mode 100644 device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-25G/pg_profile_lookup.ini diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C32/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C32/pg_profile_lookup.ini index aedda37a8878..a8cf083ec04d 100644 --- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C32/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C32/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 1248 2288 35776 -3 2288 - 25000 5m 1248 2288 53248 -3 2288 - 40000 5m 1248 2288 66560 -3 2288 - 50000 5m 1248 2288 90272 -3 2288 - 100000 5m 1248 2288 165568 -3 2288 - 10000 40m 1248 2288 37024 -3 2288 - 25000 40m 1248 2288 53248 -3 2288 - 40000 40m 1248 2288 71552 -3 2288 - 50000 40m 1248 2288 96096 -3 2288 - 100000 40m 1248 2288 177632 -3 2288 - 10000 300m 1248 2288 46176 -3 2288 - 25000 300m 1248 2288 79040 -3 2288 - 40000 300m 1248 2288 108160 -3 2288 - 50000 300m 1248 2288 141856 -3 2288 - 100000 300m 1248 2288 268736 -3 2288 +# speed cable size xon xoff threshold xon_offset + 10000 5m 1024 2048 46080 -3 2048 + 25000 5m 1024 2048 65024 -3 2048 + 40000 5m 1024 2048 77056 -3 2048 + 50000 5m 1024 2048 93440 -3 2048 + 100000 5m 1024 2048 162048 -3 2048 + 10000 40m 1024 2048 47360 -3 2048 + 25000 40m 1024 2048 67840 -3 2048 + 40000 40m 1024 2048 81664 -3 2048 + 50000 40m 1024 2048 99072 -3 2048 + 100000 40m 1024 2048 173568 -3 2048 + 10000 300m 1024 2048 57088 -3 2048 + 25000 300m 1024 2048 92672 -3 2048 + 40000 300m 1024 2048 121344 -3 2048 + 50000 300m 1024 2048 148736 -3 2048 + 100000 300m 1024 2048 272640 -3 2048 diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini index aedda37a8878..a8cf083ec04d 100644 --- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 1248 2288 35776 -3 2288 - 25000 5m 1248 2288 53248 -3 2288 - 40000 5m 1248 2288 66560 -3 2288 - 50000 5m 1248 2288 90272 -3 2288 - 100000 5m 1248 2288 165568 -3 2288 - 10000 40m 1248 2288 37024 -3 2288 - 25000 40m 1248 2288 53248 -3 2288 - 40000 40m 1248 2288 71552 -3 2288 - 50000 40m 1248 2288 96096 -3 2288 - 100000 40m 1248 2288 177632 -3 2288 - 10000 300m 1248 2288 46176 -3 2288 - 25000 300m 1248 2288 79040 -3 2288 - 40000 300m 1248 2288 108160 -3 2288 - 50000 300m 1248 2288 141856 -3 2288 - 100000 300m 1248 2288 268736 -3 2288 +# speed cable size xon xoff threshold xon_offset + 10000 5m 1024 2048 46080 -3 2048 + 25000 5m 1024 2048 65024 -3 2048 + 40000 5m 1024 2048 77056 -3 2048 + 50000 5m 1024 2048 93440 -3 2048 + 100000 5m 1024 2048 162048 -3 2048 + 10000 40m 1024 2048 47360 -3 2048 + 25000 40m 1024 2048 67840 -3 2048 + 40000 40m 1024 2048 81664 -3 2048 + 50000 40m 1024 2048 99072 -3 2048 + 100000 40m 1024 2048 173568 -3 2048 + 10000 300m 1024 2048 57088 -3 2048 + 25000 300m 1024 2048 92672 -3 2048 + 40000 300m 1024 2048 121344 -3 2048 + 50000 300m 1024 2048 148736 -3 2048 + 100000 300m 1024 2048 272640 -3 2048 diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-100G/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-100G/pg_profile_lookup.ini new file mode 100644 index 000000000000..a8cf083ec04d --- /dev/null +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-100G/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 10000 5m 1024 2048 46080 -3 2048 + 25000 5m 1024 2048 65024 -3 2048 + 40000 5m 1024 2048 77056 -3 2048 + 50000 5m 1024 2048 93440 -3 2048 + 100000 5m 1024 2048 162048 -3 2048 + 10000 40m 1024 2048 47360 -3 2048 + 25000 40m 1024 2048 67840 -3 2048 + 40000 40m 1024 2048 81664 -3 2048 + 50000 40m 1024 2048 99072 -3 2048 + 100000 40m 1024 2048 173568 -3 2048 + 10000 300m 1024 2048 57088 -3 2048 + 25000 300m 1024 2048 92672 -3 2048 + 40000 300m 1024 2048 121344 -3 2048 + 50000 300m 1024 2048 148736 -3 2048 + 100000 300m 1024 2048 272640 -3 2048 diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-10G/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-10G/pg_profile_lookup.ini new file mode 100644 index 000000000000..a8cf083ec04d --- /dev/null +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-10G/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 10000 5m 1024 2048 46080 -3 2048 + 25000 5m 1024 2048 65024 -3 2048 + 40000 5m 1024 2048 77056 -3 2048 + 50000 5m 1024 2048 93440 -3 2048 + 100000 5m 1024 2048 162048 -3 2048 + 10000 40m 1024 2048 47360 -3 2048 + 25000 40m 1024 2048 67840 -3 2048 + 40000 40m 1024 2048 81664 -3 2048 + 50000 40m 1024 2048 99072 -3 2048 + 100000 40m 1024 2048 173568 -3 2048 + 10000 300m 1024 2048 57088 -3 2048 + 25000 300m 1024 2048 92672 -3 2048 + 40000 300m 1024 2048 121344 -3 2048 + 50000 300m 1024 2048 148736 -3 2048 + 100000 300m 1024 2048 272640 -3 2048 diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-25G/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-25G/pg_profile_lookup.ini new file mode 100644 index 000000000000..a8cf083ec04d --- /dev/null +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-25G/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 10000 5m 1024 2048 46080 -3 2048 + 25000 5m 1024 2048 65024 -3 2048 + 40000 5m 1024 2048 77056 -3 2048 + 50000 5m 1024 2048 93440 -3 2048 + 100000 5m 1024 2048 162048 -3 2048 + 10000 40m 1024 2048 47360 -3 2048 + 25000 40m 1024 2048 67840 -3 2048 + 40000 40m 1024 2048 81664 -3 2048 + 50000 40m 1024 2048 99072 -3 2048 + 100000 40m 1024 2048 173568 -3 2048 + 10000 300m 1024 2048 57088 -3 2048 + 25000 300m 1024 2048 92672 -3 2048 + 40000 300m 1024 2048 121344 -3 2048 + 50000 300m 1024 2048 148736 -3 2048 + 100000 300m 1024 2048 272640 -3 2048 diff --git a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C64/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C64/pg_profile_lookup.ini index aedda37a8878..eeb1322d6ee8 100644 --- a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C64/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C64/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 1248 2288 35776 -3 2288 - 25000 5m 1248 2288 53248 -3 2288 - 40000 5m 1248 2288 66560 -3 2288 - 50000 5m 1248 2288 90272 -3 2288 - 100000 5m 1248 2288 165568 -3 2288 - 10000 40m 1248 2288 37024 -3 2288 - 25000 40m 1248 2288 53248 -3 2288 - 40000 40m 1248 2288 71552 -3 2288 - 50000 40m 1248 2288 96096 -3 2288 - 100000 40m 1248 2288 177632 -3 2288 - 10000 300m 1248 2288 46176 -3 2288 - 25000 300m 1248 2288 79040 -3 2288 - 40000 300m 1248 2288 108160 -3 2288 - 50000 300m 1248 2288 141856 -3 2288 - 100000 300m 1248 2288 268736 -3 2288 +# speed cable size xon xoff threshold xon_offset + 10000 5m 1248 2288 38064 -3 2288 + 25000 5m 1248 2288 52000 -3 2288 + 40000 5m 1248 2288 64728 -3 2288 + 50000 5m 1248 2288 77168 -3 2288 + 100000 5m 1248 2288 136032 -3 2288 + 10000 40m 1248 2288 39104 -3 2288 + 25000 40m 1248 2288 54288 -3 2288 + 40000 40m 1248 2288 69472 -3 2288 + 50000 40m 1248 2288 81744 -3 2288 + 100000 40m 1248 2288 145392 -3 2288 + 10000 300m 1248 2288 47216 -3 2288 + 25000 300m 1248 2288 74464 -3 2288 + 40000 300m 1248 2288 101712 -3 2288 + 50000 300m 1248 2288 122096 -3 2288 + 100000 300m 1248 2288 225680 -3 2288 diff --git a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C8D112/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C8D112/pg_profile_lookup.ini index aedda37a8878..eeb1322d6ee8 100644 --- a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C8D112/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C8D112/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 1248 2288 35776 -3 2288 - 25000 5m 1248 2288 53248 -3 2288 - 40000 5m 1248 2288 66560 -3 2288 - 50000 5m 1248 2288 90272 -3 2288 - 100000 5m 1248 2288 165568 -3 2288 - 10000 40m 1248 2288 37024 -3 2288 - 25000 40m 1248 2288 53248 -3 2288 - 40000 40m 1248 2288 71552 -3 2288 - 50000 40m 1248 2288 96096 -3 2288 - 100000 40m 1248 2288 177632 -3 2288 - 10000 300m 1248 2288 46176 -3 2288 - 25000 300m 1248 2288 79040 -3 2288 - 40000 300m 1248 2288 108160 -3 2288 - 50000 300m 1248 2288 141856 -3 2288 - 100000 300m 1248 2288 268736 -3 2288 +# speed cable size xon xoff threshold xon_offset + 10000 5m 1248 2288 38064 -3 2288 + 25000 5m 1248 2288 52000 -3 2288 + 40000 5m 1248 2288 64728 -3 2288 + 50000 5m 1248 2288 77168 -3 2288 + 100000 5m 1248 2288 136032 -3 2288 + 10000 40m 1248 2288 39104 -3 2288 + 25000 40m 1248 2288 54288 -3 2288 + 40000 40m 1248 2288 69472 -3 2288 + 50000 40m 1248 2288 81744 -3 2288 + 100000 40m 1248 2288 145392 -3 2288 + 10000 300m 1248 2288 47216 -3 2288 + 25000 300m 1248 2288 74464 -3 2288 + 40000 300m 1248 2288 101712 -3 2288 + 50000 300m 1248 2288 122096 -3 2288 + 100000 300m 1248 2288 225680 -3 2288 diff --git a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-Q64/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-Q64/pg_profile_lookup.ini index aedda37a8878..eeb1322d6ee8 100644 --- a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-Q64/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-Q64/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 1248 2288 35776 -3 2288 - 25000 5m 1248 2288 53248 -3 2288 - 40000 5m 1248 2288 66560 -3 2288 - 50000 5m 1248 2288 90272 -3 2288 - 100000 5m 1248 2288 165568 -3 2288 - 10000 40m 1248 2288 37024 -3 2288 - 25000 40m 1248 2288 53248 -3 2288 - 40000 40m 1248 2288 71552 -3 2288 - 50000 40m 1248 2288 96096 -3 2288 - 100000 40m 1248 2288 177632 -3 2288 - 10000 300m 1248 2288 46176 -3 2288 - 25000 300m 1248 2288 79040 -3 2288 - 40000 300m 1248 2288 108160 -3 2288 - 50000 300m 1248 2288 141856 -3 2288 - 100000 300m 1248 2288 268736 -3 2288 +# speed cable size xon xoff threshold xon_offset + 10000 5m 1248 2288 38064 -3 2288 + 25000 5m 1248 2288 52000 -3 2288 + 40000 5m 1248 2288 64728 -3 2288 + 50000 5m 1248 2288 77168 -3 2288 + 100000 5m 1248 2288 136032 -3 2288 + 10000 40m 1248 2288 39104 -3 2288 + 25000 40m 1248 2288 54288 -3 2288 + 40000 40m 1248 2288 69472 -3 2288 + 50000 40m 1248 2288 81744 -3 2288 + 100000 40m 1248 2288 145392 -3 2288 + 10000 300m 1248 2288 47216 -3 2288 + 25000 300m 1248 2288 74464 -3 2288 + 40000 300m 1248 2288 101712 -3 2288 + 50000 300m 1248 2288 122096 -3 2288 + 100000 300m 1248 2288 225680 -3 2288 From 105ef78ffadaf5b06467e77b30484a903811088d Mon Sep 17 00:00:00 2001 From: trzhang-msft Date: Mon, 9 Aug 2021 17:42:38 -0700 Subject: [PATCH 004/186] fix (#8393) --- src/sonic-host-services/scripts/caclmgrd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sonic-host-services/scripts/caclmgrd b/src/sonic-host-services/scripts/caclmgrd index 2d8b0b028f84..3ef3b0d0ef63 100755 --- a/src/sonic-host-services/scripts/caclmgrd +++ b/src/sonic-host-services/scripts/caclmgrd @@ -706,11 +706,12 @@ class ControlPlaneAclManager(daemon_base.DaemonBase): # Set up STATE_DB connector to monitor the change in MUX_CABLE_TABLE state_db_connector = None subscribe_mux_cable = None + state_db_id = swsscommon.SonicDBConfig.getDbId("STATE_DB") + if self.DualToR: self.log_info("Dual ToR mode") # set up state_db connector - state_db_id = swsscommon.SonicDBConfig.getDbId("STATE_DB") state_db_connector = swsscommon.DBConnector("STATE_DB", 0) subscribe_mux_cable = swsscommon.SubscriberStateTable(state_db_connector, self.MUX_CABLE_TABLE) sel.addSelectable(subscribe_mux_cable) From 504de9f30535916ade9b335098dc82cceee8a973 Mon Sep 17 00:00:00 2001 From: tjchadaga <85581939+tjchadaga@users.noreply.github.com> Date: Mon, 9 Aug 2021 19:26:50 -0700 Subject: [PATCH 005/186] Fix TH3 Warm-reboot failure due to Tunnel termination SAI failure (#8395) --- .../DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm | 1 + .../th3-z9332f-16x400G-64x100G.config.bcm | 1 + .../DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm | 1 + src/sonic-device-data/tests/permitted_list | 1 + 4 files changed, 4 insertions(+) diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm index c9e8698436de..deedcbd2c455 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm @@ -1,3 +1,4 @@ +sai_tunnel_global_sip_mask_enable=1 core_clock_frequency=1325 dpr_clock_frequency=1000 device_clock_frequency=1325 diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm index 1a41367d9410..6731d61ccb75 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm @@ -1,3 +1,4 @@ +sai_tunnel_global_sip_mask_enable=1 core_clock_frequency=1325 dpr_clock_frequency=1000 device_clock_frequency=1325 diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm index a189a8b1731f..39ecf13d5521 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm @@ -1,3 +1,4 @@ +sai_tunnel_global_sip_mask_enable=1 core_clock_frequency=1325 dpr_clock_frequency=1000 device_clock_frequency=1325 diff --git a/src/sonic-device-data/tests/permitted_list b/src/sonic-device-data/tests/permitted_list index f4f576b8dc31..9ff0e5b6959f 100644 --- a/src/sonic-device-data/tests/permitted_list +++ b/src/sonic-device-data/tests/permitted_list @@ -235,6 +235,7 @@ sai_preinit_cmd_file sai_preinit_warmboot_cmd_file sai_postinit_cmd_file sai_postinit_warmboot_cmd_file +sai_tunnel_global_sip_mask_enable help_cli_enable memlist_enable serdes_lane_config_dfe From ab75260d20a9b4673ff90bffc6f0f46e689d856a Mon Sep 17 00:00:00 2001 From: Shilong Liu Date: Tue, 10 Aug 2021 10:55:49 +0800 Subject: [PATCH 006/186] Reproducible build add docker image debian* to white list. (#8330) #### Why I did it 1. Add version control for debian* docker image to white list. 2. Always record docker image sha256 value, regardless of white list. --- scripts/docker_version_control.sh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/docker_version_control.sh b/scripts/docker_version_control.sh index 41e536f08073..9dd3ad55bad0 100755 --- a/scripts/docker_version_control.sh +++ b/scripts/docker_version_control.sh @@ -19,12 +19,11 @@ image_tag=`grep "^FROM " $DOCKERFILE | awk '{print$2}'` image=`echo $image_tag | cut -f1 -d:` tag=`echo $image_tag | cut -f2 -d:` -# if docker image not in white list, exit -if [[ "$IMAGENAME" != sonic-slave-* ]] && [[ "$IMAGENAME" != docker-base* ]];then - exit 0 -fi - if [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,all,* ]] || [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,docker,* ]]; then + # if docker image not in white list, exit + if [[ "$IMAGENAME" != sonic-slave-* ]] && [[ "$IMAGENAME" != docker-base* ]] && [[ "$IMAGENAME" != debian:* ]] && [[ "$IMAGENAME" != multiarch/debian-debootstrap:* ]];then + exit 0 + fi if [ -f $version_file ];then hash_value=`grep "${ARCH}:${image_tag}" $version_file | awk -F== '{print$2}'` fi @@ -36,6 +35,9 @@ if [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,all,* ]] || [[ ",$SONIC_VERSION sed -i "s/$oldimage/$newimage/" $DOCKERFILE else hash_value=`docker pull $image_tag | grep Digest | awk '{print$2}'` + if [ -z hash_value ];then + hash_value=unknown + fi fi if [[ "$hash_value" != "unknown" ]];then echo -e "${ARCH}:${image_tag}==$hash_value" >> $new_version_file From 8275f297efd68863751a0c7a2a5a8b4222371ddf Mon Sep 17 00:00:00 2001 From: vdahiya12 <67608553+vdahiya12@users.noreply.github.com> Date: Tue, 10 Aug 2021 00:34:55 -0700 Subject: [PATCH 007/186] [sonic-platform-common] submodule update (#8396) This PR updates the following commits cd3cca7 [Y-Cable][Credo] Credo implementation of YCable class which inherits from YCableBase required for Y-Cable API's in sonic-platform-daemons (#203) bd694b2 Load interval from thermal_policy.json (#178) c43dc17 [sonic_y_cable] add abstract class YCableBase required for Y-cable API support for multiple vendors (#186) Signed-off-by: vaibhav-dahiya --- src/sonic-platform-common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-platform-common b/src/sonic-platform-common index e168f1d46a9f..cd3cca7bc010 160000 --- a/src/sonic-platform-common +++ b/src/sonic-platform-common @@ -1 +1 @@ -Subproject commit e168f1d46a9f1c30efc40065b3e80321c0f1ad9b +Subproject commit cd3cca7bc010d38d11713d718224b7532068c8b2 From fff17563b797b048a735b052e7be6280c46df704 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Tue, 10 Aug 2021 01:37:19 -0700 Subject: [PATCH 008/186] [openssh]: add build dep installation to sonic-slave-bullseye This is the continuation of PR 8381 and is needed for debian 11 build. Signed-off-by: Guohan Lu --- sonic-slave-bullseye/Dockerfile.j2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonic-slave-bullseye/Dockerfile.j2 b/sonic-slave-bullseye/Dockerfile.j2 index 21f27e562838..c2a7fd7ab4ac 100644 --- a/sonic-slave-bullseye/Dockerfile.j2 +++ b/sonic-slave-bullseye/Dockerfile.j2 @@ -338,6 +338,8 @@ RUN apt-get update && apt-get install -y \ libsystemd-dev \ pkg-config +RUN apt-get -y build-dep openssh + # Build fix for ARMHF bullseye libsairedis {%- if CONFIGURED_ARCH == "armhf" %} # Install doxygen build dependency packages From 76d5223c9a99a54621b87872db8db786c9fcb684 Mon Sep 17 00:00:00 2001 From: shlomibitton <60430976+shlomibitton@users.noreply.github.com> Date: Tue, 10 Aug 2021 14:22:58 +0300 Subject: [PATCH 009/186] [hostcfgd] Delay hostcfgd and aaastatsd for faster boot time (#7965) #### Why I did it hostcfgd is starting at the same time as 'create_switch' method is called on orchagent process. This introduce a degradation on the function execution time which eventually cause the fast-boot flow and a boot scenarion in general to run slower (~6 seconds). This change will delay the start time of this daemon. The aaastatsd will delay as well since it has a dependency on hostcfgd, so it is required to delay both. 90 seconds determined as the maximum allowed downtime for control plane to come back up on fast-boot flow. #### How I did it Add two timers for hostcfgd and aaastatsd services in order to delay the startup of these services. #### How to verify it Install an image with this change and observe the daemons start 90 seconds after the system boot. --- .../debian/sonic-host-services-data.aaastatsd.service | 3 --- .../debian/sonic-host-services-data.aaastatsd.timer | 11 +++++++++++ .../debian/sonic-host-services-data.hostcfgd.service | 3 --- .../debian/sonic-host-services-data.hostcfgd.timer | 11 +++++++++++ 4 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer create mode 100644 src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service index b03c6a9551c0..b93fe92c04ed 100644 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service @@ -12,6 +12,3 @@ Restart=on-failure RestartSec=10 TimeoutStopSec=3 -[Install] -WantedBy=sonic.target - diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer new file mode 100644 index 000000000000..e0458ff326f5 --- /dev/null +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Delays aaastatsd daemon until SONiC has started +PartOf=aaastatsd.service + +[Timer] +OnActiveSec=1min 30 sec +Unit=aaastatsd.service + +[Install] +WantedBy=timers.target sonic.target + diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service index 4adf2aba77ad..5e2434527124 100644 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service @@ -9,6 +9,3 @@ After=sonic.target Type=simple ExecStart=/usr/local/bin/hostcfgd -[Install] -WantedBy=sonic.target - diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer new file mode 100644 index 000000000000..baf80f4b4cbd --- /dev/null +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Delays hostcfgd daemon until SONiC has started +PartOf=hostcfgd.service + +[Timer] +OnActiveSec=1min 30 sec +Unit=hostcfgd.service + +[Install] +WantedBy=timers.target sonic.target + From abc998a89eaf286ad83d847093469e2be60e259a Mon Sep 17 00:00:00 2001 From: judyjoseph <53951155+judyjoseph@users.noreply.github.com> Date: Tue, 10 Aug 2021 07:27:01 -0700 Subject: [PATCH 010/186] [build]: Update the make cache mode for opennsl-module-dnx (#8391) Fix warning shown during compilation [ DPKG ] Cache is not enabled for opennsl-modules-dnx_5.0.0.4_amd64.deb package --- platform/broadcom/sai-modules.dep | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/platform/broadcom/sai-modules.dep b/platform/broadcom/sai-modules.dep index 040a7d75d4c7..79c4efb9b229 100644 --- a/platform/broadcom/sai-modules.dep +++ b/platform/broadcom/sai-modules.dep @@ -1,4 +1,4 @@ - +# Broadcom SAI modules MPATH := $($(BRCM_OPENNSL_KERNEL)_SRC_PATH) DEP_FILES := $(SONIC_COMMON_FILES_LIST) platform/broadcom/sai-modules.mk platform/broadcom/sai-modules.dep DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) @@ -8,3 +8,14 @@ $(BRCM_OPENNSL_KERNEL)_CACHE_MODE := GIT_CONTENT_SHA $(BRCM_OPENNSL_KERNEL)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(BRCM_OPENNSL_KERNEL)_DEP_FILES := $(DEP_FILES) +# SAI bcm modules for DNX family ASIC +MPATH_DNX := $($(BRCM_DNX_OPENNSL_KERNEL)_SRC_PATH) +DEP_FILES := $(SONIC_COMMON_FILES_LIST) platform/broadcom/sai-modules.mk platform/broadcom/sai-modules.dep +DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) +SMDEP_FILES := $(addprefix $(MPATH_DNX)/,$(shell cd $(MPATH_DNX) && git ls-files)) + +$(BRCM_DNX_OPENNSL_KERNEL)_CACHE_MODE := GIT_CONTENT_SHA +$(BRCM_DNX_OPENNSL_KERNEL)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) +$(BRCM_DNX_OPENNSL_KERNEL)_DEP_FILES := $(DEP_FILES) +$(BRCM_DNX_OPENNSL_KERNEL)_SMDEP_FILES := $(SMDEP_FILES) +$(BRCM_DNX_OPENNSL_KERNEL)_SMDEP_PATHS := $(MPATH_DNX) From 14da7a1663d43a2554143404d63306035576806a Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak <38952541+stepanblyschak@users.noreply.github.com> Date: Tue, 10 Aug 2021 21:11:45 +0300 Subject: [PATCH 011/186] [sonic_debian_extension.j2] export DOCKER_HOST so that clients can use it to connect to dockerd (#8398) Use DOCKER_HOST. Every client including docker command and python docker API uses this environment variable to connect to dockerd. Signed-off-by: Stepan Blyschak --- .../build_templates/sonic_debian_extension.j2 | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index ec50fb423244..59232f1b7512 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -69,7 +69,7 @@ sudo bash -c "echo \"DOCKER_OPTS=\"--storage-driver=overlay2\"\" >> $FILESYSTEM_ sudo mkdir -p "$FILESYSTEM_ROOT/$DOCKER_CTL_DIR" sudo cp $DOCKER_SCRIPTS_DIR/docker "$FILESYSTEM_ROOT/$DOCKER_CTL_SCRIPT" if [ $MULTIARCH_QEMU_ENVIRON == y ]; then - SONIC_NATIVE_DOCKERD_FOR_DOCKERFS=" -H unix:///dockerfs/var/run/docker.sock " + DOCKER_HOST="unix:///dockerfs/var/run/docker.sock" SONIC_NATIVE_DOCKERD_FOR_DOCKERFS_PID="cat `pwd`/dockerfs/var/run/docker.pid" else sudo chroot $FILESYSTEM_ROOT $DOCKER_CTL_SCRIPT start @@ -668,7 +668,7 @@ trap_push clean_proc sudo mount proc /proc -t proc sudo mkdir $FILESYSTEM_ROOT/target sudo mount --bind target $FILESYSTEM_ROOT/target -sudo chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS info +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker info {% for docker_installation_target in installer_images.strip().split() -%} {% set pkgname, docker_build_path, machine, image = docker_installation_target.split('|') %} @@ -676,10 +676,10 @@ sudo chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS info {% set imagefilename = imagefilepath.split('/')|last -%} {% set imagename = imagefilename.split('.')|first -%} if [[ -z "{{machine}}" || -n "{{machine}}" && $TARGET_MACHINE == "{{machine}}" ]]; then -sudo LANG=C chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS load -i {{imagefilepath}} -sudo LANG=C chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS tag {{imagename}}:latest {{imagename}}:"${SONIC_IMAGE_VERSION}" +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker load -i {{imagefilepath}} +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker tag {{imagename}}:latest {{imagename}}:"${SONIC_IMAGE_VERSION}" # Check if manifest exists for {{imagename}} and it is a valid JSON -sudo LANG=C chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS inspect {{imagename}}:latest \ +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker inspect {{imagename}}:latest \ | jq '.[0].Config.Labels["com.azure.sonic.manifest"]' -r > /tmp/manifest.json jq -e . /tmp/manifest.json || { >&2 echo "docker image {{imagename}} has no manifest or manifest is not a valid JSON" @@ -687,8 +687,8 @@ jq -e . /tmp/manifest.json || { } {% if imagename.endswith('-dbg') %} {% set imagebasename = imagename.replace('-dbg', '') -%} -sudo LANG=C chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS tag {{imagename}}:latest {{imagebasename}}:"${SONIC_IMAGE_VERSION}" -sudo LANG=C chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS tag {{imagename}}:latest {{imagebasename}}:latest +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker tag {{imagename}}:latest {{imagebasename}}:"${SONIC_IMAGE_VERSION}" +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker tag {{imagename}}:latest {{imagebasename}}:latest {% endif %} fi {% endfor %} @@ -705,7 +705,7 @@ fi sudo cp $BUILD_TEMPLATES/docker_image_ctl.j2 $FILESYSTEM_ROOT_USR_SHARE_SONIC_TEMPLATES/docker_image_ctl.j2 # Generate shutdown order -sudo LANG=C chroot $FILESYSTEM_ROOT /usr/local/bin/generate_shutdown_order.py +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT /usr/local/bin/generate_shutdown_order.py {% if include_kubernetes == "y" %} ## Pull in kubernetes docker images @@ -727,13 +727,13 @@ echo "docker images pull complete" {% for package in sonic_packages.strip().split() -%} {% set name, repo, version, set_owner, enabled = package.split('|') -%} -sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager repository add {{ name }} {{ repo }} -sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager install {{ name }}=={{ version }} {{ get_install_options(set_owner, enabled) }} +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT sonic-package-manager repository add {{ name }} {{ repo }} +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT sonic-package-manager install {{ name }}=={{ version }} {{ get_install_options(set_owner, enabled) }} {% endfor -%} {% for package in sonic_local_packages.strip().split() -%} {% set name, path, set_owner, enabled = package.split('|') -%} -sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager install --from-tarball {{ path }} {{ get_install_options(set_owner, enabled) }} +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT sonic-package-manager install --from-tarball {{ path }} {{ get_install_options(set_owner, enabled) }} {% endfor -%} sudo umount $FILESYSTEM_ROOT/target From d6433d1adca2d04d0d2bb30e7ccf07355d6922be Mon Sep 17 00:00:00 2001 From: Rajkumar-Marvell <54936542+rajkumar38@users.noreply.github.com> Date: Tue, 10 Aug 2021 23:52:09 +0530 Subject: [PATCH 012/186] [reboot-cause] Fixed determine-reboot-cause.service failure. (#8210) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rajkumar Pennadam Ramamoorthy rpennadamram@marvell.com Why I did it Install sonic image from ONIE. Once system is up, execute "config reload" command. Root cause is that "determine-reboot-cause.service" was in failed state. root@sonic:/host/reboot-cause# systemctl list-units --failed UNIT LOAD ACTIVE SUB DESCRIPTION ● determine-reboot-cause.service loaded failed failed Reboot cause determination service How I did it Fixed the issue by setting default reason to "REBOOT_CAUSE_UNKNOWN" instead of "None". How to verify it Check " determine-reboot-cause.service' loaded successfully post image installation from ONIE. Verify "reboot-cause.txt" file is created and config reload succeeds. --- src/sonic-host-services/scripts/determine-reboot-cause | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-host-services/scripts/determine-reboot-cause b/src/sonic-host-services/scripts/determine-reboot-cause index ac304a06a027..1408ad0e2952 100755 --- a/src/sonic-host-services/scripts/determine-reboot-cause +++ b/src/sonic-host-services/scripts/determine-reboot-cause @@ -62,7 +62,7 @@ def parse_warmfast_reboot_from_proc_cmdline(): def find_software_reboot_cause_from_reboot_cause_file(): - software_reboot_cause = None + software_reboot_cause = REBOOT_CAUSE_UNKNOWN if os.path.isfile(REBOOT_CAUSE_FILE): with open(REBOOT_CAUSE_FILE) as cause_file: software_reboot_cause = cause_file.readline().rstrip('\n') From 8e903f4566c983bcfe8fb7a3705f1601388ca369 Mon Sep 17 00:00:00 2001 From: gechiang <62408185+gechiang@users.noreply.github.com> Date: Tue, 10 Aug 2021 19:03:22 -0700 Subject: [PATCH 013/186] BRCM Disable ACL Drop counted towards interface RX_DRP counters (#8382) * BRCM Disable ACL Drop counted towards interface RX_DRP counters --- .../td2-a7050-qx32-16x40G+32x10G+8x40G.config.bcm | 3 +++ .../Arista-7050-QX32/td2-a7050-qx32-32x40G.config.bcm | 3 +++ .../td2-a7050-q31s4-31x40G-4x10G.config.bcm | 3 +++ .../Arista-7050QX32S-Q32/td2-a7050-qx32s-32x40G.config.bcm | 3 +++ .../Arista-7060CX-32S-C32/th-a7060-cx32s-32x100G-t1.config.bcm | 3 +++ .../th-a7060-cx32s-8x100G+48x50G.config.bcm | 3 +++ .../th-a7060-cx32s-8x100G+24x40G.config.bcm | 3 +++ .../Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t0.config.bcm | 3 +++ .../Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t1.config.bcm | 3 +++ .../th-a7060-cx32s-8x100G+96x25G.config.bcm | 3 +++ .../Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm | 2 ++ .../Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm | 2 ++ .../x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 | 2 +- .../Arista-7260CX3-D108C8/config.bcm.j2 | 2 +- .../x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 | 2 +- .../broadcom/x86_64-bcm_xlr-r0/BCM956960K/th_32x100.config.bcm | 3 +++ .../Celestica-E1031-T48S4/helix4-e1031-48x1G+4x10G.config.bcm | 3 +++ .../th-seastone-dx010-32x100G-t0.config.bcm | 3 +++ .../th-seastone-dx010-48x50G+8x100G.config.bcm | 3 +++ .../th-seastone-dx010-config-flex-all.bcm | 3 +++ .../Force10-S6000-Q20S48/td2-s6000-20x40G-48x10G.config.bcm | 3 +++ .../Force10-S6000-Q24S32/td2-s6000-24x40G-32x10G.config.bcm | 3 +++ .../Force10-S6000-Q28S16/td2-s6000-28x40G-16x10G.config.bcm | 3 +++ .../Force10-S6000/td2-s6000-32x40G.config.bcm | 3 +++ .../Force10-S6100/th-s6100-64x40G-t0.config.bcm | 3 +++ .../Force10-S6100/th-s6100-64x40G-t1.config.bcm | 3 +++ .../DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm | 3 +++ .../th3-z9332f-16x400G-64x100G.config.bcm | 3 +++ .../DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm | 3 +++ 29 files changed, 79 insertions(+), 3 deletions(-) diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-Q16S64/td2-a7050-qx32-16x40G+32x10G+8x40G.config.bcm b/device/arista/x86_64-arista_7050_qx32/Arista-7050-Q16S64/td2-a7050-qx32-16x40G+32x10G+8x40G.config.bcm index d3ee2d5e3b0a..00714fbd400e 100644 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-Q16S64/td2-a7050-qx32-16x40G+32x10G+8x40G.config.bcm +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-Q16S64/td2-a7050-qx32-16x40G+32x10G+8x40G.config.bcm @@ -24,6 +24,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/td2-a7050-qx32-32x40G.config.bcm b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/td2-a7050-qx32-32x40G.config.bcm index 7537b36411f7..074cd523c072 100644 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/td2-a7050-qx32-32x40G.config.bcm +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/td2-a7050-qx32-32x40G.config.bcm @@ -24,6 +24,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/td2-a7050-q31s4-31x40G-4x10G.config.bcm b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/td2-a7050-q31s4-31x40G-4x10G.config.bcm index c5666bbc745d..1fa9817ff522 100644 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/td2-a7050-q31s4-31x40G-4x10G.config.bcm +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/td2-a7050-q31s4-31x40G-4x10G.config.bcm @@ -4,6 +4,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/td2-a7050-qx32s-32x40G.config.bcm b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/td2-a7050-qx32s-32x40G.config.bcm index 31521e4c43ae..5ffd9530a7c9 100644 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/td2-a7050-qx32s-32x40G.config.bcm +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/td2-a7050-qx32s-32x40G.config.bcm @@ -18,6 +18,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/th-a7060-cx32s-32x100G-t1.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/th-a7060-cx32s-32x100G-t1.config.bcm index 95a947003fbc..adbb21ca3b83 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/th-a7060-cx32s-32x100G-t1.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/th-a7060-cx32s-32x100G-t1.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/th-a7060-cx32s-8x100G+48x50G.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/th-a7060-cx32s-8x100G+48x50G.config.bcm index 5c70d324dbb3..b496399451ce 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/th-a7060-cx32s-8x100G+48x50G.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/th-a7060-cx32s-8x100G+48x50G.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q24C8/th-a7060-cx32s-8x100G+24x40G.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q24C8/th-a7060-cx32s-8x100G+24x40G.config.bcm index 05908a259c48..1c7f37618d5f 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q24C8/th-a7060-cx32s-8x100G+24x40G.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q24C8/th-a7060-cx32s-8x100G+24x40G.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t0.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t0.config.bcm index c011ad93f4d7..6a3011ca516c 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t0.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t0.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t1.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t1.config.bcm index 65a7d57b5513..90046651bf16 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t1.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t1.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-T96C8/th-a7060-cx32s-8x100G+96x25G.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-T96C8/th-a7060-cx32s-8x100G+96x25G.config.bcm index 467d428830c9..94ac99e3e3e3 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-T96C8/th-a7060-cx32s-8x100G+96x25G.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-T96C8/th-a7060-cx32s-8x100G+96x25G.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm index 52e3424aaf55..eb2c7bc0f5fb 100644 --- a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm +++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm @@ -1,3 +1,5 @@ +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 arl_clean_timeout_usec=15000000 asf_mem_profile.0=2 bcm_num_cos.0=8 diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm index 0cf9ae8f3a65..f9e731e58823 100644 --- a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm +++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm @@ -1,3 +1,5 @@ +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 arl_clean_timeout_usec=15000000 asf_mem_profile.0=2 bcm_num_cos.0=8 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 index 94e6560dc211..38bc9f3dc1d2 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 @@ -13,13 +13,13 @@ {%- if 'dualtor' in switch_subtype.lower() %} {%- set IPinIP_sock = 'sai_tunnel_support=1 host_as_route_disable=1 - sai_adjust_acl_drop_in_rx_drop=1 l3_ecmp_levels=2' -%} {%- endif %} {%- endif %} {%- endif %} {# The following is the common soc properties that used to be named "th2-a7260cx3-64-64x100G-t1.config.bcm" #} +sai_adjust_acl_drop_in_rx_drop=1 PHY_AN_ALLOW_PLL_CHANGE=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 index 6218ad9b0879..b2ef1cdf4977 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 @@ -5,11 +5,11 @@ {%- if 'dualtor' in switch_subtype.lower() %} {%- set IPinIP_sock = 'sai_tunnel_support=1 host_as_route_disable=1 - sai_adjust_acl_drop_in_rx_drop=1 l3_ecmp_levels=2' -%} {%- endif %} {%- endif %} {# The following is the common soc properties that used to be named "th2-a7260cx3-64-112x50G+8x100G.config.bcm" #} +sai_adjust_acl_drop_in_rx_drop=1 PHY_AN_ALLOW_PLL_CHANGE=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 index f9649f52d09b..e8d3bd322993 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 @@ -13,12 +13,12 @@ {%- if 'dualtor' in switch_subtype.lower() %} {%- set IPinIP_sock = 'sai_tunnel_support=1 host_as_route_disable=1 - sai_adjust_acl_drop_in_rx_drop=1 l3_ecmp_levels=2' -%} {%- endif %} {%- endif %} {%- endif %} {# The following is the common soc properties that used to be named "th2-a7260cx3-64-64x40G.config.bcm" #} +sai_adjust_acl_drop_in_rx_drop=1 PHY_AN_ALLOW_PLL_CHANGE=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/broadcom/x86_64-bcm_xlr-r0/BCM956960K/th_32x100.config.bcm b/device/broadcom/x86_64-bcm_xlr-r0/BCM956960K/th_32x100.config.bcm index 16f18dcd2fd0..772db95d7f34 100644 --- a/device/broadcom/x86_64-bcm_xlr-r0/BCM956960K/th_32x100.config.bcm +++ b/device/broadcom/x86_64-bcm_xlr-r0/BCM956960K/th_32x100.config.bcm @@ -1,3 +1,6 @@ +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + portmap_1=1:100 portmap_2=5:100 portmap_3=9:100 diff --git a/device/celestica/x86_64-cel_e1031-r0/Celestica-E1031-T48S4/helix4-e1031-48x1G+4x10G.config.bcm b/device/celestica/x86_64-cel_e1031-r0/Celestica-E1031-T48S4/helix4-e1031-48x1G+4x10G.config.bcm index c7942d6fc0b8..e7272ea9d12a 100644 --- a/device/celestica/x86_64-cel_e1031-r0/Celestica-E1031-T48S4/helix4-e1031-48x1G+4x10G.config.bcm +++ b/device/celestica/x86_64-cel_e1031-r0/Celestica-E1031-T48S4/helix4-e1031-48x1G+4x10G.config.bcm @@ -1,3 +1,6 @@ +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + bcm56340_4x10=1 bcm56340_config=1 dport_map_direct=0 diff --git a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t0.config.bcm b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t0.config.bcm index 7c315460dc8e..f05fabce5822 100644 --- a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t0.config.bcm +++ b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t0.config.bcm @@ -17,6 +17,9 @@ l3_alpm_enable=2 ipv6_lpm_128b_enable=1 mmu_lossless=0 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + ################################################################################### # Celestica Customize for SeaStone ################################################################################### diff --git a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/th-seastone-dx010-48x50G+8x100G.config.bcm b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/th-seastone-dx010-48x50G+8x100G.config.bcm index 6707aa71df09..b848052c6511 100644 --- a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/th-seastone-dx010-48x50G+8x100G.config.bcm +++ b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/th-seastone-dx010-48x50G+8x100G.config.bcm @@ -1,3 +1,6 @@ +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + os=unix l2xmsg_mode=1 parity_enable=0 diff --git a/device/celestica/x86_64-cel_seastone-r0/th-seastone-dx010-config-flex-all.bcm b/device/celestica/x86_64-cel_seastone-r0/th-seastone-dx010-config-flex-all.bcm index dc2cdf1c200d..ed5c1b6d9b19 100644 --- a/device/celestica/x86_64-cel_seastone-r0/th-seastone-dx010-config-flex-all.bcm +++ b/device/celestica/x86_64-cel_seastone-r0/th-seastone-dx010-config-flex-all.bcm @@ -19,6 +19,9 @@ ipv6_lpm_128b_enable=1 #Use MMU lossy configuration mmu_lossless=0 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + ################################################################################### # SeaStone customized configuration ################################################################################### diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/td2-s6000-20x40G-48x10G.config.bcm b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/td2-s6000-20x40G-48x10G.config.bcm index d63f589d4fc9..ca155cb83041 100755 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/td2-s6000-20x40G-48x10G.config.bcm +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/td2-s6000-20x40G-48x10G.config.bcm @@ -10,6 +10,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/td2-s6000-24x40G-32x10G.config.bcm b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/td2-s6000-24x40G-32x10G.config.bcm index 5734e9ee5b1d..32d86d8474b3 100755 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/td2-s6000-24x40G-32x10G.config.bcm +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/td2-s6000-24x40G-32x10G.config.bcm @@ -10,6 +10,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/td2-s6000-28x40G-16x10G.config.bcm b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/td2-s6000-28x40G-16x10G.config.bcm index e0ebfd96f00b..af18c034fdd2 100755 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/td2-s6000-28x40G-16x10G.config.bcm +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/td2-s6000-28x40G-16x10G.config.bcm @@ -10,6 +10,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/td2-s6000-32x40G.config.bcm b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/td2-s6000-32x40G.config.bcm index 0e25b4d4232d..2626674d67ca 100644 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/td2-s6000-32x40G.config.bcm +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/td2-s6000-32x40G.config.bcm @@ -10,6 +10,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t0.config.bcm b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t0.config.bcm index 7fa577052635..dac4967f8a5f 100644 --- a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t0.config.bcm +++ b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t0.config.bcm @@ -1,4 +1,7 @@ #TH S6100 64x40 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + l3_alpm_enable=2 pfc_deadlock_seq_control=1 bcm_stat_interval=2000000 diff --git a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t1.config.bcm b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t1.config.bcm index f55fb9d3ab51..20234ea9a66c 100644 --- a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t1.config.bcm +++ b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t1.config.bcm @@ -1,4 +1,7 @@ #TH S6100 64x40 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + l3_alpm_enable=2 pfc_deadlock_seq_control=1 bcm_stat_interval=2000000 diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm index deedcbd2c455..827cf9c754e1 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm @@ -4,6 +4,9 @@ dpr_clock_frequency=1000 device_clock_frequency=1325 port_flex_enable=1 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + #firmware load method, use fast load load_firmware=0x2 diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm index 6731d61ccb75..d207912c5ef1 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm @@ -4,6 +4,9 @@ dpr_clock_frequency=1000 device_clock_frequency=1325 port_flex_enable=1 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + #firmware load method, use fast load load_firmware=0x2 diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm index 39ecf13d5521..cbccb223e98a 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm @@ -4,6 +4,9 @@ dpr_clock_frequency=1000 device_clock_frequency=1325 port_flex_enable=1 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + #firmware load method, use fast load load_firmware=0x2 From 25416b2ce69e7c63e7a29692591fc403de47958e Mon Sep 17 00:00:00 2001 From: arunlk-dell <83708154+arunlk-dell@users.noreply.github.com> Date: Wed, 11 Aug 2021 09:05:51 +0530 Subject: [PATCH 014/186] DellEMC: S5232F support for show system-health command (#8334) Co-authored-by: Arun LK Why I did it Support for show system-health command in s5232f How I did it Added the configuration, API changes to support system health How to verify it Execute "show system-health summary/detail/monitor-list" CLI. --- .../system_health_monitoring_config.json | 11 ++++ .../s5232f/sonic_platform/chassis.py | 50 ++++++++++++++++ .../s5232f/sonic_platform/psu.py | 57 ++++++++++++++++++- 3 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 device/dell/x86_64-dellemc_s5232f_c3538-r0/system_health_monitoring_config.json diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/system_health_monitoring_config.json b/device/dell/x86_64-dellemc_s5232f_c3538-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..315deec90b0a --- /dev/null +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/system_health_monitoring_config.json @@ -0,0 +1,11 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": ["fan.speed"], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault" : "amber", + "normal" : "green", + "booting": "blinking_green" + } +} diff --git a/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/chassis.py index 356e69526d89..1be2186fac76 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/chassis.py @@ -21,6 +21,7 @@ from sonic_platform.thermal import Thermal from sonic_platform.fan_drawer import FanDrawer from sonic_platform.watchdog import Watchdog + import sonic_platform.hwaccess as hwaccess except ImportError as e: raise ImportError(str(e) + "- required module not found") @@ -38,6 +39,21 @@ class Chassis(ChassisBase): oir_fd = -1 epoll = -1 + pci_res = "/sys/bus/pci/devices/0000:04:00.0/resource0" + sysled_offset = 0x0024 + SYSLED_COLOR_TO_REG = { + "blinking_green": 0x0, + "green" : 0x10, + "amber" : 0x20, + "blinking_amber": 0x30 + } + + REG_TO_SYSLED_COLOR = { + 0x0 : "blinking_green", + 0x10 : "green", + 0x20 : "amber", + 0x30 : "blinking_amber" + } _global_port_pres_dict = {} @@ -222,6 +238,40 @@ def get_num_sfps(self): """ return self._num_sfps + def initizalize_system_led(self): + self.sys_ledcolor = "green" + + def get_status_led(self): + """ + Gets the current system LED color + + Returns: + A string that represents the supported color + """ + val = hwaccess.pci_get_value(self.pci_res, self.sysled_offset) + if val != -1: + val = val & 0x30 + return self.REG_TO_SYSLED_COLOR.get(val) + return self.sys_ledcolor + + def set_status_led(self, color): + """ + Set system LED status based on the color type passed in the argument. + Argument: Color to be set + Returns: + bool: True is specified color is set, Otherwise return False + """ + + if color not in list(self.SYSLED_COLOR_TO_REG.keys()): + return False + + val = hwaccess.pci_get_value(self.pci_res, self.sysled_offset) + val = (val & 0xFFCF) | self.SYSLED_COLOR_TO_REG[color] + + hwaccess.pci_set_value(self.pci_res, val, self.sysled_offset) + self.sys_ledcolor = color + return True + def get_reboot_cause(self): """ Retrieves the cause of the previous reboot diff --git a/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/psu.py b/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/psu.py index a7e2add8bd08..15b5ac16b1a5 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/psu.py +++ b/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/psu.py @@ -22,9 +22,11 @@ class Psu(PsuBase): # { PSU-ID: { Sensor-Name: Sensor-ID } } SENSOR_MAPPING = { 1: { "State": 0x31, "Current": 0x39, - "Power": 0x37, "Voltage": 0x38 }, + "Power": 0x37, "Voltage": 0x38, + "Temperature": 0xc }, 2: { "State": 0x32, "Current": 0x3F, - "Power": 0x3D, "Voltage": 0x3E } } + "Power": 0x3D, "Voltage": 0x3E, + "Temperature": 0xd } } # ( PSU-ID: FRU-ID } FRU_MAPPING = { 1: 1, 2: 2 } @@ -37,6 +39,7 @@ def __init__(self, psu_index): self.voltage_sensor = IpmiSensor(self.SENSOR_MAPPING[self.index]["Voltage"]) self.current_sensor = IpmiSensor(self.SENSOR_MAPPING[self.index]["Current"]) self.power_sensor = IpmiSensor(self.SENSOR_MAPPING[self.index]["Power"]) + self.temp_sensor = IpmiSensor(self.SENSOR_MAPPING[self.index ]["Temperature"]) self.fru = IpmiFru(self.FRU_MAPPING[self.index]) self._fan_list.append(Fan(fan_index=self.index, psu_fan=True, @@ -113,6 +116,56 @@ def get_voltage(self): return float(voltage) + def get_voltage_low_threshold(self): + """ + Returns PSU low threshold in Volts + """ + + is_valid, low_threshold = self.voltage_sensor.get_threshold("LowerCritical") + if not is_valid: + low_threshold = 11.6 + low_threshold = "{:.2f}".format(low_threshold) + + return float(low_threshold) + + def get_voltage_high_threshold(self): + """ + Returns PSU high threshold in Volts + """ + + is_valid, high_threshold = self.voltage_sensor.get_threshold("UpperCritical") + if not is_valid: + high_threshold = 12.8 + high_threshold = "{:.2f}".format(high_threshold) + + return float(high_threshold) + + 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 + """ + is_valid, temperature = self.temp_sensor.get_reading() + if not is_valid: + temperature = 0 + + return float(temperature) + + def get_temperature_high_threshold(self): + """ + Returns the high temperature threshold for PSU in Celsius + """ + + is_valid, high_threshold = self.temp_sensor.get_threshold("UpperCritical") + if not is_valid: + high_threshold = 105 + high_threshold = "{:.2f}".format(high_threshold) + + return float(high_threshold) + def get_current(self): """ Retrieves present electric current supplied by PSU From ffaa0f8e35c9aab0570e4f883541123bf2c2dafd Mon Sep 17 00:00:00 2001 From: dflynn-Nokia <60479697+dflynn-Nokia@users.noreply.github.com> Date: Wed, 11 Aug 2021 02:23:05 -0400 Subject: [PATCH 015/186] [Nokia ixs7215] Watchdog timer support (#8377) --- .../7215/sonic_platform/test/test-watchdog.py | 22 ++++ .../7215/sonic_platform/watchdog.py | 108 +++++++++++++----- 2 files changed, 100 insertions(+), 30 deletions(-) create mode 100755 platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/test/test-watchdog.py diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/test/test-watchdog.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/test/test-watchdog.py new file mode 100755 index 000000000000..20805e04ed29 --- /dev/null +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/test/test-watchdog.py @@ -0,0 +1,22 @@ +#!/usr/bin/python + +from sonic_platform.chassis import Chassis + + +def main(): + print("---------------------") + print("Chassis Watchdog Test") + print("---------------------") + + chassis = Chassis() + + watchdog = chassis.get_watchdog() + + print(" Armed: {}".format(watchdog.is_armed())) + print(" Time Left: {}".format(watchdog.get_remaining_time())) + + return + + +if __name__ == '__main__': + main() diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/watchdog.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/watchdog.py index 75ec3ab177ae..903b6365dc48 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/watchdog.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/watchdog.py @@ -10,19 +10,25 @@ import array from sonic_platform_base.watchdog_base import WatchdogBase -from sonic_py_common import logger """ ioctl constants """ +IO_WRITE = 0x40000000 IO_READ = 0x80000000 +IO_READ_WRITE = 0xC0000000 IO_SIZE_INT = 0x00040000 IO_TYPE_WATCHDOG = ord('W') << 8 WDR_INT = IO_READ | IO_SIZE_INT | IO_TYPE_WATCHDOG +WDWR_INT = IO_READ_WRITE | IO_SIZE_INT | IO_TYPE_WATCHDOG """ Watchdog ioctl commands """ WDIOC_SETOPTIONS = 4 | WDR_INT WDIOC_KEEPALIVE = 5 | WDR_INT +WDIOC_SETTIMEOUT = 6 | WDWR_INT WDIOC_GETTIMEOUT = 7 | WDR_INT +WDIOC_SETPRETIMEOUT = 8 | WDWR_INT +WDIOC_GETPRETIMEOUT = 9 | WDR_INT +WDIOC_GETTIMELEFT = 10 | WDR_INT """ Watchdog status constants """ WDIOS_DISABLECARD = 0x0001 @@ -33,8 +39,6 @@ WD_COMMON_ERROR = -1 -sonic_logger = logger.Logger() - class WatchdogImplBase(WatchdogBase): """ @@ -47,6 +51,7 @@ def __init__(self, wd_device_path): Open a watchdog handle @param wd_device_path Path to watchdog device """ + super(WatchdogImplBase, self).__init__() self.watchdog_path = wd_device_path self.watchdog = os.open(self.watchdog_path, os.O_WRONLY) @@ -57,32 +62,40 @@ def __init__(self, wd_device_path): self.armed = False self.timeout = self._gettimeout() - def disarm(self): + def _disablewatchdog(self): + """ + Turn off the watchdog timer """ - Disarm the hardware watchdog - Returns: - A boolean, True if watchdog is disarmed successfully, False - if not + req = array.array('h', [WDIOS_DISABLECARD]) + fcntl.ioctl(self.watchdog, WDIOC_SETOPTIONS, req, False) + + def _enablewatchdog(self): + """ + Turn on the watchdog timer """ - sonic_logger.log_info(" Debug disarm watchdog ") - try: - self._disablewatchdog() - self.armed = False - self.timeout = 0 - except IOError: - return False + req = array.array('h', [WDIOS_ENABLECARD]) + fcntl.ioctl(self.watchdog, WDIOC_SETOPTIONS, req, False) - return True + def _keepalive(self): + """ + Keep alive watchdog timer + """ - def _disablewatchdog(self): + fcntl.ioctl(self.watchdog, WDIOC_KEEPALIVE) + + def _settimeout(self, seconds): """ - Turn off the watchdog timer + Set watchdog timer timeout + @param seconds - timeout in seconds + @return is the actual set timeout """ - req = array.array('h', [WDIOS_DISABLECARD]) - fcntl.ioctl(self.watchdog, WDIOC_SETOPTIONS, req, False) + req = array.array('I', [seconds]) + fcntl.ioctl(self.watchdog, WDIOC_SETTIMEOUT, req, True) + + return int(req[0]) def _gettimeout(self): """ @@ -95,11 +108,22 @@ def _gettimeout(self): return int(req[0]) + def _gettimeleft(self): + """ + Get time left before watchdog timer expires + @return time left in seconds + """ + + req = array.array('I', [0]) + fcntl.ioctl(self.watchdog, WDIOC_GETTIMELEFT, req, True) + + return int(req[0]) + def arm(self, seconds): """ - Implements arm WatchdogBase API + Arm the hardware watchdog """ - sonic_logger.log_info(" Debug arm watchdog4 ") + ret = WD_COMMON_ERROR if seconds < 0: return ret @@ -110,7 +134,6 @@ def arm(self, seconds): if self.armed: self._keepalive() else: - sonic_logger.log_info(" Debug arm watchdog5 ") self._enablewatchdog() self.armed = True ret = self.timeout @@ -119,17 +142,42 @@ def arm(self, seconds): return ret - def _enablewatchdog(self): + def disarm(self): """ - Turn on the watchdog timer + Disarm the hardware watchdog + + Returns: + A boolean, True if watchdog is disarmed successfully, False + if not """ - req = array.array('h', [WDIOS_ENABLECARD]) - fcntl.ioctl(self.watchdog, WDIOC_SETOPTIONS, req, False) + try: + self._disablewatchdog() + self.armed = False + self.timeout = 0 + except IOError: + return False - def _keepalive(self): + return True + + def is_armed(self): """ - Keep alive watchdog timer + Implements is_armed WatchdogBase API """ - fcntl.ioctl(self.watchdog, WDIOC_KEEPALIVE) + return self.armed + + def get_remaining_time(self): + """ + Implements get_remaining_time WatchdogBase API + """ + + timeleft = WD_COMMON_ERROR + + if self.armed: + try: + timeleft = self._gettimeleft() + except IOError: + pass + + return timeleft From ba7e50adeda22c0ddae21f117cd4569b0fe3dc59 Mon Sep 17 00:00:00 2001 From: Sujin Kang Date: Wed, 11 Aug 2021 02:04:30 -0700 Subject: [PATCH 016/186] [build]: Enable the cache build for the platform ragile and ruijie. (#8414) --- platform/broadcom/rules.dep | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platform/broadcom/rules.dep b/platform/broadcom/rules.dep index abd96f672e73..36b727570e68 100644 --- a/platform/broadcom/rules.dep +++ b/platform/broadcom/rules.dep @@ -13,6 +13,8 @@ include $(PLATFORM_PATH)/platform-modules-delta.dep include $(PLATFORM_PATH)/platform-modules-quanta.dep #include $(PLATFORM_PATH)/platform-modules-mitac.dep include $(PLATFORM_PATH)/platform-modules-juniper.dep +include $(PLATFORM_PATH)/platform-modules-ragile.dep +include $(PLATFORM_PATH)/platform-modules-ruijie.dep include $(PLATFORM_PATH)/platform-modules-brcm-xlr-gts.dep include $(PLATFORM_PATH)/docker-syncd-brcm.dep include $(PLATFORM_PATH)/docker-syncd-brcm-rpc.dep From 7432e477c0df18c76cd9f025ce22567c640326b3 Mon Sep 17 00:00:00 2001 From: carl-nokia <63672637+carl-nokia@users.noreply.github.com> Date: Wed, 11 Aug 2021 05:13:15 -0400 Subject: [PATCH 017/186] [sonic-device-data]: add port_type to OPTIONAL_PORT_ATTRIBUTES (#8370) enable automated test suites to selectively run relevant tests ( or not run tests ) based upon a new port_type identifier in hwsku.json How I did it Modified the valid optional fields in validity check for hwsku.json per recommendation from Joe in https://github.com/Azure/sonic-mgmt/pull/2654/files Co-authored-by: Carl Keene --- src/sonic-device-data/tests/hwsku_json_checker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-device-data/tests/hwsku_json_checker b/src/sonic-device-data/tests/hwsku_json_checker index 6fd3d82c4cfb..ee15c6fb4b5e 100755 --- a/src/sonic-device-data/tests/hwsku_json_checker +++ b/src/sonic-device-data/tests/hwsku_json_checker @@ -7,7 +7,7 @@ import sys # Global variable PORT_ATTRIBUTES = ["default_brkout_mode"] -OPTIONAL_PORT_ATTRIBUTES = ["fec", "autoneg"] +OPTIONAL_PORT_ATTRIBUTES = ["fec", "autoneg", "port_type"] PORT_REG = "Ethernet(\d+)" HWSKU_JSON = '*hwsku.json' INTF_KEY = "interfaces" From a53f01df59716efb0b02d1617fad3362e7faf576 Mon Sep 17 00:00:00 2001 From: vmittal-msft <46945843+vmittal-msft@users.noreply.github.com> Date: Wed, 11 Aug 2021 04:09:10 -0700 Subject: [PATCH 018/186] Updated PGHeadroom settings for 400G speed (DellEMC-Z9332f-M-O16C64 & DellEMC-Z9332f-O32) (#8420) Updated pg_profile_lookup.ini for both HWSKU to match with BRCM recommendation --- .../DellEMC-Z9332f-M-O16C64/pg_profile_lookup.ini | 10 +++++----- .../DellEMC-Z9332f-O32/pg_profile_lookup.ini | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/pg_profile_lookup.ini index b8bb10af9685..06d19555c746 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/pg_profile_lookup.ini @@ -5,8 +5,8 @@ 100000 300m 2540 2540 117348 -2 2540 100000 1000m 2540 2540 233172 -2 2540 100000 2000m 2540 2540 398526 -2 2540 - 400000 5m 2540 2540 35776 -2 2540 - 400000 40m 2540 2540 53248 -2 2540 - 400000 300m 2540 2540 66560 -2 2540 - 400000 1000m 2540 2540 79872 -2 2540 - 400000 2000m 2540 2540 54528 -2 2540 + 400000 5m 2540 2540 178562 -2 2540 + 400000 40m 2540 2540 201930 -2 2540 + 400000 300m 2540 2540 373888 -2 2540 + 400000 1000m 2540 2540 836676 -2 2540 + 400000 2000m 2540 2540 1498092 -2 2540 diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/pg_profile_lookup.ini index b8bb10af9685..06d19555c746 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/pg_profile_lookup.ini @@ -5,8 +5,8 @@ 100000 300m 2540 2540 117348 -2 2540 100000 1000m 2540 2540 233172 -2 2540 100000 2000m 2540 2540 398526 -2 2540 - 400000 5m 2540 2540 35776 -2 2540 - 400000 40m 2540 2540 53248 -2 2540 - 400000 300m 2540 2540 66560 -2 2540 - 400000 1000m 2540 2540 79872 -2 2540 - 400000 2000m 2540 2540 54528 -2 2540 + 400000 5m 2540 2540 178562 -2 2540 + 400000 40m 2540 2540 201930 -2 2540 + 400000 300m 2540 2540 373888 -2 2540 + 400000 1000m 2540 2540 836676 -2 2540 + 400000 2000m 2540 2540 1498092 -2 2540 From 9d2ccda1ec284efcb6dc7d63f4fe25de95af3a15 Mon Sep 17 00:00:00 2001 From: Kebo Liu Date: Thu, 12 Aug 2021 08:31:58 +0800 Subject: [PATCH 019/186] [Mellanox] Add new sensor conf to support SN4410 A1 system (#8379) #### Why I did it New SN410 A1 system has a different sensor layout with A0 system, needs a new sensor conf file to support it. #### How I did it Since the SN4410 A1 system use exactly the same sensor layout as the SN4700 A1 system, so add a symbol link linking to the SN4700 A1 sensor conf file to reuse. #### How to verify it Run sensor test against the SN4410 A1 system; Run platform related regression test against the SN4410 A1 system --- device/mellanox/x86_64-mlnx_msn4410-r0/get_sensors_conf_path | 1 + device/mellanox/x86_64-mlnx_msn4410-r0/sensors.conf.a1 | 1 + 2 files changed, 2 insertions(+) create mode 120000 device/mellanox/x86_64-mlnx_msn4410-r0/get_sensors_conf_path create mode 120000 device/mellanox/x86_64-mlnx_msn4410-r0/sensors.conf.a1 diff --git a/device/mellanox/x86_64-mlnx_msn4410-r0/get_sensors_conf_path b/device/mellanox/x86_64-mlnx_msn4410-r0/get_sensors_conf_path new file mode 120000 index 000000000000..f1509a1e1d3d --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn4410-r0/get_sensors_conf_path @@ -0,0 +1 @@ +../x86_64-mlnx_msn4700-r0/get_sensors_conf_path \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn4410-r0/sensors.conf.a1 b/device/mellanox/x86_64-mlnx_msn4410-r0/sensors.conf.a1 new file mode 120000 index 000000000000..4605d556f315 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn4410-r0/sensors.conf.a1 @@ -0,0 +1 @@ +../x86_64-mlnx_msn4700-r0/sensors.conf.a1 \ No newline at end of file From f2e5eeb1877faf7f59d7ea47cf57bb9717029b23 Mon Sep 17 00:00:00 2001 From: jerseyang <48576574+jerseyang@users.noreply.github.com> Date: Thu, 12 Aug 2021 09:41:21 +0800 Subject: [PATCH 020/186] enable the emc2305 fan controller and NCP power controller 30ms timeout mechanism (#8138) Why I did it fix the dx010 system eeprom unavailable issue How I did it enable the i2c slave 30ms timeout mechanism How to verify it i2cstress test in DX010 iSMT controller bus Co-authored-by: nicwu-cel --- .../debian/platform-modules-dx010.init | 13 ++++++++++++- .../dx010/modules/emc2305.c | 6 ++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.init b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.init index 8ee3d4465588..21587bfbd3fd 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.init +++ b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.init @@ -147,7 +147,18 @@ start) sleep 0.1 done - /bin/sh /usr/local/bin/platform_api_mgnt.sh init + bus_en=8 + sleep 1 + cfg_r=`i2cget -y -f 8 0x60 0xD1` + ((cfg_w=$cfg_r+$bus_en)) + i2cset -y -f 8 0x60 0xD1 $cfg_w + sleep 1 + cfg_r=`i2cget -y -f 9 0x20 0xD1` + ((cfg_w=$cfg_r+$bus_en)) + i2cset -y -f 9 0x20 0xD1 $cfg_w + sleep 1 + + /bin/sh /usr/local/bin/platform_api_mgnt.sh init echo "done." ;; diff --git a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/emc2305.c b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/emc2305.c index b406a29fd9be..b7a85c17a332 100644 --- a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/emc2305.c +++ b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/emc2305.c @@ -742,6 +742,7 @@ emc2305_probe(struct i2c_client *client, const struct i2c_device_id *id) int status; int i; int fan_idx; + unsigned char dis_to = 0; if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) return -EIO; @@ -752,6 +753,11 @@ emc2305_probe(struct i2c_client *client, const struct i2c_device_id *id) i2c_set_clientdata(client, data); mutex_init(&data->update_lock); + + dis_to = i2c_smbus_read_byte_data(client, REG_CONFIGURATION); + dis_to &= 0xBF; + /* The SMBus timeout function is enabled */ + (void)i2c_smbus_write_byte_data(client, REG_CONFIGURATION, dis_to); status = i2c_smbus_read_byte_data(client, REG_PRODUCT_ID); switch (status) { From 9417fe9303f84267bc74a8da0d1ee01ce8b3e9ba Mon Sep 17 00:00:00 2001 From: richardyu Date: Wed, 11 Aug 2021 20:55:21 -0700 Subject: [PATCH 021/186] PTF adds unittest-xml-reporting (#8417) Co-authored-by: richardyu-ms --- dockers/docker-ptf/Dockerfile.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/dockers/docker-ptf/Dockerfile.j2 b/dockers/docker-ptf/Dockerfile.j2 index dfa4b6a4daa8..a44d5d4a0e38 100644 --- a/dockers/docker-ptf/Dockerfile.j2 +++ b/dockers/docker-ptf/Dockerfile.j2 @@ -120,6 +120,7 @@ RUN rm -rf /debs \ && pip install exabgp==3.4.17\ && pip install pyaml \ && pip install pybrctl pyro4 rpyc yabgp \ + && pip install unittest-xml-reporting \ && mkdir -p /opt \ && cd /opt \ && wget https://raw.githubusercontent.com/p4lang/ptf/master/ptf_nn/ptf_nn_agent.py From 28dca68925d87ace883452be6765fac16eb9c3aa Mon Sep 17 00:00:00 2001 From: carl-nokia <63672637+carl-nokia@users.noreply.github.com> Date: Thu, 12 Aug 2021 03:41:41 -0400 Subject: [PATCH 022/186] [Nokia] Add hwsku.json for the Nokia-7215 (#8372) * add hwsku.json for the Nokia-7215 * added required default_brkout_mode to hwsku as its not optional * remove tabs from the file so spacing consistent Co-authored-by: Carl Keene --- .../Nokia-7215/hwsku.json | 212 ++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 device/nokia/armhf-nokia_ixs7215_52x-r0/Nokia-7215/hwsku.json diff --git a/device/nokia/armhf-nokia_ixs7215_52x-r0/Nokia-7215/hwsku.json b/device/nokia/armhf-nokia_ixs7215_52x-r0/Nokia-7215/hwsku.json new file mode 100644 index 000000000000..4ae62e8d4b01 --- /dev/null +++ b/device/nokia/armhf-nokia_ixs7215_52x-r0/Nokia-7215/hwsku.json @@ -0,0 +1,212 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet1": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet2": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet3": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet4": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet5": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet6": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet7": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet8": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet9": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet10": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet11": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet12": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet13": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet14": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet15": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet16": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet17": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet18": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet19": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet20": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet21": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet22": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet23": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet24": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet25": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet26": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet27": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet28": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet29": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet30": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet31": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet32": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet33": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet34": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet35": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet36": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet37": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet38": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet39": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet40": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet41": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet42": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet43": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet44": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet45": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet46": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet47": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet48": { + "default_brkout_mode": "1x10G", + "port_type": "SFP+" + }, + "Ethernet49": { + "default_brkout_mode": "1x10G", + "port_type": "SFP+" + }, + "Ethernet50": { + "default_brkout_mode": "1x10G", + "port_type": "SFP+" + }, + "Ethernet51": { + "default_brkout_mode": "1x10G", + "port_type": "SFP+" + } + } +} From a4405f09ed6d1d947af042cb512b459516c39000 Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Thu, 12 Aug 2021 22:24:37 +0800 Subject: [PATCH 023/186] Support to build armhf/arm64 platforms on arm based system (#7731) Why I did it Support to build armhf/arm64 platforms on arm based system without qemu simulator. When building the armhf/arm64 on arm based system, it is not necessary to use qemu simulator. How I did it Build armhf on armhf system, or build arm64 on arm64 system, by default, qemu simulator will not be used. When building armhf on arm64, and you have enabled armhf docker, then it will build images without simulator automatically. It is based how the docker service is run. Docker base image change: For amd64, change from debian:to amd64/debian: For arm64, change from multiarch/debian-debootstrap:arm64- to arm64v8/debian: For armhf, change from multiarch/debian-debootstrap:armhf- to arm32v7/debian: See https://github.com/docker-library/official-images#architectures-other-than-amd64 The mapping relations: arm32v6 --- armel arm32v7 --- armhf arm64v8 --- arm64 Docker image armhf deprecated info: https://hub.docker.com/r/armhf/debian, using arm32v7 instead. --- Makefile.work | 9 +++++---- dockers/docker-base-buster/Dockerfile.j2 | 2 +- dockers/docker-base-stretch/Dockerfile.j2 | 2 +- dockers/docker-base/Dockerfile.j2 | 2 +- slave.mk | 9 +++++++++ 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Makefile.work b/Makefile.work index 4a59067434fd..cfcf803329ab 100644 --- a/Makefile.work +++ b/Makefile.work @@ -47,12 +47,13 @@ SHELL = /bin/bash USER := $(shell id -un) PWD := $(shell pwd) USER_LC := $(shell echo $(USER) | tr A-Z a-z) +DOCKER_MACHINE := $(shell docker run --rm debian:buster uname -m) comma := , -ifeq ($(shell uname -m), aarch64) +ifeq ($(DOCKER_MACHINE), aarch64) COMPILE_HOST_ARCH := arm64 -else ifeq ($(shell uname -m), armv7l) +else ifeq ($(shell echo $(DOCKER_MACHINE) | grep -qE "armv7l|armv8l" && echo y),y) COMPILE_HOST_ARCH := armhf else COMPILE_HOST_ARCH := amd64 @@ -286,7 +287,7 @@ SONIC_BUILD_INSTRUCTION := make \ .DEFAULT_GOAL := all %:: -ifneq (,$(filter $(CONFIGURED_ARCH), armhf arm64)) +ifeq ($(MULTIARCH_QEMU_ENVIRON), y) @$(DOCKER_MULTIARCH_CHECK) ifneq ($(BLDENV), ) @$(DOCKER_SERVICE_MULTIARCH_CHECK) @@ -361,7 +362,7 @@ reset : if [ $$ans == y ]; then echo "Resetting local repository. Please wait..."; $(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) sudo rm -rf fsroot; - if [[ "$(CONFIGURED_ARCH)" == "armhf" || "$(CONFIGURED_ARCH)" == "arm64" ]]; then + if [ "$(MULTIARCH_QEMU_ENVIRON)" == y ] && [[ "$(CONFIGURED_ARCH)" == "armhf" || "$(CONFIGURED_ARCH)" == "arm64" ]]; then echo "Stopping march $(CONFIGURED_ARCH) docker" sudo kill -9 `sudo cat /var/run/march/docker.pid` || true sudo rm -f /var/run/march/docker.pid || true diff --git a/dockers/docker-base-buster/Dockerfile.j2 b/dockers/docker-base-buster/Dockerfile.j2 index a87ca31c6073..ac3fd7743e77 100644 --- a/dockers/docker-base-buster/Dockerfile.j2 +++ b/dockers/docker-base-buster/Dockerfile.j2 @@ -4,7 +4,7 @@ FROM multiarch/debian-debootstrap:armhf-buster {% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %} FROM multiarch/debian-debootstrap:arm64-buster {% else %} -FROM debian:buster +FROM {{DOCKER_BASE_ARCH}}/debian:buster {% endif %} # Clean documentation in FROM image diff --git a/dockers/docker-base-stretch/Dockerfile.j2 b/dockers/docker-base-stretch/Dockerfile.j2 index 652dec979b60..b77814bb2820 100644 --- a/dockers/docker-base-stretch/Dockerfile.j2 +++ b/dockers/docker-base-stretch/Dockerfile.j2 @@ -4,7 +4,7 @@ FROM multiarch/debian-debootstrap:armhf-stretch {% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %} FROM multiarch/debian-debootstrap:arm64-stretch {% else %} -FROM debian:stretch +FROM {{DOCKER_BASE_ARCH}}/debian:stretch {% endif %} # Clean documentation in FROM image diff --git a/dockers/docker-base/Dockerfile.j2 b/dockers/docker-base/Dockerfile.j2 index ecdbfda11a78..616a4cde7aff 100644 --- a/dockers/docker-base/Dockerfile.j2 +++ b/dockers/docker-base/Dockerfile.j2 @@ -3,7 +3,7 @@ FROM multiarch/debian-debootstrap:armhf-jessie {% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %} FROM multiarch/debian-debootstrap:arm64-jessie {% else %} -FROM debian:jessie +FROM {{DOCKER_BASE_ARCH}}/debian:jessie {% endif %} ## Remove retired jessie-updates repo diff --git a/slave.mk b/slave.mk index 655196f69ae0..ea0ffba90d88 100644 --- a/slave.mk +++ b/slave.mk @@ -51,6 +51,14 @@ CONFIGURED_ARCH := $(shell [ -f .arch ] && cat .arch || echo amd64) ifeq ($(PLATFORM_ARCH),) override PLATFORM_ARCH = $(CONFIGURED_ARCH) endif +DOCKER_BASE_ARCH := $(CONFIGURED_ARCH) +ifeq ($(CONFIGURED_ARCH),armhf) + override DOCKER_BASE_ARCH = arm32v7 +else +ifeq ($(CONFIGURED_ARCH),arm64) + override DOCKER_BASE_ARCH = arm64v8 +endif +endif ifeq ($(BLDENV),bullseye) IMAGE_DISTRO := bullseye else @@ -68,6 +76,7 @@ export PYTHON_WHEELS_PATH export IMAGE_DISTRO export IMAGE_DISTRO_DEBS_PATH export MULTIARCH_QEMU_ENVIRON +export DOCKER_BASE_ARCH ############################################################################### ## Utility rules From f963bc94d4681b74076acf5c8a989c3d4eedd347 Mon Sep 17 00:00:00 2001 From: richardyu Date: Thu, 12 Aug 2021 09:30:43 -0700 Subject: [PATCH 024/186] [202012][saiserver docker]adds saiserver dependences (#8447) Co-authored-by: richardyu-ms --- .../broadcom/docker-saiserver-brcm/Dockerfile.j2 | 13 ++++++++----- .../broadcom/docker-saiserver-brcm/supervisord.conf | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 b/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 index a4b4fedd39ad..3fbbceb6989f 100644 --- a/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 +++ b/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 @@ -1,3 +1,4 @@ +{% from "dockers/dockerfile-macros.j2" import install_debian_packages %} FROM docker-config-engine-buster ARG docker_container_name @@ -6,7 +7,11 @@ RUN [ -f /etc/rsyslog.conf ] && sed -ri "s/%syslogtag%/$docker_container_name#%s ## Make apt-get non-interactive ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update +## Pre-install the fundamental packages +RUN apt-get update \ + && apt-get -y install \ + gdb \ + libboost-atomic1.71.0 COPY \ {% for deb in docker_saiserver_brcm_debs.split(' ') -%} @@ -14,10 +19,8 @@ debs/{{ deb }}{{' '}} {%- endfor -%} debs/ -RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } ; \ -{% for deb in docker_saiserver_brcm_debs.split(' ') -%} -dpkg_apt debs/{{ deb }}{{'; '}} -{%- endfor %} +# Install locally-built Debian packages and implicitly install their dependencies +{{ install_debian_packages(docker_saiserver_brcm_debs.split(' ')) }} ## TODO: add kmod into Depends RUN apt-get install -yf kmod diff --git a/platform/broadcom/docker-saiserver-brcm/supervisord.conf b/platform/broadcom/docker-saiserver-brcm/supervisord.conf index cb67a0fc9a47..e90e41645042 100644 --- a/platform/broadcom/docker-saiserver-brcm/supervisord.conf +++ b/platform/broadcom/docker-saiserver-brcm/supervisord.conf @@ -20,7 +20,7 @@ stdout_logfile=syslog stderr_logfile=syslog [program:saiserver] -command=/usr/bin/saiserver -p /etc/sai/profile.ini -f /etc/sai/portmap.ini +command=/usr/sbin/saiserver -p /etc/sai/profile.ini -f /etc/sai/portmap.ini priority=3 autostart=false autorestart=false From 141dcbf5942874383a408f4b6473944661e4cee1 Mon Sep 17 00:00:00 2001 From: Andriy Yurkiv <70649192+ayurkiv-nvda@users.noreply.github.com> Date: Thu, 12 Aug 2021 21:13:24 +0300 Subject: [PATCH 025/186] [sonic-swss] submodule update (#8434) d8ca31c (origin/master, origin/HEAD, master) [vnet/vxlan] Add support of multiple mappers for the VxLAN tunnel (#1843) 7280e19 [orchagent][ports] Add port reference increment / decrement to lag member add / remove flows (#1825) 0217b66 [nhg]: Add support for weight in nexthop group member. (#1853) df96059 VOQ: Nexthop for remote VOQ LC should be created on inband OIF. (#1823) 8f7ea14 Code changes to support IPv6 Link local enhancements (#1463) 8674b3c Open record file in append mode (#1845) Signed-off-by: Andriy Yurkiv --- src/sonic-swss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-swss b/src/sonic-swss index 7aca82df3b56..d8ca31ca6bb3 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit 7aca82df3b56276625ce3d70ffb45b849003b0d8 +Subproject commit d8ca31ca6bb3068931f56a5e48743df9865bb79b From 520c02b09c58d6acf2e9d2ada5a5a20986da42b7 Mon Sep 17 00:00:00 2001 From: kellyyeh <42761586+kellyyeh@users.noreply.github.com> Date: Thu, 12 Aug 2021 14:32:23 -0700 Subject: [PATCH 026/186] Parse DHCP table (#8268) --- src/sonic-config-engine/minigraph.py | 32 ++++++++++++++++--- .../tests/simple-sample-graph-case.xml | 12 +++++++ src/sonic-config-engine/tests/test_cfggen.py | 13 ++++++++ .../tests/test_minigraph_case.py | 26 +++++++++++++++ 4 files changed, 79 insertions(+), 4 deletions(-) diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index 0c2040d95f0e..fffe1af8965b 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -577,6 +577,29 @@ def parse_dpg(dpg, hname): vlan_attributes['alias'] = vintfname vlans[sonic_vlan_name] = vlan_attributes + dhcp = child.find(str(QName(ns, "Dhcp"))) + dhcp_table = {} + + if dhcp is not None: + for vintf in dhcp.findall(str(QName(ns, "VlanInterface"))): + vintfname = vintf.find(str(QName(ns, "Name"))).text + + dhcp_attributes = {} + + dhcp_node = vintf.find(str(QName(ns, "Dhcpv6Relays"))) + if dhcp_node is not None and dhcp_node.text is not None: + dhcpservers = dhcp_node.text + vdhcpserver_list = dhcpservers.split(';') + dhcp_attributes['dhcpv6_servers'] = vdhcpserver_list + + option_linklayer_addr = vintf.find(str(QName(ns, "Dhcpv6OptionRfc6939"))) + if option_linklayer_addr is not None and option_linklayer_addr.text == "true": + dhcp_attributes['dhcpv6_option|rfc6939_support'] = "true" + elif option_linklayer_addr is not None and option_linklayer_addr.text == "false": + dhcp_attributes['dhcpv6_option|rfc6939_support'] = "false" + + dhcp_table[vintfname] = dhcp_attributes + acls = {} for aclintf in aclintfs.findall(str(QName(ns, "AclInterface"))): if aclintf.find(str(QName(ns, "InAcl"))) is not None: @@ -691,7 +714,7 @@ def parse_dpg(dpg, hname): if mg_key in mg_tunnel.attrib: tunnelintfs[tunnel_type][tunnel_name][table_key] = mg_tunnel.attrib[mg_key] - return intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, pcs, pc_members, acls, vni, tunnelintfs, dpg_ecmp_content + return intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_table, pcs, pc_members, acls, vni, tunnelintfs, dpg_ecmp_content return None, None, None, None, None, None, None, None, None, None, None, None, None def parse_host_loopback(dpg, hname): @@ -1159,6 +1182,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw tunnel_intfs = None vlans = None vlan_members = None + dhcp_table = None pcs = None mgmt_intf = None voq_inband_intfs = None @@ -1217,7 +1241,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw for child in root: if asic_name is None: if child.tag == str(QName(ns, "DpgDec")): - (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, hostname) + (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, hostname) elif child.tag == str(QName(ns, "CpgDec")): (bgp_sessions, bgp_internal_sessions, bgp_voq_chassis_sessions, bgp_asn, bgp_peers_with_range, bgp_monitors) = parse_cpg(child, hostname) elif child.tag == str(QName(ns, "PngDec")): @@ -1232,7 +1256,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw (port_speeds_default, port_descriptions, sys_ports) = parse_deviceinfo(child, hwsku) else: if child.tag == str(QName(ns, "DpgDec")): - (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, asic_name) + (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, asic_name) host_lo_intfs = parse_host_loopback(child, hostname) elif child.tag == str(QName(ns, "CpgDec")): (bgp_sessions, bgp_internal_sessions, bgp_voq_chassis_sessions, bgp_asn, bgp_peers_with_range, bgp_monitors) = parse_cpg(child, asic_name, local_devices) @@ -1580,7 +1604,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw results['DEVICE_NEIGHBOR_METADATA'] = { key:devices[key] for key in devices if key in {device['name'] for device in neighbors.values()} } results['SYSLOG_SERVER'] = dict((item, {}) for item in syslog_servers) results['DHCP_SERVER'] = dict((item, {}) for item in dhcp_servers) - results['DHCPv6_SERVER'] = dict((item, {}) for item in dhcpv6_servers) + results['DHCP'] = dhcp_table results['NTP_SERVER'] = dict((item, {}) for item in ntp_servers) results['TACPLUS_SERVER'] = dict((item, {'priority': '1', 'tcp_port': '49'}) for item in tacacs_servers) results['ACL_TABLE'] = filter_acl_table_bindings(acls, neighbors, pcs, sub_role) diff --git a/src/sonic-config-engine/tests/simple-sample-graph-case.xml b/src/sonic-config-engine/tests/simple-sample-graph-case.xml index c1015b6b5362..95398e6913cf 100644 --- a/src/sonic-config-engine/tests/simple-sample-graph-case.xml +++ b/src/sonic-config-engine/tests/simple-sample-graph-case.xml @@ -148,6 +148,18 @@ + + + Vlan1000 + fc02:2000::1;fc02:2000::2 + true + + + Vlan2000 + fc02:2000::3;fc02:2000::4 + false + + diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index a607d9b3278c..868e1ebb9965 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -820,3 +820,16 @@ def test_minigraph_voq_inband_port(self): 'admin_status': 'up' } ) + + def test_minigraph_dhcp(self): + argument = '-m "' + self.sample_graph_simple_case + '" -p "' + self.port_config + '" -v DHCP' + output = self.run_script(argument) + self.assertEqual( + utils.to_dict(output.strip()), + utils.to_dict( + "{'Vlan1000': {'dhcpv6_servers': ['fc02:2000::1', 'fc02:2000::2'], 'dhcpv6_option|rfc6939_support': 'true'}, " + "'Vlan2000': {'dhcpv6_servers': ['fc02:2000::3', 'fc02:2000::4'], 'dhcpv6_option|rfc6939_support': 'false'}}" + ) + ) + + \ No newline at end of file diff --git a/src/sonic-config-engine/tests/test_minigraph_case.py b/src/sonic-config-engine/tests/test_minigraph_case.py index 08bde40af0cf..97c88b2f3271 100644 --- a/src/sonic-config-engine/tests/test_minigraph_case.py +++ b/src/sonic-config-engine/tests/test_minigraph_case.py @@ -357,3 +357,29 @@ def test_minigraph_mux_cable_table(self): utils.to_dict(output.strip()), expected_table ) + + def test_dhcp_table(self): + argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DHCP"' + expected = { + 'Vlan1000': { + 'dhcpv6_servers': [ + "fc02:2000::1", + "fc02:2000::2" + ], + 'dhcpv6_option|rfc6939_support': 'true' + }, + 'Vlan2000': { + 'dhcpv6_servers': [ + "fc02:2000::3", + "fc02:2000::4" + ], + 'dhcpv6_option|rfc6939_support': 'false' + } + } + output = self.run_script(argument) + self.assertEqual( + utils.to_dict(output.strip()), + expected + ) + + From f73ffa091357baf67aec772704e61453ee1aa553 Mon Sep 17 00:00:00 2001 From: Venkatesan Mahalingam <34145258+venkatmahalingam@users.noreply.github.com> Date: Thu, 12 Aug 2021 21:39:01 -0700 Subject: [PATCH 027/186] [DPB] Allow BGP_NEIGHBOR YANG model with just IP as the key (#7992) Why I did it [DPB] BGP_NEIGHBOR yang model causing DPB errors. How I did it Allowed the BGP_NEIGHBOR list with just IP as the key to allow the current BGP neighbor table in the community. How to verify it Built the SONIC YANG models. --- .../tests/files/sample_config_db.json | 9 ++++ .../yang-models/sonic-bgp-neighbor.yang | 53 +++++++++++++++++++ 2 files changed, 62 insertions(+) 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 5f354328794b..a26902ad7105 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -983,6 +983,15 @@ } }, "BGP_NEIGHBOR": { + "10.0.0.1": { + "asn": "65200", + "holdtime": "180", + "keepalive": "60", + "local_addr": "10.0.0.2", + "name":"PEER1", + "nhopself":"0", + "rrclient":"0" + }, "default|192.168.1.1": { } }, diff --git a/src/sonic-yang-models/yang-models/sonic-bgp-neighbor.yang b/src/sonic-yang-models/yang-models/sonic-bgp-neighbor.yang index cbd94eefdacb..8e0e3f4cc803 100644 --- a/src/sonic-yang-models/yang-models/sonic-bgp-neighbor.yang +++ b/src/sonic-yang-models/yang-models/sonic-bgp-neighbor.yang @@ -48,7 +48,60 @@ module sonic-bgp-neighbor { container sonic-bgp-neighbor { container BGP_NEIGHBOR { + list BGP_NEIGHBOR_TEMPLATE_LIST { + description "This list is to support template based BGP neighbor configuration handled by bgpcfgd"; + key "neighbor"; + + leaf neighbor { + type inet:ip-address; + description "BGP Neighbor address"; + } + + leaf asn { + type uint32 { + range "1..4294967295"; + } + description "Peer AS number"; + } + + leaf holdtime { + type uint16; + description "Hold time"; + } + + leaf keepalive { + type uint16; + description "Keepalive interval"; + } + + leaf local_addr { + type inet:ip-address; + description "Local source address or interface name to use for connection."; + } + + leaf name { + type string; + description "Peer description"; + } + + leaf nhopself { + type uint8 { + range "0..1"; + } + description "Nexthop is self, no nexthop calculation"; + } + + leaf rrclient { + type uint8 { + range "0..1"; + } + description "Route reflector client"; + } + } + list BGP_NEIGHBOR_LIST { + description "This list is to support generic BGP neighbor configuration handled by frrcfgd and + frr_mgmt_framework_config field should be set to true in DEVICE_METADATA talbe for accepting the generic BGP table configurations."; key "vrf_name neighbor"; leaf vrf_name { From b7c6d70a4e95832dd54cd5efd7c7f1f490e608ad Mon Sep 17 00:00:00 2001 From: Shi Su <67605788+shi-su@users.noreply.github.com> Date: Thu, 12 Aug 2021 21:41:04 -0700 Subject: [PATCH 028/186] [FRR]: Upgrade FRR to frr-7.5.1-s1 tag (#8443) Update FRR 7.5.1 head. --- rules/frr.mk | 2 +- src/sonic-frr/frr | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rules/frr.mk b/rules/frr.mk index 82db96557007..72cde12ebf75 100644 --- a/rules/frr.mk +++ b/rules/frr.mk @@ -3,7 +3,7 @@ FRR_VERSION = 7.5.1 FRR_SUBVERSION = 0 FRR_BRANCH = frr/7.5 -FRR_TAG = frr-7.5.1 +FRR_TAG = frr-7.5.1-s1 export FRR_VERSION FRR_SUBVERSION FRR_BRANCH FRR_TAG diff --git a/src/sonic-frr/frr b/src/sonic-frr/frr index df7ab485bde1..c69608a68083 160000 --- a/src/sonic-frr/frr +++ b/src/sonic-frr/frr @@ -1 +1 @@ -Subproject commit df7ab485bde1a511f131f7ad6b70cb43c48c8e6d +Subproject commit c69608a68083d1017257977bd0260bebdb12322f From b5041a31f7fd81153ef2704152c3d499dc7458e8 Mon Sep 17 00:00:00 2001 From: vdahiya12 <67608553+vdahiya12@users.noreply.github.com> Date: Thu, 12 Aug 2021 23:16:11 -0700 Subject: [PATCH 029/186] [sonic-platform-common] submodule update (#8452) This PR for submodule update adds the following commits ce51894 [Y-Cable] add the definition inside setup.py to include sonic_y_cable.credo as a package (#211) Signed-off-by: vaibhav-dahiya --- src/sonic-platform-common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-platform-common b/src/sonic-platform-common index cd3cca7bc010..ce51894d342e 160000 --- a/src/sonic-platform-common +++ b/src/sonic-platform-common @@ -1 +1 @@ -Subproject commit cd3cca7bc010d38d11713d718224b7532068c8b2 +Subproject commit ce51894d342e170681658954b6c6b4db4c5cbeac From d5fa614648e7456438a6fb0d04fc7b26804d319e Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Fri, 23 Jul 2021 09:25:28 -0700 Subject: [PATCH 030/186] Fix tacacs build in Bullseye strncpy calls need to be mindful about the destination buffer size passed in and doing an explicit null termination. Signed-off-by: Saikrishna Arcot --- .../0009-fix-compile-error-strncpy.patch | 29 +++++++++++++++++++ src/tacacs/nss/patch/series | 1 + 2 files changed, 30 insertions(+) create mode 100644 src/tacacs/nss/patch/0009-fix-compile-error-strncpy.patch diff --git a/src/tacacs/nss/patch/0009-fix-compile-error-strncpy.patch b/src/tacacs/nss/patch/0009-fix-compile-error-strncpy.patch new file mode 100644 index 000000000000..5f01047f55d1 --- /dev/null +++ b/src/tacacs/nss/patch/0009-fix-compile-error-strncpy.patch @@ -0,0 +1,29 @@ +Fix calls to strncpy + +From: Saikrishna Arcot + +Calls to strncpy don't guarantee that the destination buffer will be +terminated with a null-byte. GCC, with the -D_FORTIFY_SOURCE=2 flag, will +error out when strncpy is being called with a max size equal to the size of +the destination buffer. + +Change these calls to pass in one less than the size of the destination +buffer, and explicitly add a null byte at the end of the buffer. +--- + nss_tacplus.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/nss_tacplus.c b/nss_tacplus.c +index cc6f0aa..2de00a6 100644 +--- a/nss_tacplus.c ++++ b/nss_tacplus.c +@@ -127,7 +127,8 @@ static int parse_tac_server(char *srv_buf) + } + } + else if(!strncmp(token, "vrf=", 4)){ +- strncpy(vrfname, token + 4, sizeof(vrfname)); ++ strncpy(vrfname, token + 4, sizeof(vrfname) - 1); ++ vrfname[sizeof(vrfname) - 1] = '\0'; + } + else if(!strncmp(token, "secret=", 7)) { + if(tac_srv[tac_srv_no].key) diff --git a/src/tacacs/nss/patch/series b/src/tacacs/nss/patch/series index b60214ead9bc..83e2b31e484f 100644 --- a/src/tacacs/nss/patch/series +++ b/src/tacacs/nss/patch/series @@ -6,3 +6,4 @@ 0006-fix-compiling-warning-about-token-dereference.patch 0007-Add-support-for-TACACS-source-address.patch 0008-do-not-create-or-modify-local-user-if-there-is-no-pr.patch +0009-fix-compile-error-strncpy.patch From 3f72968e98d546203cf8828779cb5ccf1fb26dcb Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Wed, 28 Jul 2021 17:40:02 -0700 Subject: [PATCH 031/186] Clean up build files after building and packaging for deb packages With a Bullseye base image, and PTF being based on Stretch, if there are autogenerated files that are reused from the Bullseye build for Stretch, then autoconf-based packages will fail. This is because the default set of CFLAGS that dpkg passes in includes `-ffile-prefix-map=`, which is not a supported flag with the GCC in Stretch. Then, when running `make clean` in a Stretch environment, make will try to regenerate the autoconf-based files with the cached set of CFLAGS from Bullseye. This causes an error, since that flag is unknown. To work around this, after each build, clean up all built objects and autogenerated files. This makes sure that it is cleaned up in the same environment as the build environment. Note that this issue affects just autoconf packages. For apps using just regular Makefiles, they will probably be fine (they'll still be cleaned up as well). Signed-off-by: Saikrishna Arcot --- slave.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/slave.mk b/slave.mk index ea0ffba90d88..8417d7aa47da 100644 --- a/slave.mk +++ b/slave.mk @@ -491,8 +491,8 @@ $(addprefix $(DEBS_PATH)/, $(SONIC_DPKG_DEBS)) : $(DEBS_PATH)/% : .platform $$(a if [ -f ./autogen.sh ]; then ./autogen.sh $(LOG); fi $(SETUP_OVERLAYFS_FOR_DPKG_ADMINDIR) $(if $($*_DPKG_TARGET), - ${$*_BUILD_ENV} DEB_BUILD_OPTIONS="${DEB_BUILD_OPTIONS_GENERIC} ${$*_DEB_BUILD_OPTIONS}" dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --as-root -T$($*_DPKG_TARGET) --admindir $$mergedir $(LOG), - ${$*_BUILD_ENV} DEB_BUILD_OPTIONS="${DEB_BUILD_OPTIONS_GENERIC} ${$*_DEB_BUILD_OPTIONS}" dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $$mergedir $(LOG) + ${$*_BUILD_ENV} DEB_BUILD_OPTIONS="${DEB_BUILD_OPTIONS_GENERIC} ${$*_DEB_BUILD_OPTIONS}" dpkg-buildpackage -rfakeroot -b -us -uc -tc -j$(SONIC_CONFIG_MAKE_JOBS) --as-root -T$($*_DPKG_TARGET) --admindir $$mergedir $(LOG), + ${$*_BUILD_ENV} DEB_BUILD_OPTIONS="${DEB_BUILD_OPTIONS_GENERIC} ${$*_DEB_BUILD_OPTIONS}" dpkg-buildpackage -rfakeroot -b -us -uc -tc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $$mergedir $(LOG) ) popd $(LOG_SIMPLE) # Clean up From dc0b03ef3f076d7d321cba825c2a32c0b55eede8 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Wed, 4 Aug 2021 13:46:30 -0700 Subject: [PATCH 032/186] Enable CI builds on PRs going to the Bullseye branch Signed-off-by: Saikrishna Arcot --- azure-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 29fcb8b2ed44..ce2bb17e2ceb 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -17,6 +17,7 @@ pr: include: - master - 202012 + - bullseye paths: exclude: - .github From c38b95c8996db19c9127499d26540f1db9e2f21c Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 5 Aug 2021 18:55:10 -0700 Subject: [PATCH 033/186] Remove --net=host from run options for containers The start template script that this value is used in will determine what network namespace to use, and will add --net=host if it needs to run in the host namespace. With Docker 20.10, if --net=host is specified twice in docker run, then it errors out. Therefore, remove the explicit --net=host in the run options setting and let the start template script specify it. Signed-off-by: Saikrishna Arcot --- platform/barefoot/docker-syncd-bfn-rpc.mk | 2 +- platform/broadcom/docker-pde.mk | 2 +- platform/broadcom/docker-saiserver-brcm.mk | 2 +- platform/cavium/docker-syncd-cavm-rpc.mk | 2 +- platform/cavium/docker-syncd-cavm.mk | 2 +- platform/innovium/docker-syncd-invm-rpc.mk | 2 +- platform/marvell-arm64/docker-saiserver-mrvl.mk | 2 +- platform/marvell-arm64/docker-syncd-mrvl-rpc.mk | 2 +- platform/marvell-armhf/docker-saiserver-mrvl.mk | 2 +- platform/marvell-armhf/docker-syncd-mrvl-rpc.mk | 2 +- platform/marvell/docker-syncd-mrvl-rpc.mk | 2 +- platform/mellanox/docker-saiserver-mlnx.mk | 2 +- platform/nephos/docker-syncd-nephos-rpc.mk | 2 +- platform/template/docker-gbsyncd-base.mk | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/platform/barefoot/docker-syncd-bfn-rpc.mk b/platform/barefoot/docker-syncd-bfn-rpc.mk index 451289d727de..1203c99aa7a5 100644 --- a/platform/barefoot/docker-syncd-bfn-rpc.mk +++ b/platform/barefoot/docker-syncd-bfn-rpc.mk @@ -19,7 +19,7 @@ endif $(DOCKER_SYNCD_BFN_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_BFN_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_BFN_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_BFN_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_BFN_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_BFN_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_BFN_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_BFN_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot diff --git a/platform/broadcom/docker-pde.mk b/platform/broadcom/docker-pde.mk index 56d810467498..2d0f371fde11 100644 --- a/platform/broadcom/docker-pde.mk +++ b/platform/broadcom/docker-pde.mk @@ -28,7 +28,7 @@ SONIC_DOCKER_DBG_IMAGES += $(DOCKER_PDE_DBG) SONIC_INSTALL_DOCKER_DBG_IMAGES += $(DOCKER_PDE_DBG) $(DOCKER_PDE)_CONTAINER_NAME = pde -$(DOCKER_PDE)_RUN_OPT += --net=host --privileged -t +$(DOCKER_PDE)_RUN_OPT += --privileged -t $(DOCKER_PDE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_PDE)_RUN_OPT += -v /host/machine.conf:/host/machine.conf:ro $(DOCKER_PDE)_RUN_OPT += -v /usr/lib/python2.7/dist-packages:/usr/share/sonic/classes:ro diff --git a/platform/broadcom/docker-saiserver-brcm.mk b/platform/broadcom/docker-saiserver-brcm.mk index bb8499eab1fb..d39759ac7f21 100644 --- a/platform/broadcom/docker-saiserver-brcm.mk +++ b/platform/broadcom/docker-saiserver-brcm.mk @@ -8,7 +8,7 @@ $(DOCKER_SAISERVER_BRCM)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER) SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_BRCM) $(DOCKER_SAISERVER_BRCM)_CONTAINER_NAME = saiserver -$(DOCKER_SAISERVER_BRCM)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SAISERVER_BRCM)_RUN_OPT += --privileged -t $(DOCKER_SAISERVER_BRCM)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SAISERVER_BRCM)_RUN_OPT += -v /var/run/docker-saiserver:/var/run/sswsyncd $(DOCKER_SAISERVER_BRCM)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/cavium/docker-syncd-cavm-rpc.mk b/platform/cavium/docker-syncd-cavm-rpc.mk index 8dfd294b0f43..a49f12fb38be 100644 --- a/platform/cavium/docker-syncd-cavm-rpc.mk +++ b/platform/cavium/docker-syncd-cavm-rpc.mk @@ -19,6 +19,6 @@ endif $(DOCKER_SYNCD_CAVM_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_CAVM_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_CAVM_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_CAVM_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_CAVM_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_CAVM_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_CAVM_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/cavium/docker-syncd-cavm.mk b/platform/cavium/docker-syncd-cavm.mk index 27984c808410..d0a8b0b14b4e 100644 --- a/platform/cavium/docker-syncd-cavm.mk +++ b/platform/cavium/docker-syncd-cavm.mk @@ -20,6 +20,6 @@ $(DOCKER_SYNCD_BASE)_VERSION = 1.0.0 $(DOCKER_SYNCD_BASE)_PACKAGE_NAME = syncd $(DOCKER_SYNCD_CAVM)_CONTAINER_NAME = syncd -$(DOCKER_SYNCD_CAVM)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_CAVM)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_CAVM)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_CAVM)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/innovium/docker-syncd-invm-rpc.mk b/platform/innovium/docker-syncd-invm-rpc.mk index e56570d705ba..8ccbef57dd4f 100755 --- a/platform/innovium/docker-syncd-invm-rpc.mk +++ b/platform/innovium/docker-syncd-invm-rpc.mk @@ -12,7 +12,7 @@ endif $(DOCKER_SYNCD_INVM_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_INVM_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_INVM_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_INVM_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_INVM_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_INVM_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_INVM_RPC)_RUN_OPT += -v /var/run/docker-syncd:/var/run/sswsyncd $(DOCKER_SYNCD_INVM_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/marvell-arm64/docker-saiserver-mrvl.mk b/platform/marvell-arm64/docker-saiserver-mrvl.mk index a449e3e83e45..c62181300ee0 100644 --- a/platform/marvell-arm64/docker-saiserver-mrvl.mk +++ b/platform/marvell-arm64/docker-saiserver-mrvl.mk @@ -8,7 +8,7 @@ SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_MRVL) SONIC_STRETCH_DOCKERS += $(DOCKER_SAISERVER_MRVL) $(DOCKER_SAISERVER_MRVL)_CONTAINER_NAME = saiserver -$(DOCKER_SAISERVER_MRVL)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SAISERVER_MRVL)_RUN_OPT += --privileged -t $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /var/run/docker-saiserver:/var/run/sswsyncd $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/marvell-arm64/docker-syncd-mrvl-rpc.mk b/platform/marvell-arm64/docker-syncd-mrvl-rpc.mk index 414bc500b453..c8a94878956f 100644 --- a/platform/marvell-arm64/docker-syncd-mrvl-rpc.mk +++ b/platform/marvell-arm64/docker-syncd-mrvl-rpc.mk @@ -20,7 +20,7 @@ endif $(DOCKER_SYNCD_MRVL_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_MRVL_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_MRVL_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot diff --git a/platform/marvell-armhf/docker-saiserver-mrvl.mk b/platform/marvell-armhf/docker-saiserver-mrvl.mk index 0e40653ddbf3..e0be89b14a06 100644 --- a/platform/marvell-armhf/docker-saiserver-mrvl.mk +++ b/platform/marvell-armhf/docker-saiserver-mrvl.mk @@ -8,7 +8,7 @@ $(DOCKER_SAISERVER_MRVL)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER) SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_MRVL) $(DOCKER_SAISERVER_MRVL)_CONTAINER_NAME = saiserver -$(DOCKER_SAISERVER_MRVL)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SAISERVER_MRVL)_RUN_OPT += --privileged -t $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /var/run/docker-saiserver:/var/run/sswsyncd $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/marvell-armhf/docker-syncd-mrvl-rpc.mk b/platform/marvell-armhf/docker-syncd-mrvl-rpc.mk index 30958019c18a..efd1e96f3d80 100644 --- a/platform/marvell-armhf/docker-syncd-mrvl-rpc.mk +++ b/platform/marvell-armhf/docker-syncd-mrvl-rpc.mk @@ -19,7 +19,7 @@ endif $(DOCKER_SYNCD_MRVL_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_MRVL_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_MRVL_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot diff --git a/platform/marvell/docker-syncd-mrvl-rpc.mk b/platform/marvell/docker-syncd-mrvl-rpc.mk index 414bc500b453..c8a94878956f 100644 --- a/platform/marvell/docker-syncd-mrvl-rpc.mk +++ b/platform/marvell/docker-syncd-mrvl-rpc.mk @@ -20,7 +20,7 @@ endif $(DOCKER_SYNCD_MRVL_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_MRVL_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_MRVL_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot diff --git a/platform/mellanox/docker-saiserver-mlnx.mk b/platform/mellanox/docker-saiserver-mlnx.mk index 6515fa9846b1..4f15ed82e6c8 100644 --- a/platform/mellanox/docker-saiserver-mlnx.mk +++ b/platform/mellanox/docker-saiserver-mlnx.mk @@ -9,7 +9,7 @@ SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_MLNX) SONIC_STRETCH_DOCKERS += $(DOCKER_SAISERVER_MLNX) $(DOCKER_SAISERVER_MLNX)_CONTAINER_NAME = saiserver -$(DOCKER_SAISERVER_MLNX)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SAISERVER_MLNX)_RUN_OPT += --privileged -t $(DOCKER_SAISERVER_MLNX)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SAISERVER_MLNX)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_BASE)_RUN_OPT += --tmpfs /run/criu diff --git a/platform/nephos/docker-syncd-nephos-rpc.mk b/platform/nephos/docker-syncd-nephos-rpc.mk index ea514712c59f..94ba95b15dca 100644 --- a/platform/nephos/docker-syncd-nephos-rpc.mk +++ b/platform/nephos/docker-syncd-nephos-rpc.mk @@ -20,7 +20,7 @@ endif $(DOCKER_SYNCD_NEPHOS_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_NEPHOS_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_NEPHOS_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_NEPHOS_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_NEPHOS_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_NEPHOS_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_NEPHOS_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_SYNCD_NEPHOS_RPC)_RUN_OPT += -v /var/run/docker-syncd:/var/run/sswsyncd diff --git a/platform/template/docker-gbsyncd-base.mk b/platform/template/docker-gbsyncd-base.mk index 579f76381010..0b02557845f9 100644 --- a/platform/template/docker-gbsyncd-base.mk +++ b/platform/template/docker-gbsyncd-base.mk @@ -24,6 +24,6 @@ SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_GBSYNCD_BASE_DBG) SONIC_INSTALL_DOCKER_DBG_IMAGES += $(DOCKER_GBSYNCD_BASE_DBG) $(DOCKER_GBSYNCD_BASE)_CONTAINER_NAME = gbsyncd -$(DOCKER_GBSYNCD_BASE)_RUN_OPT += --net=host --privileged -t +$(DOCKER_GBSYNCD_BASE)_RUN_OPT += --privileged -t $(DOCKER_GBSYNCD_BASE)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_GBSYNCD_BASE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro From c8b5daed27fa29a1d993379d68dbbe5b05dcfc0d Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Mon, 9 Aug 2021 19:53:49 -0700 Subject: [PATCH 034/186] Upgrade to ifupdown2 3.0.0 with a patch to fix using broadcast addresses In version 3.0.0, If a broadcast address is specified in /etc/network/interfaces, then when ifup is run, it will fail with an error saying `'str' object has no attribute 'packed'`. This appears to be because it expects all attributes for an interface to be "packable" into a compact binary representation. However, it doesn't actually convert the broadcast address into an IPNetwork object (other addresses are handled). Therefore, convert the broadcast address it reads in from a str to an IPNetwork object. Also explicitly specify the scope of the loopback address in /etc/network/interfaces as host scope. Otherwise, it will get added as global scope by default. As part of this, use JSON to parse ip's output instead of text, for robustness. Signed-off-by: Saikrishna Arcot --- .../build_templates/sonic_debian_extension.j2 | 6 +++- files/image_config/interfaces/interfaces.j2 | 1 + files/image_config/rsyslog/rsyslog-config.sh | 4 +-- rules/ifupdown2.mk | 2 +- src/ifupdown2/Makefile | 8 +++++ .../0001-fix-broadcast-addr-encoding.patch | 31 +++++++++++++++++++ src/ifupdown2/patch/series | 1 + .../tests/sample_output/py2/interfaces | 1 + .../tests/sample_output/py2/mvrf_interfaces | 1 + .../tests/sample_output/py3/interfaces | 1 + .../tests/sample_output/py3/mvrf_interfaces | 1 + 11 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 src/ifupdown2/patch/0001-fix-broadcast-addr-encoding.patch create mode 100644 src/ifupdown2/patch/series diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 59232f1b7512..0d5b895cacfe 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -98,7 +98,7 @@ sudo mkdir -p $FILESYSTEM_ROOT_USR_SHARE_SONIC_FIRMWARE/ # Keeping it generic. It should not harm anyways. sudo mkdir -p $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM -# Install a more recent version of ifupdown2 (and its dependencies via 'apt-get -y install -f') +# Install a patched version of ifupdown2 (and its dependencies via 'apt-get -y install -f') sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/ifupdown2_*.deb || \ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f @@ -139,6 +139,10 @@ sudo rm -rf $FILESYSTEM_ROOT/$REDIS_DUMP_LOAD_PY2_WHEEL_NAME # Install Python module for psutil sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install psutil +# Install Python module for ipaddr +sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install ipaddr +sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install ipaddr + # Install SwSS SDK Python 3 package # Note: the scripts will be overwritten by corresponding Python 2 package SWSSSDK_PY3_WHEEL_NAME=$(basename {{swsssdk_py3_wheel_path}}) diff --git a/files/image_config/interfaces/interfaces.j2 b/files/image_config/interfaces/interfaces.j2 index 98e43dd13be4..1e554e4ed716 100644 --- a/files/image_config/interfaces/interfaces.j2 +++ b/files/image_config/interfaces/interfaces.j2 @@ -24,6 +24,7 @@ auto lo iface lo inet loopback address 127.0.0.1 netmask 255.255.0.0 + scope host post-up ip addr del 127.0.0.1/8 dev lo {% endblock loopback %} {% block mgmt_interface %} diff --git a/files/image_config/rsyslog/rsyslog-config.sh b/files/image_config/rsyslog/rsyslog-config.sh index 26767d84fbe0..f3895302e0f3 100755 --- a/files/image_config/rsyslog/rsyslog-config.sh +++ b/files/image_config/rsyslog/rsyslog-config.sh @@ -13,9 +13,9 @@ fi # on Single NPU platforms we continue to use loopback adddres if [[ ($NUM_ASIC -gt 1) ]]; then - udp_server_ip=$(ip -o -4 addr list docker0 | awk '{print $4}' | cut -d/ -f1) + udp_server_ip=$(ip -j -4 addr list docker0 | jq -r -M '.[0].addr_info[0].local') else - udp_server_ip=$(ip -o -4 addr list lo scope host | awk '{print $4}' | cut -d/ -f1) + udp_server_ip=$(ip -j -4 addr list lo scope host | jq -r -M '.[0].addr_info[0].local') fi sonic-cfggen -d -t /usr/share/sonic/templates/rsyslog.conf.j2 -a "{\"udp_server_ip\": \"$udp_server_ip\"}" >/etc/rsyslog.conf diff --git a/rules/ifupdown2.mk b/rules/ifupdown2.mk index f81facd8ff26..0a7abd7b2f12 100644 --- a/rules/ifupdown2.mk +++ b/rules/ifupdown2.mk @@ -1,6 +1,6 @@ # ifupdown2 package -IFUPDOWN2_VERSION = 1.2.8-1 +IFUPDOWN2_VERSION = 3.0.0-1 export IFUPDOWN2_VERSION IFUPDOWN2 = ifupdown2_$(IFUPDOWN2_VERSION)_all.deb diff --git a/src/ifupdown2/Makefile b/src/ifupdown2/Makefile index 89228bedafae..ed6f6b549992 100644 --- a/src/ifupdown2/Makefile +++ b/src/ifupdown2/Makefile @@ -13,6 +13,14 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : tar -z -f $(IFUPDOWN2_VERSION).tar.gz -x pushd ./ifupdown2-$(IFUPDOWN2_VERSION) + git init + git add -f * + git commit -m "unmodified ifupdown2 source" + + # Apply patch series + stg init + stg import -s ../patch/series + # Build source and Debian packages dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $(SONIC_DPKG_ADMINDIR) popd diff --git a/src/ifupdown2/patch/0001-fix-broadcast-addr-encoding.patch b/src/ifupdown2/patch/0001-fix-broadcast-addr-encoding.patch new file mode 100644 index 000000000000..43ccbf0c6362 --- /dev/null +++ b/src/ifupdown2/patch/0001-fix-broadcast-addr-encoding.patch @@ -0,0 +1,31 @@ +Fix reading and using broadcast address + +When reading the broadcast address, convert it to an IPNetwork object, +so that it can be encoded/packed later. + +From: Saikrishna Arcot +--- + ifupdown2/addons/address.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ifupdown2/addons/address.py b/ifupdown2/addons/address.py +index 8b99b25..2ca41fc 100644 +--- a/ifupdown2/addons/address.py ++++ b/ifupdown2/addons/address.py +@@ -441,11 +441,15 @@ class address(Addon, moduleBase): + else: + addr_obj = ipnetwork.IPNetwork(addr) + +- for attr_name in ("broadcast", "scope", "preferred-lifetime"): ++ for attr_name in ("scope", "preferred-lifetime"): + attr_value = ifaceobj.get_attr_value_n(attr_name, index) + if attr_value: + addr_attributes[attr_name] = attr_value + ++ broadcast = ifaceobj.get_attr_value_n("broadcast", index) ++ if broadcast: ++ addr_attributes["broadcast"] = ipnetwork.IPNetwork(broadcast) ++ + pointopoint = ifaceobj.get_attr_value_n("pointopoint", index) + try: + if pointopoint: diff --git a/src/ifupdown2/patch/series b/src/ifupdown2/patch/series new file mode 100644 index 000000000000..48fb11e8c3c0 --- /dev/null +++ b/src/ifupdown2/patch/series @@ -0,0 +1 @@ +0001-fix-broadcast-addr-encoding.patch diff --git a/src/sonic-config-engine/tests/sample_output/py2/interfaces b/src/sonic-config-engine/tests/sample_output/py2/interfaces index 6e952d6f71ea..360ecf7b13de 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/interfaces +++ b/src/sonic-config-engine/tests/sample_output/py2/interfaces @@ -8,6 +8,7 @@ auto lo iface lo inet loopback address 127.0.0.1 netmask 255.255.0.0 + scope host post-up ip addr del 127.0.0.1/8 dev lo # The management network interface diff --git a/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces b/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces index 9e5c8a4261cf..6143d7ba8c4b 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces +++ b/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces @@ -17,6 +17,7 @@ auto lo iface lo inet loopback address 127.0.0.1 netmask 255.255.0.0 + scope host post-up ip addr del 127.0.0.1/8 dev lo # The management network interface diff --git a/src/sonic-config-engine/tests/sample_output/py3/interfaces b/src/sonic-config-engine/tests/sample_output/py3/interfaces index 6e952d6f71ea..360ecf7b13de 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/interfaces +++ b/src/sonic-config-engine/tests/sample_output/py3/interfaces @@ -8,6 +8,7 @@ auto lo iface lo inet loopback address 127.0.0.1 netmask 255.255.0.0 + scope host post-up ip addr del 127.0.0.1/8 dev lo # The management network interface diff --git a/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces b/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces index 9e5c8a4261cf..6143d7ba8c4b 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces +++ b/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces @@ -17,6 +17,7 @@ auto lo iface lo inet loopback address 127.0.0.1 netmask 255.255.0.0 + scope host post-up ip addr del 127.0.0.1/8 dev lo # The management network interface From 91f9b6f4e42f658c8a0194b75acbc8f8e8187fb0 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Fri, 23 Jul 2021 09:28:36 -0700 Subject: [PATCH 035/186] Add cron and the python 3 mock packages to the Bullseye slave image When using dpkg with the --root flag to install a deb package in a chroot, dpkg checks to see if the users and groups specified in the /var/lib/dpkg/statoverride file are valid. The problem is, it checks against the host system's /etc/passwd and /etc/group files, instead of /etc/passwd and /etc/group inside the chroot. In the slave image for Buster, cron appears to have been automatically installed, and so the crontab group existed. This doesn't appear to be true for Bullseye, so explicitly install it. This makes sure that the crontab group exists on the slave image itself. Also install the mock python 3 package, this is needed by some test. Signed-off-by: Saikrishna Arcot --- sonic-slave-bullseye/Dockerfile.j2 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sonic-slave-bullseye/Dockerfile.j2 b/sonic-slave-bullseye/Dockerfile.j2 index c2a7fd7ab4ac..fac3bbe2b4aa 100644 --- a/sonic-slave-bullseye/Dockerfile.j2 +++ b/sonic-slave-bullseye/Dockerfile.j2 @@ -72,6 +72,7 @@ RUN apt-get update && apt-get install -y \ libzmq5 \ libzmq3-dev \ jq \ + cron \ # For quagga build libreadline-dev \ texlive-latex-base \ @@ -398,7 +399,7 @@ RUN pip3 install setuptools==49.6.00 RUN pip3 install wheel==0.35.1 # For building sonic-utilities -RUN pip3 install fastentrypoints +RUN pip3 install fastentrypoints mock # For running Python unit tests RUN pip3 install pytest-runner==5.2 From 93eb182d78ed203e28648d196503d8a5753b77c5 Mon Sep 17 00:00:00 2001 From: roman_savchuk Date: Fri, 13 Aug 2021 09:27:51 +0300 Subject: [PATCH 036/186] [barefoot]: Updated SAI/SDK packages to 20210811 (#8427) Updated SAI/SDK package to 20210811. Includes fix for pfc_wd. Signed-off-by: Roman Savchuk --- platform/barefoot/bfn-platform.mk | 2 +- platform/barefoot/bfn-sai.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/barefoot/bfn-platform.mk b/platform/barefoot/bfn-platform.mk index 9acaeeba5ca1..a34a6c02f18e 100644 --- a/platform/barefoot/bfn-platform.mk +++ b/platform/barefoot/bfn-platform.mk @@ -1,4 +1,4 @@ -BFN_PLATFORM = bfnplatform_20210423_sai_1.8.1_deb10.deb +BFN_PLATFORM = bfnplatform_20210811_sai.1.8.1_deb10.deb $(BFN_PLATFORM)_URL = "https://github.com/barefootnetworks/sonic-release-pkgs/raw/dev/$(BFN_PLATFORM)" SONIC_ONLINE_DEBS += $(BFN_PLATFORM) diff --git a/platform/barefoot/bfn-sai.mk b/platform/barefoot/bfn-sai.mk index d2cd02fd523c..31aa9115388c 100644 --- a/platform/barefoot/bfn-sai.mk +++ b/platform/barefoot/bfn-sai.mk @@ -1,4 +1,4 @@ -BFN_SAI = bfnsdk_20210423_sai_1.8.1_deb10.deb +BFN_SAI = bfnsdk_20210811_sai.1.8.1_deb10.deb $(BFN_SAI)_URL = "https://github.com/barefootnetworks/sonic-release-pkgs/raw/dev/$(BFN_SAI)" $(BFN_SAI)_DEPENDS += $(LIBNL_GENL3_DEV) From 80e0627acce79cef9df7d7b35fe436e70bdb0d65 Mon Sep 17 00:00:00 2001 From: Vladyslav Morokhovych Date: Fri, 13 Aug 2021 09:25:28 +0300 Subject: [PATCH 037/186] [swss] Fix arp_update script (#8412) Fix #7968 Issue is detected on SONiC.20201231.11 In test_static_route.py::test_static_route_ecmp static routes are configured, but neighbors are not resolved after config reload even after 10 minutes. It looks like the arp_update script is starting to ping when Vlan1000 is not fully configured. When issue is reproduced, stuck ping6 process is observed in swss container : USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 180 0.1 0.0 6296 1272 pts/0 S 17:03 0:03 ping6 -I Vlan1000 -n -q -i 0 -c 1 -W 0 ff02::1 And when arp_update script successfully resolves neighbors, we observe sleep 300 instead of ping process --- files/scripts/arp_update | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/scripts/arp_update b/files/scripts/arp_update index 1d4cf1ec541f..e7f083e20d27 100755 --- a/files/scripts/arp_update +++ b/files/scripts/arp_update @@ -37,7 +37,7 @@ while /bin/true; do eval `eval $ipcmd` # send ipv6 multicast pings to Vlan interfaces to get/refresh link-local addrs - ping6cmd="ping6 -I $vlan -n -q -i 0 -c 1 -W 0 ff02::1 >/dev/null" + ping6cmd="timeout 1 ping6 -I $vlan -n -q -i 0 -c 1 -W 0 ff02::1 >/dev/null" eval $ping6cmd # generate a list of ndisc6 commands (exclude link-local addrs since it is done above): From e42f93b4462f0da54d4890ee5dacca6ba90f071c Mon Sep 17 00:00:00 2001 From: Christian Svensson Date: Fri, 13 Aug 2021 08:34:27 +0200 Subject: [PATCH 038/186] [frrcfgd]: Fix constant casing for prefix-list mode (#8454) Fix #6943 This change makes the template match PREFIX_SET and the documentation. Signed-off-by: Christian Svensson --- .../templates/bgpd/bgpd.conf.db.route_map.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-frr-mgmt-framework/templates/bgpd/bgpd.conf.db.route_map.j2 b/src/sonic-frr-mgmt-framework/templates/bgpd/bgpd.conf.db.route_map.j2 index 29a4817dc281..5c9e44f1d9a0 100644 --- a/src/sonic-frr-mgmt-framework/templates/bgpd/bgpd.conf.db.route_map.j2 +++ b/src/sonic-frr-mgmt-framework/templates/bgpd/bgpd.conf.db.route_map.j2 @@ -25,7 +25,7 @@ route-map {{rm_key[0]}} {{rm_val['route_operation']}} {{rm_key[1]}} match source-vrf {{rm_val['match_src_vrf']}} {% endif %} {# ---------------match ip/ipv6-Start-------------------------- #} -{% set ip_str = {'ipv4':'ip', 'ipv6':'ipv6' } %} +{% set ip_str = {'IPv4':'ip', 'IPv6':'ipv6' } %} {% if PREFIX_SET is defined and PREFIX_SET|length > 0 %} {% if 'match_prefix_set' in rm_val %} {% for pfx_key, pfx_val in PREFIX_SET.items() %} From 4f9de40d0703877e7c25f3626bb60c855fa37bfd Mon Sep 17 00:00:00 2001 From: jostar-yang Date: Fri, 13 Aug 2021 14:36:19 +0800 Subject: [PATCH 039/186] [AS5835-54X] Modify util to support python3 (#8285) Modify accton_as5835_54x_util.py to support python3 and remove not needed code. Signed-off-by: Jostar Yang --- .../utils/accton_as5835_54x_util.py | 286 +++--------------- 1 file changed, 37 insertions(+), 249 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py index 63ed27eabbab..d2573b6f5aec 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # # Copyright (C) 2019 Accton Networks, Inc. # @@ -17,24 +17,18 @@ """ Usage: %(scriptName)s [options] command object - options: -h | --help : this help message -d | --debug : run with debug mode -f | --force : ignore error during installation or clean command: install : install drivers and generate related sysfs nodes - clean : uninstall drivers and remove related sysfs nodes - show : show all systen status - sff : dump SFP eeprom - set : change board setting with fan|led|sfp + clean : uninstall drivers and remove related sysfs nodes """ - -import commands +import subprocess import getopt import sys import logging -import re import time import os @@ -47,15 +41,15 @@ DEBUG = False args = [] ALL_DEVICE = {} -DEVICE_NO = {'led':5, 'fan':5,'thermal':4, 'psu':2, 'sfp':54} FORCE = 0 + #logging.basicConfig(filename= PROJECT_NAME+'.log', filemode='w',level=logging.DEBUG) #logging.basicConfig(level=logging.INFO) if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print("ARGV :", sys.argv[1:]) def main(): @@ -71,9 +65,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -94,22 +88,7 @@ def main(): do_sonic_platform_install() elif arg == 'api_clean': do_sonic_platform_clean() - elif arg == 'show': - device_traversal() - elif arg == 'sff': - if len(args)!=2: - show_eeprom_help() - elif int(args[1]) ==0 or int(args[1]) > DEVICE_NO['sfp']: - show_eeprom_help() - else: - show_eeprom(args[1]) - return - elif arg == 'set': - if len(args)<3: - show_set_help() - else: - set_device(args[1:]) - return + else: show_help() @@ -117,30 +96,18 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) -def show_set_help(): - cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-48 {0|1}\" to set sfp# tx_disable" - sys.exit(0) - -def show_eeprom_help(): - cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" - sys.exit(0) def my_log(txt): if DEBUG == True: - print "[Debug]"+txt + print("[Debug]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: @@ -177,6 +144,8 @@ def driver_install(): if ret[0]: if FORCE == 0: return ret[0] + print("Done driver_install") + return 0 def driver_uninstall(): @@ -194,12 +163,8 @@ def driver_uninstall(): return ret[0] return 0 -led_prefix ='/sys/class/leds/'+PROJECT_NAME+'_led::' -hwmon_types = {'led': ['diag','fan','loc','psu1','psu2']} -hwmon_nodes = {'led': ['brightness'] } -hwmon_prefix ={'led': led_prefix} - i2c_prefix = '/sys/bus/i2c/devices/' +''' i2c_bus = {'fan': ['3-0063'] , 'thermal': ['18-004b','19-004c', '20-0049', '21-004a'] , 'psu': ['11-0050','12-0053'], @@ -208,7 +173,7 @@ def driver_uninstall(): 'thermal': ['hwmon/hwmon*/temp1_input'] , 'psu': ['psu_present ', 'psu_power_good'] , 'sfp': ['module_present_', 'module_tx_disable_']} - +''' sfp_map = [42,43,44,45,46,47,48,49,50,51, 52,53,54,55,56,57,58,59,60,61, 62,63,64,65,66,67,68,69,70,71, @@ -303,7 +268,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) time.sleep(0.01) if status: - print output + print(output) if FORCE == 0: return status else: @@ -314,7 +279,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status @@ -327,9 +292,11 @@ def device_install(): else: status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status + print("Done device_install") + return def device_uninstall(): @@ -339,7 +306,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -356,7 +323,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -381,10 +348,10 @@ def do_sonic_platform_install(): if os.path.exists(SONIC_PLATFORM_BSP_WHL_PKG_PY3): status, output = log_os_system("pip3 install "+ SONIC_PLATFORM_BSP_WHL_PKG_PY3, 1) if status: - print "Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) + print("Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) ) return status else: - print "Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) + print("Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) ) else: print('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3)) else: @@ -408,231 +375,52 @@ def do_sonic_platform_clean(): return def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") do_sonic_platform_install() return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: return status - do_sonic_platform_clean() + do_sonic_platform_clean() return -def devices_info(): - global DEVICE_NO - global ALL_DEVICE - global i2c_bus, hwmon_types - for key in DEVICE_NO: - ALL_DEVICE[key]= {} - for i in range(0,DEVICE_NO[key]): - ALL_DEVICE[key][key+str(i+1)] = [] - - for key in i2c_bus: - buses = i2c_bus[key] - nodes = i2c_nodes[key] - for i in range(0,len(buses)): - for j in range(0,len(nodes)): - if 'fan' == key: - for k in range(0,DEVICE_NO[key]): - node = key+str(k+1) - path = i2c_prefix+ buses[i]+"/fan"+str(k+1)+"_"+ nodes[j] - my_log(node+": "+ path) - ALL_DEVICE[key][node].append(path) - elif 'sfp' == key: - for k in range(0,DEVICE_NO[key]): - for lk in cpld_of_module: - if k in cpld_of_module[lk]: - node = key+str(k+1) - path = i2c_prefix + lk + "/"+ nodes[j] + str(k+1) - my_log(node+": "+ path) - ALL_DEVICE[key][node].append(path) - else: - node = key+str(i+1) - path = i2c_prefix+ buses[i]+"/"+ nodes[j] - my_log(node+": "+ path) - ALL_DEVICE[key][node].append(path) - - for key in hwmon_types: - itypes = hwmon_types[key] - nodes = hwmon_nodes[key] - for i in range(0,len(itypes)): - for j in range(0,len(nodes)): - node = key+"_"+itypes[i] - path = hwmon_prefix[key]+ itypes[i]+"/"+ nodes[j] - my_log(node+": "+ path) - ALL_DEVICE[key][ key+str(i+1)].append(path) - - #show dict all in the order - if DEBUG == True: - for i in sorted(ALL_DEVICE.keys()): - print(i+": ") - for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) - for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) - return - -def show_eeprom(index): - if system_ready()==False: - print("System's not ready.") - print("Please install first!") - return - - if len(ALL_DEVICE)==0: - devices_info() - node = ALL_DEVICE['sfp'] ['sfp'+str(index)][0] - node = node.replace(node.split("/")[-1], 'sfp_eeprom') - # check if got hexdump command in current environment - ret, log = log_os_system("which hexdump", 0) - ret, log2 = log_os_system("which busybox hexdump", 0) - if log : - hex_cmd = 'hexdump' - elif log2 : - hex_cmd = ' busybox hexdump' - else: - log = 'Failed : no hexdump cmd!!' - logging.info(log) - print log - return 1 - - print node + ":" - ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) - if ret==0: - print log - else: - print "**********device no found**********" - return - -def set_device(args): - global DEVICE_NO - global ALL_DEVICE - if system_ready()==False: - print("System's not ready.") - print("Please install first!") - return - - if len(ALL_DEVICE)==0: - devices_info() - - if args[0]=='led': - if int(args[1])>4: - show_set_help() - return - #print ALL_DEVICE['led'] - for i in range(0,len(ALL_DEVICE['led'])): - for k in (ALL_DEVICE['led']['led'+str(i+1)]): - ret = log_os_system("echo "+args[1]+" >"+k, 1) - if ret[0]: - return ret[0] - elif args[0]=='fan': - if int(args[1])>100: - show_set_help() - return - #print ALL_DEVICE['fan'] - #fan1~5 is all fine, all fan share same setting - node = ALL_DEVICE['fan'] ['fan1'][0] - node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') - ret = log_os_system("cat "+ node, 1) - if ret[0] == 0: - print ("Previous fan duty: " + log.strip() +"%") - ret = log_os_system("echo "+args[1]+" >"+node, 1) - if ret[0] == 0: - print ("Current fan duty: " + args[1] +"%") - return ret[0] - elif args[0]=='sfp': - if int(args[1])> qsfp_start or int(args[1])==0: - show_set_help() - return - if len(args)<2: - show_set_help() - return - - if int(args[2])>1: - show_set_help() - return - - #print ALL_DEVICE[args[0]] - for i in range(0,len(ALL_DEVICE[args[0]])): - for j in ALL_DEVICE[args[0]][args[0]+str(args[1])]: - if j.find('tx_disable')!= -1: - ret = log_os_system("echo "+args[2]+" >"+ j, 1) - if ret[0]: - return ret[0] - - return - -#get digits inside a string. -#Ex: 31 for "sfp31" -def get_value(input): - digit = re.findall('\d+', input) - return int(digit[0]) - -def device_traversal(): - if system_ready()==False: - print("System's not ready.") - print("Please install first!") - return - - if len(ALL_DEVICE)==0: - devices_info() - for i in sorted(ALL_DEVICE.keys()): - print("============================================") - print(i.upper()+": ") - print("============================================") - - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", - for k in (ALL_DEVICE[i][j]): - ret, log = log_os_system("cat "+k, 0) - func = k.split("/")[-1].strip() - func = re.sub(j+'_','',func,1) - func = re.sub(i.lower()+'_','',func,1) - if ret==0: - print func+"="+log+" ", - else: - print func+"="+"X"+" ", - print - print("----------------------------------------------------------------") - - - print - return def device_exist(): ret1 = log_os_system("ls "+i2c_prefix+"*0077", 0) From 59c13cb406ad2e921512c710d09ed7bf72bfdfb0 Mon Sep 17 00:00:00 2001 From: Kebo Liu Date: Fri, 13 Aug 2021 18:25:53 +0800 Subject: [PATCH 040/186] [Mellanox] Upgrade hw-mgmt to 7.0100.2344 (#8463) To pick up new PSU fan support from new hw-mgmt release Signed-off-by: Kebo Liu --- platform/mellanox/hw-management.mk | 2 +- platform/mellanox/hw-management/hw-mgmt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/mellanox/hw-management.mk b/platform/mellanox/hw-management.mk index 3f8724fa1358..6dc1f2655629 100644 --- a/platform/mellanox/hw-management.mk +++ b/platform/mellanox/hw-management.mk @@ -1,6 +1,6 @@ # Mellanox HW Management -MLNX_HW_MANAGEMENT_VERSION = 7.0010.2304 +MLNX_HW_MANAGEMENT_VERSION = 7.0010.2344 export MLNX_HW_MANAGEMENT_VERSION diff --git a/platform/mellanox/hw-management/hw-mgmt b/platform/mellanox/hw-management/hw-mgmt index 5aaacf787c8f..fedae3bfe21c 160000 --- a/platform/mellanox/hw-management/hw-mgmt +++ b/platform/mellanox/hw-management/hw-mgmt @@ -1 +1 @@ -Subproject commit 5aaacf787c8f1631e1617884abf4d9879ac23151 +Subproject commit fedae3bfe21c98fd61e6d1252ee0a67516bcc553 From 88cbcb40457a324c596a17c39e049a51aae0d5e7 Mon Sep 17 00:00:00 2001 From: carl-nokia <63672637+carl-nokia@users.noreply.github.com> Date: Fri, 13 Aug 2021 06:27:06 -0400 Subject: [PATCH 041/186] [Nokia ixs7215] sfputil support + component tests (#8445) Deliver sfputil support for sfputil show eeprom and sfputil reset along with some component test case fixes Co-authored-by: Carl Keene --- .../plugins/sfputil.py | 22 ++++++- .../7215/sonic_platform/component.py | 49 ++++++++++++++++ .../7215/sonic_platform/sfp.py | 57 ++++++++++++------- 3 files changed, 106 insertions(+), 22 deletions(-) diff --git a/device/nokia/armhf-nokia_ixs7215_52x-r0/plugins/sfputil.py b/device/nokia/armhf-nokia_ixs7215_52x-r0/plugins/sfputil.py index 1ca3b9ec6f2d..3280ffdc92b9 100755 --- a/device/nokia/armhf-nokia_ixs7215_52x-r0/plugins/sfputil.py +++ b/device/nokia/armhf-nokia_ixs7215_52x-r0/plugins/sfputil.py @@ -1,4 +1,5 @@ try: + import glob import sonic_platform.platform import sonic_platform.chassis from sonic_sfp.sfputilbase import SfpUtilBase @@ -14,6 +15,12 @@ class SfpUtil(SfpUtilBase): ports_in_block = 4 _port_to_eeprom_mapping = {} + port_to_i2c_mapping = { + 49: 2, + 50: 3, + 51: 4, + 52: 5 + } _changed_ports = [0, 0, 0, 0] @property @@ -33,10 +40,21 @@ def port_to_eeprom_mapping(self): return self._port_to_eeprom_mapping def __init__(self): - # print " SfpUtil(SfpUtilBase) re-directed to chassis PMON 2.0 " + # Mux Ordering + mux_dev = sorted(glob.glob("/sys/class/i2c-adapter/i2c-0/i2c-[0-9]")) + eeprom_path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom" + 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]) + self.port_to_eeprom_mapping[x] = port_eeprom_path + self._port_to_eeprom_mapping[x] = port_eeprom_path SfpUtilBase.__init__(self) - self.chassis = sonic_platform.platform.Platform().get_chassis() + self.chassis = sonic_platform.platform.Platform().get_chassis() + def reset(self, port_num): # print " SfpUtil(SfpUtilBase) re-directed to chassis PMON 2.0 " if self.chassis is not None: diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/component.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/component.py index 1c219d7920a5..134856ea4213 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/component.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/component.py @@ -75,6 +75,55 @@ def get_name(self): """ return self.name + def get_model(self): + """ + Retrieves the part number of the component + Returns: + string: Part number of component + """ + return 'NA' + + def get_serial(self): + """ + Retrieves the serial number of the component + Returns: + string: Serial number of component + """ + return 'NA' + + def get_presence(self): + """ + Retrieves the presence of the component + Returns: + bool: True if present, False if not + """ + return True + + def get_status(self): + """ + Retrieves the operational status of the component + Returns: + bool: True if component is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + 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 component is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + def get_description(self): """ Retrieves the description of the component diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py index 57fcde16149d..ead408b41b8b 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py @@ -777,42 +777,59 @@ def get_tx_power(self): def reset(self): """ - Reset SFP and return all user module settings to their default srate. + Reset SFP. Returns: A boolean, True if successful, False if not - """ + """ if self.sfp_type == COPPER_TYPE: return False - path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/sfp_port_reset" - port_ps = path.format(self.port_to_i2c_mapping) - - 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') + self.tx_disable(True) time.sleep(1) - reg_file.seek(0) - reg_file.write('0') - reg_file.close() + self.tx_disable(False) + return True def tx_disable(self, tx_disable): """ - Disable SFP TX for all channels + Disable SFP TX Args: tx_disable : A Boolean, True to enable tx_disable mode, False to disable tx_disable mode. - Returns: + Returns: A boolean, True if tx_disable is set successfully, False if not """ + if smbus_present == 0: # if called from sfputil outside of pmon + cmdstatus, register = cmd.getstatusoutput('sudo i2cget -y 0 0x41 0x5') + if cmdstatus: + sonic_logger.log_warning("sfp cmdstatus i2c get failed %s" % register ) + return False + register = int(register, 16) + else: + bus = smbus.SMBus(0) + DEVICE_ADDRESS = 0x41 + DEVICE_REG = 0x5 + register = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - return NotImplementedError + pos = [1, 2, 4, 8] + mask = pos[self.index-SFP_PORT_START] + if tx_disable == True: + setbits = register | mask + else: + setbits = register & ~mask + + if smbus_present == 0: # if called from sfputil outside of pmon + cmdstatus, output = cmd.getstatusoutput('sudo i2cset -y -m 0x0f 0 0x41 0x5 %d' % setbits) + if cmdstatus: + sonic_logger.log_warning("sfp cmdstatus i2c write failed %s" % output ) + return False + else: + bus = smbus.SMBus(0) + DEVICE_ADDRESS = 0x41 + DEVICE_REG = 0x5 + bus.write_byte_data(DEVICE_ADDRESS, DEVICE_REG, setbits) + + return True def tx_disable_channel(self, channel, disable): """ From 71e8b0caed4525ce3a46edb659797a249f599e86 Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Fri, 13 Aug 2021 09:01:34 -0700 Subject: [PATCH 042/186] [aboot] use ram partition for /var/log for devices with 3.7G disks (#8400) Master/202012 image size grew quite a bit. 3.7G harddrive can no longer hold one image and safely upgrade to another image. Every bit of harddrive space is precious to save now. Also sh syntax seemingly changed, [ condition ] && action was a legit syntax in 201911 branch but it is an error when condition not met with 202012 or later images. Change the syntax to if statement to avoid the issue. Signed-off-by: Ying Xie ying.xie@microsoft.com --- files/Aboot/boot0.j2 | 12 +++-- files/initramfs-tools/union-mount.j2 | 72 ++++++++++++++++++---------- 2 files changed, 55 insertions(+), 29 deletions(-) diff --git a/files/Aboot/boot0.j2 b/files/Aboot/boot0.j2 index bb8bd6587581..29271d572425 100644 --- a/files/Aboot/boot0.j2 +++ b/files/Aboot/boot0.j2 @@ -593,12 +593,16 @@ write_platform_specific_cmdline() { if [ $flash_size -ge 28000 ]; then varlog_size=4096 - elif [ $flash_size -ge 3700 ]; then + elif [ $flash_size -gt 3700 ]; then varlog_size=400 - elif [ $flash_size -le 2000 ]; then - # enable docker_inram for switches with less than 2G of flash - cmdline_add docker_inram=on + else + varlog_size=256 cmdline_add logs_inram=on + if [ $flash_size -le 2000 ]; then + # enable docker_inram for switches with less than 2G of flash + varlog_size=128 + cmdline_add docker_inram=on + fi fi cmdline_add "varlog_size=$varlog_size" diff --git a/files/initramfs-tools/union-mount.j2 b/files/initramfs-tools/union-mount.j2 index a97137a00c2f..c680e69300d1 100644 --- a/files/initramfs-tools/union-mount.j2 +++ b/files/initramfs-tools/union-mount.j2 @@ -16,6 +16,7 @@ logs_inram=false secureboot=false bootloader=generic in_kdump=false +varlog_size=0 # Extract kernel parameters for x in $(cat /proc/cmdline); do @@ -29,6 +30,9 @@ for x in $(cat /proc/cmdline); do logs_inram=on) logs_inram=true ;; + varlog_size=*) + varlog_size="${x#varlog_size=}" + ;; secure_boot_enable=[y1]) secureboot=true docker_inram=true @@ -44,22 +48,31 @@ done set_tmpfs_log_partition_size() { - varlogsize=128 - - # set varlogsize to existing var-log.ext4 size - if [ -f ${rootmnt}/host/disk-img/var-log.ext4 ]; then - varlogsize=$(ls -l ${rootmnt}/host/disk-img/var-log.ext4 | awk '{print $5}') - varlogsize=$(($varlogsize/1024/1024)) - fi - - # make sure varlogsize is between 5% to 10% of total memory size - memkb=$(grep MemTotal /proc/meminfo | awk '{print $2}') - memmb=$(($memkb/1024)) - minsize=$(($memmb*5/100)) - maxsize=$(($memmb*10/100)) - - [ $minsize -ge $varlogsize ] && varlogsize=$minsize - [ $maxsize -le $varlogsize ] && varlogsize=$maxsize + if [ $varlog_size -gt 0 ]; then + # Use the varlog_size passed in from command line + varlogsize=$varlog_size + else + varlogsize=128 + + # set varlogsize to existing var-log.ext4 size + if [ -f ${rootmnt}/host/disk-img/var-log.ext4 ]; then + varlogsize=$(ls -l ${rootmnt}/host/disk-img/var-log.ext4 | awk '{print $5}') + varlogsize=$(($varlogsize/1024/1024)) + fi + fi + + # make sure varlogsize is between 5% to 10% of total memory size + memkb=$(grep MemTotal /proc/meminfo | awk '{print $2}') + memmb=$(($memkb/1024)) + minsize=$(($memmb*5/100)) + maxsize=$(($memmb*10/100)) + + if [ $minsize -ge $varlogsize ]; then + varlogsize=$minsize + fi + if [ $maxsize -le $varlogsize ]; then + varlogsize=$maxsize + fi } remove_not_in_allowlist_files() @@ -151,16 +164,25 @@ mount --bind ${rootmnt}/host/$image_dir/boot ${rootmnt}/boot ## Mount loop device or tmpfs for /var/log if $logs_inram; then - # NOTE: some platforms, when reaching initramfs stage, have a small - # limit of mounting tmpfs partition, potentially due to amount - # of RAM available in this stage. e.g. Arista 7050-qx32[s] and 7060-cx32s - set_tmpfs_log_partition_size - mount -t tmpfs -o rw,nosuid,nodev,size=${varlogsize}M tmpfs ${rootmnt}/var/log - [ -f ${rootmnt}/host/disk-img/var-log.ext4 ] && rm -rf ${rootmnt}/host/disk-img/var-log.ext4 + # NOTE: some platforms, when reaching initramfs stage, have a small + # limit of mounting tmpfs partition, potentially due to amount + # of RAM available in this stage. Therefore limiting the size + # set for tmpfs partitions. + # + # Another reason for using tmpfs /var/log partition is: + # Some platforms have a small flash and therefore the log partition takes valuable space. + # To improve the longevity of these devices storing the logs in memory will permit more + # SONiC image growth before being bottlenecked. + set_tmpfs_log_partition_size + mount -t tmpfs -o rw,nosuid,nodev,size=${varlogsize}M tmpfs ${rootmnt}/var/log + if [ -f ${rootmnt}/host/disk-img/var-log.ext4 ]; then + rm -rf ${rootmnt}/host/disk-img/var-log.ext4 + fi else - [ -f ${rootmnt}/host/disk-img/var-log.ext4 ] && fsck.ext4 -v -p ${rootmnt}/host/disk-img/var-log.ext4 2>&1 \ - | gzip -c >> /tmp/fsck.log.gz - [ -f ${rootmnt}/host/disk-img/var-log.ext4 ] && mount -t ext4 -o loop,rw ${rootmnt}/host/disk-img/var-log.ext4 ${rootmnt}/var/log + if [ -f ${rootmnt}/host/disk-img/var-log.ext4 ]; then + fsck.ext4 -v -p ${rootmnt}/host/disk-img/var-log.ext4 2>&1 | gzip -c >> /tmp/fsck.log.gz + mount -t ext4 -o loop,rw ${rootmnt}/host/disk-img/var-log.ext4 ${rootmnt}/var/log + fi fi ## fscklog file: /tmp will be lost when overlayfs is mounted From 3ad4096ea23986e17b36ad14d0daa8ff06c7f9ce Mon Sep 17 00:00:00 2001 From: madhanmellanox <62459540+madhanmellanox@users.noreply.github.com> Date: Fri, 13 Aug 2021 19:17:38 -0700 Subject: [PATCH 043/186] Adding SKU Mellanox-SN3800-D100C12S2 (#8441) * Adding SKU Mellanox-SN3800-D100C12S2 Co-authored-by: Madhan Babu --- .../Mellanox-SN3800-D100C12S2/buffers.json.j2 | 1 + .../buffers_defaults_t0.j2 | 100 ++++ .../buffers_defaults_t1.j2 | 100 ++++ .../buffers_dynamic.json.j2 | 1 + .../Mellanox-SN3800-D100C12S2/hwsku.json | 346 ++++++++++++ .../pg_profile_lookup.ini | 1 + .../Mellanox-SN3800-D100C12S2/port_config.ini | 115 ++++ .../Mellanox-SN3800-D100C12S2/qos.json.j2 | 1 + .../Mellanox-SN3800-D100C12S2/sai.profile | 2 + .../sai_3800_2x10g_100x50g_12x100g.xml | 521 ++++++++++++++++++ .../x86_64-mlnx_msn3800-r0/platform.json | 192 ++++--- 11 files changed, 1316 insertions(+), 64 deletions(-) create mode 120000 device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers.json.j2 create mode 100644 device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t0.j2 create mode 100644 device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t1.j2 create mode 120000 device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_dynamic.json.j2 create mode 100644 device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json create mode 120000 device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/pg_profile_lookup.ini create mode 100644 device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/port_config.ini create mode 120000 device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/qos.json.j2 create mode 100644 device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai.profile create mode 100644 device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai_3800_2x10g_100x50g_12x100g.xml diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers.json.j2 b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers.json.j2 new file mode 120000 index 000000000000..add8bf8bb7c2 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/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-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t0.j2 b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..df453006bd12 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t0.j2 @@ -0,0 +1,100 @@ +{% set default_cable = '5m' %} +{% set ingress_lossless_pool_size = '20664320' %} +{% set ingress_lossless_xoff_size = '3321856' %} +{% set egress_lossless_pool_size = '34287552' %} +{% set egress_lossy_pool_size = '20664320' %} + +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {%- for port_idx in range(0, 32) %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} + {%- endfor %} +{%- endmacro %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "{{ ingress_lossless_pool_size }}", + "xoff": "{{ ingress_lossless_xoff_size }}", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "{{ egress_lossless_pool_size }}", + "type": "egress", + "mode": "dynamic" + }, + "egress_lossy_pool": { + "size": "{{ egress_lossy_pool_size }}", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"9216", + "dynamic_th":"7" + }, + "q_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + } + }, +{%- endmacro %} + +{%- macro generate_profile_lists(port_names) %} + "BUFFER_PORT_INGRESS_PROFILE_LIST": { +{% for port in port_names.split(',') %} + "{{ port }}": { + "profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "BUFFER_PORT_EGRESS_PROFILE_LIST": { +{% for port in port_names.split(',') %} + "{{ port }}": { + "profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +{%- endmacro %} + +{%- macro generate_queue_buffers(port_names) %} + "BUFFER_QUEUE": { +{% for port in port_names.split(',') %} + "{{ port }}|3-4": { + "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" + }, +{% endfor %} +{% for port in port_names.split(',') %} + "{{ port }}|0-2": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + }, +{% endfor %} +{% for port in port_names.split(',') %} + "{{ port }}|5-6": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +{%- endmacro %} diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t1.j2 b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..d75ccfe4fed9 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t1.j2 @@ -0,0 +1,100 @@ +{% set default_cable = '5m' %} +{% set ingress_lossless_pool_size = '19601408' %} +{% set ingress_lossless_xoff_size = '4384768' %} +{% set egress_lossless_pool_size = '34287552' %} +{% set egress_lossy_pool_size = '19601408' %} + +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {%- for port_idx in range(0, 32) %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} + {%- endfor %} +{%- endmacro %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "{{ ingress_lossless_pool_size }}", + "xoff": "{{ ingress_lossless_xoff_size }}", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "{{ egress_lossless_pool_size }}", + "type": "egress", + "mode": "dynamic" + }, + "egress_lossy_pool": { + "size": "{{ egress_lossy_pool_size }}", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"9216", + "dynamic_th":"7" + }, + "q_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + } + }, +{%- endmacro %} + +{%- macro generate_profile_lists(port_names) %} + "BUFFER_PORT_INGRESS_PROFILE_LIST": { +{% for port in port_names.split(',') %} + "{{ port }}": { + "profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "BUFFER_PORT_EGRESS_PROFILE_LIST": { +{% for port in port_names.split(',') %} + "{{ port }}": { + "profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +{%- endmacro %} + +{%- macro generate_queue_buffers(port_names) %} + "BUFFER_QUEUE": { +{% for port in port_names.split(',') %} + "{{ port }}|3-4": { + "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" + }, +{% endfor %} +{% for port in port_names.split(',') %} + "{{ port }}|0-2": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + }, +{% endfor %} +{% for port in port_names.split(',') %} + "{{ port }}|5-6": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +{%- endmacro %} diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_dynamic.json.j2 b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_dynamic.json.j2 new file mode 120000 index 000000000000..8c4117c66214 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/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-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json new file mode 100644 index 000000000000..87724d4e4c00 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json @@ -0,0 +1,346 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet2": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet4": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet6": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet8": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet10": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet12": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet14": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet16": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet18": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet20": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet22": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet24": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet26": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet28": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet30": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet32": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet34": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet36": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet38": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet40": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet42": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet44": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet46": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet48": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet50": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet52": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet54": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet56": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet58": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet60": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet62": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet64": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet66": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet68": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet70": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet72": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet74": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet76": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet78": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet80": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet82": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet84": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet86": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet88": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet90": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet92": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet94": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet96": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet98": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet100": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet102": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet104": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet106": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet108": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet110": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet112": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet114": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet116": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet118": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet120": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet122": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet124": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet126": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet128": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet130": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet132": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet134": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet136": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet138": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet140": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet142": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet144": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet146": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet148": { + "default_brkout_mode": "1x10G[100G,50G,40G,25G]" + }, + "Ethernet152": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet154": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet156": { + "default_brkout_mode": "1x10G[100G,50G,40G,25G]" + }, + "Ethernet160": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet162": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet164": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet166": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet168": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet170": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet172": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet174": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet176": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet178": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet180": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet182": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet184": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet186": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet188": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet190": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet192": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet194": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet196": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet198": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet200": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet202": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet204": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet206": { + "default_brkout_mode": "2x50G[40G,25G,10G]" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet212": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet220": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet228": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet236": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet244": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet252": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + } + } +} diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/pg_profile_lookup.ini b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/pg_profile_lookup.ini new file mode 120000 index 000000000000..ccbbfa44cd9c --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/pg_profile_lookup.ini @@ -0,0 +1 @@ +../Mellanox-SN3800-D112C8/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/port_config.ini b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/port_config.ini new file mode 100644 index 000000000000..535556ebfb3b --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/port_config.ini @@ -0,0 +1,115 @@ +# name lanes alias index speed +Ethernet0 0,1 etp1a 1 50000 +Ethernet2 2,3 etp1b 1 50000 +Ethernet4 4,5 etp2a 2 50000 +Ethernet6 6,7 etp2b 2 50000 +Ethernet8 8,9 etp3a 3 50000 +Ethernet10 10,11 etp3b 3 50000 +Ethernet12 12,13 etp4a 4 50000 +Ethernet14 14,15 etp4b 4 50000 +Ethernet16 16,17 etp5a 5 50000 +Ethernet18 18,19 etp5b 5 50000 +Ethernet20 20,21 etp6a 6 50000 +Ethernet22 22,23 etp6b 6 50000 +Ethernet24 24,25 etp7a 7 50000 +Ethernet26 26,27 etp7b 7 50000 +Ethernet28 28,29 etp8a 8 50000 +Ethernet30 30,31 etp8b 8 50000 +Ethernet32 32,33 etp9a 9 50000 +Ethernet34 34,35 etp9b 9 50000 +Ethernet36 36,37 etp10a 10 50000 +Ethernet38 38,39 etp10b 10 50000 +Ethernet40 40,41 etp11a 11 50000 +Ethernet42 42,43 etp11b 11 50000 +Ethernet44 44,45 etp12a 12 50000 +Ethernet46 46,47 etp12b 12 50000 +Ethernet48 48,49 etp13a 13 50000 +Ethernet50 50,51 etp13b 13 50000 +Ethernet52 52,53 etp14a 14 50000 +Ethernet54 54,55 etp14b 14 50000 +Ethernet56 56,57 etp15a 15 50000 +Ethernet58 58,59 etp15b 15 50000 +Ethernet60 60,61 etp16a 16 50000 +Ethernet62 62,63 etp16b 16 50000 +Ethernet64 64,65 etp17a 17 50000 +Ethernet66 66,67 etp17b 17 50000 +Ethernet68 68,69 etp18a 18 50000 +Ethernet70 70,71 etp18b 18 50000 +Ethernet72 72,73 etp19a 19 50000 +Ethernet74 74,75 etp19b 19 50000 +Ethernet76 76,77 etp20a 20 50000 +Ethernet78 78,79 etp20b 20 50000 +Ethernet80 80,81 etp21a 21 50000 +Ethernet82 82,83 etp21b 21 50000 +Ethernet84 84,85 etp22a 22 50000 +Ethernet86 86,87 etp22b 22 50000 +Ethernet88 88,89 etp23a 23 50000 +Ethernet90 90,91 etp23b 23 50000 +Ethernet92 92,93 etp24a 24 50000 +Ethernet94 94,95 etp24b 24 50000 +Ethernet96 96,97 etp25a 25 50000 +Ethernet98 98,99 etp25b 25 50000 +Ethernet100 100,101 etp26a 26 50000 +Ethernet102 102,103 etp26b 26 50000 +Ethernet104 104,105 etp27a 27 50000 +Ethernet106 106,107 etp27b 27 50000 +Ethernet108 108,109 etp28a 28 50000 +Ethernet110 110,111 etp28b 28 50000 +Ethernet112 112,113 etp29a 29 50000 +Ethernet114 114,115 etp29b 29 50000 +Ethernet116 116,117 etp30a 30 50000 +Ethernet118 118,119 etp30b 30 50000 +Ethernet120 120,121 etp31a 31 50000 +Ethernet122 122,123 etp31b 31 50000 +Ethernet124 124,125 etp32a 32 50000 +Ethernet126 126,127 etp32b 32 50000 +Ethernet128 128,129 etp33a 33 50000 +Ethernet130 130,131 etp33b 33 50000 +Ethernet132 132,133 etp34a 34 50000 +Ethernet134 134,135 etp34b 34 50000 +Ethernet136 136,137 etp35a 35 50000 +Ethernet138 138,139 etp35b 35 50000 +Ethernet140 140,141 etp36a 36 50000 +Ethernet142 142,143 etp36b 36 50000 +Ethernet144 144,145 etp37a 37 50000 +Ethernet146 146,147 etp37b 37 50000 +Ethernet148 148,149,150,151 etp38 38 10000 +Ethernet152 152,153 etp39a 39 50000 +Ethernet154 154,155 etp39b 39 50000 +Ethernet156 156,157,158,159 etp40 40 10000 +Ethernet160 160,161 etp41a 41 50000 +Ethernet162 162,163 etp41b 41 50000 +Ethernet164 164,165 etp42a 42 50000 +Ethernet166 166,167 etp42b 42 50000 +Ethernet168 168,169 etp43a 43 50000 +Ethernet170 170,171 etp43b 43 50000 +Ethernet172 172,173 etp44a 44 50000 +Ethernet174 174,175 etp44b 44 50000 +Ethernet176 176,177 etp45a 45 50000 +Ethernet178 178,179 etp45b 45 50000 +Ethernet180 180,181 etp46a 46 50000 +Ethernet182 182,183 etp46b 46 50000 +Ethernet184 184,185 etp47a 47 50000 +Ethernet186 186,187 etp47b 47 50000 +Ethernet188 188,189 etp48a 48 50000 +Ethernet190 190,191 etp48b 48 50000 +Ethernet192 192,193 etp49a 49 50000 +Ethernet194 194,195 etp49b 49 50000 +Ethernet196 196,197 etp50a 50 50000 +Ethernet198 198,199 etp50b 50 50000 +Ethernet200 200,201 etp51a 51 50000 +Ethernet202 202,203 etp51b 51 50000 +Ethernet204 204,205 etp52a 52 50000 +Ethernet206 206,207 etp52b 52 50000 +Ethernet208 208,209,210,211 etp53 53 100000 +Ethernet212 212,213,214,215 etp54 54 100000 +Ethernet216 216,217,218,219 etp55 55 100000 +Ethernet220 220,221,222,223 etp56 56 100000 +Ethernet224 224,225,226,227 etp57 57 100000 +Ethernet228 228,229,230,231 etp58 58 100000 +Ethernet232 232,233,234,235 etp59 59 100000 +Ethernet236 236,237,238,239 etp60 60 100000 +Ethernet240 240,241,242,243 etp61 61 100000 +Ethernet244 244,245,246,247 etp62 62 100000 +Ethernet248 248,249,250,251 etp63 63 100000 +Ethernet252 252,253,254,255 etp64 64 100000 diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/qos.json.j2 b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/qos.json.j2 new file mode 120000 index 000000000000..eccf286dc879 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/qos.json.j2 @@ -0,0 +1 @@ +../../x86_64-mlnx_msn2700-r0/ACS-MSN2700/qos.json.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai.profile b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai.profile new file mode 100644 index 000000000000..5543225b55f5 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai.profile @@ -0,0 +1,2 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/sai_3800_2x10g_100x50g_12x100g.xml +SAI_VXLAN_SRCPORT_RANGE_ENABLE=1 diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai_3800_2x10g_100x50g_12x100g.xml b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai_3800_2x10g_100x50g_12x100g.xml new file mode 100644 index 000000000000..bf0fa4ca6909 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai_3800_2x10g_100x50g_12x100g.xml @@ -0,0 +1,521 @@ + + + + + + 00:02:03:04:05:00 + + + 1 + + + 64 + + + + + 1 + 4 + 48 + + + 3 + + + 384 + 2 + + + 3 + 4 + 49 + 1 + 384 + 2 + + + 5 + 4 + 50 + 3 + 384 + 2 + + + 7 + 4 + 51 + 1 + 384 + 2 + + + 9 + 4 + 52 + 3 + 384 + 2 + + + 11 + 4 + 53 + 1 + 384 + 2 + + + 13 + 4 + 54 + 3 + 384 + 2 + + + 15 + 4 + 55 + 1 + 384 + 2 + + + 17 + 4 + 56 + 3 + 384 + 2 + + + 19 + 4 + 57 + 1 + 384 + 2 + + + 21 + 4 + 58 + 3 + 384 + 2 + + + 23 + 4 + 59 + 1 + 384 + 2 + + + 25 + 4 + 60 + 3 + 384 + 2 + + + 27 + 4 + 61 + 1 + 384 + 2 + + + 29 + 4 + 62 + 3 + 384 + 2 + + + 31 + 4 + 63 + 1 + 384 + 2 + + + 33 + 4 + 12 + 3 + 384 + 2 + + + 35 + 4 + 13 + 1 + 384 + 2 + + + 37 + 4 + 14 + 3 + 384 + 2 + + + 39 + 4 + 15 + 1 + 384 + 2 + + + 41 + 4 + 8 + 3 + 384 + 2 + + + 43 + 4 + 9 + 1 + 384 + 2 + + + 45 + 4 + 10 + 3 + 384 + 2 + + + 47 + 4 + 11 + 1 + 384 + 2 + + + 49 + 4 + 4 + 3 + 384 + 2 + + + 51 + 4 + 5 + 1 + 384 + 2 + + + 53 + 4 + 6 + 3 + 384 + 2 + + + 55 + 4 + 7 + 1 + 384 + 2 + + + 57 + 4 + 0 + 3 + 384 + 2 + + + 59 + 4 + 1 + 1 + 384 + 2 + + + 61 + 4 + 2 + 3 + 384 + 2 + + + 63 + 4 + 3 + 1 + 384 + 2 + + + 65 + 4 + 44 + 3 + 384 + 2 + + + 67 + 4 + 45 + 1 + 384 + 2 + + + 69 + 4 + 46 + 3 + 384 + 2 + + + 71 + 4 + 47 + 1 + 384 + 2 + + + 73 + 4 + 40 + 3 + 384 + 2 + + + 75 + 4 + 41 + 1 + 16 + + + 77 + 4 + 42 + 3 + 384 + 2 + + + 79 + 4 + 43 + 1 + 16 + + + 81 + 4 + 36 + 3 + 384 + 2 + + + 83 + 4 + 37 + 1 + 384 + 2 + + + 85 + 4 + 38 + 3 + 384 + 2 + + + 87 + 4 + 39 + 1 + 384 + 2 + + + 89 + 4 + 32 + 3 + 384 + 2 + + + 91 + 4 + 33 + 1 + 384 + 2 + + + 93 + 4 + 34 + 3 + 384 + 2 + + + 95 + 4 + 35 + 1 + 384 + 2 + + + 97 + 4 + 16 + 3 + 384 + 2 + + + 99 + 4 + 17 + 1 + 384 + 2 + + + 101 + 4 + 18 + 3 + 384 + 2 + + + 103 + 4 + 19 + 1 + 384 + 2 + + + 105 + 4 + 20 + 3 + 1536 + + + 107 + 4 + 21 + 1 + 1536 + + + 109 + 4 + 22 + 3 + 1536 + + + 111 + 4 + 23 + 1 + 1536 + + + 113 + 4 + 24 + 3 + 1536 + + + 115 + 4 + 25 + 1 + 1536 + + + 117 + 4 + 26 + 3 + 1536 + + + 119 + 4 + 27 + 1 + 1536 + + + 121 + 4 + 28 + 3 + 1536 + + + 123 + 4 + 29 + 1 + 1536 + + + 125 + 4 + 30 + 3 + 1536 + + + 127 + 4 + 31 + 1 + 1536 + + + + + diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json b/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json index db273059482c..2cd4a13c6cfd 100644 --- a/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json @@ -725,7 +725,8 @@ "lanes": "0,1,2,3", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp1"], - "2x50G[25G,10G]": ["etp1a", "etp1b"] + "1x10G[100G,50G,40G,25G]": ["etp1"], + "2x50G[40G,25G,10G]": ["etp1a", "etp1b"] } }, "Ethernet4": { @@ -733,7 +734,8 @@ "lanes": "4,5,6,7", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp2"], - "2x50G[25G,10G]": ["etp2a", "etp2b"] + "1x10G[100G,50G,40G,25G]": ["etp2"], + "2x50G[40G,25G,10G]": ["etp2a", "etp2b"] } }, "Ethernet8": { @@ -741,7 +743,8 @@ "lanes": "8,9,10,11", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp3"], - "2x50G[25G,10G]": ["etp3a", "etp3b"] + "1x10G[100G,50G,40G,25G]": ["etp3"], + "2x50G[40G,25G,10G]": ["etp3a", "etp3b"] } }, "Ethernet12": { @@ -749,7 +752,8 @@ "lanes": "12,13,14,15", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp4"], - "2x50G[25G,10G]": ["etp4a", "etp4b"] + "1x10G[100G,50G,40G,25G]": ["etp4"], + "2x50G[40G,25G,10G]": ["etp4a", "etp4b"] } }, "Ethernet16": { @@ -757,7 +761,8 @@ "lanes": "16,17,18,19", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp5"], - "2x50G[25G,10G]": ["etp5a", "etp5b"] + "1x10G[100G,50G,40G,25G]": ["etp5"], + "2x50G[40G,25G,10G]": ["etp5a", "etp5b"] } }, "Ethernet20": { @@ -765,7 +770,8 @@ "lanes": "20,21,22,23", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp6"], - "2x50G[25G,10G]": ["etp6a", "etp6b"] + "1x10G[100G,50G,40G,25G]": ["etp6"], + "2x50G[40G,25G,10G]": ["etp6a", "etp6b"] } }, "Ethernet24": { @@ -773,7 +779,8 @@ "lanes": "24,25,26,27", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp7"], - "2x50G[25G,10G]": ["etp7a", "etp7b"] + "1x10G[100G,50G,40G,25G]": ["etp7"], + "2x50G[40G,25G,10G]": ["etp7a", "etp7b"] } }, "Ethernet28": { @@ -781,7 +788,8 @@ "lanes": "28,29,30,31", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp8"], - "2x50G[25G,10G]": ["etp8a", "etp8b"] + "1x10G[100G,50G,40G,25G]": ["etp8"], + "2x50G[40G,25G,10G]": ["etp8a", "etp8b"] } }, "Ethernet32": { @@ -789,7 +797,8 @@ "lanes": "32,33,34,35", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp9"], - "2x50G[25G,10G]": ["etp9a", "etp9b"] + "1x10G[100G,50G,40G,25G]": ["etp9"], + "2x50G[40G,25G,10G]": ["etp9a", "etp9b"] } }, "Ethernet36": { @@ -797,7 +806,8 @@ "lanes": "36,37,38,39", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp10"], - "2x50G[25G,10G]": ["etp10a", "etp10b"] + "1x10G[100G,50G,40G,25G]": ["etp10"], + "2x50G[40G,25G,10G]": ["etp10a", "etp10b"] } }, "Ethernet40": { @@ -805,7 +815,8 @@ "lanes": "40,41,42,43", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp11"], - "2x50G[25G,10G]": ["etp11a", "etp11b"] + "1x10G[100G,50G,40G,25G]": ["etp11"], + "2x50G[40G,25G,10G]": ["etp11a", "etp11b"] } }, "Ethernet44": { @@ -813,7 +824,8 @@ "lanes": "44,45,46,47", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp12"], - "2x50G[25G,10G]": ["etp12a", "etp12b"] + "1x10G[100G,50G,40G,25G]": ["etp12"], + "2x50G[40G,25G,10G]": ["etp12a", "etp12b"] } }, "Ethernet48": { @@ -821,7 +833,8 @@ "lanes": "48,49,50,51", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp13"], - "2x50G[25G,10G]": ["etp13a", "etp13b"] + "1x10G[100G,50G,40G,25G]": ["etp13"], + "2x50G[40G,25G,10G]": ["etp13a", "etp13b"] } }, "Ethernet52": { @@ -829,7 +842,8 @@ "lanes": "52,53,54,55", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp14"], - "2x50G[25G,10G]": ["etp14a", "etp14b"] + "1x10G[100G,50G,40G,25G]": ["etp14"], + "2x50G[40G,25G,10G]": ["etp14a", "etp14b"] } }, "Ethernet56": { @@ -837,7 +851,8 @@ "lanes": "56,57,58,59", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp15"], - "2x50G[25G,10G]": ["etp15a", "etp15b"] + "1x10G[100G,50G,40G,25G]": ["etp15"], + "2x50G[40G,25G,10G]": ["etp15a", "etp15b"] } }, "Ethernet60": { @@ -845,7 +860,8 @@ "lanes": "60,61,62,63", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp16"], - "2x50G[25G,10G]": ["etp16a", "etp16b"] + "1x10G[100G,50G,40G,25G]": ["etp16"], + "2x50G[40G,25G,10G]": ["etp16a", "etp16b"] } }, "Ethernet64": { @@ -853,7 +869,8 @@ "lanes": "64,65,66,67", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp17"], - "2x50G[25G,10G]": ["etp17a", "etp17b"] + "1x10G[100G,50G,40G,25G]": ["etp17"], + "2x50G[40G,25G,10G]": ["etp17a", "etp17b"] } }, "Ethernet68": { @@ -861,7 +878,8 @@ "lanes": "68,69,70,71", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp18"], - "2x50G[25G,10G]": ["etp18a", "etp18b"] + "1x10G[100G,50G,40G,25G]": ["etp18"], + "2x50G[40G,25G,10G]": ["etp18a", "etp18b"] } }, "Ethernet72": { @@ -869,7 +887,8 @@ "lanes": "72,73,74,75", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp19"], - "2x50G[25G,10G]": ["etp19a", "etp19b"] + "1x10G[100G,50G,40G,25G]": ["etp19"], + "2x50G[40G,25G,10G]": ["etp19a", "etp19b"] } }, "Ethernet76": { @@ -877,7 +896,8 @@ "lanes": "76,77,78,79", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp20"], - "2x50G[25G,10G]": ["etp20a", "etp20b"] + "1x10G[100G,50G,40G,25G]": ["etp20"], + "2x50G[40G,25G,10G]": ["etp20a", "etp20b"] } }, "Ethernet80": { @@ -885,7 +905,8 @@ "lanes": "80,81,82,83", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp21"], - "2x50G[25G,10G]": ["etp21a", "etp21b"] + "1x10G[100G,50G,40G,25G]": ["etp21"], + "2x50G[40G,25G,10G]": ["etp21a", "etp21b"] } }, "Ethernet84": { @@ -893,7 +914,8 @@ "lanes": "84,85,86,87", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp22"], - "2x50G[25G,10G]": ["etp22a", "etp22b"] + "1x10G[100G,50G,40G,25G]": ["etp22"], + "2x50G[40G,25G,10G]": ["etp22a", "etp22b"] } }, "Ethernet88": { @@ -901,7 +923,8 @@ "lanes": "88,89,90,91", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp23"], - "2x50G[25G,10G]": ["etp23a", "etp23b"] + "1x10G[100G,50G,40G,25G]": ["etp23"], + "2x50G[40G,25G,10G]": ["etp23a", "etp23b"] } }, "Ethernet92": { @@ -909,7 +932,8 @@ "lanes": "92,93,94,95", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp24"], - "2x50G[25G,10G]": ["etp24a", "etp24b"] + "1x10G[100G,50G,40G,25G]": ["etp24"], + "2x50G[40G,25G,10G]": ["etp24a", "etp24b"] } }, "Ethernet96": { @@ -917,7 +941,8 @@ "lanes": "96,97,98,99", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp25"], - "2x50G[25G,10G]": ["etp25a", "etp25b"] + "1x10G[100G,50G,40G,25G]": ["etp25"], + "2x50G[40G,25G,10G]": ["etp25a", "etp25b"] } }, "Ethernet100": { @@ -925,7 +950,8 @@ "lanes": "100,101,102,103", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp26"], - "2x50G[25G,10G]": ["etp26a", "etp26b"] + "1x10G[100G,50G,40G,25G]": ["etp26"], + "2x50G[40G,25G,10G]": ["etp26a", "etp26b"] } }, "Ethernet104": { @@ -933,7 +959,8 @@ "lanes": "104,105,106,107", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp27"], - "2x50G[25G,10G]": ["etp27a", "etp27b"] + "1x10G[100G,50G,40G,25G]": ["etp27"], + "2x50G[40G,25G,10G]": ["etp27a", "etp27b"] } }, "Ethernet108": { @@ -941,7 +968,8 @@ "lanes": "108,109,110,111", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp28"], - "2x50G[25G,10G]": ["etp28a", "etp28b"] + "1x10G[100G,50G,40G,25G]": ["etp28"], + "2x50G[40G,25G,10G]": ["etp28a", "etp28b"] } }, "Ethernet112": { @@ -949,7 +977,8 @@ "lanes": "112,113,114,115", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp29"], - "2x50G[25G,10G]": ["etp29a", "etp29b"] + "1x10G[100G,50G,40G,25G]": ["etp29"], + "2x50G[40G,25G,10G]": ["etp29a", "etp29b"] } }, "Ethernet116": { @@ -957,7 +986,8 @@ "lanes": "116,117,118,119", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp30"], - "2x50G[25G,10G]": ["etp30a", "etp30b"] + "1x10G[100G,50G,40G,25G]": ["etp30"], + "2x50G[40G,25G,10G]": ["etp30a", "etp30b"] } }, "Ethernet120": { @@ -965,7 +995,8 @@ "lanes": "120,121,122,123", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp31"], - "2x50G[25G,10G]": ["etp31a", "etp31b"] + "1x10G[100G,50G,40G,25G]": ["etp31"], + "2x50G[40G,25G,10G]": ["etp31a", "etp31b"] } }, "Ethernet124": { @@ -973,7 +1004,8 @@ "lanes": "124,125,126,127", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp32"], - "2x50G[25G,10G]": ["etp32a", "etp32b"] + "1x10G[100G,50G,40G,25G]": ["etp32"], + "2x50G[40G,25G,10G]": ["etp32a", "etp32b"] } }, "Ethernet128": { @@ -981,7 +1013,8 @@ "lanes": "128,129,130,131", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp33"], - "2x50G[25G,10G]": ["etp33a", "etp33b"] + "1x10G[100G,50G,40G,25G]": ["etp33"], + "2x50G[40G,25G,10G]": ["etp33a", "etp33b"] } }, "Ethernet132": { @@ -989,7 +1022,8 @@ "lanes": "132,133,134,135", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp34"], - "2x50G[25G,10G]": ["etp34a", "etp34b"] + "1x10G[100G,50G,40G,25G]": ["etp34"], + "2x50G[40G,25G,10G]": ["etp34a", "etp34b"] } }, "Ethernet136": { @@ -997,7 +1031,8 @@ "lanes": "136,137,138,139", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp35"], - "2x50G[25G,10G]": ["etp35a", "etp35b"] + "1x10G[100G,50G,40G,25G]": ["etp35"], + "2x50G[40G,25G,10G]": ["etp35a", "etp35b"] } }, "Ethernet140": { @@ -1005,7 +1040,8 @@ "lanes": "140,141,142,143", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp36"], - "2x50G[25G,10G]": ["etp36a", "etp36b"] + "1x10G[100G,50G,40G,25G]": ["etp36"], + "2x50G[40G,25G,10G]": ["etp36a", "etp36b"] } }, "Ethernet144": { @@ -1013,7 +1049,8 @@ "lanes": "144,145,146,147", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp37"], - "2x50G[25G,10G]": ["etp37a", "etp37b"] + "1x10G[100G,50G,40G,25G]": ["etp37"], + "2x50G[40G,25G,10G]": ["etp37a", "etp37b"] } }, "Ethernet148": { @@ -1021,7 +1058,8 @@ "lanes": "148,149,150,151", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp38"], - "2x50G[25G,10G]": ["etp38a", "etp38b"] + "1x10G[100G,50G,40G,25G]": ["etp38"], + "2x50G[40G,25G,10G]": ["etp38a", "etp38b"] } }, "Ethernet152": { @@ -1029,7 +1067,8 @@ "lanes": "152,153,154,155", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp39"], - "2x50G[25G,10G]": ["etp39a", "etp39b"] + "1x10G[100G,50G,40G,25G]": ["etp39"], + "2x50G[40G,25G,10G]": ["etp39a", "etp39b"] } }, "Ethernet156": { @@ -1037,7 +1076,8 @@ "lanes": "156,157,158,159", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp40"], - "2x50G[25G,10G]": ["etp40a", "etp40b"] + "1x10G[100G,50G,40G,25G]": ["etp40"], + "2x50G[40G,25G,10G]": ["etp40a", "etp40b"] } }, "Ethernet160": { @@ -1045,7 +1085,8 @@ "lanes": "160,161,162,163", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp41"], - "2x50G[25G,10G]": ["etp41a", "etp41b"] + "1x10G[100G,50G,40G,25G]": ["etp41"], + "2x50G[40G,25G,10G]": ["etp41a", "etp41b"] } }, "Ethernet164": { @@ -1053,7 +1094,8 @@ "lanes": "164,165,166,167", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp42"], - "2x50G[25G,10G]": ["etp42a", "etp42b"] + "1x10G[100G,50G,40G,25G]": ["etp42"], + "2x50G[40G,25G,10G]": ["etp42a", "etp42b"] } }, "Ethernet168": { @@ -1061,7 +1103,8 @@ "lanes": "168,169,170,171", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp43"], - "2x50G[25G,10G]": ["etp43a", "etp43b"] + "1x10G[100G,50G,40G,25G]": ["etp43"], + "2x50G[40G,25G,10G]": ["etp43a", "etp43b"] } }, "Ethernet172": { @@ -1069,7 +1112,8 @@ "lanes": "172,173,174,175", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp44"], - "2x50G[25G,10G]": ["etp44a", "etp44b"] + "1x10G[100G,50G,40G,25G]": ["etp44"], + "2x50G[40G,25G,10G]": ["etp44a", "etp44b"] } }, "Ethernet176": { @@ -1077,7 +1121,8 @@ "lanes": "176,177,178,179", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp45"], - "2x50G[25G,10G]": ["etp45a", "etp45b"] + "1x10G[100G,50G,40G,25G]": ["etp45"], + "2x50G[40G,25G,10G]": ["etp45a", "etp45b"] } }, "Ethernet180": { @@ -1085,7 +1130,8 @@ "lanes": "180,181,182,183", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp46"], - "2x50G[25G,10G]": ["etp46a", "etp46b"] + "1x10G[100G,50G,40G,25G]": ["etp46"], + "2x50G[40G,25G,10G]": ["etp46a", "etp46b"] } }, "Ethernet184": { @@ -1093,7 +1139,8 @@ "lanes": "184,185,186,187", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp47"], - "2x50G[25G,10G]": ["etp47a", "etp47b"] + "1x10G[100G,50G,40G,25G]": ["etp47"], + "2x50G[40G,25G,10G]": ["etp47a", "etp47b"] } }, "Ethernet188": { @@ -1101,7 +1148,8 @@ "lanes": "188,189,190,191", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp48"], - "2x50G[25G,10G]": ["etp48a", "etp48b"] + "1x10G[100G,50G,40G,25G]": ["etp48"], + "2x50G[40G,25G,10G]": ["etp48a", "etp48b"] } }, "Ethernet192": { @@ -1109,7 +1157,8 @@ "lanes": "192,193,194,195", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp49"], - "2x50G[25G,10G]": ["etp49a", "etp49b"] + "1x10G[100G,50G,40G,25G]": ["etp49"], + "2x50G[40G,25G,10G]": ["etp49a", "etp49b"] } }, "Ethernet196": { @@ -1117,7 +1166,8 @@ "lanes": "196,197,198,199", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp50"], - "2x50G[25G,10G]": ["etp50a", "etp50b"] + "1x10G[100G,50G,40G,25G]": ["etp50"], + "2x50G[40G,25G,10G]": ["etp50a", "etp50b"] } }, "Ethernet200": { @@ -1125,7 +1175,8 @@ "lanes": "200,201,202,203", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp51"], - "2x50G[25G,10G]": ["etp51a", "etp51b"] + "1x10G[100G,50G,40G,25G]": ["etp51"], + "2x50G[40G,25G,10G]": ["etp51a", "etp51b"] } }, "Ethernet204": { @@ -1133,7 +1184,8 @@ "lanes": "204,205,206,207", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp52"], - "2x50G[25G,10G]": ["etp52a", "etp52b"] + "1x10G[100G,50G,40G,25G]": ["etp52"], + "2x50G[40G,25G,10G]": ["etp52a", "etp52b"] } }, "Ethernet208": { @@ -1141,7 +1193,8 @@ "lanes": "208,209,210,211", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp53"], - "2x50G[25G,10G]": ["etp53a", "etp53b"] + "1x10G[100G,50G,40G,25G]": ["etp53"], + "2x50G[40G,25G,10G]": ["etp53a", "etp53b"] } }, "Ethernet212": { @@ -1149,7 +1202,8 @@ "lanes": "212,213,214,215", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp54"], - "2x50G[25G,10G]": ["etp54a", "etp54b"] + "1x10G[100G,50G,40G,25G]": ["etp54"], + "2x50G[40G,25G,10G]": ["etp54a", "etp54b"] } }, "Ethernet216": { @@ -1157,7 +1211,8 @@ "lanes": "216,217,218,219", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp55"], - "2x50G[25G,10G]": ["etp55a", "etp55b"] + "1x10G[100G,50G,40G,25G]": ["etp55"], + "2x50G[40G,25G,10G]": ["etp55a", "etp55b"] } }, "Ethernet220": { @@ -1165,7 +1220,8 @@ "lanes": "220,221,222,223", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp56"], - "2x50G[25G,10G]": ["etp56a", "etp56b"] + "1x10G[100G,50G,40G,25G]": ["etp56"], + "2x50G[40G,25G,10G]": ["etp56a", "etp56b"] } }, "Ethernet224": { @@ -1173,7 +1229,8 @@ "lanes": "224,225,226,227", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp57"], - "2x50G[25G,10G]": ["etp57a", "etp57b"] + "1x10G[100G,50G,40G,25G]": ["etp57"], + "2x50G[40G,25G,10G]": ["etp57a", "etp57b"] } }, "Ethernet228": { @@ -1181,7 +1238,8 @@ "lanes": "228,229,230,231", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp58"], - "2x50G[25G,10G]": ["etp58a", "etp58b"] + "1x10G[100G,50G,40G,25G]": ["etp58"], + "2x50G[40G,25G,10G]": ["etp58a", "etp58b"] } }, "Ethernet232": { @@ -1189,7 +1247,8 @@ "lanes": "232,233,234,235", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp59"], - "2x50G[25G,10G]": ["etp59a", "etp59b"] + "1x10G[100G,50G,40G,25G]": ["etp59"], + "2x50G[40G,25G,10G]": ["etp59a", "etp59b"] } }, "Ethernet236": { @@ -1197,7 +1256,8 @@ "lanes": "236,237,238,239", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp60"], - "2x50G[25G,10G]": ["etp60a", "etp60b"] + "1x10G[100G,50G,40G,25G]": ["etp60"], + "2x50G[40G,25G,10G]": ["etp60a", "etp60b"] } }, "Ethernet240": { @@ -1205,7 +1265,8 @@ "lanes": "240,241,242,243", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp61"], - "2x50G[25G,10G]": ["etp61a", "etp61b"] + "1x10G[100G,50G,40G,25G]": ["etp61"], + "2x50G[40G,25G,10G]": ["etp61a", "etp61b"] } }, "Ethernet244": { @@ -1213,7 +1274,8 @@ "lanes": "244,245,246,247", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp62"], - "2x50G[25G,10G]": ["etp62a", "etp62b"] + "1x10G[100G,50G,40G,25G]": ["etp62"], + "2x50G[40G,25G,10G]": ["etp62a", "etp62b"] } }, "Ethernet248": { @@ -1221,7 +1283,8 @@ "lanes": "248,249,250,251", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp63"], - "2x50G[25G,10G]": ["etp63a", "etp63b"] + "1x10G[100G,50G,40G,25G]": ["etp63"], + "2x50G[40G,25G,10G]": ["etp63a", "etp63b"] } }, "Ethernet252": { @@ -1229,7 +1292,8 @@ "lanes": "252,253,254,255", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp64"], - "2x50G[25G,10G]": ["etp64a", "etp64b"] + "1x10G[100G,50G,40G,25G]": ["etp64"], + "2x50G[40G,25G,10G]": ["etp64a", "etp64b"] } } } From bbd7667abe9c9b28a6ac7285ca694ea2593c54e6 Mon Sep 17 00:00:00 2001 From: gechiang <62408185+gechiang@users.noreply.github.com> Date: Sat, 14 Aug 2021 17:01:00 -0700 Subject: [PATCH 044/186] Reapply the fix to address setting MTU > 1500 causing portmgrd crash on BRCM platforms (#8472) --- .../systems/linux/kernel/modules/bcm-knet/bcm-knet.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c index a3f92b17584b..43edc056beff 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c @@ -6341,6 +6341,11 @@ bkn_init_ndev(u8 *mac, char *name) dev->mtu = rx_buffer_size; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) + dev->min_mtu = 68; + dev->max_mtu = rx_buffer_size; +#endif + /* Device vectors */ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) dev->netdev_ops = &bkn_netdev_ops; From 76ed66ca29ec0c9d87eac8c6306ed80991aa9047 Mon Sep 17 00:00:00 2001 From: jostar-yang Date: Sun, 15 Aug 2021 14:58:17 +0800 Subject: [PATCH 045/186] [AS4630-54PE] Add SFP reset and lpmode sysfs (#8450) Add QSFP reset and lpmode sysfs Signed-off-by: Jostar Yang --- .../plugins/sfputil.py | 22 +++- .../modules/x86-64-accton-as4630-54pe-cpld.c | 105 +++++++++++++++--- 2 files changed, 109 insertions(+), 18 deletions(-) diff --git a/device/accton/x86_64-accton_as4630_54pe-r0/plugins/sfputil.py b/device/accton/x86_64-accton_as4630_54pe-r0/plugins/sfputil.py index fd660ccdc245..e46722974fba 100755 --- a/device/accton/x86_64-accton_as4630_54pe-r0/plugins/sfputil.py +++ b/device/accton/x86_64-accton_as4630_54pe-r0/plugins/sfputil.py @@ -50,7 +50,7 @@ def port_end(self): @property def qsfp_ports(self): - return list(range(self.PORT_START, self.PORTS_IN_BLOCK + 1)) + return list(range(self.QSFP_START, self.PORTS_IN_BLOCK + 1)) @property def port_to_eeprom_mapping(self): @@ -147,7 +147,25 @@ def set_low_power_mode(self, port_num, lpmode): time.sleep(0.01) def reset(self, port_num): - raise NotImplementedError + if not port_num in self.qsfp_ports: + return False + + path = self.BASE_CPLD_PATH + "module_reset_" + str(port_num) + self.__port_to_mod_rst = path + try: + reg_file = open(self.__port_to_mod_rst, 'r+', buffering=0) + 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 @property def _get_presence_bitmap(self): diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/modules/x86-64-accton-as4630-54pe-cpld.c b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/modules/x86-64-accton-as4630-54pe-cpld.c index d1205516ef53..f7a438feed7f 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/modules/x86-64-accton-as4630-54pe-cpld.c +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/modules/x86-64-accton-as4630-54pe-cpld.c @@ -96,14 +96,16 @@ static const struct i2c_device_id as4630_54pe_cpld_id[] = { }; MODULE_DEVICE_TABLE(i2c, as4630_54pe_cpld_id); -#define TRANSCEIVER_PRESENT_ATTR_ID(index) MODULE_PRESENT_##index +#define TRANSCEIVER_RESET_ATTR_ID(index) MODULE_RESET_##index +#define TRANSCEIVER_LPMODE_ATTR_ID(index) MODULE_LPMODE_##index +#define TRANSCEIVER_PRESENT_ATTR_ID(index) MODULE_PRESENT_##index #define TRANSCEIVER_TXDISABLE_ATTR_ID(index) MODULE_TXDISABLE_##index -#define TRANSCEIVER_RXLOS_ATTR_ID(index) MODULE_RXLOS_##index -#define TRANSCEIVER_TXFAULT_ATTR_ID(index) MODULE_TXFAULT_##index +#define TRANSCEIVER_RXLOS_ATTR_ID(index) MODULE_RXLOS_##index +#define TRANSCEIVER_TXFAULT_ATTR_ID(index) MODULE_TXFAULT_##index #define FAN_SPEED_RPM_ATTR_ID(index) FAN_SPEED_RPM_##index -#define FAN_DIRECTION_ID(index) FAN_DIRECTION_##index +#define FAN_DIRECTION_ID(index) FAN_DIRECTION_##index #define FAN_PRESENT_ATTR_ID(index) FAN_PRESENT_##index -#define FAN_FAULT_ATTR_ID(index) FAN_FAULT_##index +#define FAN_FAULT_ATTR_ID(index) FAN_FAULT_##index enum as4630_54pe_cpld_sysfs_attributes { CPLD_VERSION, @@ -123,6 +125,10 @@ enum as4630_54pe_cpld_sysfs_attributes { TRANSCEIVER_PRESENT_ATTR_ID(52), TRANSCEIVER_PRESENT_ATTR_ID(53), TRANSCEIVER_PRESENT_ATTR_ID(54), + TRANSCEIVER_RESET_ATTR_ID(53), + TRANSCEIVER_RESET_ATTR_ID(54), + TRANSCEIVER_LPMODE_ATTR_ID(53), + TRANSCEIVER_LPMODE_ATTR_ID(54), TRANSCEIVER_TXDISABLE_ATTR_ID(49), TRANSCEIVER_TXDISABLE_ATTR_ID(50), TRANSCEIVER_TXDISABLE_ATTR_ID(51), @@ -148,6 +154,8 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, char *buf); static ssize_t set_tx_disable(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t set_qsfp(struct device *dev, struct device_attribute *da, + const char *buf, size_t count); static ssize_t access(struct device *dev, struct device_attribute *da, const char *buf, size_t count); static ssize_t show_version(struct device *dev, struct device_attribute *da, @@ -161,10 +169,6 @@ static ssize_t fan_show_value(struct device *dev, struct device_attribute *da, c static ssize_t set_duty_cycle(struct device *dev, struct device_attribute *da, const char *buf, size_t count); static ssize_t get_sys_temp(struct device *dev, struct device_attribute *da, char *buf); -//static ssize_t show_power(struct device *dev, struct device_attribute *da, - // char *buf); - - /* transceiver attributes */ #define DECLARE_SFP_TRANSCEIVER_SENSOR_DEVICE_ATTR(index) \ @@ -178,11 +182,15 @@ static ssize_t get_sys_temp(struct device *dev, struct device_attribute *da, cha &sensor_dev_attr_module_tx_disable_##index.dev_attr.attr, \ &sensor_dev_attr_module_rx_los_##index.dev_attr.attr, \ &sensor_dev_attr_module_tx_fault_##index.dev_attr.attr - + #define DECLARE_QSFP_TRANSCEIVER_SENSOR_DEVICE_ATTR(index) \ + static SENSOR_DEVICE_ATTR(module_lpmode_##index, S_IRUGO | S_IWUSR, show_status, set_qsfp, MODULE_LPMODE_##index); \ + static SENSOR_DEVICE_ATTR(module_reset_##index, S_IRUGO | S_IWUSR, show_status, set_qsfp, MODULE_RESET_##index); \ static SENSOR_DEVICE_ATTR(module_present_##index, S_IRUGO, show_status, NULL, MODULE_PRESENT_##index); #define DECLARE_QSFP_TRANSCEIVER_ATTR(index) \ + &sensor_dev_attr_module_lpmode_##index.dev_attr.attr, \ + &sensor_dev_attr_module_reset_##index.dev_attr.attr, \ &sensor_dev_attr_module_present_##index.dev_attr.attr @@ -273,7 +281,7 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, break; case MODULE_TXDISABLE_49 ... MODULE_TXDISABLE_50: reg=0x5; - mask=0x1 << (attr->index==MODULE_TXFAULT_49?7:3); + mask=0x1 << (attr->index==MODULE_TXDISABLE_49?7:3); break; case MODULE_RXLOS_51 ... MODULE_RXLOS_52: @@ -290,12 +298,22 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, break; case MODULE_TXDISABLE_51 ... MODULE_TXDISABLE_52: reg=0x6; - mask=0x1 << (attr->index==MODULE_TXFAULT_51?7:3); + mask=0x1 << (attr->index==MODULE_TXDISABLE_51?7:3); break; case MODULE_PRESENT_53 ... MODULE_PRESENT_54: reg=0x21; mask=0x1 << (attr->index==MODULE_PRESENT_53?0:4); break; + case MODULE_RESET_53 ... MODULE_RESET_54: + reg=0x21; + mask=0x1 << (attr->index==MODULE_RESET_53?3:7); + revert = 1; + break; + case MODULE_LPMODE_53 ... MODULE_LPMODE_54: + reg = 0x21; + mask = 0x1 << (attr->index==MODULE_LPMODE_53?2:6); + revert = 0; + break; default: return 0; } @@ -319,6 +337,61 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, return status; } +static ssize_t set_qsfp(struct device *dev, struct device_attribute *da, + const char *buf, size_t count) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct as4630_54pe_cpld_data *data = i2c_get_clientdata(client); + long disable; + int status; + u8 reg = 0, mask = 0, revert = 0; + + status = kstrtol(buf, 10, &disable); + if (status) { + return status; + } + reg = 0x21; + switch (attr->index) + { + case MODULE_RESET_53 ... MODULE_RESET_54: + mask=0x1 << (attr->index==MODULE_RESET_53?3:7); + revert = 1; + break; + case MODULE_LPMODE_53 ... MODULE_LPMODE_54: + mask=0x1 << (attr->index==MODULE_LPMODE_53?2:6); + revert = 0; + break; + default: + return 0; + } + + disable = revert ? disable : !disable; + /* Read current status */ + mutex_lock(&data->update_lock); + status = as4630_54pe_cpld_read_internal(client, reg); + if (unlikely(status < 0)) { + goto exit; + } + if (disable) { + status &= ~mask; + } + else { + status |= mask; + } + status = as4630_54pe_cpld_write_internal(client, reg, status); + if (unlikely(status < 0)) { + goto exit; + } + + mutex_unlock(&data->update_lock); + return count; + +exit: + mutex_unlock(&data->update_lock); + return status; +} + static ssize_t set_tx_disable(struct device *dev, struct device_attribute *da, const char *buf, size_t count) { @@ -338,11 +411,11 @@ static ssize_t set_tx_disable(struct device *dev, struct device_attribute *da, { case MODULE_TXDISABLE_49 ... MODULE_TXDISABLE_50: reg=0x5; - mask=0x1 << (attr->index==MODULE_TXFAULT_49?7:3); + mask=0x1 << (attr->index==MODULE_TXDISABLE_49?7:3); break; case MODULE_TXDISABLE_51 ... MODULE_TXDISABLE_52: reg=0x6; - mask=0x1 << (attr->index==MODULE_TXFAULT_51?7:3); + mask=0x1 << (attr->index==MODULE_TXDISABLE_51?7:3); break; default: @@ -357,10 +430,10 @@ static ssize_t set_tx_disable(struct device *dev, struct device_attribute *da, } /* Update tx_disable status */ if (disable) { - status &= ~mask; + status |= mask; } else { - status |= mask; + status &= ~mask; } status = as4630_54pe_cpld_write_internal(client, reg, status); if (unlikely(status < 0)) { From 144a7bcaf8a86649131fa25c2deccf96c6541e74 Mon Sep 17 00:00:00 2001 From: Praveen Chaudhary Date: Sun, 15 Aug 2021 00:01:31 -0700 Subject: [PATCH 046/186] [sonic-frr]: Checkout gracefully if branch exists already. (#8289) If branch exist already, today FRR build fails. Branch may exist on rebuild. With this PR, we will Checkout branch gracefully if branch exists already. Signed-off-by: Praveen Chaudhary --- src/sonic-frr/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-frr/Makefile b/src/sonic-frr/Makefile index 4bac1e42769d..45f37e52781e 100644 --- a/src/sonic-frr/Makefile +++ b/src/sonic-frr/Makefile @@ -10,7 +10,7 @@ STG_BRANCH = stg_temp.$(SUFFIX) $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : # Build the package pushd ./frr - git checkout -b $(FRR_BRANCH) origin/$(FRR_BRANCH) + git checkout -b $(FRR_BRANCH) origin/$(FRR_BRANCH) || git checkout $(FRR_BRANCH) stg branch --create $(STG_BRANCH) $(FRR_TAG) stg import -s ../patch/series tools/tarsource.sh -V -e '-sonic' From aa6d4574e3e22a41eac66c1a28e8e94d9dc7e94a Mon Sep 17 00:00:00 2001 From: tomer-israel <76040066+tomer-israel@users.noreply.github.com> Date: Sun, 15 Aug 2021 11:12:32 +0300 Subject: [PATCH 047/186] [Mellanox] fix syseeprom info values on mellanox simulator platforms msn4700 and msn4800 (#8387) #### Why I did it The values of the syseeprom were not valid #### How I did it I took the correct hexdump values from a real switch and created this hex file again #### How to verify it decode-syseeprom will display the new values --- .../x86_64-mlnx_msn4700_simx-r0/syseeprom.hex | 42 +++++++++--------- .../x86_64-mlnx_msn4800_simx-r0/syseeprom.hex | 44 +++++++++---------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/device/mellanox/x86_64-mlnx_msn4700_simx-r0/syseeprom.hex b/device/mellanox/x86_64-mlnx_msn4700_simx-r0/syseeprom.hex index b50ffa5a0231..06b57892e98e 100644 --- a/device/mellanox/x86_64-mlnx_msn4700_simx-r0/syseeprom.hex +++ b/device/mellanox/x86_64-mlnx_msn4700_simx-r0/syseeprom.hex @@ -1,42 +1,42 @@ 54 6c 76 49 6e 66 6f 00 01 02 53 21 40 4d 53 4e -33 37 30 30 00 00 00 00 00 00 00 00 00 00 00 00 +34 37 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 14 4d -53 4e 33 37 30 30 2d 56 53 32 46 00 00 00 00 00 -00 00 00 23 18 4d 54 31 38 35 31 58 30 32 39 36 -31 00 00 00 00 00 00 00 00 00 00 00 00 24 06 98 -03 9b 94 d4 80 25 13 31 32 2f 32 38 2f 32 30 31 -38 20 30 34 3a 34 32 3a 31 38 26 01 00 2a 02 00 +53 4e 34 37 30 30 2d 57 53 32 46 4f 00 00 00 00 +00 00 00 23 18 4d 54 32 30 32 32 58 30 38 35 39 +37 00 00 00 00 00 00 00 00 00 00 00 00 24 06 1c +34 da 1d 42 00 25 13 30 37 2f 30 32 2f 32 30 32 +30 20 30 32 3a 33 38 3a 32 36 26 01 00 2a 02 00 fe 2b 08 4d 65 6c 6c 61 6e 6f 78 fd 24 00 00 81 19 00 16 01 01 00 56 00 00 4d 4c 4e 58 02 01 0c 05 0e 02 10 06 12 07 00 00 00 00 00 00 00 00 00 -00 fd a4 00 00 81 19 00 92 00 03 01 01 00 00 4d -54 31 38 35 31 58 30 32 39 36 31 00 00 00 00 00 -00 00 00 00 00 00 00 4d 53 4e 33 37 30 30 2d 56 -53 32 46 00 00 00 00 00 00 00 00 41 32 00 00 00 -3a 82 b8 41 6e 61 63 6f 6e 64 61 20 45 74 68 20 -32 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 fd a4 00 00 81 19 00 92 00 03 01 8a 00 00 4d +54 32 30 32 32 58 30 38 35 39 37 00 00 00 00 00 +00 00 00 00 00 00 00 4d 53 4e 34 37 30 30 2d 57 +53 32 46 4f 00 00 00 00 00 00 00 41 37 00 00 00 +82 a2 c4 4c 65 6f 70 61 72 64 20 45 74 68 20 34 +30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 70 00 00 00 0e 74 4d 53 4e 33 37 +00 00 00 00 00 7a 00 00 00 12 5c 4d 53 4e 34 37 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 24 00 00 81 19 00 10 00 03 05 e8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 24 00 -00 81 19 00 1e 00 11 02 85 00 00 0d 00 00 00 00 -00 00 00 98 03 9b 94 d4 80 00 fe 98 03 9b 03 00 -94 d4 80 fd 24 00 00 81 19 00 12 00 01 06 81 00 -00 00 46 00 00 08 00 06 06 06 06 00 00 00 00 00 +00 81 19 00 1e 00 11 02 af 00 00 0d 00 00 00 00 +00 00 00 1c 34 da 1d 42 00 00 fe 1c 34 da 03 00 +1d 42 00 fd 24 00 00 81 19 00 12 00 01 06 7d 00 +00 00 46 00 00 08 00 07 07 07 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 14 00 00 81 19 00 0e 00 02 07 99 00 00 30 00 20 00 00 00 00 00 28 40 78 38 36 5f 36 34 2d 6d 6c 6e 78 5f 6d 73 6e -33 37 30 30 2d 72 30 00 00 00 00 00 00 00 00 00 +34 37 30 30 2d 72 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 29 15 32 30 31 38 2e 31 31 2d 35 2e 32 2e 30 -30 30 38 2d 39 36 30 30 fe 04 89 cb 82 5b 00 00 -00 00 00 fe 04 72 60 7f 13 00 00 00 00 00 00 00 +00 29 15 32 30 32 30 2e 31 31 2d 35 2e 33 2e 30 +30 30 35 2d 39 36 30 30 fe 04 12 38 c7 41 d3 2a +00 00 00 fe 04 4f b8 08 f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/device/mellanox/x86_64-mlnx_msn4800_simx-r0/syseeprom.hex b/device/mellanox/x86_64-mlnx_msn4800_simx-r0/syseeprom.hex index b50ffa5a0231..13bba49e7446 100644 --- a/device/mellanox/x86_64-mlnx_msn4800_simx-r0/syseeprom.hex +++ b/device/mellanox/x86_64-mlnx_msn4800_simx-r0/syseeprom.hex @@ -1,42 +1,42 @@ -54 6c 76 49 6e 66 6f 00 01 02 53 21 40 4d 53 4e -33 37 30 30 00 00 00 00 00 00 00 00 00 00 00 00 +54 6c 76 49 6e 66 6f 00 01 02 5e 21 40 4d 53 4e +34 38 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 14 4d -53 4e 33 37 30 30 2d 56 53 32 46 00 00 00 00 00 -00 00 00 23 18 4d 54 31 38 35 31 58 30 32 39 36 -31 00 00 00 00 00 00 00 00 00 00 00 00 24 06 98 -03 9b 94 d4 80 25 13 31 32 2f 32 38 2f 32 30 31 -38 20 30 34 3a 34 32 3a 31 38 26 01 00 2a 02 00 +53 4e 34 38 30 30 2d 57 53 34 46 00 00 00 00 00 +00 00 00 23 18 4d 54 32 31 32 31 58 31 32 32 30 +34 00 00 00 00 00 00 00 00 00 00 00 00 24 06 1c +34 da c1 df 00 25 13 30 35 2f 32 34 2f 32 30 32 +31 20 30 30 3a 32 37 3a 32 37 26 01 00 2a 02 00 fe 2b 08 4d 65 6c 6c 61 6e 6f 78 fd 24 00 00 81 19 00 16 01 01 00 56 00 00 4d 4c 4e 58 02 01 0c 05 0e 02 10 06 12 07 00 00 00 00 00 00 00 00 00 -00 fd a4 00 00 81 19 00 92 00 03 01 01 00 00 4d -54 31 38 35 31 58 30 32 39 36 31 00 00 00 00 00 -00 00 00 00 00 00 00 4d 53 4e 33 37 30 30 2d 56 -53 32 46 00 00 00 00 00 00 00 00 41 32 00 00 00 -3a 82 b8 41 6e 61 63 6f 6e 64 61 20 45 74 68 20 -32 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 fd a4 00 00 81 19 00 92 00 03 01 e2 00 00 4d +54 32 31 32 31 58 31 32 32 30 34 00 00 00 00 00 +00 00 00 00 00 00 00 4d 53 4e 34 38 30 30 2d 57 +53 34 46 00 00 00 00 00 00 00 00 41 31 00 00 00 +bf cb cb 42 75 66 66 61 6c 6f 20 4d 6f 64 75 6c +61 72 20 45 74 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 70 00 00 00 0e 74 4d 53 4e 33 37 +00 00 00 00 00 7e 00 00 00 12 c0 4d 53 4e 34 38 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 24 00 00 81 19 00 10 00 03 05 e8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 24 00 -00 81 19 00 1e 00 11 02 85 00 00 0d 00 00 00 00 -00 00 00 98 03 9b 94 d4 80 00 fe 98 03 9b 03 00 -94 d4 80 fd 24 00 00 81 19 00 12 00 01 06 81 00 -00 00 46 00 00 08 00 06 06 06 06 00 00 00 00 00 +00 81 19 00 1e 00 11 02 2d 00 00 0d 00 00 00 00 +00 00 00 1c 34 da c1 df 00 00 fe 1c 34 da 03 00 +c1 df 00 fd 24 00 00 81 19 00 12 00 01 06 7d 00 +00 00 46 00 00 08 00 07 07 07 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 14 00 00 81 19 00 0e 00 02 07 99 00 00 30 00 20 00 00 00 00 00 28 40 78 38 36 5f 36 34 2d 6d 6c 6e 78 5f 6d 73 6e -33 37 30 30 2d 72 30 00 00 00 00 00 00 00 00 00 +34 38 30 30 2d 72 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 29 15 32 30 31 38 2e 31 31 2d 35 2e 32 2e 30 -30 30 38 2d 39 36 30 30 fe 04 89 cb 82 5b 00 00 -00 00 00 fe 04 72 60 7f 13 00 00 00 00 00 00 00 +00 29 20 35 2e 33 2e 30 30 30 35 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 fe 04 7b 10 a3 b8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 From c895677507e226819e32c89fc455530bd9ee1053 Mon Sep 17 00:00:00 2001 From: Stephen Sun <5379172+stephenxs@users.noreply.github.com> Date: Mon, 16 Aug 2021 15:36:48 +0800 Subject: [PATCH 048/186] Use predefined macro as vendor information (#8361) #### Why I did it Use a predefined variable to get vendor information when the swss docker container is created #### How I did it Use `{{ sonic_asic_platform }}` instead of `$SONIC_CFGGEN -y /etc/sonic/sonic_version.yml -v asic_type` #### How to verify it Manually test. --- files/build_templates/docker_image_ctl.j2 | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/files/build_templates/docker_image_ctl.j2 b/files/build_templates/docker_image_ctl.j2 index 915279dfba94..541f52656b07 100644 --- a/files/build_templates/docker_image_ctl.j2 +++ b/files/build_templates/docker_image_ctl.j2 @@ -287,9 +287,6 @@ start() { {%- endif %} {%- if docker_container_name == "swss" %} - # Obtain the vendor name - ASIC_VENDOR=`$SONIC_CFGGEN -y /etc/sonic/sonic_version.yml -v asic_type` - # Generate the asic_table.json and peripheral_table.json if [ ! -f /etc/sonic/asic_table.json ] && [ -f /usr/share/sonic/templates/asic_table.j2 ]; then sonic-cfggen -d -t /usr/share/sonic/templates/asic_table.j2 > /etc/sonic/asic_table.json @@ -418,7 +415,7 @@ start() { -v /usr/share/sonic/firmware:/usr/share/sonic/firmware:rw \ {%- endif %} {%- if docker_container_name == "swss" %} - -e ASIC_VENDOR=$ASIC_VENDOR \ + -e ASIC_VENDOR={{ sonic_asic_platform }} \ {%- endif -%} {%- if docker_container_name == "bgp" %} -v /etc/sonic/frr/$DEV:/etc/frr:rw \ From 8a2ba14677ec5848eb056a468f4f5be143b5c94f Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak <38952541+stepanblyschak@users.noreply.github.com> Date: Mon, 16 Aug 2021 12:54:09 +0300 Subject: [PATCH 049/186] [libteam][warm-reboot] fix issue in teamd warm-reboot that teamd starts (#8227) with state of tdport from previous warm-reboot. In case LAG was down before reboot, lacp->wr is not cleared. In lacp_event_watch_port_flush_data we incremented nr_of_tdports and add tdport to lacp->wr.state. In case lacp->wr.state already had this tdport we do not set new state for tdport but appened a new item in lacp->wr.state. In case we preformed warm-reboot and PortChannel member was down, after reboot PortChannel member became up next warm-reboot will initialize teamd with PortChannel member in down state. Fix this issue by calling stop_wr_mode() when LAG was down. This was probably intended but missed. #### Why I did it To fix an issue seen in warm-reboot-sad test cases. #### How I did it I fixed it in SONiC libteam patch that adds warm-reboot support. Details in commit description. #### How to verify it Run warm-reboot-sad test on t0-56 topology. --- .../0008-libteam-Add-warm_reboot-mode.patch | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/libteam/patch/0008-libteam-Add-warm_reboot-mode.patch b/src/libteam/patch/0008-libteam-Add-warm_reboot-mode.patch index 440d351a8b6e..4ef38ee138f3 100644 --- a/src/libteam/patch/0008-libteam-Add-warm_reboot-mode.patch +++ b/src/libteam/patch/0008-libteam-Add-warm_reboot-mode.patch @@ -1,4 +1,4 @@ -From a4ab4de68134f6425f704a2ddcda33a4930645de Mon Sep 17 00:00:00 2001 +From cdc7eb674bb779b9e5181921e4c7c2b2f0a0db41 Mon Sep 17 00:00:00 2001 From: Pavel Shirshov Date: Tue, 3 Mar 2020 13:04:57 -0800 Subject: [PATCH] [libteam]: Reimplement Warm-Reboot procedure' @@ -9,8 +9,8 @@ Subject: [PATCH] [libteam]: Reimplement Warm-Reboot procedure' teamd/teamd.h | 6 + teamd/teamd_events.c | 13 ++ teamd/teamd_per_port.c | 6 + - teamd/teamd_runner_lacp.c | 474 +++++++++++++++++++++++++++++++++++--- - 6 files changed, 512 insertions(+), 44 deletions(-) + teamd/teamd_runner_lacp.c | 475 +++++++++++++++++++++++++++++++++++--- + 6 files changed, 513 insertions(+), 44 deletions(-) diff --git a/libteam/ifinfo.c b/libteam/ifinfo.c index 46d56a2..b86d34c 100644 @@ -35,7 +35,7 @@ index 46d56a2..b86d34c 100644 } } diff --git a/teamd/teamd.c b/teamd/teamd.c -index bf42347..221d71d 100644 +index 421e34d..33512a6 100644 --- a/teamd/teamd.c +++ b/teamd/teamd.c @@ -117,7 +117,9 @@ static void print_help(const struct teamd_context *ctx) { @@ -203,7 +203,7 @@ index 221803e..bd4dcc1 100644 struct teamd_port *tdport) { diff --git a/teamd/teamd_per_port.c b/teamd/teamd_per_port.c -index 166da57..03f8d63 100644 +index 166da57..cefd6c2 100644 --- a/teamd/teamd_per_port.c +++ b/teamd/teamd_per_port.c @@ -350,6 +350,12 @@ static int teamd_port_remove(struct teamd_context *ctx, @@ -220,7 +220,7 @@ index 166da57..03f8d63 100644 tdport->ifname, tdport->ifindex); err = team_port_remove(ctx->th, tdport->ifindex); diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c -index 55abe88..f225fb2 100644 +index 955ef0c..782fc05 100644 --- a/teamd/teamd_runner_lacp.c +++ b/teamd/teamd_runner_lacp.c @@ -31,6 +31,7 @@ @@ -523,7 +523,7 @@ index 55abe88..f225fb2 100644 + /* the port was up before the WR. Trying to restore it */ + struct lacpdu lacpdu; + err = lacpdu_read(lacp_port, &lacpdu); -+ if (err) /* Can't read, so the port will start from scratch */ ++ if (err) /* Can't read, so the port will start from scratch */ + continue; + teamd_log_info("WR-mode. State of the LAG member port '%s' was restored.", + tdport->ifname); @@ -810,7 +810,7 @@ index 55abe88..f225fb2 100644 static const struct teamd_event_watch_ops lacp_event_watch_ops = { .hwaddr_changed = lacp_event_watch_hwaddr_changed, .port_hwaddr_changed = lacp_event_watch_port_hwaddr_changed, -@@ -1469,21 +1848,35 @@ static const struct teamd_event_watch_ops lacp_event_watch_ops = { +@@ -1469,21 +1848,36 @@ static const struct teamd_event_watch_ops lacp_event_watch_ops = { .port_changed = lacp_event_watch_port_changed, .admin_state_changed = lacp_event_watch_admin_state_changed, .refresh = lacp_event_watch_refresh, @@ -832,6 +832,7 @@ index 55abe88..f225fb2 100644 + if (lacp->wr.carrier_up) { + teamd_log_info("WR-mode. Starting in WR mode"); + } else { ++ stop_wr_mode(lacp); + teamd_log_info("WR-mode. Starting in normal mode. The LAG interface was down before restart"); + } + ctx->warm_start_mode = lacp->wr.carrier_up; @@ -851,7 +852,7 @@ index 55abe88..f225fb2 100644 return 0; } -@@ -1951,6 +2344,12 @@ static int lacp_init(struct teamd_context *ctx, void *priv) +@@ -1951,6 +2345,12 @@ static int lacp_init(struct teamd_context *ctx, void *priv) } lacp->ctx = ctx; @@ -864,7 +865,7 @@ index 55abe88..f225fb2 100644 err = teamd_hash_func_set(ctx); if (err) return err; -@@ -1992,10 +2391,13 @@ static void lacp_fini(struct teamd_context *ctx, void *priv) +@@ -1992,10 +2392,13 @@ static void lacp_fini(struct teamd_context *ctx, void *priv) { struct lacp *lacp = priv; @@ -880,5 +881,5 @@ index 55abe88..f225fb2 100644 const struct teamd_runner teamd_runner_lacp = { -- -2.17.1.windows.2 +2.17.1 From 144851fea88972be226ed6ff5a7e353f57d67689 Mon Sep 17 00:00:00 2001 From: zzhiyuan Date: Mon, 16 Aug 2021 07:03:50 -0700 Subject: [PATCH 050/186] [Arista] Add dynamic port breakout hwsku to platforms (#7975) Co-authored-by: Zhi Yuan (Carl) Zhao Why I did it To support dynamic port breakout Broadcom configurations on Arista platforms. How I did it Updated platform.json for platforms and added new hwsku, Broadcom config, and hwsku.json for dynamic port breakout usage. The name of the new hwsku name used is very similar to the platform name (platform x86_64-arista_7050_qx32s hwsku Arista-7050QX-32S) as the flex hwsku is meant to be the default in the future. How to verify it Boot up device with the new hwsku, interfaces are up. Change hwsku.json with new default breakout mode and reload device, breakout will have successfully been applied. --- .../Arista-7050QX-32S/hwsku-init | 3 + .../Arista-7050QX-32S/hwsku.json | 100 ++ .../Arista-7050QX-32S/port_config.ini | 33 + .../Arista-7050QX-32S/sai.profile | 2 + .../x86_64-arista_7050_qx32s/platform.json | 533 ++++++- .../td2-a7050qx-32s-flex.config.bcm | 839 +++++++++++ .../Arista-7050CX3-32S/hwsku.json | 106 ++ .../Arista-7050CX3-32S/port_config.ini | 35 + .../Arista-7050CX3-32S/sai.profile | 2 + .../x86_64-arista_7050cx3_32s/platform.json | 629 ++++++++- .../td3-a7050cx3-32s-flex.config.bcm | 468 +++++++ .../Arista-7060DX4-32/hwsku.json | 106 ++ .../Arista-7060DX4-32/port_config.ini | 35 + .../Arista-7060DX4-32/sai.profile | 1 + .../x86_64-arista_7060dx4_32/platform.json | 629 ++++++++- .../th3-a7060dx4-32-flex.config.bcm | 752 ++++++++++ .../Arista-7060PX4-32/hwsku.json | 106 ++ .../Arista-7060PX4-32/port_config.ini | 35 + .../Arista-7060PX4-32/sai.profile | 2 + .../x86_64-arista_7060px4_32/platform.json | 631 ++++++++- .../th3-a7060px4-32-flex.config.bcm | 752 ++++++++++ .../Arista-7260CX3-64/hwsku.json | 202 +++ .../Arista-7260CX3-64/port_config.ini | 67 + .../Arista-7260CX3-64/sai.profile | 2 + .../x86_64-arista_7260cx3_64/platform.json | 1237 ++++++++++++++++- .../th2-a7260cx3-64-flex.config.bcm | 876 ++++++++++++ 26 files changed, 8176 insertions(+), 7 deletions(-) create mode 100755 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku-init create mode 100644 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku.json create mode 100644 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/port_config.ini create mode 100644 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/sai.profile create mode 100644 device/arista/x86_64-arista_7050_qx32s/td2-a7050qx-32s-flex.config.bcm create mode 100644 device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/hwsku.json create mode 100644 device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/port_config.ini create mode 100644 device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/sai.profile create mode 100644 device/arista/x86_64-arista_7050cx3_32s/td3-a7050cx3-32s-flex.config.bcm create mode 100644 device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/hwsku.json create mode 100644 device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/port_config.ini create mode 100644 device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/sai.profile create mode 100644 device/arista/x86_64-arista_7060dx4_32/th3-a7060dx4-32-flex.config.bcm create mode 100644 device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/hwsku.json create mode 100644 device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/port_config.ini create mode 100644 device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/sai.profile create mode 100644 device/arista/x86_64-arista_7060px4_32/th3-a7060px4-32-flex.config.bcm create mode 100644 device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/hwsku.json create mode 100644 device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/port_config.ini create mode 100644 device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/sai.profile create mode 100644 device/arista/x86_64-arista_7260cx3_64/th2-a7260cx3-64-flex.config.bcm diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku-init b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku-init new file mode 100755 index 000000000000..ffc913582aa7 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku-init @@ -0,0 +1,3 @@ +#!/bin/bash + +echo 1 > /sys/devices/pci0000:00/0000:00:02.2/0000:02:00.0/mux diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku.json b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku.json new file mode 100644 index 000000000000..9d29b9caa199 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku.json @@ -0,0 +1,100 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet4": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet8": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet12": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet16": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet20": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet24": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet28": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet32": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet36": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet40": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet44": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet48": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet52": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet56": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet60": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet64": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet68": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet72": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet76": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet80": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet84": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet88": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet92": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet96": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet100": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet104": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet108": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet112": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet116": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet120": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet124": { + "default_brkout_mode": "1x40G[10G]" + } + } +} \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/port_config.ini b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/port_config.ini new file mode 100644 index 000000000000..857b126bf833 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/port_config.ini @@ -0,0 +1,33 @@ +# name lanes alias index speed +Ethernet0 9,10,11,12 Ethernet5/1 5 40000 +Ethernet4 13,14,15,16 Ethernet6/1 6 40000 +Ethernet8 17,18,19,20 Ethernet7/1 7 40000 +Ethernet12 21,22,23,24 Ethernet8/1 8 40000 +Ethernet16 29,30,31,32 Ethernet9/1 9 40000 +Ethernet20 25,26,27,28 Ethernet10/1 10 40000 +Ethernet24 33,34,35,36 Ethernet11/1 11 40000 +Ethernet28 37,38,39,40 Ethernet12/1 12 40000 +Ethernet32 45,46,47,48 Ethernet13/1 13 40000 +Ethernet36 41,42,43,44 Ethernet14/1 14 40000 +Ethernet40 49,50,51,52 Ethernet15/1 15 40000 +Ethernet44 53,54,55,56 Ethernet16/1 16 40000 +Ethernet48 69,70,71,72 Ethernet17/1 17 40000 +Ethernet52 65,66,67,68 Ethernet18/1 18 40000 +Ethernet56 73,74,75,76 Ethernet19/1 19 40000 +Ethernet60 77,78,79,80 Ethernet20/1 20 40000 +Ethernet64 93,94,95,96 Ethernet21/1 21 40000 +Ethernet68 89,90,91,92 Ethernet22/1 22 40000 +Ethernet72 97,98,99,100 Ethernet23/1 23 40000 +Ethernet76 101,102,103,104 Ethernet24/1 24 40000 +Ethernet80 109,110,111,112 Ethernet25/1 25 40000 +Ethernet84 105,106,107,108 Ethernet26/1 26 40000 +Ethernet88 121,122,123,124 Ethernet27/1 27 40000 +Ethernet92 125,126,127,128 Ethernet28/1 28 40000 +Ethernet96 61,62,63,64 Ethernet29 29 40000 +Ethernet100 57,58,59,60 Ethernet30 30 40000 +Ethernet104 81,82,83,84 Ethernet31 31 40000 +Ethernet108 85,86,87,88 Ethernet32 32 40000 +Ethernet112 117,118,119,120 Ethernet33 33 40000 +Ethernet116 113,114,115,116 Ethernet34 34 40000 +Ethernet120 1,2,3,4 Ethernet35 35 40000 +Ethernet124 5,6,7,8 Ethernet36 36 40000 diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/sai.profile b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/sai.profile new file mode 100644 index 000000000000..4790abaa671c --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/sai.profile @@ -0,0 +1,2 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/td2-a7050qx-32s-flex.config.bcm +SAI_NUM_ECMP_MEMBERS=64 diff --git a/device/arista/x86_64-arista_7050_qx32s/platform.json b/device/arista/x86_64-arista_7050_qx32s/platform.json index 7d725b59fe13..0dd9b558d06f 100644 --- a/device/arista/x86_64-arista_7050_qx32s/platform.json +++ b/device/arista/x86_64-arista_7050_qx32s/platform.json @@ -193,5 +193,534 @@ } ] }, - "interfaces": {} -} \ No newline at end of file + "interfaces": { + "Ethernet0": { + "index": "5,5,5,5", + "lanes": "9,10,11,12", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet5/1" + ], + "2x20G[10G]": [ + "Ethernet5/1", + "Ethernet5/3" + ], + "4x10G": [ + "Ethernet5/1", + "Ethernet5/2", + "Ethernet5/3", + "Ethernet5/4" + ] + } + }, + "Ethernet4": { + "index": "6,6,6,6", + "lanes": "13,14,15,16", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet6/1" + ], + "2x20G[10G]": [ + "Ethernet6/1", + "Ethernet6/3" + ], + "4x10G": [ + "Ethernet6/1", + "Ethernet6/2", + "Ethernet6/3", + "Ethernet6/4" + ] + } + }, + "Ethernet8": { + "index": "7,7,7,7", + "lanes": "17,18,19,20", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet7/1" + ], + "2x20G[10G]": [ + "Ethernet7/1", + "Ethernet7/3" + ], + "4x10G": [ + "Ethernet7/1", + "Ethernet7/2", + "Ethernet7/3", + "Ethernet7/4" + ] + } + }, + "Ethernet12": { + "index": "8,8,8,8", + "lanes": "21,22,23,24", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet8/1" + ], + "2x20G[10G]": [ + "Ethernet8/1", + "Ethernet8/3" + ], + "4x10G": [ + "Ethernet8/1", + "Ethernet8/2", + "Ethernet8/3", + "Ethernet8/4" + ] + } + }, + "Ethernet16": { + "index": "9,9,9,9", + "lanes": "29,30,31,32", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet9/1" + ], + "2x20G[10G]": [ + "Ethernet9/1", + "Ethernet9/3" + ], + "4x10G": [ + "Ethernet9/1", + "Ethernet9/2", + "Ethernet9/3", + "Ethernet9/4" + ] + } + }, + "Ethernet20": { + "index": "10,10,10,10", + "lanes": "25,26,27,28", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet10/1" + ], + "2x20G[10G]": [ + "Ethernet10/1", + "Ethernet10/3" + ], + "4x10G": [ + "Ethernet10/1", + "Ethernet10/2", + "Ethernet10/3", + "Ethernet10/4" + ] + } + }, + "Ethernet24": { + "index": "11,11,11,11", + "lanes": "33,34,35,36", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet11/1" + ], + "2x20G[10G]": [ + "Ethernet11/1", + "Ethernet11/3" + ], + "4x10G": [ + "Ethernet11/1", + "Ethernet11/2", + "Ethernet11/3", + "Ethernet11/4" + ] + } + }, + "Ethernet28": { + "index": "12,12,12,12", + "lanes": "37,38,39,40", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet12/1" + ], + "2x20G[10G]": [ + "Ethernet12/1", + "Ethernet12/3" + ], + "4x10G": [ + "Ethernet12/1", + "Ethernet12/2", + "Ethernet12/3", + "Ethernet12/4" + ] + } + }, + "Ethernet32": { + "index": "13,13,13,13", + "lanes": "45,46,47,48", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet13/1" + ], + "2x20G[10G]": [ + "Ethernet13/1", + "Ethernet13/3" + ], + "4x10G": [ + "Ethernet13/1", + "Ethernet13/2", + "Ethernet13/3", + "Ethernet13/4" + ] + } + }, + "Ethernet36": { + "index": "14,14,14,14", + "lanes": "41,42,43,44", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet14/1" + ], + "2x20G[10G]": [ + "Ethernet14/1", + "Ethernet14/3" + ], + "4x10G": [ + "Ethernet14/1", + "Ethernet14/2", + "Ethernet14/3", + "Ethernet14/4" + ] + } + }, + "Ethernet40": { + "index": "15,15,15,15", + "lanes": "49,50,51,52", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet15/1" + ], + "2x20G[10G]": [ + "Ethernet15/1", + "Ethernet15/3" + ], + "4x10G": [ + "Ethernet15/1", + "Ethernet15/2", + "Ethernet15/3", + "Ethernet15/4" + ] + } + }, + "Ethernet44": { + "index": "16,16,16,16", + "lanes": "53,54,55,56", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet16/1" + ], + "2x20G[10G]": [ + "Ethernet16/1", + "Ethernet16/3" + ], + "4x10G": [ + "Ethernet16/1", + "Ethernet16/2", + "Ethernet16/3", + "Ethernet16/4" + ] + } + }, + "Ethernet48": { + "index": "17,17,17,17", + "lanes": "69,70,71,72", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet17/1" + ], + "2x20G[10G]": [ + "Ethernet17/1", + "Ethernet17/3" + ], + "4x10G": [ + "Ethernet17/1", + "Ethernet17/2", + "Ethernet17/3", + "Ethernet17/4" + ] + } + }, + "Ethernet52": { + "index": "18,18,18,18", + "lanes": "65,66,67,68", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet18/1" + ], + "2x20G[10G]": [ + "Ethernet18/1", + "Ethernet18/3" + ], + "4x10G": [ + "Ethernet18/1", + "Ethernet18/2", + "Ethernet18/3", + "Ethernet18/4" + ] + } + }, + "Ethernet56": { + "index": "19,19,19,19", + "lanes": "73,74,75,76", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet19/1" + ], + "2x20G[10G]": [ + "Ethernet19/1", + "Ethernet19/3" + ], + "4x10G": [ + "Ethernet19/1", + "Ethernet19/2", + "Ethernet19/3", + "Ethernet19/4" + ] + } + }, + "Ethernet60": { + "index": "20,20,20,20", + "lanes": "77,78,79,80", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet20/1" + ], + "2x20G[10G]": [ + "Ethernet20/1", + "Ethernet20/3" + ], + "4x10G": [ + "Ethernet20/1", + "Ethernet20/2", + "Ethernet20/3", + "Ethernet20/4" + ] + } + }, + "Ethernet64": { + "index": "21,21,21,21", + "lanes": "93,94,95,96", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet21/1" + ], + "2x20G[10G]": [ + "Ethernet21/1", + "Ethernet21/3" + ], + "4x10G": [ + "Ethernet21/1", + "Ethernet21/2", + "Ethernet21/3", + "Ethernet21/4" + ] + } + }, + "Ethernet68": { + "index": "22,22,22,22", + "lanes": "89,90,91,92", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet22/1" + ], + "2x20G[10G]": [ + "Ethernet22/1", + "Ethernet22/3" + ], + "4x10G": [ + "Ethernet22/1", + "Ethernet22/2", + "Ethernet22/3", + "Ethernet22/4" + ] + } + }, + "Ethernet72": { + "index": "23,23,23,23", + "lanes": "97,98,99,100", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet23/1" + ], + "2x20G[10G]": [ + "Ethernet23/1", + "Ethernet23/3" + ], + "4x10G": [ + "Ethernet23/1", + "Ethernet23/2", + "Ethernet23/3", + "Ethernet23/4" + ] + } + }, + "Ethernet76": { + "index": "24,24,24,24", + "lanes": "101,102,103,104", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet24/1" + ], + "2x20G[10G]": [ + "Ethernet24/1", + "Ethernet24/3" + ], + "4x10G": [ + "Ethernet24/1", + "Ethernet24/2", + "Ethernet24/3", + "Ethernet24/4" + ] + } + }, + "Ethernet80": { + "index": "25,25,25,25", + "lanes": "109,110,111,112", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet25/1" + ], + "2x20G[10G]": [ + "Ethernet25/1", + "Ethernet25/3" + ], + "4x10G": [ + "Ethernet25/1", + "Ethernet25/2", + "Ethernet25/3", + "Ethernet25/4" + ] + } + }, + "Ethernet84": { + "index": "26,26,26,26", + "lanes": "105,106,107,108", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet26/1" + ], + "2x20G[10G]": [ + "Ethernet26/1", + "Ethernet26/3" + ], + "4x10G": [ + "Ethernet26/1", + "Ethernet26/2", + "Ethernet26/3", + "Ethernet26/4" + ] + } + }, + "Ethernet88": { + "index": "27,27,27,27", + "lanes": "121,122,123,124", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet27/1" + ], + "2x20G[10G]": [ + "Ethernet27/1", + "Ethernet27/3" + ], + "4x10G": [ + "Ethernet27/1", + "Ethernet27/2", + "Ethernet27/3", + "Ethernet27/4" + ] + } + }, + "Ethernet92": { + "index": "28,28,28,28", + "lanes": "125,126,127,128", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet28/1" + ], + "2x20G[10G]": [ + "Ethernet28/1", + "Ethernet28/3" + ], + "4x10G": [ + "Ethernet28/1", + "Ethernet28/2", + "Ethernet28/3", + "Ethernet28/4" + ] + } + }, + "Ethernet96": { + "index": "29,29,29,29", + "lanes": "61,62,63,64", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet29" + ] + } + }, + "Ethernet100": { + "index": "30,30,30,30", + "lanes": "57,58,59,60", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet30" + ] + } + }, + "Ethernet104": { + "index": "31,31,31,31", + "lanes": "81,82,83,84", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet31" + ] + } + }, + "Ethernet108": { + "index": "32,32,32,32", + "lanes": "85,86,87,88", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet32" + ] + } + }, + "Ethernet112": { + "index": "33,33,33,33", + "lanes": "117,118,119,120", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet33" + ] + } + }, + "Ethernet116": { + "index": "34,34,34,34", + "lanes": "113,114,115,116", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet34" + ] + } + }, + "Ethernet120": { + "index": "35,35,35,35", + "lanes": "1,2,3,4", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet35" + ] + } + }, + "Ethernet124": { + "index": "36,36,36,36", + "lanes": "5,6,7,8", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet36" + ] + } + } + } +} diff --git a/device/arista/x86_64-arista_7050_qx32s/td2-a7050qx-32s-flex.config.bcm b/device/arista/x86_64-arista_7050_qx32s/td2-a7050qx-32s-flex.config.bcm new file mode 100644 index 000000000000..db021ab4bffe --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/td2-a7050qx-32s-flex.config.bcm @@ -0,0 +1,839 @@ +# ALPM enable +l3_alpm_enable=2 +ipv6_lpm_128b_enable=1 +l2_mem_entries=32768 +l3_mem_entries=16384 + +# From old config file +os=unix +higig2_hdr_mode=1 + +# Parity +parity_correction=1 +parity_enable=1 +stat_if_parity_enable=0 + +# l2 thread related config vars +l2xmsg_hostbuf_size=8192 +l2xmsg_mode=1 + +bcm_num_cos=10 +bcm_stat_interval=2000000 +lls_num_l2uc=12 +max_vp_lags=0 +miim_intr_enable=0 +mmu_lossless=0 +module_64ports=0 + +stable_size=0x2000000 + +schan_intr_enable=0 +tdma_timeout_usec=5000000 +tslam_timeout_usec=15000000 +cdma_timeout_usec=15000000 +dma_desc_timeout_usec=15000000 + +############################### +serdes_fiber_pref=1 +############################### +mdio_output_delay=0x0d +############################### +xgxs_lcpll_xtal_refclk=1 +tdma_intr_enable=1 +tslam_intr_enable=1 +table_dma_enable=1 + +pbmp_oversubscribe.0=0x1fffffffffffffffffffffffffe +pbmp_xport_xe.0=0x1fffffffffffffffffffffffffe +phy_an_c37_1.0=3 +phy_an_c37_2.0=3 +phy_an_c37_3.0=3 +phy_an_c37_4.0=3 +phy_an_c37_5.0=3 +phy_an_c37_6.0=3 +phy_an_c37_7.0=3 +phy_an_c37_8.0=3 +phy_an_c37_9.0=3 +phy_an_c37_10.0=3 +phy_an_c37_11.0=3 +phy_an_c37_12.0=3 +phy_an_c37_13.0=3 +phy_an_c37_14.0=3 +phy_an_c37_15.0=3 +phy_an_c37_16.0=3 +phy_an_c37_17.0=3 +phy_an_c37_18.0=3 +phy_an_c37_19.0=3 +phy_an_c37_20.0=3 +phy_an_c37_21.0=3 +phy_an_c37_22.0=3 +phy_an_c37_23.0=3 +phy_an_c37_24.0=3 +phy_an_c37_25.0=3 +phy_an_c37_26.0=3 +phy_an_c37_27.0=3 +phy_an_c37_28.0=3 +phy_an_c37_29.0=3 +phy_an_c37_30.0=3 +phy_an_c37_31.0=3 +phy_an_c37_32.0=3 +phy_an_c37_33.0=3 +phy_an_c37_34.0=3 +phy_an_c37_35.0=3 +phy_an_c37_36.0=3 +phy_an_c37_37.0=3 +phy_an_c37_38.0=3 +phy_an_c37_39.0=3 +phy_an_c37_40.0=3 +phy_an_c37_41.0=3 +phy_an_c37_42.0=3 +phy_an_c37_43.0=3 +phy_an_c37_44.0=3 +phy_an_c37_45.0=3 +phy_an_c37_46.0=3 +phy_an_c37_47.0=3 +phy_an_c37_48.0=3 +phy_an_c37_49.0=3 +phy_an_c37_50.0=3 +phy_an_c37_51.0=3 +phy_an_c37_52.0=3 +phy_an_c37_53.0=3 +phy_an_c37_54.0=3 +phy_an_c37_55.0=3 +phy_an_c37_56.0=3 +phy_an_c37_57.0=3 +phy_an_c37_58.0=3 +phy_an_c37_59.0=3 +phy_an_c37_60.0=3 +phy_an_c37_61.0=3 +phy_an_c37_62.0=3 +phy_an_c37_63.0=3 +phy_an_c37_64.0=3 +phy_an_c37_65.0=3 +phy_an_c37_66.0=3 +phy_an_c37_67.0=3 +phy_an_c37_68.0=3 +phy_an_c37_69.0=3 +phy_an_c37_70.0=3 +phy_an_c37_71.0=3 +phy_an_c37_72.0=3 +phy_an_c37_73.0=3 +phy_an_c37_74.0=3 +phy_an_c37_75.0=3 +phy_an_c37_76.0=3 +phy_an_c37_77.0=3 +phy_an_c37_78.0=3 +phy_an_c37_79.0=3 +phy_an_c37_80.0=3 +phy_an_c37_81.0=3 +phy_an_c37_82.0=3 +phy_an_c37_83.0=3 +phy_an_c37_84.0=3 +phy_an_c37_85.0=3 +phy_an_c37_86.0=3 +phy_an_c37_87.0=3 +phy_an_c37_88.0=3 +phy_an_c37_89.0=3 +phy_an_c37_90.0=3 +phy_an_c37_91.0=3 +phy_an_c37_92.0=3 +phy_an_c37_93.0=3 +phy_an_c37_94.0=3 +phy_an_c37_95.0=3 +phy_an_c37_96.0=3 +phy_an_c37_97.0=0 +phy_an_c37_98.0=0 +phy_an_c37_99.0=0 +phy_an_c37_100.0=0 +phy_an_c37_101.0=0 +phy_an_c37_102.0=0 +phy_an_c37_103.0=0 +phy_an_c37_104.0=0 +phy_an_c73_1.0=0 +phy_an_c73_2.0=0 +phy_an_c73_3.0=0 +phy_an_c73_4.0=0 +phy_an_c73_5.0=0 +phy_an_c73_6.0=0 +phy_an_c73_7.0=0 +phy_an_c73_8.0=0 +phy_an_c73_9.0=0 +phy_an_c73_10.0=0 +phy_an_c73_11.0=0 +phy_an_c73_12.0=0 +phy_an_c73_13.0=0 +phy_an_c73_14.0=0 +phy_an_c73_15.0=0 +phy_an_c73_16.0=0 +phy_an_c73_17.0=0 +phy_an_c73_18.0=0 +phy_an_c73_19.0=0 +phy_an_c73_20.0=0 +phy_an_c73_21.0=0 +phy_an_c73_22.0=0 +phy_an_c73_23.0=0 +phy_an_c73_24.0=0 +phy_an_c73_25.0=0 +phy_an_c73_26.0=0 +phy_an_c73_27.0=0 +phy_an_c73_28.0=0 +phy_an_c73_29.0=0 +phy_an_c73_30.0=0 +phy_an_c73_31.0=0 +phy_an_c73_32.0=0 +phy_an_c73_33.0=0 +phy_an_c73_34.0=0 +phy_an_c73_35.0=0 +phy_an_c73_36.0=0 +phy_an_c73_37.0=0 +phy_an_c73_38.0=0 +phy_an_c73_39.0=0 +phy_an_c73_40.0=0 +phy_an_c73_41.0=0 +phy_an_c73_42.0=0 +phy_an_c73_43.0=0 +phy_an_c73_44.0=0 +phy_an_c73_45.0=0 +phy_an_c73_46.0=0 +phy_an_c73_47.0=0 +phy_an_c73_48.0=0 +phy_an_c73_49.0=0 +phy_an_c73_50.0=0 +phy_an_c73_51.0=0 +phy_an_c73_52.0=0 +phy_an_c73_53.0=0 +phy_an_c73_54.0=0 +phy_an_c73_55.0=0 +phy_an_c73_56.0=0 +phy_an_c73_57.0=0 +phy_an_c73_58.0=0 +phy_an_c73_59.0=0 +phy_an_c73_60.0=0 +phy_an_c73_61.0=0 +phy_an_c73_62.0=0 +phy_an_c73_63.0=0 +phy_an_c73_64.0=0 +phy_an_c73_65.0=0 +phy_an_c73_66.0=0 +phy_an_c73_67.0=0 +phy_an_c73_68.0=0 +phy_an_c73_69.0=0 +phy_an_c73_70.0=0 +phy_an_c73_71.0=0 +phy_an_c73_72.0=0 +phy_an_c73_73.0=0 +phy_an_c73_74.0=0 +phy_an_c73_75.0=0 +phy_an_c73_76.0=0 +phy_an_c73_77.0=0 +phy_an_c73_78.0=0 +phy_an_c73_79.0=0 +phy_an_c73_80.0=0 +phy_an_c73_81.0=0 +phy_an_c73_82.0=0 +phy_an_c73_83.0=0 +phy_an_c73_84.0=0 +phy_an_c73_85.0=0 +phy_an_c73_86.0=0 +phy_an_c73_87.0=0 +phy_an_c73_88.0=0 +phy_an_c73_89.0=0 +phy_an_c73_90.0=0 +phy_an_c73_91.0=0 +phy_an_c73_92.0=0 +phy_an_c73_93.0=0 +phy_an_c73_94.0=0 +phy_an_c73_95.0=0 +phy_an_c73_96.0=0 +phy_an_c73_97.0=2 +phy_an_c73_98.0=2 +phy_an_c73_99.0=2 +phy_an_c73_100.0=2 +phy_an_c73_101.0=2 +phy_an_c73_102.0=2 +phy_an_c73_103.0=2 +phy_an_c73_104.0=2 +phy_xaui_rx_polarity_flip_1.0=0x0 +phy_xaui_rx_polarity_flip_2.0=0x0 +phy_xaui_rx_polarity_flip_3.0=0x0 +phy_xaui_rx_polarity_flip_4.0=0x0 +phy_xaui_rx_polarity_flip_5.0=0x0 +phy_xaui_rx_polarity_flip_6.0=0x0 +phy_xaui_rx_polarity_flip_7.0=0x0 +phy_xaui_rx_polarity_flip_8.0=0x0 +phy_xaui_rx_polarity_flip_9.0=0x0 +phy_xaui_rx_polarity_flip_10.0=0x0 +phy_xaui_rx_polarity_flip_11.0=0x1 +phy_xaui_rx_polarity_flip_12.0=0x0 +phy_xaui_rx_polarity_flip_13.0=0x0 +phy_xaui_rx_polarity_flip_14.0=0x0 +phy_xaui_rx_polarity_flip_15.0=0x0 +phy_xaui_rx_polarity_flip_16.0=0x0 +phy_xaui_rx_polarity_flip_17.0=0x1 +phy_xaui_rx_polarity_flip_18.0=0x1 +phy_xaui_rx_polarity_flip_19.0=0x0 +phy_xaui_rx_polarity_flip_20.0=0x1 +phy_xaui_rx_polarity_flip_21.0=0x1 +phy_xaui_rx_polarity_flip_22.0=0x1 +phy_xaui_rx_polarity_flip_23.0=0x0 +phy_xaui_rx_polarity_flip_24.0=0x0 +phy_xaui_rx_polarity_flip_25.0=0x1 +phy_xaui_rx_polarity_flip_26.0=0x1 +phy_xaui_rx_polarity_flip_27.0=0x0 +phy_xaui_rx_polarity_flip_28.0=0x1 +phy_xaui_rx_polarity_flip_29.0=0x1 +phy_xaui_rx_polarity_flip_30.0=0x1 +phy_xaui_rx_polarity_flip_31.0=0x1 +phy_xaui_rx_polarity_flip_32.0=0x1 +phy_xaui_rx_polarity_flip_33.0=0x1 +phy_xaui_rx_polarity_flip_34.0=0x1 +phy_xaui_rx_polarity_flip_35.0=0x0 +phy_xaui_rx_polarity_flip_36.0=0x1 +phy_xaui_rx_polarity_flip_37.0=0x1 +phy_xaui_rx_polarity_flip_38.0=0x1 +phy_xaui_rx_polarity_flip_39.0=0x0 +phy_xaui_rx_polarity_flip_40.0=0x0 +phy_xaui_rx_polarity_flip_41.0=0x1 +phy_xaui_rx_polarity_flip_42.0=0x1 +phy_xaui_rx_polarity_flip_43.0=0x0 +phy_xaui_rx_polarity_flip_44.0=0x1 +phy_xaui_rx_polarity_flip_45.0=0x0 +phy_xaui_rx_polarity_flip_46.0=0x0 +phy_xaui_rx_polarity_flip_47.0=0x0 +phy_xaui_rx_polarity_flip_48.0=0x0 +phy_xaui_rx_polarity_flip_49.0=0x0 +phy_xaui_rx_polarity_flip_50.0=0x0 +phy_xaui_rx_polarity_flip_51.0=0x1 +phy_xaui_rx_polarity_flip_52.0=0x0 +phy_xaui_rx_polarity_flip_53.0=0x0 +phy_xaui_rx_polarity_flip_54.0=0x0 +phy_xaui_rx_polarity_flip_55.0=0x1 +phy_xaui_rx_polarity_flip_56.0=0x1 +phy_xaui_rx_polarity_flip_57.0=0x0 +phy_xaui_rx_polarity_flip_58.0=0x0 +phy_xaui_rx_polarity_flip_59.0=0x1 +phy_xaui_rx_polarity_flip_60.0=0x0 +phy_xaui_rx_polarity_flip_61.0=0x0 +phy_xaui_rx_polarity_flip_62.0=0x0 +phy_xaui_rx_polarity_flip_63.0=0x0 +phy_xaui_rx_polarity_flip_64.0=0x0 +phy_xaui_rx_polarity_flip_65.0=0x1 +phy_xaui_rx_polarity_flip_66.0=0x1 +phy_xaui_rx_polarity_flip_67.0=0x0 +phy_xaui_rx_polarity_flip_68.0=0x1 +phy_xaui_rx_polarity_flip_69.0=0x1 +phy_xaui_rx_polarity_flip_70.0=0x1 +phy_xaui_rx_polarity_flip_71.0=0x0 +phy_xaui_rx_polarity_flip_72.0=0x0 +phy_xaui_rx_polarity_flip_73.0=0x1 +phy_xaui_rx_polarity_flip_74.0=0x1 +phy_xaui_rx_polarity_flip_75.0=0x0 +phy_xaui_rx_polarity_flip_76.0=0x1 +phy_xaui_rx_polarity_flip_77.0=0x1 +phy_xaui_rx_polarity_flip_78.0=0x1 +phy_xaui_rx_polarity_flip_79.0=0x1 +phy_xaui_rx_polarity_flip_80.0=0x1 +phy_xaui_rx_polarity_flip_81.0=0x1 +phy_xaui_rx_polarity_flip_82.0=0x1 +phy_xaui_rx_polarity_flip_83.0=0x0 +phy_xaui_rx_polarity_flip_84.0=0x1 +phy_xaui_rx_polarity_flip_85.0=0x1 +phy_xaui_rx_polarity_flip_86.0=0x1 +phy_xaui_rx_polarity_flip_87.0=0x0 +phy_xaui_rx_polarity_flip_88.0=0x0 +phy_xaui_rx_polarity_flip_89.0=0x0 +phy_xaui_rx_polarity_flip_90.0=0x0 +phy_xaui_rx_polarity_flip_91.0=0x1 +phy_xaui_rx_polarity_flip_92.0=0x0 +phy_xaui_rx_polarity_flip_93.0=0x0 +phy_xaui_rx_polarity_flip_94.0=0x0 +phy_xaui_rx_polarity_flip_95.0=0x0 +phy_xaui_rx_polarity_flip_96.0=0x0 +phy_xaui_rx_polarity_flip_97.0=0xb +phy_xaui_rx_polarity_flip_98.0=0x3 +phy_xaui_rx_polarity_flip_99.0=0x4 +phy_xaui_rx_polarity_flip_100.0=0x0 +phy_xaui_rx_polarity_flip_101.0=0x0 +phy_xaui_rx_polarity_flip_102.0=0xe +phy_xaui_rx_polarity_flip_103.0=0x0 +phy_xaui_rx_polarity_flip_104.0=0x0 +phy_xaui_tx_polarity_flip_1.0=0x0 +phy_xaui_tx_polarity_flip_2.0=0x0 +phy_xaui_tx_polarity_flip_3.0=0x0 +phy_xaui_tx_polarity_flip_4.0=0x0 +phy_xaui_tx_polarity_flip_5.0=0x0 +phy_xaui_tx_polarity_flip_6.0=0x0 +phy_xaui_tx_polarity_flip_7.0=0x0 +phy_xaui_tx_polarity_flip_8.0=0x0 +phy_xaui_tx_polarity_flip_9.0=0x0 +phy_xaui_tx_polarity_flip_10.0=0x1 +phy_xaui_tx_polarity_flip_11.0=0x0 +phy_xaui_tx_polarity_flip_12.0=0x0 +phy_xaui_tx_polarity_flip_13.0=0x0 +phy_xaui_tx_polarity_flip_14.0=0x0 +phy_xaui_tx_polarity_flip_15.0=0x0 +phy_xaui_tx_polarity_flip_16.0=0x0 +phy_xaui_tx_polarity_flip_17.0=0x1 +phy_xaui_tx_polarity_flip_18.0=0x0 +phy_xaui_tx_polarity_flip_19.0=0x1 +phy_xaui_tx_polarity_flip_20.0=0x1 +phy_xaui_tx_polarity_flip_21.0=0x0 +phy_xaui_tx_polarity_flip_22.0=0x0 +phy_xaui_tx_polarity_flip_23.0=0x1 +phy_xaui_tx_polarity_flip_24.0=0x1 +phy_xaui_tx_polarity_flip_25.0=0x1 +phy_xaui_tx_polarity_flip_26.0=0x0 +phy_xaui_tx_polarity_flip_27.0=0x1 +phy_xaui_tx_polarity_flip_28.0=0x1 +phy_xaui_tx_polarity_flip_29.0=0x1 +phy_xaui_tx_polarity_flip_30.0=0x1 +phy_xaui_tx_polarity_flip_31.0=0x1 +phy_xaui_tx_polarity_flip_32.0=0x1 +phy_xaui_tx_polarity_flip_33.0=0x1 +phy_xaui_tx_polarity_flip_34.0=0x0 +phy_xaui_tx_polarity_flip_35.0=0x1 +phy_xaui_tx_polarity_flip_36.0=0x1 +phy_xaui_tx_polarity_flip_37.0=0x0 +phy_xaui_tx_polarity_flip_38.0=0x0 +phy_xaui_tx_polarity_flip_39.0=0x1 +phy_xaui_tx_polarity_flip_40.0=0x1 +phy_xaui_tx_polarity_flip_41.0=0x1 +phy_xaui_tx_polarity_flip_42.0=0x0 +phy_xaui_tx_polarity_flip_43.0=0x1 +phy_xaui_tx_polarity_flip_44.0=0x1 +phy_xaui_tx_polarity_flip_45.0=0x0 +phy_xaui_tx_polarity_flip_46.0=0x0 +phy_xaui_tx_polarity_flip_47.0=0x0 +phy_xaui_tx_polarity_flip_48.0=0x0 +phy_xaui_tx_polarity_flip_49.0=0x0 +phy_xaui_tx_polarity_flip_50.0=0x1 +phy_xaui_tx_polarity_flip_51.0=0x0 +phy_xaui_tx_polarity_flip_52.0=0x0 +phy_xaui_tx_polarity_flip_53.0=0x1 +phy_xaui_tx_polarity_flip_54.0=0x1 +phy_xaui_tx_polarity_flip_55.0=0x0 +phy_xaui_tx_polarity_flip_56.0=0x0 +phy_xaui_tx_polarity_flip_57.0=0x0 +phy_xaui_tx_polarity_flip_58.0=0x1 +phy_xaui_tx_polarity_flip_59.0=0x0 +phy_xaui_tx_polarity_flip_60.0=0x0 +phy_xaui_tx_polarity_flip_61.0=0x0 +phy_xaui_tx_polarity_flip_62.0=0x0 +phy_xaui_tx_polarity_flip_63.0=0x0 +phy_xaui_tx_polarity_flip_64.0=0x0 +phy_xaui_tx_polarity_flip_65.0=0x1 +phy_xaui_tx_polarity_flip_66.0=0x0 +phy_xaui_tx_polarity_flip_67.0=0x1 +phy_xaui_tx_polarity_flip_68.0=0x1 +phy_xaui_tx_polarity_flip_69.0=0x0 +phy_xaui_tx_polarity_flip_70.0=0x0 +phy_xaui_tx_polarity_flip_71.0=0x1 +phy_xaui_tx_polarity_flip_72.0=0x1 +phy_xaui_tx_polarity_flip_73.0=0x1 +phy_xaui_tx_polarity_flip_74.0=0x0 +phy_xaui_tx_polarity_flip_75.0=0x1 +phy_xaui_tx_polarity_flip_76.0=0x1 +phy_xaui_tx_polarity_flip_77.0=0x1 +phy_xaui_tx_polarity_flip_78.0=0x1 +phy_xaui_tx_polarity_flip_79.0=0x1 +phy_xaui_tx_polarity_flip_80.0=0x1 +phy_xaui_tx_polarity_flip_81.0=0x1 +phy_xaui_tx_polarity_flip_82.0=0x0 +phy_xaui_tx_polarity_flip_83.0=0x1 +phy_xaui_tx_polarity_flip_84.0=0x1 +phy_xaui_tx_polarity_flip_85.0=0x0 +phy_xaui_tx_polarity_flip_86.0=0x0 +phy_xaui_tx_polarity_flip_87.0=0x1 +phy_xaui_tx_polarity_flip_88.0=0x1 +phy_xaui_tx_polarity_flip_89.0=0x0 +phy_xaui_tx_polarity_flip_90.0=0x1 +phy_xaui_tx_polarity_flip_91.0=0x0 +phy_xaui_tx_polarity_flip_92.0=0x0 +phy_xaui_tx_polarity_flip_93.0=0x0 +phy_xaui_tx_polarity_flip_94.0=0x0 +phy_xaui_tx_polarity_flip_95.0=0x0 +phy_xaui_tx_polarity_flip_96.0=0x0 +phy_xaui_tx_polarity_flip_97.0=0xd +phy_xaui_tx_polarity_flip_98.0=0xc +phy_xaui_tx_polarity_flip_99.0=0x2 +phy_xaui_tx_polarity_flip_100.0=0x0 +phy_xaui_tx_polarity_flip_101.0=0x0 +phy_xaui_tx_polarity_flip_102.0=0x7 +phy_xaui_tx_polarity_flip_103.0=0x2 +phy_xaui_tx_polarity_flip_104.0=0x0 +port_init_autoneg_1.0=0 +port_init_autoneg_2.0=0 +port_init_autoneg_3.0=0 +port_init_autoneg_4.0=0 +port_init_autoneg_5.0=0 +port_init_autoneg_6.0=0 +port_init_autoneg_7.0=0 +port_init_autoneg_8.0=0 +port_init_autoneg_9.0=0 +port_init_autoneg_10.0=0 +port_init_autoneg_11.0=0 +port_init_autoneg_12.0=0 +port_init_autoneg_13.0=0 +port_init_autoneg_14.0=0 +port_init_autoneg_15.0=0 +port_init_autoneg_16.0=0 +port_init_autoneg_17.0=0 +port_init_autoneg_18.0=0 +port_init_autoneg_19.0=0 +port_init_autoneg_20.0=0 +port_init_autoneg_21.0=0 +port_init_autoneg_22.0=0 +port_init_autoneg_23.0=0 +port_init_autoneg_24.0=0 +port_init_autoneg_25.0=0 +port_init_autoneg_26.0=0 +port_init_autoneg_27.0=0 +port_init_autoneg_28.0=0 +port_init_autoneg_29.0=0 +port_init_autoneg_30.0=0 +port_init_autoneg_31.0=0 +port_init_autoneg_32.0=0 +port_init_autoneg_33.0=0 +port_init_autoneg_34.0=0 +port_init_autoneg_35.0=0 +port_init_autoneg_36.0=0 +port_init_autoneg_37.0=0 +port_init_autoneg_38.0=0 +port_init_autoneg_39.0=0 +port_init_autoneg_40.0=0 +port_init_autoneg_41.0=0 +port_init_autoneg_42.0=0 +port_init_autoneg_43.0=0 +port_init_autoneg_44.0=0 +port_init_autoneg_45.0=0 +port_init_autoneg_46.0=0 +port_init_autoneg_47.0=0 +port_init_autoneg_48.0=0 +port_init_autoneg_49.0=0 +port_init_autoneg_50.0=0 +port_init_autoneg_51.0=0 +port_init_autoneg_52.0=0 +port_init_autoneg_53.0=0 +port_init_autoneg_54.0=0 +port_init_autoneg_55.0=0 +port_init_autoneg_56.0=0 +port_init_autoneg_57.0=0 +port_init_autoneg_58.0=0 +port_init_autoneg_59.0=0 +port_init_autoneg_60.0=0 +port_init_autoneg_61.0=0 +port_init_autoneg_62.0=0 +port_init_autoneg_63.0=0 +port_init_autoneg_64.0=0 +port_init_autoneg_65.0=0 +port_init_autoneg_66.0=0 +port_init_autoneg_67.0=0 +port_init_autoneg_68.0=0 +port_init_autoneg_69.0=0 +port_init_autoneg_70.0=0 +port_init_autoneg_71.0=0 +port_init_autoneg_72.0=0 +port_init_autoneg_73.0=0 +port_init_autoneg_74.0=0 +port_init_autoneg_75.0=0 +port_init_autoneg_76.0=0 +port_init_autoneg_77.0=0 +port_init_autoneg_78.0=0 +port_init_autoneg_79.0=0 +port_init_autoneg_80.0=0 +port_init_autoneg_81.0=0 +port_init_autoneg_82.0=0 +port_init_autoneg_83.0=0 +port_init_autoneg_84.0=0 +port_init_autoneg_85.0=0 +port_init_autoneg_86.0=0 +port_init_autoneg_87.0=0 +port_init_autoneg_88.0=0 +port_init_autoneg_89.0=0 +port_init_autoneg_90.0=0 +port_init_autoneg_91.0=0 +port_init_autoneg_92.0=0 +port_init_autoneg_93.0=0 +port_init_autoneg_94.0=0 +port_init_autoneg_95.0=0 +port_init_autoneg_96.0=0 +port_init_autoneg_97.0=0 +port_init_autoneg_98.0=0 +port_init_autoneg_99.0=0 +port_init_autoneg_100.0=0 +port_init_autoneg_101.0=0 +port_init_autoneg_102.0=0 +port_init_autoneg_103.0=0 +port_init_autoneg_104.0=0 +portmap_1.0=9:40 +portmap_2.0=10:10:i +portmap_3.0=11:10:i +portmap_4.0=12:10:i +portmap_5.0=13:40 +portmap_6.0=14:10:i +portmap_7.0=15:10:i +portmap_8.0=16:10:i +portmap_9.0=17:40 +portmap_10.0=18:10:i +portmap_11.0=19:10:i +portmap_12.0=20:10:i +portmap_13.0=21:40 +portmap_14.0=22:10:i +portmap_15.0=23:10:i +portmap_16.0=24:10:i +portmap_17.0=29:40 +portmap_18.0=30:10:i +portmap_19.0=31:10:i +portmap_20.0=32:10:i +portmap_21.0=25:40 +portmap_22.0=26:10:i +portmap_23.0=27:10:i +portmap_24.0=28:10:i +portmap_25.0=33:40 +portmap_26.0=34:10:i +portmap_27.0=35:10:i +portmap_28.0=36:10:i +portmap_29.0=37:40 +portmap_30.0=38:10:i +portmap_31.0=39:10:i +portmap_32.0=40:10:i +portmap_33.0=45:40 +portmap_34.0=46:10:i +portmap_35.0=47:10:i +portmap_36.0=48:10:i +portmap_37.0=41:40 +portmap_38.0=42:10:i +portmap_39.0=43:10:i +portmap_40.0=44:10:i +portmap_41.0=49:40 +portmap_42.0=50:10:i +portmap_43.0=51:10:i +portmap_44.0=52:10:i +portmap_45.0=53:40 +portmap_46.0=54:10:i +portmap_47.0=55:10:i +portmap_48.0=56:10:i +portmap_49.0=69:40 +portmap_50.0=70:10:i +portmap_51.0=71:10:i +portmap_52.0=72:10:i +portmap_53.0=65:40 +portmap_54.0=66:10:i +portmap_55.0=67:10:i +portmap_56.0=68:10:i +portmap_57.0=73:40 +portmap_58.0=74:10:i +portmap_59.0=75:10:i +portmap_60.0=76:10:i +portmap_61.0=77:40 +portmap_62.0=78:10:i +portmap_63.0=79:10:i +portmap_64.0=80:10:i +portmap_65.0=93:40 +portmap_66.0=94:10:i +portmap_67.0=95:10:i +portmap_68.0=96:10:i +portmap_69.0=89:40 +portmap_70.0=90:10:i +portmap_71.0=91:10:i +portmap_72.0=92:10:i +portmap_73.0=97:40 +portmap_74.0=98:10:i +portmap_75.0=99:10:i +portmap_76.0=100:10:i +portmap_77.0=101:40 +portmap_78.0=102:10:i +portmap_79.0=103:10:i +portmap_80.0=104:10:i +portmap_81.0=109:40 +portmap_82.0=110:10:i +portmap_83.0=111:10:i +portmap_84.0=112:10:i +portmap_85.0=105:40 +portmap_86.0=106:10:i +portmap_87.0=107:10:i +portmap_88.0=108:10:i +portmap_89.0=121:40 +portmap_90.0=122:10:i +portmap_91.0=123:10:i +portmap_92.0=124:10:i +portmap_93.0=125:40 +portmap_94.0=126:10:i +portmap_95.0=127:10:i +portmap_96.0=128:10:i +portmap_97.0=61:40 +portmap_98.0=57:40 +portmap_99.0=81:40 +portmap_100.0=85:40 +portmap_101.0=117:40 +portmap_102.0=113:40 +portmap_103.0=1:40 +portmap_104.0=5:40 +serdes_firmware_mode_1.0=2 +serdes_firmware_mode_2.0=2 +serdes_firmware_mode_3.0=2 +serdes_firmware_mode_4.0=2 +serdes_firmware_mode_5.0=2 +serdes_firmware_mode_6.0=2 +serdes_firmware_mode_7.0=2 +serdes_firmware_mode_8.0=2 +serdes_firmware_mode_9.0=2 +serdes_firmware_mode_10.0=2 +serdes_firmware_mode_11.0=2 +serdes_firmware_mode_12.0=2 +serdes_firmware_mode_13.0=2 +serdes_firmware_mode_14.0=2 +serdes_firmware_mode_15.0=2 +serdes_firmware_mode_16.0=2 +serdes_firmware_mode_17.0=2 +serdes_firmware_mode_18.0=2 +serdes_firmware_mode_19.0=2 +serdes_firmware_mode_20.0=2 +serdes_firmware_mode_21.0=2 +serdes_firmware_mode_22.0=2 +serdes_firmware_mode_23.0=2 +serdes_firmware_mode_24.0=2 +serdes_firmware_mode_25.0=2 +serdes_firmware_mode_26.0=2 +serdes_firmware_mode_27.0=2 +serdes_firmware_mode_28.0=2 +serdes_firmware_mode_29.0=2 +serdes_firmware_mode_30.0=2 +serdes_firmware_mode_31.0=2 +serdes_firmware_mode_32.0=2 +serdes_firmware_mode_33.0=2 +serdes_firmware_mode_34.0=2 +serdes_firmware_mode_35.0=2 +serdes_firmware_mode_36.0=2 +serdes_firmware_mode_37.0=2 +serdes_firmware_mode_38.0=2 +serdes_firmware_mode_39.0=2 +serdes_firmware_mode_40.0=2 +serdes_firmware_mode_41.0=2 +serdes_firmware_mode_42.0=2 +serdes_firmware_mode_43.0=2 +serdes_firmware_mode_44.0=2 +serdes_firmware_mode_45.0=2 +serdes_firmware_mode_46.0=2 +serdes_firmware_mode_47.0=2 +serdes_firmware_mode_48.0=2 +serdes_firmware_mode_49.0=2 +serdes_firmware_mode_50.0=2 +serdes_firmware_mode_51.0=2 +serdes_firmware_mode_52.0=2 +serdes_firmware_mode_53.0=2 +serdes_firmware_mode_54.0=2 +serdes_firmware_mode_55.0=2 +serdes_firmware_mode_56.0=2 +serdes_firmware_mode_57.0=2 +serdes_firmware_mode_58.0=2 +serdes_firmware_mode_59.0=2 +serdes_firmware_mode_60.0=2 +serdes_firmware_mode_61.0=2 +serdes_firmware_mode_62.0=2 +serdes_firmware_mode_63.0=2 +serdes_firmware_mode_64.0=2 +serdes_firmware_mode_65.0=2 +serdes_firmware_mode_66.0=2 +serdes_firmware_mode_67.0=2 +serdes_firmware_mode_68.0=2 +serdes_firmware_mode_69.0=2 +serdes_firmware_mode_70.0=2 +serdes_firmware_mode_71.0=2 +serdes_firmware_mode_72.0=2 +serdes_firmware_mode_73.0=2 +serdes_firmware_mode_74.0=2 +serdes_firmware_mode_75.0=2 +serdes_firmware_mode_76.0=2 +serdes_firmware_mode_77.0=2 +serdes_firmware_mode_78.0=2 +serdes_firmware_mode_79.0=2 +serdes_firmware_mode_80.0=2 +serdes_firmware_mode_81.0=2 +serdes_firmware_mode_82.0=2 +serdes_firmware_mode_83.0=2 +serdes_firmware_mode_84.0=2 +serdes_firmware_mode_85.0=2 +serdes_firmware_mode_86.0=2 +serdes_firmware_mode_87.0=2 +serdes_firmware_mode_88.0=2 +serdes_firmware_mode_89.0=2 +serdes_firmware_mode_90.0=2 +serdes_firmware_mode_91.0=2 +serdes_firmware_mode_92.0=2 +serdes_firmware_mode_93.0=2 +serdes_firmware_mode_94.0=2 +serdes_firmware_mode_95.0=2 +serdes_firmware_mode_96.0=2 +serdes_firmware_mode_97.0=2 +serdes_firmware_mode_98.0=2 +serdes_firmware_mode_99.0=2 +serdes_firmware_mode_100.0=2 +serdes_firmware_mode_101.0=2 +serdes_firmware_mode_102.0=2 +serdes_firmware_mode_103.0=2 +serdes_firmware_mode_104.0=2 +xgxs_rx_lane_map_1.0=0x3210 +xgxs_rx_lane_map_5.0=0x0321 +xgxs_rx_lane_map_9.0=0x1302 +xgxs_rx_lane_map_13.0=0x0213 +xgxs_rx_lane_map_17.0=0x1302 +xgxs_rx_lane_map_21.0=0x1302 +xgxs_rx_lane_map_25.0=0x1302 +xgxs_rx_lane_map_29.0=0x0213 +xgxs_rx_lane_map_33.0=0x1302 +xgxs_rx_lane_map_37.0=0x1302 +xgxs_rx_lane_map_41.0=0x1302 +xgxs_rx_lane_map_45.0=0x0213 +xgxs_rx_lane_map_49.0=0x1302 +xgxs_rx_lane_map_53.0=0x1302 +xgxs_rx_lane_map_57.0=0x1302 +xgxs_rx_lane_map_61.0=0x0213 +xgxs_rx_lane_map_65.0=0x1302 +xgxs_rx_lane_map_69.0=0x1302 +xgxs_rx_lane_map_73.0=0x1302 +xgxs_rx_lane_map_77.0=0x0213 +xgxs_rx_lane_map_81.0=0x1302 +xgxs_rx_lane_map_85.0=0x1302 +xgxs_rx_lane_map_89.0=0x1302 +xgxs_rx_lane_map_93.0=0x0213 +xgxs_rx_lane_map_97.0=0x1302 +xgxs_rx_lane_map_98.0=0x1302 +xgxs_rx_lane_map_99.0=0x1302 +xgxs_rx_lane_map_100.0=0x0213 +xgxs_rx_lane_map_101.0=0x0213 +xgxs_rx_lane_map_102.0=0x1302 +xgxs_rx_lane_map_103.0=0x0123 +xgxs_rx_lane_map_104.0=0x2031 +xgxs_tx_lane_map_1.0=0x0123 +xgxs_tx_lane_map_5.0=0x0321 +xgxs_tx_lane_map_9.0=0x2031 +xgxs_tx_lane_map_13.0=0x0213 +xgxs_tx_lane_map_17.0=0x2031 +xgxs_tx_lane_map_21.0=0x2031 +xgxs_tx_lane_map_25.0=0x2031 +xgxs_tx_lane_map_29.0=0x0213 +xgxs_tx_lane_map_33.0=0x2031 +xgxs_tx_lane_map_37.0=0x2031 +xgxs_tx_lane_map_41.0=0x2031 +xgxs_tx_lane_map_45.0=0x0213 +xgxs_tx_lane_map_49.0=0x2031 +xgxs_tx_lane_map_53.0=0x2031 +xgxs_tx_lane_map_57.0=0x2031 +xgxs_tx_lane_map_61.0=0x0213 +xgxs_tx_lane_map_65.0=0x2031 +xgxs_tx_lane_map_69.0=0x2031 +xgxs_tx_lane_map_73.0=0x2031 +xgxs_tx_lane_map_77.0=0x0213 +xgxs_tx_lane_map_81.0=0x2031 +xgxs_tx_lane_map_85.0=0x2031 +xgxs_tx_lane_map_89.0=0x2031 +xgxs_tx_lane_map_93.0=0x0213 +xgxs_tx_lane_map_97.0=0x2031 +xgxs_tx_lane_map_98.0=0x2031 +xgxs_tx_lane_map_99.0=0x2031 +xgxs_tx_lane_map_100.0=0x0213 +xgxs_tx_lane_map_101.0=0x0213 +xgxs_tx_lane_map_102.0=0x2031 +xgxs_tx_lane_map_103.0=0x3120 +xgxs_tx_lane_map_104.0=0x1302 diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/hwsku.json b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/hwsku.json new file mode 100644 index 000000000000..45f3379c2fe6 --- /dev/null +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/hwsku.json @@ -0,0 +1,106 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet4": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet8": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet12": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet16": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet20": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet24": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet28": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet36": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet40": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet44": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet48": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet52": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet56": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet60": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet64": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet68": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet72": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet76": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet80": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet84": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet88": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet92": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet96": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet100": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet104": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet108": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet112": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet116": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet120": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet124": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet128": { + "default_brkout_mode": "1x10G" + }, + "Ethernet132": { + "default_brkout_mode": "1x10G" + } + } +} \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/port_config.ini b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/port_config.ini new file mode 100644 index 000000000000..4b96b8cf87c9 --- /dev/null +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/port_config.ini @@ -0,0 +1,35 @@ +# name lanes alias index speed +Ethernet0 1,2,3,4 Ethernet1/1 1 100000 +Ethernet4 5,6,7,8 Ethernet2/1 2 100000 +Ethernet8 9,10,11,12 Ethernet3/1 3 100000 +Ethernet12 13,14,15,16 Ethernet4/1 4 100000 +Ethernet16 21,22,23,24 Ethernet5/1 5 100000 +Ethernet20 17,18,19,20 Ethernet6/1 6 100000 +Ethernet24 25,26,27,28 Ethernet7/1 7 100000 +Ethernet28 29,30,31,32 Ethernet8/1 8 100000 +Ethernet32 37,38,39,40 Ethernet9/1 9 100000 +Ethernet36 33,34,35,36 Ethernet10/1 10 100000 +Ethernet40 41,42,43,44 Ethernet11/1 11 100000 +Ethernet44 45,46,47,48 Ethernet12/1 12 100000 +Ethernet48 53,54,55,56 Ethernet13/1 13 100000 +Ethernet52 49,50,51,52 Ethernet14/1 14 100000 +Ethernet56 57,58,59,60 Ethernet15/1 15 100000 +Ethernet60 61,62,63,64 Ethernet16/1 16 100000 +Ethernet64 69,70,71,72 Ethernet17/1 17 100000 +Ethernet68 65,66,67,68 Ethernet18/1 18 100000 +Ethernet72 73,74,75,76 Ethernet19/1 19 100000 +Ethernet76 77,78,79,80 Ethernet20/1 20 100000 +Ethernet80 85,86,87,88 Ethernet21/1 21 100000 +Ethernet84 81,82,83,84 Ethernet22/1 22 100000 +Ethernet88 89,90,91,92 Ethernet23/1 23 100000 +Ethernet92 93,94,95,96 Ethernet24/1 24 100000 +Ethernet96 101,102,103,104 Ethernet25/1 25 100000 +Ethernet100 97,98,99,100 Ethernet26/1 26 100000 +Ethernet104 105,106,107,108 Ethernet27/1 27 100000 +Ethernet108 109,110,111,112 Ethernet28/1 28 100000 +Ethernet112 117,118,119,120 Ethernet29/1 29 100000 +Ethernet116 113,114,115,116 Ethernet30/1 30 100000 +Ethernet120 121,122,123,124 Ethernet31/1 31 100000 +Ethernet124 125,126,127,128 Ethernet32/1 32 100000 +Ethernet128 129 Ethernet33 33 10000 +Ethernet132 128 Ethernet34 34 10000 diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/sai.profile b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/sai.profile new file mode 100644 index 000000000000..2ea1c26e0c45 --- /dev/null +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/sai.profile @@ -0,0 +1,2 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/td3-a7050cx3-32s-flex.config.bcm +SAI_NUM_ECMP_MEMBERS=64 diff --git a/device/arista/x86_64-arista_7050cx3_32s/platform.json b/device/arista/x86_64-arista_7050cx3_32s/platform.json index 632747ad2333..6a417e320e6c 100644 --- a/device/arista/x86_64-arista_7050cx3_32s/platform.json +++ b/device/arista/x86_64-arista_7050cx3_32s/platform.json @@ -187,5 +187,632 @@ } ] }, - "interfaces": {} + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1", + "lanes": "1,2,3,4", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet1/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/3" + ], + "4x25G[10G]": [ + "Ethernet1/1", + "Ethernet1/2", + "Ethernet1/3", + "Ethernet1/4" + ] + } + }, + "Ethernet4": { + "index": "2,2,2,2", + "lanes": "5,6,7,8", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet2/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/3" + ], + "4x25G[10G]": [ + "Ethernet2/1", + "Ethernet2/2", + "Ethernet2/3", + "Ethernet2/4" + ] + } + }, + "Ethernet8": { + "index": "3,3,3,3", + "lanes": "9,10,11,12", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet3/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/3" + ], + "4x25G[10G]": [ + "Ethernet3/1", + "Ethernet3/2", + "Ethernet3/3", + "Ethernet3/4" + ] + } + }, + "Ethernet12": { + "index": "4,4,4,4", + "lanes": "13,14,15,16", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet4/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/3" + ], + "4x25G[10G]": [ + "Ethernet4/1", + "Ethernet4/2", + "Ethernet4/3", + "Ethernet4/4" + ] + } + }, + "Ethernet16": { + "index": "5,5,5,5", + "lanes": "21,22,23,24", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet5/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/3" + ], + "4x25G[10G]": [ + "Ethernet5/1", + "Ethernet5/2", + "Ethernet5/3", + "Ethernet5/4" + ] + } + }, + "Ethernet20": { + "index": "6,6,6,6", + "lanes": "17,18,19,20", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet6/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/3" + ], + "4x25G[10G]": [ + "Ethernet6/1", + "Ethernet6/2", + "Ethernet6/3", + "Ethernet6/4" + ] + } + }, + "Ethernet24": { + "index": "7,7,7,7", + "lanes": "25,26,27,28", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet7/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/3" + ], + "4x25G[10G]": [ + "Ethernet7/1", + "Ethernet7/2", + "Ethernet7/3", + "Ethernet7/4" + ] + } + }, + "Ethernet28": { + "index": "8,8,8,8", + "lanes": "29,30,31,32", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet8/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/3" + ], + "4x25G[10G]": [ + "Ethernet8/1", + "Ethernet8/2", + "Ethernet8/3", + "Ethernet8/4" + ] + } + }, + "Ethernet32": { + "index": "9,9,9,9", + "lanes": "37,38,39,40", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet9/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/3" + ], + "4x25G[10G]": [ + "Ethernet9/1", + "Ethernet9/2", + "Ethernet9/3", + "Ethernet9/4" + ] + } + }, + "Ethernet36": { + "index": "10,10,10,10", + "lanes": "33,34,35,36", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet10/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/3" + ], + "4x25G[10G]": [ + "Ethernet10/1", + "Ethernet10/2", + "Ethernet10/3", + "Ethernet10/4" + ] + } + }, + "Ethernet40": { + "index": "11,11,11,11", + "lanes": "41,42,43,44", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet11/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/3" + ], + "4x25G[10G]": [ + "Ethernet11/1", + "Ethernet11/2", + "Ethernet11/3", + "Ethernet11/4" + ] + } + }, + "Ethernet44": { + "index": "12,12,12,12", + "lanes": "45,46,47,48", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet12/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/3" + ], + "4x25G[10G]": [ + "Ethernet12/1", + "Ethernet12/2", + "Ethernet12/3", + "Ethernet12/4" + ] + } + }, + "Ethernet48": { + "index": "13,13,13,13", + "lanes": "53,54,55,56", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet13/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/3" + ], + "4x25G[10G]": [ + "Ethernet13/1", + "Ethernet13/2", + "Ethernet13/3", + "Ethernet13/4" + ] + } + }, + "Ethernet52": { + "index": "14,14,14,14", + "lanes": "49,50,51,52", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet14/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/3" + ], + "4x25G[10G]": [ + "Ethernet14/1", + "Ethernet14/2", + "Ethernet14/3", + "Ethernet14/4" + ] + } + }, + "Ethernet56": { + "index": "15,15,15,15", + "lanes": "57,58,59,60", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet15/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/3" + ], + "4x25G[10G]": [ + "Ethernet15/1", + "Ethernet15/2", + "Ethernet15/3", + "Ethernet15/4" + ] + } + }, + "Ethernet60": { + "index": "16,16,16,16", + "lanes": "61,62,63,64", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet16/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/3" + ], + "4x25G[10G]": [ + "Ethernet16/1", + "Ethernet16/2", + "Ethernet16/3", + "Ethernet16/4" + ] + } + }, + "Ethernet64": { + "index": "17,17,17,17", + "lanes": "69,70,71,72", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet17/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/3" + ], + "4x25G[10G]": [ + "Ethernet17/1", + "Ethernet17/2", + "Ethernet17/3", + "Ethernet17/4" + ] + } + }, + "Ethernet68": { + "index": "18,18,18,18", + "lanes": "65,66,67,68", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet18/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/3" + ], + "4x25G[10G]": [ + "Ethernet18/1", + "Ethernet18/2", + "Ethernet18/3", + "Ethernet18/4" + ] + } + }, + "Ethernet72": { + "index": "19,19,19,19", + "lanes": "73,74,75,76", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet19/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/3" + ], + "4x25G[10G]": [ + "Ethernet19/1", + "Ethernet19/2", + "Ethernet19/3", + "Ethernet19/4" + ] + } + }, + "Ethernet76": { + "index": "20,20,20,20", + "lanes": "77,78,79,80", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet20/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/3" + ], + "4x25G[10G]": [ + "Ethernet20/1", + "Ethernet20/2", + "Ethernet20/3", + "Ethernet20/4" + ] + } + }, + "Ethernet80": { + "index": "21,21,21,21", + "lanes": "85,86,87,88", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet21/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/3" + ], + "4x25G[10G]": [ + "Ethernet21/1", + "Ethernet21/2", + "Ethernet21/3", + "Ethernet21/4" + ] + } + }, + "Ethernet84": { + "index": "22,22,22,22", + "lanes": "81,82,83,84", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet22/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/3" + ], + "4x25G[10G]": [ + "Ethernet22/1", + "Ethernet22/2", + "Ethernet22/3", + "Ethernet22/4" + ] + } + }, + "Ethernet88": { + "index": "23,23,23,23", + "lanes": "89,90,91,92", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet23/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/3" + ], + "4x25G[10G]": [ + "Ethernet23/1", + "Ethernet23/2", + "Ethernet23/3", + "Ethernet23/4" + ] + } + }, + "Ethernet92": { + "index": "24,24,24,24", + "lanes": "93,94,95,96", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet24/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/3" + ], + "4x25G[10G]": [ + "Ethernet24/1", + "Ethernet24/2", + "Ethernet24/3", + "Ethernet24/4" + ] + } + }, + "Ethernet96": { + "index": "25,25,25,25", + "lanes": "101,102,103,104", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet25/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/3" + ], + "4x25G[10G]": [ + "Ethernet25/1", + "Ethernet25/2", + "Ethernet25/3", + "Ethernet25/4" + ] + } + }, + "Ethernet100": { + "index": "26,26,26,26", + "lanes": "97,98,99,100", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet26/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/3" + ], + "4x25G[10G]": [ + "Ethernet26/1", + "Ethernet26/2", + "Ethernet26/3", + "Ethernet26/4" + ] + } + }, + "Ethernet104": { + "index": "27,27,27,27", + "lanes": "105,106,107,108", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet27/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/3" + ], + "4x25G[10G]": [ + "Ethernet27/1", + "Ethernet27/2", + "Ethernet27/3", + "Ethernet27/4" + ] + } + }, + "Ethernet108": { + "index": "28,28,28,28", + "lanes": "109,110,111,112", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet28/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/3" + ], + "4x25G[10G]": [ + "Ethernet28/1", + "Ethernet28/2", + "Ethernet28/3", + "Ethernet28/4" + ] + } + }, + "Ethernet112": { + "index": "29,29,29,29", + "lanes": "117,118,119,120", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet29/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/3" + ], + "4x25G[10G]": [ + "Ethernet29/1", + "Ethernet29/2", + "Ethernet29/3", + "Ethernet29/4" + ] + } + }, + "Ethernet116": { + "index": "30,30,30,30", + "lanes": "113,114,115,116", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet30/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/3" + ], + "4x25G[10G]": [ + "Ethernet30/1", + "Ethernet30/2", + "Ethernet30/3", + "Ethernet30/4" + ] + } + }, + "Ethernet120": { + "index": "31,31,31,31", + "lanes": "121,122,123,124", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet31/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/3" + ], + "4x25G[10G]": [ + "Ethernet31/1", + "Ethernet31/2", + "Ethernet31/3", + "Ethernet31/4" + ] + } + }, + "Ethernet124": { + "index": "32,32,32,32", + "lanes": "125,126,127,128", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet32/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/3" + ], + "4x25G[10G]": [ + "Ethernet32/1", + "Ethernet32/2", + "Ethernet32/3", + "Ethernet32/4" + ] + } + }, + "Ethernet128": { + "index": "33", + "lanes": "129", + "breakout_modes": { + "1x10G": [ + "Ethernet33" + ] + } + }, + "Ethernet132": { + "index": "34", + "lanes": "128", + "breakout_modes": { + "1x10G": [ + "Ethernet34" + ] + } + } + } } \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050cx3_32s/td3-a7050cx3-32s-flex.config.bcm b/device/arista/x86_64-arista_7050cx3_32s/td3-a7050cx3-32s-flex.config.bcm new file mode 100644 index 000000000000..29ecbf08ccee --- /dev/null +++ b/device/arista/x86_64-arista_7050cx3_32s/td3-a7050cx3-32s-flex.config.bcm @@ -0,0 +1,468 @@ +PHY_AN_ALLOW_PLL_CHANGE=1 +arl_clean_timeout_usec=15000000 +asf_mem_profile=2 +bcm_num_cos=8 +bcm_stat_flags=1 +bcm_stat_jumbo=9236 +bcm_tunnel_term_compatible_mode=1 +cdma_timeout_usec=15000000 +core_clock_frequency=1525 +dma_desc_timeout_usec=15000000 +dpp_clock_ratio=2:3 +flow_init_mode=1 +fpem_mem_entries=0 +higig2_hdr_mode=1 +host_as_route_disable=1 +ifp_inports_support_enable=1 +ipv6_lpm_128b_enable=0 +l2xmsg_mode=1 +l2_mem_entries=32768 +l3_alpm_enable=2 +l3_ecmp_levels=3 +l3_max_ecmp_mode=1 +l3_mem_entries=16384 +max_vp_lags=0 +miim_intr_enable=0 +module_64ports=1 +multicast_l2_range=16383 +multicast_l3_range=0 +os=unix +oversubscribe_mode=1 +pbmp_xport_xe=0x4888888888888888c2222222222222222 +phy_an_c37_66=2 +phy_an_c37_130=2 +phy_an_c73=0 +phy_chain_rx_lane_map_physical{1.0}=0x1302 +phy_chain_rx_lane_map_physical{5.0}=0x3120 +phy_chain_rx_lane_map_physical{9.0}=0x3120 +phy_chain_rx_lane_map_physical{13.0}=0x3120 +phy_chain_rx_lane_map_physical{17.0}=0x1203 +phy_chain_rx_lane_map_physical{21.0}=0x3120 +phy_chain_rx_lane_map_physical{25.0}=0x3120 +phy_chain_rx_lane_map_physical{29.0}=0x3120 +phy_chain_rx_lane_map_physical{33.0}=0x1203 +phy_chain_rx_lane_map_physical{37.0}=0x3120 +phy_chain_rx_lane_map_physical{41.0}=0x3120 +phy_chain_rx_lane_map_physical{45.0}=0x3120 +phy_chain_rx_lane_map_physical{49.0}=0x1203 +phy_chain_rx_lane_map_physical{53.0}=0x3120 +phy_chain_rx_lane_map_physical{57.0}=0x3120 +phy_chain_rx_lane_map_physical{61.0}=0x3120 +phy_chain_rx_lane_map_physical{65.0}=0x2130 +phy_chain_rx_lane_map_physical{69.0}=0x0213 +phy_chain_rx_lane_map_physical{73.0}=0x2031 +phy_chain_rx_lane_map_physical{77.0}=0x0213 +phy_chain_rx_lane_map_physical{81.0}=0x2130 +phy_chain_rx_lane_map_physical{85.0}=0x0213 +phy_chain_rx_lane_map_physical{89.0}=0x2031 +phy_chain_rx_lane_map_physical{93.0}=0x0213 +phy_chain_rx_lane_map_physical{97.0}=0x2130 +phy_chain_rx_lane_map_physical{101.0}=0x0213 +phy_chain_rx_lane_map_physical{105.0}=0x2031 +phy_chain_rx_lane_map_physical{109.0}=0x0213 +phy_chain_rx_lane_map_physical{113.0}=0x2130 +phy_chain_rx_lane_map_physical{117.0}=0x0213 +phy_chain_rx_lane_map_physical{121.0}=0x2031 +phy_chain_rx_lane_map_physical{125.0}=0x0213 +phy_chain_rx_lane_map_physical{129.0}=0x3210 +phy_chain_rx_polarity_flip_physical{1.0}=0x0 +phy_chain_rx_polarity_flip_physical{2.0}=0x0 +phy_chain_rx_polarity_flip_physical{3.0}=0x0 +phy_chain_rx_polarity_flip_physical{4.0}=0x1 +phy_chain_rx_polarity_flip_physical{5.0}=0x0 +phy_chain_rx_polarity_flip_physical{6.0}=0x1 +phy_chain_rx_polarity_flip_physical{7.0}=0x0 +phy_chain_rx_polarity_flip_physical{8.0}=0x0 +phy_chain_rx_polarity_flip_physical{9.0}=0x0 +phy_chain_rx_polarity_flip_physical{10.0}=0x0 +phy_chain_rx_polarity_flip_physical{11.0}=0x1 +phy_chain_rx_polarity_flip_physical{12.0}=0x1 +phy_chain_rx_polarity_flip_physical{13.0}=0x1 +phy_chain_rx_polarity_flip_physical{14.0}=0x1 +phy_chain_rx_polarity_flip_physical{15.0}=0x0 +phy_chain_rx_polarity_flip_physical{16.0}=0x0 +phy_chain_rx_polarity_flip_physical{17.0}=0x0 +phy_chain_rx_polarity_flip_physical{18.0}=0x0 +phy_chain_rx_polarity_flip_physical{19.0}=0x1 +phy_chain_rx_polarity_flip_physical{20.0}=0x0 +phy_chain_rx_polarity_flip_physical{21.0}=0x1 +phy_chain_rx_polarity_flip_physical{22.0}=0x1 +phy_chain_rx_polarity_flip_physical{23.0}=0x0 +phy_chain_rx_polarity_flip_physical{24.0}=0x0 +phy_chain_rx_polarity_flip_physical{25.0}=0x0 +phy_chain_rx_polarity_flip_physical{26.0}=0x1 +phy_chain_rx_polarity_flip_physical{27.0}=0x1 +phy_chain_rx_polarity_flip_physical{28.0}=0x0 +phy_chain_rx_polarity_flip_physical{29.0}=0x1 +phy_chain_rx_polarity_flip_physical{30.0}=0x1 +phy_chain_rx_polarity_flip_physical{31.0}=0x0 +phy_chain_rx_polarity_flip_physical{32.0}=0x0 +phy_chain_rx_polarity_flip_physical{33.0}=0x0 +phy_chain_rx_polarity_flip_physical{34.0}=0x0 +phy_chain_rx_polarity_flip_physical{35.0}=0x1 +phy_chain_rx_polarity_flip_physical{36.0}=0x0 +phy_chain_rx_polarity_flip_physical{37.0}=0x1 +phy_chain_rx_polarity_flip_physical{38.0}=0x1 +phy_chain_rx_polarity_flip_physical{39.0}=0x0 +phy_chain_rx_polarity_flip_physical{40.0}=0x0 +phy_chain_rx_polarity_flip_physical{41.0}=0x0 +phy_chain_rx_polarity_flip_physical{42.0}=0x0 +phy_chain_rx_polarity_flip_physical{43.0}=0x1 +phy_chain_rx_polarity_flip_physical{44.0}=0x1 +phy_chain_rx_polarity_flip_physical{45.0}=0x1 +phy_chain_rx_polarity_flip_physical{46.0}=0x1 +phy_chain_rx_polarity_flip_physical{47.0}=0x0 +phy_chain_rx_polarity_flip_physical{48.0}=0x0 +phy_chain_rx_polarity_flip_physical{49.0}=0x0 +phy_chain_rx_polarity_flip_physical{50.0}=0x0 +phy_chain_rx_polarity_flip_physical{51.0}=0x1 +phy_chain_rx_polarity_flip_physical{52.0}=0x0 +phy_chain_rx_polarity_flip_physical{53.0}=0x1 +phy_chain_rx_polarity_flip_physical{54.0}=0x1 +phy_chain_rx_polarity_flip_physical{55.0}=0x0 +phy_chain_rx_polarity_flip_physical{56.0}=0x0 +phy_chain_rx_polarity_flip_physical{57.0}=0x0 +phy_chain_rx_polarity_flip_physical{58.0}=0x0 +phy_chain_rx_polarity_flip_physical{59.0}=0x1 +phy_chain_rx_polarity_flip_physical{60.0}=0x1 +phy_chain_rx_polarity_flip_physical{61.0}=0x1 +phy_chain_rx_polarity_flip_physical{62.0}=0x1 +phy_chain_rx_polarity_flip_physical{63.0}=0x0 +phy_chain_rx_polarity_flip_physical{64.0}=0x0 +phy_chain_rx_polarity_flip_physical{65.0}=0x1 +phy_chain_rx_polarity_flip_physical{66.0}=0x1 +phy_chain_rx_polarity_flip_physical{67.0}=0x0 +phy_chain_rx_polarity_flip_physical{68.0}=0x1 +phy_chain_rx_polarity_flip_physical{69.0}=0x0 +phy_chain_rx_polarity_flip_physical{70.0}=0x0 +phy_chain_rx_polarity_flip_physical{71.0}=0x1 +phy_chain_rx_polarity_flip_physical{72.0}=0x1 +phy_chain_rx_polarity_flip_physical{73.0}=0x1 +phy_chain_rx_polarity_flip_physical{74.0}=0x1 +phy_chain_rx_polarity_flip_physical{75.0}=0x1 +phy_chain_rx_polarity_flip_physical{76.0}=0x0 +phy_chain_rx_polarity_flip_physical{77.0}=0x0 +phy_chain_rx_polarity_flip_physical{78.0}=0x0 +phy_chain_rx_polarity_flip_physical{79.0}=0x1 +phy_chain_rx_polarity_flip_physical{80.0}=0x1 +phy_chain_rx_polarity_flip_physical{81.0}=0x1 +phy_chain_rx_polarity_flip_physical{82.0}=0x1 +phy_chain_rx_polarity_flip_physical{83.0}=0x0 +phy_chain_rx_polarity_flip_physical{84.0}=0x1 +phy_chain_rx_polarity_flip_physical{85.0}=0x0 +phy_chain_rx_polarity_flip_physical{86.0}=0x0 +phy_chain_rx_polarity_flip_physical{87.0}=0x1 +phy_chain_rx_polarity_flip_physical{88.0}=0x1 +phy_chain_rx_polarity_flip_physical{89.0}=0x1 +phy_chain_rx_polarity_flip_physical{90.0}=0x1 +phy_chain_rx_polarity_flip_physical{91.0}=0x1 +phy_chain_rx_polarity_flip_physical{92.0}=0x0 +phy_chain_rx_polarity_flip_physical{93.0}=0x0 +phy_chain_rx_polarity_flip_physical{94.0}=0x0 +phy_chain_rx_polarity_flip_physical{95.0}=0x1 +phy_chain_rx_polarity_flip_physical{96.0}=0x1 +phy_chain_rx_polarity_flip_physical{97.0}=0x1 +phy_chain_rx_polarity_flip_physical{98.0}=0x1 +phy_chain_rx_polarity_flip_physical{99.0}=0x0 +phy_chain_rx_polarity_flip_physical{100.0}=0x1 +phy_chain_rx_polarity_flip_physical{101.0}=0x1 +phy_chain_rx_polarity_flip_physical{102.0}=0x0 +phy_chain_rx_polarity_flip_physical{103.0}=0x0 +phy_chain_rx_polarity_flip_physical{104.0}=0x1 +phy_chain_rx_polarity_flip_physical{105.0}=0x1 +phy_chain_rx_polarity_flip_physical{106.0}=0x1 +phy_chain_rx_polarity_flip_physical{107.0}=0x1 +phy_chain_rx_polarity_flip_physical{108.0}=0x0 +phy_chain_rx_polarity_flip_physical{109.0}=0x0 +phy_chain_rx_polarity_flip_physical{110.0}=0x0 +phy_chain_rx_polarity_flip_physical{111.0}=0x1 +phy_chain_rx_polarity_flip_physical{112.0}=0x1 +phy_chain_rx_polarity_flip_physical{113.0}=0x1 +phy_chain_rx_polarity_flip_physical{114.0}=0x1 +phy_chain_rx_polarity_flip_physical{115.0}=0x0 +phy_chain_rx_polarity_flip_physical{116.0}=0x1 +phy_chain_rx_polarity_flip_physical{117.0}=0x0 +phy_chain_rx_polarity_flip_physical{118.0}=0x0 +phy_chain_rx_polarity_flip_physical{119.0}=0x1 +phy_chain_rx_polarity_flip_physical{120.0}=0x1 +phy_chain_rx_polarity_flip_physical{121.0}=0x1 +phy_chain_rx_polarity_flip_physical{122.0}=0x1 +phy_chain_rx_polarity_flip_physical{123.0}=0x1 +phy_chain_rx_polarity_flip_physical{124.0}=0x0 +phy_chain_rx_polarity_flip_physical{125.0}=0x0 +phy_chain_rx_polarity_flip_physical{126.0}=0x0 +phy_chain_rx_polarity_flip_physical{127.0}=0x1 +phy_chain_rx_polarity_flip_physical{128.0}=0x1 +phy_chain_rx_polarity_flip_physical{129.0}=0x0 +phy_chain_tx_lane_map_physical{1.0}=0x3021 +phy_chain_tx_lane_map_physical{5.0}=0x1203 +phy_chain_tx_lane_map_physical{9.0}=0x0213 +phy_chain_tx_lane_map_physical{13.0}=0x0213 +phy_chain_tx_lane_map_physical{17.0}=0x2031 +phy_chain_tx_lane_map_physical{21.0}=0x0213 +phy_chain_tx_lane_map_physical{25.0}=0x2031 +phy_chain_tx_lane_map_physical{29.0}=0x1203 +phy_chain_tx_lane_map_physical{33.0}=0x2031 +phy_chain_tx_lane_map_physical{37.0}=0x0213 +phy_chain_tx_lane_map_physical{41.0}=0x2031 +phy_chain_tx_lane_map_physical{45.0}=0x1203 +phy_chain_tx_lane_map_physical{49.0}=0x2031 +phy_chain_tx_lane_map_physical{53.0}=0x0213 +phy_chain_tx_lane_map_physical{57.0}=0x2031 +phy_chain_tx_lane_map_physical{61.0}=0x1203 +phy_chain_tx_lane_map_physical{65.0}=0x1302 +phy_chain_tx_lane_map_physical{69.0}=0x1302 +phy_chain_tx_lane_map_physical{73.0}=0x1302 +phy_chain_tx_lane_map_physical{77.0}=0x2130 +phy_chain_tx_lane_map_physical{81.0}=0x1302 +phy_chain_tx_lane_map_physical{85.0}=0x3120 +phy_chain_tx_lane_map_physical{89.0}=0x1302 +phy_chain_tx_lane_map_physical{93.0}=0x2130 +phy_chain_tx_lane_map_physical{97.0}=0x1302 +phy_chain_tx_lane_map_physical{101.0}=0x3120 +phy_chain_tx_lane_map_physical{105.0}=0x1302 +phy_chain_tx_lane_map_physical{109.0}=0x2130 +phy_chain_tx_lane_map_physical{113.0}=0x1302 +phy_chain_tx_lane_map_physical{117.0}=0x3120 +phy_chain_tx_lane_map_physical{121.0}=0x1302 +phy_chain_tx_lane_map_physical{125.0}=0x3120 +phy_chain_tx_lane_map_physical{129.0}=0x3210 +phy_chain_tx_polarity_flip_physical{1.0}=0x1 +phy_chain_tx_polarity_flip_physical{2.0}=0x1 +phy_chain_tx_polarity_flip_physical{3.0}=0x0 +phy_chain_tx_polarity_flip_physical{4.0}=0x0 +phy_chain_tx_polarity_flip_physical{5.0}=0x1 +phy_chain_tx_polarity_flip_physical{6.0}=0x1 +phy_chain_tx_polarity_flip_physical{7.0}=0x0 +phy_chain_tx_polarity_flip_physical{8.0}=0x1 +phy_chain_tx_polarity_flip_physical{9.0}=0x1 +phy_chain_tx_polarity_flip_physical{10.0}=0x1 +phy_chain_tx_polarity_flip_physical{11.0}=0x0 +phy_chain_tx_polarity_flip_physical{12.0}=0x0 +phy_chain_tx_polarity_flip_physical{13.0}=0x1 +phy_chain_tx_polarity_flip_physical{14.0}=0x1 +phy_chain_tx_polarity_flip_physical{15.0}=0x0 +phy_chain_tx_polarity_flip_physical{16.0}=0x1 +phy_chain_tx_polarity_flip_physical{17.0}=0x0 +phy_chain_tx_polarity_flip_physical{18.0}=0x0 +phy_chain_tx_polarity_flip_physical{19.0}=0x0 +phy_chain_tx_polarity_flip_physical{20.0}=0x0 +phy_chain_tx_polarity_flip_physical{21.0}=0x1 +phy_chain_tx_polarity_flip_physical{22.0}=0x1 +phy_chain_tx_polarity_flip_physical{23.0}=0x0 +phy_chain_tx_polarity_flip_physical{24.0}=0x0 +phy_chain_tx_polarity_flip_physical{25.0}=0x0 +phy_chain_tx_polarity_flip_physical{26.0}=0x0 +phy_chain_tx_polarity_flip_physical{27.0}=0x1 +phy_chain_tx_polarity_flip_physical{28.0}=0x0 +phy_chain_tx_polarity_flip_physical{29.0}=0x0 +phy_chain_tx_polarity_flip_physical{30.0}=0x0 +phy_chain_tx_polarity_flip_physical{31.0}=0x1 +phy_chain_tx_polarity_flip_physical{32.0}=0x1 +phy_chain_tx_polarity_flip_physical{33.0}=0x1 +phy_chain_tx_polarity_flip_physical{34.0}=0x1 +phy_chain_tx_polarity_flip_physical{35.0}=0x1 +phy_chain_tx_polarity_flip_physical{36.0}=0x1 +phy_chain_tx_polarity_flip_physical{37.0}=0x0 +phy_chain_tx_polarity_flip_physical{38.0}=0x0 +phy_chain_tx_polarity_flip_physical{39.0}=0x1 +phy_chain_tx_polarity_flip_physical{40.0}=0x1 +phy_chain_tx_polarity_flip_physical{41.0}=0x0 +phy_chain_tx_polarity_flip_physical{42.0}=0x1 +phy_chain_tx_polarity_flip_physical{43.0}=0x1 +phy_chain_tx_polarity_flip_physical{44.0}=0x1 +phy_chain_tx_polarity_flip_physical{45.0}=0x0 +phy_chain_tx_polarity_flip_physical{46.0}=0x0 +phy_chain_tx_polarity_flip_physical{47.0}=0x1 +phy_chain_tx_polarity_flip_physical{48.0}=0x1 +phy_chain_tx_polarity_flip_physical{49.0}=0x1 +phy_chain_tx_polarity_flip_physical{50.0}=0x1 +phy_chain_tx_polarity_flip_physical{51.0}=0x1 +phy_chain_tx_polarity_flip_physical{52.0}=0x1 +phy_chain_tx_polarity_flip_physical{53.0}=0x0 +phy_chain_tx_polarity_flip_physical{54.0}=0x0 +phy_chain_tx_polarity_flip_physical{55.0}=0x1 +phy_chain_tx_polarity_flip_physical{56.0}=0x1 +phy_chain_tx_polarity_flip_physical{57.0}=0x0 +phy_chain_tx_polarity_flip_physical{58.0}=0x1 +phy_chain_tx_polarity_flip_physical{59.0}=0x1 +phy_chain_tx_polarity_flip_physical{60.0}=0x1 +phy_chain_tx_polarity_flip_physical{61.0}=0x0 +phy_chain_tx_polarity_flip_physical{62.0}=0x0 +phy_chain_tx_polarity_flip_physical{63.0}=0x1 +phy_chain_tx_polarity_flip_physical{64.0}=0x1 +phy_chain_tx_polarity_flip_physical{65.0}=0x1 +phy_chain_tx_polarity_flip_physical{66.0}=0x1 +phy_chain_tx_polarity_flip_physical{67.0}=0x1 +phy_chain_tx_polarity_flip_physical{68.0}=0x1 +phy_chain_tx_polarity_flip_physical{69.0}=0x0 +phy_chain_tx_polarity_flip_physical{70.0}=0x1 +phy_chain_tx_polarity_flip_physical{71.0}=0x1 +phy_chain_tx_polarity_flip_physical{72.0}=0x1 +phy_chain_tx_polarity_flip_physical{73.0}=0x0 +phy_chain_tx_polarity_flip_physical{74.0}=0x1 +phy_chain_tx_polarity_flip_physical{75.0}=0x1 +phy_chain_tx_polarity_flip_physical{76.0}=0x1 +phy_chain_tx_polarity_flip_physical{77.0}=0x0 +phy_chain_tx_polarity_flip_physical{78.0}=0x0 +phy_chain_tx_polarity_flip_physical{79.0}=0x1 +phy_chain_tx_polarity_flip_physical{80.0}=0x1 +phy_chain_tx_polarity_flip_physical{81.0}=0x1 +phy_chain_tx_polarity_flip_physical{82.0}=0x1 +phy_chain_tx_polarity_flip_physical{83.0}=0x1 +phy_chain_tx_polarity_flip_physical{84.0}=0x1 +phy_chain_tx_polarity_flip_physical{85.0}=0x0 +phy_chain_tx_polarity_flip_physical{86.0}=0x0 +phy_chain_tx_polarity_flip_physical{87.0}=0x1 +phy_chain_tx_polarity_flip_physical{88.0}=0x1 +phy_chain_tx_polarity_flip_physical{89.0}=0x0 +phy_chain_tx_polarity_flip_physical{90.0}=0x1 +phy_chain_tx_polarity_flip_physical{91.0}=0x1 +phy_chain_tx_polarity_flip_physical{92.0}=0x1 +phy_chain_tx_polarity_flip_physical{93.0}=0x0 +phy_chain_tx_polarity_flip_physical{94.0}=0x0 +phy_chain_tx_polarity_flip_physical{95.0}=0x1 +phy_chain_tx_polarity_flip_physical{96.0}=0x1 +phy_chain_tx_polarity_flip_physical{97.0}=0x1 +phy_chain_tx_polarity_flip_physical{98.0}=0x1 +phy_chain_tx_polarity_flip_physical{99.0}=0x1 +phy_chain_tx_polarity_flip_physical{100.0}=0x1 +phy_chain_tx_polarity_flip_physical{101.0}=0x0 +phy_chain_tx_polarity_flip_physical{102.0}=0x1 +phy_chain_tx_polarity_flip_physical{103.0}=0x1 +phy_chain_tx_polarity_flip_physical{104.0}=0x0 +phy_chain_tx_polarity_flip_physical{105.0}=0x1 +phy_chain_tx_polarity_flip_physical{106.0}=0x0 +phy_chain_tx_polarity_flip_physical{107.0}=0x0 +phy_chain_tx_polarity_flip_physical{108.0}=0x0 +phy_chain_tx_polarity_flip_physical{109.0}=0x1 +phy_chain_tx_polarity_flip_physical{110.0}=0x1 +phy_chain_tx_polarity_flip_physical{111.0}=0x0 +phy_chain_tx_polarity_flip_physical{112.0}=0x0 +phy_chain_tx_polarity_flip_physical{113.0}=0x0 +phy_chain_tx_polarity_flip_physical{114.0}=0x0 +phy_chain_tx_polarity_flip_physical{115.0}=0x0 +phy_chain_tx_polarity_flip_physical{116.0}=0x0 +phy_chain_tx_polarity_flip_physical{117.0}=0x1 +phy_chain_tx_polarity_flip_physical{118.0}=0x1 +phy_chain_tx_polarity_flip_physical{119.0}=0x0 +phy_chain_tx_polarity_flip_physical{120.0}=0x0 +phy_chain_tx_polarity_flip_physical{121.0}=0x1 +phy_chain_tx_polarity_flip_physical{122.0}=0x0 +phy_chain_tx_polarity_flip_physical{123.0}=0x0 +phy_chain_tx_polarity_flip_physical{124.0}=0x0 +phy_chain_tx_polarity_flip_physical{125.0}=0x1 +phy_chain_tx_polarity_flip_physical{126.0}=0x1 +phy_chain_tx_polarity_flip_physical{127.0}=0x0 +phy_chain_tx_polarity_flip_physical{128.0}=0x0 +phy_chain_tx_polarity_flip_physical{129.0}=0x0 +portmap_1=1:100 +portmap_5=5:100 +portmap_9=9:100 +portmap_13=13:100 +portmap_17=17:100 +portmap_21=21:100 +portmap_25=25:100 +portmap_29=29:100 +portmap_33=33:100 +portmap_37=37:100 +portmap_41=41:100 +portmap_45=45:100 +portmap_49=49:100 +portmap_53=53:100 +portmap_57=57:100 +portmap_61=61:100 +portmap_66=129:10:m +portmap_67=65:100 +portmap_71=69:100 +portmap_75=73:100 +portmap_79=77:100 +portmap_83=81:100 +portmap_87=85:100 +portmap_91=89:100 +portmap_95=93:100 +portmap_99=97:100 +portmap_103=101:100 +portmap_107=105:100 +portmap_111=109:100 +portmap_115=113:100 +portmap_119=117:100 +portmap_123=121:100 +portmap_127=125:100 +portmap_130=128:10:m +port_flex_enable=1 +port_phy_addr=0xff +robust_hash_disable_egress_vlan=1 +robust_hash_disable_mpls=1 +robust_hash_disable_vlan=1 +sai_load_hw_config=/etc/bcm/flex/bcm56870_a0_issu/b870.6.4.1/ +sai_tunnel_support=1 +serdes_core_rx_polarity_flip_physical{1}=0x8 +serdes_core_rx_polarity_flip_physical{5}=0x2 +serdes_core_rx_polarity_flip_physical{9}=0xc +serdes_core_rx_polarity_flip_physical{13}=0x3 +serdes_core_rx_polarity_flip_physical{17}=0x4 +serdes_core_rx_polarity_flip_physical{21}=0x3 +serdes_core_rx_polarity_flip_physical{25}=0x6 +serdes_core_rx_polarity_flip_physical{29}=0x3 +serdes_core_rx_polarity_flip_physical{33}=0x4 +serdes_core_rx_polarity_flip_physical{37}=0x3 +serdes_core_rx_polarity_flip_physical{41}=0xc +serdes_core_rx_polarity_flip_physical{45}=0x3 +serdes_core_rx_polarity_flip_physical{49}=0x4 +serdes_core_rx_polarity_flip_physical{53}=0x3 +serdes_core_rx_polarity_flip_physical{57}=0xc +serdes_core_rx_polarity_flip_physical{61}=0x3 +serdes_core_rx_polarity_flip_physical{65}=0xb +serdes_core_rx_polarity_flip_physical{69}=0xc +serdes_core_rx_polarity_flip_physical{73}=0x7 +serdes_core_rx_polarity_flip_physical{77}=0xc +serdes_core_rx_polarity_flip_physical{81}=0xb +serdes_core_rx_polarity_flip_physical{85}=0xc +serdes_core_rx_polarity_flip_physical{89}=0x7 +serdes_core_rx_polarity_flip_physical{93}=0xc +serdes_core_rx_polarity_flip_physical{97}=0xb +serdes_core_rx_polarity_flip_physical{101}=0x9 +serdes_core_rx_polarity_flip_physical{105}=0x7 +serdes_core_rx_polarity_flip_physical{109}=0xc +serdes_core_rx_polarity_flip_physical{113}=0xb +serdes_core_rx_polarity_flip_physical{117}=0xc +serdes_core_rx_polarity_flip_physical{121}=0x7 +serdes_core_rx_polarity_flip_physical{125}=0xc +serdes_core_rx_polarity_flip_physical{129}=0x0 +serdes_core_tx_polarity_flip_physical{1}=0x3 +serdes_core_tx_polarity_flip_physical{5}=0xb +serdes_core_tx_polarity_flip_physical{9}=0x3 +serdes_core_tx_polarity_flip_physical{13}=0xb +serdes_core_tx_polarity_flip_physical{17}=0x0 +serdes_core_tx_polarity_flip_physical{21}=0x3 +serdes_core_tx_polarity_flip_physical{25}=0x4 +serdes_core_tx_polarity_flip_physical{29}=0xc +serdes_core_tx_polarity_flip_physical{33}=0xf +serdes_core_tx_polarity_flip_physical{37}=0xc +serdes_core_tx_polarity_flip_physical{41}=0xe +serdes_core_tx_polarity_flip_physical{45}=0xc +serdes_core_tx_polarity_flip_physical{49}=0xf +serdes_core_tx_polarity_flip_physical{53}=0xc +serdes_core_tx_polarity_flip_physical{57}=0xe +serdes_core_tx_polarity_flip_physical{61}=0xc +serdes_core_tx_polarity_flip_physical{65}=0xf +serdes_core_tx_polarity_flip_physical{69}=0xe +serdes_core_tx_polarity_flip_physical{73}=0xe +serdes_core_tx_polarity_flip_physical{77}=0xc +serdes_core_tx_polarity_flip_physical{81}=0xf +serdes_core_tx_polarity_flip_physical{85}=0xc +serdes_core_tx_polarity_flip_physical{89}=0xe +serdes_core_tx_polarity_flip_physical{93}=0xc +serdes_core_tx_polarity_flip_physical{97}=0xf +serdes_core_tx_polarity_flip_physical{101}=0x6 +serdes_core_tx_polarity_flip_physical{105}=0x1 +serdes_core_tx_polarity_flip_physical{109}=0x3 +serdes_core_tx_polarity_flip_physical{113}=0x0 +serdes_core_tx_polarity_flip_physical{117}=0x3 +serdes_core_tx_polarity_flip_physical{121}=0x1 +serdes_core_tx_polarity_flip_physical{125}=0x3 +serdes_core_tx_polarity_flip_physical{129}=0x0 +stable_size=0x5500000 +tdma_timeout_usec=15000000 +tslam_timeout_usec=15000000 diff --git a/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/hwsku.json b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/hwsku.json new file mode 100644 index 000000000000..713a01025ba8 --- /dev/null +++ b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/hwsku.json @@ -0,0 +1,106 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet256": { + "default_brkout_mode": "1x10G" + }, + "Ethernet260": { + "default_brkout_mode": "1x10G" + } + } +} \ No newline at end of file diff --git a/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/port_config.ini b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/port_config.ini new file mode 100644 index 000000000000..45ef9b7754b9 --- /dev/null +++ b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/port_config.ini @@ -0,0 +1,35 @@ +# name lanes alias index speed +Ethernet0 1,2,3,4,5,6,7,8 Ethernet1/1 1 400000 +Ethernet8 9,10,11,12,13,14,15,16 Ethernet2/1 2 400000 +Ethernet16 17,18,19,20,21,22,23,24 Ethernet3/1 3 400000 +Ethernet24 25,26,27,28,29,30,31,32 Ethernet4/1 4 400000 +Ethernet32 33,34,35,36,37,38,39,40 Ethernet5/1 5 400000 +Ethernet40 41,42,43,44,45,46,47,48 Ethernet6/1 6 400000 +Ethernet48 49,50,51,52,53,54,55,56 Ethernet7/1 7 400000 +Ethernet56 57,58,59,60,61,62,63,64 Ethernet8/1 8 400000 +Ethernet64 65,66,67,68,69,70,71,72 Ethernet9/1 9 400000 +Ethernet72 73,74,75,76,77,78,79,80 Ethernet10/1 10 400000 +Ethernet80 81,82,83,84,85,86,87,88 Ethernet11/1 11 400000 +Ethernet88 89,90,91,92,93,94,95,96 Ethernet12/1 12 400000 +Ethernet96 97,98,99,100,101,102,103,104 Ethernet13/1 13 400000 +Ethernet104 105,106,107,108,109,110,111,112 Ethernet14/1 14 400000 +Ethernet112 113,114,115,116,117,118,119,120 Ethernet15/1 15 400000 +Ethernet120 121,122,123,124,125,126,127,128 Ethernet16/1 16 400000 +Ethernet128 129,130,131,132,133,134,135,136 Ethernet17/1 17 400000 +Ethernet136 137,138,139,140,141,142,143,144 Ethernet18/1 18 400000 +Ethernet144 145,146,147,148,149,150,151,152 Ethernet19/1 19 400000 +Ethernet152 153,154,155,156,157,158,159,160 Ethernet20/1 20 400000 +Ethernet160 161,162,163,164,165,166,167,168 Ethernet21/1 21 400000 +Ethernet168 169,170,171,172,173,174,175,176 Ethernet22/1 22 400000 +Ethernet176 177,178,179,180,181,182,183,184 Ethernet23/1 23 400000 +Ethernet184 185,186,187,188,189,190,191,192 Ethernet24/1 24 400000 +Ethernet192 193,194,195,196,197,198,199,200 Ethernet25/1 25 400000 +Ethernet200 201,202,203,204,205,206,207,208 Ethernet26/1 26 400000 +Ethernet208 209,210,211,212,213,214,215,216 Ethernet27/1 27 400000 +Ethernet216 217,218,219,220,221,222,223,224 Ethernet28/1 28 400000 +Ethernet224 225,226,227,228,229,230,231,232 Ethernet29/1 29 400000 +Ethernet232 233,234,235,236,237,238,239,240 Ethernet30/1 30 400000 +Ethernet240 241,242,243,244,245,246,247,248 Ethernet31/1 31 400000 +Ethernet248 249,250,251,252,253,254,255,256 Ethernet32/1 32 400000 +Ethernet256 258 Ethernet33 33 10000 +Ethernet260 257 Ethernet34 34 10000 diff --git a/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/sai.profile b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/sai.profile new file mode 100644 index 000000000000..fc720c364ecb --- /dev/null +++ b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/th3-a7060dx4-32-flex.config.bcm diff --git a/device/arista/x86_64-arista_7060dx4_32/platform.json b/device/arista/x86_64-arista_7060dx4_32/platform.json index d37370b0d948..7a38cbe3d9f3 100644 --- a/device/arista/x86_64-arista_7060dx4_32/platform.json +++ b/device/arista/x86_64-arista_7060dx4_32/platform.json @@ -219,5 +219,632 @@ } ] }, - "interfaces": {} + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet1/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/3", + "Ethernet1/5", + "Ethernet1/7" + ] + } + }, + "Ethernet8": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet2/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/3", + "Ethernet2/5", + "Ethernet2/7" + ] + } + }, + "Ethernet16": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet3/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/3", + "Ethernet3/5", + "Ethernet3/7" + ] + } + }, + "Ethernet24": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet4/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/3", + "Ethernet4/5", + "Ethernet4/7" + ] + } + }, + "Ethernet32": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet5/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/3", + "Ethernet5/5", + "Ethernet5/7" + ] + } + }, + "Ethernet40": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet6/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/3", + "Ethernet6/5", + "Ethernet6/7" + ] + } + }, + "Ethernet48": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet7/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/3", + "Ethernet7/5", + "Ethernet7/7" + ] + } + }, + "Ethernet56": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet8/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/3", + "Ethernet8/5", + "Ethernet8/7" + ] + } + }, + "Ethernet64": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet9/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/3", + "Ethernet9/5", + "Ethernet9/7" + ] + } + }, + "Ethernet72": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet10/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/3", + "Ethernet10/5", + "Ethernet10/7" + ] + } + }, + "Ethernet80": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet11/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/3", + "Ethernet11/5", + "Ethernet11/7" + ] + } + }, + "Ethernet88": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet12/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/3", + "Ethernet12/5", + "Ethernet12/7" + ] + } + }, + "Ethernet96": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet13/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/3", + "Ethernet13/5", + "Ethernet13/7" + ] + } + }, + "Ethernet104": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet14/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/3", + "Ethernet14/5", + "Ethernet14/7" + ] + } + }, + "Ethernet112": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet15/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/3", + "Ethernet15/5", + "Ethernet15/7" + ] + } + }, + "Ethernet120": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet16/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/3", + "Ethernet16/5", + "Ethernet16/7" + ] + } + }, + "Ethernet128": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet17/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/3", + "Ethernet17/5", + "Ethernet17/7" + ] + } + }, + "Ethernet136": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "137,138,139,140,141,142,143,144", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet18/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/3", + "Ethernet18/5", + "Ethernet18/7" + ] + } + }, + "Ethernet144": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "145,146,147,148,149,150,151,152", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet19/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/3", + "Ethernet19/5", + "Ethernet19/7" + ] + } + }, + "Ethernet152": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "153,154,155,156,157,158,159,160", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet20/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/3", + "Ethernet20/5", + "Ethernet20/7" + ] + } + }, + "Ethernet160": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "161,162,163,164,165,166,167,168", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet21/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/3", + "Ethernet21/5", + "Ethernet21/7" + ] + } + }, + "Ethernet168": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "169,170,171,172,173,174,175,176", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet22/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/3", + "Ethernet22/5", + "Ethernet22/7" + ] + } + }, + "Ethernet176": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "177,178,179,180,181,182,183,184", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet23/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/3", + "Ethernet23/5", + "Ethernet23/7" + ] + } + }, + "Ethernet184": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "185,186,187,188,189,190,191,192", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet24/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/3", + "Ethernet24/5", + "Ethernet24/7" + ] + } + }, + "Ethernet192": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "193,194,195,196,197,198,199,200", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet25/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/3", + "Ethernet25/5", + "Ethernet25/7" + ] + } + }, + "Ethernet200": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "201,202,203,204,205,206,207,208", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet26/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/3", + "Ethernet26/5", + "Ethernet26/7" + ] + } + }, + "Ethernet208": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "209,210,211,212,213,214,215,216", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet27/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/3", + "Ethernet27/5", + "Ethernet27/7" + ] + } + }, + "Ethernet216": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "217,218,219,220,221,222,223,224", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet28/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/3", + "Ethernet28/5", + "Ethernet28/7" + ] + } + }, + "Ethernet224": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "225,226,227,228,229,230,231,232", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet29/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/3", + "Ethernet29/5", + "Ethernet29/7" + ] + } + }, + "Ethernet232": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "233,234,235,236,237,238,239,240", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet30/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/3", + "Ethernet30/5", + "Ethernet30/7" + ] + } + }, + "Ethernet240": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "241,242,243,244,245,246,247,248", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet31/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/3", + "Ethernet31/5", + "Ethernet31/7" + ] + } + }, + "Ethernet248": { + "index": "32,32,32,32,32,32,32,32", + "lanes": "249,250,251,252,253,254,255,256", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet32/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/3", + "Ethernet32/5", + "Ethernet32/7" + ] + } + }, + "Ethernet256": { + "index": "33", + "lanes": "258", + "breakout_modes": { + "1x10G": [ + "Ethernet33" + ] + } + }, + "Ethernet260": { + "index": "34", + "lanes": "257", + "breakout_modes": { + "1x10G": [ + "Ethernet34" + ] + } + } + } } diff --git a/device/arista/x86_64-arista_7060dx4_32/th3-a7060dx4-32-flex.config.bcm b/device/arista/x86_64-arista_7060dx4_32/th3-a7060dx4-32-flex.config.bcm new file mode 100644 index 000000000000..2eae80ff1180 --- /dev/null +++ b/device/arista/x86_64-arista_7060dx4_32/th3-a7060dx4-32-flex.config.bcm @@ -0,0 +1,752 @@ +arl_clean_timeout_usec=15000000 +asf_mem_profile.0=2 +bcm_num_cos.0=8 +bcm_stat_flags=1 +bcm_stat_jumbo.0=9236 +cdma_timeout_usec.0=15000000 +disable_pcie_firmware_check.0=1 +dma_desc_timeout_usec.0=15000000 +dpr_clock_frequency.0=1000 +l2xmsg_mode.0=1 +l2_mem_entries.0=8192 +l3_alpm_enable.0=2 +l3_mem_entries.0=16384 +max_vp_lags.0=0 +miim_intr_enable.0=0 +module_64ports.0=1 +multicast_l2_range.0=511 +oversubscribe_mode=1 +parity_correction=1 +parity_enable=1 +pbmp_xport_xe.0=0x3ffffffffffffffffffffffffffffffffffffffe +phy_an_c37_38.0=2 +phy_an_c37_118.0=2 +phy_an_c73=1 +phy_an_c73_38.0=0 +phy_an_c73_118.0=0 +phy_chain_rx_lane_map_physical{1.0}=0x42537160 +phy_chain_rx_lane_map_physical{9.0}=0x60715342 +phy_chain_rx_lane_map_physical{17.0}=0x06173425 +phy_chain_rx_lane_map_physical{25.0}=0x02471356 +phy_chain_rx_lane_map_physical{33.0}=0x27160534 +phy_chain_rx_lane_map_physical{41.0}=0x02461357 +phy_chain_rx_lane_map_physical{49.0}=0x26150437 +phy_chain_rx_lane_map_physical{57.0}=0x02461357 +phy_chain_rx_lane_map_physical{65.0}=0x27140536 +phy_chain_rx_lane_map_physical{73.0}=0x02471356 +phy_chain_rx_lane_map_physical{81.0}=0x27140536 +phy_chain_rx_lane_map_physical{89.0}=0x02471356 +phy_chain_rx_lane_map_physical{97.0}=0x02461357 +phy_chain_rx_lane_map_physical{105.0}=0x57124603 +phy_chain_rx_lane_map_physical{113.0}=0x17243506 +phy_chain_rx_lane_map_physical{121.0}=0x46315720 +phy_chain_rx_lane_map_physical{129.0}=0x60534271 +phy_chain_rx_lane_map_physical{137.0}=0x02461357 +phy_chain_rx_lane_map_physical{145.0}=0x27140536 +phy_chain_rx_lane_map_physical{153.0}=0x50271463 +phy_chain_rx_lane_map_physical{161.0}=0x31652074 +phy_chain_rx_lane_map_physical{169.0}=0x02461357 +phy_chain_rx_lane_map_physical{177.0}=0x26140537 +phy_chain_rx_lane_map_physical{185.0}=0x02461357 +phy_chain_rx_lane_map_physical{193.0}=0x26140537 +phy_chain_rx_lane_map_physical{201.0}=0x02461357 +phy_chain_rx_lane_map_physical{209.0}=0x27140536 +phy_chain_rx_lane_map_physical{217.0}=0x02641357 +phy_chain_rx_lane_map_physical{225.0}=0x60734251 +phy_chain_rx_lane_map_physical{233.0}=0x31462057 +phy_chain_rx_lane_map_physical{241.0}=0x60715342 +phy_chain_rx_lane_map_physical{249.0}=0x35216047 +phy_chain_rx_lane_map_physical{257.0}=0x3210 +phy_chain_rx_polarity_flip_physical{1.0}=0x1 +phy_chain_rx_polarity_flip_physical{2.0}=0x0 +phy_chain_rx_polarity_flip_physical{3.0}=0x0 +phy_chain_rx_polarity_flip_physical{4.0}=0x1 +phy_chain_rx_polarity_flip_physical{5.0}=0x0 +phy_chain_rx_polarity_flip_physical{6.0}=0x1 +phy_chain_rx_polarity_flip_physical{7.0}=0x1 +phy_chain_rx_polarity_flip_physical{8.0}=0x0 +phy_chain_rx_polarity_flip_physical{9.0}=0x1 +phy_chain_rx_polarity_flip_physical{10.0}=0x0 +phy_chain_rx_polarity_flip_physical{11.0}=0x0 +phy_chain_rx_polarity_flip_physical{12.0}=0x1 +phy_chain_rx_polarity_flip_physical{13.0}=0x0 +phy_chain_rx_polarity_flip_physical{14.0}=0x1 +phy_chain_rx_polarity_flip_physical{15.0}=0x1 +phy_chain_rx_polarity_flip_physical{16.0}=0x0 +phy_chain_rx_polarity_flip_physical{17.0}=0x0 +phy_chain_rx_polarity_flip_physical{18.0}=0x0 +phy_chain_rx_polarity_flip_physical{19.0}=0x1 +phy_chain_rx_polarity_flip_physical{20.0}=0x0 +phy_chain_rx_polarity_flip_physical{21.0}=0x0 +phy_chain_rx_polarity_flip_physical{22.0}=0x1 +phy_chain_rx_polarity_flip_physical{23.0}=0x1 +phy_chain_rx_polarity_flip_physical{24.0}=0x1 +phy_chain_rx_polarity_flip_physical{25.0}=0x0 +phy_chain_rx_polarity_flip_physical{26.0}=0x1 +phy_chain_rx_polarity_flip_physical{27.0}=0x0 +phy_chain_rx_polarity_flip_physical{28.0}=0x0 +phy_chain_rx_polarity_flip_physical{29.0}=0x0 +phy_chain_rx_polarity_flip_physical{30.0}=0x1 +phy_chain_rx_polarity_flip_physical{31.0}=0x1 +phy_chain_rx_polarity_flip_physical{32.0}=0x0 +phy_chain_rx_polarity_flip_physical{33.0}=0x1 +phy_chain_rx_polarity_flip_physical{34.0}=0x1 +phy_chain_rx_polarity_flip_physical{35.0}=0x0 +phy_chain_rx_polarity_flip_physical{36.0}=0x0 +phy_chain_rx_polarity_flip_physical{37.0}=0x1 +phy_chain_rx_polarity_flip_physical{38.0}=0x1 +phy_chain_rx_polarity_flip_physical{39.0}=0x0 +phy_chain_rx_polarity_flip_physical{40.0}=0x0 +phy_chain_rx_polarity_flip_physical{41.0}=0x0 +phy_chain_rx_polarity_flip_physical{42.0}=0x1 +phy_chain_rx_polarity_flip_physical{43.0}=0x1 +phy_chain_rx_polarity_flip_physical{44.0}=0x0 +phy_chain_rx_polarity_flip_physical{45.0}=0x0 +phy_chain_rx_polarity_flip_physical{46.0}=0x1 +phy_chain_rx_polarity_flip_physical{47.0}=0x1 +phy_chain_rx_polarity_flip_physical{48.0}=0x0 +phy_chain_rx_polarity_flip_physical{49.0}=0x0 +phy_chain_rx_polarity_flip_physical{50.0}=0x0 +phy_chain_rx_polarity_flip_physical{51.0}=0x1 +phy_chain_rx_polarity_flip_physical{52.0}=0x0 +phy_chain_rx_polarity_flip_physical{53.0}=0x0 +phy_chain_rx_polarity_flip_physical{54.0}=0x1 +phy_chain_rx_polarity_flip_physical{55.0}=0x0 +phy_chain_rx_polarity_flip_physical{56.0}=0x0 +phy_chain_rx_polarity_flip_physical{57.0}=0x0 +phy_chain_rx_polarity_flip_physical{58.0}=0x1 +phy_chain_rx_polarity_flip_physical{59.0}=0x1 +phy_chain_rx_polarity_flip_physical{60.0}=0x0 +phy_chain_rx_polarity_flip_physical{61.0}=0x0 +phy_chain_rx_polarity_flip_physical{62.0}=0x1 +phy_chain_rx_polarity_flip_physical{63.0}=0x1 +phy_chain_rx_polarity_flip_physical{64.0}=0x0 +phy_chain_rx_polarity_flip_physical{65.0}=0x1 +phy_chain_rx_polarity_flip_physical{66.0}=0x1 +phy_chain_rx_polarity_flip_physical{67.0}=0x0 +phy_chain_rx_polarity_flip_physical{68.0}=0x0 +phy_chain_rx_polarity_flip_physical{69.0}=0x1 +phy_chain_rx_polarity_flip_physical{70.0}=0x1 +phy_chain_rx_polarity_flip_physical{71.0}=0x0 +phy_chain_rx_polarity_flip_physical{72.0}=0x0 +phy_chain_rx_polarity_flip_physical{73.0}=0x1 +phy_chain_rx_polarity_flip_physical{74.0}=0x1 +phy_chain_rx_polarity_flip_physical{75.0}=0x0 +phy_chain_rx_polarity_flip_physical{76.0}=0x0 +phy_chain_rx_polarity_flip_physical{77.0}=0x0 +phy_chain_rx_polarity_flip_physical{78.0}=0x1 +phy_chain_rx_polarity_flip_physical{79.0}=0x1 +phy_chain_rx_polarity_flip_physical{80.0}=0x0 +phy_chain_rx_polarity_flip_physical{81.0}=0x1 +phy_chain_rx_polarity_flip_physical{82.0}=0x1 +phy_chain_rx_polarity_flip_physical{83.0}=0x0 +phy_chain_rx_polarity_flip_physical{84.0}=0x0 +phy_chain_rx_polarity_flip_physical{85.0}=0x1 +phy_chain_rx_polarity_flip_physical{86.0}=0x1 +phy_chain_rx_polarity_flip_physical{87.0}=0x0 +phy_chain_rx_polarity_flip_physical{88.0}=0x0 +phy_chain_rx_polarity_flip_physical{89.0}=0x1 +phy_chain_rx_polarity_flip_physical{90.0}=0x1 +phy_chain_rx_polarity_flip_physical{91.0}=0x0 +phy_chain_rx_polarity_flip_physical{92.0}=0x0 +phy_chain_rx_polarity_flip_physical{93.0}=0x0 +phy_chain_rx_polarity_flip_physical{94.0}=0x1 +phy_chain_rx_polarity_flip_physical{95.0}=0x1 +phy_chain_rx_polarity_flip_physical{96.0}=0x0 +phy_chain_rx_polarity_flip_physical{97.0}=0x0 +phy_chain_rx_polarity_flip_physical{98.0}=0x1 +phy_chain_rx_polarity_flip_physical{99.0}=0x1 +phy_chain_rx_polarity_flip_physical{100.0}=0x1 +phy_chain_rx_polarity_flip_physical{101.0}=0x1 +phy_chain_rx_polarity_flip_physical{102.0}=0x0 +phy_chain_rx_polarity_flip_physical{103.0}=0x0 +phy_chain_rx_polarity_flip_physical{104.0}=0x0 +phy_chain_rx_polarity_flip_physical{105.0}=0x1 +phy_chain_rx_polarity_flip_physical{106.0}=0x1 +phy_chain_rx_polarity_flip_physical{107.0}=0x0 +phy_chain_rx_polarity_flip_physical{108.0}=0x0 +phy_chain_rx_polarity_flip_physical{109.0}=0x0 +phy_chain_rx_polarity_flip_physical{110.0}=0x1 +phy_chain_rx_polarity_flip_physical{111.0}=0x1 +phy_chain_rx_polarity_flip_physical{112.0}=0x0 +phy_chain_rx_polarity_flip_physical{113.0}=0x1 +phy_chain_rx_polarity_flip_physical{114.0}=0x1 +phy_chain_rx_polarity_flip_physical{115.0}=0x0 +phy_chain_rx_polarity_flip_physical{116.0}=0x1 +phy_chain_rx_polarity_flip_physical{117.0}=0x1 +phy_chain_rx_polarity_flip_physical{118.0}=0x0 +phy_chain_rx_polarity_flip_physical{119.0}=0x1 +phy_chain_rx_polarity_flip_physical{120.0}=0x1 +phy_chain_rx_polarity_flip_physical{121.0}=0x1 +phy_chain_rx_polarity_flip_physical{122.0}=0x0 +phy_chain_rx_polarity_flip_physical{123.0}=0x0 +phy_chain_rx_polarity_flip_physical{124.0}=0x1 +phy_chain_rx_polarity_flip_physical{125.0}=0x0 +phy_chain_rx_polarity_flip_physical{126.0}=0x1 +phy_chain_rx_polarity_flip_physical{127.0}=0x1 +phy_chain_rx_polarity_flip_physical{128.0}=0x0 +phy_chain_rx_polarity_flip_physical{129.0}=0x0 +phy_chain_rx_polarity_flip_physical{130.0}=0x0 +phy_chain_rx_polarity_flip_physical{131.0}=0x1 +phy_chain_rx_polarity_flip_physical{132.0}=0x0 +phy_chain_rx_polarity_flip_physical{133.0}=0x0 +phy_chain_rx_polarity_flip_physical{134.0}=0x1 +phy_chain_rx_polarity_flip_physical{135.0}=0x0 +phy_chain_rx_polarity_flip_physical{136.0}=0x0 +phy_chain_rx_polarity_flip_physical{137.0}=0x0 +phy_chain_rx_polarity_flip_physical{138.0}=0x1 +phy_chain_rx_polarity_flip_physical{139.0}=0x1 +phy_chain_rx_polarity_flip_physical{140.0}=0x0 +phy_chain_rx_polarity_flip_physical{141.0}=0x0 +phy_chain_rx_polarity_flip_physical{142.0}=0x1 +phy_chain_rx_polarity_flip_physical{143.0}=0x1 +phy_chain_rx_polarity_flip_physical{144.0}=0x0 +phy_chain_rx_polarity_flip_physical{145.0}=0x1 +phy_chain_rx_polarity_flip_physical{146.0}=0x1 +phy_chain_rx_polarity_flip_physical{147.0}=0x0 +phy_chain_rx_polarity_flip_physical{148.0}=0x0 +phy_chain_rx_polarity_flip_physical{149.0}=0x1 +phy_chain_rx_polarity_flip_physical{150.0}=0x1 +phy_chain_rx_polarity_flip_physical{151.0}=0x0 +phy_chain_rx_polarity_flip_physical{152.0}=0x0 +phy_chain_rx_polarity_flip_physical{153.0}=0x0 +phy_chain_rx_polarity_flip_physical{154.0}=0x1 +phy_chain_rx_polarity_flip_physical{155.0}=0x0 +phy_chain_rx_polarity_flip_physical{156.0}=0x1 +phy_chain_rx_polarity_flip_physical{157.0}=0x1 +phy_chain_rx_polarity_flip_physical{158.0}=0x0 +phy_chain_rx_polarity_flip_physical{159.0}=0x1 +phy_chain_rx_polarity_flip_physical{160.0}=0x0 +phy_chain_rx_polarity_flip_physical{161.0}=0x1 +phy_chain_rx_polarity_flip_physical{162.0}=0x1 +phy_chain_rx_polarity_flip_physical{163.0}=0x1 +phy_chain_rx_polarity_flip_physical{164.0}=0x1 +phy_chain_rx_polarity_flip_physical{165.0}=0x0 +phy_chain_rx_polarity_flip_physical{166.0}=0x0 +phy_chain_rx_polarity_flip_physical{167.0}=0x0 +phy_chain_rx_polarity_flip_physical{168.0}=0x0 +phy_chain_rx_polarity_flip_physical{169.0}=0x0 +phy_chain_rx_polarity_flip_physical{170.0}=0x1 +phy_chain_rx_polarity_flip_physical{171.0}=0x1 +phy_chain_rx_polarity_flip_physical{172.0}=0x0 +phy_chain_rx_polarity_flip_physical{173.0}=0x0 +phy_chain_rx_polarity_flip_physical{174.0}=0x1 +phy_chain_rx_polarity_flip_physical{175.0}=0x1 +phy_chain_rx_polarity_flip_physical{176.0}=0x0 +phy_chain_rx_polarity_flip_physical{177.0}=0x0 +phy_chain_rx_polarity_flip_physical{178.0}=0x0 +phy_chain_rx_polarity_flip_physical{179.0}=0x0 +phy_chain_rx_polarity_flip_physical{180.0}=0x0 +phy_chain_rx_polarity_flip_physical{181.0}=0x1 +phy_chain_rx_polarity_flip_physical{182.0}=0x1 +phy_chain_rx_polarity_flip_physical{183.0}=0x0 +phy_chain_rx_polarity_flip_physical{184.0}=0x0 +phy_chain_rx_polarity_flip_physical{185.0}=0x0 +phy_chain_rx_polarity_flip_physical{186.0}=0x1 +phy_chain_rx_polarity_flip_physical{187.0}=0x1 +phy_chain_rx_polarity_flip_physical{188.0}=0x0 +phy_chain_rx_polarity_flip_physical{189.0}=0x0 +phy_chain_rx_polarity_flip_physical{190.0}=0x1 +phy_chain_rx_polarity_flip_physical{191.0}=0x1 +phy_chain_rx_polarity_flip_physical{192.0}=0x0 +phy_chain_rx_polarity_flip_physical{193.0}=0x0 +phy_chain_rx_polarity_flip_physical{194.0}=0x0 +phy_chain_rx_polarity_flip_physical{195.0}=0x0 +phy_chain_rx_polarity_flip_physical{196.0}=0x0 +phy_chain_rx_polarity_flip_physical{197.0}=0x1 +phy_chain_rx_polarity_flip_physical{198.0}=0x1 +phy_chain_rx_polarity_flip_physical{199.0}=0x0 +phy_chain_rx_polarity_flip_physical{200.0}=0x0 +phy_chain_rx_polarity_flip_physical{201.0}=0x0 +phy_chain_rx_polarity_flip_physical{202.0}=0x1 +phy_chain_rx_polarity_flip_physical{203.0}=0x1 +phy_chain_rx_polarity_flip_physical{204.0}=0x0 +phy_chain_rx_polarity_flip_physical{205.0}=0x0 +phy_chain_rx_polarity_flip_physical{206.0}=0x1 +phy_chain_rx_polarity_flip_physical{207.0}=0x1 +phy_chain_rx_polarity_flip_physical{208.0}=0x0 +phy_chain_rx_polarity_flip_physical{209.0}=0x1 +phy_chain_rx_polarity_flip_physical{210.0}=0x1 +phy_chain_rx_polarity_flip_physical{211.0}=0x0 +phy_chain_rx_polarity_flip_physical{212.0}=0x0 +phy_chain_rx_polarity_flip_physical{213.0}=0x1 +phy_chain_rx_polarity_flip_physical{214.0}=0x1 +phy_chain_rx_polarity_flip_physical{215.0}=0x0 +phy_chain_rx_polarity_flip_physical{216.0}=0x0 +phy_chain_rx_polarity_flip_physical{217.0}=0x0 +phy_chain_rx_polarity_flip_physical{218.0}=0x1 +phy_chain_rx_polarity_flip_physical{219.0}=0x1 +phy_chain_rx_polarity_flip_physical{220.0}=0x0 +phy_chain_rx_polarity_flip_physical{221.0}=0x0 +phy_chain_rx_polarity_flip_physical{222.0}=0x1 +phy_chain_rx_polarity_flip_physical{223.0}=0x1 +phy_chain_rx_polarity_flip_physical{224.0}=0x0 +phy_chain_rx_polarity_flip_physical{225.0}=0x0 +phy_chain_rx_polarity_flip_physical{226.0}=0x0 +phy_chain_rx_polarity_flip_physical{227.0}=0x1 +phy_chain_rx_polarity_flip_physical{228.0}=0x0 +phy_chain_rx_polarity_flip_physical{229.0}=0x0 +phy_chain_rx_polarity_flip_physical{230.0}=0x1 +phy_chain_rx_polarity_flip_physical{231.0}=0x0 +phy_chain_rx_polarity_flip_physical{232.0}=0x0 +phy_chain_rx_polarity_flip_physical{233.0}=0x0 +phy_chain_rx_polarity_flip_physical{234.0}=0x1 +phy_chain_rx_polarity_flip_physical{235.0}=0x1 +phy_chain_rx_polarity_flip_physical{236.0}=0x0 +phy_chain_rx_polarity_flip_physical{237.0}=0x1 +phy_chain_rx_polarity_flip_physical{238.0}=0x0 +phy_chain_rx_polarity_flip_physical{239.0}=0x0 +phy_chain_rx_polarity_flip_physical{240.0}=0x1 +phy_chain_rx_polarity_flip_physical{241.0}=0x1 +phy_chain_rx_polarity_flip_physical{242.0}=0x0 +phy_chain_rx_polarity_flip_physical{243.0}=0x0 +phy_chain_rx_polarity_flip_physical{244.0}=0x0 +phy_chain_rx_polarity_flip_physical{245.0}=0x0 +phy_chain_rx_polarity_flip_physical{246.0}=0x1 +phy_chain_rx_polarity_flip_physical{247.0}=0x1 +phy_chain_rx_polarity_flip_physical{248.0}=0x1 +phy_chain_rx_polarity_flip_physical{249.0}=0x1 +phy_chain_rx_polarity_flip_physical{250.0}=0x1 +phy_chain_rx_polarity_flip_physical{251.0}=0x0 +phy_chain_rx_polarity_flip_physical{252.0}=0x0 +phy_chain_rx_polarity_flip_physical{253.0}=0x0 +phy_chain_rx_polarity_flip_physical{254.0}=0x0 +phy_chain_rx_polarity_flip_physical{255.0}=0x1 +phy_chain_rx_polarity_flip_physical{256.0}=0x1 +phy_chain_rx_polarity_flip_physical{257.0}=0x0 +phy_chain_rx_polarity_flip_physical{258.0}=0x0 +phy_chain_tx_lane_map_physical{1.0}=0x30451627 +phy_chain_tx_lane_map_physical{9.0}=0x74532610 +phy_chain_tx_lane_map_physical{17.0}=0x51407362 +phy_chain_tx_lane_map_physical{25.0}=0x27160435 +phy_chain_tx_lane_map_physical{33.0}=0x65347021 +phy_chain_tx_lane_map_physical{41.0}=0x16072435 +phy_chain_tx_lane_map_physical{49.0}=0x75126430 +phy_chain_tx_lane_map_physical{57.0}=0x26071435 +phy_chain_tx_lane_map_physical{65.0}=0x75026431 +phy_chain_tx_lane_map_physical{73.0}=0x26071435 +phy_chain_tx_lane_map_physical{81.0}=0x75026431 +phy_chain_tx_lane_map_physical{89.0}=0x26071435 +phy_chain_tx_lane_map_physical{97.0}=0x03746521 +phy_chain_tx_lane_map_physical{105.0}=0x06142735 +phy_chain_tx_lane_map_physical{113.0}=0x56237014 +phy_chain_tx_lane_map_physical{121.0}=0x01426375 +phy_chain_tx_lane_map_physical{129.0}=0x12673450 +phy_chain_tx_lane_map_physical{137.0}=0x45062731 +phy_chain_tx_lane_map_physical{145.0}=0x56237014 +phy_chain_tx_lane_map_physical{153.0}=0x56012437 +phy_chain_tx_lane_map_physical{161.0}=0x76215430 +phy_chain_tx_lane_map_physical{169.0}=0x57362410 +phy_chain_tx_lane_map_physical{177.0}=0x76215430 +phy_chain_tx_lane_map_physical{185.0}=0x57362410 +phy_chain_tx_lane_map_physical{193.0}=0x76215430 +phy_chain_tx_lane_map_physical{201.0}=0x57362410 +phy_chain_tx_lane_map_physical{209.0}=0x76215430 +phy_chain_tx_lane_map_physical{217.0}=0x57261430 +phy_chain_tx_lane_map_physical{225.0}=0x65217430 +phy_chain_tx_lane_map_physical{233.0}=0x45063721 +phy_chain_tx_lane_map_physical{241.0}=0x75216430 +phy_chain_tx_lane_map_physical{249.0}=0x64275130 +phy_chain_tx_lane_map_physical{257.0}=0x3210 +phy_chain_tx_polarity_flip_physical{1.0}=0x1 +phy_chain_tx_polarity_flip_physical{2.0}=0x1 +phy_chain_tx_polarity_flip_physical{3.0}=0x0 +phy_chain_tx_polarity_flip_physical{4.0}=0x1 +phy_chain_tx_polarity_flip_physical{5.0}=0x1 +phy_chain_tx_polarity_flip_physical{6.0}=0x1 +phy_chain_tx_polarity_flip_physical{7.0}=0x1 +phy_chain_tx_polarity_flip_physical{8.0}=0x0 +phy_chain_tx_polarity_flip_physical{9.0}=0x1 +phy_chain_tx_polarity_flip_physical{10.0}=0x0 +phy_chain_tx_polarity_flip_physical{11.0}=0x1 +phy_chain_tx_polarity_flip_physical{12.0}=0x1 +phy_chain_tx_polarity_flip_physical{13.0}=0x0 +phy_chain_tx_polarity_flip_physical{14.0}=0x0 +phy_chain_tx_polarity_flip_physical{15.0}=0x1 +phy_chain_tx_polarity_flip_physical{16.0}=0x0 +phy_chain_tx_polarity_flip_physical{17.0}=0x1 +phy_chain_tx_polarity_flip_physical{18.0}=0x0 +phy_chain_tx_polarity_flip_physical{19.0}=0x0 +phy_chain_tx_polarity_flip_physical{20.0}=0x1 +phy_chain_tx_polarity_flip_physical{21.0}=0x0 +phy_chain_tx_polarity_flip_physical{22.0}=0x1 +phy_chain_tx_polarity_flip_physical{23.0}=0x1 +phy_chain_tx_polarity_flip_physical{24.0}=0x0 +phy_chain_tx_polarity_flip_physical{25.0}=0x1 +phy_chain_tx_polarity_flip_physical{26.0}=0x0 +phy_chain_tx_polarity_flip_physical{27.0}=0x0 +phy_chain_tx_polarity_flip_physical{28.0}=0x1 +phy_chain_tx_polarity_flip_physical{29.0}=0x0 +phy_chain_tx_polarity_flip_physical{30.0}=0x1 +phy_chain_tx_polarity_flip_physical{31.0}=0x1 +phy_chain_tx_polarity_flip_physical{32.0}=0x0 +phy_chain_tx_polarity_flip_physical{33.0}=0x0 +phy_chain_tx_polarity_flip_physical{34.0}=0x0 +phy_chain_tx_polarity_flip_physical{35.0}=0x0 +phy_chain_tx_polarity_flip_physical{36.0}=0x1 +phy_chain_tx_polarity_flip_physical{37.0}=0x1 +phy_chain_tx_polarity_flip_physical{38.0}=0x1 +phy_chain_tx_polarity_flip_physical{39.0}=0x1 +phy_chain_tx_polarity_flip_physical{40.0}=0x0 +phy_chain_tx_polarity_flip_physical{41.0}=0x0 +phy_chain_tx_polarity_flip_physical{42.0}=0x0 +phy_chain_tx_polarity_flip_physical{43.0}=0x1 +phy_chain_tx_polarity_flip_physical{44.0}=0x1 +phy_chain_tx_polarity_flip_physical{45.0}=0x0 +phy_chain_tx_polarity_flip_physical{46.0}=0x0 +phy_chain_tx_polarity_flip_physical{47.0}=0x1 +phy_chain_tx_polarity_flip_physical{48.0}=0x1 +phy_chain_tx_polarity_flip_physical{49.0}=0x1 +phy_chain_tx_polarity_flip_physical{50.0}=0x1 +phy_chain_tx_polarity_flip_physical{51.0}=0x1 +phy_chain_tx_polarity_flip_physical{52.0}=0x1 +phy_chain_tx_polarity_flip_physical{53.0}=0x0 +phy_chain_tx_polarity_flip_physical{54.0}=0x0 +phy_chain_tx_polarity_flip_physical{55.0}=0x1 +phy_chain_tx_polarity_flip_physical{56.0}=0x1 +phy_chain_tx_polarity_flip_physical{57.0}=0x0 +phy_chain_tx_polarity_flip_physical{58.0}=0x1 +phy_chain_tx_polarity_flip_physical{59.0}=0x0 +phy_chain_tx_polarity_flip_physical{60.0}=0x1 +phy_chain_tx_polarity_flip_physical{61.0}=0x0 +phy_chain_tx_polarity_flip_physical{62.0}=0x0 +phy_chain_tx_polarity_flip_physical{63.0}=0x1 +phy_chain_tx_polarity_flip_physical{64.0}=0x1 +phy_chain_tx_polarity_flip_physical{65.0}=0x1 +phy_chain_tx_polarity_flip_physical{66.0}=0x1 +phy_chain_tx_polarity_flip_physical{67.0}=0x0 +phy_chain_tx_polarity_flip_physical{68.0}=0x0 +phy_chain_tx_polarity_flip_physical{69.0}=0x0 +phy_chain_tx_polarity_flip_physical{70.0}=0x0 +phy_chain_tx_polarity_flip_physical{71.0}=0x1 +phy_chain_tx_polarity_flip_physical{72.0}=0x1 +phy_chain_tx_polarity_flip_physical{73.0}=0x0 +phy_chain_tx_polarity_flip_physical{74.0}=0x1 +phy_chain_tx_polarity_flip_physical{75.0}=0x0 +phy_chain_tx_polarity_flip_physical{76.0}=0x1 +phy_chain_tx_polarity_flip_physical{77.0}=0x0 +phy_chain_tx_polarity_flip_physical{78.0}=0x0 +phy_chain_tx_polarity_flip_physical{79.0}=0x1 +phy_chain_tx_polarity_flip_physical{80.0}=0x1 +phy_chain_tx_polarity_flip_physical{81.0}=0x1 +phy_chain_tx_polarity_flip_physical{82.0}=0x1 +phy_chain_tx_polarity_flip_physical{83.0}=0x0 +phy_chain_tx_polarity_flip_physical{84.0}=0x0 +phy_chain_tx_polarity_flip_physical{85.0}=0x0 +phy_chain_tx_polarity_flip_physical{86.0}=0x0 +phy_chain_tx_polarity_flip_physical{87.0}=0x1 +phy_chain_tx_polarity_flip_physical{88.0}=0x1 +phy_chain_tx_polarity_flip_physical{89.0}=0x0 +phy_chain_tx_polarity_flip_physical{90.0}=0x1 +phy_chain_tx_polarity_flip_physical{91.0}=0x0 +phy_chain_tx_polarity_flip_physical{92.0}=0x1 +phy_chain_tx_polarity_flip_physical{93.0}=0x0 +phy_chain_tx_polarity_flip_physical{94.0}=0x0 +phy_chain_tx_polarity_flip_physical{95.0}=0x1 +phy_chain_tx_polarity_flip_physical{96.0}=0x1 +phy_chain_tx_polarity_flip_physical{97.0}=0x0 +phy_chain_tx_polarity_flip_physical{98.0}=0x0 +phy_chain_tx_polarity_flip_physical{99.0}=0x0 +phy_chain_tx_polarity_flip_physical{100.0}=0x0 +phy_chain_tx_polarity_flip_physical{101.0}=0x1 +phy_chain_tx_polarity_flip_physical{102.0}=0x1 +phy_chain_tx_polarity_flip_physical{103.0}=0x1 +phy_chain_tx_polarity_flip_physical{104.0}=0x0 +phy_chain_tx_polarity_flip_physical{105.0}=0x1 +phy_chain_tx_polarity_flip_physical{106.0}=0x0 +phy_chain_tx_polarity_flip_physical{107.0}=0x0 +phy_chain_tx_polarity_flip_physical{108.0}=0x1 +phy_chain_tx_polarity_flip_physical{109.0}=0x1 +phy_chain_tx_polarity_flip_physical{110.0}=0x0 +phy_chain_tx_polarity_flip_physical{111.0}=0x1 +phy_chain_tx_polarity_flip_physical{112.0}=0x0 +phy_chain_tx_polarity_flip_physical{113.0}=0x0 +phy_chain_tx_polarity_flip_physical{114.0}=0x1 +phy_chain_tx_polarity_flip_physical{115.0}=0x0 +phy_chain_tx_polarity_flip_physical{116.0}=0x0 +phy_chain_tx_polarity_flip_physical{117.0}=0x1 +phy_chain_tx_polarity_flip_physical{118.0}=0x0 +phy_chain_tx_polarity_flip_physical{119.0}=0x0 +phy_chain_tx_polarity_flip_physical{120.0}=0x0 +phy_chain_tx_polarity_flip_physical{121.0}=0x0 +phy_chain_tx_polarity_flip_physical{122.0}=0x0 +phy_chain_tx_polarity_flip_physical{123.0}=0x1 +phy_chain_tx_polarity_flip_physical{124.0}=0x1 +phy_chain_tx_polarity_flip_physical{125.0}=0x1 +phy_chain_tx_polarity_flip_physical{126.0}=0x1 +phy_chain_tx_polarity_flip_physical{127.0}=0x0 +phy_chain_tx_polarity_flip_physical{128.0}=0x0 +phy_chain_tx_polarity_flip_physical{129.0}=0x0 +phy_chain_tx_polarity_flip_physical{130.0}=0x1 +phy_chain_tx_polarity_flip_physical{131.0}=0x0 +phy_chain_tx_polarity_flip_physical{132.0}=0x0 +phy_chain_tx_polarity_flip_physical{133.0}=0x1 +phy_chain_tx_polarity_flip_physical{134.0}=0x0 +phy_chain_tx_polarity_flip_physical{135.0}=0x0 +phy_chain_tx_polarity_flip_physical{136.0}=0x0 +phy_chain_tx_polarity_flip_physical{137.0}=0x0 +phy_chain_tx_polarity_flip_physical{138.0}=0x0 +phy_chain_tx_polarity_flip_physical{139.0}=0x1 +phy_chain_tx_polarity_flip_physical{140.0}=0x1 +phy_chain_tx_polarity_flip_physical{141.0}=0x1 +phy_chain_tx_polarity_flip_physical{142.0}=0x1 +phy_chain_tx_polarity_flip_physical{143.0}=0x0 +phy_chain_tx_polarity_flip_physical{144.0}=0x0 +phy_chain_tx_polarity_flip_physical{145.0}=0x0 +phy_chain_tx_polarity_flip_physical{146.0}=0x1 +phy_chain_tx_polarity_flip_physical{147.0}=0x0 +phy_chain_tx_polarity_flip_physical{148.0}=0x0 +phy_chain_tx_polarity_flip_physical{149.0}=0x1 +phy_chain_tx_polarity_flip_physical{150.0}=0x0 +phy_chain_tx_polarity_flip_physical{151.0}=0x0 +phy_chain_tx_polarity_flip_physical{152.0}=0x0 +phy_chain_tx_polarity_flip_physical{153.0}=0x0 +phy_chain_tx_polarity_flip_physical{154.0}=0x0 +phy_chain_tx_polarity_flip_physical{155.0}=0x0 +phy_chain_tx_polarity_flip_physical{156.0}=0x1 +phy_chain_tx_polarity_flip_physical{157.0}=0x0 +phy_chain_tx_polarity_flip_physical{158.0}=0x1 +phy_chain_tx_polarity_flip_physical{159.0}=0x1 +phy_chain_tx_polarity_flip_physical{160.0}=0x0 +phy_chain_tx_polarity_flip_physical{161.0}=0x0 +phy_chain_tx_polarity_flip_physical{162.0}=0x1 +phy_chain_tx_polarity_flip_physical{163.0}=0x1 +phy_chain_tx_polarity_flip_physical{164.0}=0x0 +phy_chain_tx_polarity_flip_physical{165.0}=0x0 +phy_chain_tx_polarity_flip_physical{166.0}=0x0 +phy_chain_tx_polarity_flip_physical{167.0}=0x0 +phy_chain_tx_polarity_flip_physical{168.0}=0x0 +phy_chain_tx_polarity_flip_physical{169.0}=0x1 +phy_chain_tx_polarity_flip_physical{170.0}=0x0 +phy_chain_tx_polarity_flip_physical{171.0}=0x0 +phy_chain_tx_polarity_flip_physical{172.0}=0x1 +phy_chain_tx_polarity_flip_physical{173.0}=0x0 +phy_chain_tx_polarity_flip_physical{174.0}=0x1 +phy_chain_tx_polarity_flip_physical{175.0}=0x1 +phy_chain_tx_polarity_flip_physical{176.0}=0x0 +phy_chain_tx_polarity_flip_physical{177.0}=0x0 +phy_chain_tx_polarity_flip_physical{178.0}=0x1 +phy_chain_tx_polarity_flip_physical{179.0}=0x1 +phy_chain_tx_polarity_flip_physical{180.0}=0x0 +phy_chain_tx_polarity_flip_physical{181.0}=0x0 +phy_chain_tx_polarity_flip_physical{182.0}=0x0 +phy_chain_tx_polarity_flip_physical{183.0}=0x0 +phy_chain_tx_polarity_flip_physical{184.0}=0x0 +phy_chain_tx_polarity_flip_physical{185.0}=0x1 +phy_chain_tx_polarity_flip_physical{186.0}=0x0 +phy_chain_tx_polarity_flip_physical{187.0}=0x0 +phy_chain_tx_polarity_flip_physical{188.0}=0x1 +phy_chain_tx_polarity_flip_physical{189.0}=0x0 +phy_chain_tx_polarity_flip_physical{190.0}=0x1 +phy_chain_tx_polarity_flip_physical{191.0}=0x1 +phy_chain_tx_polarity_flip_physical{192.0}=0x0 +phy_chain_tx_polarity_flip_physical{193.0}=0x0 +phy_chain_tx_polarity_flip_physical{194.0}=0x1 +phy_chain_tx_polarity_flip_physical{195.0}=0x1 +phy_chain_tx_polarity_flip_physical{196.0}=0x0 +phy_chain_tx_polarity_flip_physical{197.0}=0x0 +phy_chain_tx_polarity_flip_physical{198.0}=0x0 +phy_chain_tx_polarity_flip_physical{199.0}=0x0 +phy_chain_tx_polarity_flip_physical{200.0}=0x0 +phy_chain_tx_polarity_flip_physical{201.0}=0x1 +phy_chain_tx_polarity_flip_physical{202.0}=0x0 +phy_chain_tx_polarity_flip_physical{203.0}=0x0 +phy_chain_tx_polarity_flip_physical{204.0}=0x1 +phy_chain_tx_polarity_flip_physical{205.0}=0x0 +phy_chain_tx_polarity_flip_physical{206.0}=0x1 +phy_chain_tx_polarity_flip_physical{207.0}=0x1 +phy_chain_tx_polarity_flip_physical{208.0}=0x0 +phy_chain_tx_polarity_flip_physical{209.0}=0x0 +phy_chain_tx_polarity_flip_physical{210.0}=0x1 +phy_chain_tx_polarity_flip_physical{211.0}=0x1 +phy_chain_tx_polarity_flip_physical{212.0}=0x0 +phy_chain_tx_polarity_flip_physical{213.0}=0x0 +phy_chain_tx_polarity_flip_physical{214.0}=0x0 +phy_chain_tx_polarity_flip_physical{215.0}=0x0 +phy_chain_tx_polarity_flip_physical{216.0}=0x0 +phy_chain_tx_polarity_flip_physical{217.0}=0x0 +phy_chain_tx_polarity_flip_physical{218.0}=0x1 +phy_chain_tx_polarity_flip_physical{219.0}=0x0 +phy_chain_tx_polarity_flip_physical{220.0}=0x1 +phy_chain_tx_polarity_flip_physical{221.0}=0x0 +phy_chain_tx_polarity_flip_physical{222.0}=0x1 +phy_chain_tx_polarity_flip_physical{223.0}=0x1 +phy_chain_tx_polarity_flip_physical{224.0}=0x0 +phy_chain_tx_polarity_flip_physical{225.0}=0x0 +phy_chain_tx_polarity_flip_physical{226.0}=0x1 +phy_chain_tx_polarity_flip_physical{227.0}=0x1 +phy_chain_tx_polarity_flip_physical{228.0}=0x0 +phy_chain_tx_polarity_flip_physical{229.0}=0x0 +phy_chain_tx_polarity_flip_physical{230.0}=0x1 +phy_chain_tx_polarity_flip_physical{231.0}=0x1 +phy_chain_tx_polarity_flip_physical{232.0}=0x0 +phy_chain_tx_polarity_flip_physical{233.0}=0x0 +phy_chain_tx_polarity_flip_physical{234.0}=0x1 +phy_chain_tx_polarity_flip_physical{235.0}=0x1 +phy_chain_tx_polarity_flip_physical{236.0}=0x0 +phy_chain_tx_polarity_flip_physical{237.0}=0x1 +phy_chain_tx_polarity_flip_physical{238.0}=0x1 +phy_chain_tx_polarity_flip_physical{239.0}=0x0 +phy_chain_tx_polarity_flip_physical{240.0}=0x0 +phy_chain_tx_polarity_flip_physical{241.0}=0x0 +phy_chain_tx_polarity_flip_physical{242.0}=0x1 +phy_chain_tx_polarity_flip_physical{243.0}=0x1 +phy_chain_tx_polarity_flip_physical{244.0}=0x0 +phy_chain_tx_polarity_flip_physical{245.0}=0x0 +phy_chain_tx_polarity_flip_physical{246.0}=0x0 +phy_chain_tx_polarity_flip_physical{247.0}=0x1 +phy_chain_tx_polarity_flip_physical{248.0}=0x1 +phy_chain_tx_polarity_flip_physical{249.0}=0x1 +phy_chain_tx_polarity_flip_physical{250.0}=0x1 +phy_chain_tx_polarity_flip_physical{251.0}=0x0 +phy_chain_tx_polarity_flip_physical{252.0}=0x0 +phy_chain_tx_polarity_flip_physical{253.0}=0x0 +phy_chain_tx_polarity_flip_physical{254.0}=0x0 +phy_chain_tx_polarity_flip_physical{255.0}=0x1 +phy_chain_tx_polarity_flip_physical{256.0}=0x1 +phy_chain_tx_polarity_flip_physical{257.0}=0x0 +phy_chain_tx_polarity_flip_physical{258.0}=0x0 +portmap_1.0=1:400 +portmap_5.0=9:400 +portmap_9.0=17:400 +portmap_13.0=25:400 +portmap_20.0=33:400 +portmap_24.0=41:400 +portmap_28.0=49:400 +portmap_32.0=57:400 +portmap_38.0=257:10 +portmap_40.0=65:400 +portmap_44.0=73:400 +portmap_48.0=81:400 +portmap_52.0=89:400 +portmap_60.0=97:400 +portmap_64.0=105:400 +portmap_68.0=113:400 +portmap_72.0=121:400 +portmap_80.0=129:400 +portmap_84.0=137:400 +portmap_88.0=145:400 +portmap_92.0=153:400 +portmap_100.0=161:400 +portmap_104.0=169:400 +portmap_108.0=177:400 +portmap_112.0=185:400 +portmap_118.0=258:10 +portmap_120.0=193:400 +portmap_124.0=201:400 +portmap_128.0=209:400 +portmap_132.0=217:400 +portmap_140.0=225:400 +portmap_144.0=233:400 +portmap_148.0=241:400 +portmap_152.0=249:400 +port_flex_enable.0=1 +port_init_autoneg=0 +port_phy_addr=0xff +robust_hash_disable_egress_vlan.0=1 +robust_hash_disable_mpls.0=1 +robust_hash_disable_vlan.0=1 +tdma_timeout_usec.0=15000000 +tslam_timeout_usec.0=15000000 + +# Tuning +serdes_core_rx_polarity_flip_physical{1}=0x96 +serdes_core_rx_polarity_flip_physical{9}=0x69 +serdes_core_rx_polarity_flip_physical{17}=0x93 +serdes_core_rx_polarity_flip_physical{25}=0xd3 +serdes_core_rx_polarity_flip_physical{33}=0xcc +serdes_core_rx_polarity_flip_physical{41}=0xc3 +serdes_core_rx_polarity_flip_physical{49}=0x99 +serdes_core_rx_polarity_flip_physical{57}=0xc3 +serdes_core_rx_polarity_flip_physical{65}=0xcc +serdes_core_rx_polarity_flip_physical{73}=0xd2 +serdes_core_rx_polarity_flip_physical{81}=0xcc +serdes_core_rx_polarity_flip_physical{89}=0xd2 +serdes_core_rx_polarity_flip_physical{97}=0xc3 +serdes_core_rx_polarity_flip_physical{105}=0xd2 +serdes_core_rx_polarity_flip_physical{113}=0x66 +serdes_core_rx_polarity_flip_physical{121}=0xf0 +serdes_core_rx_polarity_flip_physical{129}=0x99 +serdes_core_rx_polarity_flip_physical{137}=0xc3 +serdes_core_rx_polarity_flip_physical{145}=0xcc +serdes_core_rx_polarity_flip_physical{153}=0x99 +serdes_core_rx_polarity_flip_physical{161}=0xd2 +serdes_core_rx_polarity_flip_physical{169}=0xc3 +serdes_core_rx_polarity_flip_physical{177}=0x8d +serdes_core_rx_polarity_flip_physical{185}=0xc3 +serdes_core_rx_polarity_flip_physical{193}=0x8d +serdes_core_rx_polarity_flip_physical{201}=0xc3 +serdes_core_rx_polarity_flip_physical{209}=0xcc +serdes_core_rx_polarity_flip_physical{217}=0xc3 +serdes_core_rx_polarity_flip_physical{225}=0x66 +serdes_core_rx_polarity_flip_physical{233}=0xf +serdes_core_rx_polarity_flip_physical{241}=0x69 +serdes_core_rx_polarity_flip_physical{249}=0x9a +serdes_core_rx_polarity_flip_physical{257}=0x0 +serdes_core_tx_polarity_flip_physical{1}=0xac +serdes_core_tx_polarity_flip_physical{9}=0xa9 +serdes_core_tx_polarity_flip_physical{17}=0x99 +serdes_core_tx_polarity_flip_physical{25}=0xc9 +serdes_core_tx_polarity_flip_physical{33}=0x4e +serdes_core_tx_polarity_flip_physical{41}=0x39 +serdes_core_tx_polarity_flip_physical{49}=0xd1 +serdes_core_tx_polarity_flip_physical{57}=0xb1 +serdes_core_tx_polarity_flip_physical{65}=0xf0 +serdes_core_tx_polarity_flip_physical{73}=0xb1 +serdes_core_tx_polarity_flip_physical{81}=0xf0 +serdes_core_tx_polarity_flip_physical{89}=0xb1 +serdes_core_tx_polarity_flip_physical{97}=0x6e +serdes_core_tx_polarity_flip_physical{105}=0xd8 +serdes_core_tx_polarity_flip_physical{113}=0xac +serdes_core_tx_polarity_flip_physical{121}=0x6c +serdes_core_tx_polarity_flip_physical{129}=0xac +serdes_core_tx_polarity_flip_physical{137}=0x6c +serdes_core_tx_polarity_flip_physical{145}=0xac +serdes_core_tx_polarity_flip_physical{153}=0xe9 +serdes_core_tx_polarity_flip_physical{161}=0xa9 +serdes_core_tx_polarity_flip_physical{169}=0xc9 +serdes_core_tx_polarity_flip_physical{177}=0xa9 +serdes_core_tx_polarity_flip_physical{185}=0xc9 +serdes_core_tx_polarity_flip_physical{193}=0xa9 +serdes_core_tx_polarity_flip_physical{201}=0xc9 +serdes_core_tx_polarity_flip_physical{209}=0xa9 +serdes_core_tx_polarity_flip_physical{217}=0xe1 +serdes_core_tx_polarity_flip_physical{225}=0x69 +serdes_core_tx_polarity_flip_physical{233}=0x66 +serdes_core_tx_polarity_flip_physical{241}=0xe1 +serdes_core_tx_polarity_flip_physical{249}=0xc6 +serdes_core_tx_polarity_flip_physical{257}=0x0 +serdes_tx_taps_cd0=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd1=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd2=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd3=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd4=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd5=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd6=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd7=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd8=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd9=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd10=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd11=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd12=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd13=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd14=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd15=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd16=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd17=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd18=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd19=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd20=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd21=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd22=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd23=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd24=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd25=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd26=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd27=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd28=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd29=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd30=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd31=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd32=pam4:1:34:9:0:0:0 +serdes_tx_taps_cd33=pam4:1:34:9:0:0:0 diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/hwsku.json b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/hwsku.json new file mode 100644 index 000000000000..713a01025ba8 --- /dev/null +++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/hwsku.json @@ -0,0 +1,106 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet256": { + "default_brkout_mode": "1x10G" + }, + "Ethernet260": { + "default_brkout_mode": "1x10G" + } + } +} \ No newline at end of file diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/port_config.ini b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/port_config.ini new file mode 100644 index 000000000000..45ef9b7754b9 --- /dev/null +++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/port_config.ini @@ -0,0 +1,35 @@ +# name lanes alias index speed +Ethernet0 1,2,3,4,5,6,7,8 Ethernet1/1 1 400000 +Ethernet8 9,10,11,12,13,14,15,16 Ethernet2/1 2 400000 +Ethernet16 17,18,19,20,21,22,23,24 Ethernet3/1 3 400000 +Ethernet24 25,26,27,28,29,30,31,32 Ethernet4/1 4 400000 +Ethernet32 33,34,35,36,37,38,39,40 Ethernet5/1 5 400000 +Ethernet40 41,42,43,44,45,46,47,48 Ethernet6/1 6 400000 +Ethernet48 49,50,51,52,53,54,55,56 Ethernet7/1 7 400000 +Ethernet56 57,58,59,60,61,62,63,64 Ethernet8/1 8 400000 +Ethernet64 65,66,67,68,69,70,71,72 Ethernet9/1 9 400000 +Ethernet72 73,74,75,76,77,78,79,80 Ethernet10/1 10 400000 +Ethernet80 81,82,83,84,85,86,87,88 Ethernet11/1 11 400000 +Ethernet88 89,90,91,92,93,94,95,96 Ethernet12/1 12 400000 +Ethernet96 97,98,99,100,101,102,103,104 Ethernet13/1 13 400000 +Ethernet104 105,106,107,108,109,110,111,112 Ethernet14/1 14 400000 +Ethernet112 113,114,115,116,117,118,119,120 Ethernet15/1 15 400000 +Ethernet120 121,122,123,124,125,126,127,128 Ethernet16/1 16 400000 +Ethernet128 129,130,131,132,133,134,135,136 Ethernet17/1 17 400000 +Ethernet136 137,138,139,140,141,142,143,144 Ethernet18/1 18 400000 +Ethernet144 145,146,147,148,149,150,151,152 Ethernet19/1 19 400000 +Ethernet152 153,154,155,156,157,158,159,160 Ethernet20/1 20 400000 +Ethernet160 161,162,163,164,165,166,167,168 Ethernet21/1 21 400000 +Ethernet168 169,170,171,172,173,174,175,176 Ethernet22/1 22 400000 +Ethernet176 177,178,179,180,181,182,183,184 Ethernet23/1 23 400000 +Ethernet184 185,186,187,188,189,190,191,192 Ethernet24/1 24 400000 +Ethernet192 193,194,195,196,197,198,199,200 Ethernet25/1 25 400000 +Ethernet200 201,202,203,204,205,206,207,208 Ethernet26/1 26 400000 +Ethernet208 209,210,211,212,213,214,215,216 Ethernet27/1 27 400000 +Ethernet216 217,218,219,220,221,222,223,224 Ethernet28/1 28 400000 +Ethernet224 225,226,227,228,229,230,231,232 Ethernet29/1 29 400000 +Ethernet232 233,234,235,236,237,238,239,240 Ethernet30/1 30 400000 +Ethernet240 241,242,243,244,245,246,247,248 Ethernet31/1 31 400000 +Ethernet248 249,250,251,252,253,254,255,256 Ethernet32/1 32 400000 +Ethernet256 258 Ethernet33 33 10000 +Ethernet260 257 Ethernet34 34 10000 diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/sai.profile b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/sai.profile new file mode 100644 index 000000000000..0c126bab5a5f --- /dev/null +++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/sai.profile @@ -0,0 +1,2 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/th3-a7060px4-32-flex.config.bcm +SAI_NUM_ECMP_MEMBERS=64 diff --git a/device/arista/x86_64-arista_7060px4_32/platform.json b/device/arista/x86_64-arista_7060px4_32/platform.json index b486b9152c06..ed46f0b72f7f 100644 --- a/device/arista/x86_64-arista_7060px4_32/platform.json +++ b/device/arista/x86_64-arista_7060px4_32/platform.json @@ -219,5 +219,632 @@ } ] }, - "interfaces": {} -} \ No newline at end of file + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet1/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/3", + "Ethernet1/5", + "Ethernet1/7" + ] + } + }, + "Ethernet8": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet2/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/3", + "Ethernet2/5", + "Ethernet2/7" + ] + } + }, + "Ethernet16": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet3/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/3", + "Ethernet3/5", + "Ethernet3/7" + ] + } + }, + "Ethernet24": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet4/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/3", + "Ethernet4/5", + "Ethernet4/7" + ] + } + }, + "Ethernet32": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet5/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/3", + "Ethernet5/5", + "Ethernet5/7" + ] + } + }, + "Ethernet40": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet6/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/3", + "Ethernet6/5", + "Ethernet6/7" + ] + } + }, + "Ethernet48": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet7/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/3", + "Ethernet7/5", + "Ethernet7/7" + ] + } + }, + "Ethernet56": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet8/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/3", + "Ethernet8/5", + "Ethernet8/7" + ] + } + }, + "Ethernet64": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet9/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/3", + "Ethernet9/5", + "Ethernet9/7" + ] + } + }, + "Ethernet72": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet10/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/3", + "Ethernet10/5", + "Ethernet10/7" + ] + } + }, + "Ethernet80": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet11/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/3", + "Ethernet11/5", + "Ethernet11/7" + ] + } + }, + "Ethernet88": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet12/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/3", + "Ethernet12/5", + "Ethernet12/7" + ] + } + }, + "Ethernet96": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet13/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/3", + "Ethernet13/5", + "Ethernet13/7" + ] + } + }, + "Ethernet104": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet14/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/3", + "Ethernet14/5", + "Ethernet14/7" + ] + } + }, + "Ethernet112": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet15/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/3", + "Ethernet15/5", + "Ethernet15/7" + ] + } + }, + "Ethernet120": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet16/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/3", + "Ethernet16/5", + "Ethernet16/7" + ] + } + }, + "Ethernet128": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet17/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/3", + "Ethernet17/5", + "Ethernet17/7" + ] + } + }, + "Ethernet136": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "137,138,139,140,141,142,143,144", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet18/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/3", + "Ethernet18/5", + "Ethernet18/7" + ] + } + }, + "Ethernet144": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "145,146,147,148,149,150,151,152", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet19/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/3", + "Ethernet19/5", + "Ethernet19/7" + ] + } + }, + "Ethernet152": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "153,154,155,156,157,158,159,160", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet20/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/3", + "Ethernet20/5", + "Ethernet20/7" + ] + } + }, + "Ethernet160": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "161,162,163,164,165,166,167,168", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet21/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/3", + "Ethernet21/5", + "Ethernet21/7" + ] + } + }, + "Ethernet168": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "169,170,171,172,173,174,175,176", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet22/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/3", + "Ethernet22/5", + "Ethernet22/7" + ] + } + }, + "Ethernet176": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "177,178,179,180,181,182,183,184", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet23/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/3", + "Ethernet23/5", + "Ethernet23/7" + ] + } + }, + "Ethernet184": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "185,186,187,188,189,190,191,192", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet24/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/3", + "Ethernet24/5", + "Ethernet24/7" + ] + } + }, + "Ethernet192": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "193,194,195,196,197,198,199,200", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet25/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/3", + "Ethernet25/5", + "Ethernet25/7" + ] + } + }, + "Ethernet200": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "201,202,203,204,205,206,207,208", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet26/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/3", + "Ethernet26/5", + "Ethernet26/7" + ] + } + }, + "Ethernet208": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "209,210,211,212,213,214,215,216", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet27/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/3", + "Ethernet27/5", + "Ethernet27/7" + ] + } + }, + "Ethernet216": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "217,218,219,220,221,222,223,224", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet28/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/3", + "Ethernet28/5", + "Ethernet28/7" + ] + } + }, + "Ethernet224": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "225,226,227,228,229,230,231,232", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet29/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/3", + "Ethernet29/5", + "Ethernet29/7" + ] + } + }, + "Ethernet232": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "233,234,235,236,237,238,239,240", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet30/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/3", + "Ethernet30/5", + "Ethernet30/7" + ] + } + }, + "Ethernet240": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "241,242,243,244,245,246,247,248", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet31/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/3", + "Ethernet31/5", + "Ethernet31/7" + ] + } + }, + "Ethernet248": { + "index": "32,32,32,32,32,32,32,32", + "lanes": "249,250,251,252,253,254,255,256", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet32/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/3", + "Ethernet32/5", + "Ethernet32/7" + ] + } + }, + "Ethernet256": { + "index": "33", + "lanes": "258", + "breakout_modes": { + "1x10G": [ + "Ethernet33" + ] + } + }, + "Ethernet260": { + "index": "34", + "lanes": "257", + "breakout_modes": { + "1x10G": [ + "Ethernet34" + ] + } + } + } +} diff --git a/device/arista/x86_64-arista_7060px4_32/th3-a7060px4-32-flex.config.bcm b/device/arista/x86_64-arista_7060px4_32/th3-a7060px4-32-flex.config.bcm new file mode 100644 index 000000000000..b7018cf7c46f --- /dev/null +++ b/device/arista/x86_64-arista_7060px4_32/th3-a7060px4-32-flex.config.bcm @@ -0,0 +1,752 @@ +arl_clean_timeout_usec=15000000 +asf_mem_profile.0=2 +bcm_num_cos.0=8 +bcm_stat_flags=1 +bcm_stat_jumbo.0=9236 +cdma_timeout_usec.0=15000000 +disable_pcie_firmware_check.0=1 +dma_desc_timeout_usec.0=15000000 +dpr_clock_frequency.0=1000 +l2xmsg_mode.0=1 +l2_mem_entries.0=8192 +l3_alpm_enable.0=2 +l3_mem_entries.0=16384 +max_vp_lags.0=0 +miim_intr_enable.0=0 +module_64ports.0=1 +multicast_l2_range.0=511 +oversubscribe_mode=1 +parity_correction=1 +parity_enable=1 +pbmp_xport_xe.0=0x3ffffffffffffffffffffffffffffffffffffffe +phy_an_c37_38.0=2 +phy_an_c37_118.0=2 +phy_an_c73=1 +phy_an_c73_38.0=0 +phy_an_c73_118.0=0 +phy_chain_rx_lane_map_physical{1.0}=0x72634150 +phy_chain_rx_lane_map_physical{9.0}=0x63725041 +phy_chain_rx_lane_map_physical{17.0}=0x23071465 +phy_chain_rx_lane_map_physical{25.0}=0x03125746 +phy_chain_rx_lane_map_physical{33.0}=0x12063574 +phy_chain_rx_lane_map_physical{41.0}=0x03125647 +phy_chain_rx_lane_map_physical{49.0}=0x12053467 +phy_chain_rx_lane_map_physical{57.0}=0x03125647 +phy_chain_rx_lane_map_physical{65.0}=0x12043576 +phy_chain_rx_lane_map_physical{73.0}=0x03125746 +phy_chain_rx_lane_map_physical{81.0}=0x12043576 +phy_chain_rx_lane_map_physical{89.0}=0x03125746 +phy_chain_rx_lane_map_physical{97.0}=0x40165327 +phy_chain_rx_lane_map_physical{105.0}=0x56470213 +phy_chain_rx_lane_map_physical{113.0}=0x21340576 +phy_chain_rx_lane_map_physical{121.0}=0x47562130 +phy_chain_rx_lane_map_physical{129.0}=0x56437201 +phy_chain_rx_lane_map_physical{137.0}=0x03125647 +phy_chain_rx_lane_map_physical{145.0}=0x12043576 +phy_chain_rx_lane_map_physical{153.0}=0x54106723 +phy_chain_rx_lane_map_physical{161.0}=0x63257014 +phy_chain_rx_lane_map_physical{169.0}=0x03125647 +phy_chain_rx_lane_map_physical{177.0}=0x12043567 +phy_chain_rx_lane_map_physical{185.0}=0x03125647 +phy_chain_rx_lane_map_physical{193.0}=0x12043567 +phy_chain_rx_lane_map_physical{201.0}=0x03125647 +phy_chain_rx_lane_map_physical{209.0}=0x12043576 +phy_chain_rx_lane_map_physical{217.0}=0x03125467 +phy_chain_rx_lane_map_physical{225.0}=0x12073465 +phy_chain_rx_lane_map_physical{233.0}=0x30215647 +phy_chain_rx_lane_map_physical{241.0}=0x23071564 +phy_chain_rx_lane_map_physical{249.0}=0x72634150 +phy_chain_rx_lane_map_physical{257.0}=0x3210 +phy_chain_rx_polarity_flip_physical{1.0}=0x1 +phy_chain_rx_polarity_flip_physical{2.0}=0x0 +phy_chain_rx_polarity_flip_physical{3.0}=0x0 +phy_chain_rx_polarity_flip_physical{4.0}=0x1 +phy_chain_rx_polarity_flip_physical{5.0}=0x0 +phy_chain_rx_polarity_flip_physical{6.0}=0x1 +phy_chain_rx_polarity_flip_physical{7.0}=0x1 +phy_chain_rx_polarity_flip_physical{8.0}=0x0 +phy_chain_rx_polarity_flip_physical{9.0}=0x1 +phy_chain_rx_polarity_flip_physical{10.0}=0x0 +phy_chain_rx_polarity_flip_physical{11.0}=0x0 +phy_chain_rx_polarity_flip_physical{12.0}=0x1 +phy_chain_rx_polarity_flip_physical{13.0}=0x0 +phy_chain_rx_polarity_flip_physical{14.0}=0x1 +phy_chain_rx_polarity_flip_physical{15.0}=0x1 +phy_chain_rx_polarity_flip_physical{16.0}=0x0 +phy_chain_rx_polarity_flip_physical{17.0}=0x0 +phy_chain_rx_polarity_flip_physical{18.0}=0x0 +phy_chain_rx_polarity_flip_physical{19.0}=0x1 +phy_chain_rx_polarity_flip_physical{20.0}=0x0 +phy_chain_rx_polarity_flip_physical{21.0}=0x0 +phy_chain_rx_polarity_flip_physical{22.0}=0x1 +phy_chain_rx_polarity_flip_physical{23.0}=0x1 +phy_chain_rx_polarity_flip_physical{24.0}=0x1 +phy_chain_rx_polarity_flip_physical{25.0}=0x0 +phy_chain_rx_polarity_flip_physical{26.0}=0x1 +phy_chain_rx_polarity_flip_physical{27.0}=0x0 +phy_chain_rx_polarity_flip_physical{28.0}=0x0 +phy_chain_rx_polarity_flip_physical{29.0}=0x0 +phy_chain_rx_polarity_flip_physical{30.0}=0x1 +phy_chain_rx_polarity_flip_physical{31.0}=0x1 +phy_chain_rx_polarity_flip_physical{32.0}=0x0 +phy_chain_rx_polarity_flip_physical{33.0}=0x1 +phy_chain_rx_polarity_flip_physical{34.0}=0x1 +phy_chain_rx_polarity_flip_physical{35.0}=0x0 +phy_chain_rx_polarity_flip_physical{36.0}=0x0 +phy_chain_rx_polarity_flip_physical{37.0}=0x1 +phy_chain_rx_polarity_flip_physical{38.0}=0x1 +phy_chain_rx_polarity_flip_physical{39.0}=0x0 +phy_chain_rx_polarity_flip_physical{40.0}=0x0 +phy_chain_rx_polarity_flip_physical{41.0}=0x0 +phy_chain_rx_polarity_flip_physical{42.0}=0x1 +phy_chain_rx_polarity_flip_physical{43.0}=0x1 +phy_chain_rx_polarity_flip_physical{44.0}=0x0 +phy_chain_rx_polarity_flip_physical{45.0}=0x0 +phy_chain_rx_polarity_flip_physical{46.0}=0x1 +phy_chain_rx_polarity_flip_physical{47.0}=0x1 +phy_chain_rx_polarity_flip_physical{48.0}=0x0 +phy_chain_rx_polarity_flip_physical{49.0}=0x0 +phy_chain_rx_polarity_flip_physical{50.0}=0x0 +phy_chain_rx_polarity_flip_physical{51.0}=0x1 +phy_chain_rx_polarity_flip_physical{52.0}=0x0 +phy_chain_rx_polarity_flip_physical{53.0}=0x0 +phy_chain_rx_polarity_flip_physical{54.0}=0x1 +phy_chain_rx_polarity_flip_physical{55.0}=0x0 +phy_chain_rx_polarity_flip_physical{56.0}=0x0 +phy_chain_rx_polarity_flip_physical{57.0}=0x0 +phy_chain_rx_polarity_flip_physical{58.0}=0x1 +phy_chain_rx_polarity_flip_physical{59.0}=0x1 +phy_chain_rx_polarity_flip_physical{60.0}=0x0 +phy_chain_rx_polarity_flip_physical{61.0}=0x0 +phy_chain_rx_polarity_flip_physical{62.0}=0x1 +phy_chain_rx_polarity_flip_physical{63.0}=0x1 +phy_chain_rx_polarity_flip_physical{64.0}=0x0 +phy_chain_rx_polarity_flip_physical{65.0}=0x1 +phy_chain_rx_polarity_flip_physical{66.0}=0x1 +phy_chain_rx_polarity_flip_physical{67.0}=0x0 +phy_chain_rx_polarity_flip_physical{68.0}=0x0 +phy_chain_rx_polarity_flip_physical{69.0}=0x1 +phy_chain_rx_polarity_flip_physical{70.0}=0x1 +phy_chain_rx_polarity_flip_physical{71.0}=0x0 +phy_chain_rx_polarity_flip_physical{72.0}=0x0 +phy_chain_rx_polarity_flip_physical{73.0}=0x1 +phy_chain_rx_polarity_flip_physical{74.0}=0x1 +phy_chain_rx_polarity_flip_physical{75.0}=0x0 +phy_chain_rx_polarity_flip_physical{76.0}=0x0 +phy_chain_rx_polarity_flip_physical{77.0}=0x0 +phy_chain_rx_polarity_flip_physical{78.0}=0x1 +phy_chain_rx_polarity_flip_physical{79.0}=0x1 +phy_chain_rx_polarity_flip_physical{80.0}=0x0 +phy_chain_rx_polarity_flip_physical{81.0}=0x1 +phy_chain_rx_polarity_flip_physical{82.0}=0x1 +phy_chain_rx_polarity_flip_physical{83.0}=0x0 +phy_chain_rx_polarity_flip_physical{84.0}=0x0 +phy_chain_rx_polarity_flip_physical{85.0}=0x1 +phy_chain_rx_polarity_flip_physical{86.0}=0x1 +phy_chain_rx_polarity_flip_physical{87.0}=0x0 +phy_chain_rx_polarity_flip_physical{88.0}=0x0 +phy_chain_rx_polarity_flip_physical{89.0}=0x1 +phy_chain_rx_polarity_flip_physical{90.0}=0x1 +phy_chain_rx_polarity_flip_physical{91.0}=0x0 +phy_chain_rx_polarity_flip_physical{92.0}=0x0 +phy_chain_rx_polarity_flip_physical{93.0}=0x0 +phy_chain_rx_polarity_flip_physical{94.0}=0x1 +phy_chain_rx_polarity_flip_physical{95.0}=0x1 +phy_chain_rx_polarity_flip_physical{96.0}=0x0 +phy_chain_rx_polarity_flip_physical{97.0}=0x0 +phy_chain_rx_polarity_flip_physical{98.0}=0x1 +phy_chain_rx_polarity_flip_physical{99.0}=0x1 +phy_chain_rx_polarity_flip_physical{100.0}=0x1 +phy_chain_rx_polarity_flip_physical{101.0}=0x1 +phy_chain_rx_polarity_flip_physical{102.0}=0x0 +phy_chain_rx_polarity_flip_physical{103.0}=0x0 +phy_chain_rx_polarity_flip_physical{104.0}=0x0 +phy_chain_rx_polarity_flip_physical{105.0}=0x1 +phy_chain_rx_polarity_flip_physical{106.0}=0x1 +phy_chain_rx_polarity_flip_physical{107.0}=0x0 +phy_chain_rx_polarity_flip_physical{108.0}=0x0 +phy_chain_rx_polarity_flip_physical{109.0}=0x0 +phy_chain_rx_polarity_flip_physical{110.0}=0x1 +phy_chain_rx_polarity_flip_physical{111.0}=0x1 +phy_chain_rx_polarity_flip_physical{112.0}=0x0 +phy_chain_rx_polarity_flip_physical{113.0}=0x1 +phy_chain_rx_polarity_flip_physical{114.0}=0x1 +phy_chain_rx_polarity_flip_physical{115.0}=0x0 +phy_chain_rx_polarity_flip_physical{116.0}=0x1 +phy_chain_rx_polarity_flip_physical{117.0}=0x1 +phy_chain_rx_polarity_flip_physical{118.0}=0x0 +phy_chain_rx_polarity_flip_physical{119.0}=0x1 +phy_chain_rx_polarity_flip_physical{120.0}=0x1 +phy_chain_rx_polarity_flip_physical{121.0}=0x1 +phy_chain_rx_polarity_flip_physical{122.0}=0x0 +phy_chain_rx_polarity_flip_physical{123.0}=0x0 +phy_chain_rx_polarity_flip_physical{124.0}=0x1 +phy_chain_rx_polarity_flip_physical{125.0}=0x0 +phy_chain_rx_polarity_flip_physical{126.0}=0x1 +phy_chain_rx_polarity_flip_physical{127.0}=0x1 +phy_chain_rx_polarity_flip_physical{128.0}=0x0 +phy_chain_rx_polarity_flip_physical{129.0}=0x0 +phy_chain_rx_polarity_flip_physical{130.0}=0x0 +phy_chain_rx_polarity_flip_physical{131.0}=0x1 +phy_chain_rx_polarity_flip_physical{132.0}=0x0 +phy_chain_rx_polarity_flip_physical{133.0}=0x0 +phy_chain_rx_polarity_flip_physical{134.0}=0x1 +phy_chain_rx_polarity_flip_physical{135.0}=0x0 +phy_chain_rx_polarity_flip_physical{136.0}=0x0 +phy_chain_rx_polarity_flip_physical{137.0}=0x0 +phy_chain_rx_polarity_flip_physical{138.0}=0x1 +phy_chain_rx_polarity_flip_physical{139.0}=0x1 +phy_chain_rx_polarity_flip_physical{140.0}=0x0 +phy_chain_rx_polarity_flip_physical{141.0}=0x0 +phy_chain_rx_polarity_flip_physical{142.0}=0x1 +phy_chain_rx_polarity_flip_physical{143.0}=0x1 +phy_chain_rx_polarity_flip_physical{144.0}=0x0 +phy_chain_rx_polarity_flip_physical{145.0}=0x1 +phy_chain_rx_polarity_flip_physical{146.0}=0x1 +phy_chain_rx_polarity_flip_physical{147.0}=0x0 +phy_chain_rx_polarity_flip_physical{148.0}=0x0 +phy_chain_rx_polarity_flip_physical{149.0}=0x1 +phy_chain_rx_polarity_flip_physical{150.0}=0x1 +phy_chain_rx_polarity_flip_physical{151.0}=0x0 +phy_chain_rx_polarity_flip_physical{152.0}=0x0 +phy_chain_rx_polarity_flip_physical{153.0}=0x0 +phy_chain_rx_polarity_flip_physical{154.0}=0x1 +phy_chain_rx_polarity_flip_physical{155.0}=0x0 +phy_chain_rx_polarity_flip_physical{156.0}=0x1 +phy_chain_rx_polarity_flip_physical{157.0}=0x1 +phy_chain_rx_polarity_flip_physical{158.0}=0x0 +phy_chain_rx_polarity_flip_physical{159.0}=0x1 +phy_chain_rx_polarity_flip_physical{160.0}=0x0 +phy_chain_rx_polarity_flip_physical{161.0}=0x1 +phy_chain_rx_polarity_flip_physical{162.0}=0x1 +phy_chain_rx_polarity_flip_physical{163.0}=0x1 +phy_chain_rx_polarity_flip_physical{164.0}=0x1 +phy_chain_rx_polarity_flip_physical{165.0}=0x0 +phy_chain_rx_polarity_flip_physical{166.0}=0x0 +phy_chain_rx_polarity_flip_physical{167.0}=0x0 +phy_chain_rx_polarity_flip_physical{168.0}=0x0 +phy_chain_rx_polarity_flip_physical{169.0}=0x0 +phy_chain_rx_polarity_flip_physical{170.0}=0x1 +phy_chain_rx_polarity_flip_physical{171.0}=0x1 +phy_chain_rx_polarity_flip_physical{172.0}=0x0 +phy_chain_rx_polarity_flip_physical{173.0}=0x0 +phy_chain_rx_polarity_flip_physical{174.0}=0x1 +phy_chain_rx_polarity_flip_physical{175.0}=0x1 +phy_chain_rx_polarity_flip_physical{176.0}=0x0 +phy_chain_rx_polarity_flip_physical{177.0}=0x0 +phy_chain_rx_polarity_flip_physical{178.0}=0x0 +phy_chain_rx_polarity_flip_physical{179.0}=0x0 +phy_chain_rx_polarity_flip_physical{180.0}=0x0 +phy_chain_rx_polarity_flip_physical{181.0}=0x1 +phy_chain_rx_polarity_flip_physical{182.0}=0x1 +phy_chain_rx_polarity_flip_physical{183.0}=0x0 +phy_chain_rx_polarity_flip_physical{184.0}=0x0 +phy_chain_rx_polarity_flip_physical{185.0}=0x0 +phy_chain_rx_polarity_flip_physical{186.0}=0x1 +phy_chain_rx_polarity_flip_physical{187.0}=0x1 +phy_chain_rx_polarity_flip_physical{188.0}=0x0 +phy_chain_rx_polarity_flip_physical{189.0}=0x0 +phy_chain_rx_polarity_flip_physical{190.0}=0x1 +phy_chain_rx_polarity_flip_physical{191.0}=0x1 +phy_chain_rx_polarity_flip_physical{192.0}=0x0 +phy_chain_rx_polarity_flip_physical{193.0}=0x0 +phy_chain_rx_polarity_flip_physical{194.0}=0x0 +phy_chain_rx_polarity_flip_physical{195.0}=0x0 +phy_chain_rx_polarity_flip_physical{196.0}=0x0 +phy_chain_rx_polarity_flip_physical{197.0}=0x1 +phy_chain_rx_polarity_flip_physical{198.0}=0x1 +phy_chain_rx_polarity_flip_physical{199.0}=0x0 +phy_chain_rx_polarity_flip_physical{200.0}=0x0 +phy_chain_rx_polarity_flip_physical{201.0}=0x0 +phy_chain_rx_polarity_flip_physical{202.0}=0x1 +phy_chain_rx_polarity_flip_physical{203.0}=0x1 +phy_chain_rx_polarity_flip_physical{204.0}=0x0 +phy_chain_rx_polarity_flip_physical{205.0}=0x0 +phy_chain_rx_polarity_flip_physical{206.0}=0x1 +phy_chain_rx_polarity_flip_physical{207.0}=0x1 +phy_chain_rx_polarity_flip_physical{208.0}=0x0 +phy_chain_rx_polarity_flip_physical{209.0}=0x1 +phy_chain_rx_polarity_flip_physical{210.0}=0x1 +phy_chain_rx_polarity_flip_physical{211.0}=0x0 +phy_chain_rx_polarity_flip_physical{212.0}=0x0 +phy_chain_rx_polarity_flip_physical{213.0}=0x1 +phy_chain_rx_polarity_flip_physical{214.0}=0x1 +phy_chain_rx_polarity_flip_physical{215.0}=0x0 +phy_chain_rx_polarity_flip_physical{216.0}=0x0 +phy_chain_rx_polarity_flip_physical{217.0}=0x0 +phy_chain_rx_polarity_flip_physical{218.0}=0x1 +phy_chain_rx_polarity_flip_physical{219.0}=0x1 +phy_chain_rx_polarity_flip_physical{220.0}=0x0 +phy_chain_rx_polarity_flip_physical{221.0}=0x0 +phy_chain_rx_polarity_flip_physical{222.0}=0x1 +phy_chain_rx_polarity_flip_physical{223.0}=0x1 +phy_chain_rx_polarity_flip_physical{224.0}=0x0 +phy_chain_rx_polarity_flip_physical{225.0}=0x0 +phy_chain_rx_polarity_flip_physical{226.0}=0x0 +phy_chain_rx_polarity_flip_physical{227.0}=0x1 +phy_chain_rx_polarity_flip_physical{228.0}=0x0 +phy_chain_rx_polarity_flip_physical{229.0}=0x0 +phy_chain_rx_polarity_flip_physical{230.0}=0x1 +phy_chain_rx_polarity_flip_physical{231.0}=0x0 +phy_chain_rx_polarity_flip_physical{232.0}=0x0 +phy_chain_rx_polarity_flip_physical{233.0}=0x0 +phy_chain_rx_polarity_flip_physical{234.0}=0x1 +phy_chain_rx_polarity_flip_physical{235.0}=0x1 +phy_chain_rx_polarity_flip_physical{236.0}=0x0 +phy_chain_rx_polarity_flip_physical{237.0}=0x1 +phy_chain_rx_polarity_flip_physical{238.0}=0x0 +phy_chain_rx_polarity_flip_physical{239.0}=0x0 +phy_chain_rx_polarity_flip_physical{240.0}=0x1 +phy_chain_rx_polarity_flip_physical{241.0}=0x1 +phy_chain_rx_polarity_flip_physical{242.0}=0x0 +phy_chain_rx_polarity_flip_physical{243.0}=0x0 +phy_chain_rx_polarity_flip_physical{244.0}=0x0 +phy_chain_rx_polarity_flip_physical{245.0}=0x0 +phy_chain_rx_polarity_flip_physical{246.0}=0x1 +phy_chain_rx_polarity_flip_physical{247.0}=0x1 +phy_chain_rx_polarity_flip_physical{248.0}=0x1 +phy_chain_rx_polarity_flip_physical{249.0}=0x1 +phy_chain_rx_polarity_flip_physical{250.0}=0x1 +phy_chain_rx_polarity_flip_physical{251.0}=0x0 +phy_chain_rx_polarity_flip_physical{252.0}=0x0 +phy_chain_rx_polarity_flip_physical{253.0}=0x0 +phy_chain_rx_polarity_flip_physical{254.0}=0x0 +phy_chain_rx_polarity_flip_physical{255.0}=0x1 +phy_chain_rx_polarity_flip_physical{256.0}=0x1 +phy_chain_rx_polarity_flip_physical{257.0}=0x0 +phy_chain_rx_polarity_flip_physical{258.0}=0x0 +phy_chain_tx_lane_map_physical{1.0}=0x13245076 +phy_chain_tx_lane_map_physical{9.0}=0x76501423 +phy_chain_tx_lane_map_physical{17.0}=0x75643120 +phy_chain_tx_lane_map_physical{25.0}=0x74653201 +phy_chain_tx_lane_map_physical{33.0}=0x75603124 +phy_chain_tx_lane_map_physical{41.0}=0x64753120 +phy_chain_tx_lane_map_physical{49.0}=0x65741032 +phy_chain_tx_lane_map_physical{57.0}=0x64753210 +phy_chain_tx_lane_map_physical{65.0}=0x65740132 +phy_chain_tx_lane_map_physical{73.0}=0x64753210 +phy_chain_tx_lane_map_physical{81.0}=0x65740132 +phy_chain_tx_lane_map_physical{89.0}=0x64753210 +phy_chain_tx_lane_map_physical{97.0}=0x63057124 +phy_chain_tx_lane_map_physical{105.0}=0x67453021 +phy_chain_tx_lane_map_physical{113.0}=0x76502413 +phy_chain_tx_lane_map_physical{121.0}=0x13257064 +phy_chain_tx_lane_map_physical{129.0}=0x32146057 +phy_chain_tx_lane_map_physical{137.0}=0x57613420 +phy_chain_tx_lane_map_physical{145.0}=0x76502413 +phy_chain_tx_lane_map_physical{153.0}=0x64173520 +phy_chain_tx_lane_map_physical{161.0}=0x56742031 +phy_chain_tx_lane_map_physical{169.0}=0x74601523 +phy_chain_tx_lane_map_physical{177.0}=0x56742031 +phy_chain_tx_lane_map_physical{185.0}=0x74601523 +phy_chain_tx_lane_map_physical{193.0}=0x56742031 +phy_chain_tx_lane_map_physical{201.0}=0x74601523 +phy_chain_tx_lane_map_physical{209.0}=0x56742031 +phy_chain_tx_lane_map_physical{217.0}=0x74603512 +phy_chain_tx_lane_map_physical{225.0}=0x75642031 +phy_chain_tx_lane_map_physical{233.0}=0x57612430 +phy_chain_tx_lane_map_physical{241.0}=0x65742031 +phy_chain_tx_lane_map_physical{249.0}=0x52316470 +phy_chain_tx_lane_map_physical{257.0}=0x3210 +phy_chain_tx_polarity_flip_physical{1.0}=0x1 +phy_chain_tx_polarity_flip_physical{2.0}=0x1 +phy_chain_tx_polarity_flip_physical{3.0}=0x0 +phy_chain_tx_polarity_flip_physical{4.0}=0x1 +phy_chain_tx_polarity_flip_physical{5.0}=0x1 +phy_chain_tx_polarity_flip_physical{6.0}=0x1 +phy_chain_tx_polarity_flip_physical{7.0}=0x1 +phy_chain_tx_polarity_flip_physical{8.0}=0x0 +phy_chain_tx_polarity_flip_physical{9.0}=0x1 +phy_chain_tx_polarity_flip_physical{10.0}=0x0 +phy_chain_tx_polarity_flip_physical{11.0}=0x1 +phy_chain_tx_polarity_flip_physical{12.0}=0x1 +phy_chain_tx_polarity_flip_physical{13.0}=0x0 +phy_chain_tx_polarity_flip_physical{14.0}=0x0 +phy_chain_tx_polarity_flip_physical{15.0}=0x1 +phy_chain_tx_polarity_flip_physical{16.0}=0x0 +phy_chain_tx_polarity_flip_physical{17.0}=0x1 +phy_chain_tx_polarity_flip_physical{18.0}=0x0 +phy_chain_tx_polarity_flip_physical{19.0}=0x0 +phy_chain_tx_polarity_flip_physical{20.0}=0x1 +phy_chain_tx_polarity_flip_physical{21.0}=0x0 +phy_chain_tx_polarity_flip_physical{22.0}=0x1 +phy_chain_tx_polarity_flip_physical{23.0}=0x1 +phy_chain_tx_polarity_flip_physical{24.0}=0x0 +phy_chain_tx_polarity_flip_physical{25.0}=0x1 +phy_chain_tx_polarity_flip_physical{26.0}=0x0 +phy_chain_tx_polarity_flip_physical{27.0}=0x0 +phy_chain_tx_polarity_flip_physical{28.0}=0x1 +phy_chain_tx_polarity_flip_physical{29.0}=0x0 +phy_chain_tx_polarity_flip_physical{30.0}=0x1 +phy_chain_tx_polarity_flip_physical{31.0}=0x1 +phy_chain_tx_polarity_flip_physical{32.0}=0x0 +phy_chain_tx_polarity_flip_physical{33.0}=0x0 +phy_chain_tx_polarity_flip_physical{34.0}=0x0 +phy_chain_tx_polarity_flip_physical{35.0}=0x0 +phy_chain_tx_polarity_flip_physical{36.0}=0x1 +phy_chain_tx_polarity_flip_physical{37.0}=0x1 +phy_chain_tx_polarity_flip_physical{38.0}=0x1 +phy_chain_tx_polarity_flip_physical{39.0}=0x1 +phy_chain_tx_polarity_flip_physical{40.0}=0x0 +phy_chain_tx_polarity_flip_physical{41.0}=0x0 +phy_chain_tx_polarity_flip_physical{42.0}=0x0 +phy_chain_tx_polarity_flip_physical{43.0}=0x1 +phy_chain_tx_polarity_flip_physical{44.0}=0x1 +phy_chain_tx_polarity_flip_physical{45.0}=0x0 +phy_chain_tx_polarity_flip_physical{46.0}=0x0 +phy_chain_tx_polarity_flip_physical{47.0}=0x1 +phy_chain_tx_polarity_flip_physical{48.0}=0x1 +phy_chain_tx_polarity_flip_physical{49.0}=0x1 +phy_chain_tx_polarity_flip_physical{50.0}=0x1 +phy_chain_tx_polarity_flip_physical{51.0}=0x1 +phy_chain_tx_polarity_flip_physical{52.0}=0x1 +phy_chain_tx_polarity_flip_physical{53.0}=0x0 +phy_chain_tx_polarity_flip_physical{54.0}=0x0 +phy_chain_tx_polarity_flip_physical{55.0}=0x1 +phy_chain_tx_polarity_flip_physical{56.0}=0x1 +phy_chain_tx_polarity_flip_physical{57.0}=0x0 +phy_chain_tx_polarity_flip_physical{58.0}=0x1 +phy_chain_tx_polarity_flip_physical{59.0}=0x0 +phy_chain_tx_polarity_flip_physical{60.0}=0x1 +phy_chain_tx_polarity_flip_physical{61.0}=0x0 +phy_chain_tx_polarity_flip_physical{62.0}=0x0 +phy_chain_tx_polarity_flip_physical{63.0}=0x1 +phy_chain_tx_polarity_flip_physical{64.0}=0x1 +phy_chain_tx_polarity_flip_physical{65.0}=0x1 +phy_chain_tx_polarity_flip_physical{66.0}=0x1 +phy_chain_tx_polarity_flip_physical{67.0}=0x0 +phy_chain_tx_polarity_flip_physical{68.0}=0x0 +phy_chain_tx_polarity_flip_physical{69.0}=0x0 +phy_chain_tx_polarity_flip_physical{70.0}=0x0 +phy_chain_tx_polarity_flip_physical{71.0}=0x1 +phy_chain_tx_polarity_flip_physical{72.0}=0x1 +phy_chain_tx_polarity_flip_physical{73.0}=0x0 +phy_chain_tx_polarity_flip_physical{74.0}=0x1 +phy_chain_tx_polarity_flip_physical{75.0}=0x0 +phy_chain_tx_polarity_flip_physical{76.0}=0x1 +phy_chain_tx_polarity_flip_physical{77.0}=0x0 +phy_chain_tx_polarity_flip_physical{78.0}=0x0 +phy_chain_tx_polarity_flip_physical{79.0}=0x1 +phy_chain_tx_polarity_flip_physical{80.0}=0x1 +phy_chain_tx_polarity_flip_physical{81.0}=0x1 +phy_chain_tx_polarity_flip_physical{82.0}=0x1 +phy_chain_tx_polarity_flip_physical{83.0}=0x0 +phy_chain_tx_polarity_flip_physical{84.0}=0x0 +phy_chain_tx_polarity_flip_physical{85.0}=0x0 +phy_chain_tx_polarity_flip_physical{86.0}=0x0 +phy_chain_tx_polarity_flip_physical{87.0}=0x1 +phy_chain_tx_polarity_flip_physical{88.0}=0x1 +phy_chain_tx_polarity_flip_physical{89.0}=0x0 +phy_chain_tx_polarity_flip_physical{90.0}=0x1 +phy_chain_tx_polarity_flip_physical{91.0}=0x0 +phy_chain_tx_polarity_flip_physical{92.0}=0x1 +phy_chain_tx_polarity_flip_physical{93.0}=0x0 +phy_chain_tx_polarity_flip_physical{94.0}=0x0 +phy_chain_tx_polarity_flip_physical{95.0}=0x1 +phy_chain_tx_polarity_flip_physical{96.0}=0x1 +phy_chain_tx_polarity_flip_physical{97.0}=0x0 +phy_chain_tx_polarity_flip_physical{98.0}=0x0 +phy_chain_tx_polarity_flip_physical{99.0}=0x0 +phy_chain_tx_polarity_flip_physical{100.0}=0x0 +phy_chain_tx_polarity_flip_physical{101.0}=0x1 +phy_chain_tx_polarity_flip_physical{102.0}=0x1 +phy_chain_tx_polarity_flip_physical{103.0}=0x1 +phy_chain_tx_polarity_flip_physical{104.0}=0x0 +phy_chain_tx_polarity_flip_physical{105.0}=0x1 +phy_chain_tx_polarity_flip_physical{106.0}=0x0 +phy_chain_tx_polarity_flip_physical{107.0}=0x0 +phy_chain_tx_polarity_flip_physical{108.0}=0x1 +phy_chain_tx_polarity_flip_physical{109.0}=0x1 +phy_chain_tx_polarity_flip_physical{110.0}=0x0 +phy_chain_tx_polarity_flip_physical{111.0}=0x1 +phy_chain_tx_polarity_flip_physical{112.0}=0x0 +phy_chain_tx_polarity_flip_physical{113.0}=0x0 +phy_chain_tx_polarity_flip_physical{114.0}=0x1 +phy_chain_tx_polarity_flip_physical{115.0}=0x0 +phy_chain_tx_polarity_flip_physical{116.0}=0x0 +phy_chain_tx_polarity_flip_physical{117.0}=0x1 +phy_chain_tx_polarity_flip_physical{118.0}=0x0 +phy_chain_tx_polarity_flip_physical{119.0}=0x0 +phy_chain_tx_polarity_flip_physical{120.0}=0x0 +phy_chain_tx_polarity_flip_physical{121.0}=0x0 +phy_chain_tx_polarity_flip_physical{122.0}=0x0 +phy_chain_tx_polarity_flip_physical{123.0}=0x1 +phy_chain_tx_polarity_flip_physical{124.0}=0x1 +phy_chain_tx_polarity_flip_physical{125.0}=0x1 +phy_chain_tx_polarity_flip_physical{126.0}=0x1 +phy_chain_tx_polarity_flip_physical{127.0}=0x0 +phy_chain_tx_polarity_flip_physical{128.0}=0x0 +phy_chain_tx_polarity_flip_physical{129.0}=0x0 +phy_chain_tx_polarity_flip_physical{130.0}=0x1 +phy_chain_tx_polarity_flip_physical{131.0}=0x0 +phy_chain_tx_polarity_flip_physical{132.0}=0x0 +phy_chain_tx_polarity_flip_physical{133.0}=0x1 +phy_chain_tx_polarity_flip_physical{134.0}=0x0 +phy_chain_tx_polarity_flip_physical{135.0}=0x0 +phy_chain_tx_polarity_flip_physical{136.0}=0x0 +phy_chain_tx_polarity_flip_physical{137.0}=0x0 +phy_chain_tx_polarity_flip_physical{138.0}=0x0 +phy_chain_tx_polarity_flip_physical{139.0}=0x1 +phy_chain_tx_polarity_flip_physical{140.0}=0x1 +phy_chain_tx_polarity_flip_physical{141.0}=0x1 +phy_chain_tx_polarity_flip_physical{142.0}=0x1 +phy_chain_tx_polarity_flip_physical{143.0}=0x0 +phy_chain_tx_polarity_flip_physical{144.0}=0x0 +phy_chain_tx_polarity_flip_physical{145.0}=0x0 +phy_chain_tx_polarity_flip_physical{146.0}=0x1 +phy_chain_tx_polarity_flip_physical{147.0}=0x0 +phy_chain_tx_polarity_flip_physical{148.0}=0x0 +phy_chain_tx_polarity_flip_physical{149.0}=0x1 +phy_chain_tx_polarity_flip_physical{150.0}=0x0 +phy_chain_tx_polarity_flip_physical{151.0}=0x0 +phy_chain_tx_polarity_flip_physical{152.0}=0x0 +phy_chain_tx_polarity_flip_physical{153.0}=0x0 +phy_chain_tx_polarity_flip_physical{154.0}=0x0 +phy_chain_tx_polarity_flip_physical{155.0}=0x0 +phy_chain_tx_polarity_flip_physical{156.0}=0x1 +phy_chain_tx_polarity_flip_physical{157.0}=0x0 +phy_chain_tx_polarity_flip_physical{158.0}=0x1 +phy_chain_tx_polarity_flip_physical{159.0}=0x1 +phy_chain_tx_polarity_flip_physical{160.0}=0x0 +phy_chain_tx_polarity_flip_physical{161.0}=0x0 +phy_chain_tx_polarity_flip_physical{162.0}=0x1 +phy_chain_tx_polarity_flip_physical{163.0}=0x1 +phy_chain_tx_polarity_flip_physical{164.0}=0x0 +phy_chain_tx_polarity_flip_physical{165.0}=0x0 +phy_chain_tx_polarity_flip_physical{166.0}=0x0 +phy_chain_tx_polarity_flip_physical{167.0}=0x0 +phy_chain_tx_polarity_flip_physical{168.0}=0x0 +phy_chain_tx_polarity_flip_physical{169.0}=0x1 +phy_chain_tx_polarity_flip_physical{170.0}=0x0 +phy_chain_tx_polarity_flip_physical{171.0}=0x0 +phy_chain_tx_polarity_flip_physical{172.0}=0x1 +phy_chain_tx_polarity_flip_physical{173.0}=0x0 +phy_chain_tx_polarity_flip_physical{174.0}=0x1 +phy_chain_tx_polarity_flip_physical{175.0}=0x1 +phy_chain_tx_polarity_flip_physical{176.0}=0x0 +phy_chain_tx_polarity_flip_physical{177.0}=0x0 +phy_chain_tx_polarity_flip_physical{178.0}=0x1 +phy_chain_tx_polarity_flip_physical{179.0}=0x1 +phy_chain_tx_polarity_flip_physical{180.0}=0x0 +phy_chain_tx_polarity_flip_physical{181.0}=0x0 +phy_chain_tx_polarity_flip_physical{182.0}=0x0 +phy_chain_tx_polarity_flip_physical{183.0}=0x0 +phy_chain_tx_polarity_flip_physical{184.0}=0x0 +phy_chain_tx_polarity_flip_physical{185.0}=0x1 +phy_chain_tx_polarity_flip_physical{186.0}=0x0 +phy_chain_tx_polarity_flip_physical{187.0}=0x0 +phy_chain_tx_polarity_flip_physical{188.0}=0x1 +phy_chain_tx_polarity_flip_physical{189.0}=0x0 +phy_chain_tx_polarity_flip_physical{190.0}=0x1 +phy_chain_tx_polarity_flip_physical{191.0}=0x1 +phy_chain_tx_polarity_flip_physical{192.0}=0x0 +phy_chain_tx_polarity_flip_physical{193.0}=0x0 +phy_chain_tx_polarity_flip_physical{194.0}=0x1 +phy_chain_tx_polarity_flip_physical{195.0}=0x1 +phy_chain_tx_polarity_flip_physical{196.0}=0x0 +phy_chain_tx_polarity_flip_physical{197.0}=0x0 +phy_chain_tx_polarity_flip_physical{198.0}=0x0 +phy_chain_tx_polarity_flip_physical{199.0}=0x0 +phy_chain_tx_polarity_flip_physical{200.0}=0x0 +phy_chain_tx_polarity_flip_physical{201.0}=0x1 +phy_chain_tx_polarity_flip_physical{202.0}=0x0 +phy_chain_tx_polarity_flip_physical{203.0}=0x0 +phy_chain_tx_polarity_flip_physical{204.0}=0x1 +phy_chain_tx_polarity_flip_physical{205.0}=0x0 +phy_chain_tx_polarity_flip_physical{206.0}=0x1 +phy_chain_tx_polarity_flip_physical{207.0}=0x1 +phy_chain_tx_polarity_flip_physical{208.0}=0x0 +phy_chain_tx_polarity_flip_physical{209.0}=0x0 +phy_chain_tx_polarity_flip_physical{210.0}=0x1 +phy_chain_tx_polarity_flip_physical{211.0}=0x1 +phy_chain_tx_polarity_flip_physical{212.0}=0x0 +phy_chain_tx_polarity_flip_physical{213.0}=0x0 +phy_chain_tx_polarity_flip_physical{214.0}=0x0 +phy_chain_tx_polarity_flip_physical{215.0}=0x0 +phy_chain_tx_polarity_flip_physical{216.0}=0x0 +phy_chain_tx_polarity_flip_physical{217.0}=0x0 +phy_chain_tx_polarity_flip_physical{218.0}=0x1 +phy_chain_tx_polarity_flip_physical{219.0}=0x0 +phy_chain_tx_polarity_flip_physical{220.0}=0x1 +phy_chain_tx_polarity_flip_physical{221.0}=0x0 +phy_chain_tx_polarity_flip_physical{222.0}=0x1 +phy_chain_tx_polarity_flip_physical{223.0}=0x1 +phy_chain_tx_polarity_flip_physical{224.0}=0x0 +phy_chain_tx_polarity_flip_physical{225.0}=0x0 +phy_chain_tx_polarity_flip_physical{226.0}=0x1 +phy_chain_tx_polarity_flip_physical{227.0}=0x1 +phy_chain_tx_polarity_flip_physical{228.0}=0x0 +phy_chain_tx_polarity_flip_physical{229.0}=0x0 +phy_chain_tx_polarity_flip_physical{230.0}=0x1 +phy_chain_tx_polarity_flip_physical{231.0}=0x1 +phy_chain_tx_polarity_flip_physical{232.0}=0x0 +phy_chain_tx_polarity_flip_physical{233.0}=0x0 +phy_chain_tx_polarity_flip_physical{234.0}=0x1 +phy_chain_tx_polarity_flip_physical{235.0}=0x1 +phy_chain_tx_polarity_flip_physical{236.0}=0x0 +phy_chain_tx_polarity_flip_physical{237.0}=0x1 +phy_chain_tx_polarity_flip_physical{238.0}=0x1 +phy_chain_tx_polarity_flip_physical{239.0}=0x0 +phy_chain_tx_polarity_flip_physical{240.0}=0x0 +phy_chain_tx_polarity_flip_physical{241.0}=0x0 +phy_chain_tx_polarity_flip_physical{242.0}=0x1 +phy_chain_tx_polarity_flip_physical{243.0}=0x1 +phy_chain_tx_polarity_flip_physical{244.0}=0x0 +phy_chain_tx_polarity_flip_physical{245.0}=0x0 +phy_chain_tx_polarity_flip_physical{246.0}=0x0 +phy_chain_tx_polarity_flip_physical{247.0}=0x1 +phy_chain_tx_polarity_flip_physical{248.0}=0x1 +phy_chain_tx_polarity_flip_physical{249.0}=0x1 +phy_chain_tx_polarity_flip_physical{250.0}=0x1 +phy_chain_tx_polarity_flip_physical{251.0}=0x0 +phy_chain_tx_polarity_flip_physical{252.0}=0x0 +phy_chain_tx_polarity_flip_physical{253.0}=0x0 +phy_chain_tx_polarity_flip_physical{254.0}=0x0 +phy_chain_tx_polarity_flip_physical{255.0}=0x1 +phy_chain_tx_polarity_flip_physical{256.0}=0x1 +phy_chain_tx_polarity_flip_physical{257.0}=0x0 +phy_chain_tx_polarity_flip_physical{258.0}=0x0 +portmap_1.0=1:400 +portmap_5.0=9:400 +portmap_9.0=17:400 +portmap_13.0=25:400 +portmap_20.0=33:400 +portmap_24.0=41:400 +portmap_28.0=49:400 +portmap_32.0=57:400 +portmap_38.0=257:10 +portmap_40.0=65:400 +portmap_44.0=73:400 +portmap_48.0=81:400 +portmap_52.0=89:400 +portmap_60.0=97:400 +portmap_64.0=105:400 +portmap_68.0=113:400 +portmap_72.0=121:400 +portmap_80.0=129:400 +portmap_84.0=137:400 +portmap_88.0=145:400 +portmap_92.0=153:400 +portmap_100.0=161:400 +portmap_104.0=169:400 +portmap_108.0=177:400 +portmap_112.0=185:400 +portmap_118.0=258:10 +portmap_120.0=193:400 +portmap_124.0=201:400 +portmap_128.0=209:400 +portmap_132.0=217:400 +portmap_140.0=225:400 +portmap_144.0=233:400 +portmap_148.0=241:400 +portmap_152.0=249:400 +port_flex_enable.0=1 +port_init_autoneg=0 +port_phy_addr=0xff +robust_hash_disable_egress_vlan.0=1 +robust_hash_disable_mpls.0=1 +robust_hash_disable_vlan.0=1 +tdma_timeout_usec.0=15000000 +tslam_timeout_usec.0=15000000 + +# Tuning +serdes_core_rx_polarity_flip_physical{1}=0x69 +serdes_core_rx_polarity_flip_physical{9}=0x69 +serdes_core_rx_polarity_flip_physical{17}=0xe4 +serdes_core_rx_polarity_flip_physical{25}=0x62 +serdes_core_rx_polarity_flip_physical{33}=0x33 +serdes_core_rx_polarity_flip_physical{41}=0x66 +serdes_core_rx_polarity_flip_physical{49}=0x24 +serdes_core_rx_polarity_flip_physical{57}=0x66 +serdes_core_rx_polarity_flip_physical{65}=0x33 +serdes_core_rx_polarity_flip_physical{73}=0x63 +serdes_core_rx_polarity_flip_physical{81}=0x33 +serdes_core_rx_polarity_flip_physical{89}=0x63 +serdes_core_rx_polarity_flip_physical{97}=0x1e +serdes_core_rx_polarity_flip_physical{105}=0x63 +serdes_core_rx_polarity_flip_physical{113}=0xdb +serdes_core_rx_polarity_flip_physical{121}=0x69 +serdes_core_rx_polarity_flip_physical{129}=0x24 +serdes_core_rx_polarity_flip_physical{137}=0x66 +serdes_core_rx_polarity_flip_physical{145}=0x33 +serdes_core_rx_polarity_flip_physical{153}=0x5a +serdes_core_rx_polarity_flip_physical{161}=0xf +serdes_core_rx_polarity_flip_physical{169}=0x66 +serdes_core_rx_polarity_flip_physical{177}=0x30 +serdes_core_rx_polarity_flip_physical{185}=0x66 +serdes_core_rx_polarity_flip_physical{193}=0x30 +serdes_core_rx_polarity_flip_physical{201}=0x66 +serdes_core_rx_polarity_flip_physical{209}=0x33 +serdes_core_rx_polarity_flip_physical{217}=0x66 +serdes_core_rx_polarity_flip_physical{225}=0x24 +serdes_core_rx_polarity_flip_physical{233}=0x96 +serdes_core_rx_polarity_flip_physical{241}=0xe1 +serdes_core_rx_polarity_flip_physical{249}=0xc3 +serdes_core_rx_polarity_flip_physical{257}=0x0 +serdes_core_tx_polarity_flip_physical{1}=0x7b +serdes_core_tx_polarity_flip_physical{9}=0x4d +serdes_core_tx_polarity_flip_physical{17}=0x69 +serdes_core_tx_polarity_flip_physical{25}=0x69 +serdes_core_tx_polarity_flip_physical{33}=0x78 +serdes_core_tx_polarity_flip_physical{41}=0xcc +serdes_core_tx_polarity_flip_physical{49}=0xcf +serdes_core_tx_polarity_flip_physical{57}=0xca +serdes_core_tx_polarity_flip_physical{65}=0xc3 +serdes_core_tx_polarity_flip_physical{73}=0xca +serdes_core_tx_polarity_flip_physical{81}=0xc3 +serdes_core_tx_polarity_flip_physical{89}=0xca +serdes_core_tx_polarity_flip_physical{97}=0x70 +serdes_core_tx_polarity_flip_physical{105}=0x59 +serdes_core_tx_polarity_flip_physical{113}=0x12 +serdes_core_tx_polarity_flip_physical{121}=0x3c +serdes_core_tx_polarity_flip_physical{129}=0x12 +serdes_core_tx_polarity_flip_physical{137}=0x3c +serdes_core_tx_polarity_flip_physical{145}=0x12 +serdes_core_tx_polarity_flip_physical{153}=0x68 +serdes_core_tx_polarity_flip_physical{161}=0x6 +serdes_core_tx_polarity_flip_physical{169}=0x69 +serdes_core_tx_polarity_flip_physical{177}=0x6 +serdes_core_tx_polarity_flip_physical{185}=0x69 +serdes_core_tx_polarity_flip_physical{193}=0x6 +serdes_core_tx_polarity_flip_physical{201}=0x69 +serdes_core_tx_polarity_flip_physical{209}=0x6 +serdes_core_tx_polarity_flip_physical{217}=0x6a +serdes_core_tx_polarity_flip_physical{225}=0x66 +serdes_core_tx_polarity_flip_physical{233}=0x36 +serdes_core_tx_polarity_flip_physical{241}=0xc6 +serdes_core_tx_polarity_flip_physical{249}=0xc3 +serdes_core_tx_polarity_flip_physical{257}=0x0 +serdes_tx_taps_cd0=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd1=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd2=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd3=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd4=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd5=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd6=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd7=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd8=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd9=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd10=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd11=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd12=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd13=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd14=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd15=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd16=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd17=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd18=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd19=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd20=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd21=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd22=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd23=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd24=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd25=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd26=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd27=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd28=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd29=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd30=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd31=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd32=pam4:1:34:9:0:0:0 +serdes_tx_taps_cd33=pam4:1:34:9:0:0:0 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/hwsku.json b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/hwsku.json new file mode 100644 index 000000000000..88c76d345678 --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/hwsku.json @@ -0,0 +1,202 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet4": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet8": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet12": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet16": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet20": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet24": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet28": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet36": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet40": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet44": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet48": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet52": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet56": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet60": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet64": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet68": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet72": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet76": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet80": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet84": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet88": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet92": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet96": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet100": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet104": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet108": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet112": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet116": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet120": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet124": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet128": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet132": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet136": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet140": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet144": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet148": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet152": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet156": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet160": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet164": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet168": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet172": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet176": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet180": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet184": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet188": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet192": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet196": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet200": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet204": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet212": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet220": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet228": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet236": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet244": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet252": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet256": { + "default_brkout_mode": "1x10G" + }, + "Ethernet260": { + "default_brkout_mode": "1x10G" + } + } +} \ No newline at end of file diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/port_config.ini b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/port_config.ini new file mode 100644 index 000000000000..3940948a3541 --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/port_config.ini @@ -0,0 +1,67 @@ +# name lanes alias index speed +Ethernet0 77,78,79,80 Ethernet1/1 1 100000 +Ethernet4 65,66,67,68 Ethernet2/1 2 100000 +Ethernet8 85,86,87,88 Ethernet3/1 3 100000 +Ethernet12 89,90,91,92 Ethernet4/1 4 100000 +Ethernet16 109,110,111,112 Ethernet5/1 5 100000 +Ethernet20 97,98,99,100 Ethernet6/1 6 100000 +Ethernet24 5,6,7,8 Ethernet7/1 7 100000 +Ethernet28 13,14,15,16 Ethernet8/1 8 100000 +Ethernet32 25,26,27,28 Ethernet9/1 9 100000 +Ethernet36 21,22,23,24 Ethernet10/1 10 100000 +Ethernet40 37,38,39,40 Ethernet11/1 11 100000 +Ethernet44 45,46,47,48 Ethernet12/1 12 100000 +Ethernet48 57,58,59,60 Ethernet13/1 13 100000 +Ethernet52 53,54,55,56 Ethernet14/1 14 100000 +Ethernet56 117,118,119,120 Ethernet15/1 15 100000 +Ethernet60 121,122,123,124 Ethernet16/1 16 100000 +Ethernet64 141,142,143,144 Ethernet17/1 17 100000 +Ethernet68 133,134,135,136 Ethernet18/1 18 100000 +Ethernet72 197,198,199,200 Ethernet19/1 19 100000 +Ethernet76 205,206,207,208 Ethernet20/1 20 100000 +Ethernet80 217,218,219,220 Ethernet21/1 21 100000 +Ethernet84 213,214,215,216 Ethernet22/1 22 100000 +Ethernet88 229,230,231,232 Ethernet23/1 23 100000 +Ethernet92 237,238,239,240 Ethernet24/1 24 100000 +Ethernet96 249,250,251,252 Ethernet25/1 25 100000 +Ethernet100 245,246,247,248 Ethernet26/1 26 100000 +Ethernet104 149,150,151,152 Ethernet27/1 27 100000 +Ethernet108 153,154,155,156 Ethernet28/1 28 100000 +Ethernet112 173,174,175,176 Ethernet29/1 29 100000 +Ethernet116 161,162,163,164 Ethernet30/1 30 100000 +Ethernet120 181,182,183,184 Ethernet31/1 31 100000 +Ethernet124 185,186,187,188 Ethernet32/1 32 100000 +Ethernet128 69,70,71,72 Ethernet33/1 33 100000 +Ethernet132 73,74,75,76 Ethernet34/1 34 100000 +Ethernet136 93,94,95,96 Ethernet35/1 35 100000 +Ethernet140 81,82,83,84 Ethernet36/1 36 100000 +Ethernet144 101,102,103,104 Ethernet37/1 37 100000 +Ethernet148 105,106,107,108 Ethernet38/1 38 100000 +Ethernet152 9,10,11,12 Ethernet39/1 39 100000 +Ethernet156 1,2,3,4 Ethernet40/1 40 100000 +Ethernet160 17,18,19,20 Ethernet41/1 41 100000 +Ethernet164 29,30,31,32 Ethernet42/1 42 100000 +Ethernet168 41,42,43,44 Ethernet43/1 43 100000 +Ethernet172 33,34,35,36 Ethernet44/1 44 100000 +Ethernet176 49,50,51,52 Ethernet45/1 45 100000 +Ethernet180 61,62,63,64 Ethernet46/1 46 100000 +Ethernet184 125,126,127,128 Ethernet47/1 47 100000 +Ethernet188 113,114,115,116 Ethernet48/1 48 100000 +Ethernet192 129,130,131,132 Ethernet49/1 49 100000 +Ethernet196 137,138,139,140 Ethernet50/1 50 100000 +Ethernet200 201,202,203,204 Ethernet51/1 51 100000 +Ethernet204 193,194,195,196 Ethernet52/1 52 100000 +Ethernet208 209,210,211,212 Ethernet53/1 53 100000 +Ethernet212 221,222,223,224 Ethernet54/1 54 100000 +Ethernet216 233,234,235,236 Ethernet55/1 55 100000 +Ethernet220 225,226,227,228 Ethernet56/1 56 100000 +Ethernet224 241,242,243,244 Ethernet57/1 57 100000 +Ethernet228 253,254,255,256 Ethernet58/1 58 100000 +Ethernet232 157,158,159,160 Ethernet59/1 59 100000 +Ethernet236 145,146,147,148 Ethernet60/1 60 100000 +Ethernet240 165,166,167,168 Ethernet61/1 61 100000 +Ethernet244 169,170,171,172 Ethernet62/1 62 100000 +Ethernet248 189,190,191,192 Ethernet63/1 63 100000 +Ethernet252 177,178,179,180 Ethernet64/1 64 100000 +Ethernet256 257 Ethernet65 65 10000 +Ethernet260 259 Ethernet66 66 10000 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/sai.profile b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/sai.profile new file mode 100644 index 000000000000..f31c68e79ea1 --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/sai.profile @@ -0,0 +1,2 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/th2-a7260cx3-64-flex.config.bcm +SAI_NUM_ECMP_MEMBERS=64 diff --git a/device/arista/x86_64-arista_7260cx3_64/platform.json b/device/arista/x86_64-arista_7260cx3_64/platform.json index d489bd9506c9..a646ce80945e 100644 --- a/device/arista/x86_64-arista_7260cx3_64/platform.json +++ b/device/arista/x86_64-arista_7260cx3_64/platform.json @@ -292,5 +292,1240 @@ } ] }, - "interfaces": {} + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1", + "lanes": "77,78,79,80", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet1/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/3" + ], + "4x25G[10G]": [ + "Ethernet1/1", + "Ethernet1/2", + "Ethernet1/3", + "Ethernet1/4" + ] + } + }, + "Ethernet4": { + "index": "2,2,2,2", + "lanes": "65,66,67,68", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet2/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/3" + ], + "4x25G[10G]": [ + "Ethernet2/1", + "Ethernet2/2", + "Ethernet2/3", + "Ethernet2/4" + ] + } + }, + "Ethernet8": { + "index": "3,3,3,3", + "lanes": "85,86,87,88", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet3/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/3" + ], + "4x25G[10G]": [ + "Ethernet3/1", + "Ethernet3/2", + "Ethernet3/3", + "Ethernet3/4" + ] + } + }, + "Ethernet12": { + "index": "4,4,4,4", + "lanes": "89,90,91,92", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet4/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/3" + ], + "4x25G[10G]": [ + "Ethernet4/1", + "Ethernet4/2", + "Ethernet4/3", + "Ethernet4/4" + ] + } + }, + "Ethernet16": { + "index": "5,5,5,5", + "lanes": "109,110,111,112", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet5/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/3" + ], + "4x25G[10G]": [ + "Ethernet5/1", + "Ethernet5/2", + "Ethernet5/3", + "Ethernet5/4" + ] + } + }, + "Ethernet20": { + "index": "6,6,6,6", + "lanes": "97,98,99,100", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet6/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/3" + ], + "4x25G[10G]": [ + "Ethernet6/1", + "Ethernet6/2", + "Ethernet6/3", + "Ethernet6/4" + ] + } + }, + "Ethernet24": { + "index": "7,7,7,7", + "lanes": "5,6,7,8", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet7/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/3" + ], + "4x25G[10G]": [ + "Ethernet7/1", + "Ethernet7/2", + "Ethernet7/3", + "Ethernet7/4" + ] + } + }, + "Ethernet28": { + "index": "8,8,8,8", + "lanes": "13,14,15,16", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet8/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/3" + ], + "4x25G[10G]": [ + "Ethernet8/1", + "Ethernet8/2", + "Ethernet8/3", + "Ethernet8/4" + ] + } + }, + "Ethernet32": { + "index": "9,9,9,9", + "lanes": "25,26,27,28", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet9/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/3" + ], + "4x25G[10G]": [ + "Ethernet9/1", + "Ethernet9/2", + "Ethernet9/3", + "Ethernet9/4" + ] + } + }, + "Ethernet36": { + "index": "10,10,10,10", + "lanes": "21,22,23,24", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet10/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/3" + ], + "4x25G[10G]": [ + "Ethernet10/1", + "Ethernet10/2", + "Ethernet10/3", + "Ethernet10/4" + ] + } + }, + "Ethernet40": { + "index": "11,11,11,11", + "lanes": "37,38,39,40", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet11/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/3" + ], + "4x25G[10G]": [ + "Ethernet11/1", + "Ethernet11/2", + "Ethernet11/3", + "Ethernet11/4" + ] + } + }, + "Ethernet44": { + "index": "12,12,12,12", + "lanes": "45,46,47,48", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet12/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/3" + ], + "4x25G[10G]": [ + "Ethernet12/1", + "Ethernet12/2", + "Ethernet12/3", + "Ethernet12/4" + ] + } + }, + "Ethernet48": { + "index": "13,13,13,13", + "lanes": "57,58,59,60", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet13/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/3" + ], + "4x25G[10G]": [ + "Ethernet13/1", + "Ethernet13/2", + "Ethernet13/3", + "Ethernet13/4" + ] + } + }, + "Ethernet52": { + "index": "14,14,14,14", + "lanes": "53,54,55,56", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet14/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/3" + ], + "4x25G[10G]": [ + "Ethernet14/1", + "Ethernet14/2", + "Ethernet14/3", + "Ethernet14/4" + ] + } + }, + "Ethernet56": { + "index": "15,15,15,15", + "lanes": "117,118,119,120", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet15/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/3" + ], + "4x25G[10G]": [ + "Ethernet15/1", + "Ethernet15/2", + "Ethernet15/3", + "Ethernet15/4" + ] + } + }, + "Ethernet60": { + "index": "16,16,16,16", + "lanes": "121,122,123,124", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet16/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/3" + ], + "4x25G[10G]": [ + "Ethernet16/1", + "Ethernet16/2", + "Ethernet16/3", + "Ethernet16/4" + ] + } + }, + "Ethernet64": { + "index": "17,17,17,17", + "lanes": "141,142,143,144", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet17/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/3" + ], + "4x25G[10G]": [ + "Ethernet17/1", + "Ethernet17/2", + "Ethernet17/3", + "Ethernet17/4" + ] + } + }, + "Ethernet68": { + "index": "18,18,18,18", + "lanes": "133,134,135,136", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet18/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/3" + ], + "4x25G[10G]": [ + "Ethernet18/1", + "Ethernet18/2", + "Ethernet18/3", + "Ethernet18/4" + ] + } + }, + "Ethernet72": { + "index": "19,19,19,19", + "lanes": "197,198,199,200", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet19/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/3" + ], + "4x25G[10G]": [ + "Ethernet19/1", + "Ethernet19/2", + "Ethernet19/3", + "Ethernet19/4" + ] + } + }, + "Ethernet76": { + "index": "20,20,20,20", + "lanes": "205,206,207,208", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet20/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/3" + ], + "4x25G[10G]": [ + "Ethernet20/1", + "Ethernet20/2", + "Ethernet20/3", + "Ethernet20/4" + ] + } + }, + "Ethernet80": { + "index": "21,21,21,21", + "lanes": "217,218,219,220", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet21/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/3" + ], + "4x25G[10G]": [ + "Ethernet21/1", + "Ethernet21/2", + "Ethernet21/3", + "Ethernet21/4" + ] + } + }, + "Ethernet84": { + "index": "22,22,22,22", + "lanes": "213,214,215,216", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet22/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/3" + ], + "4x25G[10G]": [ + "Ethernet22/1", + "Ethernet22/2", + "Ethernet22/3", + "Ethernet22/4" + ] + } + }, + "Ethernet88": { + "index": "23,23,23,23", + "lanes": "229,230,231,232", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet23/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/3" + ], + "4x25G[10G]": [ + "Ethernet23/1", + "Ethernet23/2", + "Ethernet23/3", + "Ethernet23/4" + ] + } + }, + "Ethernet92": { + "index": "24,24,24,24", + "lanes": "237,238,239,240", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet24/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/3" + ], + "4x25G[10G]": [ + "Ethernet24/1", + "Ethernet24/2", + "Ethernet24/3", + "Ethernet24/4" + ] + } + }, + "Ethernet96": { + "index": "25,25,25,25", + "lanes": "249,250,251,252", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet25/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/3" + ], + "4x25G[10G]": [ + "Ethernet25/1", + "Ethernet25/2", + "Ethernet25/3", + "Ethernet25/4" + ] + } + }, + "Ethernet100": { + "index": "26,26,26,26", + "lanes": "245,246,247,248", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet26/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/3" + ], + "4x25G[10G]": [ + "Ethernet26/1", + "Ethernet26/2", + "Ethernet26/3", + "Ethernet26/4" + ] + } + }, + "Ethernet104": { + "index": "27,27,27,27", + "lanes": "149,150,151,152", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet27/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/3" + ], + "4x25G[10G]": [ + "Ethernet27/1", + "Ethernet27/2", + "Ethernet27/3", + "Ethernet27/4" + ] + } + }, + "Ethernet108": { + "index": "28,28,28,28", + "lanes": "153,154,155,156", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet28/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/3" + ], + "4x25G[10G]": [ + "Ethernet28/1", + "Ethernet28/2", + "Ethernet28/3", + "Ethernet28/4" + ] + } + }, + "Ethernet112": { + "index": "29,29,29,29", + "lanes": "173,174,175,176", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet29/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/3" + ], + "4x25G[10G]": [ + "Ethernet29/1", + "Ethernet29/2", + "Ethernet29/3", + "Ethernet29/4" + ] + } + }, + "Ethernet116": { + "index": "30,30,30,30", + "lanes": "161,162,163,164", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet30/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/3" + ], + "4x25G[10G]": [ + "Ethernet30/1", + "Ethernet30/2", + "Ethernet30/3", + "Ethernet30/4" + ] + } + }, + "Ethernet120": { + "index": "31,31,31,31", + "lanes": "181,182,183,184", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet31/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/3" + ], + "4x25G[10G]": [ + "Ethernet31/1", + "Ethernet31/2", + "Ethernet31/3", + "Ethernet31/4" + ] + } + }, + "Ethernet124": { + "index": "32,32,32,32", + "lanes": "185,186,187,188", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet32/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/3" + ], + "4x25G[10G]": [ + "Ethernet32/1", + "Ethernet32/2", + "Ethernet32/3", + "Ethernet32/4" + ] + } + }, + "Ethernet128": { + "index": "33,33,33,33", + "lanes": "69,70,71,72", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet33/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet33/1", + "Ethernet33/3" + ], + "4x25G[10G]": [ + "Ethernet33/1", + "Ethernet33/2", + "Ethernet33/3", + "Ethernet33/4" + ] + } + }, + "Ethernet132": { + "index": "34,34,34,34", + "lanes": "73,74,75,76", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet34/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet34/1", + "Ethernet34/3" + ], + "4x25G[10G]": [ + "Ethernet34/1", + "Ethernet34/2", + "Ethernet34/3", + "Ethernet34/4" + ] + } + }, + "Ethernet136": { + "index": "35,35,35,35", + "lanes": "93,94,95,96", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet35/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet35/1", + "Ethernet35/3" + ], + "4x25G[10G]": [ + "Ethernet35/1", + "Ethernet35/2", + "Ethernet35/3", + "Ethernet35/4" + ] + } + }, + "Ethernet140": { + "index": "36,36,36,36", + "lanes": "81,82,83,84", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet36/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet36/1", + "Ethernet36/3" + ], + "4x25G[10G]": [ + "Ethernet36/1", + "Ethernet36/2", + "Ethernet36/3", + "Ethernet36/4" + ] + } + }, + "Ethernet144": { + "index": "37,37,37,37", + "lanes": "101,102,103,104", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet37/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet37/1", + "Ethernet37/3" + ], + "4x25G[10G]": [ + "Ethernet37/1", + "Ethernet37/2", + "Ethernet37/3", + "Ethernet37/4" + ] + } + }, + "Ethernet148": { + "index": "38,38,38,38", + "lanes": "105,106,107,108", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet38/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet38/1", + "Ethernet38/3" + ], + "4x25G[10G]": [ + "Ethernet38/1", + "Ethernet38/2", + "Ethernet38/3", + "Ethernet38/4" + ] + } + }, + "Ethernet152": { + "index": "39,39,39,39", + "lanes": "9,10,11,12", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet39/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet39/1", + "Ethernet39/3" + ], + "4x25G[10G]": [ + "Ethernet39/1", + "Ethernet39/2", + "Ethernet39/3", + "Ethernet39/4" + ] + } + }, + "Ethernet156": { + "index": "40,40,40,40", + "lanes": "1,2,3,4", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet40/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet40/1", + "Ethernet40/3" + ], + "4x25G[10G]": [ + "Ethernet40/1", + "Ethernet40/2", + "Ethernet40/3", + "Ethernet40/4" + ] + } + }, + "Ethernet160": { + "index": "41,41,41,41", + "lanes": "17,18,19,20", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet41/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet41/1", + "Ethernet41/3" + ], + "4x25G[10G]": [ + "Ethernet41/1", + "Ethernet41/2", + "Ethernet41/3", + "Ethernet41/4" + ] + } + }, + "Ethernet164": { + "index": "42,42,42,42", + "lanes": "29,30,31,32", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet42/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet42/1", + "Ethernet42/3" + ], + "4x25G[10G]": [ + "Ethernet42/1", + "Ethernet42/2", + "Ethernet42/3", + "Ethernet42/4" + ] + } + }, + "Ethernet168": { + "index": "43,43,43,43", + "lanes": "41,42,43,44", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet43/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet43/1", + "Ethernet43/3" + ], + "4x25G[10G]": [ + "Ethernet43/1", + "Ethernet43/2", + "Ethernet43/3", + "Ethernet43/4" + ] + } + }, + "Ethernet172": { + "index": "44,44,44,44", + "lanes": "33,34,35,36", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet44/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet44/1", + "Ethernet44/3" + ], + "4x25G[10G]": [ + "Ethernet44/1", + "Ethernet44/2", + "Ethernet44/3", + "Ethernet44/4" + ] + } + }, + "Ethernet176": { + "index": "45,45,45,45", + "lanes": "49,50,51,52", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet45/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet45/1", + "Ethernet45/3" + ], + "4x25G[10G]": [ + "Ethernet45/1", + "Ethernet45/2", + "Ethernet45/3", + "Ethernet45/4" + ] + } + }, + "Ethernet180": { + "index": "46,46,46,46", + "lanes": "61,62,63,64", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet46/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet46/1", + "Ethernet46/3" + ], + "4x25G[10G]": [ + "Ethernet46/1", + "Ethernet46/2", + "Ethernet46/3", + "Ethernet46/4" + ] + } + }, + "Ethernet184": { + "index": "47,47,47,47", + "lanes": "125,126,127,128", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet47/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet47/1", + "Ethernet47/3" + ], + "4x25G[10G]": [ + "Ethernet47/1", + "Ethernet47/2", + "Ethernet47/3", + "Ethernet47/4" + ] + } + }, + "Ethernet188": { + "index": "48,48,48,48", + "lanes": "113,114,115,116", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet48/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet48/1", + "Ethernet48/3" + ], + "4x25G[10G]": [ + "Ethernet48/1", + "Ethernet48/2", + "Ethernet48/3", + "Ethernet48/4" + ] + } + }, + "Ethernet192": { + "index": "49,49,49,49", + "lanes": "129,130,131,132", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet49/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet49/1", + "Ethernet49/3" + ], + "4x25G[10G]": [ + "Ethernet49/1", + "Ethernet49/2", + "Ethernet49/3", + "Ethernet49/4" + ] + } + }, + "Ethernet196": { + "index": "50,50,50,50", + "lanes": "137,138,139,140", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet50/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet50/1", + "Ethernet50/3" + ], + "4x25G[10G]": [ + "Ethernet50/1", + "Ethernet50/2", + "Ethernet50/3", + "Ethernet50/4" + ] + } + }, + "Ethernet200": { + "index": "51,51,51,51", + "lanes": "201,202,203,204", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet51/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet51/1", + "Ethernet51/3" + ], + "4x25G[10G]": [ + "Ethernet51/1", + "Ethernet51/2", + "Ethernet51/3", + "Ethernet51/4" + ] + } + }, + "Ethernet204": { + "index": "52,52,52,52", + "lanes": "193,194,195,196", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet52/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet52/1", + "Ethernet52/3" + ], + "4x25G[10G]": [ + "Ethernet52/1", + "Ethernet52/2", + "Ethernet52/3", + "Ethernet52/4" + ] + } + }, + "Ethernet208": { + "index": "53,53,53,53", + "lanes": "209,210,211,212", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet53/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet53/1", + "Ethernet53/3" + ], + "4x25G[10G]": [ + "Ethernet53/1", + "Ethernet53/2", + "Ethernet53/3", + "Ethernet53/4" + ] + } + }, + "Ethernet212": { + "index": "54,54,54,54", + "lanes": "221,222,223,224", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet54/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet54/1", + "Ethernet54/3" + ], + "4x25G[10G]": [ + "Ethernet54/1", + "Ethernet54/2", + "Ethernet54/3", + "Ethernet54/4" + ] + } + }, + "Ethernet216": { + "index": "55,55,55,55", + "lanes": "233,234,235,236", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet55/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet55/1", + "Ethernet55/3" + ], + "4x25G[10G]": [ + "Ethernet55/1", + "Ethernet55/2", + "Ethernet55/3", + "Ethernet55/4" + ] + } + }, + "Ethernet220": { + "index": "56,56,56,56", + "lanes": "225,226,227,228", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet56/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet56/1", + "Ethernet56/3" + ], + "4x25G[10G]": [ + "Ethernet56/1", + "Ethernet56/2", + "Ethernet56/3", + "Ethernet56/4" + ] + } + }, + "Ethernet224": { + "index": "57,57,57,57", + "lanes": "241,242,243,244", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet57/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet57/1", + "Ethernet57/3" + ], + "4x25G[10G]": [ + "Ethernet57/1", + "Ethernet57/2", + "Ethernet57/3", + "Ethernet57/4" + ] + } + }, + "Ethernet228": { + "index": "58,58,58,58", + "lanes": "253,254,255,256", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet58/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet58/1", + "Ethernet58/3" + ], + "4x25G[10G]": [ + "Ethernet58/1", + "Ethernet58/2", + "Ethernet58/3", + "Ethernet58/4" + ] + } + }, + "Ethernet232": { + "index": "59,59,59,59", + "lanes": "157,158,159,160", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet59/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet59/1", + "Ethernet59/3" + ], + "4x25G[10G]": [ + "Ethernet59/1", + "Ethernet59/2", + "Ethernet59/3", + "Ethernet59/4" + ] + } + }, + "Ethernet236": { + "index": "60,60,60,60", + "lanes": "145,146,147,148", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet60/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet60/1", + "Ethernet60/3" + ], + "4x25G[10G]": [ + "Ethernet60/1", + "Ethernet60/2", + "Ethernet60/3", + "Ethernet60/4" + ] + } + }, + "Ethernet240": { + "index": "61,61,61,61", + "lanes": "165,166,167,168", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet61/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet61/1", + "Ethernet61/3" + ], + "4x25G[10G]": [ + "Ethernet61/1", + "Ethernet61/2", + "Ethernet61/3", + "Ethernet61/4" + ] + } + }, + "Ethernet244": { + "index": "62,62,62,62", + "lanes": "169,170,171,172", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet62/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet62/1", + "Ethernet62/3" + ], + "4x25G[10G]": [ + "Ethernet62/1", + "Ethernet62/2", + "Ethernet62/3", + "Ethernet62/4" + ] + } + }, + "Ethernet248": { + "index": "63,63,63,63", + "lanes": "189,190,191,192", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet63/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet63/1", + "Ethernet63/3" + ], + "4x25G[10G]": [ + "Ethernet63/1", + "Ethernet63/2", + "Ethernet63/3", + "Ethernet63/4" + ] + } + }, + "Ethernet252": { + "index": "64,64,64,64", + "lanes": "177,178,179,180", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet64/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet64/1", + "Ethernet64/3" + ], + "4x25G[10G]": [ + "Ethernet64/1", + "Ethernet64/2", + "Ethernet64/3", + "Ethernet64/4" + ] + } + }, + "Ethernet256": { + "index": "65", + "lanes": "257", + "breakout_modes": { + "1x10G": [ + "Ethernet65" + ] + } + }, + "Ethernet260": { + "index": "66", + "lanes": "259", + "breakout_modes": { + "1x10G": [ + "Ethernet66" + ] + } + } + } } \ No newline at end of file diff --git a/device/arista/x86_64-arista_7260cx3_64/th2-a7260cx3-64-flex.config.bcm b/device/arista/x86_64-arista_7260cx3_64/th2-a7260cx3-64-flex.config.bcm new file mode 100644 index 000000000000..6348e6c390cd --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/th2-a7260cx3-64-flex.config.bcm @@ -0,0 +1,876 @@ +PHY_AN_ALLOW_PLL_CHANGE=1 +arl_clean_timeout_usec=15000000 +asf_mem_profile=2 +bcm_num_cos=10 +bcm_stat_flags=1 +bcm_stat_jumbo=9236 +cdma_timeout_usec=15000000 +core_clock_frequency=1700 +dma_desc_timeout_usec=15000000 +dpp_clock_ratio=2:3 +higig2_hdr_mode=1 +ipv6_lpm_128b_enable=1 +l2xmsg_mode=1 +l3_alpm_enable=2 +lpm_scaling_enable=0 +max_vp_lags=0 +mem_scan_enable=1 +miim_intr_enable=0 +module_64ports=1 +os=unix +oversubscribe_mode=1 +pbmp_xport_xe=0x3fffd0000ffff40003fffc0001fffe +phy_an_allow_pll_change_hg=0 +phy_an_c37_66=2 +phy_an_c37_100=2 +phy_an_c73_1=1 +phy_an_c73_2=1 +phy_an_c73_3=1 +phy_an_c73_4=1 +phy_an_c73_5=1 +phy_an_c73_6=1 +phy_an_c73_7=1 +phy_an_c73_8=1 +phy_an_c73_9=1 +phy_an_c73_10=1 +phy_an_c73_11=1 +phy_an_c73_12=1 +phy_an_c73_13=1 +phy_an_c73_14=1 +phy_an_c73_15=1 +phy_an_c73_16=1 +phy_an_c73_17=1 +phy_an_c73_18=1 +phy_an_c73_19=1 +phy_an_c73_20=1 +phy_an_c73_21=1 +phy_an_c73_22=1 +phy_an_c73_23=1 +phy_an_c73_24=1 +phy_an_c73_25=1 +phy_an_c73_26=1 +phy_an_c73_27=1 +phy_an_c73_28=1 +phy_an_c73_29=1 +phy_an_c73_30=1 +phy_an_c73_31=1 +phy_an_c73_32=1 +phy_an_c73_34=1 +phy_an_c73_35=1 +phy_an_c73_36=1 +phy_an_c73_37=1 +phy_an_c73_38=1 +phy_an_c73_39=1 +phy_an_c73_40=1 +phy_an_c73_41=1 +phy_an_c73_42=1 +phy_an_c73_43=1 +phy_an_c73_44=1 +phy_an_c73_45=1 +phy_an_c73_46=1 +phy_an_c73_47=1 +phy_an_c73_48=1 +phy_an_c73_49=1 +phy_an_c73_50=1 +phy_an_c73_51=1 +phy_an_c73_52=1 +phy_an_c73_53=1 +phy_an_c73_54=1 +phy_an_c73_55=1 +phy_an_c73_56=1 +phy_an_c73_57=1 +phy_an_c73_58=1 +phy_an_c73_59=1 +phy_an_c73_60=1 +phy_an_c73_61=1 +phy_an_c73_62=1 +phy_an_c73_63=1 +phy_an_c73_64=1 +phy_an_c73_65=1 +phy_an_c73_66=0 +phy_an_c73_68=1 +phy_an_c73_69=1 +phy_an_c73_70=1 +phy_an_c73_71=1 +phy_an_c73_72=1 +phy_an_c73_73=1 +phy_an_c73_74=1 +phy_an_c73_75=1 +phy_an_c73_76=1 +phy_an_c73_77=1 +phy_an_c73_78=1 +phy_an_c73_79=1 +phy_an_c73_80=1 +phy_an_c73_81=1 +phy_an_c73_82=1 +phy_an_c73_83=1 +phy_an_c73_84=1 +phy_an_c73_85=1 +phy_an_c73_86=1 +phy_an_c73_87=1 +phy_an_c73_88=1 +phy_an_c73_89=1 +phy_an_c73_90=1 +phy_an_c73_91=1 +phy_an_c73_92=1 +phy_an_c73_93=1 +phy_an_c73_94=1 +phy_an_c73_95=1 +phy_an_c73_96=1 +phy_an_c73_97=1 +phy_an_c73_98=1 +phy_an_c73_99=1 +phy_an_c73_100=0 +phy_an_c73_102=1 +phy_an_c73_103=1 +phy_an_c73_104=1 +phy_an_c73_105=1 +phy_an_c73_106=1 +phy_an_c73_107=1 +phy_an_c73_108=1 +phy_an_c73_109=1 +phy_an_c73_110=1 +phy_an_c73_111=1 +phy_an_c73_112=1 +phy_an_c73_113=1 +phy_an_c73_114=1 +phy_an_c73_115=1 +phy_an_c73_116=1 +phy_an_c73_117=1 +phy_an_c73_118=1 +phy_an_c73_119=1 +phy_an_c73_120=1 +phy_an_c73_121=1 +phy_an_c73_122=1 +phy_an_c73_123=1 +phy_an_c73_124=1 +phy_an_c73_125=1 +phy_an_c73_126=1 +phy_an_c73_127=1 +phy_an_c73_128=1 +phy_an_c73_129=1 +phy_an_c73_130=1 +phy_an_c73_131=1 +phy_an_c73_132=1 +phy_an_c73_133=1 +phy_chain_rx_lane_map_physical{1.0}=0x3210 +phy_chain_rx_lane_map_physical{5.0}=0x3201 +phy_chain_rx_lane_map_physical{9.0}=0x0321 +phy_chain_rx_lane_map_physical{13.0}=0x0321 +phy_chain_rx_lane_map_physical{17.0}=0x3210 +phy_chain_rx_lane_map_physical{21.0}=0x3021 +phy_chain_rx_lane_map_physical{25.0}=0x2301 +phy_chain_rx_lane_map_physical{29.0}=0x3021 +phy_chain_rx_lane_map_physical{33.0}=0x1302 +phy_chain_rx_lane_map_physical{37.0}=0x2031 +phy_chain_rx_lane_map_physical{41.0}=0x3021 +phy_chain_rx_lane_map_physical{45.0}=0x1023 +phy_chain_rx_lane_map_physical{49.0}=0x0213 +phy_chain_rx_lane_map_physical{53.0}=0x3201 +phy_chain_rx_lane_map_physical{57.0}=0x2013 +phy_chain_rx_lane_map_physical{61.0}=0x0213 +phy_chain_rx_lane_map_physical{65.0}=0x1203 +phy_chain_rx_lane_map_physical{69.0}=0x0213 +phy_chain_rx_lane_map_physical{73.0}=0x0213 +phy_chain_rx_lane_map_physical{77.0}=0x3120 +phy_chain_rx_lane_map_physical{81.0}=0x0213 +phy_chain_rx_lane_map_physical{85.0}=0x2031 +phy_chain_rx_lane_map_physical{89.0}=0x2031 +phy_chain_rx_lane_map_physical{93.0}=0x3120 +phy_chain_rx_lane_map_physical{97.0}=0x1203 +phy_chain_rx_lane_map_physical{101.0}=0x0123 +phy_chain_rx_lane_map_physical{105.0}=0x0123 +phy_chain_rx_lane_map_physical{109.0}=0x0123 +phy_chain_rx_lane_map_physical{113.0}=0x2301 +phy_chain_rx_lane_map_physical{117.0}=0x3210 +phy_chain_rx_lane_map_physical{121.0}=0x3210 +phy_chain_rx_lane_map_physical{125.0}=0x1203 +phy_chain_rx_lane_map_physical{129.0}=0x3210 +phy_chain_rx_lane_map_physical{133.0}=0x1032 +phy_chain_rx_lane_map_physical{137.0}=0x3210 +phy_chain_rx_lane_map_physical{141.0}=0x0123 +phy_chain_rx_lane_map_physical{145.0}=0x3210 +phy_chain_rx_lane_map_physical{149.0}=0x2310 +phy_chain_rx_lane_map_physical{153.0}=0x0132 +phy_chain_rx_lane_map_physical{157.0}=0x1302 +phy_chain_rx_lane_map_physical{161.0}=0x3021 +phy_chain_rx_lane_map_physical{165.0}=0x2031 +phy_chain_rx_lane_map_physical{169.0}=0x2031 +phy_chain_rx_lane_map_physical{173.0}=0x1302 +phy_chain_rx_lane_map_physical{177.0}=0x2031 +phy_chain_rx_lane_map_physical{181.0}=0x0213 +phy_chain_rx_lane_map_physical{185.0}=0x0213 +phy_chain_rx_lane_map_physical{189.0}=0x1302 +phy_chain_rx_lane_map_physical{193.0}=0x3120 +phy_chain_rx_lane_map_physical{197.0}=0x0231 +phy_chain_rx_lane_map_physical{201.0}=0x2031 +phy_chain_rx_lane_map_physical{205.0}=0x0213 +phy_chain_rx_lane_map_physical{209.0}=0x2013 +phy_chain_rx_lane_map_physical{213.0}=0x3021 +phy_chain_rx_lane_map_physical{217.0}=0x0231 +phy_chain_rx_lane_map_physical{221.0}=0x2031 +phy_chain_rx_lane_map_physical{225.0}=0x1203 +phy_chain_rx_lane_map_physical{229.0}=0x1230 +phy_chain_rx_lane_map_physical{233.0}=0x3021 +phy_chain_rx_lane_map_physical{237.0}=0x1032 +phy_chain_rx_lane_map_physical{241.0}=0x2301 +phy_chain_rx_lane_map_physical{245.0}=0x0321 +phy_chain_rx_lane_map_physical{249.0}=0x2301 +phy_chain_rx_lane_map_physical{253.0}=0x2301 +phy_chain_rx_lane_map_physical{257.0}=0x3210 +phy_chain_rx_polarity_flip_physical{1.0}=0x1 +phy_chain_rx_polarity_flip_physical{2.0}=0x0 +phy_chain_rx_polarity_flip_physical{3.0}=0x1 +phy_chain_rx_polarity_flip_physical{4.0}=0x0 +phy_chain_rx_polarity_flip_physical{5.0}=0x1 +phy_chain_rx_polarity_flip_physical{6.0}=0x0 +phy_chain_rx_polarity_flip_physical{7.0}=0x0 +phy_chain_rx_polarity_flip_physical{8.0}=0x1 +phy_chain_rx_polarity_flip_physical{9.0}=0x1 +phy_chain_rx_polarity_flip_physical{10.0}=0x0 +phy_chain_rx_polarity_flip_physical{11.0}=0x1 +phy_chain_rx_polarity_flip_physical{12.0}=0x1 +phy_chain_rx_polarity_flip_physical{13.0}=0x1 +phy_chain_rx_polarity_flip_physical{14.0}=0x0 +phy_chain_rx_polarity_flip_physical{15.0}=0x1 +phy_chain_rx_polarity_flip_physical{16.0}=0x0 +phy_chain_rx_polarity_flip_physical{17.0}=0x1 +phy_chain_rx_polarity_flip_physical{18.0}=0x0 +phy_chain_rx_polarity_flip_physical{19.0}=0x1 +phy_chain_rx_polarity_flip_physical{20.0}=0x0 +phy_chain_rx_polarity_flip_physical{21.0}=0x0 +phy_chain_rx_polarity_flip_physical{22.0}=0x0 +phy_chain_rx_polarity_flip_physical{23.0}=0x1 +phy_chain_rx_polarity_flip_physical{24.0}=0x0 +phy_chain_rx_polarity_flip_physical{25.0}=0x1 +phy_chain_rx_polarity_flip_physical{26.0}=0x0 +phy_chain_rx_polarity_flip_physical{27.0}=0x1 +phy_chain_rx_polarity_flip_physical{28.0}=0x0 +phy_chain_rx_polarity_flip_physical{29.0}=0x0 +phy_chain_rx_polarity_flip_physical{30.0}=0x0 +phy_chain_rx_polarity_flip_physical{31.0}=0x0 +phy_chain_rx_polarity_flip_physical{32.0}=0x1 +phy_chain_rx_polarity_flip_physical{33.0}=0x0 +phy_chain_rx_polarity_flip_physical{34.0}=0x0 +phy_chain_rx_polarity_flip_physical{35.0}=0x1 +phy_chain_rx_polarity_flip_physical{36.0}=0x1 +phy_chain_rx_polarity_flip_physical{37.0}=0x1 +phy_chain_rx_polarity_flip_physical{38.0}=0x1 +phy_chain_rx_polarity_flip_physical{39.0}=0x0 +phy_chain_rx_polarity_flip_physical{40.0}=0x0 +phy_chain_rx_polarity_flip_physical{41.0}=0x0 +phy_chain_rx_polarity_flip_physical{42.0}=0x1 +phy_chain_rx_polarity_flip_physical{43.0}=0x1 +phy_chain_rx_polarity_flip_physical{44.0}=0x1 +phy_chain_rx_polarity_flip_physical{45.0}=0x1 +phy_chain_rx_polarity_flip_physical{46.0}=0x0 +phy_chain_rx_polarity_flip_physical{47.0}=0x0 +phy_chain_rx_polarity_flip_physical{48.0}=0x1 +phy_chain_rx_polarity_flip_physical{49.0}=0x1 +phy_chain_rx_polarity_flip_physical{50.0}=0x1 +phy_chain_rx_polarity_flip_physical{51.0}=0x0 +phy_chain_rx_polarity_flip_physical{52.0}=0x0 +phy_chain_rx_polarity_flip_physical{53.0}=0x0 +phy_chain_rx_polarity_flip_physical{54.0}=0x0 +phy_chain_rx_polarity_flip_physical{55.0}=0x1 +phy_chain_rx_polarity_flip_physical{56.0}=0x0 +phy_chain_rx_polarity_flip_physical{57.0}=0x0 +phy_chain_rx_polarity_flip_physical{58.0}=0x0 +phy_chain_rx_polarity_flip_physical{59.0}=0x1 +phy_chain_rx_polarity_flip_physical{60.0}=0x1 +phy_chain_rx_polarity_flip_physical{61.0}=0x0 +phy_chain_rx_polarity_flip_physical{62.0}=0x0 +phy_chain_rx_polarity_flip_physical{63.0}=0x1 +phy_chain_rx_polarity_flip_physical{64.0}=0x1 +phy_chain_rx_polarity_flip_physical{65.0}=0x1 +phy_chain_rx_polarity_flip_physical{66.0}=0x1 +phy_chain_rx_polarity_flip_physical{67.0}=0x0 +phy_chain_rx_polarity_flip_physical{68.0}=0x1 +phy_chain_rx_polarity_flip_physical{69.0}=0x0 +phy_chain_rx_polarity_flip_physical{70.0}=0x0 +phy_chain_rx_polarity_flip_physical{71.0}=0x1 +phy_chain_rx_polarity_flip_physical{72.0}=0x1 +phy_chain_rx_polarity_flip_physical{73.0}=0x1 +phy_chain_rx_polarity_flip_physical{74.0}=0x1 +phy_chain_rx_polarity_flip_physical{75.0}=0x0 +phy_chain_rx_polarity_flip_physical{76.0}=0x0 +phy_chain_rx_polarity_flip_physical{77.0}=0x0 +phy_chain_rx_polarity_flip_physical{78.0}=0x0 +phy_chain_rx_polarity_flip_physical{79.0}=0x1 +phy_chain_rx_polarity_flip_physical{80.0}=0x1 +phy_chain_rx_polarity_flip_physical{81.0}=0x1 +phy_chain_rx_polarity_flip_physical{82.0}=0x1 +phy_chain_rx_polarity_flip_physical{83.0}=0x0 +phy_chain_rx_polarity_flip_physical{84.0}=0x0 +phy_chain_rx_polarity_flip_physical{85.0}=0x1 +phy_chain_rx_polarity_flip_physical{86.0}=0x1 +phy_chain_rx_polarity_flip_physical{87.0}=0x0 +phy_chain_rx_polarity_flip_physical{88.0}=0x0 +phy_chain_rx_polarity_flip_physical{89.0}=0x0 +phy_chain_rx_polarity_flip_physical{90.0}=0x0 +phy_chain_rx_polarity_flip_physical{91.0}=0x1 +phy_chain_rx_polarity_flip_physical{92.0}=0x1 +phy_chain_rx_polarity_flip_physical{93.0}=0x0 +phy_chain_rx_polarity_flip_physical{94.0}=0x0 +phy_chain_rx_polarity_flip_physical{95.0}=0x1 +phy_chain_rx_polarity_flip_physical{96.0}=0x0 +phy_chain_rx_polarity_flip_physical{97.0}=0x1 +phy_chain_rx_polarity_flip_physical{98.0}=0x1 +phy_chain_rx_polarity_flip_physical{99.0}=0x0 +phy_chain_rx_polarity_flip_physical{100.0}=0x1 +phy_chain_rx_polarity_flip_physical{101.0}=0x1 +phy_chain_rx_polarity_flip_physical{102.0}=0x0 +phy_chain_rx_polarity_flip_physical{103.0}=0x1 +phy_chain_rx_polarity_flip_physical{104.0}=0x0 +phy_chain_rx_polarity_flip_physical{105.0}=0x1 +phy_chain_rx_polarity_flip_physical{106.0}=0x0 +phy_chain_rx_polarity_flip_physical{107.0}=0x1 +phy_chain_rx_polarity_flip_physical{108.0}=0x0 +phy_chain_rx_polarity_flip_physical{109.0}=0x0 +phy_chain_rx_polarity_flip_physical{110.0}=0x1 +phy_chain_rx_polarity_flip_physical{111.0}=0x0 +phy_chain_rx_polarity_flip_physical{112.0}=0x1 +phy_chain_rx_polarity_flip_physical{113.0}=0x1 +phy_chain_rx_polarity_flip_physical{114.0}=0x0 +phy_chain_rx_polarity_flip_physical{115.0}=0x1 +phy_chain_rx_polarity_flip_physical{116.0}=0x0 +phy_chain_rx_polarity_flip_physical{117.0}=0x0 +phy_chain_rx_polarity_flip_physical{118.0}=0x0 +phy_chain_rx_polarity_flip_physical{119.0}=0x1 +phy_chain_rx_polarity_flip_physical{120.0}=0x0 +phy_chain_rx_polarity_flip_physical{121.0}=0x1 +phy_chain_rx_polarity_flip_physical{122.0}=0x0 +phy_chain_rx_polarity_flip_physical{123.0}=0x1 +phy_chain_rx_polarity_flip_physical{124.0}=0x0 +phy_chain_rx_polarity_flip_physical{125.0}=0x0 +phy_chain_rx_polarity_flip_physical{126.0}=0x1 +phy_chain_rx_polarity_flip_physical{127.0}=0x1 +phy_chain_rx_polarity_flip_physical{128.0}=0x1 +phy_chain_rx_polarity_flip_physical{129.0}=0x0 +phy_chain_rx_polarity_flip_physical{130.0}=0x1 +phy_chain_rx_polarity_flip_physical{131.0}=0x1 +phy_chain_rx_polarity_flip_physical{132.0}=0x0 +phy_chain_rx_polarity_flip_physical{133.0}=0x1 +phy_chain_rx_polarity_flip_physical{134.0}=0x1 +phy_chain_rx_polarity_flip_physical{135.0}=0x1 +phy_chain_rx_polarity_flip_physical{136.0}=0x0 +phy_chain_rx_polarity_flip_physical{137.0}=0x0 +phy_chain_rx_polarity_flip_physical{138.0}=0x0 +phy_chain_rx_polarity_flip_physical{139.0}=0x1 +phy_chain_rx_polarity_flip_physical{140.0}=0x0 +phy_chain_rx_polarity_flip_physical{141.0}=0x1 +phy_chain_rx_polarity_flip_physical{142.0}=0x0 +phy_chain_rx_polarity_flip_physical{143.0}=0x1 +phy_chain_rx_polarity_flip_physical{144.0}=0x0 +phy_chain_rx_polarity_flip_physical{145.0}=0x1 +phy_chain_rx_polarity_flip_physical{146.0}=0x0 +phy_chain_rx_polarity_flip_physical{147.0}=0x1 +phy_chain_rx_polarity_flip_physical{148.0}=0x0 +phy_chain_rx_polarity_flip_physical{149.0}=0x0 +phy_chain_rx_polarity_flip_physical{150.0}=0x1 +phy_chain_rx_polarity_flip_physical{151.0}=0x1 +phy_chain_rx_polarity_flip_physical{152.0}=0x0 +phy_chain_rx_polarity_flip_physical{153.0}=0x0 +phy_chain_rx_polarity_flip_physical{154.0}=0x1 +phy_chain_rx_polarity_flip_physical{155.0}=0x1 +phy_chain_rx_polarity_flip_physical{156.0}=0x0 +phy_chain_rx_polarity_flip_physical{157.0}=0x0 +phy_chain_rx_polarity_flip_physical{158.0}=0x0 +phy_chain_rx_polarity_flip_physical{159.0}=0x1 +phy_chain_rx_polarity_flip_physical{160.0}=0x0 +phy_chain_rx_polarity_flip_physical{161.0}=0x1 +phy_chain_rx_polarity_flip_physical{162.0}=0x1 +phy_chain_rx_polarity_flip_physical{163.0}=0x0 +phy_chain_rx_polarity_flip_physical{164.0}=0x1 +phy_chain_rx_polarity_flip_physical{165.0}=0x0 +phy_chain_rx_polarity_flip_physical{166.0}=0x0 +phy_chain_rx_polarity_flip_physical{167.0}=0x1 +phy_chain_rx_polarity_flip_physical{168.0}=0x1 +phy_chain_rx_polarity_flip_physical{169.0}=0x1 +phy_chain_rx_polarity_flip_physical{170.0}=0x1 +phy_chain_rx_polarity_flip_physical{171.0}=0x0 +phy_chain_rx_polarity_flip_physical{172.0}=0x0 +phy_chain_rx_polarity_flip_physical{173.0}=0x0 +phy_chain_rx_polarity_flip_physical{174.0}=0x0 +phy_chain_rx_polarity_flip_physical{175.0}=0x1 +phy_chain_rx_polarity_flip_physical{176.0}=0x1 +phy_chain_rx_polarity_flip_physical{177.0}=0x1 +phy_chain_rx_polarity_flip_physical{178.0}=0x1 +phy_chain_rx_polarity_flip_physical{179.0}=0x0 +phy_chain_rx_polarity_flip_physical{180.0}=0x0 +phy_chain_rx_polarity_flip_physical{181.0}=0x1 +phy_chain_rx_polarity_flip_physical{182.0}=0x1 +phy_chain_rx_polarity_flip_physical{183.0}=0x0 +phy_chain_rx_polarity_flip_physical{184.0}=0x0 +phy_chain_rx_polarity_flip_physical{185.0}=0x0 +phy_chain_rx_polarity_flip_physical{186.0}=0x0 +phy_chain_rx_polarity_flip_physical{187.0}=0x1 +phy_chain_rx_polarity_flip_physical{188.0}=0x1 +phy_chain_rx_polarity_flip_physical{189.0}=0x0 +phy_chain_rx_polarity_flip_physical{190.0}=0x0 +phy_chain_rx_polarity_flip_physical{191.0}=0x1 +phy_chain_rx_polarity_flip_physical{192.0}=0x0 +phy_chain_rx_polarity_flip_physical{193.0}=0x0 +phy_chain_rx_polarity_flip_physical{194.0}=0x0 +phy_chain_rx_polarity_flip_physical{195.0}=0x1 +phy_chain_rx_polarity_flip_physical{196.0}=0x1 +phy_chain_rx_polarity_flip_physical{197.0}=0x1 +phy_chain_rx_polarity_flip_physical{198.0}=0x1 +phy_chain_rx_polarity_flip_physical{199.0}=0x0 +phy_chain_rx_polarity_flip_physical{200.0}=0x0 +phy_chain_rx_polarity_flip_physical{201.0}=0x0 +phy_chain_rx_polarity_flip_physical{202.0}=0x0 +phy_chain_rx_polarity_flip_physical{203.0}=0x1 +phy_chain_rx_polarity_flip_physical{204.0}=0x0 +phy_chain_rx_polarity_flip_physical{205.0}=0x1 +phy_chain_rx_polarity_flip_physical{206.0}=0x1 +phy_chain_rx_polarity_flip_physical{207.0}=0x0 +phy_chain_rx_polarity_flip_physical{208.0}=0x0 +phy_chain_rx_polarity_flip_physical{209.0}=0x1 +phy_chain_rx_polarity_flip_physical{210.0}=0x1 +phy_chain_rx_polarity_flip_physical{211.0}=0x0 +phy_chain_rx_polarity_flip_physical{212.0}=0x0 +phy_chain_rx_polarity_flip_physical{213.0}=0x0 +phy_chain_rx_polarity_flip_physical{214.0}=0x0 +phy_chain_rx_polarity_flip_physical{215.0}=0x1 +phy_chain_rx_polarity_flip_physical{216.0}=0x0 +phy_chain_rx_polarity_flip_physical{217.0}=0x0 +phy_chain_rx_polarity_flip_physical{218.0}=0x0 +phy_chain_rx_polarity_flip_physical{219.0}=0x1 +phy_chain_rx_polarity_flip_physical{220.0}=0x1 +phy_chain_rx_polarity_flip_physical{221.0}=0x0 +phy_chain_rx_polarity_flip_physical{222.0}=0x0 +phy_chain_rx_polarity_flip_physical{223.0}=0x1 +phy_chain_rx_polarity_flip_physical{224.0}=0x1 +phy_chain_rx_polarity_flip_physical{225.0}=0x1 +phy_chain_rx_polarity_flip_physical{226.0}=0x0 +phy_chain_rx_polarity_flip_physical{227.0}=0x0 +phy_chain_rx_polarity_flip_physical{228.0}=0x1 +phy_chain_rx_polarity_flip_physical{229.0}=0x0 +phy_chain_rx_polarity_flip_physical{230.0}=0x0 +phy_chain_rx_polarity_flip_physical{231.0}=0x1 +phy_chain_rx_polarity_flip_physical{232.0}=0x1 +phy_chain_rx_polarity_flip_physical{233.0}=0x1 +phy_chain_rx_polarity_flip_physical{234.0}=0x0 +phy_chain_rx_polarity_flip_physical{235.0}=0x0 +phy_chain_rx_polarity_flip_physical{236.0}=0x0 +phy_chain_rx_polarity_flip_physical{237.0}=0x1 +phy_chain_rx_polarity_flip_physical{238.0}=0x0 +phy_chain_rx_polarity_flip_physical{239.0}=0x1 +phy_chain_rx_polarity_flip_physical{240.0}=0x0 +phy_chain_rx_polarity_flip_physical{241.0}=0x1 +phy_chain_rx_polarity_flip_physical{242.0}=0x0 +phy_chain_rx_polarity_flip_physical{243.0}=0x1 +phy_chain_rx_polarity_flip_physical{244.0}=0x0 +phy_chain_rx_polarity_flip_physical{245.0}=0x1 +phy_chain_rx_polarity_flip_physical{246.0}=0x1 +phy_chain_rx_polarity_flip_physical{247.0}=0x1 +phy_chain_rx_polarity_flip_physical{248.0}=0x0 +phy_chain_rx_polarity_flip_physical{249.0}=0x0 +phy_chain_rx_polarity_flip_physical{250.0}=0x1 +phy_chain_rx_polarity_flip_physical{251.0}=0x0 +phy_chain_rx_polarity_flip_physical{252.0}=0x1 +phy_chain_rx_polarity_flip_physical{253.0}=0x1 +phy_chain_rx_polarity_flip_physical{254.0}=0x0 +phy_chain_rx_polarity_flip_physical{255.0}=0x1 +phy_chain_rx_polarity_flip_physical{256.0}=0x0 +phy_chain_rx_polarity_flip_physical{257.0}=0x0 +phy_chain_rx_polarity_flip_physical{259.0}=0x0 +phy_chain_tx_lane_map_physical{1.0}=0x2031 +phy_chain_tx_lane_map_physical{5.0}=0x2301 +phy_chain_tx_lane_map_physical{9.0}=0x3012 +phy_chain_tx_lane_map_physical{13.0}=0x3021 +phy_chain_tx_lane_map_physical{17.0}=0x1032 +phy_chain_tx_lane_map_physical{21.0}=0x0213 +phy_chain_tx_lane_map_physical{25.0}=0x0231 +phy_chain_tx_lane_map_physical{29.0}=0x1230 +phy_chain_tx_lane_map_physical{33.0}=0x1032 +phy_chain_tx_lane_map_physical{37.0}=0x0123 +phy_chain_tx_lane_map_physical{41.0}=0x0213 +phy_chain_tx_lane_map_physical{45.0}=0x0132 +phy_chain_tx_lane_map_physical{49.0}=0x2031 +phy_chain_tx_lane_map_physical{53.0}=0x2301 +phy_chain_tx_lane_map_physical{57.0}=0x2031 +phy_chain_tx_lane_map_physical{61.0}=0x2031 +phy_chain_tx_lane_map_physical{65.0}=0x1230 +phy_chain_tx_lane_map_physical{69.0}=0x2013 +phy_chain_tx_lane_map_physical{73.0}=0x0213 +phy_chain_tx_lane_map_physical{77.0}=0x2310 +phy_chain_tx_lane_map_physical{81.0}=0x0321 +phy_chain_tx_lane_map_physical{85.0}=0x2013 +phy_chain_tx_lane_map_physical{89.0}=0x0213 +phy_chain_tx_lane_map_physical{93.0}=0x3102 +phy_chain_tx_lane_map_physical{97.0}=0x3210 +phy_chain_tx_lane_map_physical{101.0}=0x1023 +phy_chain_tx_lane_map_physical{105.0}=0x1302 +phy_chain_tx_lane_map_physical{109.0}=0x0321 +phy_chain_tx_lane_map_physical{113.0}=0x2301 +phy_chain_tx_lane_map_physical{117.0}=0x3120 +phy_chain_tx_lane_map_physical{121.0}=0x3102 +phy_chain_tx_lane_map_physical{125.0}=0x3210 +phy_chain_tx_lane_map_physical{129.0}=0x1023 +phy_chain_tx_lane_map_physical{133.0}=0x3210 +phy_chain_tx_lane_map_physical{137.0}=0x2031 +phy_chain_tx_lane_map_physical{141.0}=0x1302 +phy_chain_tx_lane_map_physical{145.0}=0x3210 +phy_chain_tx_lane_map_physical{149.0}=0x0213 +phy_chain_tx_lane_map_physical{153.0}=0x3210 +phy_chain_tx_lane_map_physical{157.0}=0x1320 +phy_chain_tx_lane_map_physical{161.0}=0x3210 +phy_chain_tx_lane_map_physical{165.0}=0x0231 +phy_chain_tx_lane_map_physical{169.0}=0x3120 +phy_chain_tx_lane_map_physical{173.0}=0x0312 +phy_chain_tx_lane_map_physical{177.0}=0x0231 +phy_chain_tx_lane_map_physical{181.0}=0x3210 +phy_chain_tx_lane_map_physical{185.0}=0x3210 +phy_chain_tx_lane_map_physical{189.0}=0x1320 +phy_chain_tx_lane_map_physical{193.0}=0x0321 +phy_chain_tx_lane_map_physical{197.0}=0x3120 +phy_chain_tx_lane_map_physical{201.0}=0x3120 +phy_chain_tx_lane_map_physical{205.0}=0x0123 +phy_chain_tx_lane_map_physical{209.0}=0x3120 +phy_chain_tx_lane_map_physical{213.0}=0x3021 +phy_chain_tx_lane_map_physical{217.0}=0x0312 +phy_chain_tx_lane_map_physical{221.0}=0x2301 +phy_chain_tx_lane_map_physical{225.0}=0x0123 +phy_chain_tx_lane_map_physical{229.0}=0x2031 +phy_chain_tx_lane_map_physical{233.0}=0x0231 +phy_chain_tx_lane_map_physical{237.0}=0x0213 +phy_chain_tx_lane_map_physical{241.0}=0x1320 +phy_chain_tx_lane_map_physical{245.0}=0x2031 +phy_chain_tx_lane_map_physical{249.0}=0x3120 +phy_chain_tx_lane_map_physical{253.0}=0x0321 +phy_chain_tx_lane_map_physical{257.0}=0x3210 +phy_chain_tx_polarity_flip_physical{1.0}=0x0 +phy_chain_tx_polarity_flip_physical{2.0}=0x1 +phy_chain_tx_polarity_flip_physical{3.0}=0x1 +phy_chain_tx_polarity_flip_physical{4.0}=0x1 +phy_chain_tx_polarity_flip_physical{5.0}=0x1 +phy_chain_tx_polarity_flip_physical{6.0}=0x1 +phy_chain_tx_polarity_flip_physical{7.0}=0x1 +phy_chain_tx_polarity_flip_physical{8.0}=0x0 +phy_chain_tx_polarity_flip_physical{9.0}=0x0 +phy_chain_tx_polarity_flip_physical{10.0}=0x1 +phy_chain_tx_polarity_flip_physical{11.0}=0x1 +phy_chain_tx_polarity_flip_physical{12.0}=0x0 +phy_chain_tx_polarity_flip_physical{13.0}=0x0 +phy_chain_tx_polarity_flip_physical{14.0}=0x1 +phy_chain_tx_polarity_flip_physical{15.0}=0x0 +phy_chain_tx_polarity_flip_physical{16.0}=0x0 +phy_chain_tx_polarity_flip_physical{17.0}=0x0 +phy_chain_tx_polarity_flip_physical{18.0}=0x1 +phy_chain_tx_polarity_flip_physical{19.0}=0x1 +phy_chain_tx_polarity_flip_physical{20.0}=0x1 +phy_chain_tx_polarity_flip_physical{21.0}=0x0 +phy_chain_tx_polarity_flip_physical{22.0}=0x0 +phy_chain_tx_polarity_flip_physical{23.0}=0x0 +phy_chain_tx_polarity_flip_physical{24.0}=0x0 +phy_chain_tx_polarity_flip_physical{25.0}=0x1 +phy_chain_tx_polarity_flip_physical{26.0}=0x0 +phy_chain_tx_polarity_flip_physical{27.0}=0x0 +phy_chain_tx_polarity_flip_physical{28.0}=0x0 +phy_chain_tx_polarity_flip_physical{29.0}=0x1 +phy_chain_tx_polarity_flip_physical{30.0}=0x1 +phy_chain_tx_polarity_flip_physical{31.0}=0x1 +phy_chain_tx_polarity_flip_physical{32.0}=0x0 +phy_chain_tx_polarity_flip_physical{33.0}=0x0 +phy_chain_tx_polarity_flip_physical{34.0}=0x0 +phy_chain_tx_polarity_flip_physical{35.0}=0x0 +phy_chain_tx_polarity_flip_physical{36.0}=0x1 +phy_chain_tx_polarity_flip_physical{37.0}=0x1 +phy_chain_tx_polarity_flip_physical{38.0}=0x1 +phy_chain_tx_polarity_flip_physical{39.0}=0x1 +phy_chain_tx_polarity_flip_physical{40.0}=0x0 +phy_chain_tx_polarity_flip_physical{41.0}=0x0 +phy_chain_tx_polarity_flip_physical{42.0}=0x0 +phy_chain_tx_polarity_flip_physical{43.0}=0x0 +phy_chain_tx_polarity_flip_physical{44.0}=0x0 +phy_chain_tx_polarity_flip_physical{45.0}=0x1 +phy_chain_tx_polarity_flip_physical{46.0}=0x0 +phy_chain_tx_polarity_flip_physical{47.0}=0x1 +phy_chain_tx_polarity_flip_physical{48.0}=0x1 +phy_chain_tx_polarity_flip_physical{49.0}=0x0 +phy_chain_tx_polarity_flip_physical{50.0}=0x0 +phy_chain_tx_polarity_flip_physical{51.0}=0x0 +phy_chain_tx_polarity_flip_physical{52.0}=0x1 +phy_chain_tx_polarity_flip_physical{53.0}=0x0 +phy_chain_tx_polarity_flip_physical{54.0}=0x1 +phy_chain_tx_polarity_flip_physical{55.0}=0x1 +phy_chain_tx_polarity_flip_physical{56.0}=0x0 +phy_chain_tx_polarity_flip_physical{57.0}=0x0 +phy_chain_tx_polarity_flip_physical{58.0}=0x1 +phy_chain_tx_polarity_flip_physical{59.0}=0x1 +phy_chain_tx_polarity_flip_physical{60.0}=0x1 +phy_chain_tx_polarity_flip_physical{61.0}=0x0 +phy_chain_tx_polarity_flip_physical{62.0}=0x1 +phy_chain_tx_polarity_flip_physical{63.0}=0x1 +phy_chain_tx_polarity_flip_physical{64.0}=0x1 +phy_chain_tx_polarity_flip_physical{65.0}=0x0 +phy_chain_tx_polarity_flip_physical{66.0}=0x1 +phy_chain_tx_polarity_flip_physical{67.0}=0x1 +phy_chain_tx_polarity_flip_physical{68.0}=0x0 +phy_chain_tx_polarity_flip_physical{69.0}=0x1 +phy_chain_tx_polarity_flip_physical{70.0}=0x1 +phy_chain_tx_polarity_flip_physical{71.0}=0x1 +phy_chain_tx_polarity_flip_physical{72.0}=0x0 +phy_chain_tx_polarity_flip_physical{73.0}=0x1 +phy_chain_tx_polarity_flip_physical{74.0}=0x0 +phy_chain_tx_polarity_flip_physical{75.0}=0x0 +phy_chain_tx_polarity_flip_physical{76.0}=0x0 +phy_chain_tx_polarity_flip_physical{77.0}=0x0 +phy_chain_tx_polarity_flip_physical{78.0}=0x0 +phy_chain_tx_polarity_flip_physical{79.0}=0x1 +phy_chain_tx_polarity_flip_physical{80.0}=0x0 +phy_chain_tx_polarity_flip_physical{81.0}=0x1 +phy_chain_tx_polarity_flip_physical{82.0}=0x1 +phy_chain_tx_polarity_flip_physical{83.0}=0x1 +phy_chain_tx_polarity_flip_physical{84.0}=0x0 +phy_chain_tx_polarity_flip_physical{85.0}=0x1 +phy_chain_tx_polarity_flip_physical{86.0}=0x0 +phy_chain_tx_polarity_flip_physical{87.0}=0x0 +phy_chain_tx_polarity_flip_physical{88.0}=0x0 +phy_chain_tx_polarity_flip_physical{89.0}=0x1 +phy_chain_tx_polarity_flip_physical{90.0}=0x1 +phy_chain_tx_polarity_flip_physical{91.0}=0x1 +phy_chain_tx_polarity_flip_physical{92.0}=0x0 +phy_chain_tx_polarity_flip_physical{93.0}=0x0 +phy_chain_tx_polarity_flip_physical{94.0}=0x0 +phy_chain_tx_polarity_flip_physical{95.0}=0x0 +phy_chain_tx_polarity_flip_physical{96.0}=0x0 +phy_chain_tx_polarity_flip_physical{97.0}=0x0 +phy_chain_tx_polarity_flip_physical{98.0}=0x1 +phy_chain_tx_polarity_flip_physical{99.0}=0x1 +phy_chain_tx_polarity_flip_physical{100.0}=0x0 +phy_chain_tx_polarity_flip_physical{101.0}=0x0 +phy_chain_tx_polarity_flip_physical{102.0}=0x1 +phy_chain_tx_polarity_flip_physical{103.0}=0x0 +phy_chain_tx_polarity_flip_physical{104.0}=0x0 +phy_chain_tx_polarity_flip_physical{105.0}=0x0 +phy_chain_tx_polarity_flip_physical{106.0}=0x1 +phy_chain_tx_polarity_flip_physical{107.0}=0x1 +phy_chain_tx_polarity_flip_physical{108.0}=0x1 +phy_chain_tx_polarity_flip_physical{109.0}=0x0 +phy_chain_tx_polarity_flip_physical{110.0}=0x0 +phy_chain_tx_polarity_flip_physical{111.0}=0x0 +phy_chain_tx_polarity_flip_physical{112.0}=0x1 +phy_chain_tx_polarity_flip_physical{113.0}=0x1 +phy_chain_tx_polarity_flip_physical{114.0}=0x1 +phy_chain_tx_polarity_flip_physical{115.0}=0x1 +phy_chain_tx_polarity_flip_physical{116.0}=0x0 +phy_chain_tx_polarity_flip_physical{117.0}=0x1 +phy_chain_tx_polarity_flip_physical{118.0}=0x0 +phy_chain_tx_polarity_flip_physical{119.0}=0x0 +phy_chain_tx_polarity_flip_physical{120.0}=0x0 +phy_chain_tx_polarity_flip_physical{121.0}=0x0 +phy_chain_tx_polarity_flip_physical{122.0}=0x0 +phy_chain_tx_polarity_flip_physical{123.0}=0x0 +phy_chain_tx_polarity_flip_physical{124.0}=0x1 +phy_chain_tx_polarity_flip_physical{125.0}=0x0 +phy_chain_tx_polarity_flip_physical{126.0}=0x1 +phy_chain_tx_polarity_flip_physical{127.0}=0x1 +phy_chain_tx_polarity_flip_physical{128.0}=0x1 +phy_chain_tx_polarity_flip_physical{129.0}=0x1 +phy_chain_tx_polarity_flip_physical{130.0}=0x0 +phy_chain_tx_polarity_flip_physical{131.0}=0x1 +phy_chain_tx_polarity_flip_physical{132.0}=0x0 +phy_chain_tx_polarity_flip_physical{133.0}=0x1 +phy_chain_tx_polarity_flip_physical{134.0}=0x1 +phy_chain_tx_polarity_flip_physical{135.0}=0x1 +phy_chain_tx_polarity_flip_physical{136.0}=0x1 +phy_chain_tx_polarity_flip_physical{137.0}=0x1 +phy_chain_tx_polarity_flip_physical{138.0}=0x1 +phy_chain_tx_polarity_flip_physical{139.0}=0x1 +phy_chain_tx_polarity_flip_physical{140.0}=0x1 +phy_chain_tx_polarity_flip_physical{141.0}=0x0 +phy_chain_tx_polarity_flip_physical{142.0}=0x1 +phy_chain_tx_polarity_flip_physical{143.0}=0x1 +phy_chain_tx_polarity_flip_physical{144.0}=0x1 +phy_chain_tx_polarity_flip_physical{145.0}=0x1 +phy_chain_tx_polarity_flip_physical{146.0}=0x1 +phy_chain_tx_polarity_flip_physical{147.0}=0x1 +phy_chain_tx_polarity_flip_physical{148.0}=0x0 +phy_chain_tx_polarity_flip_physical{149.0}=0x1 +phy_chain_tx_polarity_flip_physical{150.0}=0x0 +phy_chain_tx_polarity_flip_physical{151.0}=0x0 +phy_chain_tx_polarity_flip_physical{152.0}=0x0 +phy_chain_tx_polarity_flip_physical{153.0}=0x1 +phy_chain_tx_polarity_flip_physical{154.0}=0x0 +phy_chain_tx_polarity_flip_physical{155.0}=0x0 +phy_chain_tx_polarity_flip_physical{156.0}=0x0 +phy_chain_tx_polarity_flip_physical{157.0}=0x0 +phy_chain_tx_polarity_flip_physical{158.0}=0x0 +phy_chain_tx_polarity_flip_physical{159.0}=0x0 +phy_chain_tx_polarity_flip_physical{160.0}=0x0 +phy_chain_tx_polarity_flip_physical{161.0}=0x0 +phy_chain_tx_polarity_flip_physical{162.0}=0x1 +phy_chain_tx_polarity_flip_physical{163.0}=0x1 +phy_chain_tx_polarity_flip_physical{164.0}=0x0 +phy_chain_tx_polarity_flip_physical{165.0}=0x1 +phy_chain_tx_polarity_flip_physical{166.0}=0x1 +phy_chain_tx_polarity_flip_physical{167.0}=0x1 +phy_chain_tx_polarity_flip_physical{168.0}=0x0 +phy_chain_tx_polarity_flip_physical{169.0}=0x0 +phy_chain_tx_polarity_flip_physical{170.0}=0x1 +phy_chain_tx_polarity_flip_physical{171.0}=0x1 +phy_chain_tx_polarity_flip_physical{172.0}=0x1 +phy_chain_tx_polarity_flip_physical{173.0}=0x0 +phy_chain_tx_polarity_flip_physical{174.0}=0x0 +phy_chain_tx_polarity_flip_physical{175.0}=0x1 +phy_chain_tx_polarity_flip_physical{176.0}=0x0 +phy_chain_tx_polarity_flip_physical{177.0}=0x1 +phy_chain_tx_polarity_flip_physical{178.0}=0x0 +phy_chain_tx_polarity_flip_physical{179.0}=0x0 +phy_chain_tx_polarity_flip_physical{180.0}=0x0 +phy_chain_tx_polarity_flip_physical{181.0}=0x0 +phy_chain_tx_polarity_flip_physical{182.0}=0x0 +phy_chain_tx_polarity_flip_physical{183.0}=0x0 +phy_chain_tx_polarity_flip_physical{184.0}=0x1 +phy_chain_tx_polarity_flip_physical{185.0}=0x0 +phy_chain_tx_polarity_flip_physical{186.0}=0x1 +phy_chain_tx_polarity_flip_physical{187.0}=0x1 +phy_chain_tx_polarity_flip_physical{188.0}=0x1 +phy_chain_tx_polarity_flip_physical{189.0}=0x0 +phy_chain_tx_polarity_flip_physical{190.0}=0x0 +phy_chain_tx_polarity_flip_physical{191.0}=0x0 +phy_chain_tx_polarity_flip_physical{192.0}=0x0 +phy_chain_tx_polarity_flip_physical{193.0}=0x1 +phy_chain_tx_polarity_flip_physical{194.0}=0x1 +phy_chain_tx_polarity_flip_physical{195.0}=0x1 +phy_chain_tx_polarity_flip_physical{196.0}=0x0 +phy_chain_tx_polarity_flip_physical{197.0}=0x0 +phy_chain_tx_polarity_flip_physical{198.0}=0x1 +phy_chain_tx_polarity_flip_physical{199.0}=0x1 +phy_chain_tx_polarity_flip_physical{200.0}=0x1 +phy_chain_tx_polarity_flip_physical{201.0}=0x1 +phy_chain_tx_polarity_flip_physical{202.0}=0x1 +phy_chain_tx_polarity_flip_physical{203.0}=0x1 +phy_chain_tx_polarity_flip_physical{204.0}=0x1 +phy_chain_tx_polarity_flip_physical{205.0}=0x0 +phy_chain_tx_polarity_flip_physical{206.0}=0x1 +phy_chain_tx_polarity_flip_physical{207.0}=0x1 +phy_chain_tx_polarity_flip_physical{208.0}=0x1 +phy_chain_tx_polarity_flip_physical{209.0}=0x1 +phy_chain_tx_polarity_flip_physical{210.0}=0x1 +phy_chain_tx_polarity_flip_physical{211.0}=0x1 +phy_chain_tx_polarity_flip_physical{212.0}=0x0 +phy_chain_tx_polarity_flip_physical{213.0}=0x0 +phy_chain_tx_polarity_flip_physical{214.0}=0x1 +phy_chain_tx_polarity_flip_physical{215.0}=0x0 +phy_chain_tx_polarity_flip_physical{216.0}=0x1 +phy_chain_tx_polarity_flip_physical{217.0}=0x1 +phy_chain_tx_polarity_flip_physical{218.0}=0x1 +phy_chain_tx_polarity_flip_physical{219.0}=0x0 +phy_chain_tx_polarity_flip_physical{220.0}=0x1 +phy_chain_tx_polarity_flip_physical{221.0}=0x0 +phy_chain_tx_polarity_flip_physical{222.0}=0x0 +phy_chain_tx_polarity_flip_physical{223.0}=0x0 +phy_chain_tx_polarity_flip_physical{224.0}=0x1 +phy_chain_tx_polarity_flip_physical{225.0}=0x1 +phy_chain_tx_polarity_flip_physical{226.0}=0x1 +phy_chain_tx_polarity_flip_physical{227.0}=0x1 +phy_chain_tx_polarity_flip_physical{228.0}=0x0 +phy_chain_tx_polarity_flip_physical{229.0}=0x0 +phy_chain_tx_polarity_flip_physical{230.0}=0x1 +phy_chain_tx_polarity_flip_physical{231.0}=0x1 +phy_chain_tx_polarity_flip_physical{232.0}=0x1 +phy_chain_tx_polarity_flip_physical{233.0}=0x0 +phy_chain_tx_polarity_flip_physical{234.0}=0x0 +phy_chain_tx_polarity_flip_physical{235.0}=0x0 +phy_chain_tx_polarity_flip_physical{236.0}=0x0 +phy_chain_tx_polarity_flip_physical{237.0}=0x1 +phy_chain_tx_polarity_flip_physical{238.0}=0x1 +phy_chain_tx_polarity_flip_physical{239.0}=0x1 +phy_chain_tx_polarity_flip_physical{240.0}=0x0 +phy_chain_tx_polarity_flip_physical{241.0}=0x1 +phy_chain_tx_polarity_flip_physical{242.0}=0x1 +phy_chain_tx_polarity_flip_physical{243.0}=0x1 +phy_chain_tx_polarity_flip_physical{244.0}=0x0 +phy_chain_tx_polarity_flip_physical{245.0}=0x1 +phy_chain_tx_polarity_flip_physical{246.0}=0x1 +phy_chain_tx_polarity_flip_physical{247.0}=0x1 +phy_chain_tx_polarity_flip_physical{248.0}=0x1 +phy_chain_tx_polarity_flip_physical{249.0}=0x1 +phy_chain_tx_polarity_flip_physical{250.0}=0x0 +phy_chain_tx_polarity_flip_physical{251.0}=0x0 +phy_chain_tx_polarity_flip_physical{252.0}=0x0 +phy_chain_tx_polarity_flip_physical{253.0}=0x1 +phy_chain_tx_polarity_flip_physical{254.0}=0x1 +phy_chain_tx_polarity_flip_physical{255.0}=0x1 +phy_chain_tx_polarity_flip_physical{256.0}=0x0 +phy_chain_tx_polarity_flip_physical{257.0}=0x0 +phy_chain_tx_polarity_flip_physical{259.0}=0x0 +portmap_1=5:100 +portmap_3=13:100 +portmap_5=25:100 +portmap_7=21:100 +portmap_9=37:100 +portmap_11=45:100 +portmap_13=57:100 +portmap_15=53:100 +portmap_17=9:100 +portmap_19=1:100 +portmap_21=17:100 +portmap_23=29:100 +portmap_25=41:100 +portmap_27=33:100 +portmap_29=49:100 +portmap_31=61:100 +portmap_34=77:100 +portmap_36=65:100 +portmap_38=85:100 +portmap_40=89:100 +portmap_42=109:100 +portmap_44=97:100 +portmap_46=117:100 +portmap_48=121:100 +portmap_50=69:100 +portmap_52=73:100 +portmap_54=93:100 +portmap_56=81:100 +portmap_58=101:100 +portmap_60=105:100 +portmap_62=125:100 +portmap_64=113:100 +portmap_66=257:10 +portmap_68=141:100 +portmap_70=133:100 +portmap_72=149:100 +portmap_74=153:100 +portmap_76=173:100 +portmap_78=161:100 +portmap_80=181:100 +portmap_82=185:100 +portmap_84=129:100 +portmap_86=137:100 +portmap_88=157:100 +portmap_90=145:100 +portmap_92=165:100 +portmap_94=169:100 +portmap_96=189:100 +portmap_98=177:100 +portmap_100=259:10 +portmap_102=197:100 +portmap_104=205:100 +portmap_106=217:100 +portmap_108=213:100 +portmap_110=229:100 +portmap_112=237:100 +portmap_114=249:100 +portmap_116=245:100 +portmap_118=201:100 +portmap_120=193:100 +portmap_122=209:100 +portmap_124=221:100 +portmap_126=233:100 +portmap_128=225:100 +portmap_130=241:100 +portmap_132=253:100 +port_flex_enable=1 +port_init_autoneg=0 +robust_hash_disable_egress_vlan=1 +robust_hash_disable_mpls=1 +robust_hash_disable_vlan=1 +stable_size=0x5500000 +stable_size=0x5500000 +tdma_timeout_usec=15000000 +tslam_timeout_usec=15000000 From 82922c09ea9cd652edde604ee878464861204885 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Wed, 30 Jun 2021 12:45:40 -0700 Subject: [PATCH 051/186] Add infra to support building Bullseye base image with Buster containers All docker containers will be built as Buster containers, from a Buster slave. The base image and remaining packages that are installed onto the host system will be built for Bullseye, from a Bullseye slave. Signed-off-by: Saikrishna Arcot --- Makefile | 4 ++-- platform/vs/docker-sonic-vs.mk | 2 ++ platform/vs/docker-syncd-vs.mk | 2 ++ rules/docker-base-buster.mk | 1 + rules/docker-config-engine-buster.mk | 1 + rules/docker-database.mk | 3 +++ rules/docker-dhcp-relay.mk | 3 +++ rules/docker-fpm-frr.mk | 3 +++ rules/docker-iccpd.mk | 3 +++ rules/docker-lldp.mk | 3 +++ rules/docker-macsec.mk | 3 +++ rules/docker-nat.mk | 3 +++ rules/docker-orchagent.mk | 3 +++ rules/docker-platform-monitor.mk | 3 +++ rules/docker-restapi.mk | 2 ++ rules/docker-router-advertiser.mk | 3 +++ rules/docker-sflow.mk | 3 +++ rules/docker-snmp.mk | 3 +++ rules/docker-sonic-mgmt-framework.mk | 3 +++ rules/docker-sonic-sdk-buildenv.mk | 3 +++ rules/docker-sonic-sdk.mk | 3 +++ rules/docker-teamd.mk | 3 +++ rules/docker-telemetry.mk | 3 +++ slave.mk | 30 ++++++++++++++++++++++------ 24 files changed, 85 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 3b8792bfb445..ace13582cbef 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ NOJESSIE ?= 1 NOSTRETCH ?= 0 NOBUSTER ?= 0 -NOBULLSEYE ?= 1 +NOBULLSEYE ?= 0 ifeq ($(NOJESSIE),0) BUILD_JESSIE=1 @@ -35,7 +35,7 @@ ifeq ($(NOSTRETCH), 0) EXTRA_DOCKER_TARGETS=$(notdir $@) BLDENV=stretch make -f Makefile.work stretch endif ifeq ($(NOBUSTER), 0) - BLDENV=buster make -f Makefile.work $@ + EXTRA_DOCKER_TARGETS=$(notdir $@) BLDENV=buster make -f Makefile.work buster endif ifeq ($(NOBULLSEYE), 0) BLDENV=bullseye make -f Makefile.work $@ diff --git a/platform/vs/docker-sonic-vs.mk b/platform/vs/docker-sonic-vs.mk index 6667c4abba9d..01459d1c9d09 100644 --- a/platform/vs/docker-sonic-vs.mk +++ b/platform/vs/docker-sonic-vs.mk @@ -51,3 +51,5 @@ $(DOCKER_SONIC_VS)_FILES += $(CONFIGDB_LOAD_SCRIPT) \ $(DOCKER_SONIC_VS)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER) SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_VS) + +SONIC_BUSTER_DOCKERS += $(DOCKER_SONIC_VS) diff --git a/platform/vs/docker-syncd-vs.mk b/platform/vs/docker-syncd-vs.mk index d2f7872ea446..1bfeeda81acf 100644 --- a/platform/vs/docker-syncd-vs.mk +++ b/platform/vs/docker-syncd-vs.mk @@ -15,3 +15,5 @@ $(DOCKER_SYNCD_BASE)_VERSION = 1.0.0 $(DOCKER_SYNCD_BASE)_PACKAGE_NAME = syncd $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot + +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BASE) diff --git a/rules/docker-base-buster.mk b/rules/docker-base-buster.mk index 86bfc5781466..ead798578bfe 100644 --- a/rules/docker-base-buster.mk +++ b/rules/docker-base-buster.mk @@ -14,3 +14,4 @@ STRACE = strace $(DOCKER_BASE_BUSTER)_DBG_IMAGE_PACKAGES += $(GDB) $(GDBSERVER) $(VIM) $(OPENSSH) $(SSHPASS) $(STRACE) SONIC_DOCKER_IMAGES += $(DOCKER_BASE_BUSTER) +SONIC_BUSTER_DOCKERS += $(DOCKER_BASE_BUSTER) diff --git a/rules/docker-config-engine-buster.mk b/rules/docker-config-engine-buster.mk index 6dc11265306e..f3df95c36d74 100644 --- a/rules/docker-config-engine-buster.mk +++ b/rules/docker-config-engine-buster.mk @@ -23,3 +23,4 @@ $(DOCKER_CONFIG_ENGINE_BUSTER)_DBG_DEPENDS = $($(DOCKER_BASE_BUSTER)_DBG_DEPENDS $(DOCKER_CONFIG_ENGINE_BUSTER)_DBG_IMAGE_PACKAGES = $($(DOCKER_BASE_BUSTER)_DBG_IMAGE_PACKAGES) SONIC_DOCKER_IMAGES += $(DOCKER_CONFIG_ENGINE_BUSTER) +SONIC_BUSTER_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER) diff --git a/rules/docker-database.mk b/rules/docker-database.mk index 9f977f09616d..d7ce311110ee 100644 --- a/rules/docker-database.mk +++ b/rules/docker-database.mk @@ -28,3 +28,6 @@ $(DOCKER_DATABASE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_DATABASE)_BASE_IMAGE_FILES += redis-cli:/usr/bin/redis-cli $(DOCKER_DATABASE)_FILES += $(SYSCTL_NET_CONFIG) $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) $(DOCKER_DATABASE)_FILES += $(UPDATE_CHASSISDB_CONFIG_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_DATABASE) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_DATABASE_DBG) diff --git a/rules/docker-dhcp-relay.mk b/rules/docker-dhcp-relay.mk index a8b33c5bc74c..039f64a4ecf6 100644 --- a/rules/docker-dhcp-relay.mk +++ b/rules/docker-dhcp-relay.mk @@ -55,3 +55,6 @@ $(DOCKER_DHCP_RELAY)_CLI_CONFIG_PLUGIN = /cli/config/plugins/dhcp_relay.py $(DOCKER_DHCP_RELAY)_CLI_SHOW_PLUGIN = /cli/show/plugins/show_dhcp_relay.py $(DOCKER_DHCP_RELAY)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_DHCP_RELAY) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_DHCP_RELAY_DBG) diff --git a/rules/docker-fpm-frr.mk b/rules/docker-fpm-frr.mk index 37c3a62f1855..b6c4f2e0e02f 100644 --- a/rules/docker-fpm-frr.mk +++ b/rules/docker-fpm-frr.mk @@ -39,3 +39,6 @@ $(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSA:/usr/bin/TSA $(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 + +SONIC_BUSTER_DOCKERS += $(DOCKER_FPM_FRR) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_FPM_FRR_DBG) diff --git a/rules/docker-iccpd.mk b/rules/docker-iccpd.mk index 69b9fee50eef..c0c747997959 100644 --- a/rules/docker-iccpd.mk +++ b/rules/docker-iccpd.mk @@ -25,3 +25,6 @@ $(DOCKER_ICCPD)_RUN_OPT += --privileged -t $(DOCKER_ICCPD)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_ICCPD)_BASE_IMAGE_FILES += mclagdctl:/usr/bin/mclagdctl + +SONIC_BUSTER_DOCKERS += $(DOCKER_ICCPD) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_ICCPD_DBG) diff --git a/rules/docker-lldp.mk b/rules/docker-lldp.mk index 2c3d41a46d1a..f9c77ec14c40 100644 --- a/rules/docker-lldp.mk +++ b/rules/docker-lldp.mk @@ -35,3 +35,6 @@ $(DOCKER_LLDP)_RUN_OPT += -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:r $(DOCKER_LLDP)_BASE_IMAGE_FILES += lldpctl:/usr/bin/lldpctl $(DOCKER_LLDP)_BASE_IMAGE_FILES += lldpcli:/usr/bin/lldpcli $(DOCKER_LLDP)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_LLDP) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_LLDP_DBG) diff --git a/rules/docker-macsec.mk b/rules/docker-macsec.mk index 8fc5e0baa85c..3ffdf1bd6f76 100644 --- a/rules/docker-macsec.mk +++ b/rules/docker-macsec.mk @@ -33,3 +33,6 @@ $(DOCKER_MACSEC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_MACSEC)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_MACSEC)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_MACSEC) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_MACSEC_DBG) diff --git a/rules/docker-nat.mk b/rules/docker-nat.mk index b5ead85d1919..07aa02b0149b 100644 --- a/rules/docker-nat.mk +++ b/rules/docker-nat.mk @@ -36,3 +36,6 @@ $(DOCKER_NAT)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_NAT)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) $(DOCKER_NAT)_BASE_IMAGE_FILES += natctl:/usr/bin/natctl + +SONIC_BUSTER_DOCKERS += $(DOCKER_NAT) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_NAT_DBG) diff --git a/rules/docker-orchagent.mk b/rules/docker-orchagent.mk index 3273b675905d..2b7a3f34eec5 100644 --- a/rules/docker-orchagent.mk +++ b/rules/docker-orchagent.mk @@ -38,3 +38,6 @@ $(DOCKER_ORCHAGENT)_RUN_OPT += -v /var/log/swss:/var/log/swss:rw $(DOCKER_ORCHAGENT)_BASE_IMAGE_FILES += swssloglevel:/usr/bin/swssloglevel $(DOCKER_ORCHAGENT)_FILES += $(ARP_UPDATE_SCRIPT) $(ARP_UPDATE_VARS_TEMPLATE) $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_ORCHAGENT) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_ORCHAGENT_DBG) diff --git a/rules/docker-platform-monitor.mk b/rules/docker-platform-monitor.mk index 4cb3299ca21e..0db2a051034d 100644 --- a/rules/docker-platform-monitor.mk +++ b/rules/docker-platform-monitor.mk @@ -73,3 +73,6 @@ $(DOCKER_PLATFORM_MONITOR)_BASE_IMAGE_FILES += cmd_wrapper:/usr/sbin/iSmart $(DOCKER_PLATFORM_MONITOR)_BASE_IMAGE_FILES += cmd_wrapper:/usr/sbin/SmartCmd $(DOCKER_PLATFORM_MONITOR)_BASE_IMAGE_FILES += cmd_wrapper:/usr/bin/ethtool $(DOCKER_PLATFORM_MONITOR)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_PLATFORM_MONITOR) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_PLATFORM_MONITOR_DBG) diff --git a/rules/docker-restapi.mk b/rules/docker-restapi.mk index 1c54bde741b8..5d09dffe03e6 100644 --- a/rules/docker-restapi.mk +++ b/rules/docker-restapi.mk @@ -26,3 +26,5 @@ $(DOCKER_RESTAPI)_RUN_OPT += -v /etc/sonic/credentials:/etc/sonic/credentials:ro $(DOCKER_RESTAPI)_RUN_OPT += -p=8081:8081/tcp $(DOCKER_RESTAPI)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_RESTAPI) diff --git a/rules/docker-router-advertiser.mk b/rules/docker-router-advertiser.mk index 14c896d820ae..c2a5f9bf5d3c 100644 --- a/rules/docker-router-advertiser.mk +++ b/rules/docker-router-advertiser.mk @@ -29,3 +29,6 @@ $(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += --privileged -t $(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:ro $(DOCKER_ROUTER_ADVERTISER)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_ROUTER_ADVERTISER) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_ROUTER_ADVERTISER_DBG) diff --git a/rules/docker-sflow.mk b/rules/docker-sflow.mk index 5762dd869ac7..099291005d90 100644 --- a/rules/docker-sflow.mk +++ b/rules/docker-sflow.mk @@ -36,3 +36,6 @@ $(DOCKER_SFLOW)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_SFLOW)_BASE_IMAGE_FILES += psample:/usr/bin/psample $(DOCKER_SFLOW)_BASE_IMAGE_FILES += sflowtool:/usr/bin/sflowtool $(DOCKER_SFLOW)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_SFLOW) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SFLOW_DBG) diff --git a/rules/docker-snmp.mk b/rules/docker-snmp.mk index 96a783d7a5a2..af90cf3664e8 100644 --- a/rules/docker-snmp.mk +++ b/rules/docker-snmp.mk @@ -31,3 +31,6 @@ $(DOCKER_SNMP)_RUN_OPT += --privileged -t $(DOCKER_SNMP)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SNMP)_RUN_OPT += -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:ro $(DOCKER_SNMP)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_SNMP) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SNMP_DBG) diff --git a/rules/docker-sonic-mgmt-framework.mk b/rules/docker-sonic-mgmt-framework.mk index ef1d55990816..b0986e12d14e 100644 --- a/rules/docker-sonic-mgmt-framework.mk +++ b/rules/docker-sonic-mgmt-framework.mk @@ -36,3 +36,6 @@ $(DOCKER_MGMT_FRAMEWORK)_RUN_OPT += -v /var/run/dbus:/var/run/dbus:rw $(DOCKER_MGMT_FRAMEWORK)_RUN_OPT += --mount type=bind,source="/var/platform/",target="/mnt/platform/" $(DOCKER_MGMT_FRAMEWORK)_BASE_IMAGE_FILES += sonic-cli:/usr/bin/sonic-cli + +SONIC_BUSTER_DOCKERS += $(DOCKER_MGMT_FRAMEWORK) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_MGMT_FRAMEWORK_DBG) diff --git a/rules/docker-sonic-sdk-buildenv.mk b/rules/docker-sonic-sdk-buildenv.mk index 52e11b815cff..fc3ee9fac986 100644 --- a/rules/docker-sonic-sdk-buildenv.mk +++ b/rules/docker-sonic-sdk-buildenv.mk @@ -27,3 +27,6 @@ $(DOCKER_SONIC_SDK_BUILDENV)_LOAD_DOCKERS += $(DOCKER_SONIC_SDK) SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_SDK_BUILDENV) SONIC_DOCKER_DBG_IMAGES += $(DOCKER_SONIC_SDK_BUILDENV_DBG) + +SONIC_BUSTER_DOCKERS += $(DOCKER_SONIC_SDK_BUILDENV) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SONIC_SDK_BUILDENV_DBG) diff --git a/rules/docker-sonic-sdk.mk b/rules/docker-sonic-sdk.mk index b6a185c6d94e..d1253aeb1fca 100644 --- a/rules/docker-sonic-sdk.mk +++ b/rules/docker-sonic-sdk.mk @@ -22,3 +22,6 @@ $(DOCKER_SONIC_SDK)_LABELS += com.azure.sonic.versions.libswsscommon=$(LIBSWSSCO $(DOCKER_SONIC_SDK)_LABELS += com.azure.sonic.versions.libsairedis=$(LIBSAIREDIS_VERSION) $(DOCKER_SONIC_SDK)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_SONIC_SDK) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SONIC_SDK_DBG) diff --git a/rules/docker-teamd.mk b/rules/docker-teamd.mk index 9135c45aea3e..4d1fe07a55ff 100644 --- a/rules/docker-teamd.mk +++ b/rules/docker-teamd.mk @@ -34,3 +34,6 @@ $(DOCKER_TEAMD)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_TEAMD)_BASE_IMAGE_FILES += teamdctl:/usr/bin/teamdctl $(DOCKER_TEAMD)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_TEAMD) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_TEAMD_DBG) diff --git a/rules/docker-telemetry.mk b/rules/docker-telemetry.mk index 4a1dd9e67d29..6922856f82a0 100644 --- a/rules/docker-telemetry.mk +++ b/rules/docker-telemetry.mk @@ -35,3 +35,6 @@ $(DOCKER_TELEMETRY)_RUN_OPT += -v /var/run/dbus:/var/run/dbus:rw $(DOCKER_TELEMETRY)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) $(DOCKER_TELEMETRY)_BASE_IMAGE_FILES += monit_telemetry:/etc/monit/conf.d + +SONIC_BUSTER_DOCKERS += $(DOCKER_TELEMETRY) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_TELEMETRY_DBG) diff --git a/slave.mk b/slave.mk index 8417d7aa47da..8a00fe4a3f78 100644 --- a/slave.mk +++ b/slave.mk @@ -59,11 +59,7 @@ ifeq ($(CONFIGURED_ARCH),arm64) override DOCKER_BASE_ARCH = arm64v8 endif endif -ifeq ($(BLDENV),bullseye) IMAGE_DISTRO := bullseye -else -IMAGE_DISTRO := buster -endif IMAGE_DISTRO_DEBS_PATH = $(TARGET_PATH)/debs/$(IMAGE_DISTRO) IMAGE_DISTRO_FILES_PATH = $(TARGET_PATH)/files/$(IMAGE_DISTRO) @@ -711,6 +707,10 @@ $(foreach DOCKER_IMAGE,$(SONIC_STRETCH_DOCKERS), $(eval $(DOCKER_IMAGE)_DEBS_PAT $(foreach DOCKER_IMAGE,$(SONIC_STRETCH_DOCKERS), $(eval $(DOCKER_IMAGE)_FILES_PATH := $(STRETCH_FILES_PATH))) $(foreach DOCKER_IMAGE,$(SONIC_STRETCH_DBG_DOCKERS), $(eval $(DOCKER_IMAGE)_DEBS_PATH := $(STRETCH_DEBS_PATH))) $(foreach DOCKER_IMAGE,$(SONIC_STRETCH_DBG_DOCKERS), $(eval $(DOCKER_IMAGE)_FILES_PATH := $(STRETCH_FILES_PATH))) +$(foreach DOCKER_IMAGE,$(SONIC_BUSTER_DOCKERS), $(eval $(DOCKER_IMAGE)_DEBS_PATH := $(BUSTER_DEBS_PATH))) +$(foreach DOCKER_IMAGE,$(SONIC_BUSTER_DOCKERS), $(eval $(DOCKER_IMAGE)_FILES_PATH := $(BUSTER_FILES_PATH))) +$(foreach DOCKER_IMAGE,$(SONIC_BUSTER_DBG_DOCKERS), $(eval $(DOCKER_IMAGE)_DEBS_PATH := $(BUSTER_DEBS_PATH))) +$(foreach DOCKER_IMAGE,$(SONIC_BUSTER_DBG_DOCKERS), $(eval $(DOCKER_IMAGE)_FILES_PATH := $(BUSTER_FILES_PATH))) ifeq ($(BLDENV),jessie) DOCKER_IMAGES := $(SONIC_JESSIE_DOCKERS) @@ -724,8 +724,15 @@ ifeq ($(BLDENV),stretch) STRETCH_DOCKER_IMAGES = $(filter $(SONIC_STRETCH_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS)) STRETCH_DBG_DOCKER_IMAGES = $(filter $(SONIC_STRETCH_DBG_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS)) else - DOCKER_IMAGES = $(filter-out $(SONIC_JESSIE_DOCKERS) $(SONIC_STRETCH_DOCKERS),$(SONIC_DOCKER_IMAGES)) - DOCKER_DBG_IMAGES = $(filter-out $(SONIC_JESSIE_DBG_DOCKERS) $(SONIC_STRETCH_DBG_DOCKERS), $(SONIC_DOCKER_DBG_IMAGES)) +ifeq ($(BLDENV),buster) + DOCKER_IMAGES := $(SONIC_BUSTER_DOCKERS) + DOCKER_DBG_IMAGES := $(SONIC_BUSTER_DBG_DOCKERS) + BUSTER_DOCKER_IMAGES = $(filter $(SONIC_BUSTER_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS)) + BUSTER_DBG_DOCKER_IMAGES = $(filter $(SONIC_BUSTER_DBG_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS)) +else + DOCKER_IMAGES = $(filter-out $(SONIC_JESSIE_DOCKERS) $(SONIC_STRETCH_DOCKERS) $(SONIC_BUSTER_DOCKERS),$(SONIC_DOCKER_IMAGES)) + DOCKER_DBG_IMAGES = $(filter-out $(SONIC_JESSIE_DBG_DOCKERS) $(SONIC_STRETCH_DBG_DOCKERS) $(SONIC_BUSTER_DBG_DOCKERS), $(SONIC_DOCKER_DBG_IMAGES)) +endif endif endif @@ -868,6 +875,14 @@ DOCKER_LOAD_TARGETS = $(addsuffix -load,$(addprefix $(TARGET_PATH)/, \ $(DOCKER_IMAGES) \ $(DOCKER_DBG_IMAGES))) +ifeq ($(BLDENV),bullseye) +DOCKER_LOAD_TARGETS += $(addsuffix -load,$(addprefix $(TARGET_PATH)/, \ + $(SONIC_JESSIE_DOCKERS) \ + $(SONIC_STRETCH_DOCKERS) \ + $(SONIC_BUSTER_DOCKERS))) + +endif + $(DOCKER_LOAD_TARGETS) : $(TARGET_PATH)/%.gz-load : .platform docker-start $$(TARGET_PATH)/$$*.gz $(HEADER) docker load -i $(TARGET_PATH)/$*.gz $(LOG) @@ -1169,6 +1184,9 @@ clean :: .platform clean-logs $$(SONIC_CLEAN_DEBS) $$(SONIC_CLEAN_FILES) $$(SONI all : .platform $$(addprefix $(TARGET_PATH)/,$$(SONIC_ALL)) +buster : $$(addprefix $(TARGET_PATH)/,$$(BUSTER_DOCKER_IMAGES)) \ + $$(addprefix $(TARGET_PATH)/,$$(BUSTER_DBG_DOCKER_IMAGES)) + stretch : $$(addprefix $(TARGET_PATH)/,$$(STRETCH_DOCKER_IMAGES)) \ $$(addprefix $(TARGET_PATH)/,$$(STRETCH_DBG_DOCKER_IMAGES)) From e70306bae9be6a2dd75b8cebea637548e5b82cfd Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 8 Jul 2021 17:40:04 -0700 Subject: [PATCH 052/186] Update src/sonic-linux-kernel to point to the 5.10 kernel Some patches have been enabled at this point, others need more rework. Signed-off-by: Saikrishna Arcot --- rules/linux-kernel.mk | 4 ++-- src/sonic-linux-kernel | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rules/linux-kernel.mk b/rules/linux-kernel.mk index 2d369361a9e5..5bc3d59c12b2 100644 --- a/rules/linux-kernel.mk +++ b/rules/linux-kernel.mk @@ -1,8 +1,8 @@ # linux kernel package -KVERSION_SHORT = 4.19.0-12-2 +KVERSION_SHORT = 5.10.0-7-2 KVERSION = $(KVERSION_SHORT)-$(CONFIGURED_ARCH) -KERNEL_VERSION = 4.19.152 +KERNEL_VERSION = 5.10.40 KERNEL_SUBVERSION = 1 ifeq ($(CONFIGURED_ARCH), armhf) # Override kernel version for ARMHF as it uses arm MP (multi-platform) for short version diff --git a/src/sonic-linux-kernel b/src/sonic-linux-kernel index 14a4212e279e..e4782543f33d 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit 14a4212e279e579048afe28247e80420e7b46de6 +Subproject commit e4782543f33d147bcf5047c8737ffea71faec176 From 54d9c58b9466b80a41fab4195cc5e905d374e10b Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 8 Jul 2021 17:30:01 -0700 Subject: [PATCH 053/186] Update saibcm-modules to compile with 5.10 kernel Update the build rules in saibcm-modules to use the 5.10 kernel instead of searching for the 4.19 kernel. In addition, some code changes were done to get it to compile. The main categories of such changes are as follows: * For /proc files, `struct file_operations` has been replaced with `struct proc_ops`. * Y2038 changes to use the new APIs, since `do_gettimeofday()` is no longer available. * Minor changes in how external kernel module symbols are read by modpost. Signed-off-by: Saikrishna Arcot --- .../broadcom/saibcm-modules/debian/control | 2 +- .../debian/opennsl-modules.dirs | 2 +- .../debian/opennsl-modules.install | 14 ++-- platform/broadcom/saibcm-modules/debian/rules | 5 +- .../sdklt/linux/bde/ngbde_iio.c | 4 +- .../sdklt/linux/bde/ngbde_iproc_probe.c | 2 +- .../sdklt/linux/bde/ngbde_pio.c | 2 +- .../sdklt/linux/bde/ngbde_procfs.c | 11 ++- .../sdklt/linux/knet/ngknet_linux.c | 8 ++ .../sdklt/linux/knet/ngknet_linux.h | 8 +- .../sdklt/linux/knet/ngknet_main.c | 9 +++ .../sdklt/linux/knet/ngknet_procfs.c | 74 +++++++++++++++++++ .../sdklt/linux/knetcb/ngknetcb_main.c | 13 +++- .../sdklt/linux/knetcb/psample-cb.c | 65 ++++++++-------- .../systems/bde/linux/include/linux_dma.h | 2 +- .../systems/bde/linux/kernel/linux_dma.c | 6 +- .../systems/bde/linux/user/kernel/Makefile | 2 +- .../bde/linux/user/kernel/linux-user-bde.c | 2 +- .../linux/kernel/modules/bcm-knet/Makefile | 2 +- .../kernel/modules/bcm-ptp-clock/Makefile | 4 +- .../modules/bcm-ptp-clock/bcm-ptp-clock.c | 26 +++---- .../linux/kernel/modules/knet-cb/Makefile | 2 +- .../linux/kernel/modules/knet-cb/psample-cb.c | 65 ++++++++-------- .../linux/kernel/modules/shared/gmodule.c | 14 +++- .../linux/kernel/modules/shared/ksal.c | 6 +- 25 files changed, 229 insertions(+), 121 deletions(-) diff --git a/platform/broadcom/saibcm-modules/debian/control b/platform/broadcom/saibcm-modules/debian/control index 60bcbafb1b1a..0d81efa96dea 100644 --- a/platform/broadcom/saibcm-modules/debian/control +++ b/platform/broadcom/saibcm-modules/debian/control @@ -10,5 +10,5 @@ Standards-Version: 3.9.3 Package: opennsl-modules Architecture: amd64 Section: main -Depends: linux-image-4.19.0-12-2-amd64-unsigned +Depends: linux-image-5.10.0-7-2-amd64-unsigned Description: kernel modules for broadcom SAI diff --git a/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs b/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs index 140d1186059e..6274005e75d5 100644 --- a/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs +++ b/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs @@ -1 +1 @@ -lib/modules/4.19.0-12-2-amd64/extra +lib/modules/5.10.0-7-2-amd64/extra diff --git a/platform/broadcom/saibcm-modules/debian/opennsl-modules.install b/platform/broadcom/saibcm-modules/debian/opennsl-modules.install index 5e8e70bb189f..138d1d238eeb 100644 --- a/platform/broadcom/saibcm-modules/debian/opennsl-modules.install +++ b/platform/broadcom/saibcm-modules/debian/opennsl-modules.install @@ -1,8 +1,8 @@ -systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-knet.ko lib/modules/4.19.0-12-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-kernel-bde.ko lib/modules/4.19.0-12-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-user-bde.ko lib/modules/4.19.0-12-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-knet-cb.ko lib/modules/4.19.0-12-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/psample.ko lib/modules/4.19.0-12-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-ptp-clock.ko lib/modules/4.19.0-12-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-knet.ko lib/modules/5.10.0-7-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-kernel-bde.ko lib/modules/5.10.0-7-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-user-bde.ko lib/modules/5.10.0-7-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-knet-cb.ko lib/modules/5.10.0-7-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/psample.ko lib/modules/5.10.0-7-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-ptp-clock.ko lib/modules/5.10.0-7-2-amd64/extra systemd/opennsl-modules.service lib/systemd/system -sdklt/linux/bde/linux_ngbde.ko lib/modules/4.19.0-12-2-amd64/extra +sdklt/linux/bde/linux_ngbde.ko lib/modules/5.10.0-7-2-amd64/extra diff --git a/platform/broadcom/saibcm-modules/debian/rules b/platform/broadcom/saibcm-modules/debian/rules index 509901745e97..69efb6b36008 100755 --- a/platform/broadcom/saibcm-modules/debian/rules +++ b/platform/broadcom/saibcm-modules/debian/rules @@ -34,8 +34,8 @@ sname:=opennsl PACKAGE=opennsl-modules # modifieable for experiments or debugging m-a MA_DIR ?= /usr/share/modass -KVERSION ?= 4.19.0-12-2-amd64 -KERNVERSION ?= 4.19.0-12-2 +KVERSION ?= 5.10.0-7-2-amd64 +KERNVERSION ?= 5.10.0-7-2 # load generic variable handling -include $(MA_DIR)/include/generic.make @@ -94,6 +94,7 @@ build-arch-stamp: cd /; sudo ln -s /usr/src/linux-headers-$(KERNVERSION)-amd64/ /lib/modules/$(KERNVERSION)-amd64/build cd /; sudo ln -s /usr/src/linux-headers-$(KERNVERSION)-amd64/include/generated/ /usr/src/linux-headers-$(KERNVERSION)-common/include/generated cd /; sudo ln -s /usr/src/linux-headers-$(KERNVERSION)-amd64/arch/x86/include/generated/ /usr/src/linux-headers-$(KERNVERSION)-common/arch/x86/include/generated + cd /; sudo ln -s /usr/src/linux-headers-$(KERNVERSION)-amd64/arch/x86/module.lds /usr/src/linux-headers-$(KERNVERSION)-common/arch/x86/module.lds cd /; sudo ln -s /usr/src/linux-headers-$(KERNVERSION)-amd64/include/config/ /usr/src/linux-headers-$(KERNVERSION)-common/include/config cd /; sudo cp /usr/src/linux-headers-$(KERNVERSION)-amd64/Module.symvers /usr/src/linux-headers-$(KERNVERSION)-common/Module.symvers diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iio.c b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iio.c index e97f1fcea730..3e594b6ab6d3 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iio.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iio.c @@ -36,7 +36,7 @@ ngbde_iio_map(void *devh, phys_addr_t addr, phys_addr_t size) ngbde_iio_unmap(devh); } - sd->iio_mem = ioremap_nocache(addr, size); + sd->iio_mem = ioremap(addr, size); if (sd->iio_mem) { /* Save mapped resources */ @@ -106,7 +106,7 @@ ngbde_paxb_map(void *devh, phys_addr_t addr, phys_addr_t size) iounmap(sd->paxb_mem); } - sd->paxb_mem = ioremap_nocache(addr, size); + sd->paxb_mem = ioremap(addr, size); if (sd->paxb_mem) { /* Save mapped resources */ diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iproc_probe.c b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iproc_probe.c index 63b02a4075a3..1cb932a4b148 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iproc_probe.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iproc_probe.c @@ -65,7 +65,7 @@ iproc_cmicd_probe(struct platform_device *pldev) (void *)memres->start, (void *)memres->end); } - base_address = ioremap_nocache(memres->start, size); + base_address = ioremap(memres->start, size); if (!base_address) { printk(KERN_WARNING "Error mapping iProc CMIC registers"); return -1; diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_pio.c b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_pio.c index cab094a2feca..2faf7199901f 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_pio.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_pio.c @@ -36,7 +36,7 @@ ngbde_pio_map(void *devh, phys_addr_t addr, phys_addr_t size) ngbde_pio_unmap(devh); } - sd->pio_mem = ioremap_nocache(addr, size); + sd->pio_mem = ioremap(addr, size); if (sd->pio_mem) { /* Save mapped resources */ diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c index f99339a5b0dc..8f4b701b2ab2 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c @@ -88,12 +88,11 @@ proc_release(struct inode *inode, struct file *file) return single_release(inode, file); } -static struct file_operations proc_fops = { - owner: THIS_MODULE, - open: proc_open, - read: seq_read, - llseek: seq_lseek, - release: proc_release, +static struct proc_ops proc_fops = { + proc_open: proc_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_release, }; int diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.c b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.c index 0162ae5b96c1..f19cb51f6c34 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.c @@ -39,11 +39,19 @@ unsigned long sal_time_usecs(void) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct timeval tv; kal_time_val_get(&tv); return tv.tv_sec * 1000000 + tv.tv_usec; +#else + struct timespec64 tv; + + kal_time_val_get(&tv); + + return tv.tv_sec * 1000000 + tv.tv_nsec / 1000; +#endif } void diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.h b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.h index 686aac8f5571..bf82e5347cf4 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.h +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.h @@ -113,7 +113,7 @@ kal_time_val_get(struct timeval *tv) { do_gettimeofday(tv); } -#else +#elif LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static inline void kal_time_val_get(struct timeval *tv) { @@ -122,6 +122,12 @@ kal_time_val_get(struct timeval *tv) tv->tv_sec = ts.tv_sec; tv->tv_usec = ts.tv_nsec / 1000; } +#else +static inline void +kal_time_val_get(struct timespec64 *tv) +{ + ktime_get_real_ts64(tv); +} #endif /* KERNEL_VERSION(3,17,0) */ static inline unsigned long diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_main.c b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_main.c index b8af31d85ff2..f55a2bc03c5c 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_main.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_main.c @@ -233,7 +233,11 @@ ngknet_pkt_dump(uint8_t *data, int len) static void ngknet_pkt_stats(struct pdma_dev *pdev, int dir) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct timeval tv0[2], tv1[2]; +#else + static struct timespec64 tv0[2], tv1[2]; +#endif static uint32_t pkts[2] = {0}, prts[2] = {0}; static uint64_t intrs = 0; @@ -245,8 +249,13 @@ ngknet_pkt_stats(struct pdma_dev *pdev, int dir) uint32_t iv_time; uint32_t pps; kal_time_val_get(&tv1[dir]); +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) iv_time = (tv1[dir].tv_sec - tv0[dir].tv_sec) * 1000000 + (tv1[dir].tv_usec - tv0[dir].tv_usec); +#else + iv_time = (tv1[dir].tv_sec - tv0[dir].tv_sec) * 1000000 + + (tv1[dir].tv_nsec - tv0[dir].tv_nsec) / 1000; +#endif pps = 100000 * 1000 / (iv_time / 1000); prts[dir]++; if (pps <= 100000 || prts[dir] * 100000 >= pps) { diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_procfs.c b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_procfs.c index 85edaa26abb9..bc738e7ea12a 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_procfs.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_procfs.c @@ -88,6 +88,7 @@ proc_debug_level_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_debug_level_fops = { owner: THIS_MODULE, open: proc_debug_level_open, @@ -96,6 +97,15 @@ static struct file_operations proc_debug_level_fops = { llseek: seq_lseek, release: proc_debug_level_release, }; +#else +static struct proc_ops proc_debug_level_fops = { + proc_open: proc_debug_level_open, + proc_read: seq_read, + proc_write: proc_debug_level_write, + proc_lseek: seq_lseek, + proc_release: proc_debug_level_release, +}; +#endif static int proc_device_info_show(struct seq_file *m, void *v) @@ -168,6 +178,7 @@ proc_device_info_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_device_info_fops = { owner: THIS_MODULE, open: proc_device_info_open, @@ -175,6 +186,14 @@ static struct file_operations proc_device_info_fops = { llseek: seq_lseek, release: proc_device_info_release, }; +#else +static struct proc_ops proc_device_info_fops = { + proc_open: proc_device_info_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_device_info_release, +}; +#endif static int proc_filter_info_show(struct seq_file *m, void *v) @@ -250,6 +269,7 @@ proc_filter_info_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_filter_info_fops = { owner: THIS_MODULE, open: proc_filter_info_open, @@ -257,6 +277,14 @@ static struct file_operations proc_filter_info_fops = { llseek: seq_lseek, release: proc_filter_info_release, }; +#else +static struct proc_ops proc_filter_info_fops = { + proc_open: proc_filter_info_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_filter_info_release, +}; +#endif static int proc_netif_info_show(struct seq_file *m, void *v) @@ -342,6 +370,7 @@ proc_netif_info_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_netif_info_fops = { owner: THIS_MODULE, open: proc_netif_info_open, @@ -349,6 +378,14 @@ static struct file_operations proc_netif_info_fops = { llseek: seq_lseek, release: proc_netif_info_release, }; +#else +static struct proc_ops proc_netif_info_fops = { + proc_open: proc_netif_info_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_netif_info_release, +}; +#endif static int proc_pkt_stats_show(struct seq_file *m, void *v) @@ -415,6 +452,7 @@ proc_pkt_stats_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_pkt_stats_fops = { owner: THIS_MODULE, open: proc_pkt_stats_open, @@ -422,6 +460,14 @@ static struct file_operations proc_pkt_stats_fops = { llseek: seq_lseek, release: proc_pkt_stats_release, }; +#else +static struct proc_ops proc_pkt_stats_fops = { + proc_open: proc_pkt_stats_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_pkt_stats_release, +}; +#endif static int proc_rate_limit_show(struct seq_file *m, void *v) @@ -461,6 +507,7 @@ proc_rate_limit_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_rate_limit_fops = { owner: THIS_MODULE, open: proc_rate_limit_open, @@ -469,6 +516,15 @@ static struct file_operations proc_rate_limit_fops = { llseek: seq_lseek, release: proc_rate_limit_release, }; +#else +static struct proc_ops proc_rate_limit_fops = { + proc_open: proc_rate_limit_open, + proc_read: seq_read, + proc_write: proc_rate_limit_write, + proc_lseek: seq_lseek, + proc_release: proc_rate_limit_release, +}; +#endif static int proc_reg_status_show(struct seq_file *m, void *v) @@ -512,6 +568,7 @@ proc_reg_status_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_reg_status_fops = { owner: THIS_MODULE, open: proc_reg_status_open, @@ -519,6 +576,14 @@ static struct file_operations proc_reg_status_fops = { llseek: seq_lseek, release: proc_reg_status_release, }; +#else +static struct proc_ops proc_reg_status_fops = { + proc_open: proc_reg_status_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_reg_status_release, +}; +#endif static int proc_ring_status_show(struct seq_file *m, void *v) @@ -566,6 +631,7 @@ proc_ring_status_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_ring_status_fops = { owner: THIS_MODULE, open: proc_ring_status_open, @@ -573,6 +639,14 @@ static struct file_operations proc_ring_status_fops = { llseek: seq_lseek, release: proc_ring_status_release, }; +#else +static struct proc_ops proc_ring_status_fops = { + proc_open: proc_ring_status_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_ring_status_release, +}; +#endif int ngknet_procfs_init(void) diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/ngknetcb_main.c b/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/ngknetcb_main.c index aa248dafce52..807fa1e1cd28 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/ngknetcb_main.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/ngknetcb_main.c @@ -391,6 +391,17 @@ static struct file_operations ngknetcb_fops = { .mmap = ngknetcb_mmap, }; +static struct proc_ops ngknetcb_proc_ops = { + .proc_open = ngknetcb_open, + .proc_read = seq_read, + .proc_write = ngknetcb_write, + .proc_lseek = seq_lseek, + .proc_release = ngknetcb_release, + .proc_ioctl = ngknetcb_ioctl, + .proc_compat_ioctl = ngknetcb_ioctl, + .proc_mmap = ngknetcb_mmap, +}; + static int __init ngknetcb_init_module(void) { @@ -404,7 +415,7 @@ ngknetcb_init_module(void) return rv; } - PROC_CREATE(entry, NGKNETCB_MODULE_NAME, 0666, NULL, &ngknetcb_fops); + PROC_CREATE(entry, NGKNETCB_MODULE_NAME, 0666, NULL, &ngknetcb_proc_ops); if (entry == NULL) { printk(KERN_ERR "%s: proc_mkdir failed\n", NGKNETCB_MODULE_NAME); diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/psample-cb.c b/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/psample-cb.c index be34430218d3..82edff610d4b 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/psample-cb.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/psample-cb.c @@ -623,13 +623,12 @@ psample_proc_rate_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_rate_file_ops = { - owner: THIS_MODULE, - open: psample_proc_rate_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_rate_write, - release: single_release, +struct proc_ops psample_proc_rate_file_ops = { + proc_open: psample_proc_rate_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_rate_write, + proc_release: single_release, }; /* @@ -722,13 +721,12 @@ psample_proc_size_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_size_file_ops = { - owner: THIS_MODULE, - open: psample_proc_size_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_size_write, - release: single_release, +struct proc_ops psample_proc_size_file_ops = { + proc_open: psample_proc_size_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_size_write, + proc_release: single_release, }; /* @@ -763,13 +761,12 @@ psample_proc_map_open(struct inode * inode, struct file * file) return single_open(file, psample_proc_map_show, NULL); } -struct file_operations psample_proc_map_file_ops = { - owner: THIS_MODULE, - open: psample_proc_map_open, - read: seq_read, - llseek: seq_lseek, - write: NULL, - release: single_release, +struct proc_ops psample_proc_map_file_ops = { + proc_open: psample_proc_map_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: NULL, + proc_release: single_release, }; /* @@ -829,13 +826,12 @@ psample_proc_debug_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_debug_file_ops = { - owner: THIS_MODULE, - open: psample_proc_debug_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_debug_write, - release: single_release, +struct proc_ops psample_proc_debug_file_ops = { + proc_open: psample_proc_debug_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_debug_write, + proc_release: single_release, }; static int @@ -891,13 +887,12 @@ psample_proc_stats_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_stats_file_ops = { - owner: THIS_MODULE, - open: psample_proc_stats_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_stats_write, - release: single_release, +struct proc_ops psample_proc_stats_file_ops = { + proc_open: psample_proc_stats_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_stats_write, + proc_release: single_release, }; int psample_cleanup(void) diff --git a/platform/broadcom/saibcm-modules/systems/bde/linux/include/linux_dma.h b/platform/broadcom/saibcm-modules/systems/bde/linux/include/linux_dma.h index 23eb3fa33e9e..437ec088f25c 100644 --- a/platform/broadcom/saibcm-modules/systems/bde/linux/include/linux_dma.h +++ b/platform/broadcom/saibcm-modules/systems/bde/linux/include/linux_dma.h @@ -49,7 +49,7 @@ /* ioremap is broken in kernel */ #define IOREMAP(addr, size) ((void *)KSEG1ADDR(addr)) #else -#define IOREMAP(addr, size) ioremap_nocache(addr, size) +#define IOREMAP(addr, size) ioremap(addr, size) #endif #if defined (__mips__) diff --git a/platform/broadcom/saibcm-modules/systems/bde/linux/kernel/linux_dma.c b/platform/broadcom/saibcm-modules/systems/bde/linux/kernel/linux_dma.c index 52711964a533..eac6eeaba74b 100644 --- a/platform/broadcom/saibcm-modules/systems/bde/linux/kernel/linux_dma.c +++ b/platform/broadcom/saibcm-modules/systems/bde/linux/kernel/linux_dma.c @@ -1149,7 +1149,8 @@ _sinval(int d, void *ptr, int length) /* FIXME: need proper function to replace dma_cache_sync */ dma_sync_single_for_cpu(NULL, (unsigned long)ptr, length, DMA_BIDIRECTIONAL); #else - dma_cache_sync(NULL, ptr, length, DMA_BIDIRECTIONAL); + // TODO: This needs to be verified + dma_sync_single_for_device(NULL, ptr, length, DMA_BIDIRECTIONAL); #endif #endif return 0; @@ -1165,7 +1166,8 @@ _sflush(int d, void *ptr, int length) /* FIXME: need proper function to replace dma_cache_sync */ dma_sync_single_for_cpu(NULL, (unsigned long)ptr, length, DMA_BIDIRECTIONAL); #else - dma_cache_sync(NULL, ptr, length, DMA_BIDIRECTIONAL); + // TODO: This needs to be verified + dma_sync_single_for_device(NULL, ptr, length, DMA_BIDIRECTIONAL); #endif #endif diff --git a/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/Makefile b/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/Makefile index 2cc96df02d0a..633475c2590e 100644 --- a/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/Makefile +++ b/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/Makefile @@ -64,7 +64,7 @@ $(KMODULE): $(MODULE) mkdir $(BLDDIR)/$(KERNEL_MODULE_DIR) cp ${SDK}/make/Makefile.linux-kmodule $(BLDDIR)/$(KERNEL_MODULE_DIR)/Makefile cat ${KBUILD_EXTRA_SYMBOLS} > $(BLDDIR)/$(KERNEL_MODULE_DIR)/Module.symvers - MOD_NAME=$(THIS_MOD_NAME) $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko + MOD_NAME=$(THIS_MOD_NAME) KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko endif kernel_libs: diff --git a/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c b/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c index 4e6186e2d80d..36dcf0ba6d41 100644 --- a/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c +++ b/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c @@ -117,7 +117,7 @@ be made. #define HX5_INTC_INTR_STATUS_BASE (HX5_INTC_INTR_STATUS_REG0) #define HX5_INTC_INTR_RAW_STATUS_BASE (HX5_INTC_INTR_RAW_STATUS_REG0) -#define IOREMAP(addr, size) ioremap_nocache(addr, size) +#define IOREMAP(addr, size) ioremap(addr, size) #define HX5_IHOST_GICD_ISENABLERN_0 (0x10781100) #define HX5_IHOST_GICD_ISENABLERN_1 (0x10781104) diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/Makefile b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/Makefile index 9879be69b0b6..56b83fb0da33 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/Makefile +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/Makefile @@ -59,7 +59,7 @@ $(KMODULE): $(MODULE) mkdir $(BLDDIR)/$(KERNEL_MODULE_DIR) cp ${SDK}/make/Makefile.linux-kmodule $(BLDDIR)/$(KERNEL_MODULE_DIR)/Makefile cat ${KBUILD_EXTRA_SYMBOLS} > $(BLDDIR)/$(KERNEL_MODULE_DIR)/Module.symvers - MOD_NAME=$(THIS_MOD_NAME) $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko + MOD_NAME=$(THIS_MOD_NAME) KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko endif # Make.depend is before clean:: so that Make.depend's clean:: runs first. diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/Makefile b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/Makefile index 9aa3be686851..743eb741732b 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/Makefile +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/Makefile @@ -36,7 +36,7 @@ KMODULE = $(LIBDIR)/$(THIS_MOD_NAME).ko build: $(MODULE) $(KMODULE) endif -#KBUILD_EXTRA_SYMBOLS := ${BLDDIR}/../../../../bde/linux/kernel/kernel_module/Module.symvers +KBUILD_EXTRA_SYMBOLS := ${BLDDIR}/../../../../bde/linux/kernel/kernel_module/Module.symvers KBUILD_EXTRA_SYMBOLS += ${BLDDIR}/../bcm-knet/kernel_module/Module.symvers # BCM PTP Clock Device @@ -49,7 +49,7 @@ $(KMODULE): $(MODULE) mkdir $(BLDDIR)/$(KERNEL_MODULE_DIR) cp ${SDK}/make/Makefile.linux-kmodule $(BLDDIR)/$(KERNEL_MODULE_DIR)/Makefile cat ${KBUILD_EXTRA_SYMBOLS} > $(BLDDIR)/$(KERNEL_MODULE_DIR)/Module.symvers - MOD_NAME=$(THIS_MOD_NAME) $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko + MOD_NAME=$(THIS_MOD_NAME) KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko endif # Make.depend is before clean:: so that Make.depend's clean:: runs first. diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c index edc4a38c741c..7c88fae97d62 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c @@ -1594,13 +1594,12 @@ bksync_proc_txts_write(struct file *file, const char *buf, return count; } -struct file_operations bksync_proc_txts_file_ops = { - owner: THIS_MODULE, - open: bksync_proc_txts_open, - read: seq_read, - llseek: seq_lseek, - write: bksync_proc_txts_write, - release: seq_release, +struct proc_ops bksync_proc_txts_file_ops = { + proc_open: bksync_proc_txts_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bksync_proc_txts_write, + proc_release: seq_release, }; /* @@ -1641,13 +1640,12 @@ static int bksync_proc_debug_open(struct inode * inode, struct file * file) } -struct file_operations bksync_proc_debug_file_ops = { - owner: THIS_MODULE, - open: bksync_proc_debug_open, - read: seq_read, - llseek: seq_lseek, - write: bksync_proc_debug_write, - release: single_release, +struct proc_ops bksync_proc_debug_file_ops = { + proc_open: bksync_proc_debug_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bksync_proc_debug_write, + proc_release: single_release, }; diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/Makefile b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/Makefile index b8697731dd4e..e0711db022b2 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/Makefile +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/Makefile @@ -62,7 +62,7 @@ $(KMODULE): $(MODULE) mkdir $(BLDDIR)/$(KERNEL_MODULE_DIR) cp ${SDK}/make/Makefile.linux-kmodule $(BLDDIR)/$(KERNEL_MODULE_DIR)/Makefile cat ${KBUILD_EXTRA_SYMBOLS} > $(BLDDIR)/$(KERNEL_MODULE_DIR)/Module.symvers - MOD_NAME=$(THIS_MOD_NAME) $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko + MOD_NAME=$(THIS_MOD_NAME) KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko endif # Make.depend is before clean:: so that Make.depend's clean:: runs first. diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/psample-cb.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/psample-cb.c index 755955b20fdd..fd69d64ddb70 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/psample-cb.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/psample-cb.c @@ -714,13 +714,12 @@ psample_proc_rate_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_rate_file_ops = { - owner: THIS_MODULE, - open: psample_proc_rate_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_rate_write, - release: single_release, +struct proc_ops psample_proc_rate_file_ops = { + proc_open: psample_proc_rate_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_rate_write, + proc_release: single_release, }; /* @@ -813,13 +812,12 @@ psample_proc_size_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_size_file_ops = { - owner: THIS_MODULE, - open: psample_proc_size_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_size_write, - release: single_release, +struct proc_ops psample_proc_size_file_ops = { + proc_open: psample_proc_size_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_size_write, + proc_release: single_release, }; /* @@ -854,13 +852,12 @@ psample_proc_map_open(struct inode * inode, struct file * file) return single_open(file, psample_proc_map_show, NULL); } -struct file_operations psample_proc_map_file_ops = { - owner: THIS_MODULE, - open: psample_proc_map_open, - read: seq_read, - llseek: seq_lseek, - write: NULL, - release: single_release, +struct proc_ops psample_proc_map_file_ops = { + proc_open: psample_proc_map_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: NULL, + proc_release: single_release, }; /* @@ -924,13 +921,12 @@ psample_proc_debug_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_debug_file_ops = { - owner: THIS_MODULE, - open: psample_proc_debug_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_debug_write, - release: single_release, +struct proc_ops psample_proc_debug_file_ops = { + proc_open: psample_proc_debug_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_debug_write, + proc_release: single_release, }; static int @@ -984,13 +980,12 @@ psample_proc_stats_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_stats_file_ops = { - owner: THIS_MODULE, - open: psample_proc_stats_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_stats_write, - release: single_release, +struct proc_ops psample_proc_stats_file_ops = { + proc_open: psample_proc_stats_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_stats_write, + proc_release: single_release, }; int psample_cleanup(void) diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/gmodule.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/gmodule.c index 3ef000961837..5b2d5d959a1b 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/gmodule.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/gmodule.c @@ -149,6 +149,7 @@ static int _gmodule_proc_release(struct inode * inode, struct file * file) { return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations _gmodule_proc_fops = { owner: THIS_MODULE, open: _gmodule_proc_open, @@ -158,6 +159,15 @@ struct file_operations _gmodule_proc_fops = { release: _gmodule_proc_release, }; #else +struct proc_ops _gmodule_proc_fops = { + proc_open: _gmodule_proc_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: _gmodule_proc_write, + proc_release: _gmodule_proc_release, +}; +#endif +#else int gmodule_vpprintf(char** page_ptr, const char* fmt, va_list args) { @@ -271,7 +281,7 @@ _gmodule_release(struct inode *inode, struct file *filp) return 0; } -#ifdef HAVE_UNLOCKED_IOCTL +#if defined(HAVE_UNLOCKED_IOCTL) || LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0) static long _gmodule_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) @@ -334,7 +344,7 @@ _gmodule_mmap(struct file *filp, struct vm_area_struct *vma) /* FILE OPERATIONS */ struct file_operations _gmodule_fops = { -#ifdef HAVE_UNLOCKED_IOCTL +#if defined(HAVE_UNLOCKED_IOCTL) || LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0) unlocked_ioctl: _gmodule_unlocked_ioctl, #else ioctl: _gmodule_ioctl, diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/ksal.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/ksal.c index 7f90c59c3a39..e34e18cdafb1 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/ksal.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/ksal.c @@ -191,9 +191,9 @@ sal_sem_give(sal_sem_t b) uint32 sal_time_usecs(void) { - struct timeval ltv; - do_gettimeofday(<v); - return (ltv.tv_sec * SECOND_USEC + ltv.tv_usec); + // ktime_to_us and ktime_get_real_ns return 64-bit integets, but this + // function is returning a 32-bit integer. This should be fine until 2038. + return ktime_to_us(ktime_get_real_ns()); } void From e45bdf4857e1df9353a01b1ac06787a74f5718cb Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Mon, 12 Jul 2021 15:55:04 -0700 Subject: [PATCH 054/186] Update initramfs-tools from 0.133 to 0.140 Also update the patch to add support for booting from squashfs to fix a shellcheck warning. Signed-off-by: Saikrishna Arcot --- rules/initramfs-tools.mk | 2 +- src/initramfs-tools/Makefile | 4 ++-- src/initramfs-tools/loopback-file-offset-support.patch | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rules/initramfs-tools.mk b/rules/initramfs-tools.mk index 2f3e55acac76..c396765af919 100644 --- a/rules/initramfs-tools.mk +++ b/rules/initramfs-tools.mk @@ -1,6 +1,6 @@ # initramfs-tools package -INITRAMFS_TOOLS_VERSION = 0.133 +INITRAMFS_TOOLS_VERSION = 0.140 export INITRAMFS_TOOLS_VERSION INITRAMFS_TOOLS = initramfs-tools_$(INITRAMFS_TOOLS_VERSION)_all.deb diff --git a/src/initramfs-tools/Makefile b/src/initramfs-tools/Makefile index f57b943d2d4f..27832cabca32 100644 --- a/src/initramfs-tools/Makefile +++ b/src/initramfs-tools/Makefile @@ -5,12 +5,12 @@ SHELL = /bin/bash MAIN_TARGET = initramfs-tools_$(INITRAMFS_TOOLS_VERSION)_all.deb DERIVED_TARGETS = initramfs-tools-core_$(INITRAMFS_TOOLS_VERSION)_all.deb -INITRAMFS_TOOLS_REVISION = 40e544e13611c1b2690eb99a8096fc16c1b9c74e +INITRAMFS_TOOLS_REVISION = v$(INITRAMFS_TOOLS_VERSION) $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : # Obtaining the initramfs-tools rm -rf ./initramfs-tools - git clone --branch v0.133 https://salsa.debian.org/kernel-team/initramfs-tools.git ./initramfs-tools + git clone https://salsa.debian.org/kernel-team/initramfs-tools.git ./initramfs-tools # Patch pushd ./initramfs-tools diff --git a/src/initramfs-tools/loopback-file-offset-support.patch b/src/initramfs-tools/loopback-file-offset-support.patch index 396e1c92007a..26ae7e1450a1 100644 --- a/src/initramfs-tools/loopback-file-offset-support.patch +++ b/src/initramfs-tools/loopback-file-offset-support.patch @@ -57,7 +57,7 @@ index a17e740..2bef5cb 100644 modprobe loop modprobe "${FSTYPE}" -+ if [ ! -z "${LOOPOFFSET}" ]; then ++ if [ -n "${LOOPOFFSET}" ]; then + # create a loop device for the fs within the file + loopdev="$(losetup -f)" + losetup -o "${LOOPOFFSET:-0}" "${loopdev}" "${loopfile}" || \ From b93c10b861161bc2fe899ac0259515a972bb0377 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 15 Jul 2021 15:15:45 -0700 Subject: [PATCH 055/186] Update the base Debian system installation script to get Bullseye Python 2 is no longer available, so remove those packages, and remove the pip2 commands. For picocom and systemd, just install from the regular repo, since there's no backports yet. Signed-off-by: Saikrishna Arcot --- build_debian.sh | 18 ++++++----------- files/apt/sources.list.amd64 | 20 +++++++++---------- .../build_templates/sonic_debian_extension.j2 | 12 +++++------ ...ian_archive_trafficmanager_net_debian.list | 6 +++--- installer/x86_64/install.sh | 4 ++-- 5 files changed, 26 insertions(+), 34 deletions(-) diff --git a/build_debian.sh b/build_debian.sh index 077388d941ff..d9c58939e0c7 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -31,8 +31,8 @@ set -x -e CONFIGURED_ARCH=$([ -f .arch ] && cat .arch || echo amd64) ## docker engine version (with platform) -DOCKER_VERSION=5:18.09.8~3-0~debian-$IMAGE_DISTRO -LINUX_KERNEL_VERSION=4.19.0-12-2 +DOCKER_VERSION=5:20.10.7~3-0~debian-$IMAGE_DISTRO +LINUX_KERNEL_VERSION=5.10.0-7-2 ## Working directory to prepare the file system FILESYSTEM_ROOT=./fsroot @@ -281,8 +281,7 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in dbus \ ntpstat \ openssh-server \ - python \ - python-apt \ + python3-apt \ traceroute \ iputils-ping \ net-tools \ @@ -314,10 +313,10 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in ndisc6 \ makedumpfile \ conntrack \ - python-pip \ python3 \ python3-distutils \ python3-pip \ + python-is-python3 \ cron \ haveged \ jq @@ -348,9 +347,7 @@ sudo sed -i '/^#.* en_US.* /s/^#//' $FILESYSTEM_ROOT/etc/locale.gen && \ sudo LANG=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT update-locale "LANG=en_US.UTF-8" sudo LANG=C chroot $FILESYSTEM_ROOT bash -c "find /usr/share/i18n/locales/ ! -name 'en_US' -type f -exec rm -f {} +" -# Install certain fundamental packages from $IMAGE_DISTRO-backports in order to get -# more up-to-date (but potentially less stable) versions -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y -t $IMAGE_DISTRO-backports install \ +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install \ picocom \ systemd \ systemd-sysv @@ -423,13 +420,10 @@ done < files/image_config/sysctl/sysctl-net.conf sudo augtool --autosave "$sysctl_net_cmd_string" -r $FILESYSTEM_ROOT # Upgrade pip via PyPI and uninstall the Debian version -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install --upgrade 'pip<21' sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install --upgrade pip -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python-pip python3-pip +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python3-pip # For building Python packages -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install 'setuptools==40.8.0' -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install 'wheel==0.35.1' sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'setuptools==49.6.00' sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'wheel==0.35.1' diff --git a/files/apt/sources.list.amd64 b/files/apt/sources.list.amd64 index 45902be1078c..108bf0dd5977 100644 --- a/files/apt/sources.list.amd64 +++ b/files/apt/sources.list.amd64 @@ -1,13 +1,13 @@ ## Debian mirror on Microsoft Azure ## Ref: http://debian-archive.trafficmanager.net/ -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ buster main contrib non-free -deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian/ buster main contrib non-free -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ buster/updates main contrib non-free -deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ buster/updates main contrib non-free -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ buster-backports main contrib non-free -deb [arch=amd64] http://packages.trafficmanager.net/debian/debian buster main contrib non-free -deb-src [arch=amd64] http://packages.trafficmanager.net/debian/debian buster main contrib non-free -deb [arch=amd64] http://packages.trafficmanager.net/debian/debian-security/ buster_updates main contrib non-free -deb-src [arch=amd64] http://packages.trafficmanager.net/debian/debian-security/ buster_updates main contrib non-free -deb [arch=amd64] http://packages.trafficmanager.net/debian/debian buster-backports main contrib non-free +deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free +deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free +#deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye/updates main contrib non-free +#deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye/updates main contrib non-free +#deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye-backports main contrib non-free +#deb [arch=amd64] http://packages.trafficmanager.net/debian/debian bullseye main contrib non-free +#deb-src [arch=amd64] http://packages.trafficmanager.net/debian/debian bullseye main contrib non-free +#deb [arch=amd64] http://packages.trafficmanager.net/debian/debian-security/ bullseye_updates main contrib non-free +#deb-src [arch=amd64] http://packages.trafficmanager.net/debian/debian-security/ bullseye_updates main contrib non-free +#deb [arch=amd64] http://packages.trafficmanager.net/debian/debian bullseye-backports main contrib non-free diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 0d5b895cacfe..d2af857ddf83 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -271,12 +271,10 @@ sudo cp -f $IMAGE_CONFIGS/bash/bash.bashrc $FILESYSTEM_ROOT/etc/ # Install prerequisites needed for installing the dependent Python packages of sonic-host-services # These packages can be uninstalled after installation -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install libcairo2-dev libdbus-1-dev libgirepository1.0-dev pkg-config -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y -t $IMAGE_DISTRO-backports install libsystemd-dev +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install libcairo2-dev libdbus-1-dev libgirepository1.0-dev libsystemd-dev pkg-config -# Manually install runtime dependencies to avoid them being auto-removed while uninstalling build dependencies -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install gir1.2-glib-2.0 libdbus-1-3 libgirepository-1.0-1 -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y -t $IMAGE_DISTRO-backports install libsystemd0 +# Mark runtime dependencies as manually installed to avoid them being auto-removed while uninstalling build dependencies +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-mark manual gir1.2-glib-2.0 libdbus-1-3 libgirepository-1.0-1 libsystemd0 # Install SONiC host services package SONIC_HOST_SERVICES_PY3_WHEEL_NAME=$(basename {{sonic_host_services_py3_wheel_path}}) @@ -330,7 +328,7 @@ sudo sed -i -e '/^passwd/s/ radius//' $FILESYSTEM_ROOT/etc/nsswitch.conf # Install a custom version of kdump-tools (and its dependencies via 'apt-get -y install -f') if [[ $CONFIGURED_ARCH == amd64 ]]; then sudo DEBIAN_FRONTEND=noninteractive dpkg --root=$FILESYSTEM_ROOT -i $debs_path/kdump-tools_*.deb || \ - sudo LANG=C DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true chroot $FILESYSTEM_ROOT apt-get -q --no-install-suggests --no-install-recommends --force-no install + sudo LANG=C DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true chroot $FILESYSTEM_ROOT apt-get -q --no-install-suggests --no-install-recommends install cat $IMAGE_CONFIGS/kdump/kdump-tools | sudo tee -a $FILESYSTEM_ROOT/etc/default/kdump-tools > /dev/null fi @@ -830,7 +828,7 @@ sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable sonic.target sudo cp $BUILD_TEMPLATES/sonic-delayed.target $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable sonic-delayed.target -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python-dev python3-dev +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 build-essential libssl-dev swig 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 diff --git a/files/image_config/apt/sources.list.d/amd64/debian_archive_trafficmanager_net_debian.list b/files/image_config/apt/sources.list.d/amd64/debian_archive_trafficmanager_net_debian.list index d35c618112bb..db55f3dd60cf 100644 --- a/files/image_config/apt/sources.list.d/amd64/debian_archive_trafficmanager_net_debian.list +++ b/files/image_config/apt/sources.list.d/amd64/debian_archive_trafficmanager_net_debian.list @@ -1,3 +1,3 @@ -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ buster main contrib non-free -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ buster/updates main contrib non-free -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ buster-backports main contrib non-free +deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free +#deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye/updates main contrib non-free +deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye-backports main contrib non-free diff --git a/installer/x86_64/install.sh b/installer/x86_64/install.sh index d40dedc9a160..405a5040a3fe 100755 --- a/installer/x86_64/install.sh +++ b/installer/x86_64/install.sh @@ -651,13 +651,13 @@ menuentry '$demo_grub_entry' { if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_msdos insmod ext2 - linux /$image_dir/boot/vmlinuz-4.19.0-12-2-amd64 root=$grub_cfg_root rw $GRUB_CMDLINE_LINUX \ + linux /$image_dir/boot/vmlinuz-5.10.0-7-2-amd64 root=$grub_cfg_root rw $GRUB_CMDLINE_LINUX \ net.ifnames=0 biosdevname=0 \ loop=$image_dir/$FILESYSTEM_SQUASHFS loopfstype=squashfs \ systemd.unified_cgroup_hierarchy=0 \ apparmor=1 security=apparmor varlog_size=$VAR_LOG_SIZE usbcore.autosuspend=-1 $ONIE_PLATFORM_EXTRA_CMDLINE_LINUX echo 'Loading $demo_volume_label $demo_type initial ramdisk ...' - initrd /$image_dir/boot/initrd.img-4.19.0-12-2-amd64 + initrd /$image_dir/boot/initrd.img-5.10.0-7-2-amd64 } EOF From cc2e04bbf277d4e6dcc52d69a224a5fac0fd7b57 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Fri, 23 Jul 2021 08:21:05 -0700 Subject: [PATCH 056/186] openssh: Upgrade from 7.9 to 8.4, to match version in Bullseye Signed-off-by: Saikrishna Arcot --- rules/openssh.mk | 2 +- src/openssh/Makefile | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/rules/openssh.mk b/rules/openssh.mk index 0cc3de621039..0e4696ed9d27 100644 --- a/rules/openssh.mk +++ b/rules/openssh.mk @@ -1,6 +1,6 @@ # openssh package -OPENSSH_VERSION = 7.9p1-10+deb10u2 +OPENSSH_VERSION = 8.4p1-5 export OPENSSH_VERSION diff --git a/src/openssh/Makefile b/src/openssh/Makefile index be05c6ffd675..91d4fd52bcf7 100644 --- a/src/openssh/Makefile +++ b/src/openssh/Makefile @@ -6,13 +6,13 @@ MAIN_TARGET = openssh-server_$(OPENSSH_VERSION)_$(CONFIGURED_ARCH).deb DERIVED_TARGETS = openssh-server-dbgsym_$(OPENSSH_VERSION)_$(CONFIGURED_ARCH).deb $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : - # Obtain openssh: https://salsa.debian.org/ssh-team/openssh/-/tree/debian/1%257.9p1-10+deb10u2 + # Obtain openssh: https://salsa.debian.org/ssh-team/openssh/-/tree/debian/1%258.4p1-5 rm -rf ./openssh-server git clone https://salsa.debian.org/ssh-team/openssh.git openssh-server pushd ./openssh-server - # Check out tag: debian/1%7.9p1-10+deb10u2 - git checkout -b openssh-src -f 6d9ca74c48d9911342c6ca5aaac8a25974fa2619 + # Check out tag: debian/1%8.4p1-5 + git checkout -b openssh-src -f debian/1\%$(OPENSSH_VERSION) # Apply patch series stg init From b67b69bedefd0142537bbfebc7b4f2e6e74e3468 Mon Sep 17 00:00:00 2001 From: Vaibhav Hemant Dixit Date: Mon, 16 Aug 2021 17:00:09 -0700 Subject: [PATCH 057/186] [advance submodule] Update sonic-swss master head to latest (#8486) Update sonic-swss submodule to include the latest changes: Add autoconf-archive package to lgtm Azure/sonic-swss#1868 [cfgmgr] Update Makefile.am to consume lib zmq Azure/sonic-swss#1864 Fix warmboot issue PR##8367 Azure/sonic-swss#1866 --- src/sonic-swss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-swss b/src/sonic-swss index d8ca31ca6bb3..7d16f69fd230 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit d8ca31ca6bb3068931f56a5e48743df9865bb79b +Subproject commit 7d16f69fd2307367dba33ee7a9f6585efa829281 From 9d8631469a6c3053dc0cb500ffa61cde3dc48835 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Fri, 23 Jul 2021 09:21:15 -0700 Subject: [PATCH 058/186] Python 2 removal/cleanup Remove Python 2 package installation from the base image. For container builds, reference Python 2 packages only if we're not building for Bullseye. Signed-off-by: Saikrishna Arcot --- .../build_templates/sonic_debian_extension.j2 | 53 +------------------ rules/redis-dump-load-py2.dep | 22 ++++---- rules/redis-dump-load-py2.mk | 12 +++-- rules/redis-dump-load-py3.mk | 6 ++- rules/sonic-config.dep | 10 ++-- rules/sonic-config.mk | 24 +++++---- rules/sonic-platform-common.dep | 15 +++--- rules/sonic-platform-common.mk | 22 ++++---- rules/sonic-py-common.dep | 10 ++-- rules/sonic-py-common.mk | 22 ++++---- rules/swss-common.mk | 6 ++- rules/swsssdk-py2.dep | 22 ++++---- rules/swsssdk-py2.mk | 14 ++--- rules/swsssdk-py3.mk | 7 ++- slave.mk | 7 +++ 15 files changed, 118 insertions(+), 134 deletions(-) diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index d2af857ddf83..ef277dc84558 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -102,25 +102,19 @@ sudo mkdir -p $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/ifupdown2_*.deb || \ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f -# Install ipables (and its dependencies via 'apt-get -y install -f') -sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/iptables_*.deb || \ - sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f - -# Install a more recent version of ntp (and its dependencies via 'apt-get -y install -f') +# Install a patched version of ntp (and its dependencies via 'apt-get -y install -f') sudo dpkg --root=$FILESYSTEM_ROOT --force-confdef --force-confold -i $debs_path/ntp_*.deb || \ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y \ -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install -f # Install dependencies for SONiC config engine sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install \ - python-dev \ python3-dev # Install j2cli for handling jinja template sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install "j2cli==0.3.10" # Install Python client for Redis -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install "redis==3.5.3" sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install "redis==3.5.3" # Install redis-dump-load Python 3 package @@ -130,17 +124,10 @@ sudo cp {{redis_dump_load_py3_wheel_path}} $FILESYSTEM_ROOT/$REDIS_DUMP_LOAD_PY3 sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $REDIS_DUMP_LOAD_PY3_WHEEL_NAME sudo rm -rf $FILESYSTEM_ROOT/$REDIS_DUMP_LOAD_PY3_WHEEL_NAME -# Install redis-dump-load Python 2 package -REDIS_DUMP_LOAD_PY2_WHEEL_NAME=$(basename {{redis_dump_load_py2_wheel_path}}) -sudo cp {{redis_dump_load_py2_wheel_path}} $FILESYSTEM_ROOT/$REDIS_DUMP_LOAD_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $REDIS_DUMP_LOAD_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$REDIS_DUMP_LOAD_PY2_WHEEL_NAME - # Install Python module for psutil sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install psutil # Install Python module for ipaddr -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install ipaddr sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install ipaddr # Install SwSS SDK Python 3 package @@ -150,18 +137,6 @@ sudo cp {{swsssdk_py3_wheel_path}} $FILESYSTEM_ROOT/$SWSSSDK_PY3_WHEEL_NAME sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $SWSSSDK_PY3_WHEEL_NAME sudo rm -rf $FILESYSTEM_ROOT/$SWSSSDK_PY3_WHEEL_NAME -# Install SwSS SDK Python 2 package -SWSSSDK_PY2_WHEEL_NAME=$(basename {{swsssdk_py2_wheel_path}}) -sudo cp {{swsssdk_py2_wheel_path}} $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $SWSSSDK_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME - -# Install sonic-py-common Python 2 package -SONIC_PY_COMMON_PY2_WHEEL_NAME=$(basename {{sonic_py_common_py2_wheel_path}}) -sudo cp {{sonic_py_common_py2_wheel_path}} $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $SONIC_PY_COMMON_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY2_WHEEL_NAME - # Install sonic-py-common Python 3 package SONIC_PY_COMMON_PY3_WHEEL_NAME=$(basename {{sonic_py_common_py3_wheel_path}}) sudo cp {{sonic_py_common_py3_wheel_path}} $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY3_WHEEL_NAME @@ -176,7 +151,6 @@ fi # Install sonic-yang-models Python 3 package, install dependencies sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libyang_*.deb sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libyang-cpp_*.deb -sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/python2-yang_*.deb sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/python3-yang_*.deb SONIC_YANG_MODEL_PY3_WHEEL_NAME=$(basename {{sonic_yang_models_py3_wheel_path}}) sudo cp {{sonic_yang_models_py3_wheel_path}} $FILESYSTEM_ROOT/$SONIC_YANG_MODEL_PY3_WHEEL_NAME @@ -189,12 +163,6 @@ sudo cp {{sonic_yang_mgmt_py3_wheel_path}} $FILESYSTEM_ROOT/$SONIC_YANG_MGMT_PY3 sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $SONIC_YANG_MGMT_PY3_WHEEL_NAME sudo rm -rf $FILESYSTEM_ROOT/$SONIC_YANG_MGMT_PY3_WHEEL_NAME -# Install SONiC config engine Python 2 package -CONFIG_ENGINE_PY2_WHEEL_NAME=$(basename {{config_engine_py2_wheel_path}}) -sudo cp {{config_engine_py2_wheel_path}} $FILESYSTEM_ROOT/$CONFIG_ENGINE_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $CONFIG_ENGINE_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$CONFIG_ENGINE_PY2_WHEEL_NAME - # For sonic-config-engine Python 3 package # Install pyangbind here, outside sonic-config-engine dependencies, as pyangbind causes enum34 to be installed. # Then immediately uninstall enum34, as enum34 should not be installed for Python >= 3.4, as it causes a @@ -210,12 +178,6 @@ sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $CONFI sudo rm -rf $FILESYSTEM_ROOT/$CONFIG_ENGINE_PY3_WHEEL_NAME -# Install sonic-platform-common Python 2 package -PLATFORM_COMMON_PY2_WHEEL_NAME=$(basename {{platform_common_py2_wheel_path}}) -sudo cp {{platform_common_py2_wheel_path}} $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $PLATFORM_COMMON_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY2_WHEEL_NAME - # Install sonic-platform-common Python 3 package PLATFORM_COMMON_PY3_WHEEL_NAME=$(basename {{platform_common_py3_wheel_path}}) sudo cp {{platform_common_py3_wheel_path}} $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY3_WHEEL_NAME @@ -223,12 +185,6 @@ sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $PLATF sudo rm -rf $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY3_WHEEL_NAME {% if pddf_support == "y" %} -# Install pddf-platform-api-base Python 2 package -PLATFORM_PDDF_COMMON_PY2_WHEEL_NAME=$(basename {{pddf_platform_api_base_py2_wheel_path}}) -sudo cp {{pddf_platform_api_base_py2_wheel_path}} $FILESYSTEM_ROOT/$PLATFORM_PDDF_COMMON_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $PLATFORM_PDDF_COMMON_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$PLATFORM_PDDF_COMMON_PY2_WHEEL_NAME - # Install pddf-platform-api-base Python 3 package PLATFORM_PDDF_COMMON_PY3_WHEEL_NAME=$(basename {{pddf_platform_api_base_py3_wheel_path}}) sudo cp {{pddf_platform_api_base_py3_wheel_path}} $FILESYSTEM_ROOT/$PLATFORM_PDDF_COMMON_PY3_WHEEL_NAME @@ -238,7 +194,6 @@ sudo rm -rf $FILESYSTEM_ROOT/$PLATFORM_PDDF_COMMON_PY3_WHEEL_NAME {# Barefoot platform vendors' sonic_platform packages import the Python 'thrift' library #} {% if sonic_asic_platform == "barefoot" %} -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install thrift==0.13.0 sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install thrift==0.13.0 {% endif %} @@ -854,12 +809,6 @@ sudo cp $files_path/$MLNX_SSD_FW_UPDATE $FILESYSTEM_ROOT/usr/bin/$MLNX_SSD_FW_UP j2 platform/mellanox/mlnx-fw-upgrade.j2 | sudo tee $FILESYSTEM_ROOT/usr/bin/mlnx-fw-upgrade.sh sudo chmod 755 $FILESYSTEM_ROOT/usr/bin/mlnx-fw-upgrade.sh -# Install mlnx-sonic-platform Python 2 package -MLNX_SONIC_PLATFORM_PY2_WHEEL_NAME=$(basename {{mlnx_platform_api_py2_wheel_path}}) -sudo cp {{mlnx_platform_api_py2_wheel_path}} $FILESYSTEM_ROOT/$MLNX_SONIC_PLATFORM_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $MLNX_SONIC_PLATFORM_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$MLNX_SONIC_PLATFORM_PY2_WHEEL_NAME - # Install mlnx-sonic-platform Python 3 package MLNX_SONIC_PLATFORM_PY3_WHEEL_NAME=$(basename {{mlnx_platform_api_py3_wheel_path}}) sudo cp {{mlnx_platform_api_py3_wheel_path}} $FILESYSTEM_ROOT/$MLNX_SONIC_PLATFORM_PY3_WHEEL_NAME diff --git a/rules/redis-dump-load-py2.dep b/rules/redis-dump-load-py2.dep index adc43905b7f3..a1293f9fb6be 100644 --- a/rules/redis-dump-load-py2.dep +++ b/rules/redis-dump-load-py2.dep @@ -1,12 +1,12 @@ +ifeq ($(ENABLE_PY2_MODULES), y) + SPATH := $($(REDIS_DUMP_LOAD_PY2)_SRC_PATH) + DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/redis-dump-load-py2.mk rules/redis-dump-load-py2.dep + DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) + SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) -SPATH := $($(REDIS_DUMP_LOAD_PY2)_SRC_PATH) -DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/redis-dump-load-py2.mk rules/redis-dump-load-py2.dep -DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) -SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) - -$(REDIS_DUMP_LOAD_PY2)_CACHE_MODE := GIT_CONTENT_SHA -$(REDIS_DUMP_LOAD_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(REDIS_DUMP_LOAD_PY2)_DEP_FILES := $(DEP_FILES) -$(REDIS_DUMP_LOAD_PY2)_SMDEP_FILES := $(SMDEP_FILES) -$(REDIS_DUMP_LOAD_PY2)_SMDEP_PATHS := $(SPATH) - + $(REDIS_DUMP_LOAD_PY2)_CACHE_MODE := GIT_CONTENT_SHA + $(REDIS_DUMP_LOAD_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) + $(REDIS_DUMP_LOAD_PY2)_DEP_FILES := $(DEP_FILES) + $(REDIS_DUMP_LOAD_PY2)_SMDEP_FILES := $(SMDEP_FILES) + $(REDIS_DUMP_LOAD_PY2)_SMDEP_PATHS := $(SPATH) +endif diff --git a/rules/redis-dump-load-py2.mk b/rules/redis-dump-load-py2.mk index 5f756caada9c..7330c8027a22 100644 --- a/rules/redis-dump-load-py2.mk +++ b/rules/redis-dump-load-py2.mk @@ -1,6 +1,8 @@ -# redis_dump_load python2 wheel +ifeq ($(ENABLE_PY2_MODULES), y) + # redis_dump_load python2 wheel -REDIS_DUMP_LOAD_PY2 = redis_dump_load-1.1-py2-none-any.whl -$(REDIS_DUMP_LOAD_PY2)_SRC_PATH = $(SRC_PATH)/redis-dump-load -$(REDIS_DUMP_LOAD_PY2)_PYTHON_VERSION = 2 -SONIC_PYTHON_WHEELS += $(REDIS_DUMP_LOAD_PY2) + REDIS_DUMP_LOAD_PY2 = redis_dump_load-1.1-py2-none-any.whl + $(REDIS_DUMP_LOAD_PY2)_SRC_PATH = $(SRC_PATH)/redis-dump-load + $(REDIS_DUMP_LOAD_PY2)_PYTHON_VERSION = 2 + SONIC_PYTHON_WHEELS += $(REDIS_DUMP_LOAD_PY2) +endif diff --git a/rules/redis-dump-load-py3.mk b/rules/redis-dump-load-py3.mk index 875b5e1c8132..fe2b8688e43f 100644 --- a/rules/redis-dump-load-py3.mk +++ b/rules/redis-dump-load-py3.mk @@ -3,7 +3,9 @@ REDIS_DUMP_LOAD_PY3 = redis_dump_load-1.1-py3-none-any.whl $(REDIS_DUMP_LOAD_PY3)_SRC_PATH = $(SRC_PATH)/redis-dump-load $(REDIS_DUMP_LOAD_PY3)_PYTHON_VERSION = 3 -# Synthetic dependency just to avoid race condition -$(REDIS_DUMP_LOAD_PY3)_DEPENDS += $(REDIS_DUMP_LOAD_PY2) +ifeq ($(ENABLE_PY2_MODULES), y) + # Synthetic dependency just to avoid race condition + $(REDIS_DUMP_LOAD_PY3)_DEPENDS += $(REDIS_DUMP_LOAD_PY2) +endif $(REDIS_DUMP_LOAD_PY3)_TEST = n SONIC_PYTHON_WHEELS += $(REDIS_DUMP_LOAD_PY3) diff --git a/rules/sonic-config.dep b/rules/sonic-config.dep index ae8569326eea..05a02a6027ac 100644 --- a/rules/sonic-config.dep +++ b/rules/sonic-config.dep @@ -1,14 +1,16 @@ # SONIC_CONFIG_ENGINE_PY2 package -SPATH := $($(SONIC_CONFIG_ENGINE_PY2)_SRC_PATH) +SPATH := $($(SONIC_CONFIG_ENGINE_PY3)_SRC_PATH) DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/sonic-config.mk rules/sonic-config.dep DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) DEP_FILES += $(shell git ls-files $(SPATH)) DEP_FILES += files/image_config/interfaces/interfaces.j2 dockers/docker-orchagent/ports.json.j2 dockers/docker-dhcp-relay/wait_for_intf.sh.j2 dockers/docker-dhcp-relay/docker-dhcp-relay.supervisord.conf.j2 dockers/docker-lldp/lldpd.conf.j2 dockers/docker-orchagent/ipinip.json.j2 $(wildcard device/arista/x86_64-arista_7050_qx32s/Arista-7050-QX-32S/*.j2 device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/*.j2) files/build_templates/qos_config.j2 dockers/docker-orchagent/switch.json.j2 files/image_config/constants/constants.yml -$(SONIC_CONFIG_ENGINE_PY2)_CACHE_MODE := GIT_CONTENT_SHA -$(SONIC_CONFIG_ENGINE_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(SONIC_CONFIG_ENGINE_PY2)_DEP_FILES := $(DEP_FILES) +ifeq ($(ENABLE_PY2_MODULES), y) + $(SONIC_CONFIG_ENGINE_PY2)_CACHE_MODE := GIT_CONTENT_SHA + $(SONIC_CONFIG_ENGINE_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) + $(SONIC_CONFIG_ENGINE_PY2)_DEP_FILES := $(DEP_FILES) +endif # SONIC_CONFIG_ENGINE_PY3 package diff --git a/rules/sonic-config.mk b/rules/sonic-config.mk index 373604e96554..ba146df70577 100644 --- a/rules/sonic-config.mk +++ b/rules/sonic-config.mk @@ -1,11 +1,13 @@ -# SONIC_CONFIG_ENGINE_PY2 package +ifeq ($(ENABLE_PY2_MODULES), y) + # SONIC_CONFIG_ENGINE_PY2 package -SONIC_CONFIG_ENGINE_PY2 = sonic_config_engine-1.0-py2-none-any.whl -$(SONIC_CONFIG_ENGINE_PY2)_SRC_PATH = $(SRC_PATH)/sonic-config-engine -$(SONIC_CONFIG_ENGINE_PY2)_DEPENDS += $(SONIC_PY_COMMON_PY2) -$(SONIC_CONFIG_ENGINE_PY2)_DEBS_DEPENDS += $(PYTHON_SWSSCOMMON) -$(SONIC_CONFIG_ENGINE_PY2)_PYTHON_VERSION = 2 -SONIC_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE_PY2) + SONIC_CONFIG_ENGINE_PY2 = sonic_config_engine-1.0-py2-none-any.whl + $(SONIC_CONFIG_ENGINE_PY2)_SRC_PATH = $(SRC_PATH)/sonic-config-engine + $(SONIC_CONFIG_ENGINE_PY2)_DEPENDS += $(SONIC_PY_COMMON_PY2) + $(SONIC_CONFIG_ENGINE_PY2)_DEBS_DEPENDS += $(PYTHON_SWSSCOMMON) + $(SONIC_CONFIG_ENGINE_PY2)_PYTHON_VERSION = 2 + SONIC_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE_PY2) +endif # SONIC_CONFIG_ENGINE_PY3 package @@ -18,8 +20,10 @@ $(SONIC_CONFIG_ENGINE_PY3)_DEBS_DEPENDS += $(LIBYANG) \ $(LIBYANG_CPP) \ $(LIBYANG_PY3) \ $(PYTHON3_SWSSCOMMON) -# Synthetic dependency to avoid building the Python 2 and 3 packages -# simultaneously and any potential conflicts which may arise -$(SONIC_CONFIG_ENGINE_PY3)_DEPENDS += $(SONIC_CONFIG_ENGINE_PY2) +ifeq ($(ENABLE_PY2_MODULES), y) + # Synthetic dependency to avoid building the Python 2 and 3 packages + # simultaneously and any potential conflicts which may arise + $(SONIC_CONFIG_ENGINE_PY3)_DEPENDS += $(SONIC_CONFIG_ENGINE_PY2) +endif $(SONIC_CONFIG_ENGINE_PY3)_PYTHON_VERSION = 3 SONIC_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE_PY3) diff --git a/rules/sonic-platform-common.dep b/rules/sonic-platform-common.dep index e921c4df01af..632c92c1ac78 100644 --- a/rules/sonic-platform-common.dep +++ b/rules/sonic-platform-common.dep @@ -1,15 +1,16 @@ -SPATH := $($(SONIC_PLATFORM_COMMON_PY2)_SRC_PATH) +SPATH := $($(SONIC_PLATFORM_COMMON_PY3)_SRC_PATH) DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/sonic-platform-common.mk rules/sonic-platform-common.dep DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files|grep -Ev "^sonic_sfp|^sonic_eeprom")) -$(SONIC_PLATFORM_COMMON_PY2)_CACHE_MODE := GIT_CONTENT_SHA -$(SONIC_PLATFORM_COMMON_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(SONIC_PLATFORM_COMMON_PY2)_DEP_FILES := $(DEP_FILES) -$(SONIC_PLATFORM_COMMON_PY2)_SMDEP_FILES := $(SMDEP_FILES) -$(SONIC_PLATFORM_COMMON_PY2)_SMDEP_PATHS := $(SPATH) - +ifeq ($(ENABLE_PY2_MODULES), y) + $(SONIC_PLATFORM_COMMON_PY2)_CACHE_MODE := GIT_CONTENT_SHA + $(SONIC_PLATFORM_COMMON_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) + $(SONIC_PLATFORM_COMMON_PY2)_DEP_FILES := $(DEP_FILES) + $(SONIC_PLATFORM_COMMON_PY2)_SMDEP_FILES := $(SMDEP_FILES) + $(SONIC_PLATFORM_COMMON_PY2)_SMDEP_PATHS := $(SPATH) +endif $(SONIC_PLATFORM_COMMON_PY3)_CACHE_MODE := GIT_CONTENT_SHA diff --git a/rules/sonic-platform-common.mk b/rules/sonic-platform-common.mk index 25ab5ff839fa..09ce14faab15 100644 --- a/rules/sonic-platform-common.mk +++ b/rules/sonic-platform-common.mk @@ -1,11 +1,13 @@ -# sonic-platform-common package +ifeq ($(ENABLE_PY2_MODULES), y) + # sonic-platform-common package -SONIC_PLATFORM_COMMON_PY2 = sonic_platform_common-1.0-py2-none-any.whl -$(SONIC_PLATFORM_COMMON_PY2)_SRC_PATH = $(SRC_PATH)/sonic-platform-common -$(SONIC_PLATFORM_COMMON_PY2)_PYTHON_VERSION = 2 -$(SONIC_PLATFORM_COMMON_PY2)_DEPENDS += $(SONIC_PY_COMMON_PY2) $(SONIC_CONFIG_ENGINE_PY2) -$(SONIC_PLATFORM_COMMON_PY2)_DEBS_DEPENDS += $(PYTHON_SWSSCOMMON) -SONIC_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY2) + SONIC_PLATFORM_COMMON_PY2 = sonic_platform_common-1.0-py2-none-any.whl + $(SONIC_PLATFORM_COMMON_PY2)_SRC_PATH = $(SRC_PATH)/sonic-platform-common + $(SONIC_PLATFORM_COMMON_PY2)_PYTHON_VERSION = 2 + $(SONIC_PLATFORM_COMMON_PY2)_DEPENDS += $(SONIC_PY_COMMON_PY2) $(SONIC_CONFIG_ENGINE_PY2) + $(SONIC_PLATFORM_COMMON_PY2)_DEBS_DEPENDS += $(PYTHON_SWSSCOMMON) + SONIC_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY2) +endif # Als build sonic-platform-common into python3 wheel, so we can use PSU code in SNMP docker SONIC_PLATFORM_COMMON_PY3 = sonic_platform_common-1.0-py3-none-any.whl @@ -13,6 +15,8 @@ $(SONIC_PLATFORM_COMMON_PY3)_SRC_PATH = $(SRC_PATH)/sonic-platform-common $(SONIC_PLATFORM_COMMON_PY3)_PYTHON_VERSION = 3 $(SONIC_PLATFORM_COMMON_PY3)_DEPENDS += $(SONIC_PY_COMMON_PY3) $(SONIC_CONFIG_ENGINE_PY3) $(SONIC_PLATFORM_COMMON_PY3)_DEBS_DEPENDS += $(PYTHON3_SWSSCOMMON) -# Synthetic dependency just to avoid race condition -$(SONIC_PLATFORM_COMMON_PY3)_DEPENDS += $(SONIC_PLATFORM_COMMON_PY2) +ifeq ($(ENABLE_PY2_MODULES), y) + # Synthetic dependency just to avoid race condition + $(SONIC_PLATFORM_COMMON_PY3)_DEPENDS += $(SONIC_PLATFORM_COMMON_PY2) +endif SONIC_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY3) diff --git a/rules/sonic-py-common.dep b/rules/sonic-py-common.dep index 9ecedb068a4f..b3d08c5d8632 100644 --- a/rules/sonic-py-common.dep +++ b/rules/sonic-py-common.dep @@ -1,11 +1,13 @@ -SPATH := $($(SONIC_PY_COMMON_PY2)_SRC_PATH) +SPATH := $($(SONIC_PY_COMMON_PY3)_SRC_PATH) DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/sonic-py-common.mk rules/sonic-py-common.dep DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) DEP_FILES += $(shell git ls-files $(SPATH)) -$(SONIC_PY_COMMON_PY2)_CACHE_MODE := GIT_CONTENT_SHA -$(SONIC_PY_COMMON_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(SONIC_PY_COMMON_PY2)_DEP_FILES := $(DEP_FILES) +ifeq ($(ENABLE_PY2_MODULES), y) + $(SONIC_PY_COMMON_PY2)_CACHE_MODE := GIT_CONTENT_SHA + $(SONIC_PY_COMMON_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) + $(SONIC_PY_COMMON_PY2)_DEP_FILES := $(DEP_FILES) +endif $(SONIC_PY_COMMON_PY3)_CACHE_MODE := GIT_CONTENT_SHA $(SONIC_PY_COMMON_PY3)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) diff --git a/rules/sonic-py-common.mk b/rules/sonic-py-common.mk index 6afe9a826c68..be5f5d8e696a 100644 --- a/rules/sonic-py-common.mk +++ b/rules/sonic-py-common.mk @@ -1,18 +1,22 @@ -# SONIC_PY_COMMON_PY2 package +ifeq ($(ENABLE_PY2_MODULES), y) + # SONIC_PY_COMMON_PY2 package -SONIC_PY_COMMON_PY2 = sonic_py_common-1.0-py2-none-any.whl -$(SONIC_PY_COMMON_PY2)_SRC_PATH = $(SRC_PATH)/sonic-py-common -$(SONIC_PY_COMMON_PY2)_DEPENDS += $(SWSSSDK_PY2) -$(SONIC_PY_COMMON_PY2)_PYTHON_VERSION = 2 -SONIC_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY2) + SONIC_PY_COMMON_PY2 = sonic_py_common-1.0-py2-none-any.whl + $(SONIC_PY_COMMON_PY2)_SRC_PATH = $(SRC_PATH)/sonic-py-common + $(SONIC_PY_COMMON_PY2)_DEPENDS += $(SWSSSDK_PY2) + $(SONIC_PY_COMMON_PY2)_PYTHON_VERSION = 2 + SONIC_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY2) +endif # SONIC_PY_COMMON_PY3 package SONIC_PY_COMMON_PY3 = sonic_py_common-1.0-py3-none-any.whl $(SONIC_PY_COMMON_PY3)_SRC_PATH = $(SRC_PATH)/sonic-py-common $(SONIC_PY_COMMON_PY3)_DEPENDS += $(SWSSSDK_PY3) -# Synthetic dependency to avoid building the Python 2 and 3 packages -# simultaneously and any potential conflicts which may arise -$(SONIC_PY_COMMON_PY3)_DEPENDS += $(SONIC_PY_COMMON_PY2) +ifeq ($(ENABLE_PY2_MODULES), y) + # Synthetic dependency to avoid building the Python 2 and 3 packages + # simultaneously and any potential conflicts which may arise + $(SONIC_PY_COMMON_PY3)_DEPENDS += $(SONIC_PY_COMMON_PY2) +endif $(SONIC_PY_COMMON_PY3)_PYTHON_VERSION = 3 SONIC_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY3) diff --git a/rules/swss-common.mk b/rules/swss-common.mk index 09dc312277fe..83a8d0f19cae 100644 --- a/rules/swss-common.mk +++ b/rules/swss-common.mk @@ -17,8 +17,10 @@ SONIC_DPKG_DEBS += $(LIBSWSSCOMMON) LIBSWSSCOMMON_DEV = $(LIBSWSSCOMMON_NAME)-dev_$(LIBSWSSCOMMON_VERSION)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(LIBSWSSCOMMON),$(LIBSWSSCOMMON_DEV))) -PYTHON_SWSSCOMMON = python-swsscommon_$(LIBSWSSCOMMON_VERSION)_$(CONFIGURED_ARCH).deb -$(eval $(call add_derived_package,$(LIBSWSSCOMMON),$(PYTHON_SWSSCOMMON))) +ifeq ($(ENABLE_PY2_MODULES), y) + PYTHON_SWSSCOMMON = python-swsscommon_$(LIBSWSSCOMMON_VERSION)_$(CONFIGURED_ARCH).deb + $(eval $(call add_derived_package,$(LIBSWSSCOMMON),$(PYTHON_SWSSCOMMON))) +endif PYTHON3_SWSSCOMMON = python3-swsscommon_$(LIBSWSSCOMMON_VERSION)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(LIBSWSSCOMMON),$(PYTHON3_SWSSCOMMON))) diff --git a/rules/swsssdk-py2.dep b/rules/swsssdk-py2.dep index 2be9565fedcc..300d3cdeb027 100644 --- a/rules/swsssdk-py2.dep +++ b/rules/swsssdk-py2.dep @@ -1,12 +1,12 @@ +ifeq ($(ENABLE_PY2_MODULES), y) + SPATH := $($(SWSSSDK_PY2)_SRC_PATH) + DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/swsssdk-py2.mk rules/swsssdk-py2.dep + DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) + SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) -SPATH := $($(SWSSSDK_PY2)_SRC_PATH) -DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/swsssdk-py2.mk rules/swsssdk-py2.dep -DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) -SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) - -$(SWSSSDK_PY2)_CACHE_MODE := GIT_CONTENT_SHA -$(SWSSSDK_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(SWSSSDK_PY2)_DEP_FILES := $(DEP_FILES) -$(SWSSSDK_PY2)_SMDEP_FILES := $(SMDEP_FILES) -$(SWSSSDK_PY2)_SMDEP_PATHS := $(SPATH) - + $(SWSSSDK_PY2)_CACHE_MODE := GIT_CONTENT_SHA + $(SWSSSDK_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) + $(SWSSSDK_PY2)_DEP_FILES := $(DEP_FILES) + $(SWSSSDK_PY2)_SMDEP_FILES := $(SMDEP_FILES) + $(SWSSSDK_PY2)_SMDEP_PATHS := $(SPATH) +endif diff --git a/rules/swsssdk-py2.mk b/rules/swsssdk-py2.mk index 8a98d1feda0a..7a7a1cd870f0 100644 --- a/rules/swsssdk-py2.mk +++ b/rules/swsssdk-py2.mk @@ -1,7 +1,9 @@ -# swsssdk python2 wheel +ifeq ($(ENABLE_PY2_MODULES), y) + # swsssdk python2 wheel -SWSSSDK_PY2 = swsssdk-2.0.1-py2-none-any.whl -$(SWSSSDK_PY2)_SRC_PATH = $(SRC_PATH)/sonic-py-swsssdk -$(SWSSSDK_PY2)_PYTHON_VERSION = 2 -$(SWSSSDK_PY2)_DEPENDS += $(REDIS_DUMP_LOAD_PY2) -SONIC_PYTHON_WHEELS += $(SWSSSDK_PY2) + SWSSSDK_PY2 = swsssdk-2.0.1-py2-none-any.whl + $(SWSSSDK_PY2)_SRC_PATH = $(SRC_PATH)/sonic-py-swsssdk + $(SWSSSDK_PY2)_PYTHON_VERSION = 2 + $(SWSSSDK_PY2)_DEPENDS += $(REDIS_DUMP_LOAD_PY2) + SONIC_PYTHON_WHEELS += $(SWSSSDK_PY2) +endif diff --git a/rules/swsssdk-py3.mk b/rules/swsssdk-py3.mk index 681ba72f85b7..4e42652211aa 100644 --- a/rules/swsssdk-py3.mk +++ b/rules/swsssdk-py3.mk @@ -3,6 +3,9 @@ SWSSSDK_PY3 = swsssdk-2.0.1-py3-none-any.whl $(SWSSSDK_PY3)_SRC_PATH = $(SRC_PATH)/sonic-py-swsssdk $(SWSSSDK_PY3)_PYTHON_VERSION = 3 -# Synthetic dependency just to avoid race condition -$(SWSSSDK_PY3)_DEPENDS += $(SWSSSDK_PY2) $(REDIS_DUMP_LOAD_PY3) +$(SWSSSDK_PY3)_DEPENDS += $(REDIS_DUMP_LOAD_PY3) +ifeq ($(ENABLE_PY2_MODULES), y) + # Synthetic dependency just to avoid race condition + $(SWSSSDK_PY3)_DEPENDS += $(SWSSSDK_PY2) +endif SONIC_PYTHON_WHEELS += $(SWSSSDK_PY3) diff --git a/slave.mk b/slave.mk index 8a00fe4a3f78..cb0bb0e4fc3a 100644 --- a/slave.mk +++ b/slave.mk @@ -63,6 +63,13 @@ IMAGE_DISTRO := bullseye IMAGE_DISTRO_DEBS_PATH = $(TARGET_PATH)/debs/$(IMAGE_DISTRO) IMAGE_DISTRO_FILES_PATH = $(TARGET_PATH)/files/$(IMAGE_DISTRO) +# Python 2 packages will not be available in Bullseye +ifeq ($(BLDENV),bullseye) +ENABLE_PY2_MODULES = n +else +ENABLE_PY2_MODULES = y +endif + export BUILD_NUMBER export BUILD_TIMESTAMP export SONIC_IMAGE_VERSION From ca7c7b4d8587c2425f9cc0c8ef9869a366ebca1e Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Fri, 23 Jul 2021 09:23:56 -0700 Subject: [PATCH 059/186] Don't build Python 2 bindings for libyang at all It doesn't look like there's any users of the Python 2 libyang (based on a quick search), so just don't build it at all, even for Buster containers. Signed-off-by: Saikrishna Arcot --- platform/vs/docker-sonic-vs.mk | 1 - rules/libyang.mk | 6 +- rules/sonic-yang-models-py3.mk | 2 +- src/libyang/Makefile | 2 +- src/libyang/patch/libyang.patch | 104 +------------------------------- src/libyang/patch/swig.patch | 4 +- 6 files changed, 6 insertions(+), 113 deletions(-) diff --git a/platform/vs/docker-sonic-vs.mk b/platform/vs/docker-sonic-vs.mk index 01459d1c9d09..5d50d2409419 100644 --- a/platform/vs/docker-sonic-vs.mk +++ b/platform/vs/docker-sonic-vs.mk @@ -11,7 +11,6 @@ $(DOCKER_SONIC_VS)_DEPENDS += $(SWSS) \ $(SONIC_DEVICE_DATA) \ $(LIBYANG) \ $(LIBYANG_CPP) \ - $(LIBYANG_PY2) \ $(LIBYANG_PY3) \ $(SONIC_UTILITIES_DATA) \ $(SONIC_HOST_SERVICES_DATA) diff --git a/rules/libyang.mk b/rules/libyang.mk index 181db2368c6d..c8873c3b3231 100644 --- a/rules/libyang.mk +++ b/rules/libyang.mk @@ -29,11 +29,7 @@ LIBYANG_PY3 = python3-yang_$(LIBYANG_VERSION)_$(CONFIGURED_ARCH).deb $(LIBYANG_PY3)_DEPENDS += $(LIBYANG) $(LIBYANG_CPP) $(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_PY3))) -LIBYANG_PY2 = python2-yang_$(LIBYANG_VERSION)_$(CONFIGURED_ARCH).deb -$(LIBYANG_PY2)_DEPENDS += $(LIBYANG) $(LIBYANG_CPP) -$(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_PY2))) - $(eval $(call add_conflict_package,$(LIBYANG),$(LIBYANG1))) $(eval $(call add_conflict_package,$(LIBYANG_DEV),$(LIBYANG1_DEV))) -export LIBYANG LIBYANG_DBG LIBYANG_DEV LIBYANG_CPP LIBYANG_PY3 LIBYANG_PY2 +export LIBYANG LIBYANG_DBG LIBYANG_DEV LIBYANG_CPP LIBYANG_PY3 diff --git a/rules/sonic-yang-models-py3.mk b/rules/sonic-yang-models-py3.mk index 8c11a921a979..f5a606c28c3a 100644 --- a/rules/sonic-yang-models-py3.mk +++ b/rules/sonic-yang-models-py3.mk @@ -2,7 +2,7 @@ SONIC_YANG_MODELS_PY3 = sonic_yang_models-1.0-py3-none-any.whl $(SONIC_YANG_MODELS_PY3)_SRC_PATH = $(SRC_PATH)/sonic-yang-models $(SONIC_YANG_MODELS_PY3)_PYTHON_VERSION = 3 $(SONIC_YANG_MODELS_PY3)_DEBS_DEPENDS = $(LIBYANG) $(LIBYANG_CPP) \ - $(LIBYANG_PY2) $(LIBYANG_PY3) + $(LIBYANG_PY3) SONIC_PYTHON_WHEELS += $(SONIC_YANG_MODELS_PY3) export SONIC_YANG_MODELS_PY3 diff --git a/src/libyang/Makefile b/src/libyang/Makefile index 32cabdf13bdf..357908ebc370 100644 --- a/src/libyang/Makefile +++ b/src/libyang/Makefile @@ -3,7 +3,7 @@ SHELL = /bin/bash .SHELLFLAGS += -e MAIN_TARGET = $(LIBYANG) -DERIVED_TARGETS = $(LIBYANG_DEV) $(LIBYANG_DBG) $(LIBYANG_PY2) $(LIBYANG_PY3) $(LIBYANG_CPP) +DERIVED_TARGETS = $(LIBYANG_DEV) $(LIBYANG_DBG) $(LIBYANG_PY3) $(LIBYANG_CPP) $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : # Obtaining the libyang diff --git a/src/libyang/patch/libyang.patch b/src/libyang/patch/libyang.patch index a950d85086ab..45eba825ce30 100644 --- a/src/libyang/patch/libyang.patch +++ b/src/libyang/patch/libyang.patch @@ -10,33 +10,6 @@ index fa562dd3..8635ba15 100644 # set default build type if not specified by user if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE debug) -diff --git a/packages/debian.control.in b/packages/debian.control.in -index da6588b9..fb3ede48 100644 ---- a/packages/debian.control.in -+++ b/packages/debian.control.in -@@ -53,3 +53,15 @@ Depends: python3-yang@PACKAGE_PART_NAME@ (=@LIBYANG_VERSION@) - Section: debug - Architecture: any - Description: Debug symbols of python3 bidings of libyang library. -+ -+Package: python2-yang@PACKAGE_PART_NAME@ -+Depends: @PACKAGE_NAME@ (=@LIBYANG_VERSION@), libyang-cpp@PACKAGE_PART_NAME@ (=@LIBYANG_VERSION@) -+Section: libs -+Architecture: any -+Description: Bindings of libyang library to python2 language. -+ -+Package: python2-yang@PACKAGE_PART_NAME@-dbg -+Depends: python2-yang@PACKAGE_PART_NAME@ (=@LIBYANG_VERSION@) -+Section: debug -+Architecture: any -+Description: Debug symbols of python2 bidings of libyang library. -diff --git a/packages/debian.python2-yang.install b/packages/debian.python2-yang.install -new file mode 100644 -index 00000000..14ce2f3c ---- /dev/null -+++ b/packages/debian.python2-yang.install -@@ -0,0 +1 @@ -+usr/lib/python2.7/dist-packages/* diff --git a/packages/debian.rules.in b/packages/debian.rules.in index d565819e..e92fe4a1 100644 --- a/packages/debian.rules.in @@ -45,7 +18,7 @@ index d565819e..e92fe4a1 100644 override_dh_strip: dh_strip -plibyang@PACKAGE_PART_NAME@ --dbg-package=libyang@PACKAGE_PART_NAME@-dbg dh_strip -plibyang-cpp@PACKAGE_PART_NAME@ --dbg-package=libyang-cpp@PACKAGE_PART_NAME@-dbg -+ dh_strip -ppython2-yang@PACKAGE_PART_NAME@ --dbg-package=python2-yang@PACKAGE_PART_NAME@-dbg ++ #dh_strip -ppython2-yang@PACKAGE_PART_NAME@ --dbg-package=python2-yang@PACKAGE_PART_NAME@-dbg dh_strip -ppython3-yang@PACKAGE_PART_NAME@ --dbg-package=python3-yang@PACKAGE_PART_NAME@-dbg override_dh_auto_configure: @@ -57,78 +30,3 @@ index d565819e..e92fe4a1 100644 override_dh_auto_test: ctest --output-on-failure -diff --git a/packages/libyang.dsc.in b/packages/libyang.dsc.in -index fdfa402b..f75ba184 100644 ---- a/packages/libyang.dsc.in -+++ b/packages/libyang.dsc.in -@@ -1,10 +1,10 @@ - Format: 3.0 (quilt) - Source: @PACKAGE_NAME@ --Binary: @PACKAGE_NAME@, @PACKAGE_NAME@-dbg, @PACKAGE_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@, libyang-cpp@PACKAGE_PART_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@-dbg, python3-yang@PACKAGE_PART_NAME@, python3-yang@PACKAGE_PART_NAME@-dbg -+Binary: @PACKAGE_NAME@, @PACKAGE_NAME@-dbg, @PACKAGE_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@, libyang-cpp@PACKAGE_PART_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@-dbg, python3-yang@PACKAGE_PART_NAME@, python3-yang@PACKAGE_PART_NAME@-dbg python2-yang@PACKAGE_PART_NAME@, python2-yang@PACKAGE_PART_NAME@-dbg - Maintainer: CESNET - Version: @LIBYANG_VERSION@ - Architecture: any - Standards-Version: 3.8.2 - Homepage: https://github.com/CESNET/libyang - Vcs-Git: https://github.com/CESNET/libyang --Build-Depends: debhelper (>= 9), make, gcc, doxygen, cmake, pkg-config, libpcre3-dev, libcmocka-dev, python3-dev, g++, swig (>= 3.0.12) -+Build-Depends: debhelper (>= 9), make, gcc, doxygen, cmake, pkg-config, libpcre3-dev, libcmocka-dev, python3-dev, python2-dev, g++, swig (>= 3.0.12) -diff --git a/packages/libyang.spec.in b/packages/libyang.spec.in -index 6a4ac615..6939f028 100644 ---- a/packages/libyang.spec.in -+++ b/packages/libyang.spec.in -@@ -46,6 +46,8 @@ BuildRequires: python3-devel - %else - BuildRequires: python34-devel - %endif -+ -+BuildRequires: python2-devel - %endif - - Conflicts: @CONFLICT_PACKAGE_NAME@ = @LIBYANG_MAJOR_VERSION@.@LIBYANG_MINOR_VERSION@ -@@ -70,6 +72,11 @@ Summary: Binding to python - Requires: libyang-cpp@PACKAGE_PART_NAME@ = %{version}-%{release} - Requires: %{name} = %{version}-%{release} - -+%package -n python2-yang@PACKAGE_PART_NAME@ -+Summary: Binding to python -+Requires: libyang-cpp@PACKAGE_PART_NAME@ = %{version}-%{release} -+Requires: %{name} = %{version}-%{release} -+ - %description -n libyang-cpp@PACKAGE_PART_NAME@ - Bindings of libyang library to C++ language. - -@@ -80,6 +87,10 @@ Headers of bindings to c++ language. - Bindings of libyang library to python language. - %endif - -+%description -n python2-yang@PACKAGE_PART_NAME@ -+Bindings of libyang library to python language. -+%endif -+ - %description devel - Headers of libyang library. - -@@ -167,4 +178,9 @@ make DESTDIR=%{buildroot} install - %{_libdir}/python* - %endif - -+%files -n python2-yang@PACKAGE_PART_NAME@ -+%defattr(-,root,root) -+%{_libdir}/python* -+%endif -+ - %changelog -diff --git a/packages/local-deb.sh.in b/packages/local-deb.sh.in -index 057bbc67..4318a49d 100755 ---- a/packages/local-deb.sh.in -+++ b/packages/local-deb.sh.in -@@ -18,6 +18,7 @@ fi - cp "@PROJECT_SOURCE_DIR@/packages/debian.libyang-dev.install" debian/@PACKAGE_NAME@-dev.install - cp "@PROJECT_SOURCE_DIR@/packages/debian.libyang-cpp.install" debian/libyang-cpp@PACKAGE_PART_NAME@.install - cp "@PROJECT_SOURCE_DIR@/packages/debian.libyang-cpp-dev.install" debian/libyang-cpp@PACKAGE_PART_NAME@-dev.install -+cp "@PROJECT_SOURCE_DIR@/packages/debian.python2-yang.install" debian/python2-yang@PACKAGE_PART_NAME@.install - cp "@PROJECT_SOURCE_DIR@/packages/debian.python3-yang.install" debian/python3-yang@PACKAGE_PART_NAME@.install - echo -e "@PACKAGE_NAME@ (@LIBYANG_VERSION@) stable; urgency=low\n" >debian/changelog - git log -10 --pretty=format:' * %s (%aN)%n' 2>/dev/null >>debian/changelog || echo -e " * unknown changes \n" >>debian/changelog diff --git a/src/libyang/patch/swig.patch b/src/libyang/patch/swig.patch index a6f798c18224..d2b4080d368d 100644 --- a/src/libyang/patch/swig.patch +++ b/src/libyang/patch/swig.patch @@ -29,7 +29,7 @@ index 4cee36ec..0baa69ab 100644 + message(WARNING "Can't create a static Python module") else() - message(WARNING "Sysrepo supports Python 2.x and Python 3.x") -+ set(GEN_PYTHON_VERSION 2 3) ++ set(GEN_PYTHON_VERSION 3) + foreach(CUR_PYTHON_VERSION ${GEN_PYTHON_VERSION}) + message(STATUS "Python version ${CUR_PYTHON_VERSION} was selected") + @@ -99,7 +99,7 @@ index 994b1234..5d18b8bf 100644 -swig_link_libraries(${PYTHON_SWIG_BINDING} ${PYTHON_LIBRARIES} libyang-cpp) +swig_link_libraries(${PYTHON_SWIG_TARGET} ${PYTHON_LIBRARIES} libyang-cpp) + -+set_target_properties(_${PYTHON_SWIG_TARGET} PROPERTIES OUTPUT_NAME "_yang${PYTHON_EXT_SUFFIX}" SUFFIX "") ++set_target_properties(_${PYTHON_SWIG_TARGET} PROPERTIES OUTPUT_NAME "_yang") # Generate header with SWIG run-time functions execute_process(COMMAND ${SWIG_EXECUTABLE} -python -external-runtime ${CMAKE_CURRENT_BINARY_DIR}/swigpyrun.h) From b82a930b095990978e6f1d898845bc8abc774766 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Fri, 23 Jul 2021 09:31:33 -0700 Subject: [PATCH 060/186] Update monit build for Bullseye Signed-off-by: Saikrishna Arcot --- .../0003-fix-yacc-header-file-naming.patch | 59 +++++++++++++++++++ src/monit/patch/series | 1 + 2 files changed, 60 insertions(+) create mode 100644 src/monit/patch/0003-fix-yacc-header-file-naming.patch diff --git a/src/monit/patch/0003-fix-yacc-header-file-naming.patch b/src/monit/patch/0003-fix-yacc-header-file-naming.patch new file mode 100644 index 000000000000..835e7ee4a1c9 --- /dev/null +++ b/src/monit/patch/0003-fix-yacc-header-file-naming.patch @@ -0,0 +1,59 @@ +Fix header file names for lexer files + +From: Saikrishna Arcot + +Due to changes in yacc, the header file that it generates (y.tab.h) is now +actually used by y.tab.c, and needs to exist. Change the code that generates +and moves this file to fix this issue. +--- + Makefile.am | 16 +++++++--------- + src/l.l | 2 +- + 2 files changed, 8 insertions(+), 10 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index d321e3a..d276a6f 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -95,7 +95,7 @@ monit_LDFLAGS = -static $(EXTLDFLAGS) + + man_MANS = monit.1 + +-BUILT_SOURCES = src/lex.yy.c src/y.tab.c src/tokens.h ++BUILT_SOURCES = src/lex.yy.c src/y.tab.c src/y.tab.h + + CLEANFILES = src/y.output + DISTCLEANFILES = *~ $(BUILT_SOURCES) +@@ -145,14 +145,12 @@ monit.1: doc/monit.pod + # Grammar rules + # ------------- + +-src/y.tab.c src/tokens.h: src/p.y +- $(YACC) $(YACCFLAGS) -o src/y.tab.c $< +- -echo "#include " > src/.y.tab.c +- -cat src/y.tab.c >> src/.y.tab.c +- -mv src/.y.tab.c src/y.tab.c +- -mv src/y.tab.h src/tokens.h ++src/y.tab.c src/y.tab.h: run-yacc + +-src/lex.yy.c: src/l.l +- $(FLEX) $(FLEXFLAGS) -o$@ $< ++.INTERMEDIATE: run-yacc ++run-yacc: src/p.y ++ $(YACC) $(YACCFLAGS) -o src/y.tab.c $< + ++src/lex.yy.c: src/l.l ++ $(FLEX) $(FLEXFLAGS) -o$@ $< + +diff --git a/src/l.l b/src/l.l +index fee015c..3047800 100644 +--- a/src/l.l ++++ b/src/l.l +@@ -50,7 +50,7 @@ + #endif + + #include "monit.h" +-#include "tokens.h" ++#include "y.tab.h" + + // libmonit + #include "util/Str.h" diff --git a/src/monit/patch/series b/src/monit/patch/series index f5534d0f554f..17bda755059d 100644 --- a/src/monit/patch/series +++ b/src/monit/patch/series @@ -1,3 +1,4 @@ # This series applies on GIT commit dc9bc1c949125140d967edfc598dfad47eedc552 0001-used_system_memory_sysdep-Use-MemAvailable-value-if-.patch 0002-change_monit_alert_log_error.patch +0003-fix-yacc-header-file-naming.patch From 433e0206d989e13918aaa36b081bb98dd3320bba Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Sat, 24 Jul 2021 19:52:30 -0700 Subject: [PATCH 061/186] [slave.mk]: include dhcp-relay docker in buster build targets dhcp relay docker is now application extension and is now included in $(SONIC_PACKAGES_LOCAL) Signed-off-by: Guohan Lu --- slave.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/slave.mk b/slave.mk index cb0bb0e4fc3a..34253374079c 100644 --- a/slave.mk +++ b/slave.mk @@ -734,8 +734,8 @@ else ifeq ($(BLDENV),buster) DOCKER_IMAGES := $(SONIC_BUSTER_DOCKERS) DOCKER_DBG_IMAGES := $(SONIC_BUSTER_DBG_DOCKERS) - BUSTER_DOCKER_IMAGES = $(filter $(SONIC_BUSTER_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS)) - BUSTER_DBG_DOCKER_IMAGES = $(filter $(SONIC_BUSTER_DBG_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS)) + BUSTER_DOCKER_IMAGES = $(filter $(SONIC_BUSTER_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS) $(SONIC_PACKAGES_LOCAL)) + BUSTER_DBG_DOCKER_IMAGES = $(filter $(SONIC_BUSTER_DBG_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS) $(SONIC_PACKAGES_LOCAL)) else DOCKER_IMAGES = $(filter-out $(SONIC_JESSIE_DOCKERS) $(SONIC_STRETCH_DOCKERS) $(SONIC_BUSTER_DOCKERS),$(SONIC_DOCKER_IMAGES)) DOCKER_DBG_IMAGES = $(filter-out $(SONIC_JESSIE_DBG_DOCKERS) $(SONIC_STRETCH_DBG_DOCKERS) $(SONIC_BUSTER_DBG_DOCKERS), $(SONIC_DOCKER_DBG_IMAGES)) From 4569d4421dd97bab26acee3ed598b8326231893d Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Fri, 23 Jul 2021 09:35:22 -0700 Subject: [PATCH 062/186] src/sonic-swss-common: Update submodule to include changes for Bullseye Primary change is to use either swig4.0 or swig3.0 binaries, whichever is found, and to not build the Python 2 bindings on Bullseye. Signed-off-by: Saikrishna Arcot --- 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 e95a4666ad90..8f9c6e79d0cb 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit e95a4666ad90f13c3675efb9238f273df5232e91 +Subproject commit 8f9c6e79d0cbf2c77ba7942b690405b394a9bafb From 4b9b7e0597ee539aaa095bcfe7172ac4657d1d22 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Wed, 14 Jul 2021 12:22:27 -0700 Subject: [PATCH 063/186] Update snmpd to 5.9, as part of the Bullseye upgrade Debian actually did a binNMU for snmpd, so to match the package version we're building with the version in the offiical repos, that version needs to be manually specified in the changelog. Signed-off-by: Saikrishna Arcot --- rules/snmpd.mk | 8 +- src/snmpd/Makefile | 14 +- ...ng-logs-with-statfs-permission-denie.patch | 27 + ...eck-return-status-from-realloc.-Than.patch | 31 + ...-snmpd-crashes-when-receiving-a-GetN.patch | 36 + ...-crashing-and-or-freezing-on-timeout.patch | 211 +++++ .../0007-Linux-VRF-5.7.3-Support.patch | 799 ++++++++++++++++++ ..._BUILD_ARCH_OS-in-order-to-build-ipv.patch | 22 + src/snmpd/patch-5.9+dfsg/series | 5 + 9 files changed, 1146 insertions(+), 7 deletions(-) create mode 100644 src/snmpd/patch-5.9+dfsg/0001-SNMP-Stop-spamming-logs-with-statfs-permission-denie.patch create mode 100644 src/snmpd/patch-5.9+dfsg/0002-at.c-properly-check-return-status-from-realloc.-Than.patch create mode 100644 src/snmpd/patch-5.9+dfsg/0003-CHANGES-BUG-2743-snmpd-crashes-when-receiving-a-GetN.patch create mode 100644 src/snmpd/patch-5.9+dfsg/0006-From-Jiri-Cervenka-snmpd-Fixed-agentx-crashing-and-or-freezing-on-timeout.patch create mode 100755 src/snmpd/patch-5.9+dfsg/0007-Linux-VRF-5.7.3-Support.patch create mode 100644 src/snmpd/patch-5.9+dfsg/0008-Enable-macro-DEB_BUILD_ARCH_OS-in-order-to-build-ipv.patch create mode 100644 src/snmpd/patch-5.9+dfsg/series diff --git a/rules/snmpd.mk b/rules/snmpd.mk index 7922e2097ff0..b04b87eb5596 100644 --- a/rules/snmpd.mk +++ b/rules/snmpd.mk @@ -1,7 +1,7 @@ # snmpd package -SNMPD_VERSION = 5.7.3+dfsg -SNMPD_VERSION_FULL = $(SNMPD_VERSION)-5 +SNMPD_VERSION = 5.9+dfsg +SNMPD_VERSION_FULL = $(SNMPD_VERSION)-3+b1 export SNMPD_VERSION SNMPD_VERSION_FULL @@ -32,11 +32,11 @@ $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(SNMP_DBG))) SNMPD_DBG = snmpd-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(SNMPD_DBG))) -LIBSNMP = libsnmp30_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb +LIBSNMP = libsnmp40_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb $(LIBSNMP)_RDEPENDS += $(LIBSNMP_BASE) $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(LIBSNMP))) -LIBSNMP_DBG = libsnmp30-dbg_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb +LIBSNMP_DBG = libsnmp40-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb $(LIBSNMP_DBG)_DEPENDS += $(LIBSNMP) $(LIBSNMP_DBG)_RDEPENDS += $(LIBSNMP) $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(LIBSNMP_DBG))) diff --git a/src/snmpd/Makefile b/src/snmpd/Makefile index 50d0303540d6..297450b4db01 100644 --- a/src/snmpd/Makefile +++ b/src/snmpd/Makefile @@ -8,8 +8,8 @@ DERIVED_TARGETS = snmptrapd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ snmpd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ snmp-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ snmpd-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ - libsnmp30_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ - libsnmp30-dbg_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libsnmp40_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libsnmp40-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ libsnmp-dev_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ libsnmp-perl_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ tkmib_$(SNMPD_VERSION_FULL)_all.deb @@ -18,13 +18,21 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : rm -rf net-snmp-$(SNMPD_VERSION) # download debian net-snmp - dget -u https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_$(SNMPD_VERSION_FULL).dsc + dget -u https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_$(SNMPD_VERSION)-3.dsc pushd net-snmp-$(SNMPD_VERSION) git init git add -f * git commit -m "unmodified snmpd source" + # Looks like Debian did a binNMU (binary non-maintainer upload), so the latest dsc + # file that we can get doesn't actually have the exact version number that Debian's + # repos have. + DEBEMAIL="$(shell git config --get user.name) <$(shell git config --get user.email)>" dch --bin-nmu "Rebuild against perl 5.32.0" + dch -r "" + git add debian/changelog + git commit -m "fix package version" + # Apply patches stg init stg import -s ../patch-$(SNMPD_VERSION)/series diff --git a/src/snmpd/patch-5.9+dfsg/0001-SNMP-Stop-spamming-logs-with-statfs-permission-denie.patch b/src/snmpd/patch-5.9+dfsg/0001-SNMP-Stop-spamming-logs-with-statfs-permission-denie.patch new file mode 100644 index 000000000000..9a1f23c0b483 --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0001-SNMP-Stop-spamming-logs-with-statfs-permission-denie.patch @@ -0,0 +1,27 @@ +From a1edbce39e46b5c8bd5bd7db17fc11fa30e7dd73 Mon Sep 17 00:00:00 2001 +From: pavel-shirshov +Date: Mon, 27 Aug 2018 16:50:16 +0800 +Subject: [PATCH] [SNMP] Stop spamming logs with statfs permission denied log + message #1668 + +--- + agent/mibgroup/hardware/fsys/fsys_mntctl.c | 2 -- + agent/mibgroup/hardware/fsys/fsys_mntent.c | 2 -- + 2 files changed, 4 deletions(-) + +diff --git a/agent/mibgroup/hardware/fsys/fsys_mntctl.c b/agent/mibgroup/hardware/fsys/fsys_mntctl.c +index 9fbb068..adc38d6 100644 +--- a/agent/mibgroup/hardware/fsys/fsys_mntctl.c ++++ b/agent/mibgroup/hardware/fsys/fsys_mntctl.c +@@ -163,8 +163,6 @@ netsnmp_fsys_arch_load( void ) + continue; + + if ( statfs( entry->path, &stat_buf ) < 0 ) { +- snprintf( tmpbuf, sizeof(tmpbuf), "Cannot statfs %s", entry->path ); +- snmp_log_perror( tmpbuf ); + continue; + } + entry->units = stat_buf.f_bsize; +-- +2.7.4 + diff --git a/src/snmpd/patch-5.9+dfsg/0002-at.c-properly-check-return-status-from-realloc.-Than.patch b/src/snmpd/patch-5.9+dfsg/0002-at.c-properly-check-return-status-from-realloc.-Than.patch new file mode 100644 index 000000000000..ceb0c68352bf --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0002-at.c-properly-check-return-status-from-realloc.-Than.patch @@ -0,0 +1,31 @@ +From e370973f273ffc1b32673bc94c5a46f75a846d82 Mon Sep 17 00:00:00 2001 +From: Niels Baggesen +Date: Wed, 31 Aug 2016 21:43:36 +0200 +Subject: [PATCH] at.c: properly check return status from realloc. Thanks to + Daniel Eiland (bug 2678) + +--- + agent/mibgroup/mibII/at.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/agent/mibgroup/mibII/at.c b/agent/mibgroup/mibII/at.c +index f57ba2a..a73fb8c 100644 +--- a/agent/mibgroup/mibII/at.c ++++ b/agent/mibgroup/mibII/at.c +@@ -638,11 +638,12 @@ ARP_Scan_Init(void) + struct arptab *newtab = (struct arptab *) + realloc(at, (sizeof(struct arptab) * + (arptab_curr_max_size + ARP_CACHE_INCR))); +- if (newtab == at) { ++ if (newtab == NULL) { + snmp_log(LOG_ERR, + "Error allocating more space for arpcache. " + "Cache will continue to be limited to %d entries", + arptab_curr_max_size); ++ newtab = at; + break; + } else { + arptab_curr_max_size += ARP_CACHE_INCR; +-- +2.7.4 + diff --git a/src/snmpd/patch-5.9+dfsg/0003-CHANGES-BUG-2743-snmpd-crashes-when-receiving-a-GetN.patch b/src/snmpd/patch-5.9+dfsg/0003-CHANGES-BUG-2743-snmpd-crashes-when-receiving-a-GetN.patch new file mode 100644 index 000000000000..cdf9b94be934 --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0003-CHANGES-BUG-2743-snmpd-crashes-when-receiving-a-GetN.patch @@ -0,0 +1,36 @@ +From 2170e345858738e65d3156a49d3186e4a9288821 Mon Sep 17 00:00:00 2001 +From: Zhenggen Xu +Date: Fri, 12 Oct 2018 17:13:54 -0700 +Subject: [PATCH] Subject: [PATCH] CHANGES: BUG: 2743: snmpd crashes when + receiving a GetNext PDU with multiple Varbinds + +skip out-of-range varbinds when calling next handler +--- + agent/helpers/table.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/agent/helpers/table.c b/agent/helpers/table.c +index 882e84c..b943d6e 100644 +--- a/agent/helpers/table.c ++++ b/agent/helpers/table.c +@@ -406,6 +406,8 @@ table_helper_handler(netsnmp_mib_handler *handler, + if (reqinfo->mode == MODE_GET) + table_helper_cleanup(reqinfo, request, + SNMP_NOSUCHOBJECT); ++ else ++ request->processed = 1; /* skip if next handler called */ + continue; + } + +@@ -483,6 +485,8 @@ table_helper_handler(netsnmp_mib_handler *handler, + #endif /* NETSNMP_NO_WRITE_SUPPORT */ + table_helper_cleanup(reqinfo, request, + SNMP_NOSUCHOBJECT); ++ else ++ request->processed = 1; /* skip if next handler called */ + continue; + } + /* +-- +2.18.0 + diff --git a/src/snmpd/patch-5.9+dfsg/0006-From-Jiri-Cervenka-snmpd-Fixed-agentx-crashing-and-or-freezing-on-timeout.patch b/src/snmpd/patch-5.9+dfsg/0006-From-Jiri-Cervenka-snmpd-Fixed-agentx-crashing-and-or-freezing-on-timeout.patch new file mode 100644 index 000000000000..d11a9d6d75e9 --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0006-From-Jiri-Cervenka-snmpd-Fixed-agentx-crashing-and-or-freezing-on-timeout.patch @@ -0,0 +1,211 @@ +From a5782d0673044ad0c621daed7975f53238bb038e Mon Sep 17 00:00:00 2001 +From: Renuka Manavalan +Date: Tue, 10 Sep 2019 17:51:45 +0000 +Subject: [PATCH] Patch from SourceForge: net-snmp commit #793d59 Avoids snmpd + crash when sub agent timesout. + +--- + agent/mibgroup/agentx/master_admin.c | 1 + + agent/snmp_agent.c | 81 ++++++++++++++++++---------- + include/net-snmp/agent/snmp_agent.h | 5 ++ + 3 files changed, 60 insertions(+), 27 deletions(-) + +diff --git a/agent/mibgroup/agentx/master_admin.c b/agent/mibgroup/agentx/master_admin.c +index 4dc1aa7..8c1d194 100644 +--- a/agent/mibgroup/agentx/master_admin.c ++++ b/agent/mibgroup/agentx/master_admin.c +@@ -158,6 +158,7 @@ close_agentx_session(netsnmp_session * session, int sessid) + for (sp = session->subsession; sp != NULL; sp = sp->next) { + + if (sp->sessid == sessid) { ++ netsnmp_remove_delegated_requests_for_session(sp); + unregister_mibs_by_session(sp); + unregister_index_by_session(sp); + unregister_sysORTable_by_session(sp); +diff --git a/agent/snmp_agent.c b/agent/snmp_agent.c +index b96d650..7cacd1a 100644 +--- a/agent/snmp_agent.c ++++ b/agent/snmp_agent.c +@@ -1409,6 +1409,7 @@ init_agent_snmp_session(netsnmp_session * session, netsnmp_pdu *pdu) + asp->treecache_num = -1; + asp->treecache_len = 0; + asp->reqinfo = SNMP_MALLOC_TYPEDEF(netsnmp_agent_request_info); ++ asp->flags = SNMP_AGENT_FLAGS_NONE; + DEBUGMSGTL(("verbose:asp", "asp %p reqinfo %p created\n", + asp, asp->reqinfo)); + +@@ -1457,6 +1458,9 @@ netsnmp_check_for_delegated(netsnmp_agent_session *asp) + + if (NULL == asp->treecache) + return 0; ++ ++ if (asp->flags & SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS) ++ return 0; + + for (i = 0; i <= asp->treecache_num; i++) { + for (request = asp->treecache[i].requests_begin; request; +@@ -1535,39 +1539,48 @@ int + netsnmp_remove_delegated_requests_for_session(netsnmp_session *sess) + { + netsnmp_agent_session *asp; +- int count = 0; ++ int total_count = 0; + + for (asp = agent_delegated_list; asp; asp = asp->next) { + /* + * check each request + */ ++ int i; ++ int count = 0; + netsnmp_request_info *request; +- for(request = asp->requests; request; request = request->next) { +- /* +- * check session +- */ +- netsnmp_assert(NULL!=request->subtree); +- if(request->subtree->session != sess) +- continue; ++ for (i = 0; i <= asp->treecache_num; i++) { ++ for (request = asp->treecache[i].requests_begin; request; ++ request = request->next) { ++ /* ++ * check session ++ */ ++ netsnmp_assert(NULL!=request->subtree); ++ if(request->subtree->session != sess) ++ continue; + +- /* +- * matched! mark request as done +- */ +- netsnmp_request_set_error(request, SNMP_ERR_GENERR); +- ++count; ++ /* ++ * matched! mark request as done ++ */ ++ netsnmp_request_set_error(request, SNMP_ERR_GENERR); ++ ++count; ++ } ++ } ++ if (count) { ++ asp->flags |= SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS; ++ total_count += count; + } + } + + /* + * if we found any, that request may be finished now + */ +- if(count) { ++ if(total_count) { + DEBUGMSGTL(("snmp_agent", "removed %d delegated request(s) for session " +- "%8p\n", count, sess)); +- netsnmp_check_outstanding_agent_requests(); ++ "%8p\n", total_count, sess)); ++ netsnmp_check_delegated_requests(); + } + +- return count; ++ return total_count; + } + + int +@@ -2739,19 +2752,11 @@ handle_var_requests(netsnmp_agent_session *asp) + return final_status; + } + +-/* +- * loop through our sessions known delegated sessions and check to see +- * if they've completed yet. If there are no more delegated sessions, +- * check for and process any queued requests +- */ + void +-netsnmp_check_outstanding_agent_requests(void) ++netsnmp_check_delegated_requests(void) + { + netsnmp_agent_session *asp, *prev_asp = NULL, *next_asp = NULL; + +- /* +- * deal with delegated requests +- */ + for (asp = agent_delegated_list; asp; asp = next_asp) { + next_asp = asp->next; /* save in case we clean up asp */ + if (!netsnmp_check_for_delegated(asp)) { +@@ -2790,6 +2795,23 @@ netsnmp_check_outstanding_agent_requests(void) + prev_asp = asp; + } + } ++} ++ ++ ++/* ++ * loop through our sessions known delegated sessions and check to see ++ * if they've completed yet. If there are no more delegated sessions, ++ * check for and process any queued requests ++ */ ++void ++netsnmp_check_outstanding_agent_requests(void) ++{ ++ netsnmp_agent_session *asp; ++ ++ /* ++ * deal with delegated requests ++ */ ++ netsnmp_check_delegated_requests(); + + /* + * if we are processing a set and there are more delegated +@@ -2819,7 +2841,8 @@ netsnmp_check_outstanding_agent_requests(void) + + netsnmp_processing_set = netsnmp_agent_queued_list; + DEBUGMSGTL(("snmp_agent", "SET request remains queued while " +- "delegated requests finish, asp = %8p\n", asp)); ++ "delegated requests finish, asp = %8p\n", ++ agent_delegated_list)); + break; + } + #endif /* NETSNMP_NO_WRITE_SUPPORT */ +@@ -2880,6 +2903,10 @@ check_delayed_request(netsnmp_agent_session *asp) + case SNMP_MSG_GETBULK: + case SNMP_MSG_GETNEXT: + netsnmp_check_all_requests_status(asp, 0); ++ if (asp->flags & SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS) { ++ DEBUGMSGTL(("snmp_agent","canceling next walk for asp %p\n", asp)); ++ break; ++ } + handle_getnext_loop(asp); + if (netsnmp_check_for_delegated(asp) && + netsnmp_check_transaction_id(asp->pdu->transid) != +diff --git a/include/net-snmp/agent/snmp_agent.h b/include/net-snmp/agent/snmp_agent.h +index aad8837..43f4fff 100644 +--- a/include/net-snmp/agent/snmp_agent.h ++++ b/include/net-snmp/agent/snmp_agent.h +@@ -32,6 +32,9 @@ extern "C" { + #define SNMP_MAX_PDU_SIZE 64000 /* local constraint on PDU size sent by agent + * (see also SNMP_MAX_MSG_SIZE in snmp_api.h) */ + ++#define SNMP_AGENT_FLAGS_NONE 0x0 ++#define SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS 0x1 ++ + /* + * If non-zero, causes the addresses of peers to be logged when receptions + * occur. +@@ -205,6 +208,7 @@ extern "C" { + int treecache_num; /* number of current cache entries */ + netsnmp_cachemap *cache_store; + int vbcount; ++ int flags; + } netsnmp_agent_session; + + /* +@@ -240,6 +244,7 @@ extern "C" { + int init_master_agent(void); + void shutdown_master_agent(void); + int agent_check_and_process(int block); ++ void netsnmp_check_delegated_requests(void); + void netsnmp_check_outstanding_agent_requests(void); + + int netsnmp_request_set_error(netsnmp_request_info *request, +-- +2.17.1 + diff --git a/src/snmpd/patch-5.9+dfsg/0007-Linux-VRF-5.7.3-Support.patch b/src/snmpd/patch-5.9+dfsg/0007-Linux-VRF-5.7.3-Support.patch new file mode 100755 index 000000000000..48d13d7f62d6 --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0007-Linux-VRF-5.7.3-Support.patch @@ -0,0 +1,799 @@ +From 49ce7fc078dfa8c1a1688e05de4e2d151dbcd76a Mon Sep 17 00:00:00 2001 +From: Harish Venkatraman +Date: Wed, 17 Oct 2018 15:22:04 -0700 +Subject: [PATCH] Linux-VRF 5.7.3 Support from https://sourceforge.net/p/net-snmp/patches/1376/ + +Sourceforge commits related to this consolidated patch are given below. +https://sourceforge.net/p/net-snmp/code/ci/0b637fea62c7b6dc467b94206d0bd2dec6f912ca/ +https://sourceforge.net/p/net-snmp/code/ci/19ba7b0a6b56d201a8563fe6505cd82e313c1c9c/ +https://sourceforge.net/p/net-snmp/code/ci/76336fb63bb74b4dede5dda5c14fb8cf2d60be8e/ +https://sourceforge.net/p/net-snmp/code/ci/c7398de4122102b3250e6dac7c09dbc5d09f1840/ +https://sourceforge.net/p/net-snmp/code/ci/0831ed64a39a34dc040eabe39d0229b07fa2a8a5/ +https://sourceforge.net/p/net-snmp/code/ci/62f6babcc7cfc54c79b442b8a7f45662b4ddc807/ +https://sourceforge.net/p/net-snmp/code/ci/313949522c4d0ddfeac72195fa63512955d9eb28/ + + +This consolidated patch adds native support for VRFs to snmpd. NCLU patches in this same +CCR will be added shortly. The VRF is specified for both listening +addresses as well as TRAP sinks with the 'ipaddr%iface' syntax: + +agentAddress 10.0.1.7%mgmt,22.22.22.22%red +trapsink 10.0.1.9%mgmt +trap2sink 22.22.22.25%red + +The SO_BINDTODEVICE socket option is used to bind a VRF to a particular +socket. + +Testing done included VRFs as well as non-VRF functionality with traps +(v1, v2, and v3) + +--- + agent/agent_trap.c | 20 ++++++++++-- + agent/mibgroup/agentx/master.c | 2 +- + agent/mibgroup/agentx/subagent.c | 2 +- + agent/mibgroup/target/target.c | 3 +- + agent/snmp_agent.c | 21 ++++++++++++- + apps/agentxtrap.c | 2 +- + apps/snmptrap.c | 2 +- + apps/snmptrapd.c | 2 +- + include/net-snmp/library/snmpTCPDomain.h | 2 +- + include/net-snmp/library/snmpUDPBaseDomain.h | 2 +- + include/net-snmp/library/snmpUDPDomain.h | 2 +- + include/net-snmp/library/snmpUDPIPv4BaseDomain.h | 2 +- + include/net-snmp/library/snmpUDPIPv6Domain.h | 2 +- + include/net-snmp/library/snmp_transport.h | 19 +++++++----- + snmplib/snmp_api.c | 4 +-- + snmplib/snmp_transport.c | 26 ++++++++-------- + snmplib/transports/snmpAliasDomain.c | 6 ++-- + snmplib/transports/snmpTCPDomain.c | 16 +++++++--- + snmplib/transports/snmpUDPBaseDomain.c | 39 ++++++++++++++++++------ + snmplib/transports/snmpUDPDomain.c | 15 ++++----- + snmplib/transports/snmpUDPIPv4BaseDomain.c | 4 +-- + snmplib/transports/snmpUDPIPv6Domain.c | 19 ++++----- + snmplib/transports/snmpUnixDomain.c | 5 +-- + 23 files changed, 141 insertions(+), 76 deletions(-) + +diff --git a/agent/agent_trap.c b/agent/agent_trap.c +index 080b8bf..c488ac9 100644 +--- a/agent/agent_trap.c ++++ b/agent/agent_trap.c +@@ -226,6 +226,7 @@ create_trap_session2(const char *sink, const char* sinkport, + { + netsnmp_transport *t; + netsnmp_session session, *sesp; ++ char *iface; + + memset(&session, 0, sizeof(netsnmp_session)); + session.version = version; +@@ -250,7 +251,14 @@ create_trap_session2(const char *sink, const char* sinkport, + ((0 == strcmp("localhost",sink)) || (0 == strcmp("127.0.0.1",sink)))) + session.localname = strdup("localhost"); + +- t = netsnmp_tdomain_transport_full("snmptrap", sink, 0, NULL, sinkport); ++ /* ++ * if given an iface (ip%iface) in sink, send the iface too ++ */ ++ iface = strchr(sink, '%'); ++ if (iface) ++ *iface++ = '\0'; ++ ++ t = netsnmp_tdomain_transport_full("snmptrap", sink, 0, NULL, sinkport, iface); + if (t != NULL) { + sesp = snmp_add(&session, t, NULL, NULL); + +@@ -1219,6 +1227,7 @@ snmpd_parse_config_trapsess(const char *word, char *cptr) + netsnmp_session session, *ss; + netsnmp_transport *transport; + size_t len; ++ char *iface; + + /* + * inform or trap? default to trap +@@ -1240,7 +1249,14 @@ snmpd_parse_config_trapsess(const char *word, char *cptr) + NETSNMP_PARSE_ARGS_NOLOGGING | + NETSNMP_PARSE_ARGS_NOZERO); + +- transport = netsnmp_transport_open_client("snmptrap", session.peername); ++ /* ++ * if iface is given in peer, we will need to bind to that iface ++ */ ++ iface = strchr(session.peername, '%'); ++ if (iface) ++ *iface++ = '\0'; ++ ++ transport = netsnmp_transport_open_client("snmptrap", session.peername, iface); + if (transport == NULL) { + config_perror("snmpd: failed to parse this line."); + return; +diff --git a/agent/mibgroup/agentx/master.c b/agent/mibgroup/agentx/master.c +index baeebaf..6733e7f 100644 +--- a/agent/mibgroup/agentx/master.c ++++ b/agent/mibgroup/agentx/master.c +@@ -126,7 +126,7 @@ real_init_master(void) + sess.remote_port = 0; + sess.callback = handle_master_agentx_packet; + errno = 0; +- t = netsnmp_transport_open_server("agentx", sess.peername); ++ t = netsnmp_transport_open_server("agentx", sess.peername, NULL); + if (t == NULL) { + /* + * diagnose snmp_open errors with the input netsnmp_session +diff --git a/agent/mibgroup/agentx/subagent.c b/agent/mibgroup/agentx/subagent.c +index 1f9d31c..6d38a34 100644 +--- a/agent/mibgroup/agentx/subagent.c ++++ b/agent/mibgroup/agentx/subagent.c +@@ -843,7 +843,7 @@ subagent_open_master_session(void) + + agentx_socket = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID, + NETSNMP_DS_AGENT_X_SOCKET); +- t = netsnmp_transport_open_client("agentx", agentx_socket); ++ t = netsnmp_transport_open_client("agentx", agentx_socket, NULL); + if (t == NULL) { + /* + * Diagnose snmp_open errors with the input +diff --git a/agent/mibgroup/target/target.c b/agent/mibgroup/target/target.c +index 5619e35..6f58817 100644 +--- a/agent/mibgroup/target/target.c ++++ b/agent/mibgroup/target/target.c +@@ -154,7 +154,8 @@ get_target_sessions(char *taglist, TargetFilterFunction * filterfunct, + tAddress, + targaddrs-> + tAddressLen, +- 0); ++ 0, ++ NULL); + if (t == NULL) { + DEBUGMSGTL(("target_sessions", + "bad dest \"")); +diff --git a/agent/snmp_agent.c b/agent/snmp_agent.c +index b96d650..281e8b2 100644 +--- a/agent/snmp_agent.c ++++ b/agent/snmp_agent.c +@@ -1270,6 +1270,7 @@ init_master_agent(void) + char *cptr; + char *buf = NULL; + char *st; ++ char *iface; + + /* default to a default cache size */ + netsnmp_set_lookup_cache_size(-1); +@@ -1318,6 +1319,9 @@ init_master_agent(void) + * AAL5PVC:itf.vpi.vci (if supported) + * IPX:[network]:node[/port] (if supported) + * ++ * ++ * New format to specify an interface for binding along with IP address ++ * address%iface + */ + + cptr = st; +@@ -1334,7 +1338,22 @@ init_master_agent(void) + "requested\n")); + break; + } +- transport = netsnmp_transport_open_server("snmp", cptr); ++ ++ /* ++ * at some point, we may want to add the special listendevice ++ * keyword support. Not sure how to interact with ip%iface ++ iface = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID, ++ NETSNMP_DS_AGENT_LISTEN_DEVICE); ++ */ ++ ++ /* Look for %iface so we can send along a specific interface to ++ setsockopt SO_BINDTODEVICE later. */ ++ iface = strchr(cptr, '%'); ++ if (iface) ++ *iface++ = '\0'; ++ ++ transport = netsnmp_transport_open_server("snmp", cptr, iface); ++ + + if (transport == NULL) { + snmp_log(LOG_ERR, "Error opening specified endpoint \"%s\"\n", +diff --git a/apps/agentxtrap.c b/apps/agentxtrap.c +index 4df423c..ebd81a3 100644 +--- a/apps/agentxtrap.c ++++ b/apps/agentxtrap.c +@@ -231,7 +231,7 @@ ConnectingEntry(UNUSED tState self) + + if(!(t = netsnmp_transport_open_client( + "agentx", netsnmp_ds_get_string( +- NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCKET)))) { ++ NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCKET), NULL))) { + snmp_log(LOG_ERR, "Failed to connect to AgentX server\n"); + change_state(&Exit); + } else if(!(sess = snmp_sess_add_ex( +diff --git a/apps/snmptrap.c b/apps/snmptrap.c +index 7c086db..28d5257 100644 +--- a/apps/snmptrap.c ++++ b/apps/snmptrap.c +@@ -215,7 +215,7 @@ main(int argc, char *argv[]) + } + + ss = snmp_add(&session, +- netsnmp_transport_open_client("snmptrap", session.peername), ++ netsnmp_transport_open_client("snmptrap", session.peername, NULL), + NULL, NULL); + if (ss == NULL) { + /* +diff --git a/apps/snmptrapd.c b/apps/snmptrapd.c +index bce0d47..122a502 100644 +--- a/apps/snmptrapd.c ++++ b/apps/snmptrapd.c +@@ -1186,7 +1186,7 @@ main(int argc, char *argv[]) + *sep = 0; + } + +- transport = netsnmp_transport_open_server("snmptrap", cp); ++ transport = netsnmp_transport_open_server("snmptrap", cp, NULL); + if (transport == NULL) { + snmp_log(LOG_ERR, "couldn't open %s -- errno %d (\"%s\")\n", + cp, errno, strerror(errno)); +diff --git a/include/net-snmp/library/snmpTCPDomain.h b/include/net-snmp/library/snmpTCPDomain.h +index c45856b..3b1fef5 100644 +--- a/include/net-snmp/library/snmpTCPDomain.h ++++ b/include/net-snmp/library/snmpTCPDomain.h +@@ -25,7 +25,7 @@ extern "C" { + #define TRANSPORT_DOMAIN_TCP_IP 1,3,6,1,2,1,100,1,5 + NETSNMP_IMPORT oid netsnmp_snmpTCPDomain[]; + +-netsnmp_transport *netsnmp_tcp_transport(struct sockaddr_in *addr, int local); ++netsnmp_transport *netsnmp_tcp_transport(struct sockaddr_in *addr, int local, char *iface); + + /* + * "Constructor" for transport domain object. +diff --git a/include/net-snmp/library/snmpUDPBaseDomain.h b/include/net-snmp/library/snmpUDPBaseDomain.h +index b9d2c34..0ab2fe5 100644 +--- a/include/net-snmp/library/snmpUDPBaseDomain.h ++++ b/include/net-snmp/library/snmpUDPBaseDomain.h +@@ -18,7 +18,7 @@ extern "C" { + /* + * Prototypes + */ +- void _netsnmp_udp_sockopt_set(int fd, int local); ++ void _netsnmp_udp_sockopt_set(int fd, int local, char *iface); + int netsnmp_udpbase_recv(netsnmp_transport *t, void *buf, int size, + void **opaque, int *olength); + int netsnmp_udpbase_send(netsnmp_transport *t, void *buf, int size, +diff --git a/include/net-snmp/library/snmpUDPDomain.h b/include/net-snmp/library/snmpUDPDomain.h +index 3a09dfd..e402cd8 100644 +--- a/include/net-snmp/library/snmpUDPDomain.h ++++ b/include/net-snmp/library/snmpUDPDomain.h +@@ -18,7 +18,7 @@ extern "C" { + config_require(UDPIPv4Base) + #include + +-netsnmp_transport *netsnmp_udp_transport(struct sockaddr_in *addr, int local); ++netsnmp_transport *netsnmp_udp_transport(struct sockaddr_in *addr, int local, char*iface); + + + /* +diff --git a/include/net-snmp/library/snmpUDPIPv4BaseDomain.h b/include/net-snmp/library/snmpUDPIPv4BaseDomain.h +index 6f7f2c2..8d3e906 100644 +--- a/include/net-snmp/library/snmpUDPIPv4BaseDomain.h ++++ b/include/net-snmp/library/snmpUDPIPv4BaseDomain.h +@@ -25,7 +25,7 @@ extern "C" { + */ + + netsnmp_transport *netsnmp_udpipv4base_transport(struct sockaddr_in *addr, +- int local); ++ int local, char *iface); + + #if defined(HAVE_IP_PKTINFO) || defined(HAVE_IP_RECVDSTADDR) + int netsnmp_udpipv4_recvfrom(int s, void *buf, int len, +diff --git a/include/net-snmp/library/snmpUDPIPv6Domain.h b/include/net-snmp/library/snmpUDPIPv6Domain.h +index 83eba2c..009c510 100644 +--- a/include/net-snmp/library/snmpUDPIPv6Domain.h ++++ b/include/net-snmp/library/snmpUDPIPv6Domain.h +@@ -23,7 +23,7 @@ config_require(UDPBase) + NETSNMP_IMPORT oid netsnmp_UDPIPv6Domain[]; + + netsnmp_transport *netsnmp_udp6_transport(struct sockaddr_in6 *addr, +- int local); ++ int local, char *iface); + + + /* +diff --git a/include/net-snmp/library/snmp_transport.h b/include/net-snmp/library/snmp_transport.h +index 4162897..a3deda7 100644 +--- a/include/net-snmp/library/snmp_transport.h ++++ b/include/net-snmp/library/snmp_transport.h +@@ -206,14 +206,14 @@ typedef struct netsnmp_tdomain_s { + * The f_create_from_tstring field is deprecated, please do not use it + * for new code and try to migrate old code away from using it. + */ +- netsnmp_transport *(*f_create_from_tstring) (const char *, int); ++ netsnmp_transport *(*f_create_from_tstring) (const char *, int, char *); + +- netsnmp_transport *(*f_create_from_ostring) (const u_char *, size_t, int); ++ netsnmp_transport *(*f_create_from_ostring) (const u_char *, size_t, int, char *); + + struct netsnmp_tdomain_s *next; + + netsnmp_transport *(*f_create_from_tstring_new) (const char *, int, +- const char*); ++ const char*, char *); + + } netsnmp_tdomain; + +@@ -273,29 +273,32 @@ void netsnmp_tdomain_init(void); + NETSNMP_IMPORT + netsnmp_transport *netsnmp_tdomain_transport(const char *str, + int local, +- const char *default_domain); ++ const char *default_domain, ++ char *iface); + + NETSNMP_IMPORT + netsnmp_transport *netsnmp_tdomain_transport_full(const char *application, + const char *str, + int local, + const char *default_domain, +- const char *default_target); ++ const char *default_target, ++ char *iface); + + NETSNMP_IMPORT + netsnmp_transport *netsnmp_tdomain_transport_oid(const oid * dom, + size_t dom_len, + const u_char * o, + size_t o_len, +- int local); ++ int local, ++ char *iface); + + NETSNMP_IMPORT + netsnmp_transport* +-netsnmp_transport_open_client(const char* application, const char* str); ++netsnmp_transport_open_client(const char* application, const char* str, char *iface); + + NETSNMP_IMPORT + netsnmp_transport* +-netsnmp_transport_open_server(const char* application, const char* str); ++netsnmp_transport_open_server(const char* application, const char* str, char *iface); + + netsnmp_transport* + netsnmp_transport_open(const char* application, const char* str, int local); +diff --git a/snmplib/snmp_api.c b/snmplib/snmp_api.c +index d155c99..5128c56 100644 +--- a/snmplib/snmp_api.c ++++ b/snmplib/snmp_api.c +@@ -1557,12 +1557,12 @@ _sess_open(netsnmp_session * in_session) + transport = + netsnmp_tdomain_transport_full("snmp", in_session->peername, + in_session->local_port, "tcp,tcp6", +- NULL); ++ NULL, NULL); + } else { + transport = + netsnmp_tdomain_transport_full("snmp", in_session->peername, + in_session->local_port, "udp,udp6", +- NULL); ++ NULL, NULL); + } + + if (NULL != clientaddr_save) +diff --git a/snmplib/snmp_transport.c b/snmplib/snmp_transport.c +index ada4781..40cd631 100644 +--- a/snmplib/snmp_transport.c ++++ b/snmplib/snmp_transport.c +@@ -491,7 +491,8 @@ netsnmp_transport * + netsnmp_tdomain_transport_full(const char *application, + const char *str, int local, + const char *default_domain, +- const char *default_target) ++ const char *default_target, ++ char *iface) + { + netsnmp_tdomain *match = NULL; + const char *addr = NULL; +@@ -646,10 +647,10 @@ netsnmp_tdomain_transport_full(const char *application, + NETSNMP_LOGONCE((LOG_WARNING, + "transport domain %s uses deprecated f_create_from_tstring\n", + match->prefix[0])); +- t = match->f_create_from_tstring(addr, local); ++ t = match->f_create_from_tstring(addr, local, iface); + } + else +- t = match->f_create_from_tstring_new(addr, local, addr2); ++ t = match->f_create_from_tstring_new(addr, local, addr2, iface); + if (t) { + if (lspec) { + free(lspec[0]); +@@ -676,10 +677,11 @@ netsnmp_tdomain_transport_full(const char *application, + + netsnmp_transport * + netsnmp_tdomain_transport(const char *str, int local, +- const char *default_domain) ++ const char *default_domain, ++ char *iface) + { + return netsnmp_tdomain_transport_full("snmp", str, local, default_domain, +- NULL); ++ NULL, iface); + } + + +@@ -687,7 +689,7 @@ netsnmp_tdomain_transport(const char *str, int local, + netsnmp_transport * + netsnmp_tdomain_transport_oid(const oid * dom, + size_t dom_len, +- const u_char * o, size_t o_len, int local) ++ const u_char * o, size_t o_len, int local, char *iface) + { + netsnmp_tdomain *d; + int i; +@@ -700,7 +702,7 @@ netsnmp_tdomain_transport_oid(const oid * dom, + for (i = 0; d->prefix[i] != NULL; i++) { + if (netsnmp_oid_equals(dom, dom_len, d->name, d->name_length) == + 0) { +- return d->f_create_from_ostring(o, o_len, local); ++ return d->f_create_from_ostring(o, o_len, local, iface); + } + } + } +@@ -713,19 +715,19 @@ netsnmp_tdomain_transport_oid(const oid * dom, + netsnmp_transport* + netsnmp_transport_open(const char* application, const char* str, int local) + { +- return netsnmp_tdomain_transport_full(application, str, local, NULL, NULL); ++ return netsnmp_tdomain_transport_full(application, str, local, NULL, NULL, NULL); + } + + netsnmp_transport* +-netsnmp_transport_open_server(const char* application, const char* str) ++netsnmp_transport_open_server(const char* application, const char* str, char *iface) + { +- return netsnmp_tdomain_transport_full(application, str, 1, NULL, NULL); ++ return netsnmp_tdomain_transport_full(application, str, 1, NULL, NULL, iface); + } + + netsnmp_transport* +-netsnmp_transport_open_client(const char* application, const char* str) ++netsnmp_transport_open_client(const char* application, const char* str, char *iface) + { +- return netsnmp_tdomain_transport_full(application, str, 0, NULL, NULL); ++ return netsnmp_tdomain_transport_full(application, str, 0, NULL, NULL, iface); + } + + /** adds a transport to a linked list of transports. +diff --git a/snmplib/transports/snmpAliasDomain.c b/snmplib/transports/snmpAliasDomain.c +index eb50cad..dd7a007 100644 +--- a/snmplib/transports/snmpAliasDomain.c ++++ b/snmplib/transports/snmpAliasDomain.c +@@ -75,7 +75,7 @@ free_alias_config(void) { + + netsnmp_transport * + netsnmp_alias_create_tstring(const char *str, int local, +- const char *default_target) ++ const char *default_target, char *iface) + { + const char *aliasdata; + +@@ -85,13 +85,13 @@ netsnmp_alias_create_tstring(const char *str, int local, + return NULL; + } + +- return netsnmp_tdomain_transport(aliasdata,local,default_target); ++ return netsnmp_tdomain_transport(aliasdata,local,default_target, iface); + } + + + + netsnmp_transport * +-netsnmp_alias_create_ostring(const u_char * o, size_t o_len, int local) ++netsnmp_alias_create_ostring(const u_char * o, size_t o_len, int local, char *iface) + { + fprintf(stderr, "make ostring\n"); + return NULL; +diff --git a/snmplib/transports/snmpTCPDomain.c b/snmplib/transports/snmpTCPDomain.c +index 7feb028..6eb717e 100644 +--- a/snmplib/transports/snmpTCPDomain.c ++++ b/snmplib/transports/snmpTCPDomain.c +@@ -144,7 +144,7 @@ netsnmp_tcp_accept(netsnmp_transport *t) + */ + + netsnmp_transport * +-netsnmp_tcp_transport(struct sockaddr_in *addr, int local) ++netsnmp_tcp_transport(struct sockaddr_in *addr, int local, char *iface) + { + netsnmp_transport *t = NULL; + netsnmp_udp_addr_pair *addr_pair = NULL; +@@ -212,6 +212,11 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local) + * We should set SO_REUSEADDR too. + */ + ++ if (iface && setsockopt(t->sock, SOL_SOCKET, SO_BINDTODEVICE, ++ iface, strlen(iface)) == -1) ++ snmp_log(LOG_ERR, "Bind interface %s to socket: %s\n", ++ iface, strerror(errno)); ++ + setsockopt(t->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, + sizeof(opt)); + +@@ -305,12 +310,13 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local) + + netsnmp_transport * + netsnmp_tcp_create_tstring(const char *str, int local, +- const char *default_target) ++ const char *default_target, ++ char *iface) + { + struct sockaddr_in addr; + + if (netsnmp_sockaddr_in2(&addr, str, default_target)) { +- return netsnmp_tcp_transport(&addr, local); ++ return netsnmp_tcp_transport(&addr, local, iface); + } else { + return NULL; + } +@@ -319,7 +325,7 @@ netsnmp_tcp_create_tstring(const char *str, int local, + + + netsnmp_transport * +-netsnmp_tcp_create_ostring(const u_char * o, size_t o_len, int local) ++netsnmp_tcp_create_ostring(const u_char * o, size_t o_len, int local, char *iface) + { + struct sockaddr_in addr; + +@@ -328,7 +334,7 @@ netsnmp_tcp_create_ostring(const u_char * o, size_t o_len, int local) + addr.sin_family = AF_INET; + memcpy((u_char *) & (addr.sin_addr.s_addr), o, 4); + addr.sin_port = htons(porttmp); +- return netsnmp_tcp_transport(&addr, local); ++ return netsnmp_tcp_transport(&addr, local, iface); + } + return NULL; + } +diff --git a/snmplib/transports/snmpUDPBaseDomain.c b/snmplib/transports/snmpUDPBaseDomain.c +index 8497f71..7b415bc 100644 +--- a/snmplib/transports/snmpUDPBaseDomain.c ++++ b/snmplib/transports/snmpUDPBaseDomain.c +@@ -21,6 +21,9 @@ + #if HAVE_NETINET_IN_H + #include + #endif ++#if HAVE_NET_IF_H ++#include ++#endif + #if HAVE_ARPA_INET_H + #include + #endif +@@ -53,8 +56,14 @@ + #endif + + void +-_netsnmp_udp_sockopt_set(int fd, int local) ++_netsnmp_udp_sockopt_set(int fd, int local, char *iface) + { ++ ++ if (iface && setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, iface, strlen(iface)) == -1) ++ snmp_log(LOG_ERR, "Bind socket on interface: %s: %s\n", iface, strerror(errno)); ++ else if (iface) ++ DEBUGMSGTL(("socket:option", "setting SO_BINDTODEVICE to %s\n", iface)); ++ + #ifdef SO_BSDCOMPAT + /* + * Patch for Linux. Without this, UDP packets that fail get an ICMP +@@ -237,7 +246,10 @@ int netsnmp_udpbase_sendto(int fd, struct in_addr *srcip, int if_index, + struct msghdr m = { 0 }; + char cmsg[CMSG_SPACE(cmsg_data_size)]; + int rc; +- ++ char iface[IFNAMSIZ]; ++ socklen_t ifacelen = IFNAMSIZ; ++ ++ iface[0] = '\0'; + iov.iov_base = data; + iov.iov_len = len; + +@@ -269,14 +281,23 @@ int netsnmp_udpbase_sendto(int fd, struct in_addr *srcip, int if_index, + + memset(&ipi, 0, sizeof(ipi)); + /* +- * Except in the case of responding +- * to a broadcast, setting the ifindex +- * when responding results in incorrect +- * behavior of changing the source address +- * that the manager sees the response +- * come from. ++ * For asymmetric multihomed users, we only set ifindex to 0 ++ * to let kernel handle return if there was no iface bound to the socket. + */ +- ipi.ipi_ifindex = 0; ++ if (getsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, iface, &ifacelen) != 0) { ++ DEBUGMSGTL(("socket:option", "error getsockopt %s\n", strerror(errno))); ++ DEBUGMSGTL(("socket:option", "sendto: SO_BINDTODEVICE not set ifindex=0\n")); ++ ipi.ipi_ifindex = 0; ++ } else if (!ifacelen) { ++ DEBUGMSGTL(("socket:option", "sendto: SO_BINDTODEVICE not set ifacelen=%d ifindex=0\n", ++ ifacelen)); ++ ipi.ipi_ifindex = 0; ++ } else { ++ DEBUGMSGTL(("socket:option", "sendto: SO_BINDTODEVICE dev=%s using ifindex=%d\n", ++ iface, if_index)); ++ ipi.ipi_ifindex = if_index; ++ } ++ + #if defined(cygwin) + ipi.ipi_addr.s_addr = srcip->s_addr; + #else +diff --git a/snmplib/transports/snmpUDPDomain.c b/snmplib/transports/snmpUDPDomain.c +index a0abd8c..fc68303 100644 +--- a/snmplib/transports/snmpUDPDomain.c ++++ b/snmplib/transports/snmpUDPDomain.c +@@ -84,7 +84,7 @@ typedef netsnmp_indexed_addr_pair netsnmp_udp_addr_pair; + * not static, since snmpUDPIPv6Domain needs it, but not public, either. + * (ie don't put it in a public header.) + */ +-void _netsnmp_udp_sockopt_set(int fd, int server); ++void _netsnmp_udp_sockopt_set(int fd, int server, char *iface); + int + netsnmp_sockaddr_in2(struct sockaddr_in *addr, + const char *inpeername, const char *default_target); +@@ -125,11 +125,11 @@ int netsnmp_udp_sendto(int fd, struct in_addr *srcip, int if_index, struct socka + */ + + netsnmp_transport * +-netsnmp_udp_transport(struct sockaddr_in *addr, int local) ++netsnmp_udp_transport(struct sockaddr_in *addr, int local, char *iface) + { + netsnmp_transport *t = NULL; + +- t = netsnmp_udpipv4base_transport(addr, local); ++ t = netsnmp_udpipv4base_transport(addr, local, iface); + if (NULL == t) { + return NULL; + } +@@ -473,12 +473,13 @@ netsnmp_udp_getSecName(void *opaque, int olength, + + netsnmp_transport * + netsnmp_udp_create_tstring(const char *str, int local, +- const char *default_target) ++ const char *default_target, ++ char *iface) + { + struct sockaddr_in addr; + + if (netsnmp_sockaddr_in2(&addr, str, default_target)) { +- return netsnmp_udp_transport(&addr, local); ++ return netsnmp_udp_transport(&addr, local, iface); + } else { + return NULL; + } +@@ -486,7 +487,7 @@ netsnmp_udp_create_tstring(const char *str, int local, + + + netsnmp_transport * +-netsnmp_udp_create_ostring(const u_char * o, size_t o_len, int local) ++netsnmp_udp_create_ostring(const u_char * o, size_t o_len, int local, char *iface) + { + struct sockaddr_in addr; + +@@ -495,7 +496,7 @@ netsnmp_udp_create_ostring(const u_char * o, size_t o_len, int local) + addr.sin_family = AF_INET; + memcpy((u_char *) & (addr.sin_addr.s_addr), o, 4); + addr.sin_port = htons(porttmp); +- return netsnmp_udp_transport(&addr, local); ++ return netsnmp_udp_transport(&addr, local, iface); + } + return NULL; + } +diff --git a/snmplib/transports/snmpUDPIPv4BaseDomain.c b/snmplib/transports/snmpUDPIPv4BaseDomain.c +index 8c0fb05..7991b6a 100644 +--- a/snmplib/transports/snmpUDPIPv4BaseDomain.c ++++ b/snmplib/transports/snmpUDPIPv4BaseDomain.c +@@ -57,7 +57,7 @@ int netsnmp_udpipv4_sendto(int fd, struct in_addr *srcip, int if_index, + #endif /* HAVE_IP_PKTINFO || HAVE_IP_RECVDSTADDR */ + + netsnmp_transport * +-netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local) ++netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local, char *iface) + { + netsnmp_transport *t = NULL; + int rc = 0, rc2; +@@ -95,7 +95,7 @@ netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local) + return NULL; + } + +- _netsnmp_udp_sockopt_set(t->sock, local); ++ _netsnmp_udp_sockopt_set(t->sock, local, iface); + + if (local) { + #ifndef NETSNMP_NO_LISTEN_SUPPORT +diff --git a/snmplib/transports/snmpUDPIPv6Domain.c b/snmplib/transports/snmpUDPIPv6Domain.c +index 18de876..6b44b22 100644 +--- a/snmplib/transports/snmpUDPIPv6Domain.c ++++ b/snmplib/transports/snmpUDPIPv6Domain.c +@@ -74,12 +74,6 @@ oid netsnmp_UDPIPv6Domain[] = { TRANSPORT_DOMAIN_UDP_IPV6 }; + static netsnmp_tdomain udp6Domain; + + /* +- * from snmpUDPDomain. not static, but not public, either. +- * (ie don't put it in a public header.) +- */ +-extern void _netsnmp_udp_sockopt_set(int fd, int server); +- +-/* + * Return a string representing the address in data, or else the "far end" + * address if data is NULL. + */ +@@ -186,7 +186,7 @@ netsnmp_udp6_send(netsnmp_transport *t, void *buf, int size, + */ + + netsnmp_transport * +-netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local) ++netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local, char *iface) + { + netsnmp_transport *t = NULL; + int rc = 0; +@@ -223,7 +223,7 @@ netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local) + return NULL; + } + +- _netsnmp_udp_sockopt_set(t->sock, local); ++ _netsnmp_udp_sockopt_set(t->sock, local, iface); + + if (local) { + #ifndef NETSNMP_NO_LISTEN_SUPPORT +@@ -724,12 +724,13 @@ netsnmp_udp6_getSecName(void *opaque, int olength, + + netsnmp_transport * + netsnmp_udp6_create_tstring(const char *str, int local, +- const char *default_target) ++ const char *default_target, ++ char *iface) + { + struct sockaddr_in6 addr; + + if (netsnmp_sockaddr_in6_2(&addr, str, default_target)) { +- return netsnmp_udp6_transport(&addr, local); ++ return netsnmp_udp6_transport(&addr, local, iface); + } else { + return NULL; + } +@@ -746,7 +747,7 @@ netsnmp_udp6_create_tstring(const char *str, int local, + */ + + netsnmp_transport * +-netsnmp_udp6_create_ostring(const u_char * o, size_t o_len, int local) ++netsnmp_udp6_create_ostring(const u_char * o, size_t o_len, int local, char *iface) + { + struct sockaddr_in6 addr; + +@@ -755,7 +756,7 @@ netsnmp_udp6_create_ostring(const u_char * o, size_t o_len, int local) + addr.sin6_family = AF_INET6; + memcpy((u_char *) & (addr.sin6_addr.s6_addr), o, 16); + addr.sin6_port = htons((o[16] << 8) + o[17]); +- return netsnmp_udp6_transport(&addr, local); ++ return netsnmp_udp6_transport(&addr, local, iface); + } + return NULL; + } +diff --git a/snmplib/transports/snmpUnixDomain.c b/snmplib/transports/snmpUnixDomain.c +index 47dffc1..af56c5d 100644 +--- a/snmplib/transports/snmpUnixDomain.c ++++ b/snmplib/transports/snmpUnixDomain.c +@@ -450,7 +450,8 @@ netsnmp_unix_transport(struct sockaddr_un *addr, int local) + + netsnmp_transport * + netsnmp_unix_create_tstring(const char *string, int local, +- const char *default_target) ++ const char *default_target, ++ char *iface) + { + struct sockaddr_un addr; + +@@ -476,7 +477,7 @@ netsnmp_unix_create_tstring(const char *string, int local, + + + netsnmp_transport * +-netsnmp_unix_create_ostring(const u_char * o, size_t o_len, int local) ++netsnmp_unix_create_ostring(const u_char * o, size_t o_len, int local, char *iface) + { + struct sockaddr_un addr; + +-- +2.7.4 + diff --git a/src/snmpd/patch-5.9+dfsg/0008-Enable-macro-DEB_BUILD_ARCH_OS-in-order-to-build-ipv.patch b/src/snmpd/patch-5.9+dfsg/0008-Enable-macro-DEB_BUILD_ARCH_OS-in-order-to-build-ipv.patch new file mode 100644 index 000000000000..29ab551c7a18 --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0008-Enable-macro-DEB_BUILD_ARCH_OS-in-order-to-build-ipv.patch @@ -0,0 +1,22 @@ +From 6e038423d7a3269dbfd85b3d7ada6015479f1559 Mon Sep 17 00:00:00 2001 +From: Qi Luo +Date: Fri, 20 Sep 2019 00:42:19 +0000 +Subject: [PATCH] Enable macro DEB_BUILD_ARCH_OS in order to build ipv6 feature + +--- + debian/rules | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/debian/rules b/debian/rules +index 4c3b5b6..1fab6a4 100755 +--- a/debian/rules ++++ b/debian/rules +@@ -4,4 +4,5 @@ + export DEB_BUILD_MAINT_OPTIONS := hardening=+all + DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) ++DEB_BUILD_ARCH_OS ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS) + + LIB_VERSION = 40 +-- +2.18.0 + diff --git a/src/snmpd/patch-5.9+dfsg/series b/src/snmpd/patch-5.9+dfsg/series new file mode 100644 index 000000000000..cabee4060f9f --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/series @@ -0,0 +1,5 @@ +0001-SNMP-Stop-spamming-logs-with-statfs-permission-denie.patch +#0002-at.c-properly-check-return-status-from-realloc.-Than.patch +#0006-From-Jiri-Cervenka-snmpd-Fixed-agentx-crashing-and-or-freezing-on-timeout.patch +#0007-Linux-VRF-5.7.3-Support.patch +0008-Enable-macro-DEB_BUILD_ARCH_OS-in-order-to-build-ipv.patch From 4e216c10b29f43358fcb2106ae7a2d513ea8a8a4 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Mon, 19 Jul 2021 13:41:32 -0700 Subject: [PATCH 064/186] sonic-frr: Add patch to skip installing png files In the build in Bullseye, there are no png files available in the specified installation source directory. For now, don't bother installing those files. This may end up being reverted later if there are indeed png files that need to be installed for documentation. Signed-off-by: Saikrishna Arcot --- .../patch/0010-remove-doc-png-install.patch | 21 +++++++++++++++++++ src/sonic-frr/patch/series | 1 + 2 files changed, 22 insertions(+) create mode 100644 src/sonic-frr/patch/0010-remove-doc-png-install.patch diff --git a/src/sonic-frr/patch/0010-remove-doc-png-install.patch b/src/sonic-frr/patch/0010-remove-doc-png-install.patch new file mode 100644 index 000000000000..c911d43eaa29 --- /dev/null +++ b/src/sonic-frr/patch/0010-remove-doc-png-install.patch @@ -0,0 +1,21 @@ +Remove the *.png file installation from the frr-doc package. It doesn't look +like it's installed there with Bullseye's tools. + +From: Saikrishna Arcot + +--- + debian/frr-doc.install | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/debian/frr-doc.install b/debian/frr-doc.install +index c48dc5a8d..955c8fc5a 100644 +--- a/debian/frr-doc.install ++++ b/debian/frr-doc.install +@@ -3,7 +3,6 @@ usr/share/doc/frr/html + + # info + images referenced by it + usr/share/info/ +-doc/user/_build/texinfo/*.png usr/share/info + + # other + README.md usr/share/doc/frr diff --git a/src/sonic-frr/patch/series b/src/sonic-frr/patch/series index 2837a79f249a..376b6ce10c7b 100644 --- a/src/sonic-frr/patch/series +++ b/src/sonic-frr/patch/series @@ -7,3 +7,4 @@ 0008-Add-support-of-bgp-l3vni-evpn.patch 0009-Add-bgp-bestpath-peer-type-multipath-relax.patch 0009-Link-local-scope-was-not-set-while-binding-socket-for-bgp-ipv6-link-local-neighbors.patch +0010-remove-doc-png-install.patch From ae0a83b103704abc2669fa247355297ed6f638f0 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Mon, 26 Jul 2021 15:30:03 -0700 Subject: [PATCH 065/186] Build either 5.7.3 or 5.9 on snmp, depending on if it's for Buster or Bullseye Buster repos have snmp 5.7.3, whereas Bullseye has 5.9. We can't install 5.7.3 on Bullseye due to ABI changes (and the main library's package name is libsnmp40 instead of libsnmp30). Also, the containers are still on Buster. Therefore, check to see if we're building for Buster or Bullseye. If it's Buster, have it use 5.7.3. If it's for Bullseye, have it use 5.9. Signed-off-by: Saikrishna Arcot --- rules/snmpd.mk | 13 +++++++++++++ src/snmpd/Makefile | 19 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/rules/snmpd.mk b/rules/snmpd.mk index b04b87eb5596..52be51d1c549 100644 --- a/rules/snmpd.mk +++ b/rules/snmpd.mk @@ -1,7 +1,12 @@ # snmpd package +ifeq ($(BLDENV),bullseye) SNMPD_VERSION = 5.9+dfsg SNMPD_VERSION_FULL = $(SNMPD_VERSION)-3+b1 +else +SNMPD_VERSION = 5.7.3+dfsg +SNMPD_VERSION_FULL = $(SNMPD_VERSION)-5 +endif export SNMPD_VERSION SNMPD_VERSION_FULL @@ -32,11 +37,19 @@ $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(SNMP_DBG))) SNMPD_DBG = snmpd-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(SNMPD_DBG))) +ifeq ($(BLDENV),bullseye) LIBSNMP = libsnmp40_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb +else +LIBSNMP = libsnmp30_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb +endif $(LIBSNMP)_RDEPENDS += $(LIBSNMP_BASE) $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(LIBSNMP))) +ifeq ($(BLDENV),bullseye) LIBSNMP_DBG = libsnmp40-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb +else +LIBSNMP_DBG = libsnmp30-dbg_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb +endif $(LIBSNMP_DBG)_DEPENDS += $(LIBSNMP) $(LIBSNMP_DBG)_RDEPENDS += $(LIBSNMP) $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(LIBSNMP_DBG))) diff --git a/src/snmpd/Makefile b/src/snmpd/Makefile index 297450b4db01..35fc1d38ce9f 100644 --- a/src/snmpd/Makefile +++ b/src/snmpd/Makefile @@ -3,6 +3,7 @@ SHELL = /bin/bash .SHELLFLAGS += -e MAIN_TARGET = libsnmp-base_$(SNMPD_VERSION_FULL)_all.deb +ifneq (,$(findstring 5.9,$(SNMPD_VERSION))) DERIVED_TARGETS = snmptrapd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ snmp_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ snmpd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ @@ -13,18 +14,35 @@ DERIVED_TARGETS = snmptrapd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ libsnmp-dev_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ libsnmp-perl_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ tkmib_$(SNMPD_VERSION_FULL)_all.deb +else +DERIVED_TARGETS = snmptrapd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + snmp_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + snmpd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + snmp-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + snmpd-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libsnmp30_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libsnmp30-dbg_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libsnmp-dev_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libsnmp-perl_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + tkmib_$(SNMPD_VERSION_FULL)_all.deb +endif $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : rm -rf net-snmp-$(SNMPD_VERSION) # download debian net-snmp +ifneq (,$(findstring 5.9,$(SNMPD_VERSION))) dget -u https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_$(SNMPD_VERSION)-3.dsc +else + dget -u https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_$(SNMPD_VERSION_FULL).dsc +endif pushd net-snmp-$(SNMPD_VERSION) git init git add -f * git commit -m "unmodified snmpd source" +ifneq (,$(findstring 5.9,$(SNMPD_VERSION))) # Looks like Debian did a binNMU (binary non-maintainer upload), so the latest dsc # file that we can get doesn't actually have the exact version number that Debian's # repos have. @@ -32,6 +50,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : dch -r "" git add debian/changelog git commit -m "fix package version" +endif # Apply patches stg init From d6b3644dbefeb6393139959aecc7fdd6f5835246 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Mon, 26 Jul 2021 15:42:05 -0700 Subject: [PATCH 066/186] Temporary disable building kdump-tools for the base image Signed-off-by: Saikrishna Arcot --- slave.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/slave.mk b/slave.mk index 34253374079c..b101a43ca13f 100644 --- a/slave.mk +++ b/slave.mk @@ -914,7 +914,6 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ $(LINUX_KERNEL) \ $(SONIC_DEVICE_DATA) \ $(IFUPDOWN2) \ - $(KDUMP_TOOLS) \ $(NTP) \ $(LIBPAM_RADIUS) \ $(LIBNSS_RADIUS) \ From 830a783bdeb7b635dd92074e92c76417e5117101 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Fri, 30 Jul 2021 09:04:37 -0700 Subject: [PATCH 067/186] Add Bullseye slave docker files to list of common cache files Signed-off-by: Saikrishna Arcot --- Makefile.cache | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile.cache b/Makefile.cache index 4037222ffc93..cfea8afcf1bf 100644 --- a/Makefile.cache +++ b/Makefile.cache @@ -74,7 +74,8 @@ SONIC_COMMON_DPKG_LIST := debian/control debian/changelog debian/rules \ debian/compat debian/install debian/copyright SONIC_COMMON_BASE_FILES_LIST := sonic-slave-jessie/Dockerfile.j2 sonic-slave-jessie/Dockerfile.user.j2 \ sonic-slave-stretch/Dockerfile.j2 sonic-slave-stretch/Dockerfile.user.j2 \ - sonic-slave-buster/Dockerfile.j2 sonic-slave-buster/Dockerfile.user.j2 + sonic-slave-buster/Dockerfile.j2 sonic-slave-buster/Dockerfile.user.j2 \ + sonic-slave-bullseye/Dockerfile.j2 sonic-slave-bullseye/Dockerfile.user.j2 From 4d0855ac3df9205626abda6d42a43d7b18890bc9 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Tue, 3 Aug 2021 14:27:35 -0700 Subject: [PATCH 068/186] Get packages for the base image from the main repos instead of our mirror There appears to be some network issue in the pipeline builds when downloading packages from our mirror. Change the source to be from the main debian repos to try to get around this issue. Signed-off-by: Saikrishna Arcot --- files/apt/sources.list.amd64 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/files/apt/sources.list.amd64 b/files/apt/sources.list.amd64 index 108bf0dd5977..04a2b143532d 100644 --- a/files/apt/sources.list.amd64 +++ b/files/apt/sources.list.amd64 @@ -1,8 +1,10 @@ ## Debian mirror on Microsoft Azure ## Ref: http://debian-archive.trafficmanager.net/ -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free -deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free +deb [arch=amd64] http://deb.debian.org/debian/ bullseye main contrib non-free +deb-src [arch=amd64] http://deb.debian.org/debian/ bullseye main contrib non-free +#deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free +#deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free #deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye/updates main contrib non-free #deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye/updates main contrib non-free #deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye-backports main contrib non-free From 323b611071e8c850dd93c02b7fe748cc63086ba4 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Wed, 4 Aug 2021 13:08:49 -0700 Subject: [PATCH 069/186] Temporarily disable broadcom and mellanox builds Signed-off-by: Saikrishna Arcot --- azure-pipelines.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index ce2bb17e2ceb..aa52f77fff15 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -44,10 +44,6 @@ stages: buildOptions: 'USERNAME=admin SONIC_BUILD_JOBS=$(nproc) ${{ variables.VERSION_CONTROL_OPTIONS }}' jobGroups: - name: vs - - name: broadcom - variables: - swi_image: yes - - name: mellanox - stage: Test variables: From 8c0e059824bc28dfb5d37dcf9a777b6057073aa1 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Mon, 16 Aug 2021 08:49:43 -0700 Subject: [PATCH 070/186] Upgrade to ntp 4.2.8p15 for Bullseye Signed-off-by: Saikrishna Arcot --- build_debian.sh | 3 ++- rules/ntp.mk | 4 ++-- src/ntp/Makefile | 6 +++--- src/ntp/patch/changelog | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/build_debian.sh b/build_debian.sh index d9c58939e0c7..97eeff31861a 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -350,7 +350,8 @@ sudo LANG=C chroot $FILESYSTEM_ROOT bash -c "find /usr/share/i18n/locales/ ! -na sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install \ picocom \ systemd \ - systemd-sysv + systemd-sysv \ + ntp if [[ $CONFIGURED_ARCH == amd64 ]]; then sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y download \ diff --git a/rules/ntp.mk b/rules/ntp.mk index 13cbb495f78f..52e7db516138 100644 --- a/rules/ntp.mk +++ b/rules/ntp.mk @@ -1,9 +1,9 @@ # ntp package -NTP_VERSION = 4.2.8p12+dfsg +NTP_VERSION = 4.2.8p15+dfsg export NTP_VERSION -NTP = ntp_$(NTP_VERSION)-4+deb10u2_$(CONFIGURED_ARCH).deb +NTP = ntp_$(NTP_VERSION)-1+deb10u2_$(CONFIGURED_ARCH).deb $(NTP)_SRC_PATH = $(SRC_PATH)/ntp SONIC_MAKE_DEBS += $(NTP) SONIC_STRETCH_DEBS += $(NTP) diff --git a/src/ntp/Makefile b/src/ntp/Makefile index 6d96010be156..0a821ad6ca52 100644 --- a/src/ntp/Makefile +++ b/src/ntp/Makefile @@ -10,15 +10,15 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : # Get ntp release, debian files wget http://deb.debian.org/debian/pool/main/n/ntp/ntp_$(NTP_VERSION).orig.tar.xz - wget http://deb.debian.org/debian/pool/main/n/ntp/ntp_$(NTP_VERSION)-4.debian.tar.xz + wget http://deb.debian.org/debian/pool/main/n/ntp/ntp_$(NTP_VERSION)-1.debian.tar.xz # UnTar ntp release xzcat ntp_$(NTP_VERSION).orig.tar.xz | tar -xvf - - pushd ./ntp-4.2.8p12 + pushd ./ntp-4.2.8p15 # UnTar debian files - xzcat ../ntp_$(NTP_VERSION)-4.debian.tar.xz | tar -xvf - + xzcat ../ntp_$(NTP_VERSION)-1.debian.tar.xz | tar -xvf - # Add the additional patch cp ../patch/bug1970-UNLINK_EXPR_SLIST_empty_list.patch debian/patches/ diff --git a/src/ntp/patch/changelog b/src/ntp/patch/changelog index 8fa477cca266..ce5fb6096276 100644 --- a/src/ntp/patch/changelog +++ b/src/ntp/patch/changelog @@ -1,10 +1,10 @@ -ntp (1:4.2.8p12+dfsg-4+deb10u2) stretch; urgency=medium +ntp (1:4.2.8p15+dfsg-1+deb10u2) bullseye; urgency=medium * Adjust the ENOBUFS syslog level on the Netlink routing to LOG_WARNING. -- Arun Barboza Mon, 09 Sep 2019 10:15:35 -0700 -ntp (1:4.2.8p12+dfsg-4+deb10u1) stretch; urgency=medium +ntp (1:4.2.8p15+dfsg-1+deb10u1) bullseye; urgency=medium * Apply Bug1970 fix for UNLINK_EXPR_SLIST_empty_list from dev branch. From ca713e2fad73c436a4beef5470be7d24185a5bba Mon Sep 17 00:00:00 2001 From: Dror Prital <76714716+dprital@users.noreply.github.com> Date: Tue, 17 Aug 2021 11:57:24 +0300 Subject: [PATCH 071/186] [Mellanox] Update SDK\FW to version 4.4.3320\2008.3324 (#8487) Update SDK\FW version to 4.4.3320\2008.3324. This version contains: New Features: * Add support for Fast Boot for SN3800 Bug Fixing: * In some cases, when the total number of allocations exceeds the resource limit, an error can occur due to incorrect resource release procedure. This issue is most likely to affect the following resources: flow counters, ACL actions, PBS, WJH filter, Tunnels, ECMP containers, MC (L2 &L3) * On Spectrum systems, when using Async Router API with IPV6, an error message in the log regarding failing to remove ECMP container may show up. This error is not functional and can be safely ignored. * On Spectrum-2 systems and above, when using warm boot, setting max_bridge_num to a value greater than 1968 will cause an error and potential crash. * Some Molex cables do not support speed after reboot Signed-off-by: Dror Prital --- platform/mellanox/fw.mk | 6 +++--- platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers | 2 +- platform/mellanox/sdk.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/platform/mellanox/fw.mk b/platform/mellanox/fw.mk index 0b8768b4755f..ceddc9f06470 100644 --- a/platform/mellanox/fw.mk +++ b/platform/mellanox/fw.mk @@ -11,17 +11,17 @@ else FW_FROM_URL = n endif -MLNX_SPC_FW_VERSION = 13.2008.3224 +MLNX_SPC_FW_VERSION = 13.2008.3324 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.2008.3224 +MLNX_SPC2_FW_VERSION = 29.2008.3324 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.2008.3224 +MLNX_SPC3_FW_VERSION = 30.2008.3324 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) diff --git a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers b/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers index 3a0e3a26de2e..9109a4623684 160000 --- a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers +++ b/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers @@ -1 +1 @@ -Subproject commit 3a0e3a26de2e1384b7ed216dc4cd842b36655e27 +Subproject commit 9109a46236846c06c91c4a76e71ca96edef11c3a diff --git a/platform/mellanox/sdk.mk b/platform/mellanox/sdk.mk index 67f8ab3fced9..4e00a54ca78e 100644 --- a/platform/mellanox/sdk.mk +++ b/platform/mellanox/sdk.mk @@ -1,6 +1,6 @@ MLNX_SDK_BASE_PATH = $(PLATFORM_PATH)/sdk-src/sx-kernel/Switch-SDK-drivers/bin/ MLNX_SDK_PKG_BASE_PATH = $(MLNX_SDK_BASE_PATH)/$(BLDENV)/ -MLNX_SDK_VERSION = 4.4.3222 +MLNX_SDK_VERSION = 4.4.3320 MLNX_SDK_ISSU_VERSION = 101 MLNX_SDK_DEB_VERSION = $(subst -,.,$(subst _,.,$(MLNX_SDK_VERSION))) From c64b08fb9dab6bed82747702503a0c9510b8a6de Mon Sep 17 00:00:00 2001 From: Christian Svensson Date: Tue, 17 Aug 2021 19:11:16 +0200 Subject: [PATCH 072/186] [cel seastone 2] Add 10G SFP1 front port (#8267) Why I did it The SFP1 port was disabled in the default configuration. How I did it This commit enables the 10G front port for usage. This was done using a DX030 together with an Arista switch using bcmsh and phy diag xe0 dsc to figure out what lane mappings make sense. Validated on Celestica Seastone2 DX030. How to verify it Own a Celestica DX030 Connect the front SFP1 port to something. It works :-) You can do tcpdump -i Ethernet128 -n and you will see both incoming and outgoing LLDP. --- .../Seastone_2/port_config.ini | 3 ++- .../Seastone_2/td3-seastone_2-32x100G.config.bcm | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini index ed6bcff2331c..1596faa8af96 100644 --- a/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini +++ b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini @@ -30,4 +30,5 @@ Ethernet108 109,110,111,112 QSFP28 rs 28 100000 Ethernet112 113,114,115,116 QSFP29 rs 29 100000 Ethernet116 117,118,119,120 QSFP30 rs 30 100000 Ethernet120 121,122,123,124 QSFP31 rs 31 100000 -Ethernet124 125,126,127,128 QSFP32 rs 32 100000 \ No newline at end of file +Ethernet124 125,126,127,128 QSFP32 rs 32 100000 +Ethernet128 129 SFP1 none 33 10000 diff --git a/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/td3-seastone_2-32x100G.config.bcm b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/td3-seastone_2-32x100G.config.bcm index 62bcdbc58840..a7ee4a93ea04 100644 --- a/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/td3-seastone_2-32x100G.config.bcm +++ b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/td3-seastone_2-32x100G.config.bcm @@ -18,7 +18,7 @@ serdes_lane_config_dfe=on #serdes_fec_enable=1 serdes_if_type_ce=14 pbmp_gport_stack.0=0x0000000000000000000000000000000000000000000000000000000000000000 -pbmp_xport_xe=0x88888888888888882222222222222222 +pbmp_xport_xe=0x888888888888888c2222222222222222 ptp_ts_pll_fref=50000000 ptp_bs_fref_0=50000000 @@ -40,6 +40,7 @@ portmap_49.0=49:100 portmap_53.0=53:100 portmap_57.0=57:100 portmap_61.0=61:100 + portmap_67.0=65:100 portmap_71.0=69:100 portmap_75.0=73:100 @@ -56,7 +57,7 @@ portmap_115.0=113:100 portmap_119.0=117:100 portmap_123.0=121:100 portmap_127.0=125:100 -#portmap_66.0=129:10:m +portmap_66.0=129:10:m #portmap_130.0=128:10:m #wc0 lane swap @@ -189,7 +190,7 @@ phy_chain_rx_lane_map_physical{125.0}=0x3210 #MC lane swap phy_chain_tx_lane_map_physical{129.0}=0x3210 -phy_chain_rx_lane_map_physical{129.0}=0x3210 +phy_chain_rx_lane_map_physical{129.0}=0x0231 #wc0 P/N flip @@ -513,7 +514,7 @@ phy_chain_tx_polarity_flip_physical{128.0}=0x0 phy_chain_rx_polarity_flip_physical{128.0}=0x0 #MC P/N flip -phy_chain_tx_polarity_flip_physical{129.0}=0x0 +phy_chain_tx_polarity_flip_physical{129.0}=0x1 phy_chain_rx_polarity_flip_physical{129.0}=0x0 phy_chain_tx_polarity_flip_physical{130.0}=0x0 phy_chain_rx_polarity_flip_physical{130.0}=0x0 @@ -554,7 +555,7 @@ dport_map_port_115=29 dport_map_port_119=30 dport_map_port_123=31 dport_map_port_127=32 -#dport_map_port_66=33 +dport_map_port_66=33 #dport_map_port_130=34 # configuration for 100G optical module From a675493a5aac669a01362c90cfceeefa1f676147 Mon Sep 17 00:00:00 2001 From: "Marty Y. Lok" <76118573+mlok-nokia@users.noreply.github.com> Date: Tue, 17 Aug 2021 15:26:04 -0400 Subject: [PATCH 073/186] Added Nokia IXR7250E support (#7809) Why I did it Support Nokia ixr7250E IMM and Supervisor cards How I did it Added modules x86_64-nokia_ixr7250e_sup-r0 and x86_64-nokia_ixr7250e_36x400g-r0 ../device/nokia directory. Modified the platform/broadcom/one-image.mk to include NOKIA_IXR7250_PLATFORM_MODULE Modified the platform/broadcom/rule.mk to include the platform-module-nokia.mk --- .gitmodules | 3 + .../0/context_config.json | 21 ++ .../Nokia-IXR7250E-36x400G/0/port_config.ini | 20 ++ .../Nokia-IXR7250E-36x400G/0/sai.profile | 1 + .../1/context_config.json | 21 ++ .../Nokia-IXR7250E-36x400G/1/port_config.ini | 20 ++ .../Nokia-IXR7250E-36x400G/1/sai.profile | 1 + .../asic.conf | 3 + .../chassisdb.conf | 1 + .../default_sku | 1 + .../installer.conf | 4 + .../pcie.yaml | 220 +++++++++++++++ .../platform.json | 161 +++++++++++ .../platform_env.conf | 3 + .../platform_ndk.json | 32 +++ .../platform_reboot | 9 + .../plugins/__init__.py | 0 .../plugins/led_control.py | 17 ++ .../pmon_daemon_control.json | 3 + .../system_health_monitoring_config.json | 15 ++ .../thermal_policy.json | 28 ++ .../0/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/0/sai.profile | 3 + .../1/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/1/sai.profile | 3 + .../10/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/10/sai.profile | 3 + .../11/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/11/sai.profile | 3 + .../12/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/12/sai.profile | 3 + .../13/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/13/sai.profile | 3 + .../14/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/14/sai.profile | 3 + .../15/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/15/sai.profile | 3 + .../2/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/2/sai.profile | 3 + .../3/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/3/sai.profile | 3 + .../4/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/4/sai.profile | 3 + .../5/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/5/sai.profile | 3 + .../6/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/6/sai.profile | 3 + .../7/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/7/sai.profile | 3 + .../8/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/8/sai.profile | 4 + .../9/context_config.json | 21 ++ .../Nokia-IXR7250E-SUP-10/9/sai.profile | 3 + .../Nokia-IXR7250E-SUP-10/platform.json | 252 ++++++++++++++++++ .../x86_64-nokia_ixr7250e_sup-r0/asic.conf | 18 ++ .../chassisdb.conf | 4 + .../x86_64-nokia_ixr7250e_sup-r0/default_sku | 1 + .../installer.conf | 4 + .../x86_64-nokia_ixr7250e_sup-r0/pcie.yaml | 210 +++++++++++++++ .../platform_env.conf | 4 + .../platform_ndk.json | 24 ++ .../platform_reboot | 9 + .../plugins/__init__.py | 0 .../pmon_daemon_control.json | 4 + .../system_health_monitoring_config.json | 13 + .../thermal_policy.json | 63 +++++ platform/broadcom/one-image.mk | 3 +- platform/broadcom/platform-modules-nokia.dep | 10 + platform/broadcom/platform-modules-nokia.mk | 14 + platform/broadcom/rules.mk | 1 + .../broadcom/sonic-platform-modules-nokia | 1 + 71 files changed, 1603 insertions(+), 1 deletion(-) create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/port_config.ini create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/port_config.ini create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/asic.conf create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/chassisdb.conf create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/default_sku create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/installer.conf create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pcie.yaml create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_env.conf create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_ndk.json create mode 100755 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/__init__.py create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/led_control.py create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pmon_daemon_control.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/system_health_monitoring_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/thermal_policy.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/context_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/sai.profile create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/platform.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/asic.conf create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/chassisdb.conf create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/default_sku create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/installer.conf create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/pcie.yaml create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_env.conf create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_ndk.json create mode 100755 device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/plugins/__init__.py create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/pmon_daemon_control.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/system_health_monitoring_config.json create mode 100644 device/nokia/x86_64-nokia_ixr7250e_sup-r0/thermal_policy.json create mode 100644 platform/broadcom/platform-modules-nokia.dep create mode 100644 platform/broadcom/platform-modules-nokia.mk create mode 160000 platform/broadcom/sonic-platform-modules-nokia diff --git a/.gitmodules b/.gitmodules index f1c3b9e4fc36..357498ff1c54 100644 --- a/.gitmodules +++ b/.gitmodules @@ -91,3 +91,6 @@ path = platform/broadcom/saibcm-modules-dnx url = https://github.com/Azure/saibcm-modules.git branch = sdk-6.5.22-gpl-dnx +[submodule "platform/broadcom/sonic-platform-modules-nokia"] + path = platform/broadcom/sonic-platform-modules-nokia + url = https://github.com/nokia/sonic-platform.git diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/context_config.json new file mode 100644 index 000000000000..5a8e83c7c92e --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd0", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "06:00.0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/port_config.ini b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/port_config.ini new file mode 100644 index 000000000000..c05fc0a12dd2 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/port_config.ini @@ -0,0 +1,20 @@ +# name lanes alias index asic_port_name role speed coreid coreportid numvoq +Ethernet0 72,73,74,75,76,77,78,79 Ethernet0 1 Eth0-ASIC0 Ext 400000 1 0 8 +Ethernet1 80,81,82,83,84,85,86,87 Ethernet1 2 Eth1-ASIC0 Ext 400000 1 1 8 +Ethernet2 88,89,90,91,92,93,94,95 Ethernet2 3 Eth2-ASIC0 Ext 400000 1 2 8 +Ethernet3 96,97,98,99,100,101,102,103 Ethernet3 4 Eth3-ASIC0 Ext 400000 1 3 8 +Ethernet4 104,105,106,107,108,109,110,111 Ethernet4 5 Eth4-ASIC0 Ext 400000 1 4 8 +Ethernet5 112,113,114,115,116,117,118,119 Ethernet5 6 Eth5-ASIC0 Ext 400000 1 5 8 +Ethernet6 120,121,122,123,124,125,126,127 Ethernet6 7 Eth6-ASIC0 Ext 400000 1 6 8 +Ethernet7 128,129,130,131,132,133,134,135 Ethernet7 8 Eth7-ASIC0 Ext 400000 1 7 8 +Ethernet8 136,137,138,139,140,141,142,143 Ethernet8 9 Eth8-ASIC0 Ext 400000 1 8 8 +Ethernet9 64,65,66,67,68,69,70,71 Ethernet9 10 Eth9-ASIC0 Ext 400000 0 1 8 +Ethernet10 56,57,58,59,60,61,62,63 Ethernet10 11 Eth10-ASIC0 Ext 400000 0 2 8 +Ethernet11 48,49,50,51,52,53,54,55 Ethernet11 12 Eth11-ASIC0 Ext 400000 0 3 8 +Ethernet12 40,41,42,43,44,45,46,47 Ethernet12 13 Eth12-ASIC0 Ext 400000 0 4 8 +Ethernet13 32,33,34,35,36,37,38,39 Ethernet13 14 Eth13-ASIC0 Ext 400000 0 5 8 +Ethernet14 24,25,26,27,28,29,30,31 Ethernet14 15 Eth14-ASIC0 Ext 400000 0 6 8 +Ethernet15 16,17,18,19,20,21,22,23 Ethernet15 16 Eth15-ASIC0 Ext 400000 0 7 8 +Ethernet16 8,9,10,11,12,13,14,15 Ethernet16 17 Eth16-ASIC0 Ext 400000 0 8 8 +Ethernet17 0,1,2,3,4,5,6,7 Ethernet17 18 Eth17-ASIC0 Ext 400000 0 9 8 +Ethernet-IB0 115 Ethernet-IB0 37 Rcy-ASIC0 Int 10000 0 10 8 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/sai.profile new file mode 100644 index 000000000000..c75b59a02b6d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/jr2cp-nokia-18x400g-config.bcm diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/context_config.json new file mode 100644 index 000000000000..5caa2e8eef88 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd1", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 1, + "hwinfo" : "07:00.0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/port_config.ini b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/port_config.ini new file mode 100644 index 000000000000..9f043d832eda --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/port_config.ini @@ -0,0 +1,20 @@ +# name lanes alias index asic_port_name role speed coreid coreportid numvoq +Ethernet18 72,73,74,75,76,77,78,79 Ethernet18 19 Eth0-ASIC1 Ext 400000 1 0 8 +Ethernet19 80,81,82,83,84,85,86,87 Ethernet19 20 Eth1-ASIC1 Ext 400000 1 1 8 +Ethernet20 88,89,90,91,92,93,94,95 Ethernet20 21 Eth2-ASIC1 Ext 400000 1 2 8 +Ethernet21 96,97,98,99,100,101,102,103 Ethernet21 22 Eth3-ASIC1 Ext 400000 1 3 8 +Ethernet22 104,105,106,107,108,109,110,111 Ethernet22 23 Eth4-ASIC1 Ext 400000 1 4 8 +Ethernet23 112,113,114,115,116,117,118,119 Ethernet23 24 Eth5-ASIC1 Ext 400000 1 5 8 +Ethernet24 120,121,122,123,124,125,126,127 Ethernet24 25 Eth6-ASIC1 Ext 400000 1 6 8 +Ethernet25 128,129,130,131,132,133,134,135 Ethernet25 26 Eth7-ASIC1 Ext 400000 1 7 8 +Ethernet26 136,137,138,139,140,141,142,143 Ethernet26 27 Eth8-ASIC1 Ext 400000 1 8 8 +Ethernet27 64,65,66,67,68,69,70,71 Ethernet27 28 Eth9-ASIC1 Ext 400000 0 1 8 +Ethernet28 56,57,58,59,60,61,62,63 Ethernet28 29 Eth10-ASIC1 Ext 400000 0 2 8 +Ethernet29 48,49,50,51,52,53,54,55 Ethernet29 30 Eth11-ASIC1 Ext 400000 0 3 8 +Ethernet30 40,41,42,43,44,45,46,47 Ethernet30 31 Eth12-ASIC1 Ext 400000 0 4 8 +Ethernet31 32,33,34,35,36,37,38,39 Ethernet31 32 Eth13-ASIC1 Ext 400000 0 5 8 +Ethernet32 24,25,26,27,28,29,30,31 Ethernet32 33 Eth14-ASIC1 Ext 400000 0 6 8 +Ethernet33 16,17,18,19,20,21,22,23 Ethernet33 34 Eth15-ASIC1 Ext 400000 0 7 8 +Ethernet34 8,9,10,11,12,13,14,15 Ethernet34 35 Eth16-ASIC1 Ext 400000 0 8 8 +Ethernet35 0,1,2,3,4,5,6,7 Ethernet35 36 Eth17-ASIC1 Ext 400000 0 9 8 +Ethernet-IB1 115 Ethernet-IB1 38 Rcy-ASIC1 Int 10000 0 10 8 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/sai.profile new file mode 100644 index 000000000000..c75b59a02b6d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/jr2cp-nokia-18x400g-config.bcm diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/asic.conf b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/asic.conf new file mode 100644 index 000000000000..3e123ed50a13 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/asic.conf @@ -0,0 +1,3 @@ +NUM_ASIC=2 +DEV_ID_ASIC_0=06:00.0 +DEV_ID_ASIC_1=07:00.0 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/chassisdb.conf b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/chassisdb.conf new file mode 100644 index 000000000000..cb602c6eb4d8 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/chassisdb.conf @@ -0,0 +1 @@ +chassis_db_address=10.0.5.16 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/default_sku b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/default_sku new file mode 100644 index 000000000000..7aba1887899d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/default_sku @@ -0,0 +1 @@ +Nokia-IXR7250E-36x400G empty diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/installer.conf b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/installer.conf new file mode 100644 index 000000000000..7580ad94c4cf --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/installer.conf @@ -0,0 +1,4 @@ +CONSOLE_PORT=0x3f8 +CONSOLE_DEV=0 +CONSOLE_SPEED=115200 +ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="amd_iommu=off pci=resource_alignment=48@00:03.1" diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pcie.yaml b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pcie.yaml new file mode 100644 index 000000000000..2c8257a4872f --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pcie.yaml @@ -0,0 +1,220 @@ +- 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: '1' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '01' + fn: '2' + 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: '03' + fn: '1' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP 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: '157b' + name: 'Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)' +- bus: '02' + dev: '00' + fn: '0' + id: '2001' + name: 'Unassigned class [ff00]: Alcatel Device 2001' +- bus: '03' + dev: '00' + fn: '0' + id: '8562' + name: 'PCI bridge: PMC-Sierra Inc. Device 8562' +- bus: '03' + dev: '00' + fn: '1' + id: '8562' + name: 'Memory controller: PMC-Sierra Inc. Device 8562' +- bus: '04' + dev: '00' + fn: '0' + id: '8562' + name: 'PCI bridge: PMC-Sierra Inc. Device 8562' +- bus: '04' + dev: '01' + fn: '0' + id: '8562' + name: 'PCI bridge: PMC-Sierra Inc. Device 8562' +- bus: '04' + dev: '02' + fn: '0' + id: '8562' + name: 'PCI bridge: PMC-Sierra Inc. Device 8562' +- bus: '04' + dev: '03' + fn: '0' + id: '8562' + name: 'PCI bridge: PMC-Sierra Inc. Device 8562' +- bus: '05' + dev: '00' + fn: '0' + id: '001a' + name: 'Unassigned class [ff00]: Alcatel Device 001a (rev 35)' +- bus: '06' + dev: '00' + fn: '0' + id: '8850' + name: 'Ethernet controller: Broadcom Limited Device 8850 (rev 01)' +- bus: '07' + dev: '00' + fn: '0' + id: '8850' + name: 'Ethernet controller: Broadcom Limited Device 8850 (rev 01)' +- bus: '08' + dev: '00' + fn: '0' + id: '7028' + name: 'Memory controller: Xilinx Corporation Device 7028' +- bus: '09' + dev: '00' + fn: '0' + id: '145a' + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Raven/Raven2 PCIe Dummy Function' +- bus: '09' + dev: '00' + fn: '2' + id: '1456' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Platform Security Processor' +- bus: '09' + dev: '00' + fn: '3' + id: '145f' + name: 'USB controller: Advanced Micro Devices, Inc. [AMD] Zeppelin USB 3.0 Host controller' +- bus: '0a' + dev: '00' + fn: '0' + id: '1455' + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Renoir PCIe Dummy Function' +- bus: '0a' + dev: '00' + fn: '1' + id: '1468' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Zeppelin Cryptographic Coprocessor NTBCCP' +- bus: '0a' + dev: '00' + fn: '2' + id: '7901' + name: 'SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)' +- bus: '0a' + dev: '00' + fn: '3' + id: '1457' + name: 'Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller' +- bus: '0a' + dev: '00' + fn: '4' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1458' +- bus: '0a' + dev: '00' + fn: '5' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1458' diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform.json new file mode 100644 index 000000000000..ad911fb609b0 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform.json @@ -0,0 +1,161 @@ +{ + "chassis": { + "name": "Nokia-IXR7250E-36x400G", + "components": [ + { + "name": "BIOS" + }, + { + "name": "FPGA1" + }, + { + "name": "FPGA2" + } + ], + + "fans": [], + "fan_drawers": [], + "master_psu_led_color": [], + "psus": [], + "thermals": [ + { + "name": "temp_1(fan)" + }, + { + "name": "temp_2(fan)" + }, + { + "name": "temp_3" + }, + { + "name": "temp_4" + }, + { + "name": "temp_5" + }, + { + "name": "temp_6" + }, + { + "name": "temp_7" + }, + { + "name": "temp_8" + }, + { + "name": "temp_9" + } + ], + "sfps": [ + { + "name": "QSFPDD_1" + }, + { + "name": "QSFPDD_2" + }, + { + "name": "QSFPDD_3" + }, + { + "name": "QSFPDD_4" + }, + { + "name": "QSFPDD_5" + }, + { + "name": "QSFPDD_6" + }, + { + "name": "QSFPDD_7" + }, + { + "name": "QSFPDD_8" + }, + { + "name": "QSFPDD_9" + }, + { + "name": "QSFPDD_10" + }, + { + "name": "QSFPDD_11" + }, + { + "name": "QSFPDD_12" + }, + { + "name": "QSFPDD_13" + }, + { + "name": "QSFPDD_14" + }, + { + "name": "QSFPDD_15" + }, + { + "name": "QSFPDD_16" + }, + { + "name": "QSFPDD_17" + }, + { + "name": "QSFPDD_18" + }, + { + "name": "QSFPDD_19" + }, + { + "name": "QSFPDD_20" + }, + { + "name": "QSFPDD_21" + }, + { + "name": "QSFPDD_22" + }, + { + "name": "QSFPDD_23" + }, + { + "name": "QSFPDD_24" + }, + { + "name": "QSFPDD_25" + }, + { + "name": "QSFPDD_26" + }, + { + "name": "QSFPDD_27" + }, + { + "name": "QSFPDD_28" + }, + { + "name": "QSFPDD_29" + }, + { + "name": "QSFPDD_30" + }, + { + "name": "QSFPDD_31" + }, + { + "name": "QSFPDD_32" + }, + { + "name": "QSFPDD_33" + }, + { + "name": "QSFPDD_34" + }, + { + "name": "QSFPDD_35" + }, + { + "name": "QSFPDD_36" + } + ] + }, + "interfaces": {} +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_env.conf b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_env.conf new file mode 100644 index 000000000000..45697fe72fc1 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_env.conf @@ -0,0 +1,3 @@ +usemsi=1 +dmasize=512M +default_mtu=9100 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_ndk.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_ndk.json new file mode 100644 index 000000000000..92a206bb490b --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_ndk.json @@ -0,0 +1,32 @@ +{ + "options": [ + { + "key": "sfp_init_tx_en", + "stringval": "yes" + }, + { + "key": "midplane_subnet", + "stringval": "10.0.5.0" + }, + { + "key": "midplane_monitor", + "stringval": "yes" + }, + { + "key": "monitor_action", + "stringval": "reboot" + }, + { + "key": "grpc_thermal_monitor", + "stringval": "yes" + }, + { + "key": "disable_vfio", + "intval": 1 + }, + { + "key": "sonic_bdb_mode", + "intval": 0 + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot new file mode 100755 index 000000000000..65cba5185eb1 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot @@ -0,0 +1,9 @@ +#!/bin/bash + +systemctl stop nokia-watchdog.service +sleep 2 +echo "w" > /dev/watchdog +kick_date=`date -u` +echo "last watchdog kick $kick_date" > /var/log/nokia-watchdog-last.log +sync +/sbin/reboot diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/__init__.py b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/led_control.py b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/led_control.py new file mode 100644 index 000000000000..58c8c0893272 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/led_control.py @@ -0,0 +1,17 @@ +# +# Name: led_control.py, version: 1.0 +# +# Description: Module contains the Nokia specific LED control +# class object creation. +# +# Copyright (c) 2019, Nokia +# All rights reserved. +# + +try: + from platform_ndk import nokia_led_mgmt + +except ImportError as e: + raise ImportError("%s - required module not found" % e) + +LedControl = nokia_led_mgmt.getLedControl() diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pmon_daemon_control.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pmon_daemon_control.json new file mode 100644 index 000000000000..74ade4eb97a7 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pmon_daemon_control.json @@ -0,0 +1,3 @@ +{ + "skip_psud": true +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/system_health_monitoring_config.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..57006d67ecf5 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/system_health_monitoring_config.json @@ -0,0 +1,15 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": [ + "asic", + "fan", + "psu" + ], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "red", + "normal": "green", + "booting": "amber" + } +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/thermal_policy.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/thermal_policy.json new file mode 100644 index 000000000000..8536b369aa7d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/thermal_policy.json @@ -0,0 +1,28 @@ +{ + "thermal_control_algorithm": { + "run_at_boot_up": "false" + }, + "info_types": [ + { + "type": "thermal_info" + }, + { + "type": "chassis_info" + } + ], + "policies": [ + { + "name": "pusblish thermal to platform", + "conditions": [ + { + "type": "thermal.chassis.collect" + } + ], + "actions": [ + { + "type": "thermal.platform.publish" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/context_config.json new file mode 100644 index 000000000000..2845886a6760 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd0", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:1:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/sai.profile new file mode 100644 index 000000000000..dbc60e3ef133 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-1-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/context_config.json new file mode 100644 index 000000000000..899c4e4c1524 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd1", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:1:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/sai.profile new file mode 100644 index 000000000000..05a77cb79cc7 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-1-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/context_config.json new file mode 100644 index 000000000000..ccaed3ae8666 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd10", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:6:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/sai.profile new file mode 100644 index 000000000000..e8dd14d895a5 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-6-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/context_config.json new file mode 100644 index 000000000000..f1caf87569c0 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd11", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:6:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/sai.profile new file mode 100644 index 000000000000..5c7864acd28d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-6-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/context_config.json new file mode 100644 index 000000000000..04893d944a39 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd12", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:7:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/sai.profile new file mode 100644 index 000000000000..7e9833014a26 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-7-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/context_config.json new file mode 100644 index 000000000000..9ff440ee08a4 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd13", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:7:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/sai.profile new file mode 100644 index 000000000000..4267d04184fa --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-7-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/context_config.json new file mode 100644 index 000000000000..436f0ce557da --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd14", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:8:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/sai.profile new file mode 100644 index 000000000000..3c5e8f1304ed --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-8-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/context_config.json new file mode 100644 index 000000000000..b279ea8e6da2 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd15", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:8:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/sai.profile new file mode 100644 index 000000000000..ee44f77cd6f0 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-8-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/context_config.json new file mode 100644 index 000000000000..a134bc076c79 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd2", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:2:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/sai.profile new file mode 100644 index 000000000000..8abeb9043e4b --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-2-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/context_config.json new file mode 100644 index 000000000000..6abdd85fd275 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd3", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:2:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/sai.profile new file mode 100644 index 000000000000..b2c7ec1ada38 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-2-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/context_config.json new file mode 100644 index 000000000000..14526c17d086 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd4", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:3:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/sai.profile new file mode 100644 index 000000000000..5bbb453aa484 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-3-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/context_config.json new file mode 100644 index 000000000000..7877cf627e23 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd5", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:3:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/sai.profile new file mode 100644 index 000000000000..705ab7c27097 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-3-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/context_config.json new file mode 100644 index 000000000000..90c8f542c9a5 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd6", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:4:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/sai.profile new file mode 100644 index 000000000000..ca86e9b298ec --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-4-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/context_config.json new file mode 100644 index 000000000000..409431f7aeb7 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd7", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:4:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/sai.profile new file mode 100644 index 000000000000..8adb0b842a03 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-4-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/context_config.json new file mode 100644 index 000000000000..fab414b6e8c1 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd8", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:5:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/sai.profile new file mode 100644 index 000000000000..f4cd51ebc0d9 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/sai.profile @@ -0,0 +1,4 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-5-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb + diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/context_config.json new file mode 100644 index 000000000000..0497ac77d1bb --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd9", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:5:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/sai.profile new file mode 100644 index 000000000000..5b610fe3b349 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-5-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/platform.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/platform.json new file mode 100644 index 000000000000..ec96ac39ae09 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/platform.json @@ -0,0 +1,252 @@ +{ + "chassis": { + "name": "Nokia-IXR7250E-SUP-10", + "components": [ + { + "name": "BIOS" + }, + { + "name": "FPGA1" + } + ], + "fans": [], + "fan_drawers": [ + { + "name": "FanTray0", + "num_fans": 1, + "fans": [ + { + "name": "Fan0" + } + ] + }, + { + "name": "FanTray1", + "num_fans": 1, + "fans": [ + { + "name": "Fan1" + } + ] + }, + { + "name": "FanTray2", + "num_fans": 1, + "fans": [ + { + "name": "Fan2" + } + ] + }, + { + "name": "FanTray3", + "num_fans": 1, + "fans": [ + { + "name": "Fan3" + } + ] + } + ], + "master_psu_led_color": ["green", "red"], + "psus": [ + { + "name": "PSU1", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU2", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU3", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU4", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU5", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU6", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU7", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU8", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU9", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU10", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU11", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU12", + "led": "N/A", + "fans": [] + } + ], + "thermals": [ + { + "name": "temp_1" + }, + { + "name": "temp_2" + }, + { + "name": "temp_3(fan)" + }, + { + "name": "temp_4(fan)" + }, + { + "name": "sfm1_1(fan)" + }, + { + "name": "sfm1_2" + }, + { + "name": "sfm1_3" + }, + { + "name": "sfm1_4" + }, + { + "name": "sfm1_5" + }, + { + "name": "sfm2_1(fan)" + }, + { + "name": "sfm2_2" + }, + { + "name": "sfm2_3" + }, + { + "name": "sfm2_4" + }, + { + "name": "sfm2_5" + }, + { + "name": "sfm3_1(fan)" + }, + { + "name": "sfm3_2" + }, + { + "name": "sfm3_3" + }, + { + "name": "sfm3_4" + }, + { + "name": "sfm3_5" + }, + { + "name": "sfm4_1(fan)" + }, + { + "name": "sfm4_2" + }, + { + "name": "sfm4_3" + }, + { + "name": "sfm4_4" + }, + { + "name": "sfm4_5" + }, + { + "name": "sfm5_1(fan)" + }, + { + "name": "sfm5_2" + }, + { + "name": "sfm5_3" + }, + { + "name": "sfm5_4" + }, + { + "name": "sfm5_5" + }, + { + "name": "sfm6_1(fan)" + }, + { + "name": "sfm6_2" + }, + { + "name": "sfm6_3" + }, + { + "name": "sfm6_4" + }, + { + "name": "sfm6_5" + }, + { + "name": "sfm7_1(fan)" + }, + { + "name": "sfm7_2" + }, + { + "name": "sfm7_3" + }, + { + "name": "sfm7_4" + }, + { + "name": "sfm7_5" + }, + { + "name": "sfm8_1(fan)" + }, + { + "name": "sfm8_2" + }, + { + "name": "sfm8_3" + }, + { + "name": "sfm8_4" + }, + { + "name": "sfm8_5" + } + ], + "sfps": [ + ] + }, + "interfaces": {} +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/asic.conf b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/asic.conf new file mode 100644 index 000000000000..7d0f9b9c4782 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/asic.conf @@ -0,0 +1,18 @@ +NUM_ASIC=16 +DEV_ID_ASIC_0=nokia-bdb:1:0 +DEV_ID_ASIC_1=nokia-bdb:1:1 +DEV_ID_ASIC_2=nokia-bdb:2:0 +DEV_ID_ASIC_3=nokia-bdb:2:1 +DEV_ID_ASIC_4=nokia-bdb:3:0 +DEV_ID_ASIC_5=nokia-bdb:3:1 +DEV_ID_ASIC_6=nokia-bdb:4:0 +DEV_ID_ASIC_7=nokia-bdb:4:1 +DEV_ID_ASIC_8=nokia-bdb:5:0 +DEV_ID_ASIC_9=nokia-bdb:5:1 +DEV_ID_ASIC_10=nokia-bdb:6:0 +DEV_ID_ASIC_11=nokia-bdb:6:1 +DEV_ID_ASIC_12=nokia-bdb:7:0 +DEV_ID_ASIC_13=nokia-bdb:7:1 +DEV_ID_ASIC_14=nokia-bdb:8:0 +DEV_ID_ASIC_15=nokia-bdb:8:1 + diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/chassisdb.conf b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/chassisdb.conf new file mode 100644 index 000000000000..26fefcd1827f --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/chassisdb.conf @@ -0,0 +1,4 @@ +start_chassis_db=1 +chassis_db_address=10.0.5.16 +lag_id_start=1 +lag_id_end=512 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/default_sku b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/default_sku new file mode 100644 index 000000000000..41c4fc890130 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/default_sku @@ -0,0 +1 @@ +Nokia-IXR7250E-SUP-10 empty diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/installer.conf b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/installer.conf new file mode 100644 index 000000000000..21bc03a020bc --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/installer.conf @@ -0,0 +1,4 @@ +CONSOLE_PORT=0x3f8 +CONSOLE_DEV=0 +CONSOLE_SPEED=115200 +ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="amd_iommu=off pci=resource_alignment=26@00:01.4" \ No newline at end of file diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pcie.yaml b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pcie.yaml new file mode 100644 index 000000000000..7d587abbdab8 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pcie.yaml @@ -0,0 +1,210 @@ +- 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: '2' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '01' + fn: '3' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP 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: '01' + fn: '5' + 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: '03' + fn: '2' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '03' + fn: '3' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '03' + fn: '4' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP 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: '0025' + name: 'Unassigned class [ff00]: Alcatel Device 0025 (rev 35)' +- bus: '03' + dev: '00' + fn: '0' + id: '157b' + name: 'Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)' +- bus: '04' + dev: '00' + fn: '0' + id: '8454' + name: 'Ethernet controller: Broadcom Limited Device 8454 (rev 01)' +- bus: '04' + dev: '00' + fn: '1' + id: '8454' + name: 'Ethernet controller: Broadcom Limited Device 8454 (rev 01)' +- bus: '08' + dev: '00' + fn: '0' + id: '145a' + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Raven/Raven2 PCIe Dummy Function' +- bus: '08' + dev: '00' + fn: '2' + id: '1456' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Platform Security Processor' +- bus: '08' + dev: '00' + fn: '3' + id: '145f' + name: 'USB controller: Advanced Micro Devices, Inc. [AMD] Zeppelin USB 3.0 Host controller' +- bus: '09' + dev: '00' + fn: '0' + id: '1455' + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Renoir PCIe Dummy Function' +- bus: '09' + dev: '00' + fn: '1' + id: '1468' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Zeppelin Cryptographic Coprocessor NTBCCP' +- bus: '09' + dev: '00' + fn: '2' + id: '7901' + name: 'SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)' +- bus: '09' + dev: '00' + fn: '3' + id: '1457' + name: 'Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller' +- bus: '09' + dev: '00' + fn: '4' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1458' +- bus: '09' + dev: '00' + fn: '5' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1458' +- bus: '09' + dev: '00' + fn: '6' + id: '1459' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1459' +- bus: '09' + dev: '00' + fn: '7' + id: '1459' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1459' diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_env.conf b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_env.conf new file mode 100644 index 000000000000..d4a267afb984 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_env.conf @@ -0,0 +1,4 @@ +usemsi=1 +dmasize=128M +default_mtu=9100 +supervisor=1 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_ndk.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_ndk.json new file mode 100644 index 000000000000..db906ccff28a --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_ndk.json @@ -0,0 +1,24 @@ +{ + "options": [ + { + "key": "midplane_subnet", + "stringval": "10.0.5.0" + }, + { + "key": "midplane_monitor", + "stringval": "yes" + }, + { + "key": "monitor_action", + "stringval": "warn" + }, + { + "key": "sonic_bdb_mode", + "intval": 1 + }, + { + "intval": 1, + "key": "disable_vfio" + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot new file mode 100755 index 000000000000..65cba5185eb1 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot @@ -0,0 +1,9 @@ +#!/bin/bash + +systemctl stop nokia-watchdog.service +sleep 2 +echo "w" > /dev/watchdog +kick_date=`date -u` +echo "last watchdog kick $kick_date" > /var/log/nokia-watchdog-last.log +sync +/sbin/reboot diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/plugins/__init__.py b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/plugins/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pmon_daemon_control.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pmon_daemon_control.json new file mode 100644 index 000000000000..f4e27b89854c --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pmon_daemon_control.json @@ -0,0 +1,4 @@ +{ + "skip_ledd": true, + "skip_xcvrd": true +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/system_health_monitoring_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..8309b1dcc8ae --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/system_health_monitoring_config.json @@ -0,0 +1,13 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": [ + "asic" + ], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "red", + "normal": "green", + "booting": "amber" + } +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/thermal_policy.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/thermal_policy.json new file mode 100644 index 000000000000..8313ab148ce3 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/thermal_policy.json @@ -0,0 +1,63 @@ +{ + "thermal_control_algorithm": { + "run_at_boot_up": "false" + }, + "info_types": [ + { + "type": "thermal_info" + }, + { + "type": "chassis_info" + }, + { + "type": "fan_info" + } + ], + "policies": [ + { + "name": "pusblish thermal to platform", + "conditions": [ + { + "type": "thermal.chassis.collect" + } + ], + "actions": [ + { + "type": "thermal.platform.publish" + } + ] + }, + { + "name": "override platform fan-algo", + "conditions": [ + { + "type": "fan.platform_algorithm.override" + } + ], + "actions": [ + { + "type": "fan.all.disable_algorithm", + "status": "true" + }, + { + "type": "fan.all.set_speed", + "speed": "100" + } + ] + }, + { + "name": "default platform fan-algo", + "conditions": [ + { + "type": "fan.platform_algorithm.allow" + } + ], + "actions": [ + { + "type": "fan.all.disable_algorithm", + "status": "false" + } + ] + } + ] +} diff --git a/platform/broadcom/one-image.mk b/platform/broadcom/one-image.mk index 9509c1b0910e..d11f82bde341 100644 --- a/platform/broadcom/one-image.mk +++ b/platform/broadcom/one-image.mk @@ -69,7 +69,8 @@ $(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELL_S6000_PLATFORM_MODULE) \ $(JUNIPER_QFX5200_PLATFORM_MODULE) \ $(DELTA_AGC032_PLATFORM_MODULE) \ $(RUIJIE_B6510_48VS8CQ_PLATFORM_MODULE) \ - $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE) + $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE) \ + $(NOKIA_IXR7250_PLATFORM_MODULE) $(SONIC_ONE_IMAGE)_LAZY_BUILD_INSTALLS = $(BRCM_OPENNSL_KERNEL) $(BRCM_DNX_OPENNSL_KERNEL) ifeq ($(INSTALL_DEBUG_TOOLS),y) $(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_DBG_IMAGES) diff --git a/platform/broadcom/platform-modules-nokia.dep b/platform/broadcom/platform-modules-nokia.dep new file mode 100644 index 000000000000..f9d92b660b6f --- /dev/null +++ b/platform/broadcom/platform-modules-nokia.dep @@ -0,0 +1,10 @@ + +MPATH := $($(NOKIA_IXR7250_PLATFORM_MODULE)_SRC_PATH) +DEP_FILES := $(SONIC_COMMON_FILES_LIST) platform/broadcom/platform-modules-nokia.mk platform/broadcom/platform-modules-nokia.dep +DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) +DEP_FILES += $(shell git ls-files $(MPATH)) + +$(NOKIA_IXR7250_PLATFORM_MODULE)_CACHE_MODE := GIT_CONTENT_SHA +$(NOKIA_IXR7250_PLATFORM_MODULE)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) +$(NOKIA_IXR7250_PLATFORM_MODULE)_DEP_FILES := $(DEP_FILES) + diff --git a/platform/broadcom/platform-modules-nokia.mk b/platform/broadcom/platform-modules-nokia.mk new file mode 100644 index 000000000000..fb5199375e5e --- /dev/null +++ b/platform/broadcom/platform-modules-nokia.mk @@ -0,0 +1,14 @@ +# Nokia Platform modules + +NOKIA_IXR7250_PLATFORM_MODULE_VERSION = 1.0 + +export NOKIA_IXR7250_PLATFORM_MODULE_VERSION + + +NOKIA_IXR7250_PLATFORM_MODULE = sonic-platform-nokia-chassis_$(NOKIA_IXR7250_PLATFORM_MODULE_VERSION)_amd64.deb +$(NOKIA_IXR7250_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-nokia +$(NOKIA_IXR7250_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON) $(NOKIA_NDK_DEBIAN) +$(NOKIA_IXR7250_PLATFORM_MODULE)_PLATFORM = x86_64-nokia_ixr7250e_sup-r0 +$(NOKIA_IXR7250_PLATFORM_MODULE)_PLATFORM += x86_64-nokia_ixr7250e_36x400g-r0 +SONIC_DPKG_DEBS += $(NOKIA_IXR7250_PLATFORM_MODULE) + diff --git a/platform/broadcom/rules.mk b/platform/broadcom/rules.mk index 031cd60150b8..e890c43e5c5a 100644 --- a/platform/broadcom/rules.mk +++ b/platform/broadcom/rules.mk @@ -1,5 +1,6 @@ include $(PLATFORM_PATH)/sai-modules.mk include $(PLATFORM_PATH)/sai.mk +include $(PLATFORM_PATH)/platform-modules-nokia.mk include $(PLATFORM_PATH)/platform-modules-dell.mk include $(PLATFORM_PATH)/platform-modules-arista.mk include $(PLATFORM_PATH)/platform-modules-ingrasys.mk diff --git a/platform/broadcom/sonic-platform-modules-nokia b/platform/broadcom/sonic-platform-modules-nokia new file mode 160000 index 000000000000..90afc22977b4 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-nokia @@ -0,0 +1 @@ +Subproject commit 90afc22977b481e4511953904e3d66c68d039537 From e6ea527acd34b84a8eac972ab968fb624fb8687c Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Tue, 17 Aug 2021 15:46:00 -0700 Subject: [PATCH 074/186] [submodule]: update sonic-utilities (#8494) * 0a145e8 2021-08-17 | Revert "[config][generic-update] Implementing patch sorting (#1599)" (HEAD, origin/master, origin/HEAD) [Guohan Lu] * dbcc6fd 2021-08-16 | [config reload]: fix the condition for checking if system is starting (#1766) (HEAD, origin/master, origin/HEAD) [Guohan Lu] * 2c7cfaa 2021-08-17 | [sonic-package-manager] switch from poetry-semver to semantic_version due to bugs found in poetry-semver (#1710) [Stepan Blyshchak] * 7821a3f 2021-08-13 | [vnet_route_check] don't hardcode prefix length of /24 (#1756) [Stepan Blyshchak] * 4175cb9 2021-08-11 | [show priority-group drop counters] Add user info output when user want to check PG counters and polling are disabled (#1678) [Andriy Yurkiv] * 920bb87 2021-08-10 | [config][generic-update] Implementing patch sorting (#1599) [Mohamed Ghoneim] * 30907c4 2021-08-06 | [config][interface][speed] Fixed the config interface speed in multiasic issue (#1739) [Marty Y. Lok] * 4b88e0e 2021-08-06 | [minigraph] Donot enable PFC watchdog for MgmtTsToR (#1734) [Blueve] Signed-off-by: Guohan Lu --- src/sonic-utilities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-utilities b/src/sonic-utilities index b540f5f8fd73..0a145e802738 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit b540f5f8fd73525d05f6cb3d1844849346f471c8 +Subproject commit 0a145e8027380e8d4decb36bdfc647062c722612 From 3f095f1699f4d1df33bd6f9fc390c12f82bd3057 Mon Sep 17 00:00:00 2001 From: minionatwork <60480922+minionatwork@users.noreply.github.com> Date: Tue, 17 Aug 2021 19:01:01 -0700 Subject: [PATCH 075/186] [multi-asic] Fix for sonic-cfggen exception during platform string read (#8229) Fix for sonic-cfggen exception during platform string read during fresh install and start of sonic in multi asic, /var/run/redisX/ is created after database docker is started. --- src/sonic-config-engine/sonic-cfggen | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/sonic-config-engine/sonic-cfggen b/src/sonic-config-engine/sonic-cfggen index bd528c64e75e..410e4da17c0b 100755 --- a/src/sonic-config-engine/sonic-cfggen +++ b/src/sonic-config-engine/sonic-cfggen @@ -296,10 +296,6 @@ def main(): 'localhost': {'namespace_id': namespace_id} } }) - # Load the database config for the namespace from global database json - if args.namespace is not None: - SonicDBConfig.load_sonic_global_db_config(namespace=args.namespace) - if hwsku is not None: hardware_data = {'DEVICE_METADATA': {'localhost': { 'hwsku': hwsku @@ -359,6 +355,7 @@ def main(): if args.namespace is None: configdb = ConfigDBPipeConnector(use_unix_socket_path=use_unix_sock, **db_kwargs) else: + SonicDBConfig.load_sonic_global_db_config(namespace=args.namespace) configdb = ConfigDBPipeConnector(use_unix_socket_path=use_unix_sock, namespace=args.namespace, **db_kwargs) configdb.connect() @@ -426,6 +423,7 @@ def main(): if args.namespace is None: configdb = ConfigDBPipeConnector(use_unix_socket_path=True, **db_kwargs) else: + SonicDBConfig.load_sonic_global_db_config(namespace=args.namespace) configdb = ConfigDBPipeConnector(use_unix_socket_path=True, namespace=args.namespace, **db_kwargs) configdb.connect(False) From 4d0352631177b49607796c05f19f185c543ecf6a Mon Sep 17 00:00:00 2001 From: Myron Sosyak Date: Wed, 18 Aug 2021 10:42:03 -0700 Subject: [PATCH 076/186] [docker-ptf] Upgrade to buster (#8254) Co-authored-by: Your Name --- dockers/docker-ptf/Dockerfile.j2 | 21 +++------------------ platform/vs/docker-ptf.mk | 1 - 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/dockers/docker-ptf/Dockerfile.j2 b/dockers/docker-ptf/Dockerfile.j2 index a44d5d4a0e38..e14959d4f3be 100644 --- a/dockers/docker-ptf/Dockerfile.j2 +++ b/dockers/docker-ptf/Dockerfile.j2 @@ -3,21 +3,12 @@ FROM multiarch/debian-debootstrap:armhf-stretch {% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %} FROM multiarch/debian-debootstrap:arm64-stretch {% else %} -FROM debian:stretch +FROM debian:buster {% endif %} MAINTAINER Pavel Shirshov -## Remove retired jessie-updates repo -RUN sed -i '/deb http:\/\/deb.debian.org\/debian jessie-updates main/d' /etc/apt/sources.list - -## Copy dependencies -COPY \ -{% for deb in docker_ptf_debs.split(' ') -%} -debs/{{ deb }}{{' '}} -{%- endfor -%} -debs/ - +RUN echo "deb [arch=amd64] http://debian-archive.trafficmanager.net/debian buster-backports main" >> /etc/apt/sources.list ## Make apt-get non-interactive ENV DEBIAN_FRONTEND=noninteractive @@ -47,7 +38,7 @@ RUN sed --in-place 's/httpredir.debian.org/debian-archive.trafficmanager.net/' / cmake \ libqt5core5a \ libqt5network5 \ - libboost-atomic1.62.0 \ + libboost-atomic1.71.0 \ less \ git \ iputils-ping \ @@ -68,12 +59,6 @@ RUN sed --in-place 's/httpredir.debian.org/debian-archive.trafficmanager.net/' / bridge-utils \ libteam-utils - -RUN dpkg -i \ -{% for deb in docker_ptf_debs.split(' ') -%} -debs/{{ deb }}{{' '}} -{%- endfor %} - # Install all python modules from pypi. python-scapy is exception, ptf debian package requires python-scapy # TODO: Clean up this step RUN rm -rf /debs \ diff --git a/platform/vs/docker-ptf.mk b/platform/vs/docker-ptf.mk index 4fde844fe24b..857f53574743 100644 --- a/platform/vs/docker-ptf.mk +++ b/platform/vs/docker-ptf.mk @@ -4,4 +4,3 @@ DOCKER_PTF = docker-ptf.gz $(DOCKER_PTF)_PATH = $(DOCKERS_PATH)/docker-ptf $(DOCKER_PTF)_DEPENDS += $(LIBTHRIFT) $(PYTHON_THRIFT) $(PTF) $(PYTHON_SAITHRIFT) SONIC_DOCKER_IMAGES += $(DOCKER_PTF) -SONIC_STRETCH_DOCKERS += $(DOCKER_PTF) From 0d84f13cbcb2bd86bc86aa8f0aa2c2f217124f68 Mon Sep 17 00:00:00 2001 From: Junhua Zhai Date: Wed, 18 Aug 2021 11:35:25 -0700 Subject: [PATCH 077/186] [submodule]: update sonic-sairedis to latest (#8516) For gearbox support on arista_7280cr3mk, the following commit in sonic-sairedis is needed: 2021-07-21 c20321c Kamil Cudnik: [meta] Allow objects with the same key exist on different switches (#865) --- src/sonic-sairedis | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-sairedis b/src/sonic-sairedis index 84fa50a88f7b..b71c2a5a8f80 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit 84fa50a88f7bd9b196018d89741fcf95ade0f983 +Subproject commit b71c2a5a8f80d9206145ad07b0411e8d7b82ad1c From 2348794ef027c4347a676bfbce8b7a9c2055038c Mon Sep 17 00:00:00 2001 From: abdosi <58047199+abdosi@users.noreply.github.com> Date: Wed, 18 Aug 2021 15:53:17 -0700 Subject: [PATCH 078/186] Enable sysctl fib_multipath_use_neigh (#8502) Enable fib_multipath_use_neigh for v4 https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt Why I did: This is helpful if the neighbor are not directly connected then Kernel forward to unreachable neighbor option. With this option forwarding using neighbor state to be valid. --- files/image_config/sysctl/sysctl-net.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/files/image_config/sysctl/sysctl-net.conf b/files/image_config/sysctl/sysctl-net.conf index 84c24c8b0a8a..1a2cc35ad491 100644 --- a/files/image_config/sysctl/sysctl-net.conf +++ b/files/image_config/sysctl/sysctl-net.conf @@ -37,3 +37,4 @@ net.ipv4.udp_l3mdev_accept=1 net.core.rmem_max=3145728 net.core.wmem_max=3145728 net.core.somaxconn=512 +net.ipv4.fib_multipath_use_neigh=1 From 348d2a7cf525b6129bdec9cd5e0b0f8fc926b35f Mon Sep 17 00:00:00 2001 From: SuvarnaMeenakshi <50386592+SuvarnaMeenakshi@users.noreply.github.com> Date: Thu, 19 Aug 2021 11:22:31 -0700 Subject: [PATCH 079/186] [sonic-utilities]: Advance submodule (#8505) Why I did it Update sonic-utilities submodule to include below commits: 29f4a16 Global and Interface commands for IPv6 Link local address enhancements (#1159) a99d56d Improve config error handling on version_info (#1760) 5002745 Load the database global_db. (#1752) Signed-off-by: Suvarna Meenakshi --- src/sonic-utilities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-utilities b/src/sonic-utilities index 0a145e802738..29f4a1642024 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit 0a145e8027380e8d4decb36bdfc647062c722612 +Subproject commit 29f4a1642024050a104d07316c15e012905f7d32 From e3a30deea92957e9680cccc2b02decab7a7b3efd Mon Sep 17 00:00:00 2001 From: Volodymyr Samotiy Date: Fri, 20 Aug 2021 02:29:25 +0300 Subject: [PATCH 080/186] [monit] Periodically monitor VNET route consistency (#8266) *To run VNET route consistency check periodically. *For any failure, the monit will raise alert based on return code. Signed-off-by: Volodymyr Samotiy --- files/image_config/monit/conf.d/sonic-host | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/files/image_config/monit/conf.d/sonic-host b/files/image_config/monit/conf.d/sonic-host index 8af94b3f2964..ceebf1003eb2 100644 --- a/files/image_config/monit/conf.d/sonic-host +++ b/files/image_config/monit/conf.d/sonic-host @@ -40,3 +40,9 @@ check program diskCheck with path "/usr/local/bin/disk_check.py" check program container_checker with path "/usr/bin/container_checker" if status != 0 for 5 times within 5 cycles then alert repeat every 1 cycles + +# vnet_route_check.py: tool that verifies VNET routes consistancy between SONiC and vendor SDK DBs. +check program vnetRouteCheck with path "/usr/local/bin/vnet_route_check.py" + every 5 cycles + if status != 0 for 3 cycle then alert repeat every 1 cycles + From e3ac64954a2a9087b6bf27ee0777157be2c359d1 Mon Sep 17 00:00:00 2001 From: carl-nokia <63672637+carl-nokia@users.noreply.github.com> Date: Fri, 20 Aug 2021 01:31:18 -0400 Subject: [PATCH 081/186] [Nokia ixs7215] sfp get_name test case fix (#8507) Account for sfputil_helper indexing being 0 based Co-authored-by: Carl Keene --- .../sonic-platform-nokia/7215/sonic_platform/sfp.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py index ead408b41b8b..308e8b29a60b 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py @@ -799,6 +799,9 @@ def tx_disable(self, tx_disable): Returns: A boolean, True if tx_disable is set successfully, False if not """ + if self.sfp_type == COPPER_TYPE: + return False + if smbus_present == 0: # if called from sfputil outside of pmon cmdstatus, register = cmd.getstatusoutput('sudo i2cget -y 0 0x41 0x5') if cmdstatus: @@ -888,7 +891,7 @@ def get_name(self): sfputil_helper = SfpUtilHelper() sfputil_helper.read_porttab_mappings( self.__get_path_to_port_config_file()) - name = sfputil_helper.logical[self.index] or "Unknown" + name = sfputil_helper.logical[self.index-1] or "Unknown" return name def get_presence(self): From f0e640f7e6a45f44512dc6bc1fcbd66f55617ee5 Mon Sep 17 00:00:00 2001 From: kellyyeh <42761586+kellyyeh@users.noreply.github.com> Date: Fri, 20 Aug 2021 09:11:40 -0700 Subject: [PATCH 082/186] Add DHCPv6 Relay Agent (#8251) * Added DHCPv6 Relay * Added DHCPv6 Counter --- src/dhcp6relay/.gitignore | 5 + src/dhcp6relay/Makefile | 42 ++ src/dhcp6relay/debian/changelog | 5 + src/dhcp6relay/debian/compat | 1 + src/dhcp6relay/debian/control | 17 + src/dhcp6relay/debian/rules | 4 + src/dhcp6relay/src/configInterface.cpp | 153 ++++++ src/dhcp6relay/src/configInterface.h | 75 +++ src/dhcp6relay/src/main.cpp | 18 + src/dhcp6relay/src/relay.cpp | 729 +++++++++++++++++++++++++ src/dhcp6relay/src/relay.h | 357 ++++++++++++ src/dhcp6relay/src/subdir.mk | 23 + 12 files changed, 1429 insertions(+) create mode 100644 src/dhcp6relay/.gitignore create mode 100644 src/dhcp6relay/Makefile create mode 100644 src/dhcp6relay/debian/changelog create mode 100644 src/dhcp6relay/debian/compat create mode 100644 src/dhcp6relay/debian/control create mode 100755 src/dhcp6relay/debian/rules create mode 100644 src/dhcp6relay/src/configInterface.cpp create mode 100644 src/dhcp6relay/src/configInterface.h create mode 100644 src/dhcp6relay/src/main.cpp create mode 100644 src/dhcp6relay/src/relay.cpp create mode 100644 src/dhcp6relay/src/relay.h create mode 100644 src/dhcp6relay/src/subdir.mk diff --git a/src/dhcp6relay/.gitignore b/src/dhcp6relay/.gitignore new file mode 100644 index 000000000000..9d09ae6b3f1a --- /dev/null +++ b/src/dhcp6relay/.gitignore @@ -0,0 +1,5 @@ +debian/* +!debian/changelog +!debian/compat +!debian/control +!debian/rules diff --git a/src/dhcp6relay/Makefile b/src/dhcp6relay/Makefile new file mode 100644 index 000000000000..4cbeb37fd188 --- /dev/null +++ b/src/dhcp6relay/Makefile @@ -0,0 +1,42 @@ +RM := rm -rf +DHCP6RELAY_TARGET := dhcp6relay +CP := cp +MKDIR := mkdir +CC := g++ +MV := mv +LIBS := -levent -lhiredis -lswsscommon -pthread -lboost_thread -lboost_system -I $(PWD)/../sonic-swss-common/common +CFLAGS = -g -Wall -std=gnu11 +PWD := $(shell pwd) + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) $(OBJS) +endif +endif + +-include src/subdir.mk + +all: sonic-dhcp6relay + +sonic-dhcp6relay: $(OBJS) + @echo 'Building target: $@' + @echo 'Invoking: G++ Linker' + $(CC) -o $(DHCP6RELAY_TARGET) $(OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +install: + $(MKDIR) -p $(DESTDIR)/usr/sbin + $(MV) $(DHCP6RELAY_TARGET) $(DESTDIR)/usr/sbin + +deinstall: + $(RM) $(DESTDIR)/usr/sbin/$(DHCP6RELAY_TARGET) + $(RM) -rf $(DESTDIR)/usr/sbin + +clean: + -$(RM) $(EXECUTABLES) $(C_DEPS) $(OBJS) $(DHCP6RELAY_TARGET) + -@echo ' ' + +.PHONY: all clean dependents + + diff --git a/src/dhcp6relay/debian/changelog b/src/dhcp6relay/debian/changelog new file mode 100644 index 000000000000..67ed277049e5 --- /dev/null +++ b/src/dhcp6relay/debian/changelog @@ -0,0 +1,5 @@ +sonic-dhcp6relay (1.0.0-0) UNRELEASED; urgency=medium + + * Initial release. + +-- Kelly Yeh diff --git a/src/dhcp6relay/debian/compat b/src/dhcp6relay/debian/compat new file mode 100644 index 000000000000..ec635144f600 --- /dev/null +++ b/src/dhcp6relay/debian/compat @@ -0,0 +1 @@ +9 diff --git a/src/dhcp6relay/debian/control b/src/dhcp6relay/debian/control new file mode 100644 index 000000000000..31fdb6f41f3b --- /dev/null +++ b/src/dhcp6relay/debian/control @@ -0,0 +1,17 @@ +Source: sonic-dhcp6relay +Section: devel +Priority: optional +Maintainer: Kelly Yeh +Build-Depends: debhelper (>= 8.0.0), + dh-systemd +Standards-Version: 3.9.3 +Homepage: https://github.com/Azure/sonic-buildimage +XS-Go-Import-Path: github.com/Azure/sonic-buildimage + +Package: sonic-dhcp6relay +Architecture: any +Built-Using: ${misc:Built-Using} +Depends: libevent-2.1-6, + libboost-thread1.71.0, + libboost-system1.71.0 +Description: SONiC DHCPv6 Relay diff --git a/src/dhcp6relay/debian/rules b/src/dhcp6relay/debian/rules new file mode 100755 index 000000000000..ce2eb52beb5d --- /dev/null +++ b/src/dhcp6relay/debian/rules @@ -0,0 +1,4 @@ +#!/usr/bin/make -f + +%: + dh $@ --parallel diff --git a/src/dhcp6relay/src/configInterface.cpp b/src/dhcp6relay/src/configInterface.cpp new file mode 100644 index 000000000000..db2c67656a76 --- /dev/null +++ b/src/dhcp6relay/src/configInterface.cpp @@ -0,0 +1,153 @@ +#include +#include +#include +#include "configInterface.h" + +constexpr auto DEFAULT_TIMEOUT_MSEC = 1000; + +bool pollSwssNotifcation = true; +std::shared_ptr mSwssThreadPtr; + +std::shared_ptr configDbPtr = std::make_shared ("CONFIG_DB", 0); +swss::SubscriberStateTable ipHelpersTable(configDbPtr.get(), "DHCP_RELAY"); +swss::Select swssSelect; + +/** + * @code void deinitialize_swss() + * + * @brief initialize DB tables and start SWSS listening thread + * + * @return none + */ +void initialize_swss(std::vector *vlans, swss::DBConnector *db) +{ + try { + swssSelect.addSelectable(&ipHelpersTable); + get_dhcp(vlans); + mSwssThreadPtr = std::make_shared (&handleSwssNotification, vlans); + } + catch (const std::bad_alloc &e) { + syslog(LOG_ERR, "Failed allocate memory. Exception details: %s", e.what()); + } +} + +/** + * @code void deinitialize_swss() + * + * @brief deinitialize DB interface and join SWSS listening thread + * + * @return none + */ +void deinitialize_swss() +{ + stopSwssNotificationPoll(); + mSwssThreadPtr->interrupt(); +} + + +/** + * @code void get_dhcp(std::vector *vlans) + * + * @brief initialize and get vlan table information from DHCP_RELAY + * + * @return none + */ +void get_dhcp(std::vector *vlans) { + swss::Selectable *selectable; + int ret = swssSelect.select(&selectable, DEFAULT_TIMEOUT_MSEC); + if (ret == swss::Select::ERROR) { + syslog(LOG_WARNING, "Select: returned ERROR"); + } else if (ret == swss::Select::TIMEOUT) { + } + if (selectable == static_cast (&ipHelpersTable)) { + handleRelayNotification(ipHelpersTable, vlans); + } +} +/** + * @code void handleSwssNotification(std::vector *vlans) + * + * @brief main thread for handling SWSS notification + * + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void handleSwssNotification(std::vector *vlans) +{ + while (pollSwssNotifcation) { + get_dhcp(vlans); + } +} + +/** + * @code void handleRelayNotification(swss::SubscriberStateTable &ipHelpersTable, std::vector *vlans) + * + * @brief handles DHCPv6 relay configuration change notification + * + * @param ipHelpersTable DHCP table + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void handleRelayNotification(swss::SubscriberStateTable &ipHelpersTable, std::vector *vlans) +{ + std::deque entries; + + ipHelpersTable.pops(entries); + processRelayNotification(entries, vlans); +} + +/** + * @code void processRelayNotification(std::deque &entries, std::vector *vlans) + * + * @brief process DHCPv6 relay servers and options configuration change notification + * + * @param entries queue of std::tuple> entries in DHCP table + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void processRelayNotification(std::deque &entries, std::vector *vlans) +{ + std::vector servers; + + for (auto &entry: entries) { + std::string vlan = kfvKey(entry); + std::string operation = kfvOp(entry); + std::vector fieldValues = kfvFieldsValues(entry); + + relay_config intf; + intf.interface = vlan; + for (auto &fieldValue: fieldValues) { + std::string f = fvField(fieldValue); + std::string v = fvValue(fieldValue); + if(f == "dhcpv6_servers") { + std::stringstream ss(v); + while (ss.good()) { + std::string substr; + getline(ss, substr, ','); + intf.servers.push_back(substr); + } + syslog(LOG_DEBUG, "key: %s, Operation: %s, f: %s, v: %s", vlan.c_str(), operation.c_str(), f.c_str(), v.c_str()); + } + if(f == "dhcpv6_option|rfc6939_support") { + if(v == "true") + intf.is_option_79 = true; + else if(v == "false") + intf.is_option_79 = false; + } + } + vlans->push_back(intf); + } +} + +/** +*@code stopSwssNotificationPoll +* +*@brief stop SWSS listening thread +* +*@return none +*/ +void stopSwssNotificationPoll() { + pollSwssNotifcation = false; +}; diff --git a/src/dhcp6relay/src/configInterface.h b/src/dhcp6relay/src/configInterface.h new file mode 100644 index 000000000000..dfd5eb668e0e --- /dev/null +++ b/src/dhcp6relay/src/configInterface.h @@ -0,0 +1,75 @@ +#include +#include "subscriberstatetable.h" +#include "select.h" +#include "relay.h" + +/** + * @code void deinitialize_swss() + * + * @brief initialize DB tables and start SWSS listening thread + * + * @return none + */ +void initialize_swss(std::vector *vlans, swss::DBConnector *db); + +/** + * @code void deinitialize_swss() + * + * @brief deinitialize DB interface and join SWSS listening thread + * + * @return none + */ +void deinitialize_swss(); + +/** + * @code void get_dhcp(std::vector *vlans) + * + * @brief initialize and get vlan information from DHCP_RELAY + * + * @return none + */ +void get_dhcp(std::vector *vlans); + +/** + * @code void handleSwssNotification(std::vector *vlans) + * + * @brief main thread for handling SWSS notification + * + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void handleSwssNotification(std::vector *vlans); + +/** + * @code void handleRelayNotification(swss::SubscriberStateTable &ipHelpersTable, std::vector *vlans) + * + * @brief handles DHCPv6 relay configuration change notification + * + * @param ipHelpersTable DHCP table + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void handleRelayNotification(swss::SubscriberStateTable &configMuxTable, std::vector *vlans); + +/** + * @code void processRelayNotification(std::deque &entries, std::vector *vlans) + * + * @brief process DHCPv6 relay servers and options configuration change notification + * + * @param entries queue of std::tuple> entries in DHCP table + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void processRelayNotification(std::deque &entries, std::vector *vlans); + +/** +*@code stopSwssNotificationPoll +* +*@brief stop SWSS listening thread +* +*@return none +*/ +void stopSwssNotificationPoll(); diff --git a/src/dhcp6relay/src/main.cpp b/src/dhcp6relay/src/main.cpp new file mode 100644 index 000000000000..860e4d1346d8 --- /dev/null +++ b/src/dhcp6relay/src/main.cpp @@ -0,0 +1,18 @@ +#include +#include +#include "configInterface.h" + +int main(int argc, char *argv[]) { + try { + std::vector vlans; + swss::DBConnector state_db("STATE_DB", 0); + initialize_swss(&vlans, &state_db); + loop_relay(&vlans, &state_db); + } + catch (std::exception &e) + { + syslog(LOG_ERR, "An exception occurred.\n"); + return 1; + } + return 0; +} diff --git a/src/dhcp6relay/src/relay.cpp b/src/dhcp6relay/src/relay.cpp new file mode 100644 index 000000000000..d9c7114a7937 --- /dev/null +++ b/src/dhcp6relay/src/relay.cpp @@ -0,0 +1,729 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "configdb.h" +#include "sonicv2connector.h" +#include "dbconnector.h" +#include "configInterface.h" + + +struct event *listen_event; +struct event *server_listen_event; +struct event_base *base; +struct event *ev_sigint; +struct event *ev_sigterm; + +/* DHCPv6 filter */ +/* sudo tcpdump -dd "ip6 dst ff02::1:2 && udp dst port 547" */ + +static struct sock_filter ether_relay_filter[] = { + + { 0x28, 0, 0, 0x0000000c }, + { 0x15, 0, 13, 0x000086dd }, + { 0x20, 0, 0, 0x00000026 }, + { 0x15, 0, 11, 0xff020000 }, + { 0x20, 0, 0, 0x0000002a }, + { 0x15, 0, 9, 0x00000000 }, + { 0x20, 0, 0, 0x0000002e }, + { 0x15, 0, 7, 0x00000000 }, + { 0x20, 0, 0, 0x00000032 }, + { 0x15, 0, 5, 0x00010002 }, + { 0x30, 0, 0, 0x00000014 }, + { 0x15, 0, 3, 0x00000011 }, + { 0x28, 0, 0, 0x00000038 }, + { 0x15, 0, 1, 0x00000223 }, + { 0x6, 0, 0, 0x00040000 }, + { 0x6, 0, 0, 0x00000000 }, +}; +const struct sock_fprog ether_relay_fprog = { + lengthof(ether_relay_filter), + ether_relay_filter +}; + +/* DHCPv6 Counter */ +uint64_t counters[DHCPv6_MESSAGE_TYPE_COUNT]; +std::map counterMap = {{1, "Solicit"}, + {2, "Advertise"}, + {3, "Request"}, + {4, "Confirm"}, + {5, "Renew"}, + {6, "Rebind"}, + {7, "Reply"}, + {8, "Release"}, + {9, "Decline"}, + {12, "Relay-Forward"}, + {13, "Relay-Reply"}}; + +/** + * @code void initialize_counter(swss::DBConnector *db, std::string counterVlan); + * + * @brief initialize the counter by each Vlan + * + * @param swss::DBConnector *db state_db connector + * @param counterVlan counter table with interface name + * + * @return none + */ +void initialize_counter(swss::DBConnector *db, std::string counterVlan) { + db->hset(counterVlan, "Solicit", toString(counters[DHCPv6_MESSAGE_TYPE_SOLICIT])); + db->hset(counterVlan, "Advertise", toString(counters[DHCPv6_MESSAGE_TYPE_ADVERTISE])); + db->hset(counterVlan, "Request", toString(counters[DHCPv6_MESSAGE_TYPE_REQUEST])); + db->hset(counterVlan, "Confirm", toString(counters[DHCPv6_MESSAGE_TYPE_CONFIRM])); + db->hset(counterVlan, "Renew", toString(counters[DHCPv6_MESSAGE_TYPE_RENEW])); + db->hset(counterVlan, "Rebind", toString(counters[DHCPv6_MESSAGE_TYPE_REBIND])); + db->hset(counterVlan, "Reply", toString(counters[DHCPv6_MESSAGE_TYPE_REPLY])); + db->hset(counterVlan, "Release", toString(counters[DHCPv6_MESSAGE_TYPE_RELEASE])); + db->hset(counterVlan, "Decline", toString(counters[DHCPv6_MESSAGE_TYPE_DECLINE])); + db->hset(counterVlan, "Relay-Forward", toString(counters[DHCPv6_MESSAGE_TYPE_RELAY_FORW])); + db->hset(counterVlan, "Relay-Reply", toString(counters[DHCPv6_MESSAGE_TYPE_RELAY_REPL])); +} + +/** + * @code void update_counter(swss::DBConnector *db, std::string CounterVlan, uint8_t msg_type); + * + * @brief update the counter in state_db with count of each DHCPv6 message type + * + * @param swss::DBConnector *db state_db connector + * @param counterVlan counter table with interface name + * @param msg_type dhcpv6 message type to be updated in counter + * + * @return none + */ +void update_counter(swss::DBConnector *db, std::string counterVlan, uint8_t msg_type) { + db->hset(counterVlan, counterMap.find(msg_type)->second, toString(counters[msg_type])); +} + +/** + * @code std::string toString(uint16_t count); + * + * @brief convert uint16_t to string + * + * @param count count of messages in counter + * + * @return count in string + */ +std::string toString(uint16_t count) { + std::stringstream ss; + ss << count; + std::string countValue = ss.str(); + return countValue; +} + +/** + * @code bool is_addr_gua(in6_addr addr); + * + * @brief check if address is global + * + * @param addr ipv6 address + * + * @return bool + */ +bool is_addr_gua(in6_addr addr) { + auto masked = addr.__in6_u.__u6_addr8[0] & 0xe0; + return (masked ^ 0x20) == 0x00; +} + +/** + * @code is_addr_link_local(in6_addr addr); + * + * @brief check if address is link_local + * + * @param addr ipv6 address + * + * @return bool + */ +bool is_addr_link_local(in6_addr addr) { + auto masked = ntohs(addr.__in6_u.__u6_addr16[0]) & 0xffc0; + return (masked ^ 0xfe80) == 0x0000; +} + +/** + * @code const struct ether_header *parse_ether_frame(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through ethernet frame + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return ether_header end of ethernet header position + */ +const struct ether_header *parse_ether_frame(const uint8_t *buffer, const uint8_t **out_end) { + (*out_end) = buffer + sizeof(struct ether_header); + return (const struct ether_header *)buffer; +} + +/** + * @code const struct ip6_hdr *parse_ip6_hdr(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through ipv6 header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return ip6_hdr end of ipv6 header position + */ +const struct ip6_hdr *parse_ip6_hdr(const uint8_t *buffer, const uint8_t **out_end) { + (*out_end) = buffer + sizeof(struct ip6_hdr); + return (struct ip6_hdr *)buffer; +} + +/** + * @code const struct udphdr *parse_udp(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through udp header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return udphdr end of udp header position + */ +const struct udphdr *parse_udp(const uint8_t *buffer, const uint8_t **out_end) { + (*out_end) = buffer + sizeof(struct udphdr); + return (const struct udphdr *)buffer; +} + +/** + * @code const struct dhcpv6_msg *parse_dhcpv6_hdr(const uint8_t *buffer); + * + * @brief parse through dhcpv6 header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_msg end of dhcpv6 header position + */ +const struct dhcpv6_msg *parse_dhcpv6_hdr(const uint8_t *buffer) { + return (const struct dhcpv6_msg *)buffer; +} + +/** + * @code const struct dhcpv6_relay_msg *parse_dhcpv6_relay(const uint8_t *buffer); + * + * @brief parse through dhcpv6 relay message + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_relay_msg start of dhcpv6 relay message or end of dhcpv6 message type position + */ +const struct dhcpv6_relay_msg *parse_dhcpv6_relay(const uint8_t *buffer) { + return (const struct dhcpv6_relay_msg *)buffer; +} + +/** + * @code const struct dhcpv6_option *parse_dhcpv6_opt(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through dhcpv6 option + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_option end of dhcpv6 message option + */ +const struct dhcpv6_option *parse_dhcpv6_opt(const uint8_t *buffer, const uint8_t **out_end) { + uint32_t size = 4; // option-code + option-len + size += ntohs(*(uint16_t *)(buffer + 2)); + (*out_end) = buffer + size; + + return (const struct dhcpv6_option *)buffer; +} + +/** + * @code void send_udp(int sock, uint8_t *buffer, struct sockaddr_in6 target, uint32_t n); + * + * @brief send udp packet + * + * @param *buffer message buffer + * @param sockaddr_in6 target target socket + * @param n length of message + * + * @return dhcpv6_option end of dhcpv6 message option + */ +void send_udp(int sock, uint8_t *buffer, struct sockaddr_in6 target, uint32_t n) { + if(sendto(sock, buffer, n, 0, (const struct sockaddr *)&target, sizeof(target)) == -1) + syslog(LOG_ERR, "sendto: Failed to send to target address\n"); +} + +/** + * @code relay_forward(uint8_t *buffer, const struct dhcpv6_msg *msg, uint16_t msg_length); + * + * @brief embed the DHCPv6 message received into DHCPv6 relay forward message + * + * @param buffer pointer to buffer + * @param msg pointer to parsed DHCPv6 message + * @param msg_length length of DHCPv6 message + * + * @return none + */ +void relay_forward(uint8_t *buffer, const struct dhcpv6_msg *msg, uint16_t msg_length) { + struct dhcpv6_option option; + option.option_code = htons(OPTION_RELAY_MSG); + option.option_length = htons(msg_length); + memcpy(buffer, &option, sizeof(struct dhcpv6_option)); + memcpy(buffer + sizeof(struct dhcpv6_option), msg, msg_length); +} + +/** + * @code sock_open(int ifindex, const struct sock_fprog *fprog); + * + * @brief prepare L2 socket to attach to "udp and port 547" filter + * + * @param ifindex interface index + * @param fprog bpf filter "udp and port 547" + * + * @return socket descriptor + */ +int sock_open(int ifindex, const struct sock_fprog *fprog) +{ + if (!ifindex) { + errno = EINVAL; + return -1; + } + + int s = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); + if (s == -1) { + syslog(LOG_ERR, "socket: Failed to create socket\n"); + return -1; + } + + struct sockaddr_ll sll = { + .sll_family = AF_PACKET, + .sll_protocol = htons(ETH_P_ALL), + .sll_ifindex = ifindex + }; + + if (bind(s, (struct sockaddr *)&sll, sizeof sll) == -1) { + syslog(LOG_ERR, "bind: Failed to bind to specified interface\n"); + (void) close(s); + return -1; + } + + if (fprog && setsockopt(s, SOL_SOCKET, SO_ATTACH_FILTER, fprog, sizeof *fprog) == -1) + { + syslog(LOG_ERR, "setsockopt: Failed to attach filter\n"); + (void) close(s); + return -1; + } + + return s; +} + +/** + * @code prepare_relay_config(relay_config *interface_config, int local_sock, int filter); + * + * @brief prepare for specified relay interface config: server and link address + * + * @param interface_config pointer to relay config to be prepared + * @param local_sock L3 socket used for relaying messages + * @param filter socket attached with filter + * + * @return none + */ +void prepare_relay_config(relay_config *interface_config, int local_sock, int filter) { + struct ifaddrs *ifa, *ifa_tmp; + sockaddr_in6 non_link_local; + sockaddr_in6 link_local; + + interface_config->local_sock = local_sock; + interface_config->filter = filter; + + for(auto server: interface_config->servers) { + sockaddr_in6 tmp; + if(inet_pton(AF_INET6, server.c_str(), &tmp.sin6_addr) != 1) + { + syslog(LOG_WARNING, "inet_pton: Failed to convert IPv6 address\n"); + } + tmp.sin6_family = AF_INET6; + tmp.sin6_flowinfo = 0; + tmp.sin6_port = htons(RELAY_PORT); + tmp.sin6_scope_id = 0; + interface_config->servers_sock.push_back(tmp); + } + + if (getifaddrs(&ifa) == -1) { + syslog(LOG_WARNING, "getifaddrs: Unable to get network interfaces\n"); + exit(1); + } + + ifa_tmp = ifa; + while (ifa_tmp) { + if (ifa_tmp->ifa_addr->sa_family == AF_INET6) { + struct sockaddr_in6 *in6 = (struct sockaddr_in6*) ifa_tmp->ifa_addr; + if((strcmp(ifa_tmp->ifa_name, interface_config->interface.c_str()) == 0) && is_addr_gua(in6->sin6_addr)) { + non_link_local = *in6; + break; + } + if((strcmp(ifa_tmp->ifa_name, interface_config->interface.c_str()) == 0) && is_addr_link_local(in6->sin6_addr)) { + link_local = *in6; + } + } + ifa_tmp = ifa_tmp->ifa_next; + } + freeifaddrs(ifa); + + if(is_addr_gua(non_link_local.sin6_addr)) { + interface_config->link_address = non_link_local; + } + else { + interface_config->link_address = link_local; + } +} + +/** + * @code prepare_socket(int *local_sock, relay_config *config); + * + * @brief prepare L3 socket for sending + * + * @param local_sock pointer to socket to be prepared + * @param config relay config that contains strings of server and interface addresses + * + * @return none + */ +void prepare_socket(int *local_sock, relay_config *config, int index) { + int flag = 1; + sockaddr_in6 addr; + memset(&addr, 0, sizeof(addr)); + addr.sin6_family = AF_INET6; + addr.sin6_addr = in6addr_any; + addr.sin6_scope_id = index; + addr.sin6_port = htons(RELAY_PORT); + + if ((*local_sock = socket(AF_INET6, SOCK_DGRAM, 0)) == -1) { + syslog(LOG_ERR, "socket: Failed to create socket\n"); + } + + if((setsockopt(*local_sock, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag))) == -1) { + syslog(LOG_ERR, "setsockopt: Unable to set socket option\n"); + } + + if (bind(*local_sock, (sockaddr *)&addr, sizeof(addr)) == -1) { + syslog(LOG_ERR, "bind: Failed to bind to socket\n"); + } +} + + +/** + * @code relay_client(int sock, const uint8_t *msg, int32_t len, ip6_hdr *ip_hdr, const ether_header *ether_hdr, relay_config *config); + * + * @brief construct relay-forward message + * + * @param sock L3 socket for sending data to servers + * @param msg pointer to dhcpv6 message header position + * @param len size of data received + * @param ip_hdr pointer to IPv6 header + * @param ether_hdr pointer to Ethernet header + * @param config pointer to the relay interface config + * + * @return none + */ +void relay_client(int sock, const uint8_t *msg, int32_t len, const ip6_hdr *ip_hdr, const ether_header *ether_hdr, relay_config *config) { + static uint8_t buffer[4096]; + auto current_buffer_position = buffer; + dhcpv6_relay_msg new_message; + new_message.msg_type = DHCPv6_MESSAGE_TYPE_RELAY_FORW; + memcpy(&new_message.peer_address, &ip_hdr->ip6_src, sizeof(in6_addr)); + new_message.hop_count = 0; + + memcpy(&new_message.link_address, &config->link_address.sin6_addr, sizeof(in6_addr)); + memcpy(current_buffer_position, &new_message, sizeof(dhcpv6_relay_msg)); + current_buffer_position += sizeof(dhcpv6_relay_msg); + + + auto dhcp_message_length = len; + relay_forward(current_buffer_position, parse_dhcpv6_hdr(msg), dhcp_message_length); + current_buffer_position += dhcp_message_length + sizeof(dhcpv6_option); + + if(config->is_option_79) { + linklayer_addr_option option79; + option79.link_layer_type = htons(1); + option79.option_code = htons(OPTION_CLIENT_LINKLAYER_ADDR); + option79.option_length = htons(2 + 6); // link_layer_type field + address + + memcpy(current_buffer_position, &option79, sizeof(linklayer_addr_option)); + current_buffer_position += sizeof(linklayer_addr_option); + } + + memcpy(current_buffer_position, ðer_hdr->ether_shost, sizeof(ether_hdr->ether_shost)); + current_buffer_position += sizeof(ether_hdr->ether_shost); + + for(auto server: config->servers_sock) { + send_udp(sock, buffer, server, current_buffer_position - buffer); + } +} + +/** + * @code relay_relay_reply(int sock, const uint8_t *msg, int32_t len, relay_config *configs); + * + * @brief relay and unwrap a relay-reply message + * + * @param sock L3 socket for sending data to servers + * @param msg pointer to dhcpv6 message header position + * @param len size of data received + * @param config relay interface config + * + * @return none + */ + void relay_relay_reply(int sock, const uint8_t *msg, int32_t len, relay_config *configs) { + static uint8_t buffer[4096]; + char ifname[configs->interface.size()]; + struct sockaddr_in6 target_addr; + auto current_buffer_position = buffer; + auto current_position = msg; + const uint8_t *tmp = NULL; + auto dhcp_relay_header = parse_dhcpv6_relay(msg); + current_position += sizeof(struct dhcpv6_relay_msg); + + while ((current_position - msg) != len) { + auto option = parse_dhcpv6_opt(current_position, &tmp); + current_position = tmp; + switch (ntohs(option->option_code)) { + case OPTION_RELAY_MSG: + memcpy(current_buffer_position, ((uint8_t *)option) + sizeof(struct dhcpv6_option), ntohs(option->option_length)); + current_buffer_position += ntohs(option->option_length); + break; + default: + break; + } + } + + strcpy(ifname, configs->interface.c_str()); + memcpy(&target_addr.sin6_addr, &dhcp_relay_header->peer_address, sizeof(struct in6_addr)); + target_addr.sin6_family = AF_INET6; + target_addr.sin6_flowinfo = 0; + target_addr.sin6_port = htons(CLIENT_PORT); + target_addr.sin6_scope_id = if_nametoindex(ifname); + + send_udp(sock, buffer, target_addr, current_buffer_position - buffer); +} + + +/** + * @code callback(evutil_socket_t fd, short event, void *arg); + * + * @brief callback for libevent that is called everytime data is received at the filter socket + * + * @param fd filter socket + * @param event libevent triggered event + * @param arg callback argument provided by user + * + * @return none + */ +void callback(evutil_socket_t fd, short event, void *arg) { + struct relay_config *config = (struct relay_config *)arg; + static uint8_t message_buffer[4096]; + uint32_t len = recv(config->filter, message_buffer, 4096, 0); + if (len <= 0) { + syslog(LOG_WARNING, "recv: Failed to receive data at filter socket\n"); + } + + char* ptr = (char *)message_buffer; + const uint8_t *current_position = (uint8_t *)ptr; + const uint8_t *tmp = NULL; + + auto ether_header = parse_ether_frame(current_position, &tmp); + current_position = tmp; + + auto ip_header = parse_ip6_hdr(current_position, &tmp); + current_position = tmp; + + if (ip_header->ip6_ctlun.ip6_un1.ip6_un1_nxt != IPPROTO_UDP) { + const struct ip6_ext *ext_header; + do { + ext_header = (const struct ip6_ext *)current_position; + current_position += ext_header->ip6e_len; + } + while (ext_header->ip6e_nxt != IPPROTO_UDP); + } + + auto udp_header = parse_udp(current_position, &tmp); + current_position = tmp; + + auto msg = parse_dhcpv6_hdr(current_position); + counters[msg->msg_type]++; + update_counter(config->db, config->counterVlan, msg->msg_type); + + relay_client(config->local_sock, current_position, ntohs(udp_header->len) - sizeof(udphdr), ip_header, ether_header, config); +} + +void server_callback(evutil_socket_t fd, short event, void *arg) { + struct relay_config *config = (struct relay_config *)arg; + sockaddr_in6 from; + socklen_t len = sizeof(from); + int32_t data = 0; + static uint8_t message_buffer[4096]; + + if ((data = recvfrom(config->local_sock, message_buffer, 4096, 0, (sockaddr *)&from, &len)) == -1) { + syslog(LOG_WARNING, "recv: Failed to receive data from server\n"); + } + + auto msg = parse_dhcpv6_hdr(message_buffer); + + counters[msg->msg_type]++; + update_counter(config->db, config->counterVlan, msg->msg_type); + if (msg->msg_type == DHCPv6_MESSAGE_TYPE_RELAY_REPL) { + relay_relay_reply(config->local_sock, message_buffer, data, config); + } +} + +/** + * @code signal_init(); + * + * @brief initialize DHCPv6 Relay libevent signals + */ +int signal_init() { + int rv = -1; + do { + ev_sigint = evsignal_new(base, SIGINT, signal_callback, base); + if (ev_sigint == NULL) { + syslog(LOG_ERR, "Could not create SIGINT libevent signal\n"); + break; + } + + ev_sigterm = evsignal_new(base, SIGTERM, signal_callback, base); + if (ev_sigterm == NULL) { + syslog(LOG_ERR, "Could not create SIGTERM libevent signal\n"); + break; + } + rv = 0; + } while(0); + return rv; +} + +/** + * @code signal_start(); + * + * @brief start DHCPv6 Relay libevent base and add signals + */ +int signal_start() +{ + int rv = -1; + do + { + if (evsignal_add(ev_sigint, NULL) != 0) { + syslog(LOG_ERR, "Could not add SIGINT libevent signal\n"); + break; + } + + if (evsignal_add(ev_sigterm, NULL) != 0) { + syslog(LOG_ERR, "Could not add SIGTERM libevent signal\n"); + break; + } + + if (event_base_dispatch(base) != 0) { + syslog(LOG_ERR, "Could not start libevent dispatching loop\n"); + } + + rv = 0; + } while (0); + + return rv; +} + +/** + * @code signal_callback(fd, event, arg); + * + * @brief signal handler for dhcp6relay. Initiate shutdown when signal is caught + * + * @param fd libevent socket + * @param event event triggered + * @param arg pointer to libevent base + * + * @return none + */ +void signal_callback(evutil_socket_t fd, short event, void *arg) +{ + syslog(LOG_ALERT, "Received signal: '%s'\n", strsignal(fd)); + if ((fd == SIGTERM) || (fd == SIGINT)) { + dhcp6relay_stop(); + } +} + +/** + * @code dhcp6relay_stop(); + * + * @brief stop DHCPv6 Relay libevent loop upon signal + */ +void dhcp6relay_stop() +{ + event_base_loopexit(base, NULL); +} + +/** + * @code loop_relay(std::vector *vlans, swss::DBConnector *db); + * + * @brief main loop: configure sockets, create libevent base, start server listener thread + * + * @param vlans list of vlans retrieved from config_db + * @param db state_db connector + */ +void loop_relay(std::vector *vlans, swss::DBConnector *db) { + std::vector sockets; + + for(std::size_t i = 0; isize(); i++) { + struct relay_config config = vlans->at(i); + int filter = 0; + int local_sock = 0; + const char *ifname = config.interface.c_str(); + int index = if_nametoindex(ifname); + config.db = db; + + config.counterVlan = "DHCPv6_COUNTER_TABLE|"; + config.counterVlan.append(ifname); + initialize_counter(config.db, config.counterVlan); + + filter = sock_open(index, ðer_relay_fprog); + + prepare_socket(&local_sock, &config, index); + sockets.push_back(filter); + sockets.push_back(local_sock); + + prepare_relay_config(&config, local_sock, filter); + + evutil_make_listen_socket_reuseable(filter); + evutil_make_socket_nonblocking(filter); + + evutil_make_listen_socket_reuseable(local_sock); + evutil_make_socket_nonblocking(local_sock); + + base = event_base_new(); + if(base == NULL) { + syslog(LOG_ERR, "libevent: Failed to create base\n"); + } + + listen_event = event_new(base, filter, EV_READ|EV_PERSIST, callback, (void *)&config); + server_listen_event = event_new(base, local_sock, EV_READ|EV_PERSIST, server_callback, (void *)&config); + if (listen_event == NULL || server_listen_event == NULL) { + syslog(LOG_ERR, "libevent: Failed to create libevent\n"); + } + + event_add(listen_event, NULL); + event_add(server_listen_event, NULL); + } + + if((signal_init() == 0) && signal_start() == 0) { + shutdown(); + for(std::size_t i = 0; i +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define PACKED __attribute__ ((packed)) + +#define RELAY_PORT 547 +#define CLIENT_PORT 546 +#define HOP_LIMIT 32 + +#define lengthof(A) (sizeof (A) / sizeof (A)[0]) + +#define OPTION_RELAY_MSG 9 +#define OPTION_CLIENT_LINKLAYER_ADDR 79 + +/* DHCPv6 message types */ +typedef enum +{ + DHCPv6_MESSAGE_TYPE_SOLICIT = 1, + DHCPv6_MESSAGE_TYPE_ADVERTISE = 2, + DHCPv6_MESSAGE_TYPE_REQUEST = 3, + DHCPv6_MESSAGE_TYPE_CONFIRM = 4, + DHCPv6_MESSAGE_TYPE_RENEW = 5, + DHCPv6_MESSAGE_TYPE_REBIND = 6, + DHCPv6_MESSAGE_TYPE_REPLY = 7, + DHCPv6_MESSAGE_TYPE_RELEASE = 8, + DHCPv6_MESSAGE_TYPE_DECLINE = 9, + DHCPv6_MESSAGE_TYPE_RELAY_FORW = 12, + DHCPv6_MESSAGE_TYPE_RELAY_REPL = 13, + + DHCPv6_MESSAGE_TYPE_COUNT +} dhcp_message_type_t; + +struct relay_config { + int local_sock; + int filter; + sockaddr_in6 link_address; + swss::DBConnector *db; + std::string interface; + std::vector servers; + std::vector servers_sock; + bool is_option_79; + std::string counterVlan; +}; + + +/* DHCPv6 messages and options */ + +struct dhcpv6_msg { + uint8_t msg_type; +}; + +struct PACKED dhcpv6_relay_msg { + uint8_t msg_type; + uint8_t hop_count; + struct in6_addr link_address; + struct in6_addr peer_address; +}; + + +struct dhcpv6_option { + uint16_t option_code; + uint16_t option_length; +}; + +struct linklayer_addr_option { + uint16_t option_code; + uint16_t option_length; + uint16_t link_layer_type; +}; + +/** + * @code sock_open(int ifindex, const struct sock_fprog *fprog); + * + * @brief prepare L2 socket to attach to "udp and port 547" filter + * + * @param ifindex interface index + * @param fprog bpf filter "udp and port 547" + * + * @return socket descriptor + */ +int sock_open(int ifindex, const struct sock_fprog *fprog); + +/** + * @code prepare_socket(int *local_sock, arg_config *config); + * + * @brief prepare L3 socket for sending + * + * @param local_sock pointer to socket to be prepared + * @param config argument config that contains strings of server and interface addresses + * @param index interface id + * + * @return none + */ +void prepare_socket(int *local_sock, relay_config *config, int index); + +/** + * @code prepare_relay_config(relay_config *interface_config, int local_sock, int filter); + * + * @brief prepare for specified relay interface config: server and link address + * + * @param interface_config pointer to relay config to be prepared + * @param local_sock L3 socket used for relaying messages + * @param filter socket attached with filter + * + * @return none + */ +void prepare_relay_config(relay_config *interface_config, int local_sock, int filter); + +/** + * @code relay_forward(uint8_t *buffer, const struct dhcpv6_msg *msg, uint16_t msg_length); + * + * @brief embed the DHCPv6 message received into DHCPv6 relay forward message + * + * @param buffer pointer to buffer + * @param msg pointer to parsed DHCPv6 message + * @param msg_length length of DHCPv6 message + * + * @return none + */ +void relay_forward(uint8_t *buffer, const struct dhcpv6_msg *msg, uint16_t msg_length); + +/** + * @code relay_client(int sock, const uint8_t *msg, int32_t len, ip6_hdr *ip_hdr, const ether_header *ether_hdr, relay_config *config); + * + * @brief construct relay-forward message + * + * @param sock L3 socket for sending data to servers + * @param msg pointer to dhcpv6 message header position + * @param len size of data received + * @param ip_hdr pointer to IPv6 header + * @param ether_hdr pointer to Ethernet header + * @param config pointer to the relay interface config + * + * @return none + */ +void relay_client(int sock, const uint8_t *msg, int32_t len, const ip6_hdr *ip_hdr, const ether_header *ether_hdr, relay_config *config); + +/** + * @code relay_relay_reply(int sock, const uint8_t *msg, int32_t len, relay_config *configs); + * + * @brief relay and unwrap a relay-reply message + * + * @param sock L3 socket for sending data to servers + * @param msg pointer to dhcpv6 message header position + * @param len size of data received + * @param config relay interface config + * + * @return none + */ +void relay_relay_reply(int sock, const uint8_t *msg, int32_t len, relay_config *configs); + +/** + * @code loop_relay(std::vector *vlans, swss::DBConnector *db); + * + * @brief main loop: configure sockets, create libevent base, start server listener thread + * + * @param vlans list of vlans retrieved from config_db + * @param db state_db connector + */ +void loop_relay(std::vector *vlans, swss::DBConnector *db); + +/** + * @code signal_init(); + * + * @brief initialize DHCPv6 Relay libevent signals + */ +int signal_init(); + +/** + * @code signal_start(); + * + * @brief start DHCPv6 Relay libevent base and add signals + */ +int signal_start(); + +/** + * @code dhcp6relay_stop(); + * + * @brief stop DHCPv6 Relay libevent loop upon signal + */ +void dhcp6relay_stop(); + +/** + * @code signal_callback(fd, event, arg); + * + * @brief signal handler for dhcp6relay. Initiate shutdown when signal is caught + * + * @param fd libevent socket + * @param event event triggered + * @param arg pointer to libevent base + * + * @return none + */ +void signal_callback(evutil_socket_t fd, short event, void *arg); + +/** + * @code shutdown(); + * + * @brief free signals and terminate threads + */ +void shutdown(); + +/** + * @code void initialize_counter(swss::DBConnector *db, std::string counterVlan); + * + * @brief initialize the counter by each Vlan + * + * @param swss::DBConnector *db state_db connector + * @param counterVlan counter table with interface name + * + * @return none + */ +void initialize_counter(swss::DBConnector *db, std::string counterVlan); + +/** + * @code void update_counter(swss::DBConnector *db, std::string CounterVlan, uint8_t msg_type); + * + * @brief update the counter in state_db with count of each DHCPv6 message type + * + * @param swss::DBConnector *db state_db connector + * @param counterVlan counter table with interface name + * @param msg_type dhcpv6 message type to be updated in counter + * + * @return none + */ +void update_counter(swss::DBConnector *db, std::string counterVlan, uint8_t msg_type); + +/* Helper functions */ + +/** + * @code std::string toString(uint16_t count); + * + * @brief convert uint16_t to string + * + * @param count count of messages in counter + * + * @return count in string + */ +std::string toString(uint16_t count); + +/** + * @code bool is_addr_gua(in6_addr addr); + * + * @brief check if address is global + * + * @param addr ipv6 address + * + * @return bool + */ +bool is_addr_gua(in6_addr addr); + +/** + * @code is_addr_link_local(in6_addr addr); + * + * @brief check if address is link_local + * + * @param addr ipv6 address + * + * @return bool + */ +bool is_addr_link_local(in6_addr addr); + +/** + * @code const struct ether_header *parse_ether_frame(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through ethernet frame + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return ether_header end of ethernet header position + */ +const struct ether_header *parse_ether_frame(const uint8_t *buffer, const uint8_t **out_end); + +/** + * @code const struct ip6_hdr *parse_ip6_hdr(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through ipv6 header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return ip6_hdr end of ipv6 header position + */ +const struct ip6_hdr *parse_ip6_hdr(const uint8_t *buffer, const uint8_t **out_end); + +/** + * @code const struct udphdr *parse_udp(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through udp header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return udphdr end of udp header position + */ +const struct udphdr *parse_udp(const uint8_t *buffer, const uint8_t **out_end); + +/** + * @code const struct dhcpv6_msg *parse_dhcpv6_hdr(const uint8_t *buffer); + * + * @brief parse through dhcpv6 header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_msg end of dhcpv6 header position + */ +const struct dhcpv6_msg *parse_dhcpv6_hdr(const uint8_t *buffer); + +/** + * @code const struct dhcpv6_relay_msg *parse_dhcpv6_relay(const uint8_t *buffer); + * + * @brief parse through dhcpv6 relay message + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_relay_msg start of dhcpv6 relay message or end of dhcpv6 message type position + */ +const struct dhcpv6_relay_msg *parse_dhcpv6_relay(const uint8_t *buffer); + +/** + * @code const struct dhcpv6_option *parse_dhcpv6_opt(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through dhcpv6 option + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_option end of dhcpv6 message option + */ +const struct dhcpv6_option *parse_dhcpv6_opt(const uint8_t *buffer, const uint8_t **out_end); + +/** + * @code void send_udp(int sock, uint8_t *buffer, struct sockaddr_in6 target, uint32_t n); + * + * @brief send udp packet + * + * @param *buffer message buffer + * @param sockaddr_in6 target target socket + * @param n length of message + * + * @return dhcpv6_option end of dhcpv6 message option + */ +void send_udp(int sock, struct sockaddr_in6 target, uint8_t *buffer, uint32_t n); + diff --git a/src/dhcp6relay/src/subdir.mk b/src/dhcp6relay/src/subdir.mk new file mode 100644 index 000000000000..af378319d78f --- /dev/null +++ b/src/dhcp6relay/src/subdir.mk @@ -0,0 +1,23 @@ +CC := g++ + +C_SRCS += \ +../src/relay.c \ +../src/configInterface.c \ +../src/main.c + +OBJS += \ +./src/relay.o \ +./src/configInterface.o \ +./src/main.o + +C_DEPS += \ +./src/relay.d \ +./src/configInterface.d \ +./src/main.d + +src/%.o: src/%.cpp + @echo 'Building file: $<' + @echo 'Invoking: GCC C++ Compiler' + $(CC) -std=c++17 -D__FILENAME__="$(subst src/,,$<)" $(LIBS) -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' From dab9c6983cb72180571b9eea8e4a360d9694c52f Mon Sep 17 00:00:00 2001 From: kellyyeh <42761586+kellyyeh@users.noreply.github.com> Date: Fri, 20 Aug 2021 09:18:48 -0700 Subject: [PATCH 083/186] Changed DHCP table name to DHCP_RELAY (#8476) * Changed DHCP table name to DHCP_RELAY --- src/sonic-config-engine/minigraph.py | 38 +++++-------------- .../tests/simple-sample-graph-case.xml | 14 +------ src/sonic-config-engine/tests/test_cfggen.py | 6 +-- .../tests/test_minigraph_case.py | 12 +++--- 4 files changed, 21 insertions(+), 49 deletions(-) diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index fffe1af8965b..756743f85e67 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -526,6 +526,7 @@ def parse_dpg(dpg, hname): vlanintfs = child.find(str(QName(ns, "VlanInterfaces"))) vlans = {} vlan_members = {} + dhcp_relay_table = {} vlantype_name = "" intf_vlan_mbr = defaultdict(list) for vintf in vlanintfs.findall(str(QName(ns, "VlanInterface"))): @@ -553,6 +554,7 @@ def parse_dpg(dpg, hname): vlan_members[(sonic_vlan_member_name, vmbr_list[i])] = {'tagging_mode': 'untagged'} vlan_attributes = {'vlanid': vlanid, 'members': vmbr_list } + dhcp_attributes = {} # If this VLAN requires a DHCP relay agent, it will contain a element # containing a list of DHCP server IPs @@ -567,6 +569,9 @@ def parse_dpg(dpg, hname): vintfdhcpservers = vintf_node.text vdhcpserver_list = vintfdhcpservers.split(';') vlan_attributes['dhcpv6_servers'] = vdhcpserver_list + dhcp_attributes['dhcpv6_servers'] = vdhcpserver_list + sonic_vlan_member_name = "Vlan%s" % (vlanid) + dhcp_relay_table[sonic_vlan_member_name] = dhcp_attributes vlanmac = vintf.find(str(QName(ns, "MacAddress"))) if vlanmac is not None and vlanmac.text is not None: @@ -577,29 +582,6 @@ def parse_dpg(dpg, hname): vlan_attributes['alias'] = vintfname vlans[sonic_vlan_name] = vlan_attributes - dhcp = child.find(str(QName(ns, "Dhcp"))) - dhcp_table = {} - - if dhcp is not None: - for vintf in dhcp.findall(str(QName(ns, "VlanInterface"))): - vintfname = vintf.find(str(QName(ns, "Name"))).text - - dhcp_attributes = {} - - dhcp_node = vintf.find(str(QName(ns, "Dhcpv6Relays"))) - if dhcp_node is not None and dhcp_node.text is not None: - dhcpservers = dhcp_node.text - vdhcpserver_list = dhcpservers.split(';') - dhcp_attributes['dhcpv6_servers'] = vdhcpserver_list - - option_linklayer_addr = vintf.find(str(QName(ns, "Dhcpv6OptionRfc6939"))) - if option_linklayer_addr is not None and option_linklayer_addr.text == "true": - dhcp_attributes['dhcpv6_option|rfc6939_support'] = "true" - elif option_linklayer_addr is not None and option_linklayer_addr.text == "false": - dhcp_attributes['dhcpv6_option|rfc6939_support'] = "false" - - dhcp_table[vintfname] = dhcp_attributes - acls = {} for aclintf in aclintfs.findall(str(QName(ns, "AclInterface"))): if aclintf.find(str(QName(ns, "InAcl"))) is not None: @@ -714,7 +696,7 @@ def parse_dpg(dpg, hname): if mg_key in mg_tunnel.attrib: tunnelintfs[tunnel_type][tunnel_name][table_key] = mg_tunnel.attrib[mg_key] - return intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_table, pcs, pc_members, acls, vni, tunnelintfs, dpg_ecmp_content + return intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnelintfs, dpg_ecmp_content return None, None, None, None, None, None, None, None, None, None, None, None, None def parse_host_loopback(dpg, hname): @@ -1182,7 +1164,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw tunnel_intfs = None vlans = None vlan_members = None - dhcp_table = None + dhcp_relay_table = None pcs = None mgmt_intf = None voq_inband_intfs = None @@ -1241,7 +1223,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw for child in root: if asic_name is None: if child.tag == str(QName(ns, "DpgDec")): - (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, hostname) + (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, hostname) elif child.tag == str(QName(ns, "CpgDec")): (bgp_sessions, bgp_internal_sessions, bgp_voq_chassis_sessions, bgp_asn, bgp_peers_with_range, bgp_monitors) = parse_cpg(child, hostname) elif child.tag == str(QName(ns, "PngDec")): @@ -1256,7 +1238,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw (port_speeds_default, port_descriptions, sys_ports) = parse_deviceinfo(child, hwsku) else: if child.tag == str(QName(ns, "DpgDec")): - (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, asic_name) + (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, asic_name) host_lo_intfs = parse_host_loopback(child, hostname) elif child.tag == str(QName(ns, "CpgDec")): (bgp_sessions, bgp_internal_sessions, bgp_voq_chassis_sessions, bgp_asn, bgp_peers_with_range, bgp_monitors) = parse_cpg(child, asic_name, local_devices) @@ -1604,7 +1586,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw results['DEVICE_NEIGHBOR_METADATA'] = { key:devices[key] for key in devices if key in {device['name'] for device in neighbors.values()} } results['SYSLOG_SERVER'] = dict((item, {}) for item in syslog_servers) results['DHCP_SERVER'] = dict((item, {}) for item in dhcp_servers) - results['DHCP'] = dhcp_table + results['DHCP_RELAY'] = dhcp_relay_table results['NTP_SERVER'] = dict((item, {}) for item in ntp_servers) results['TACPLUS_SERVER'] = dict((item, {'priority': '1', 'tcp_port': '49'}) for item in tacacs_servers) results['ACL_TABLE'] = filter_acl_table_bindings(acls, neighbors, pcs, sub_role) diff --git a/src/sonic-config-engine/tests/simple-sample-graph-case.xml b/src/sonic-config-engine/tests/simple-sample-graph-case.xml index 95398e6913cf..78e81bd6df78 100644 --- a/src/sonic-config-engine/tests/simple-sample-graph-case.xml +++ b/src/sonic-config-engine/tests/simple-sample-graph-case.xml @@ -134,6 +134,7 @@ ab1 fortyGigE0/8 192.0.0.1;192.0.0.2 + fc02:2000::1;fc02:2000::2 1000 1000 192.168.0.0/27 @@ -143,23 +144,12 @@ ab2 fortyGigE0/4 192.0.0.1 + fc02:2000::3;fc02:2000::4 2000 2000 - - - Vlan1000 - fc02:2000::1;fc02:2000::2 - true - - - Vlan2000 - fc02:2000::3;fc02:2000::4 - false - - diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index 868e1ebb9965..5be4bb7b75c8 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -822,13 +822,13 @@ def test_minigraph_voq_inband_port(self): ) def test_minigraph_dhcp(self): - argument = '-m "' + self.sample_graph_simple_case + '" -p "' + self.port_config + '" -v DHCP' + argument = '-m "' + self.sample_graph_simple_case + '" -p "' + self.port_config + '" -v DHCP_RELAY' output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), utils.to_dict( - "{'Vlan1000': {'dhcpv6_servers': ['fc02:2000::1', 'fc02:2000::2'], 'dhcpv6_option|rfc6939_support': 'true'}, " - "'Vlan2000': {'dhcpv6_servers': ['fc02:2000::3', 'fc02:2000::4'], 'dhcpv6_option|rfc6939_support': 'false'}}" + "{'Vlan1000': {'dhcpv6_servers': ['fc02:2000::1', 'fc02:2000::2']}, " + "'Vlan2000': {'dhcpv6_servers': ['fc02:2000::3', 'fc02:2000::4']}}" ) ) diff --git a/src/sonic-config-engine/tests/test_minigraph_case.py b/src/sonic-config-engine/tests/test_minigraph_case.py index 97c88b2f3271..0f736998ddeb 100644 --- a/src/sonic-config-engine/tests/test_minigraph_case.py +++ b/src/sonic-config-engine/tests/test_minigraph_case.py @@ -102,6 +102,7 @@ def test_minigraph_vlans(self): 'Vlan1000': { 'alias': 'ab1', 'dhcp_servers': ['192.0.0.1', '192.0.0.2'], + 'dhcpv6_servers': ['fc02:2000::1', 'fc02:2000::2'], 'vlanid': '1000', 'mac': '00:aa:bb:cc:dd:ee', 'members': ['Ethernet8'] @@ -109,6 +110,7 @@ def test_minigraph_vlans(self): 'Vlan2000': { 'alias': 'ab2', 'dhcp_servers': ['192.0.0.1'], + 'dhcpv6_servers': ['fc02:2000::3', 'fc02:2000::4'], 'members': ['Ethernet4'], 'vlanid': '2000' } @@ -359,21 +361,19 @@ def test_minigraph_mux_cable_table(self): ) def test_dhcp_table(self): - argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DHCP"' + argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DHCP_RELAY"' expected = { 'Vlan1000': { 'dhcpv6_servers': [ "fc02:2000::1", "fc02:2000::2" - ], - 'dhcpv6_option|rfc6939_support': 'true' + ] }, - 'Vlan2000': { + 'Vlan2000': { 'dhcpv6_servers': [ "fc02:2000::3", "fc02:2000::4" - ], - 'dhcpv6_option|rfc6939_support': 'false' + ] } } output = self.run_script(argument) From 18cd32a218cf98c14b3b475e99967b6a39a0b746 Mon Sep 17 00:00:00 2001 From: Samuel Angebault Date: Fri, 20 Aug 2021 16:42:56 -0700 Subject: [PATCH 084/186] [Arista] Add VOQ information for Clearwater2 (#8508) This change introduces 3 columns in the port_config.ini file. These are coreId, corePortId and numVoq. The ports for inband and recirc were also renamed properly. --- .../Arista-7800R3-48CQ2-C48/port_config.ini | 102 +++++++++--------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini index 2ffd64c9a9a5..34ddd34c2806 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini @@ -1,51 +1,51 @@ -# name lanes alias index role speed -Ethernet0 6,7 Ethernet1/1 1 Ext 100000 -Ethernet4 2,3 Ethernet2/1 2 Ext 100000 -Ethernet8 4,5 Ethernet3/1 3 Ext 100000 -Ethernet12 0,1 Ethernet4/1 4 Ext 100000 -Ethernet16 14,15 Ethernet5/1 5 Ext 100000 -Ethernet20 10,11 Ethernet6/1 6 Ext 100000 -Ethernet24 12,13 Ethernet7/1 7 Ext 100000 -Ethernet28 8,9 Ethernet8/1 8 Ext 100000 -Ethernet32 22,23 Ethernet9/1 9 Ext 100000 -Ethernet36 18,19 Ethernet10/1 10 Ext 100000 -Ethernet40 20,21 Ethernet11/1 11 Ext 100000 -Ethernet44 16,17 Ethernet12/1 12 Ext 100000 -Ethernet48 30,31 Ethernet13/1 13 Ext 100000 -Ethernet52 26,27 Ethernet14/1 14 Ext 100000 -Ethernet56 28,29 Ethernet15/1 15 Ext 100000 -Ethernet60 24,25 Ethernet16/1 16 Ext 100000 -Ethernet64 38,39 Ethernet17/1 17 Ext 100000 -Ethernet68 34,35 Ethernet18/1 18 Ext 100000 -Ethernet72 36,37 Ethernet19/1 19 Ext 100000 -Ethernet76 32,33 Ethernet20/1 20 Ext 100000 -Ethernet80 46,47 Ethernet21/1 21 Ext 100000 -Ethernet84 42,43 Ethernet22/1 22 Ext 100000 -Ethernet88 44,45 Ethernet23/1 23 Ext 100000 -Ethernet92 40,41 Ethernet24/1 24 Ext 100000 -Ethernet96 94,95 Ethernet25/1 25 Ext 100000 -Ethernet100 90,91 Ethernet26/1 26 Ext 100000 -Ethernet104 92,93 Ethernet27/1 27 Ext 100000 -Ethernet108 88,89 Ethernet28/1 28 Ext 100000 -Ethernet112 86,87 Ethernet29/1 29 Ext 100000 -Ethernet116 82,83 Ethernet30/1 30 Ext 100000 -Ethernet120 84,85 Ethernet31/1 31 Ext 100000 -Ethernet124 80,81 Ethernet32/1 32 Ext 100000 -Ethernet128 78,79 Ethernet33/1 33 Ext 100000 -Ethernet132 74,75 Ethernet34/1 34 Ext 100000 -Ethernet136 76,77 Ethernet35/1 35 Ext 100000 -Ethernet140 72,73 Ethernet36/1 36 Ext 100000 -Ethernet144 70,71 Ethernet37/1 37 Ext 100000 -Ethernet148 66,67 Ethernet38/1 38 Ext 100000 -Ethernet152 68,69 Ethernet39/1 39 Ext 100000 -Ethernet156 64,65 Ethernet40/1 40 Ext 100000 -Ethernet160 62,63 Ethernet41/1 41 Ext 100000 -Ethernet164 58,59 Ethernet42/1 42 Ext 100000 -Ethernet168 60,61 Ethernet43/1 43 Ext 100000 -Ethernet172 56,57 Ethernet44/1 44 Ext 100000 -Ethernet176 54,55 Ethernet45/1 45 Ext 100000 -Ethernet180 50,51 Ethernet46/1 46 Ext 100000 -Ethernet184 52,53 Ethernet47/1 47 Ext 100000 -Ethernet188 48,49 Ethernet48/1 48 Ext 100000 -Recirc0 221 Recirc0/0 51 Rec 400000 -Recirc1 222 Recirc0/1 52 Rec 400000 +# name lanes alias index role speed coreId corePortId numVoq +Ethernet0 6,7 Ethernet1/1 1 Ext 100000 0 1 8 +Ethernet4 2,3 Ethernet2/1 2 Ext 100000 0 2 8 +Ethernet8 4,5 Ethernet3/1 3 Ext 100000 0 3 8 +Ethernet12 0,1 Ethernet4/1 4 Ext 100000 0 4 8 +Ethernet16 14,15 Ethernet5/1 5 Ext 100000 0 5 8 +Ethernet20 10,11 Ethernet6/1 6 Ext 100000 0 6 8 +Ethernet24 12,13 Ethernet7/1 7 Ext 100000 0 7 8 +Ethernet28 8,9 Ethernet8/1 8 Ext 100000 0 8 8 +Ethernet32 22,23 Ethernet9/1 9 Ext 100000 0 9 8 +Ethernet36 18,19 Ethernet10/1 10 Ext 100000 0 10 8 +Ethernet40 20,21 Ethernet11/1 11 Ext 100000 0 11 8 +Ethernet44 16,17 Ethernet12/1 12 Ext 100000 0 12 8 +Ethernet48 30,31 Ethernet13/1 13 Ext 100000 0 13 8 +Ethernet52 26,27 Ethernet14/1 14 Ext 100000 0 14 8 +Ethernet56 28,29 Ethernet15/1 15 Ext 100000 0 15 8 +Ethernet60 24,25 Ethernet16/1 16 Ext 100000 0 16 8 +Ethernet64 38,39 Ethernet17/1 17 Ext 100000 0 17 8 +Ethernet68 34,35 Ethernet18/1 18 Ext 100000 0 18 8 +Ethernet72 36,37 Ethernet19/1 19 Ext 100000 0 19 8 +Ethernet76 32,33 Ethernet20/1 20 Ext 100000 0 20 8 +Ethernet80 46,47 Ethernet21/1 21 Ext 100000 0 21 8 +Ethernet84 42,43 Ethernet22/1 22 Ext 100000 0 22 8 +Ethernet88 44,45 Ethernet23/1 23 Ext 100000 0 23 8 +Ethernet92 40,41 Ethernet24/1 24 Ext 100000 0 24 8 +Ethernet96 94,95 Ethernet25/1 25 Ext 100000 1 25 8 +Ethernet100 90,91 Ethernet26/1 26 Ext 100000 1 26 8 +Ethernet104 92,93 Ethernet27/1 27 Ext 100000 1 27 8 +Ethernet108 88,89 Ethernet28/1 28 Ext 100000 1 28 8 +Ethernet112 86,87 Ethernet29/1 29 Ext 100000 1 29 8 +Ethernet116 82,83 Ethernet30/1 30 Ext 100000 1 30 8 +Ethernet120 84,85 Ethernet31/1 31 Ext 100000 1 31 8 +Ethernet124 80,81 Ethernet32/1 32 Ext 100000 1 32 8 +Ethernet128 78,79 Ethernet33/1 33 Ext 100000 1 33 8 +Ethernet132 74,75 Ethernet34/1 34 Ext 100000 1 34 8 +Ethernet136 76,77 Ethernet35/1 35 Ext 100000 1 35 8 +Ethernet140 72,73 Ethernet36/1 36 Ext 100000 1 36 8 +Ethernet144 70,71 Ethernet37/1 37 Ext 100000 1 37 8 +Ethernet148 66,67 Ethernet38/1 38 Ext 100000 1 38 8 +Ethernet152 68,69 Ethernet39/1 39 Ext 100000 1 39 8 +Ethernet156 64,65 Ethernet40/1 40 Ext 100000 1 40 8 +Ethernet160 62,63 Ethernet41/1 41 Ext 100000 1 41 8 +Ethernet164 58,59 Ethernet42/1 42 Ext 100000 1 42 8 +Ethernet168 60,61 Ethernet43/1 43 Ext 100000 1 43 8 +Ethernet172 56,57 Ethernet44/1 44 Ext 100000 1 44 8 +Ethernet176 54,55 Ethernet45/1 45 Ext 100000 1 45 8 +Ethernet180 50,51 Ethernet46/1 46 Ext 100000 1 46 8 +Ethernet184 52,53 Ethernet47/1 47 Ext 100000 1 47 8 +Ethernet188 48,49 Ethernet48/1 48 Ext 100000 1 48 8 +Ethernet-Rec0 221 Recirc0/0 51 Rec 400000 0 221 8 +Ethernet-IB0 222 Recirc0/1 52 Inb 400000 1 222 8 From 07a0a0958e0286f27ff8c738eb9c71208239a7b5 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Fri, 20 Aug 2021 20:28:35 -0700 Subject: [PATCH 085/186] ifupdown2: Don't check for new IP addresses if dhcp-wait is set to no (#8535) Add a patch in ifupdown2 such that if DHCP is used for an interface, and the policy setting sets dhcp-wait to no (meaning don't wait for dhclient to acquire an IP address), then don't check to see if the interface has a new IP address, since dhclient will still be working. Fixes #8512. Signed-off-by: Saikrishna Arcot --- ...02-disable-checks-when-using-no-wait.patch | 36 +++++++++++++++++++ src/ifupdown2/patch/series | 1 + 2 files changed, 37 insertions(+) create mode 100644 src/ifupdown2/patch/0002-disable-checks-when-using-no-wait.patch diff --git a/src/ifupdown2/patch/0002-disable-checks-when-using-no-wait.patch b/src/ifupdown2/patch/0002-disable-checks-when-using-no-wait.patch new file mode 100644 index 000000000000..2049b4b5dce7 --- /dev/null +++ b/src/ifupdown2/patch/0002-disable-checks-when-using-no-wait.patch @@ -0,0 +1,36 @@ +Don't check for a new IP address if dhcp-wait=no is set + +From: Saikrishna Arcot + +If dhcp-wait=no is specified in the ifupdown2 policy configuration, then +skip the check for a new IP address. When checking, dhclient probably +isn't done getting a new IP address from the DHCP server. + +This change is needed for ZTP (zero-touch provisioning) in SONiC. The +expectation is that dhclient will get started on all interfaces +(both management and in-band), and on some interfaces, there might not +be a DHCP server on the other end of the link. That'll mean that it may +get blocked here. + +SONiC ZTP needs dhclient to be started, but ifupdown2 shouldn't block on +dhclient being successful. +--- + ifupdown2/addons/dhcp.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/ifupdown2/addons/dhcp.py b/ifupdown2/addons/dhcp.py +index 9d5ce27..87f61e7 100644 +--- a/ifupdown2/addons/dhcp.py ++++ b/ifupdown2/addons/dhcp.py +@@ -103,7 +103,10 @@ class dhcp(Addon, moduleBase): + + while retry >= 0: + handler(ifname, **handler_kwargs) +- retry = self.dhclient_check(ifname, family, ip_config_before, retry, handler_kwargs.get("cmd_prefix")) ++ if handler_kwargs.get("wait", True): ++ retry = self.dhclient_check(ifname, family, ip_config_before, retry, handler_kwargs.get("cmd_prefix")) ++ else: ++ retry = -1 + + def dhclient_check(self, ifname, family, ip_config_before, retry, dhclient_cmd_prefix): + retry -= 1 diff --git a/src/ifupdown2/patch/series b/src/ifupdown2/patch/series index 48fb11e8c3c0..c4e412bbe83f 100644 --- a/src/ifupdown2/patch/series +++ b/src/ifupdown2/patch/series @@ -1 +1,2 @@ 0001-fix-broadcast-addr-encoding.patch +0002-disable-checks-when-using-no-wait.patch From 51fce2ae99ebbc1b7c836f7f8bc1a80960386340 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Sat, 21 Aug 2021 14:30:04 -0700 Subject: [PATCH 086/186] [ci]: fix artifact download syntax error for vstest (#8547) Signed-off-by: Guohan Lu --- azure-pipelines.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index ce2bb17e2ceb..33258a895469 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -72,7 +72,7 @@ stages: source: specific project: build pipeline: 9 - artifacts: sonic-swss-common.amd64.ubuntu20_04 + artifact: sonic-swss-common.amd64.ubuntu20_04 runVersion: 'latestFromBranch' runBranch: 'refs/heads/master' displayName: "Download sonic swss common deb packages" @@ -84,8 +84,8 @@ stages: - script: | set -x - sudo dpkg -i --force-confask,confnew ../sonic-swss-common.amd64.ubuntu20_04/libswsscommon_1.0.0_amd64.deb - sudo dpkg -i ../sonic-swss-common.amd64.ubuntu20_04/python3-swsscommon_1.0.0_amd64.deb + sudo dpkg -i --force-confask,confnew ../libswsscommon_1.0.0_amd64.deb + sudo dpkg -i ../python3-swsscommon_1.0.0_amd64.deb sudo docker load -i ../target/docker-sonic-vs.gz docker tag docker-sonic-vs:latest docker-sonic-vs:$(Build.BuildNumber) username=$(id -un) From 753ea80d23e477359998eef6faa56d8de4b967ec Mon Sep 17 00:00:00 2001 From: jostar-yang Date: Sun, 22 Aug 2021 09:13:51 +0800 Subject: [PATCH 087/186] [AS7326-56X] Fix led drv bug (#8541) CPLD offset in led drv is incorrect. #### How to verify it echo 1 > brightness, show green on in DIAG led echo 3 > brightness, show red on in DIAG led echo 4 > brightness, show blue on in DIAG led echo 5 > brightness, show green blinking in DIAG led Signed-off-by: Jostar Yang --- .../modules/accton_as7326_56x_leds.c | 58 +++++++++++++------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/modules/accton_as7326_56x_leds.c b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/modules/accton_as7326_56x_leds.c index 54df5b09eea8..7214ae55d3f9 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/modules/accton_as7326_56x_leds.c +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/modules/accton_as7326_56x_leds.c @@ -44,7 +44,7 @@ struct accton_as7326_56x_led_data { struct mutex update_lock; char valid; /* != 0 if registers are valid */ unsigned long last_updated; /* In jiffies */ - u8 reg_val[1]; /* only 1 register*/ + u8 reg_val[2]; }; static struct accton_as7326_56x_led_data *ledctl = NULL; @@ -54,16 +54,24 @@ static struct accton_as7326_56x_led_data *ledctl = NULL; #define LED_CNTRLER_I2C_ADDRESS (0x60) -#define LED_TYPE_DIAG_REG_MASK (0x3) -#define LED_MODE_DIAG_GREEN_VALUE (0x02) -#define LED_MODE_DIAG_RED_VALUE (0x01) -#define LED_MODE_DIAG_AMBER_VALUE (0x00) /*It's yellow actually. Green+Red=Yellow*/ -#define LED_MODE_DIAG_OFF_VALUE (0x03) - - -#define LED_TYPE_LOC_REG_MASK (0x80) -#define LED_MODE_LOC_ON_VALUE (0) -#define LED_MODE_LOC_OFF_VALUE (0x80) +#define LED_TYPE_DIAG_REG_MASK (0x3f) +#define LED_MODE_DIAG_GREEN_VALUE (0x05) +#define LED_MODE_DIAG_RED_VALUE (0x06) +#define LED_MODE_DIAG_BLUE_VALUE (0x03) +#define LED_MODE_DIAG_GREEN_BLINK_VALUE (0x17) +#define LED_MODE_DIAG_RED_BLINK_VALUE (0x0d) +#define LED_MODE_DIAG_BLUE_BLINK_VALUE (0x27) + +#define LED_MODE_DIAG_OFF_VALUE (0x07) + +#define LED_TYPE_LOC_REG_MASK (0x3f) +#define LED_MODE_LOC_GREEN_VALUE (0x05) +#define LED_MODE_LOC_RED_VALUE (0x06) +#define LED_MODE_LOC_BLUE_VALUE (0x03) +#define LED_MODE_LOC_GREEN_BLINK_VALUE (0x17) +#define LED_MODE_LOC_RED_BLINK_VALUE (0x0d) +#define LED_MODE_LOC_BLUE_BLINK_VALUE (0x27) +#define LED_MODE_LOC_OFF_VALUE (0x07) enum led_type { LED_TYPE_DIAG, @@ -79,7 +87,8 @@ struct led_reg { }; static const struct led_reg led_reg_map[] = { - {(1<reg_val[0]); + return led_reg_val_to_light_mode(LED_TYPE_LOC, ledctl->reg_val[1]); } static void accton_as7326_56x_led_auto_set(struct led_classdev *led_cdev, @@ -287,7 +307,7 @@ static struct led_classdev accton_as7326_56x_leds[] = { .brightness_set = accton_as7326_56x_led_diag_set, .brightness_get = accton_as7326_56x_led_diag_get, .flags = LED_CORE_SUSPENDRESUME, - .max_brightness = LED_MODE_RED, + .max_brightness = LED_MODE_BLUE_BLINK, }, [LED_TYPE_LOC] = { .name = "accton_as7326_56x_led::loc", @@ -295,7 +315,7 @@ static struct led_classdev accton_as7326_56x_leds[] = { .brightness_set = accton_as7326_56x_led_loc_set, .brightness_get = accton_as7326_56x_led_loc_get, .flags = LED_CORE_SUSPENDRESUME, - .max_brightness = LED_MODE_BLUE, + .max_brightness = LED_MODE_BLUE_BLINK, }, [LED_TYPE_FAN] = { .name = "accton_as7326_56x_led::fan", From b4a068121dfbd77caa445a743ddc8c861842bf54 Mon Sep 17 00:00:00 2001 From: Junhua Zhai Date: Sat, 21 Aug 2021 18:14:19 -0700 Subject: [PATCH 088/186] [gearbox] Add credo driver packages (#8536) The credo driver packages provides firmware, sai sdk for gearbox (external PHY) in Arista 7280. --- platform/components/docker-gbsyncd-credo.mk | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/platform/components/docker-gbsyncd-credo.mk b/platform/components/docker-gbsyncd-credo.mk index a1231d846355..0dc6875efe85 100644 --- a/platform/components/docker-gbsyncd-credo.mk +++ b/platform/components/docker-gbsyncd-credo.mk @@ -1,12 +1,14 @@ DOCKER_GBSYNCD_PLATFORM_CODE = credo -LIBSAI_CREDO = libsaicredo_0.5.1-alpha.2_amd64.deb -$(LIBSAI_CREDO)_URL = -LIBSAI_CREDO_OWL = libsaicredo-owl_0.5.1-alpha.2_amd64.deb -$(LIBSAI_CREDO_OWL)_URL = +LIBSAI_CREDO = libsaicredo_0.5.2_amd64.deb +$(LIBSAI_CREDO)_URL = "https://sonicstorage.blob.core.windows.net/packages/credosai/libsaicredo_0.5.2_amd64.deb?st=2021-08-20T01%3A39%3A58Z&se=2100-08-21T01%3A39%3A00Z&sp=rl&sv=2018-03-28&sr=b&sig=H3Ew%2Be17i9VN%2BZ6cmAmLuTEDDK%2FsJ65WUHiINTzB9eE%3D" +LIBSAI_CREDO_OWL = libsaicredo-owl_0.5.2_amd64.deb +$(LIBSAI_CREDO_OWL)_URL = "https://sonicstorage.blob.core.windows.net/packages/credosai/libsaicredo-owl_0.5.2_amd64.deb?st=2021-08-20T01%3A39%3A09Z&se=2100-08-21T01%3A39%3A00Z&sp=rl&sv=2018-03-28&sr=b&sig=YB%2BnILFF2Z4tIbu3utcCG857Y6ae7vS5Qmyk3pzscIw%3D" ifneq ($($(LIBSAI_CREDO)_URL),) include $(PLATFORM_PATH)/../template/docker-gbsyncd-base.mk +$(DOCKER_GBSYNCD_BASE)_VERSION = 1.0.0 +$(DOCKER_GBSYNCD_BASE)_PACKAGE_NAME = gbsyncd $(DOCKER_GBSYNCD_BASE)_CONTAINER_NAME = gbsyncd-$(DOCKER_GBSYNCD_PLATFORM_CODE) $(DOCKER_GBSYNCD_BASE)_PATH = $(PLATFORM_PATH)/../components/docker-gbsyncd-$(DOCKER_GBSYNCD_PLATFORM_CODE) SONIC_ONLINE_DEBS += $(LIBSAI_CREDO) $(LIBSAI_CREDO_OWL) From 7e4c4e2b9522ec49a4bd70c83e8cea5ecec6c25d Mon Sep 17 00:00:00 2001 From: Alexander Allen Date: Sun, 22 Aug 2021 05:53:03 -0700 Subject: [PATCH 089/186] [Mellanox] Add 2x100G and 4x50G breakout modes to MSN4410 platform (#8419) - Why I did it The MSN4410 platform was missing 2x100G and 4x50G supported breakout modes in platform.json - How I did it Added the aforementioned breakout modes to platform.json - How to verify it Run show interface breakout on a MSN4410 and verify that 2x100G and 4x50G are listed in the supported breakout modes for ports 1-24. --- .../ACS-MSN4410/port_config.ini | 50 ++--- .../x86_64-mlnx_msn4410-r0/platform.json | 192 +++++++++--------- 2 files changed, 121 insertions(+), 121 deletions(-) diff --git a/device/mellanox/x86_64-mlnx_msn4410-r0/ACS-MSN4410/port_config.ini b/device/mellanox/x86_64-mlnx_msn4410-r0/ACS-MSN4410/port_config.ini index 5b76c3a59d40..3df8315b49ef 100644 --- a/device/mellanox/x86_64-mlnx_msn4410-r0/ACS-MSN4410/port_config.ini +++ b/device/mellanox/x86_64-mlnx_msn4410-r0/ACS-MSN4410/port_config.ini @@ -1,28 +1,28 @@ # name lanes alias index -Ethernet0 0,1,2,3 etp1 1 -Ethernet8 8,9,10,11 etp2 2 -Ethernet16 16,17,18,19 etp3 3 -Ethernet24 24,25,26,27 etp4 4 -Ethernet32 32,33,34,35 etp5 5 -Ethernet40 40,41,42,43 etp6 6 -Ethernet48 48,49,50,51 etp7 7 -Ethernet56 56,57,58,59 etp8 8 -Ethernet64 64,65,66,67 etp9 9 -Ethernet72 72,73,74,75 etp10 10 -Ethernet80 80,81,82,83 etp11 11 -Ethernet88 88,89,90,91 etp12 12 -Ethernet96 96,97,98,99 etp13 13 -Ethernet104 104,105,106,107 etp14 14 -Ethernet112 112,113,114,115 etp15 15 -Ethernet120 120,121,122,123 etp16 16 -Ethernet128 128,129,130,131 etp17 17 -Ethernet136 136,137,138,139 etp18 18 -Ethernet144 144,145,146,147 etp19 19 -Ethernet152 152,153,154,155 etp20 20 -Ethernet160 160,161,162,163 etp21 21 -Ethernet168 168,169,170,171 etp22 22 -Ethernet176 176,177,178,179 etp23 23 -Ethernet184 184,185,186,187 etp24 24 +Ethernet0 0,1,2,3,4,5,6,7 etp1 1 +Ethernet8 8,9,10,11,12,13,14,15 etp2 2 +Ethernet16 16,17,18,19,20,21,22,23 etp3 3 +Ethernet24 24,25,26,27,28,29,30,31 etp4 4 +Ethernet32 32,33,34,35,36,37,38,39 etp5 5 +Ethernet40 40,41,42,43,44,45,46,47 etp6 6 +Ethernet48 48,49,50,51,52,53,54,55 etp7 7 +Ethernet56 56,57,58,59,60,61,62,63 etp8 8 +Ethernet64 64,65,66,67,68,69,70,71 etp9 9 +Ethernet72 72,73,74,75,76,77,78,79 etp10 10 +Ethernet80 80,81,82,83,84,85,86,87 etp11 11 +Ethernet88 88,89,90,91,92,93,94,95 etp12 12 +Ethernet96 96,97,98,99,100,101,102,103 etp13 13 +Ethernet104 104,105,106,107,108,109,110,111 etp14 14 +Ethernet112 112,113,114,115,116,117,118,119 etp15 15 +Ethernet120 120,121,122,123,124,125,126,127 etp16 16 +Ethernet128 128,129,130,131,132,133,134,135 etp17 17 +Ethernet136 136,137,138,139,140,141,142,143 etp18 18 +Ethernet144 144,145,146,147,148,149,150,151 etp19 19 +Ethernet152 152,153,154,155,156,157,158,159 etp20 20 +Ethernet160 160,161,162,163,164,165,166,167 etp21 21 +Ethernet168 168,169,170,171,172.173,174,175 etp22 22 +Ethernet176 176,177,178,179,180,181,182,183 etp23 23 +Ethernet184 184,185,186,187,188,189,190,191 etp24 24 Ethernet192 192,193,194,195,196,197,198,199 etp25 25 Ethernet200 200,201,202,203,204,205,206,207 etp26 26 Ethernet208 208,209,210,211,212,213,214,215 etp27 27 @@ -30,4 +30,4 @@ Ethernet216 216,217,218,219,220,221,222,223 etp28 28 Ethernet224 224,225,226,227,228,229,230,231 etp29 29 Ethernet232 232,233,234,235,236,237,238,239 etp30 30 Ethernet240 240,241,242,243,244,245,246,247 etp31 31 -Ethernet248 248,249,250,251,252,253,254,255 etp32 32 \ No newline at end of file +Ethernet248 248,249,250,251,252,253,254,255 etp32 32 diff --git a/device/mellanox/x86_64-mlnx_msn4410-r0/platform.json b/device/mellanox/x86_64-mlnx_msn4410-r0/platform.json index 75722fd0d5e3..80c532b175e4 100644 --- a/device/mellanox/x86_64-mlnx_msn4410-r0/platform.json +++ b/device/mellanox/x86_64-mlnx_msn4410-r0/platform.json @@ -408,219 +408,219 @@ }, "interfaces": { "Ethernet0": { - "index": "1,1,1,1", - "lanes": "0,1,2,3", + "index": "1,1,1,1,1,1,1,1", + "lanes": "0,1,2,3,4,5,6,7", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp1"], - "2x50G[25G,10G,1G]": ["etp1a", "etp1b"], - "4x25G[10G,1G]": ["etp1a", "etp1b", "etp1c", "etp1d"] + "2x100G[50G,25G,10G,1G]": ["etp1a", "etp1b"], + "4x50G[25G,10G,1G]": ["etp1a", "etp1b", "etp1c", "etp1d"] } }, "Ethernet8": { - "index": "2,2,2,2", - "lanes": "8,9,10,11", + "index": "2,2,2,2,2,2,2,2", + "lanes": "8,9,10,11,12,13,14,15", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp2"], - "2x50G[25G,10G,1G]": ["etp2a", "etp2b"], - "4x25G[10G,1G]": ["etp2a", "etp2b", "etp2c", "etp2d"] + "2x100G[50G,25G,10G,1G]": ["etp2a", "etp2b"], + "4x50G[25G,10G,1G]": ["etp2a", "etp2b", "etp2c", "etp2d"] } }, "Ethernet16": { - "index": "3,3,3,3", - "lanes": "16,17,18,19", + "index": "3,3,3,3,3,3,3,3", + "lanes": "16,17,18,19,20,21,22,23", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp3"], - "2x50G[25G,10G,1G]": ["etp3a", "etp3b"], - "4x25G[10G,1G]": ["etp3a", "etp3b", "etp3c", "etp3d"] + "2x100G[50G,25G,10G,1G]": ["etp3a", "etp3b"], + "4x50G[25G,10G,1G]": ["etp3a", "etp3b", "etp3c", "etp3d"] } }, "Ethernet24": { - "index": "4,4,4,4", - "lanes": "24,25,26,27", + "index": "4,4,4,4,4,4,4,4", + "lanes": "24,25,26,27,28,29,30,31", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp4"], - "2x50G[25G,10G,1G]": ["etp4a", "etp4b"], - "4x25G[10G,1G]": ["etp4a", "etp4b", "etp4c", "etp4d"] + "2x100G[50G,25G,10G,1G]": ["etp4a", "etp4b"], + "4x50G[25G,10G,1G]": ["etp4a", "etp4b", "etp4c", "etp4d"] } }, "Ethernet32": { - "index": "5,5,5,5", - "lanes": "32,33,34,35", + "index": "5,5,5,5,5,5,5,5,5", + "lanes": "32,33,34,35,36,37,38,39", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp5"], - "2x50G[25G,10G,1G]": ["etp5a", "etp5b"], - "4x25G[10G,1G]": ["etp5a", "etp5b", "etp5c", "etp5d"] + "2x100G[50G,25G,10G,1G]": ["etp5a", "etp5b"], + "4x50G[25G,10G,1G]": ["etp5a", "etp5b", "etp5c", "etp5d"] } }, "Ethernet40": { - "index": "6,6,6,6", - "lanes": "40,41,42,43", + "index": "6,6,6,6,6,6,6,6", + "lanes": "40,41,42,43,44,45,46,47", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp6"], - "2x50G[25G,10G,1G]": ["etp6a", "etp6b"], - "4x25G[10G,1G]": ["etp6a", "etp6b", "etp6c", "etp6d"] + "2x100G[50G,25G,10G,1G]": ["etp6a", "etp6b"], + "4x50G[25G,10G,1G]": ["etp6a", "etp6b", "etp6c", "etp6d"] } }, "Ethernet48": { - "index": "7,7,7,7", - "lanes": "48,49,50,51", + "index": "7,7,7,7,7,7,7,7", + "lanes": "48,49,50,51,52,53,54,55", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp7"], - "2x50G[25G,10G,1G]": ["etp7a", "etp7b"], - "4x25G[10G,1G]": ["etp7a", "etp7b", "etp7c", "etp7d"] + "2x100G[50G,25G,10G,1G]": ["etp7a", "etp7b"], + "4x50G[25G,10G,1G]": ["etp7a", "etp7b", "etp7c", "etp7d"] } }, "Ethernet56": { - "index": "8,8,8,8", - "lanes": "56,57,58,59", + "index": "8,8,8,8,8,8,8,8", + "lanes": "56,57,58,59,60,61,62,63", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp8"], - "2x50G[25G,10G,1G]": ["etp8a", "etp8b"], - "4x25G[10G,1G]": ["etp8a", "etp8b", "etp8c", "etp8d"] + "2x100G[50G,25G,10G,1G]": ["etp8a", "etp8b"], + "4x50G[25G,10G,1G]": ["etp8a", "etp8b", "etp8c", "etp8d"] } }, "Ethernet64": { - "index": "9,9,9,9", - "lanes": "64,65,66,67", + "index": "9,9,9,9,9,9,9,9", + "lanes": "64,65,66,67,68,69,70,71", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp9"], - "2x50G[25G,10G,1G]": ["etp9a", "etp9b"], - "4x25G[10G,1G]": ["etp9a", "etp9b", "etp9c", "etp9d"] + "2x100G[50G,25G,10G,1G]": ["etp9a", "etp9b"], + "4x50G[25G,10G,1G]": ["etp9a", "etp9b", "etp9c", "etp9d"] } }, "Ethernet72": { - "index": "10,10,10,10", - "lanes": "72,73,74,75", + "index": "10,10,10,10,10,10,10,10", + "lanes": "72,73,74,75,76,77,78,79", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp10"], - "2x50G[25G,10G,1G]": ["etp10a", "etp10b"], - "4x25G[10G,1G]": ["etp10a", "etp10b", "etp10c", "etp10d"] + "2x100G[50G,25G,10G,1G]": ["etp10a", "etp10b"], + "4x50G[25G,10G,1G]": ["etp10a", "etp10b", "etp10c", "etp10d"] } }, "Ethernet80": { - "index": "11,11,11,11", - "lanes": "80,81,82,83", + "index": "11,11,11,11,11,11,11,11", + "lanes": "80,81,82,83,84,85,86,87", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp11"], - "2x50G[25G,10G,1G]": ["etp11a", "etp11b"], - "4x25G[10G,1G]": ["etp11a", "etp11b", "etp11c", "etp11d"] + "2x100G[50G,25G,10G,1G]": ["etp11a", "etp11b"], + "4x50G[25G,10G,1G]": ["etp11a", "etp11b", "etp11c", "etp11d"] } }, "Ethernet88": { - "index": "12,12,12,12", - "lanes": "88,89,90,91", + "index": "12,12,12,12,12,12,12,12", + "lanes": "88,89,90,91,92,93,94,95", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp12"], - "2x50G[25G,10G,1G]": ["etp12a", "etp12b"], - "4x25G[10G,1G]": ["etp12a", "etp12b", "etp12c", "etp12d"] + "2x100G[50G,25G,10G,1G]": ["etp12a", "etp12b"], + "4x50G[25G,10G,1G]": ["etp12a", "etp12b", "etp12c", "etp12d"] } }, "Ethernet96": { - "index": "13,13,13,13", - "lanes": "96,97,98,99", + "index": "13,13,13,13,13,13,13,13", + "lanes": "96,97,98,99,100,101,102,103", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp13"], - "2x50G[25G,10G,1G]": ["etp13a", "etp13b"], - "4x25G[10G,1G]": ["etp13a", "etp13b", "etp13c", "etp13d"] + "2x100G[50G,25G,10G,1G]": ["etp13a", "etp13b"], + "4x50G[25G,10G,1G]": ["etp13a", "etp13b", "etp13c", "etp13d"] } }, "Ethernet104": { - "index": "14,14,14,14", - "lanes": "104,105,106,107", + "index": "14,14,14,14,14,14,14,14", + "lanes": "104,105,106,107,108,109,110,111", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp14"], - "2x50G[25G,10G,1G]": ["etp14a", "etp14b"], - "4x25G[10G,1G]": ["etp14a", "etp14b", "etp14c", "etp14d"] + "2x100G[50G,25G,10G,1G]": ["etp14a", "etp14b"], + "4x50G[25G,10G,1G]": ["etp14a", "etp14b", "etp14c", "etp14d"] } }, "Ethernet112": { - "index": "15,15,15,15", - "lanes": "112,113,114,115", + "index": "15,15,15,15,15,15,15,15", + "lanes": "112,113,114,115,116,117,118,119", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp15"], - "2x50G[25G,10G,1G]": ["etp15a", "etp15b"], - "4x25G[10G,1G]": ["etp15a", "etp15b", "etp15c", "etp15d"] + "2x100G[50G,25G,10G,1G]": ["etp15a", "etp15b"], + "4x50G[25G,10G,1G]": ["etp15a", "etp15b", "etp15c", "etp15d"] } }, "Ethernet120": { - "index": "16,16,16,16", - "lanes": "120,121,122,123", + "index": "16,16,16,16,16,16,16,16", + "lanes": "120,121,122,123,124,125,126,127", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp16"], - "2x50G[25G,10G,1G]": ["etp16a", "etp16b"], - "4x25G[10G,1G]": ["etp16a", "etp16b", "etp16c", "etp16d"] + "2x100G[50G,25G,10G,1G]": ["etp16a", "etp16b"], + "4x50G[25G,10G,1G]": ["etp16a", "etp16b", "etp16c", "etp16d"] } }, "Ethernet128": { - "index": "17,17,17,17", - "lanes": "128,129,130,131", + "index": "17,17,17,17,17,17,17,17", + "lanes": "128,129,130,131,132,133,134,135", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp17"], - "2x50G[25G,10G,1G]": ["etp17a", "etp17b"], - "4x25G[10G,1G]": ["etp17a", "etp17b", "etp17c", "etp17d"] + "2x100G[50G,25G,10G,1G]": ["etp17a", "etp17b"], + "4x50G[25G,10G,1G]": ["etp17a", "etp17b", "etp17c", "etp17d"] } }, "Ethernet136": { - "index": "18,18,18,18", - "lanes": "136,137,138,139", + "index": "18,18,18,18,18,18,18,18", + "lanes": "136,137,138,139,140,141,142,143", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp18"], - "2x50G[25G,10G,1G]": ["etp18a", "etp18b"], - "4x25G[10G,1G]": ["etp18a", "etp18b", "etp18c", "etp18d"] + "2x100G[50G,25G,10G,1G]": ["etp18a", "etp18b"], + "4x50G[25G,10G,1G]": ["etp18a", "etp18b", "etp18c", "etp18d"] } }, "Ethernet144": { - "index": "19,19,19,19", - "lanes": "144,145,146,147", + "index": "19,19,19,19,19,19,19,19", + "lanes": "144,145,146,147,148,149,150,151", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp19"], - "2x50G[25G,10G,1G]": ["etp19a", "etp19b"], - "4x25G[10G,1G]": ["etp19a", "etp19b", "etp19c", "etp19d"] + "2x100G[50G,25G,10G,1G]": ["etp19a", "etp19b"], + "4x50G[25G,10G,1G]": ["etp19a", "etp19b", "etp19c", "etp19d"] } }, "Ethernet152": { - "index": "20,20,20,20", - "lanes": "152,153,154,155", + "index": "20,20,20,20,20,20,20,20", + "lanes": "152,153,154,155,156,157,158,159", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp20"], - "2x50G[25G,10G,1G]": ["etp20a", "etp20b"], - "4x25G[10G,1G]": ["etp20a", "etp20b", "etp20c", "etp20d"] + "2x100G[50G,25G,10G,1G]": ["etp20a", "etp20b"], + "4x50G[25G,10G,1G]": ["etp20a", "etp20b", "etp20c", "etp20d"] } }, "Ethernet160": { - "index": "21,21,21,21", - "lanes": "160,161,162,163", + "index": "21,21,21,21,21,21,21,21", + "lanes": "160,161,162,163,164,165,166,167", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp21"], - "2x50G[25G,10G,1G]": ["etp21a", "etp21b"], - "4x25G[10G,1G]": ["etp21a", "etp21b", "etp21c", "etp21d"] + "2x100G[50G,25G,10G,1G]": ["etp21a", "etp21b"], + "4x50G[25G,10G,1G]": ["etp21a", "etp21b", "etp21c", "etp21d"] } }, "Ethernet168": { - "index": "22,22,22,22", - "lanes": "168,169,170,171", + "index": "22,22,22,22,22,22,22,22", + "lanes": "168,169,170,171,172,173,174,175", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp22"], - "2x50G[25G,10G,1G]": ["etp22a", "etp22b"], - "4x25G[10G,1G]": ["etp22a", "etp22b", "etp22c", "etp22d"] + "2x100G[50G,25G,10G,1G]": ["etp22a", "etp22b"], + "4x50G[25G,10G,1G]": ["etp22a", "etp22b", "etp22c", "etp22d"] } }, "Ethernet176": { - "index": "23,23,23,23", - "lanes": "176,177,178,179", + "index": "23,23,23,23,23,23,23,23", + "lanes": "176,177,178,179,180,181,182,183", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp23"], - "2x50G[25G,10G,1G]": ["etp23a", "etp23b"], - "4x25G[10G,1G]": ["etp23a", "etp23b", "etp23c", "etp23d"] + "2x100G[50G,25G,10G,1G]": ["etp23a", "etp23b"], + "4x50G[25G,10G,1G]": ["etp23a", "etp23b", "etp23c", "etp23d"] } }, "Ethernet184": { - "index": "24,24,24,24", - "lanes": "184,185,186,187", + "index": "24,24,24,24,24,24,24,24", + "lanes": "184,185,186,187,188,189,190,191", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp24"], - "2x50G[25G,10G,1G]": ["etp24a", "etp24b"], - "4x25G[10G,1G]": ["etp24a", "etp24b", "etp24c", "etp24d"] + "2x100G[50G,25G,10G,1G]": ["etp24a", "etp24b"], + "4x50G[25G,10G,1G]": ["etp24a", "etp24b", "etp24c", "etp24d"] } }, "Ethernet192": { From d0c73b050d860162a2c572a907c3b46595caed4c Mon Sep 17 00:00:00 2001 From: Alexander Allen Date: Sun, 22 Aug 2021 05:54:43 -0700 Subject: [PATCH 090/186] [Mellanox] Upgrade Mellanox firmware tools to 4.17.0 (#8299) - Why I did it New release of MFT has the following changelog / RN Fixed an issue that resulted in getting MVPD read errors from the mlxfwmanager during fast reboot. Fixed mlxuptime sometimes generating a time less than previous due the wrong frequency calculation - How I did it Update makefile pointer to new version. - How to verify it Manually tested on all Mellanox platforms. --- platform/mellanox/mft.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/mellanox/mft.mk b/platform/mellanox/mft.mk index 919e6fae9d9a..5e9644b5703c 100644 --- a/platform/mellanox/mft.mk +++ b/platform/mellanox/mft.mk @@ -1,7 +1,7 @@ # Mellanox SAI -MFT_VERSION = 4.16.0 -MFT_REVISION = 105 +MFT_VERSION = 4.17.0 +MFT_REVISION = 106 export MFT_VERSION MFT_REVISION From 6530f938813db00801d14b7861c533850764e1ba Mon Sep 17 00:00:00 2001 From: Kostiantyn Yarovyi Date: Sun, 22 Aug 2021 20:59:57 +0300 Subject: [PATCH 091/186] [Pcied] run by python 3 Why I did it Pcied running by python 2. How I did it dropped python2 support and add python3 support for pcied in file docker-pmon.supervisord.conf.j2 How to verify it docker exec pmon supervisorctl status --- dockers/docker-platform-monitor/docker-pmon.supervisord.conf.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/docker-platform-monitor/docker-pmon.supervisord.conf.j2 b/dockers/docker-platform-monitor/docker-pmon.supervisord.conf.j2 index b7eca4103ef2..1bad4ab36731 100644 --- a/dockers/docker-platform-monitor/docker-pmon.supervisord.conf.j2 +++ b/dockers/docker-platform-monitor/docker-pmon.supervisord.conf.j2 @@ -150,7 +150,7 @@ dependent_startup_wait_for=rsyslogd:running {% if not skip_pcied %} [program:pcied] -command=/usr/local/bin/pcied +command={% if API_VERSION == 3 and 'pcied' not in python2_daemons %}python3 {% else %} python2 {% endif %}/usr/local/bin/pcied priority=10 autostart=false autorestart=unexpected From 26c6e7f68f8cfb97c04644a445819e88a0fa1b8e Mon Sep 17 00:00:00 2001 From: Prince George <45705344+prgeor@users.noreply.github.com> Date: Mon, 23 Aug 2021 09:55:15 +0530 Subject: [PATCH 092/186] submodule update for sonic-linux-kernel (#8544) Signed-off-by: Prince George --- 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 14a4212e279e..ff9762e8dc62 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit 14a4212e279e579048afe28247e80420e7b46de6 +Subproject commit ff9762e8dc628bf01c2e8393c6cbedc67223489b From f5ec889f593ca9350873955e7f49e5a8dcb81533 Mon Sep 17 00:00:00 2001 From: Lior Avramov <73036155+liorghub@users.noreply.github.com> Date: Mon, 23 Aug 2021 13:28:59 +0300 Subject: [PATCH 093/186] [sonic-cfggen] Allow cfggen to work on system without ports (#7999) #### Why I did it Allow cfggen to work on system without ports in platform.json or in port_config.ini #### How I did it Add json write of PORT section only if the dictionary that contains the ports is not empty. #### How to verify it sonic-cfggen -k ACS-MSN3700 -H -j /etc/sonic/init_cfg.json --print-data --- src/sonic-config-engine/portconfig.py | 8 ++++---- src/sonic-config-engine/sonic-cfggen | 2 +- .../tests/test_cfggen_platformJson.py | 13 +++++++++++++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/sonic-config-engine/portconfig.py b/src/sonic-config-engine/portconfig.py index 2eceb81bcac4..260632b754f9 100644 --- a/src/sonic-config-engine/portconfig.py +++ b/src/sonic-config-engine/portconfig.py @@ -261,9 +261,9 @@ def parse_platform_json_file(hwsku_json_file, platform_json_file): port_dict = readJson(platform_json_file) hwsku_dict = readJson(hwsku_json_file) - if not port_dict: + if port_dict is None: raise Exception("port_dict is none") - if not hwsku_dict: + if hwsku_dict is None: raise Exception("hwsku_dict is none") if INTF_KEY not in port_dict or INTF_KEY not in hwsku_dict: @@ -285,8 +285,8 @@ def parse_platform_json_file(hwsku_json_file, platform_json_file): ports.update(child_ports) - if not ports: - raise Exception("Ports dictionary is empty") + if ports is None: + raise Exception("Ports dictionary is None") for i in ports.keys(): port_alias_map[ports[i]["alias"]]= i diff --git a/src/sonic-config-engine/sonic-cfggen b/src/sonic-config-engine/sonic-cfggen index 410e4da17c0b..cb878037dfd8 100755 --- a/src/sonic-config-engine/sonic-cfggen +++ b/src/sonic-config-engine/sonic-cfggen @@ -304,7 +304,7 @@ def main(): if args.port_config is None: args.port_config = device_info.get_path_to_port_config_file(hwsku) (ports, _, _) = get_port_config(hwsku, platform, args.port_config, asic_id) - if not ports: + if ports is None: print('Failed to get port config', file=sys.stderr) sys.exit(1) deep_update(data, {'PORT': ports}) diff --git a/src/sonic-config-engine/tests/test_cfggen_platformJson.py b/src/sonic-config-engine/tests/test_cfggen_platformJson.py index 4c7fc9729e78..1765fb4f3a2c 100644 --- a/src/sonic-config-engine/tests/test_cfggen_platformJson.py +++ b/src/sonic-config-engine/tests/test_cfggen_platformJson.py @@ -2,11 +2,17 @@ import json import os import subprocess +import sys import tests.common_utils as utils from unittest import TestCase +from portconfig import get_port_config, INTF_KEY +if sys.version_info.major == 3: + from unittest import mock +else: + import mock # Global Variable PLATFORM_OUTPUT_FILE = "platform_output.json" @@ -85,3 +91,10 @@ def test_platform_json_all_ethernet_interfaces(self): output_dict = ast.literal_eval(output.strip()) expected = ast.literal_eval(json.dumps(fh_data)) self.assertDictEqual(output_dict, expected) + + @mock.patch('portconfig.readJson', mock.MagicMock(return_value={INTF_KEY:{}})) + @mock.patch('os.path.isfile', mock.MagicMock(return_value=True)) + def test_platform_json_no_interfaces(self): + (ports, _, _) = get_port_config(port_config_file=self.platform_json) + self.assertNotEqual(ports, None) + self.assertEqual(ports, {}) From cdfb4855dc36942ae5290d7b27750091d736d943 Mon Sep 17 00:00:00 2001 From: byu343 Date: Mon, 23 Aug 2021 18:56:23 -0700 Subject: [PATCH 094/186] [macsec] Add eapol to copp config (#8416) This change enables the control packets of MACsec to be processed by CPU. --- files/image_config/copp/copp_cfg.j2 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/files/image_config/copp/copp_cfg.j2 b/files/image_config/copp/copp_cfg.j2 index 481051cba611..c9b15c1279b5 100755 --- a/files/image_config/copp/copp_cfg.j2 +++ b/files/image_config/copp/copp_cfg.j2 @@ -91,6 +91,10 @@ "trap_ids": "ip2me", "trap_group": "queue1_group1" }, + "macsec": { + "trap_ids": "eapol", + "trap_group": "queue4_group3" + }, "nat": { "trap_ids": "src_nat_miss,dest_nat_miss", "trap_group": "queue1_group2" From 5ff87e16a908c4958aede1c6bfbfb6ab6be1768b Mon Sep 17 00:00:00 2001 From: shlomibitton <60430976+shlomibitton@users.noreply.github.com> Date: Tue, 24 Aug 2021 10:01:37 +0300 Subject: [PATCH 095/186] [sonic-utilities] submodule update (#8557) 27502f0 2021-08-23 [dhcp_relay] Update CLI reference document and add a new API for ip address type (#1717) --- src/sonic-utilities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-utilities b/src/sonic-utilities index 29f4a1642024..27502f0e2f58 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit 29f4a1642024050a104d07316c15e012905f7d32 +Subproject commit 27502f0e2f58c742dfa508b260a59d45092114ae From f7de685be2c9050024a4ed038dbd0425892f5551 Mon Sep 17 00:00:00 2001 From: Christian Svensson Date: Tue, 24 Aug 2021 19:54:13 +0200 Subject: [PATCH 096/186] [mgmt-framework]: Fix typo in mgmt_vars.j2 (#8475) Signed-off-by: Christian Svensson --- dockers/docker-sonic-mgmt-framework/mgmt_vars.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockers/docker-sonic-mgmt-framework/mgmt_vars.j2 b/dockers/docker-sonic-mgmt-framework/mgmt_vars.j2 index f43b11ba4199..b04446a11a5a 100644 --- a/dockers/docker-sonic-mgmt-framework/mgmt_vars.j2 +++ b/dockers/docker-sonic-mgmt-framework/mgmt_vars.j2 @@ -1,4 +1,4 @@ { - "rest_server": {% if REST_SERVER is defined and "default" in RESET_SERVER.keys() %}{{ REST_SERVER['default'] }}{% else %}""{% endif %}, + "rest_server": {% if REST_SERVER is defined and "default" in REST_SERVER.keys() %}{{ REST_SERVER['default'] }}{% else %}""{% endif %}, "x509" : {% if "x509" in DEVICE_METADATA.keys() %}{{ DEVICE_METADATA["x509"] }}{% else %}""{% endif %} } From 92dbbf1e3a53f743c7ca53e0798d87faf9320226 Mon Sep 17 00:00:00 2001 From: vdahiya12 <67608553+vdahiya12@users.noreply.github.com> Date: Tue, 24 Aug 2021 11:14:35 -0700 Subject: [PATCH 097/186] [sonic-platform-common] submodule update (#8559) Signed-off-by: vaibhav-dahiya c17c370 [Y-Cable][Broadcom] Broadcom implementation of YCable class which inherits from YCableBase required for Y-Cable API's in sonic-platform-daemons (#208) --- src/sonic-platform-common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-platform-common b/src/sonic-platform-common index ce51894d342e..c17c37065e99 160000 --- a/src/sonic-platform-common +++ b/src/sonic-platform-common @@ -1 +1 @@ -Subproject commit ce51894d342e170681658954b6c6b4db4c5cbeac +Subproject commit c17c37065e9956593b2025ee7fe1362c6ffea64d From 948ad541da56bd73de80900c6bf8ff20c83bb07f Mon Sep 17 00:00:00 2001 From: shlomibitton <60430976+shlomibitton@users.noreply.github.com> Date: Wed, 25 Aug 2021 04:03:08 +0300 Subject: [PATCH 098/186] Update sonic-swss-common submodule (#8565) 508202b 2021-08-24 Add a new field for FLEX_COUNTER_TABLE to indicate delay for flex counters (#523) 9fd7dbf 2021-08-20 [logger] Make map access thread safe and proper terminate thread (#510) e4c3d0b 2021-08-20 Test with coverage output, publish gcov on Azure pipelines (#517) ef21bec 2021-08-18 Update schema.h to include config_db DHCP and state_db counter table (#521) 4e4eb9d 2021-08-19 [schema] Add next hop group table to schema (#475) Signed-off-by: Shlomi Bitton --- 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 e95a4666ad90..508202bf540a 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit e95a4666ad90f13c3675efb9238f273df5232e91 +Subproject commit 508202bf540a86c98c38beb793c02afa9c05f253 From 7c44033550e279c52d99a57154e80f97207ebe8a Mon Sep 17 00:00:00 2001 From: Renuka Manavalan <47282725+renukamanavalan@users.noreply.github.com> Date: Tue, 24 Aug 2021 23:10:09 -0700 Subject: [PATCH 099/186] [submodule]: update sonic-utilities (#8560) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * e12c1c8 (origin/master, origin/HEAD) disk_check: Script updated (#1747) * 27502f0 [dhcp_relay] Update CLI reference document and add a new API for ip address type (#1717) * cd3ee78 [Config] Update config command of kdump (#1700) * 4cb3b72 [Show] Update the subcommands of Kdump. (#1682) * c03342f [sfputil] Gracefully handle improper 'specification_compliance' field (#1741) * 103de86 [CLI][MPLS][Show] Fixed show and config mpls cli bug where invalid interfaces would pasâ#1770) * 04cc047 [route_check] Filter out VNET routes (#1612) * 9395ebd [show][platform] Revise chassis info fallback to only fall back on pmon crash (#1751) --- src/sonic-utilities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-utilities b/src/sonic-utilities index 27502f0e2f58..e12c1c82c26b 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit 27502f0e2f58c742dfa508b260a59d45092114ae +Subproject commit e12c1c82c26bc67f887c4324066af002b30119ad From 56533ceb9e4899e91fcffbd95c32978bcb659247 Mon Sep 17 00:00:00 2001 From: shlomibitton <60430976+shlomibitton@users.noreply.github.com> Date: Wed, 25 Aug 2021 10:48:39 +0300 Subject: [PATCH 100/186] [dhcp_relay] Adapt config/show CLI commands to support DHCPv6 relay (#8211) #### Why I did it - Adapt config/show CLI commands to support DHCPv6 relay - Support multiple dhcp servers assignment in one command - Fix IP validation - Adapt UT and add new UT cases #### How I did it - Modify config/show dhcp relay files - Modify config/show UT files #### How to verify it This PR has a dependency on PR https://github.com/Azure/sonic-utilities/pull/1717 Build an image with the dependent PR and this PR Use config/show DHCPv6 relay commands. --- .../test_config_dhcp_relay.py | 96 +++++++++++++++++- .../cli-plugin-tests/test_show_dhcp_relay.py | 4 +- .../cli/config/plugins/dhcp_relay.py | 97 +++++++++++++------ .../cli/show/plugins/show_dhcp_relay.py | 3 +- 4 files changed, 161 insertions(+), 39 deletions(-) diff --git a/dockers/docker-dhcp-relay/cli-plugin-tests/test_config_dhcp_relay.py b/dockers/docker-dhcp-relay/cli-plugin-tests/test_config_dhcp_relay.py index 8a47f6994b80..46acda358b8f 100644 --- a/dockers/docker-dhcp-relay/cli-plugin-tests/test_config_dhcp_relay.py +++ b/dockers/docker-dhcp-relay/cli-plugin-tests/test_config_dhcp_relay.py @@ -13,12 +13,32 @@ import dhcp_relay config_vlan_add_dhcp_relay_output="""\ -Added DHCP relay destination address 192.0.0.100 to Vlan1000 +Added DHCP relay destination addresses ['192.0.0.100'] to Vlan1000 +Restarting DHCP relay service... +""" + +config_vlan_add_dhcpv6_relay_output="""\ +Added DHCP relay destination addresses ['fc02:2000::1'] to Vlan1000 +Restarting DHCP relay service... +""" + +config_vlan_add_multiple_dhcpv6_relay_output="""\ +Added DHCP relay destination addresses ['fc02:2000::1', 'fc02:2000::2', 'fc02:2000::3'] to Vlan1000 Restarting DHCP relay service... """ config_vlan_del_dhcp_relay_output="""\ -Removed DHCP relay destination address 192.0.0.100 from Vlan1000 +Removed DHCP relay destination addresses ('192.0.0.100',) from Vlan1000 +Restarting DHCP relay service... +""" + +config_vlan_del_dhcpv6_relay_output="""\ +Removed DHCP relay destination addresses ('fc02:2000::1',) from Vlan1000 +Restarting DHCP relay service... +""" + +config_vlan_del_multiple_dhcpv6_relay_output="""\ +Removed DHCP relay destination addresses ('fc02:2000::1', 'fc02:2000::2', 'fc02:2000::3') from Vlan1000 Restarting DHCP relay service... """ @@ -54,12 +74,14 @@ def test_config_vlan_add_dhcp_relay_with_invalid_vlanid(self): assert "Error: Vlan4096 doesn't exist" in result.output assert mock_run_command.call_count == 0 - def test_config_vlan_add_dhcp_relay_with_invalid_ip(self): + def test_config_vlan_add_dhcp_relay_with_invalid_ip(self, mock_cfgdb): runner = CliRunner() + db = Db() + db.cfgdb = mock_cfgdb with mock.patch('utilities_common.cli.run_command') as mock_run_command: result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["add"], - ["1000", "192.0.0.1000"]) + ["1000", "192.0.0.1000"], obj=db) print(result.exit_code) print(result.output) # traceback.print_tb(result.exc_info[2]) @@ -67,6 +89,14 @@ def test_config_vlan_add_dhcp_relay_with_invalid_ip(self): assert "Error: 192.0.0.1000 is invalid IP address" in result.output assert mock_run_command.call_count == 0 + result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["add"], + ["1000", "192.0.0."], obj=db) + print(result.exit_code) + print(result.output) + assert result.exit_code != 0 + assert "Error: 192.0.0. is invalid IP address" in result.output + assert mock_run_command.call_count == 0 + def test_config_vlan_add_dhcp_relay_with_exist_ip(self, mock_cfgdb): runner = CliRunner() db = Db() @@ -110,6 +140,64 @@ def test_config_vlan_add_del_dhcp_relay_dest(self, mock_cfgdb): assert mock_run_command.call_count == 3 db.cfgdb.set_entry.assert_called_once_with('VLAN', 'Vlan1000', {'dhcp_servers': ['192.0.0.1']}) + def test_config_vlan_add_del_dhcpv6_relay_dest(self, mock_cfgdb): + runner = CliRunner() + db = Db() + db.cfgdb = mock_cfgdb + + # add new relay dest + with mock.patch("utilities_common.cli.run_command") as mock_run_command: + result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["add"], + ["1000", "fc02:2000::1"], obj=db) + print(result.exit_code) + print(result.output) + assert result.exit_code == 0 + assert result.output == config_vlan_add_dhcpv6_relay_output + assert mock_run_command.call_count == 3 + db.cfgdb.set_entry.assert_called_once_with('VLAN', 'Vlan1000', {'dhcp_servers': ['192.0.0.1'], 'dhcpv6_servers': ['fc02:2000::1']}) + + db.cfgdb.set_entry.reset_mock() + + # del relay dest + with mock.patch("utilities_common.cli.run_command") as mock_run_command: + result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["del"], + ["1000", "fc02:2000::1"], obj=db) + print(result.exit_code) + print(result.output) + assert result.exit_code == 0 + assert result.output == config_vlan_del_dhcpv6_relay_output + assert mock_run_command.call_count == 3 + db.cfgdb.set_entry.assert_called_once_with('VLAN', 'Vlan1000', {'dhcp_servers': ['192.0.0.1']}) + + def test_config_vlan_add_del_multiple_dhcpv6_relay_dest(self, mock_cfgdb): + runner = CliRunner() + db = Db() + db.cfgdb = mock_cfgdb + + # add new relay dest + with mock.patch("utilities_common.cli.run_command") as mock_run_command: + result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["add"], + ["1000", "fc02:2000::1", "fc02:2000::2", "fc02:2000::3"], obj=db) + print(result.exit_code) + print(result.output) + assert result.exit_code == 0 + assert result.output == config_vlan_add_multiple_dhcpv6_relay_output + assert mock_run_command.call_count == 3 + db.cfgdb.set_entry.assert_called_once_with('VLAN', 'Vlan1000', {'dhcp_servers': ['192.0.0.1'], 'dhcpv6_servers': ['fc02:2000::1', 'fc02:2000::2', 'fc02:2000::3']}) + + db.cfgdb.set_entry.reset_mock() + + # del relay dest + with mock.patch("utilities_common.cli.run_command") as mock_run_command: + result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["del"], + ["1000", "fc02:2000::1", "fc02:2000::2", "fc02:2000::3"], obj=db) + print(result.exit_code) + print(result.output) + assert result.exit_code == 0 + assert result.output == config_vlan_del_multiple_dhcpv6_relay_output + assert mock_run_command.call_count == 3 + db.cfgdb.set_entry.assert_called_once_with('VLAN', 'Vlan1000', {'dhcp_servers': ['192.0.0.1']}) + def test_config_vlan_remove_nonexist_dhcp_relay_dest(self, mock_cfgdb): runner = CliRunner() db = Db() diff --git a/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py b/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py index b8219fcc6ad3..2636a43c7d37 100644 --- a/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py +++ b/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py @@ -20,9 +20,9 @@ def test_plugin_registration(self): def test_dhcp_relay_column_output(self): ctx = ( - ({'Vlan100': {'dhcp_servers': ['192.0.0.1', '192.168.0.2']}}, {}, {}), + ({'Vlan100': {'dhcp_servers': ['192.0.0.1', '192.168.0.2'], 'dhcpv6_servers': ['fc02:2000::1', 'fc02:2000::2']}}, {}, {}), (), ) - assert show_dhcp_relay.get_dhcp_helper_address(ctx, 'Vlan100') == '192.0.0.1\n192.168.0.2' + assert show_dhcp_relay.get_dhcp_helper_address(ctx, 'Vlan100') == '192.0.0.1\n192.168.0.2\nfc02:2000::1\nfc02:2000::2' diff --git a/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py b/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py index e3cdd8304654..33a798fc8778 100644 --- a/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py +++ b/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py @@ -1,5 +1,6 @@ import click import utilities_common.cli as clicommon +import ipaddress @click.group(cls=clicommon.AbbreviationGroup, name='dhcp_relay') def vlan_dhcp_relay(): @@ -7,66 +8,98 @@ def vlan_dhcp_relay(): @vlan_dhcp_relay.command('add') @click.argument('vid', metavar='', required=True, type=int) -@click.argument('dhcp_relay_destination_ip', metavar='', required=True) +@click.argument('dhcp_relay_destination_ips', nargs=-1, required=True) @clicommon.pass_db -def add_vlan_dhcp_relay_destination(db, vid, dhcp_relay_destination_ip): +def add_vlan_dhcp_relay_destination(db, vid, dhcp_relay_destination_ips): """ Add a destination IP address to the VLAN's DHCP relay """ ctx = click.get_current_context() + added_servers = [] - if not clicommon.is_ipaddress(dhcp_relay_destination_ip): - ctx.fail('{} is invalid IP address'.format(dhcp_relay_destination_ip)) - + # Verify vlan is valid vlan_name = 'Vlan{}'.format(vid) vlan = db.cfgdb.get_entry('VLAN', vlan_name) if len(vlan) == 0: ctx.fail("{} doesn't exist".format(vlan_name)) - dhcp_relay_dests = vlan.get('dhcp_servers', []) - if dhcp_relay_destination_ip in dhcp_relay_dests: - click.echo("{} is already a DHCP relay destination for {}".format(dhcp_relay_destination_ip, vlan_name)) - return + # Verify all ip addresses are valid and not exist in DB + dhcp_servers = vlan.get('dhcp_servers', []) + dhcpv6_servers = vlan.get('dhcpv6_servers', []) + + for ip_addr in dhcp_relay_destination_ips: + try: + ipaddress.ip_address(ip_addr) + if (ip_addr in dhcp_servers) or (ip_addr in dhcpv6_servers): + click.echo("{} is already a DHCP relay destination for {}".format(ip_addr, vlan_name)) + continue + if clicommon.ipaddress_type(ip_addr) == 4: + dhcp_servers.append(ip_addr) + else: + dhcpv6_servers.append(ip_addr) + added_servers.append(ip_addr) + except Exception: + ctx.fail('{} is invalid IP address'.format(ip_addr)) + + # Append new dhcp servers to config DB + if len(dhcp_servers): + vlan['dhcp_servers'] = dhcp_servers + if len(dhcpv6_servers): + vlan['dhcpv6_servers'] = dhcpv6_servers - dhcp_relay_dests.append(dhcp_relay_destination_ip) - vlan['dhcp_servers'] = dhcp_relay_dests db.cfgdb.set_entry('VLAN', vlan_name, vlan) - click.echo("Added DHCP relay destination address {} to {}".format(dhcp_relay_destination_ip, vlan_name)) - try: - click.echo("Restarting DHCP relay service...") - clicommon.run_command("systemctl stop dhcp_relay", display_cmd=False) - clicommon.run_command("systemctl reset-failed dhcp_relay", display_cmd=False) - clicommon.run_command("systemctl start dhcp_relay", display_cmd=False) - except SystemExit as e: - ctx.fail("Restart service dhcp_relay failed with error {}".format(e)) + + if len(added_servers): + click.echo("Added DHCP relay destination addresses {} to {}".format(added_servers, vlan_name)) + try: + click.echo("Restarting DHCP relay service...") + clicommon.run_command("systemctl stop dhcp_relay", display_cmd=False) + clicommon.run_command("systemctl reset-failed dhcp_relay", display_cmd=False) + clicommon.run_command("systemctl start dhcp_relay", display_cmd=False) + except SystemExit as e: + ctx.fail("Restart service dhcp_relay failed with error {}".format(e)) @vlan_dhcp_relay.command('del') @click.argument('vid', metavar='', required=True, type=int) -@click.argument('dhcp_relay_destination_ip', metavar='', required=True) +@click.argument('dhcp_relay_destination_ips', nargs=-1, required=True) @clicommon.pass_db -def del_vlan_dhcp_relay_destination(db, vid, dhcp_relay_destination_ip): +def del_vlan_dhcp_relay_destination(db, vid, dhcp_relay_destination_ips): """ Remove a destination IP address from the VLAN's DHCP relay """ ctx = click.get_current_context() - if not clicommon.is_ipaddress(dhcp_relay_destination_ip): - ctx.fail('{} is invalid IP address'.format(dhcp_relay_destination_ip)) - + # Verify vlan is valid vlan_name = 'Vlan{}'.format(vid) vlan = db.cfgdb.get_entry('VLAN', vlan_name) if len(vlan) == 0: ctx.fail("{} doesn't exist".format(vlan_name)) - dhcp_relay_dests = vlan.get('dhcp_servers', []) - if not dhcp_relay_destination_ip in dhcp_relay_dests: - ctx.fail("{} is not a DHCP relay destination for {}".format(dhcp_relay_destination_ip, vlan_name)) + # Remove dhcp servers if they exist in the DB + dhcp_servers = vlan.get('dhcp_servers', []) + dhcpv6_servers = vlan.get('dhcpv6_servers', []) + + for ip_addr in dhcp_relay_destination_ips: + if (ip_addr not in dhcp_servers) and (ip_addr not in dhcpv6_servers): + ctx.fail("{} is not a DHCP relay destination for {}".format(ip_addr, vlan_name)) + if clicommon.ipaddress_type(ip_addr) == 4: + dhcp_servers.remove(ip_addr) + else: + dhcpv6_servers.remove(ip_addr) + + # Update dhcp servers to config DB + if len(dhcp_servers): + vlan['dhcp_servers'] = dhcp_servers + else: + if 'dhcp_servers' in vlan.keys(): + del vlan['dhcp_servers'] - dhcp_relay_dests.remove(dhcp_relay_destination_ip) - if len(dhcp_relay_dests) == 0: - del vlan['dhcp_servers'] + if len(dhcpv6_servers): + vlan['dhcpv6_servers'] = dhcpv6_servers else: - vlan['dhcp_servers'] = dhcp_relay_dests + if 'dhcpv6_servers' in vlan.keys(): + del vlan['dhcpv6_servers'] + db.cfgdb.set_entry('VLAN', vlan_name, vlan) - click.echo("Removed DHCP relay destination address {} from {}".format(dhcp_relay_destination_ip, vlan_name)) + click.echo("Removed DHCP relay destination addresses {} from {}".format(dhcp_relay_destination_ips, vlan_name)) try: click.echo("Restarting DHCP relay service...") clicommon.run_command("systemctl stop dhcp_relay", display_cmd=False) diff --git a/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py b/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py index ae8c453e45f3..95698f276463 100644 --- a/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py +++ b/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py @@ -9,8 +9,9 @@ def get_dhcp_helper_address(ctx, vlan): return "" dhcp_helpers = vlan_config.get('dhcp_servers', []) + dhcpv6_helpers = vlan_config.get('dhcpv6_servers', []) - return '\n'.join(natsorted(dhcp_helpers)) + return '\n'.join(natsorted(dhcp_helpers) + natsorted(dhcpv6_helpers)) vlan.VlanBrief.register_column('DHCP Helper Address', get_dhcp_helper_address) From 2f332c84256169062707e6a0a68bfb921d1b3d5f Mon Sep 17 00:00:00 2001 From: Christian Svensson Date: Wed, 25 Aug 2021 13:35:31 +0200 Subject: [PATCH 101/186] [doc]: Update build instructions (#8470) The current instructions cannot be used on e.g. Ubuntu 20.04. This commit reformats the steps to be more natural to read when first getting started building SONiC. * Add SONIC_BUILD_JOBS=$(nproc) to usage guide * Explain disk usage w.r.t. SONIC_BUILD_JOBS * Set BUILD JOBS to 4 More than 4 can cause race issues right now, and setting to nproc might be too much as every job spawns multiple threads. Signed-off-by: Christian Svensson --- README.md | 64 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 988424f9bac5..aada8a53084b 100644 --- a/README.md +++ b/README.md @@ -67,24 +67,27 @@ Following is the instruction on how to build an [(ONIE)](https://github.com/opencomputeproject/onie) compatible network operating system (NOS) installer image for network switches, and also how to build docker images running inside the NOS. Note that SONiC image are build per ASIC platform. Switches using the same ASIC platform share a common image. For a list of supported switches and ASIC, please refer to this [list](https://github.com/Azure/SONiC/wiki/Supported-Devices-and-Platforms) # Hardware -Any server can be a build image server. We are using a server with 1T hard disk. The OS is Ubuntu 16.04. -## Prerequisites +Any server can be a build image server as long as it has: -Install pip and jinja in host build machine, execute below commands if j2/j2cli is not available: + * Multiple cores to increase build speed + * Plenty of RAM (less than 8 GiB is likely to cause issues) + * 300G of free disk space - sudo apt-get install -y python-pip - sudo python2 -m pip install -U pip==9.0.3 - sudo pip install --force-reinstall --upgrade jinja2>=2.10 - sudo pip install j2cli +A good choice of OS for building SONiC is currently Ubuntu 20.04. -Configure your system to allow running the 'docker' command without 'sudo': - Add current user to the docker group - `sudo gpasswd -a ${USER} docker` - Log out and log back in so that your group membership is re-evaluated +## Prerequisites -## SAI Version -Please refer to [SONiC roadmap](https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning) on the SAI version for each SONiC release. + * Install pip and jinja in host build machine, execute below commands if j2/j2cli is not available: + +``` +sudo apt install -y python3-pip +sudo pip3 install j2cli +``` + + * Install [Docker](https://docs.docker.com/engine/install/) and configure your system to allow running the 'docker' command without 'sudo': + * Add current user to the docker group: `sudo gpasswd -a ${USER} docker` + * Log out and log back in so that your group membership is re-evaluated ## Clone or fetch the code repository with all git submodules To clone the code repository recursively, assuming git version 1.9 or newer: @@ -110,8 +113,22 @@ To build SONiC installer image and docker images, run the following commands: # Execute make configure once to configure ASIC make configure PLATFORM=[ASIC_VENDOR] - # Build SONiC image - make all + # Build SONiC image with 4 jobs in parallel. + # Note: You can set this higher, but 4 is a good number for most cases + # and is well-tested. + make SONIC_BUILD_JOBS=4 all + + The supported ASIC vendors are: + +- PLATFORM=broadcom +- PLATFORM=marvell +- PLATFORM=mellanox +- PLATFORM=cavium +- PLATFORM=centec +- PLATFORM=nephos +- PLATFORM=innovium +- PLATFORM=p4 +- PLATFORM=vs ## Usage for ARM Architecture To build Arm32 bit for (ARMHF) platform @@ -147,7 +164,7 @@ To build Arm64 bit for platform **NOTE**: -- Recommend reserving 50G free space to build one platform. +- Recommend reserving at least 100G free space to build one platform with a single job. The build process will use more disk if you are setting `SONIC_BUILD_JOBS` to more than 1. - If Docker's workspace folder, `/var/lib/docker`, resides on a partition without sufficient free space, you may encounter an error like the following during a Docker container build job: `/usr/bin/tar: /path/to/sonic-buildimage/: Cannot write: No space left on device` @@ -156,17 +173,7 @@ To build Arm64 bit for platform - Use `http_proxy=[your_proxy] https_proxy=[your_proxy] no_proxy=[your_no_proxy] make` to enable http(s) proxy in the build process. - Add your user account to `docker` group and use your user account to make. `root` or `sudo` are not supported. -The SONiC installer contains all docker images needed. SONiC uses one image for all devices of a same ASIC vendor. The supported ASIC vendors are: - -- PLATFORM=broadcom -- PLATFORM=marvell -- PLATFORM=mellanox -- PLATFORM=cavium -- PLATFORM=centec -- PLATFORM=nephos -- PLATFORM=innovium -- PLATFORM=p4 -- PLATFORM=vs +The SONiC installer contains all docker images needed. SONiC uses one image for all devices of a same ASIC vendor. For Broadcom ASIC, we build ONIE and EOS image. EOS image is used for Arista devices, ONIE image is used for all other Broadcom ASIC based devices. @@ -198,6 +205,9 @@ It is recommended to use clean targets to clean all packages that are built toge ## Build debug dockers and debug SONiC installer image: SONiC build system supports building dockers and ONIE-image with debug tools and debug symbols, to help with live & core debugging. For details refer to [(SONiC Buildimage Guide)](https://github.com/Azure/sonic-buildimage/blob/master/README.buildsystem.md). +## SAI Version +Please refer to [SONiC roadmap](https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning) on the SAI version for each SONiC release. + ## Notes: - If you are running make for the first time, a sonic-slave-${USER} docker image will be built automatically. This may take a while, but it is a one-time action, so please be patient. From 5f04146a10b550cd672ee9b8a4ea1ae0e3ef1532 Mon Sep 17 00:00:00 2001 From: shlomibitton <60430976+shlomibitton@users.noreply.github.com> Date: Wed, 25 Aug 2021 16:46:56 +0300 Subject: [PATCH 102/186] Upstream new FW/SDK (#8567) - Why I did it Update SDK\FW version to 4.4.3326\2008.3326. This version contains: New Features: 1. Add support for Fast Boot for SN3800 Bug Fixing: 1. In some cases, when the total number of allocations exceeds the resource limit, an error can occur due to incorrect resource release procedure. This issue is most likely to affect the following resources: flow counters, ACL actions, PBS, WJH filter, Tunnels, ECMP containers, MC (L2 &L3) 2. On Spectrum systems, when using Async Router API with IPV6, an error message in the log regarding failing to remove ECMP container may show up. This error is not functional and can be safely ignored. 3. On Spectrum-2 systems and above, when using warm boot, setting max_bridge_num to a value greater than 1968 will cause an error and potential crash. 4. Some Molex cables do not support speed after reboot - How I did it - How to verify it Was verified by running regression tests that includes complete sonic-mgmt tests supported --- platform/mellanox/fw.mk | 6 +++--- platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers | 2 +- platform/mellanox/sdk.mk | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/platform/mellanox/fw.mk b/platform/mellanox/fw.mk index ceddc9f06470..6b9790374d40 100644 --- a/platform/mellanox/fw.mk +++ b/platform/mellanox/fw.mk @@ -11,17 +11,17 @@ else FW_FROM_URL = n endif -MLNX_SPC_FW_VERSION = 13.2008.3324 +MLNX_SPC_FW_VERSION = 13.2008.3326 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.2008.3324 +MLNX_SPC2_FW_VERSION = 29.2008.3326 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.2008.3324 +MLNX_SPC3_FW_VERSION = 30.2008.3326 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) diff --git a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers b/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers index 9109a4623684..726bef49c07a 160000 --- a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers +++ b/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers @@ -1 +1 @@ -Subproject commit 9109a46236846c06c91c4a76e71ca96edef11c3a +Subproject commit 726bef49c07a1a0d7c52d8e3062e95ec6efa736f diff --git a/platform/mellanox/sdk.mk b/platform/mellanox/sdk.mk index 4e00a54ca78e..3c5a46a76767 100644 --- a/platform/mellanox/sdk.mk +++ b/platform/mellanox/sdk.mk @@ -1,6 +1,6 @@ MLNX_SDK_BASE_PATH = $(PLATFORM_PATH)/sdk-src/sx-kernel/Switch-SDK-drivers/bin/ MLNX_SDK_PKG_BASE_PATH = $(MLNX_SDK_BASE_PATH)/$(BLDENV)/ -MLNX_SDK_VERSION = 4.4.3320 +MLNX_SDK_VERSION = 4.4.3326 MLNX_SDK_ISSU_VERSION = 101 MLNX_SDK_DEB_VERSION = $(subst -,.,$(subst _,.,$(MLNX_SDK_VERSION))) From 6fd31a50187e63f195ad165e25c5c1d2953df846 Mon Sep 17 00:00:00 2001 From: Junchao-Mellanox <57339448+Junchao-Mellanox@users.noreply.github.com> Date: Thu, 26 Aug 2021 02:13:07 +0800 Subject: [PATCH 103/186] [Mellanox] Update platform files for SN4800 (#8540) - Why I did it Update platform data files for SN4800 to support chassis management - How I did it Update pcie.yml Update sensors.conf Update platform.json - How to verify it Run platform test suite in sonic-mgmt --- .../mellanox/x86_64-mlnx_msn4800-r0/pcie.yaml | 160 ++++++--- .../x86_64-mlnx_msn4800-r0/platform.json | 73 +++- .../x86_64-mlnx_msn4800-r0/platform_wait | 5 +- .../x86_64-mlnx_msn4800-r0/sensors.conf | 325 ++++++++++-------- 4 files changed, 363 insertions(+), 200 deletions(-) mode change 120000 => 100755 device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait diff --git a/device/mellanox/x86_64-mlnx_msn4800-r0/pcie.yaml b/device/mellanox/x86_64-mlnx_msn4800-r0/pcie.yaml index a86731abe935..15567004fb9d 100644 --- a/device/mellanox/x86_64-mlnx_msn4800-r0/pcie.yaml +++ b/device/mellanox/x86_64-mlnx_msn4800-r0/pcie.yaml @@ -1,111 +1,191 @@ - bus: '00' dev: '00' fn: '0' - id: 3e10 - name: 'Host bridge : Intel Corporation Device (rev 07)' + id: 3ec4 + name: 'Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers + (rev 07)' - bus: '00' dev: '01' fn: '0' - id: 1901 - name: 'PCI bridge : Intel Corporation Skylake PCIe Controller (x16) (rev 07) - (prog-if 00 [Normal decode])' + id: '1901' + name: 'PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 07)' - bus: '00' - dev: '08' + dev: 08 fn: '0' - id: 1911 - name: 'System peripheral : Intel Corporation Skylake Gaussian Mixture Model' + id: '1911' + name: 'System peripheral: Intel Corporation Skylake Gaussian Mixture Model' - bus: '00' dev: '12' fn: '0' id: a379 - name: 'Signal processing controller : Intel Corporation Device (rev 10)' + name: 'Signal processing controller: Intel Corporation Cannon Lake PCH Thermal Controller + (rev 10)' - bus: '00' dev: '14' fn: '0' id: a36d - name: 'USB controller : Intel Corporation Device (rev 10) (prog-if 30 [XHCI])' + name: 'USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller + (rev 10)' - bus: '00' dev: '14' fn: '2' id: a36f - name: 'RAM memory : Intel Corporation Device (rev 10)' + name: 'RAM memory: Intel Corporation Cannon Lake PCH Shared SRAM (rev 10)' - bus: '00' dev: '15' fn: '0' id: a368 - name: 'Serial bus controller : Intel Corporation Device (rev 10)' + name: 'Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH Serial IO + I2C Controller (rev 10)' - bus: '00' dev: '16' fn: '0' id: a360 - name: 'Communication controller : Intel Corporation Device (rev 10)' + name: 'Communication controller: Intel Corporation Cannon Lake PCH HECI Controller + (rev 10)' - bus: '00' dev: '17' fn: '0' id: a353 - name: 'SATA controller : Intel Corporation Device (rev 10) (prog-if 01 [AHCI 1.0])' + name: 'SATA controller: Intel Corporation Cannon Lake Mobile PCH SATA AHCI Controller + (rev 10)' - bus: '00' - dev: '1b' + dev: 1b fn: '0' id: a340 - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1b' + dev: 1b fn: '2' id: a342 - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1b' + dev: 1b fn: '4' id: a32c - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1c' + dev: 1c fn: '0' id: a33d - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1c' + dev: 1c fn: '6' id: a33e - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1c' + dev: 1c fn: '7' id: a33f - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1d' + dev: 1d fn: '0' id: a334 - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1e' + dev: 1e fn: '0' id: a328 - name: 'Communication controller : Intel Corporation Device (rev 10)' + name: 'Communication controller: Intel Corporation Cannon Lake PCH Serial IO UART + Host Controller (rev 10)' - bus: '00' - dev: '1f' + dev: 1f fn: '0' id: a30e - name: 'ISA bridge : Intel Corporation Device (rev 10)' + name: 'ISA bridge: Intel Corporation Cannon Lake LPC Controller (rev 10)' - bus: '00' - dev: '1f' + dev: 1f fn: '4' id: a323 - name: 'SMBus : Intel Corporation Device (rev 10)' + name: 'SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)' - bus: '00' - dev: '1f' + dev: 1f fn: '5' id: a324 - name: 'Serial bus controller : Intel Corporation Device (rev 10)' + name: 'Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH SPI Controller + (rev 10)' - bus: '00' - dev: '1f' + dev: 1f fn: '6' id: 15bb - name: 'Ethernet controller : Intel Corporation Device (rev 10)' + name: 'Ethernet controller: Intel Corporation Ethernet Connection (7) I219-LM (rev + 10)' - bus: '01' dev: '00' fn: '0' - id: cf6c - name: 'Ethernet controller : Mellanox Technologies Device' + id: cf70 + name: 'Ethernet controller: Mellanox Technologies Spectrum-3' +- bus: '03' + dev: '00' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '04' + dev: '00' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '04' + dev: '02' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '05' + dev: '00' + fn: '0' + id: 101b + name: 'Ethernet controller: Mellanox Technologies MT28908 Family [ConnectX-6]' +- bus: '06' + dev: '00' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: '00' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: '02' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: '04' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: '06' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: 08 + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: 0a + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: 0c + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: 0e + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' diff --git a/device/mellanox/x86_64-mlnx_msn4800-r0/platform.json b/device/mellanox/x86_64-mlnx_msn4800-r0/platform.json index 78f94767a2b6..2b75ae2ab775 100644 --- a/device/mellanox/x86_64-mlnx_msn4800-r0/platform.json +++ b/device/mellanox/x86_64-mlnx_msn4800-r0/platform.json @@ -19,6 +19,9 @@ }, { "name": "CPLD3" + }, + { + "name": "CPLD4" } ], "fans": [], @@ -28,42 +31,46 @@ "fans": [ { "name": "fan1" - }, + } + ] + }, + { + "name": "drawer2", + "fans": [ { "name": "fan2" } ] }, { - "name": "drawer2", + "name": "drawer3", "fans": [ { "name": "fan3" - }, + } + ] + }, + { + "name": "drawer4", + "fans": [ { "name": "fan4" } ] }, { - "name": "drawer3", + "name": "drawer5", "fans": [ { "name": "fan5" - }, - { - "name": "fan6" } ] }, { - "name": "drawer4", + "name": "drawer6", "fans": [ { - "name": "fan7" - }, - { - "name": "fan8" + "name": "fan6" } ] } @@ -73,7 +80,7 @@ "name": "PSU 1", "fans": [ { - "name": "psu_1_fan_1" + "name": "psu1_fan1" } ], "thermals": [ @@ -85,13 +92,39 @@ { "name": "PSU 2", "fans": [ + { + "name": "psu2_fan1" + } + ], + "thermals": [ { "name": "PSU-2 Temp" } + ] + }, + { + "name": "PSU 3", + "fans": [ + { + "name": "psu3_fan1" + } ], "thermals": [ { - "name": "xSFP module 1 Temp" + "name": "PSU-3 Temp" + } + ] + }, + { + "name": "PSU 4", + "fans": [ + { + "name": "psu4_fan1" + } + ], + "thermals": [ + { + "name": "PSU-4 Temp" } ] } @@ -112,6 +145,18 @@ { "name": "CPU Core 1 Temp" }, + { + "name": "CPU Core 2 Temp" + }, + { + "name": "CPU Core 3 Temp" + }, + { + "name": "CPU Core 4 Temp" + }, + { + "name": "CPU Core 5 Temp" + }, { "name": "CPU Pack Temp" } diff --git a/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait b/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait deleted file mode 120000 index 4b30bd429854..000000000000 --- a/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait +++ /dev/null @@ -1 +0,0 @@ -../x86_64-mlnx_msn2700-r0/platform_wait \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait b/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait new file mode 100755 index 000000000000..b8445bfeca44 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait @@ -0,0 +1,4 @@ +#!/bin/bash + +declare -r EXIT_SUCCESS="0" +exit "${EXIT_SUCCESS}" diff --git a/device/mellanox/x86_64-mlnx_msn4800-r0/sensors.conf b/device/mellanox/x86_64-mlnx_msn4800-r0/sensors.conf index f5d5d4763d5f..f4c981f5ecac 100644 --- a/device/mellanox/x86_64-mlnx_msn4800-r0/sensors.conf +++ b/device/mellanox/x86_64-mlnx_msn4800-r0/sensors.conf @@ -1,12 +1,53 @@ ################################################################################ -# Copyright (c) 2021 Mellanox Technologies +# Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Platform specific sensors config for SN4800 ################################################################################ +# Line card power manager devices (bus is variable) +bus "i2c-59" "i2c-34-mux (chan_id 4)" + chip "mp2975-i2c-59-62" + label in1 "Linecard PMIC-1 PSU 12V Rail (in)" + label in2 "Linecard PMIC-1 AGB VCORE Rail(out1)" + label in3 "Linecard PMIC-1 AGB 1.2V Rail(out2)" + ignore in4 + label temp1 "Linecard PMIC-1 AGB VCORE_1.2V Ambient Temp 1" + ignore temp2 + label power1 "Linecard PMIC-1 12V AGB VCORE_1.2V Rail Pwr (in)" + label power2 "Linecard PMIC-1 AGB VCORE Rail Pwr (out)" + label power3 "Linecard PMIC-1 AGB 1.2V Rail Pwr (out)" + ignore power4 + label curr1 "Linecard PMIC-1 12V AGB VCORE_1.2V Rail Curr (in)" + label curr2 "Linecard PMIC-1 AGB VCORE Rail Curr (out)" + label curr3 "Linecard PMIC-1 AGB 1.2V Rail Curr (out)" + ignore curr4 + chip "mp2975-i2c-59-64" + label in1 "Linecard PMIC-2 PSU 12V Rail (in)" + label in2 "Linecard PMIC-2 PORTS 3.3V Rail(out1)" + label in3 "Linecard PMIC-2 AGB 1.8V Rail(out2)" + ignore in4 + label temp1 "Linecard PMIC-2 PORTS_3.3V_AGB_1.8V Ambient Temp 1" + ignore temp2 + label power1 "Linecard PMIC-2 12V PORTS_3.3V_AGB_1.8V Rail Pwr (in)" + label power2 "Linecard PMIC-2 PORTS 3.3V Rail Pwr (out)" + label power3 "Linecard PMIC-2 AGB 1.8V Rail Pwr (out)" + ignore power4 + label curr1 "Linecard PMIC-2 12V PORTS_3.3V_AGB_1.8V Rail Curr (in)" + label curr2 "Linecard PMIC-2 PORTS 3.3V Rail Curr (out)" + label curr3 "Linecard PMIC-2 AGB 1.8V Rail Curr (out)" + ignore curr4 + +# Memory sensors +bus "i2c-0" "SMBus I801 adapter at efa0" + chip "jc42-i2c-0-1c" + label temp1 "Ambient SODIMM Temp" + + chip "jc42-i2c-0-1a" + label temp1 "Ambient SODIMM Temp" + # Temperature sensors -bus "i2c-2" "i2c-1-mux (chan_id 1)" - chip "mlxsw-i2c-*-48" +bus "i2c-3" "i2c-1-mux (chan_id 1)" + chip "mlxsw-i2c-*-37" label temp1 "Ambient ASIC Temp" bus "i2c-7" "i2c-1-mux (chan_id 6)" @@ -15,121 +56,117 @@ bus "i2c-7" "i2c-1-mux (chan_id 6)" chip "tmp102-i2c-*-4a" label temp1 "Ambient Port Side Temp (air exhaust)" -bus "i2c-15" "i2c-1-mux (chan_id 6)" - chip "tmp102-i2c-15-49" - label temp1 "Ambient COMEX Temp" +bus "i2c-14" "i2c-1-mux (chan_id 12)" + chip "tmp421-i2c-*-1f" + ignore temp1 + label temp2 "Ambient PCIe switch Temp" # Power controllers -bus "i2c-5" "i2c-1-mux (chan_id 4)" - chip "mp2975-i2c-*-62" - label in1 "PMIC-1 PSU 12V Rail (in1)" - label in2 "PMIC-1 OSFP PORTS_P01_P08 Rail (out1)" - compute in2 (2)*@, @/(2) - label in3 "PMIC-1 OSFP PORTS_P09_P16 Rail (out2)" - compute in3 (2)*@, @/(2) - label temp1 "PMIC-1 OSFP PORTS_P01_P08 Temp 1" - label temp2 "PMIC-1 OSFP PORTS_P09_P16 Temp 2" - label power1 "PMIC-1 12V OSFP PORT_P01_P16 (in)" - label power2 "PMIC-1 OSFP P01_P08 Rail Pwr (out1)" - label power3 "PMIC-1 OSFP P09_P16 Rail Pwr (out2)" - label curr1 "PMIC-1 12V OSFP P01_P08 Rail Curr (in1)" - label curr2 "PMIC-1 OSFP P01_P8 Rail Curr (out1)" - label curr3 "PMIC-1 OSFP P09_P16 Rail Curr (out2)" - - chip "mp2975-i2c-*-64" - label in1 "PMIC-2 PSU 12V Rail (in1)" - label in2 "PMIC-2 OSFP PORTS_P17_P24 Rail (out1)" - compute in2 (2)*@, @/(2) - label in3 "PMIC-2 OSFP PORTS_P25_P32 Rail (out2)" - compute in3 (2)*@, @/(2) - label temp1 "PMIC-2 OSFP PORTS_P17_P24 Temp 1" - label temp2 "PMIC-2 OSFP PORTS_P25_P32 Temp 2" - label power1 "PMIC-2 12V OSFP PORT_P17_P32 (in)" - label power2 "PMIC-2 OSFP P17_P24 Rail Pwr (out1)" - label power3 "PMIC-2 OSFP P25_P32 Rail Pwr (out2)" - label curr1 "PMIC-2 12V OSFP P17_P24 Rail Curr (in1)" - label curr2 "PMIC-2 OSFP P17_P24 Rail Curr (out1)" - label curr3 "PMIC-2 OSFP P25_P32 Rail Curr (out2)" - - chip "mp2888-i2c-*-66" - label in1 "PMIC-3 PSU 12V Rail (in1)" - label in2 "PMIC-3 ASIC VCORE_MAIN Rail (out1)" +bus "i2c-5" "i2c-1-mux (chan_id 3)" + chip "mp2975-i2c-5-62" + label in1 "PMIC-1 PSU 12V Rail (in)" + label in2 "PMIC-1 ASIC VCORE_MAIN Rail (out)" ignore in3 - ignore in4 - label temp1 "PMIC-3 ASIC VCORE_MAIN Temp 1" + ignore in4 + label temp1 "PMIC-1 ASIC VCORE_MAIN Temp 1" ignore temp2 - label power1 "PMIC-3 12V ASIC VCORE_MAIN Rail Pwr (in)" - label power2 "PMIC-3 ASIC VCORE_MAIN Rail Pwr (out1)" - ignore power3 + label power1 "PMIC-1 12V ASIC VCORE_MAIN Rail Pwr (in)" + label power2 "PMIC-1 ASIC VCORE_MAIN Rail Pwr (out)" + ignore power3 + ignore power4 + label curr1 "PMIC-1 12V ASIC VCORE_MAIN Rail Curr (in)" + label curr2 "PMIC-1 ASIC VCORE_MAIN Rail Curr (out)" + ignore curr3 + ignore curr4 + chip "mp2975-i2c-5-64" + label in1 "PMIC-2 PSU 12V Rail (in)" + label in2 "PMIC-2 ASIC 1.8V_MAIN Rail (out1)" + label in3 "PMIC-2 ASIC 1.2V_T0_3 Rail (out2)" + ignore in4 + label temp1 "PMIC-2 ASIC 1.8V_MAIN_1.2V_T0_3 Temp 1" + ignore temp2 + label power1 "PMIC-2 12V ASIC 1.8V_MAIN_1.2V_T0_3 Rail Pwr (in)" + label power2 "PMIC-2 ASIC 1.8V_MAIN Rail Pwr (out)" + label power3 "PMIC-2 ASIC 1.2V_T0_3 Rail Pwr (out)" ignore power4 - label curr1 "PMIC-3 12V ASIC VCORE_MAIN Rail Curr (in1)" - label curr2 "PMIC-3 ASIC VCORE_MAIN Rail Curr (out1)" - ignore curr3 + label curr1 "PMIC-2 12V ASIC 1.8V_MAIN_1.2V_T0_3 Rail Curr (in)" + label curr2 "PMIC-2 ASIC 1.8V_MAIN Rail Curr (out1)" + label curr3 "PMIC-2 ASIC 1.2V_T0_3 Rail Curr (out2)" + ignore curr4 + chip "mp2975-i2c-*-66" + label in1 "PMIC-3 PSU 12V Rail (in)" + label in2 "PMIC-3 ASIC VCORE_T0_3 Rail (out1)" + label in3 "PMIC-3 ASIC 1.8V_T0_3 Rail (out2)" + ignore in4 + label temp1 "PMIC-3 ASIC VCORE_1.8V_T0_3 Temp 1" + ignore temp2 + label power1 "PMIC-3 12V ASIC VCORE_1.8V_T0_3 Rail Pwr (in)" + label power2 "PMIC-3 ASIC VCORE_T0_3 Rail Pwr (out)" + label power3 "PMIC-3 ASIC 1.8V_T0_3 Rail Pwr (out)" + ignore power4 + label curr1 "PMIC-3 12V ASIC VCORE_1.8V_T0_3 Rail Curr (in)" + label curr2 "PMIC-3 ASIC VCORE_T0_3 Rail Curr (out1)" + label curr3 "PMIC-3 ASIC 1.8V_T0_3 Rail Curr (out2)" ignore curr4 - chip "mp2975-i2c-*-68" - label in1 "PMIC-4 PSU 12V Rail (in)" - label in2 "PMIC-4 HVDD 1.2V EAST Rail (out1)" - label in3 "PMIC-4 DVDD 0.9V EAST Rail (out2)" - label temp1 "PMIC-4 HVDD 1.2V EAST Rail Temp" - label power1 "PMIC-4 12V HVDD_1.2V DVDD_0.9V EAST (in)" - label power2 "PMIC-4 HVDD 1.2V EAST Rail Pwr (out1)" - label power3 "PMIC-4 DVDD 0.9V EAST Rail Pwr (out2)" - label curr1 "PMIC-4 12V HVDD 1.2V EAST Rail Curr (in)" - label curr2 "PMIC-4 HVDD 1.2V EAST Rail Curr (out1)" - label curr3 "PMIC-4 DVDD 0.9V EAST Rail Curr (out2)" - - chip "mp2975-i2c-*-6c" - label in1 "PMIC-5 PSU 12V Rail (in)" - label in2 "PMIC-5 HVDD 1.2V WEST Rail (out1)" - label in3 "PMIC-5 DVDD 0.9V WEST Rail (out2)" - label temp1 "PMIC-5 HVDD 1.2V WEST Rail Temp" - label power1 "PMIC-5 12V HVDD_1.2V DVDD_0.9V WEST (in)" - label power2 "PMIC-5 HVDD 1.2V WEST Rail Pwr (out1)" - label power3 "PMIC-5 DVDD 0.9V WEST Rail Pwr (out2)" - label curr1 "PMIC-5 12V HVDD 1.2V WEST Rail Curr (in)" - label curr2 "PMIC-5 HVDD 1.2V WEST Rail Curr (out1)" - label curr3 "PMIC-5 DVDD 0.9V WEST Rail Curr (out2)" - -bus "i2c-15" "i2c-1-mux (chan_id 6)" - chip "tps53679-i2c-*-58" - label in1 "PMIC-8 PSU 12V Rail (in1)" - label in2 "PMIC-8 PSU 12V Rail (in2)" - label in3 "PMIC-8 COMEX 1.8V Rail (out)" - label in4 "PMIC-8 COMEX 1.05V Rail (out)" - label temp1 "PMIC-8 Temp 1" - label temp2 "PMIC-8 Temp 2" - label power1 "PMIC-8 COMEX 1.8V Rail Pwr (out)" - label power2 "PMIC-8 COMEX 1.05V Rail Pwr (out)" - label curr1 "PMIC-8 COMEX 1.8V Rail Curr (out)" - label curr2 "PMIC-8 COMEX 1.05V Rail Curr (out)" - chip "tps53679-i2c-*-61" - label in1 "PMIC-9 PSU 12V Rail (in1)" - label in2 "PMIC-9 PSU 12V Rail (in2)" - label in3 "PMIC-9 COMEX 1.2V Rail (out)" + label in1 "PMIC-4 PSU 12V Rail (in)" + label in2 "PMIC-4 ASIC VCORE_T4_7 Rail (out1)" + label in3 "PMIC-4 ASIC 1.8V_T4_7 Rail (out2)" + ignore in4 + label temp1 "PMIC-4 ASIC VCORE_1.8V_T4_7 Temp 1" + ignore temp2 + label power1 "PMIC-4 12V ASIC VCORE_1.8V_T4_7 Rail Pwr (in)" + label power2 "PMIC-4 ASIC VCORE_T4_7 Rail Pwr (out)" + label power3 "PMIC-3 ASIC 1.8V_T4_7 Rail Pwr (out)" + ignore power4 + label curr1 "PMIC-4 12V ASIC VCORE_1.8V_T4_7 Rail Curr (in)" + label curr2 "PMIC-4 ASIC VCORE_T4_7 Rail Curr (out1)" + label curr3 "PMIC-4 ASIC 1.8V_T4_7 Rail Curr (out2)" + ignore curr4 + chip "mp2975-i2c-*-6a" + label in1 "PMIC-5 PSU 12V Rail (in)" + label in2 "PMIC-5 ASIC 1.2V_MAIN Rail (out1)" + label in3 "PMIC-5 ASIC 1.2V_T4_7 Rail (out2)" ignore in4 - label temp1 "PMIC-9 Temp 1" - label temp2 "PMIC-9 Temp 2" - label power1 "PMIC-9 COMEX 1.2V Rail Pwr (out)" - ignore power2 - label curr1 "PMIC-9 COMEX 1.2V Rail Curr (out)" - ignore curr2 + label temp1 "PMIC-5 ASIC 1.2V_MAIN_1.2V_T4_7 Temp 1" + ignore temp2 + label power1 "PMIC-5 12V ASIC 1.2V_MAIN_1.2V_T4_7 Rail Pwr (in)" + label power2 "PMIC-5 ASIC 1.2V_MAIN Rail Pwr (out)" + label power3 "PMIC-5 1.2V_T4_7 Rail Pwr (out)" + ignore power4 + label curr1 "PMIC-5 12V ASIC 1.2V_MAIN_1.2V_T4_7 Rail Curr (in)" + label curr2 "PMIC-5 ASIC 1.2V_MAIN Rail Curr (out1)" + label curr3 "PMIC-5 ASIC 1.2V_T4_7 Rail Curr (out2)" + ignore curr4 + ignore curr4 +bus "i2c-56" "i2c-1-mux (chan_id 6)" + chip "mp2975-i2c-*-6b" + label in1 "PMIC-6 PSU 12V Rail (in1)" + label in2 "PMIC-6 PSU 12V Rail (in2)" + label in3 "PMIC-6 COMEX 1.8V Rail (out1)" + label in4 "PMIC-6 COMEX 1.05V Rail (out2)" + label temp1 "PMIC-6 Temp 1" + label temp2 "PMIC-6 Temp 2" + label power1 "PMIC-6 COMEX 1.8V Rail Pwr (out1)" + label power2 "PMIC-6 COMEX 1.05V Rail Pwr (out2)" + label curr1 "PMIC-6 COMEX 1.8V Rail Curr (out1)" + label curr2 "PMIC-6 COMEX 1.05V Rail Curr (out2)" # Power supplies bus "i2c-4" "i2c-1-mux (chan_id 3)" - chip "dps460-i2c-*-58" - label in1 "PSU-1(L) 220V Rail (in)" - ignore in2 - label in3 "PSU-1(L) 12V Rail (out)" - label fan1 "PSU-1(L) Fan 1" - label temp1 "PSU-1(L) Temp 1" - label temp2 "PSU-1(L) Temp 2" - label temp3 "PSU-1(L) Temp 3" - label power1 "PSU-1(L) 220V Rail Pwr (in)" - label power2 "PSU-1(L) 12V Rail Pwr (out)" - label curr1 "PSU-1(L) 220V Rail Curr (in)" - label curr2 "PSU-1(L) 12V Rail Curr (out)" chip "dps460-i2c-*-59" + label in1 "PSU-1(R) 220V Rail (in)" + ignore in2 + label in3 "PSU-1(R) 12V Rail (out)" + label fan1 "PSU-1(R) Fan 1" + label temp1 "PSU-1(R) Temp 1" + label temp2 "PSU-1(R) Temp 2" + label temp3 "PSU-1(R) Temp 3" + label power1 "PSU-1(R) 220V Rail Pwr (in)" + label power2 "PSU-1(R) 12V Rail Pwr (out)" + label curr1 "PSU-1(R) 220V Rail Curr (in)" + label curr2 "PSU-1(R) 12V Rail Curr (out)" + chip "dps460-i2c-*-58" label in1 "PSU-2(R) 220V Rail (in)" ignore in2 label in3 "PSU-2(R) 12V Rail (out)" @@ -141,49 +178,47 @@ bus "i2c-4" "i2c-1-mux (chan_id 3)" label power2 "PSU-2(R) 12V Rail Pwr (out)" label curr1 "PSU-2(R) 220V Rail Curr (in)" label curr2 "PSU-2(R) 12V Rail Curr (out)" - - chip "d1u54p_w_2000_12-i2c-*-58" - label in1 "PSU-1(L) 220V Rail (in)" + chip "dps460-i2c-*-5b" + label in1 "PSU-3(L) 220V Rail (in)" ignore in2 - label in3 "PSU-1(L) 12V Rail (out)" - label fan1 "PSU-1(L) Fan 1" - label temp1 "PSU-1(L) Temp 1" - label temp2 "PSU-1(L) Temp 2" - label temp3 "PSU-1(L) Temp 3" - label power1 "PSU-1(L) 220V Rail Pwr (in)" - label power2 "PSU-1(L) 12V Rail Pwr (out)" - label curr1 "PSU-1(L) 220V Rail Curr (in)" - label curr2 "PSU-1(L) 12V Rail Curr (out)" - chip "d1u54p_w_2000_12-i2c-*-59" - label in1 "PSU-2(R) 220V Rail (in)" + label in3 "PSU-3(L) 12V Rail (out)" + label fan1 "PSU-3(L) Fan 1" + label temp1 "PSU-3(L) Temp 1" + label temp2 "PSU-3(L) Temp 2" + label temp3 "PSU-3(L) Temp 3" + label power1 "PSU-3(L) 220V Rail Pwr (in)" + label power2 "PSU-3(L) 12V Rail Pwr (out)" + label curr1 "PSU-3(L) 220V Rail Curr (in)" + label curr2 "PSU-3(L) 12V Rail Curr (out)" + chip "dps460-i2c-*-5a" + label in1 "PSU-4(L) 220V Rail (in)" ignore in2 - label in3 "PSU-2(R) 12V Rail (out)" - label fan1 "PSU-2(R) Fan 1" - label temp1 "PSU-2(R) Temp 1" - label temp2 "PSU-2(R) Temp 2" - label temp3 "PSU-2(R) Temp 3" - label power1 "PSU-2(R) 220V Rail Pwr (in)" - label power2 "PSU-2(R) 12V Rail Pwr (out)" - label curr1 "PSU-2(R) 220V Rail Curr (in)" - label curr2 "PSU-2(R) 12V Rail Curr (out)" + label in3 "PSU-4(L) 12V Rail (out)" + label fan1 "PSU-4(L) Fan 1" + label temp1 "PSU-4(L) Temp 1" + label temp2 "PSU-4(L) Temp 2" + label temp3 "PSU-4(L) Temp 3" + label power1 "PSU-4(L) 220V Rail Pwr (in)" + label power2 "PSU-4(L) 12V Rail Pwr (out)" + label curr1 "PSU-4(L) 220V Rail Curr (in)" + label curr2 "PSU-4(L) 12V Rail Curr (out)" # Chassis fans chip "mlxreg_fan-isa-*" label fan1 "Chassis Fan Drawer-1 Tach 1" - label fan2 "Chassis Fan Drawer-1 Tach 2" - label fan3 "Chassis Fan Drawer-2 Tach 1" - label fan4 "Chassis Fan Drawer-2 Tach 2" - label fan5 "Chassis Fan Drawer-3 Tach 1" - label fan6 "Chassis Fan Drawer-3 Tach 2" - label fan7 "Chassis Fan Drawer-4 Tach 1" - label fan8 "Chassis Fan Drawer-4 Tach 2" - label fan9 "Chassis Fan Drawer-5 Tach 1" - label fan10 "Chassis Fan Drawer-5 Tach 2" - label fan11 "Chassis Fan Drawer-6 Tach 1" - label fan12 "Chassis Fan Drawer-6 Tach 2" - label fan13 "Chassis Fan Drawer-7 Tach 1" - label fan14 "Chassis Fan Drawer-7 Tach 2" + label fan2 "Chassis Fan Drawer-2 Tach 1" + label fan3 "Chassis Fan Drawer-3 Tach 1" + label fan4 "Chassis Fan Drawer-4 Tach 1" + label fan5 "Chassis Fan Drawer-5 Tach 1" + label fan6 "Chassis Fan Drawer-6 Tach 1" -# Miscellaneous -chip "*-virtual-*" - ignore temp1 +# Line card hotswap device (bus is variable, any above 63) + chip "lm25066-i2c-*-15" + label in1 "Linecard Hotswap 12V_IN Rail(vin)" + ignore in2 + label in3 "Linecard Hotswap 12V Rail(vout)" + label power1 "Linecard Hotswap 12V_IN (pin)" + label power2 "Linecard Hotswap 12V (pout)" + label curr1 "Linecard Hotswap 12V_IN (iin)" + label curr2 "Linecard Hotswap 12V (iout)" + ignore temp1 From 442bf5fe1d599066064b092e2cb0a50d2037e500 Mon Sep 17 00:00:00 2001 From: Junchao-Mellanox <57339448+Junchao-Mellanox@users.noreply.github.com> Date: Thu, 26 Aug 2021 04:20:40 +0800 Subject: [PATCH 104/186] [submodule] Update submodule pointer for sonic-linux-kernel (#8576) 0fe396e [Mellanox] Remove incorrectly generated patch allegedly avoiding kernel deadlock but causes one (#231) --- 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 ff9762e8dc62..0fe396ef3f15 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit ff9762e8dc628bf01c2e8393c6cbedc67223489b +Subproject commit 0fe396ef3f15f6ac57c1a850265589827401446b From df66c885723c089073317225a31cf1d702004ab1 Mon Sep 17 00:00:00 2001 From: gechiang <62408185+gechiang@users.noreply.github.com> Date: Thu, 26 Aug 2021 00:18:04 -0700 Subject: [PATCH 105/186] BRCM Disable ACL Drop counted towards interface RX_DRP counters part II (#8596) --- .../th-seastone-dx010-32x100G-t1.config.bcm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t1.config.bcm b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t1.config.bcm index effdfb5d7570..96c03d184a0c 100644 --- a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t1.config.bcm +++ b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t1.config.bcm @@ -17,6 +17,9 @@ l3_alpm_enable=2 ipv6_lpm_128b_enable=1 mmu_lossless=0 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + ################################################################################### # Celestica Customize for SeaStone ################################################################################### From 85a671f5afe536cfab83ed39bc6a5d32f2db5e0d Mon Sep 17 00:00:00 2001 From: byu343 Date: Thu, 26 Aug 2021 00:30:11 -0700 Subject: [PATCH 106/186] [arista] Add gearbox configs for Arista 7280cr3mk (#8146) * Add gearbox support for 7280cr3mk and its variants --- .../Arista-7280CR3-C32P4/port_config.ini | 74 ++-- .../Arista-7280CR3-C40/port_config.ini | 82 ++--- .../Arista-7280CR3-C32D4/context_config.json | 1 + .../gearbox_100G_PAM4.xml | 1 + .../Arista-7280CR3-C32D4/gearbox_config.json | 1 + .../Arista-7280CR3-C32D4/phy1_config.json | 1 + .../Arista-7280CR3-C32D4/phy2_config.json | 1 + .../Arista-7280CR3-C32D4/phy3_config.json | 1 + .../Arista-7280CR3-C32D4/phy4_config.json | 1 + .../Arista-7280CR3-C32D4/phy5_config.json | 1 + .../Arista-7280CR3-C32D4/phy6_config.json | 1 + .../Arista-7280CR3-C32D4/phy7_config.json | 1 + .../Arista-7280CR3-C32D4/phy8_config.json | 1 + .../Arista-7280CR3-C32D4/psai.profile | 1 + .../Arista-7280CR3-C40/context_config.json | 1 + .../Arista-7280CR3-C40/gearbox_100G_PAM4.xml | 1 + .../Arista-7280CR3-C40/gearbox_config.json | 1 + .../Arista-7280CR3-C40/phy1_config.json | 1 + .../Arista-7280CR3-C40/phy2_config.json | 1 + .../Arista-7280CR3-C40/phy3_config.json | 1 + .../Arista-7280CR3-C40/phy4_config.json | 1 + .../Arista-7280CR3-C40/phy5_config.json | 1 + .../Arista-7280CR3-C40/phy6_config.json | 1 + .../Arista-7280CR3-C40/phy7_config.json | 1 + .../Arista-7280CR3-C40/phy8_config.json | 1 + .../Arista-7280CR3-C40/psai.profile | 1 + .../x86_64-arista_7280cr3mk_32d4/gbsyncd.ini | 1 + .../Arista-7280CR3-C32P4/context_config.json | 1 + .../gearbox_100G_PAM4.xml | 1 + .../Arista-7280CR3-C32P4/gearbox_config.json | 1 + .../Arista-7280CR3-C32P4/phy1_config.json | 1 + .../Arista-7280CR3-C32P4/phy2_config.json | 1 + .../Arista-7280CR3-C32P4/phy3_config.json | 1 + .../Arista-7280CR3-C32P4/phy4_config.json | 1 + .../Arista-7280CR3-C32P4/phy5_config.json | 1 + .../Arista-7280CR3-C32P4/phy6_config.json | 1 + .../Arista-7280CR3-C32P4/phy7_config.json | 1 + .../Arista-7280CR3-C32P4/phy8_config.json | 1 + .../Arista-7280CR3-C32P4/psai.profile | 1 + .../Arista-7280CR3-C40/context_config.json | 66 ++++ .../Arista-7280CR3-C40/gearbox_100G_PAM4.xml | 37 ++ .../Arista-7280CR3-C40/gearbox_config.json | 334 ++++++++++++++++++ .../Arista-7280CR3-C40/phy1_config.json | 101 ++++++ .../Arista-7280CR3-C40/phy2_config.json | 101 ++++++ .../Arista-7280CR3-C40/phy3_config.json | 101 ++++++ .../Arista-7280CR3-C40/phy4_config.json | 101 ++++++ .../Arista-7280CR3-C40/phy5_config.json | 101 ++++++ .../Arista-7280CR3-C40/phy6_config.json | 101 ++++++ .../Arista-7280CR3-C40/phy7_config.json | 101 ++++++ .../Arista-7280CR3-C40/phy8_config.json | 101 ++++++ .../Arista-7280CR3-C40/psai.profile | 1 + .../x86_64-arista_7280cr3mk_32p4/gbsyncd.ini | 1 + 52 files changed, 1362 insertions(+), 78 deletions(-) create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/context_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_100G_PAM4.xml create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy1_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy2_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy3_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy4_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy5_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy6_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy7_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy8_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/psai.profile create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/context_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy1_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy2_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy3_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy4_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy5_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy6_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy7_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy8_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/psai.profile create mode 120000 device/arista/x86_64-arista_7280cr3mk_32d4/gbsyncd.ini create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/context_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_100G_PAM4.xml create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy1_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy2_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy3_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy4_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy5_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy6_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy7_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy8_config.json create mode 120000 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/psai.profile create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile create mode 100644 device/arista/x86_64-arista_7280cr3mk_32p4/gbsyncd.ini diff --git a/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C32P4/port_config.ini b/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C32P4/port_config.ini index 914fbbdf1652..b2220fee7029 100644 --- a/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C32P4/port_config.ini +++ b/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C32P4/port_config.ini @@ -1,37 +1,37 @@ -# name lanes alias index speed -Ethernet0 0,1 Ethernet1/1 1 100000 -Ethernet4 2,3 Ethernet2/1 2 100000 -Ethernet8 4,5 Ethernet3/1 3 100000 -Ethernet12 6,7 Ethernet4/1 4 100000 -Ethernet16 8,9 Ethernet5/1 5 100000 -Ethernet20 10,11 Ethernet6/1 6 100000 -Ethernet24 12,13 Ethernet7/1 7 100000 -Ethernet28 14,15 Ethernet8/1 8 100000 -Ethernet32 16,17 Ethernet9/1 9 100000 -Ethernet36 18,19 Ethernet10/1 10 100000 -Ethernet40 20,21 Ethernet11/1 11 100000 -Ethernet44 22,23 Ethernet12/1 12 100000 -Ethernet48 24,25 Ethernet13/1 13 100000 -Ethernet52 26,27 Ethernet14/1 14 100000 -Ethernet56 28,29 Ethernet15/1 15 100000 -Ethernet60 30,31 Ethernet16/1 16 100000 -Ethernet64 72,73 Ethernet17/1 17 100000 -Ethernet68 74,75 Ethernet18/1 18 100000 -Ethernet72 76,77 Ethernet19/1 19 100000 -Ethernet76 78,79 Ethernet20/1 20 100000 -Ethernet80 64,65 Ethernet21/1 21 100000 -Ethernet84 66,67 Ethernet22/1 22 100000 -Ethernet88 68,69 Ethernet23/1 23 100000 -Ethernet92 70,71 Ethernet24/1 24 100000 -Ethernet96 56,57 Ethernet25/1 25 100000 -Ethernet100 58,59 Ethernet26/1 26 100000 -Ethernet104 60,61 Ethernet27/1 27 100000 -Ethernet108 62,63 Ethernet28/1 28 100000 -Ethernet112 48,49 Ethernet29/1 29 100000 -Ethernet116 50,51 Ethernet30/1 30 100000 -Ethernet120 52,53 Ethernet31/1 31 100000 -Ethernet124 54,55 Ethernet32/1 32 100000 -Ethernet128 32,33,34,35,36,37,38,39 Ethernet33/1 33 400000 -Ethernet136 40,41,42,43,44,45,46,47 Ethernet34/1 34 400000 -Ethernet144 88,89,90,91,92,93,94,95 Ethernet35/1 35 400000 -Ethernet152 80,81,82,83,84,85,86,87 Ethernet36/1 36 400000 +# name lanes alias index speed fec +Ethernet0 0,1 Ethernet1/1 1 100000 rs +Ethernet4 2,3 Ethernet2/1 2 100000 rs +Ethernet8 4,5 Ethernet3/1 3 100000 rs +Ethernet12 6,7 Ethernet4/1 4 100000 rs +Ethernet16 8,9 Ethernet5/1 5 100000 rs +Ethernet20 10,11 Ethernet6/1 6 100000 rs +Ethernet24 12,13 Ethernet7/1 7 100000 rs +Ethernet28 14,15 Ethernet8/1 8 100000 rs +Ethernet32 16,17 Ethernet9/1 9 100000 rs +Ethernet36 18,19 Ethernet10/1 10 100000 rs +Ethernet40 20,21 Ethernet11/1 11 100000 rs +Ethernet44 22,23 Ethernet12/1 12 100000 rs +Ethernet48 24,25 Ethernet13/1 13 100000 rs +Ethernet52 26,27 Ethernet14/1 14 100000 rs +Ethernet56 28,29 Ethernet15/1 15 100000 rs +Ethernet60 30,31 Ethernet16/1 16 100000 rs +Ethernet64 72,73 Ethernet17/1 17 100000 rs +Ethernet68 74,75 Ethernet18/1 18 100000 rs +Ethernet72 76,77 Ethernet19/1 19 100000 rs +Ethernet76 78,79 Ethernet20/1 20 100000 rs +Ethernet80 64,65 Ethernet21/1 21 100000 rs +Ethernet84 66,67 Ethernet22/1 22 100000 rs +Ethernet88 68,69 Ethernet23/1 23 100000 rs +Ethernet92 70,71 Ethernet24/1 24 100000 rs +Ethernet96 56,57 Ethernet25/1 25 100000 rs +Ethernet100 58,59 Ethernet26/1 26 100000 rs +Ethernet104 60,61 Ethernet27/1 27 100000 rs +Ethernet108 62,63 Ethernet28/1 28 100000 rs +Ethernet112 48,49 Ethernet29/1 29 100000 rs +Ethernet116 50,51 Ethernet30/1 30 100000 rs +Ethernet120 52,53 Ethernet31/1 31 100000 rs +Ethernet124 54,55 Ethernet32/1 32 100000 rs +Ethernet128 32,33,34,35,36,37,38,39 Ethernet33/1 33 400000 none +Ethernet136 40,41,42,43,44,45,46,47 Ethernet34/1 34 400000 none +Ethernet144 88,89,90,91,92,93,94,95 Ethernet35/1 35 400000 none +Ethernet152 80,81,82,83,84,85,86,87 Ethernet36/1 36 400000 none diff --git a/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C40/port_config.ini b/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C40/port_config.ini index 2ba638aee50d..57067b1875dc 100644 --- a/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C40/port_config.ini +++ b/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C40/port_config.ini @@ -1,41 +1,41 @@ -# name lanes alias index speed -Ethernet0 0,1 Ethernet1/1 1 100000 -Ethernet4 2,3 Ethernet2/1 2 100000 -Ethernet8 4,5 Ethernet3/1 3 100000 -Ethernet12 6,7 Ethernet4/1 4 100000 -Ethernet16 8,9 Ethernet5/1 5 100000 -Ethernet20 10,11 Ethernet6/1 6 100000 -Ethernet24 12,13 Ethernet7/1 7 100000 -Ethernet28 14,15 Ethernet8/1 8 100000 -Ethernet32 16,17 Ethernet9/1 9 100000 -Ethernet36 18,19 Ethernet10/1 10 100000 -Ethernet40 20,21 Ethernet11/1 11 100000 -Ethernet44 22,23 Ethernet12/1 12 100000 -Ethernet48 24,25 Ethernet13/1 13 100000 -Ethernet52 26,27 Ethernet14/1 14 100000 -Ethernet56 28,29 Ethernet15/1 15 100000 -Ethernet60 30,31 Ethernet16/1 16 100000 -Ethernet64 72,73 Ethernet17/1 17 100000 -Ethernet68 74,75 Ethernet18/1 18 100000 -Ethernet72 76,77 Ethernet19/1 19 100000 -Ethernet76 78,79 Ethernet20/1 20 100000 -Ethernet80 64,65 Ethernet21/1 21 100000 -Ethernet84 66,67 Ethernet22/1 22 100000 -Ethernet88 68,69 Ethernet23/1 23 100000 -Ethernet92 70,71 Ethernet24/1 24 100000 -Ethernet96 56,57 Ethernet25/1 25 100000 -Ethernet100 58,59 Ethernet26/1 26 100000 -Ethernet104 60,61 Ethernet27/1 27 100000 -Ethernet108 62,63 Ethernet28/1 28 100000 -Ethernet112 48,49 Ethernet29/1 29 100000 -Ethernet116 50,51 Ethernet30/1 30 100000 -Ethernet120 52,53 Ethernet31/1 31 100000 -Ethernet124 54,55 Ethernet32/1 32 100000 -Ethernet128 32,33,34,35 Ethernet33/1 33 100000 -Ethernet132 36,37,38,39 Ethernet33/5 33 100000 -Ethernet136 40,41,42,43 Ethernet34/1 34 100000 -Ethernet140 44,45,46,47 Ethernet34/5 34 100000 -Ethernet144 88,89,90,91 Ethernet35/1 35 100000 -Ethernet148 92,93,94,95 Ethernet35/5 35 100000 -Ethernet152 80,81,82,83 Ethernet36/1 36 100000 -Ethernet156 84,85,86,87 Ethernet36/5 36 100000 +# name lanes alias index speed fec +Ethernet0 0,1 Ethernet1/1 1 100000 rs +Ethernet4 2,3 Ethernet2/1 2 100000 rs +Ethernet8 4,5 Ethernet3/1 3 100000 rs +Ethernet12 6,7 Ethernet4/1 4 100000 rs +Ethernet16 8,9 Ethernet5/1 5 100000 rs +Ethernet20 10,11 Ethernet6/1 6 100000 rs +Ethernet24 12,13 Ethernet7/1 7 100000 rs +Ethernet28 14,15 Ethernet8/1 8 100000 rs +Ethernet32 16,17 Ethernet9/1 9 100000 rs +Ethernet36 18,19 Ethernet10/1 10 100000 rs +Ethernet40 20,21 Ethernet11/1 11 100000 rs +Ethernet44 22,23 Ethernet12/1 12 100000 rs +Ethernet48 24,25 Ethernet13/1 13 100000 rs +Ethernet52 26,27 Ethernet14/1 14 100000 rs +Ethernet56 28,29 Ethernet15/1 15 100000 rs +Ethernet60 30,31 Ethernet16/1 16 100000 rs +Ethernet64 72,73 Ethernet17/1 17 100000 rs +Ethernet68 74,75 Ethernet18/1 18 100000 rs +Ethernet72 76,77 Ethernet19/1 19 100000 rs +Ethernet76 78,79 Ethernet20/1 20 100000 rs +Ethernet80 64,65 Ethernet21/1 21 100000 rs +Ethernet84 66,67 Ethernet22/1 22 100000 rs +Ethernet88 68,69 Ethernet23/1 23 100000 rs +Ethernet92 70,71 Ethernet24/1 24 100000 rs +Ethernet96 56,57 Ethernet25/1 25 100000 rs +Ethernet100 58,59 Ethernet26/1 26 100000 rs +Ethernet104 60,61 Ethernet27/1 27 100000 rs +Ethernet108 62,63 Ethernet28/1 28 100000 rs +Ethernet112 48,49 Ethernet29/1 29 100000 rs +Ethernet116 50,51 Ethernet30/1 30 100000 rs +Ethernet120 52,53 Ethernet31/1 31 100000 rs +Ethernet124 54,55 Ethernet32/1 32 100000 rs +Ethernet128 32,33,34,35 Ethernet33/1 33 100000 rs +Ethernet132 36,37,38,39 Ethernet33/5 33 100000 rs +Ethernet136 40,41,42,43 Ethernet34/1 34 100000 rs +Ethernet140 44,45,46,47 Ethernet34/5 34 100000 rs +Ethernet144 88,89,90,91 Ethernet35/1 35 100000 rs +Ethernet148 92,93,94,95 Ethernet35/5 35 100000 rs +Ethernet152 80,81,82,83 Ethernet36/1 36 100000 rs +Ethernet156 84,85,86,87 Ethernet36/5 36 100000 rs diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/context_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/context_config.json new file mode 120000 index 000000000000..90fc4ca62c1c --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/context_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_100G_PAM4.xml b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_100G_PAM4.xml new file mode 120000 index 000000000000..276998df2445 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_100G_PAM4.xml @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_config.json new file mode 120000 index 000000000000..ed855d2e88c1 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy1_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy1_config.json new file mode 120000 index 000000000000..fe73eb8b8773 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy1_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy2_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy2_config.json new file mode 120000 index 000000000000..8fc0064f920f --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy2_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy3_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy3_config.json new file mode 120000 index 000000000000..27eb5a421f48 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy3_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy4_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy4_config.json new file mode 120000 index 000000000000..cdd9304b825e --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy4_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy5_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy5_config.json new file mode 120000 index 000000000000..f5ea25131fe8 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy5_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy6_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy6_config.json new file mode 120000 index 000000000000..469436d7eecf --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy6_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy7_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy7_config.json new file mode 120000 index 000000000000..8f1034899d4e --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy7_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy8_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy8_config.json new file mode 120000 index 000000000000..125290aac078 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy8_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/psai.profile b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/psai.profile new file mode 120000 index 000000000000..52a039b345ee --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/psai.profile @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/context_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/context_config.json new file mode 120000 index 000000000000..90fc4ca62c1c --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/context_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml new file mode 120000 index 000000000000..276998df2445 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_config.json new file mode 120000 index 000000000000..ed855d2e88c1 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy1_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy1_config.json new file mode 120000 index 000000000000..fe73eb8b8773 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy1_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy2_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy2_config.json new file mode 120000 index 000000000000..8fc0064f920f --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy2_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy3_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy3_config.json new file mode 120000 index 000000000000..27eb5a421f48 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy3_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy4_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy4_config.json new file mode 120000 index 000000000000..cdd9304b825e --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy4_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy5_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy5_config.json new file mode 120000 index 000000000000..f5ea25131fe8 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy5_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy6_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy6_config.json new file mode 120000 index 000000000000..469436d7eecf --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy6_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy7_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy7_config.json new file mode 120000 index 000000000000..8f1034899d4e --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy7_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy8_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy8_config.json new file mode 120000 index 000000000000..125290aac078 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy8_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/psai.profile b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/psai.profile new file mode 120000 index 000000000000..52a039b345ee --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/psai.profile @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/gbsyncd.ini b/device/arista/x86_64-arista_7280cr3mk_32d4/gbsyncd.ini new file mode 120000 index 000000000000..035a4cfa28b4 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/gbsyncd.ini @@ -0,0 +1 @@ +../x86_64-arista_7280cr3mk_32p4/gbsyncd.ini \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/context_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/context_config.json new file mode 120000 index 000000000000..279d1cd99183 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/context_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/context_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_100G_PAM4.xml b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_100G_PAM4.xml new file mode 120000 index 000000000000..125f50435dcf --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_100G_PAM4.xml @@ -0,0 +1 @@ +../Arista-7280CR3-C40/gearbox_100G_PAM4.xml \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_config.json new file mode 120000 index 000000000000..382d52f02dcb --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/gearbox_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy1_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy1_config.json new file mode 120000 index 000000000000..6be5e17d3254 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy1_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy1_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy2_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy2_config.json new file mode 120000 index 000000000000..24e2e4ddbea3 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy2_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy2_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy3_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy3_config.json new file mode 120000 index 000000000000..5daaba2cdb00 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy3_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy3_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy4_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy4_config.json new file mode 120000 index 000000000000..9df86a655a9d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy4_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy4_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy5_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy5_config.json new file mode 120000 index 000000000000..fa8c742a147d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy5_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy5_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy6_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy6_config.json new file mode 120000 index 000000000000..0d778d751ae6 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy6_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy6_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy7_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy7_config.json new file mode 120000 index 000000000000..fce069a8c272 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy7_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy7_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy8_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy8_config.json new file mode 120000 index 000000000000..100626bec46d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy8_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy8_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/psai.profile b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/psai.profile new file mode 120000 index 000000000000..38ed33ce216d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/psai.profile @@ -0,0 +1 @@ +../Arista-7280CR3-C40/psai.profile \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json new file mode 100644 index 000000000000..db31a23c45fd --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json @@ -0,0 +1,66 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "asic0", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable" : false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "" + } + ] + }, + { + "guid" : 1, + "name" : "phys", + "dbAsic" : "GB_ASIC_DB", + "dbCounters" : "GB_COUNTERS_DB", + "dbFlex": "GB_FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable" : false, + "zmq_endpoint": "tcp://127.0.0.1:5565", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5566", + "switches": [ + { + "index" : 0, + "hwinfo" : "mdio0_0_0/0" + }, + { + "index" : 1, + "hwinfo" : "mdio1_0_0/0" + }, + { + "index" : 2, + "hwinfo" : "mdio2_0_0/0" + }, + { + "index" : 3, + "hwinfo" : "mdio3_0_0/0" + }, + { + "index" : 4, + "hwinfo" : "mdio4_0_0/0" + }, + { + "index" : 5, + "hwinfo" : "mdio5_0_0/0" + }, + { + "index" : 6, + "hwinfo" : "mdio6_0_0/0" + }, + { + "index" : 7, + "hwinfo" : "mdio7_0_0/0" + } + ] + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml new file mode 100644 index 000000000000..95e20b91787e --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml @@ -0,0 +1,37 @@ + + + CSDK-B52 + 0 + gearbox + 2 + + 2,-8,17,0,0 + 0,-8,17,0,0 + + 0,0,1,0,0 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json new file mode 100644 index 000000000000..90c075f6a641 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json @@ -0,0 +1,334 @@ +{ + "phys": [ + { + "phy_id": 1, + "name": "phy1", + "address": "1", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy1_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio0_0_0/0" + }, + { + "phy_id": 2, + "name": "phy2", + "address": "2", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy2_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio1_0_0/0" + }, + { + "phy_id": 3, + "name": "phy3", + "address": "3", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy3_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio2_0_0/0" + }, + { + "phy_id": 4, + "name": "phy4", + "address": "4", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy4_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio3_0_0/0" + }, + { + "phy_id": 5, + "name": "phy5", + "address": "5", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy5_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio4_0_0/0" + }, + { + "phy_id": 6, + "name": "phy6", + "address": "6", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy6_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio5_0_0/0" + }, + { + "phy_id": 7, + "name": "phy7", + "address": "7", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy7_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio6_0_0/0" + }, + { + "phy_id": 8, + "name": "phy8", + "address": "8", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy8_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio7_0_0/0" + } + ], + "interfaces": [ + { + "name": "Ethernet0", + "index": 1, + "phy_id": 1, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet4", + "index": 2, + "phy_id": 1, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet8", + "index": 3, + "phy_id": 1, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet12", + "index": 4, + "phy_id": 1, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet16", + "index": 5, + "phy_id": 2, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet20", + "index": 6, + "phy_id": 2, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet24", + "index": 7, + "phy_id": 2, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet28", + "index": 8, + "phy_id": 2, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet32", + "index": 9, + "phy_id": 3, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet36", + "index": 10, + "phy_id": 3, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet40", + "index": 11, + "phy_id": 3, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet44", + "index": 12, + "phy_id": 3, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet48", + "index": 13, + "phy_id": 4, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet52", + "index": 14, + "phy_id": 4, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet56", + "index": 15, + "phy_id": 4, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet60", + "index": 16, + "phy_id": 4, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet64", + "index": 17, + "phy_id": 5, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet68", + "index": 18, + "phy_id": 5, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet72", + "index": 19, + "phy_id": 5, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet76", + "index": 20, + "phy_id": 5, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet80", + "index": 21, + "phy_id": 6, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet84", + "index": 22, + "phy_id": 6, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet88", + "index": 23, + "phy_id": 6, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet92", + "index": 24, + "phy_id": 6, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet96", + "index": 25, + "phy_id": 7, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet100", + "index": 26, + "phy_id": 7, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet104", + "index": 27, + "phy_id": 7, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet108", + "index": 28, + "phy_id": 7, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet112", + "index": 29, + "phy_id": 8, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet116", + "index": 30, + "phy_id": 8, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet120", + "index": 31, + "phy_id": 8, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet124", + "index": 32, + "phy_id": 8, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json new file mode 100644 index 000000000000..14c7bd4dd373 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 1, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 2, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 3, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 4, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json new file mode 100644 index 000000000000..d3723ca2c96d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 5, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 6, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 7, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 8, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json new file mode 100644 index 000000000000..6be7eed4e33d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 9, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 10, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 11, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 12, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json new file mode 100644 index 000000000000..ca8dfca226f8 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 13, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 14, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 15, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 16, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json new file mode 100644 index 000000000000..fac78adecf09 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 17, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 18, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 19, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 20, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json new file mode 100644 index 000000000000..ad70c69489eb --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 21, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 22, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 23, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 24, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json new file mode 100644 index 000000000000..1b927fa78c88 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 25, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 26, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 27, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 28, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json new file mode 100644 index 000000000000..1a6d8cf3a43c --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 29, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 30, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 31, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 32, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile new file mode 100644 index 000000000000..da589793cf08 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile @@ -0,0 +1 @@ +SAI_KEY_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/gearbox_100G_PAM4.xml diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/gbsyncd.ini b/device/arista/x86_64-arista_7280cr3mk_32p4/gbsyncd.ini new file mode 100644 index 000000000000..9bd130dff9ef --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/gbsyncd.ini @@ -0,0 +1 @@ +platform=gbsyncd-credo From ed64eb94d917a839da4f64baa52e5a37e013f00f Mon Sep 17 00:00:00 2001 From: Junchao-Mellanox <57339448+Junchao-Mellanox@users.noreply.github.com> Date: Thu, 26 Aug 2021 16:03:55 +0800 Subject: [PATCH 107/186] [Mellanox] Read PSU fan max/min speed per PSU (#8563) #### Why I did it New PSU could install different type of fan, so fan max/min speed should be read per PSU #### How I did it The existing implementation read PSU max/min fan speed from a common file, change it to read from per PSU file #### How to verify it Manual test --- platform/mellanox/mlnx-platform-api/sonic_platform/fan.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py b/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py index b40712a91d06..7eb0ce946b17 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py @@ -65,8 +65,8 @@ def __init__(self, fan_index, fan_drawer, position, psu_fan = False, psu=None): self.fan_speed_get_path = "psu{}_fan1_speed_get".format(self.index) self.fan_presence_path = "psu{}_fan1_speed_get".format(self.index) self._name = 'psu{}_fan{}'.format(self.index, 1) - self.fan_max_speed_path = os.path.join(CONFIG_PATH, "psu_fan_max") - self.fan_min_speed_path = os.path.join(CONFIG_PATH, "psu_fan_min") + self.fan_max_speed_path = os.path.join(FAN_PATH, "psu{}_fan_max".format(self.index)) + self.fan_min_speed_path = os.path.join(FAN_PATH, "psu{}_fan_min".format(self.index)) self.psu_i2c_bus_path = os.path.join(CONFIG_PATH, 'psu{0}_i2c_bus'.format(self.index)) self.psu_i2c_addr_path = os.path.join(CONFIG_PATH, 'psu{0}_i2c_addr'.format(self.index)) self.psu_i2c_command_path = os.path.join(CONFIG_PATH, 'fan_command') From c44dbf0fe08bd2011a531fdbf1a3650aa2f6189f Mon Sep 17 00:00:00 2001 From: Shilong Liu Date: Thu, 26 Aug 2021 18:21:18 +0800 Subject: [PATCH 108/186] [build] Fix reproducible build issues (#8548) * [build] Fix reproducible build issues --- .azure-pipelines/docker-sonic-slave.yml | 4 ++-- azure-pipelines.yml | 2 +- scripts/docker_version_control.sh | 7 +++++-- src/sonic-build-hooks/hooks/git | 6 ++++-- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.azure-pipelines/docker-sonic-slave.yml b/.azure-pipelines/docker-sonic-slave.yml index a0a1993cd551..ffb29d4c3550 100644 --- a/.azure-pipelines/docker-sonic-slave.yml +++ b/.azure-pipelines/docker-sonic-slave.yml @@ -46,9 +46,9 @@ parameters: default: sonicdev variables: -- ${{ if and(startsWith(variables['Build.SourceBranchName'], '202'), eq(length(variables['Build.SourceBranchName']), 6)) }}: +- ${{ if eq(variables['Build.SourceBranchName'], '202012' }}: - name: BUILD_OPTIONS - value: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web' + value: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' stages: - stage: Build diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 33258a895469..e32ec7aa32c4 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -37,7 +37,7 @@ stages: variables: CACHE_MODE: rcache ${{ if eq(variables['Build.SourceBranchName'], '202012') }}: - VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web' + VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' jobs: - template: .azure-pipelines/azure-pipelines-build.yml parameters: diff --git a/scripts/docker_version_control.sh b/scripts/docker_version_control.sh index 9dd3ad55bad0..595477c859c6 100755 --- a/scripts/docker_version_control.sh +++ b/scripts/docker_version_control.sh @@ -21,7 +21,7 @@ tag=`echo $image_tag | cut -f2 -d:` if [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,all,* ]] || [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,docker,* ]]; then # if docker image not in white list, exit - if [[ "$IMAGENAME" != sonic-slave-* ]] && [[ "$IMAGENAME" != docker-base* ]] && [[ "$IMAGENAME" != debian:* ]] && [[ "$IMAGENAME" != multiarch/debian-debootstrap:* ]];then + if [[ "$image_tag" != */debian:* ]] && [[ "$image_tag" != multiarch/debian-debootstrap:* ]];then exit 0 fi if [ -f $version_file ];then @@ -29,12 +29,15 @@ if [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,all,* ]] || [[ ",$SONIC_VERSION fi if [ -z $hash_value ];then hash_value=unknown + echo "$image_tag sha256 value is unknown" >> ${new_version_file}.log + exit 0 fi oldimage=${image_tag//\//\\/} newimage="${oldimage}@$hash_value" + echo "sed -i \"s/$oldimage/$newimage/\" $DOCKERFILE" >> ${new_version_file}.log sed -i "s/$oldimage/$newimage/" $DOCKERFILE else - hash_value=`docker pull $image_tag | grep Digest | awk '{print$2}'` + hash_value=`docker pull $image_tag 2> ${new_version_file}.log | grep Digest | awk '{print$2}'` if [ -z hash_value ];then hash_value=unknown fi diff --git a/src/sonic-build-hooks/hooks/git b/src/sonic-build-hooks/hooks/git index 2101358379d6..8c3e39f67a7d 100755 --- a/src/sonic-build-hooks/hooks/git +++ b/src/sonic-build-hooks/hooks/git @@ -39,7 +39,8 @@ get_clone_path(){ done # if not specific clone path, get default clone path - [ -z $clone_PATH ] && clone_PATH=`echo $URL | rev | awk -F/ '{print$1}' | rev | awk -F. '{print$1}'` + # 1. trim tail slash sign. 2. trim all charactors before the last slash. 3.trim tail '.git' + [ -z $clone_PATH ] && clone_PATH=`echo $URL | sed 's/\/$//' | awk -F/ '{print$NF}' | awk -F. '{print$1}'` } main(){ @@ -62,7 +63,8 @@ main(){ # control version or record version file if [[ $ENABLE_VERSION_CONTROL_GIT == "y" ]];then # control version - [ ! -z $commit ] && $REAL_COMMAND reset --hard $commit &> /dev/null + [ -n $commit ] && echo "git reset --hard $commit" >> ${new_version_file}.log + [ -n $commit ] && $REAL_COMMAND reset --hard $commit &> ${new_version_file}.log else # record version file echo "$URL==$commit_latest" >> $new_version_file From 7bae388e2f35abd4e20b22068ad933e766b14162 Mon Sep 17 00:00:00 2001 From: dflynn-Nokia <60479697+dflynn-Nokia@users.noreply.github.com> Date: Thu, 26 Aug 2021 10:14:34 -0400 Subject: [PATCH 109/186] [Nokia ixs7215] Add support for changing the console baud rate (#8595) This commit adds support for changing the default console baud rate configured within the U-Boot bootloader. That default baud rate is exposed via the value of the U-Boot 'baudrate' environment variable. This commit removes logic that hardcoded the console baud rate to 115200 and instead ensures that the U-Boot 'baudrate' variable is always used when constructing the Linux kernel boot arguments used when booting Sonic. A change is also made to rc.local to ensure that the specified baud rate is set correctly in the serial getty service. --- files/image_config/platform/rc.local | 12 +++++++++++- platform/marvell-armhf/platform.conf | 4 ++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/files/image_config/platform/rc.local b/files/image_config/platform/rc.local index b63caef0f4a5..57fd8c4b062b 100755 --- a/files/image_config/platform/rc.local +++ b/files/image_config/platform/rc.local @@ -186,7 +186,17 @@ program_console_speed() CONSOLE_SPEED=$speed fi - sed -i "s|\-\-keep\-baud .* %I| $CONSOLE_SPEED %I|g" /lib/systemd/system/serial-getty@.service + # Set correct baud rate in getty service + # First boot will find keep-baud argument with multiple baud rates as per Debian convention + # Subsequent boots may have new baud rate without finding keep-baud argument + grep agetty /lib/systemd/system/serial-getty@.service |grep keep-baud + if [ $? = 0 ]; then + sed -i "s|\-\-keep\-baud .* %I| $CONSOLE_SPEED %I|g" /lib/systemd/system/serial-getty@.service + else + sed -i "s|u' .* %I|u' $CONSOLE_SPEED %I|g" /lib/systemd/system/serial-getty@.service + fi + + # Reload systemd config systemctl daemon-reload } diff --git a/platform/marvell-armhf/platform.conf b/platform/marvell-armhf/platform.conf index 651b01bea18d..b0be99a8e69e 100644 --- a/platform/marvell-armhf/platform.conf +++ b/platform/marvell-armhf/platform.conf @@ -45,9 +45,9 @@ elif [ "$PLATFORM" = "armhf-nokia_ixs7215_52x-r0" ]; then fdt_fname="/boot/armada-385-ipd6448m.dtb" - BOOTARGS='setenv bootargs root=/dev/'$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,115200 ${othbootargs} ${mtdparts} ${linuxargs}' + BOOTARGS='setenv bootargs root=/dev/'$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,${baudrate} ${othbootargs} ${mtdparts} ${linuxargs}' UBI_LOAD='scsi init; ext4load scsi 0:2 $kernel_addr $image_name; ext4load scsi 0:2 $fdt_addr $fdt_name; ext4load scsi 0:2 $initrd_addr $initrd_name' - BOOTARGS_OLD='setenv bootargs root=/dev/'$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,115200 ${othbootargs} ${mtdparts} ${linuxargs_old}' + BOOTARGS_OLD='setenv bootargs root=/dev/'$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,${baudrate} ${othbootargs} ${mtdparts} ${linuxargs_old}' UBI_LOAD_OLD='scsi init; ext4load scsi 0:2 $kernel_addr $image_name_old; ext4load scsi 0:2 $fdt_addr $fdt_name_old; ext4load scsi 0:2 $initrd_addr $initrd_name_old' UBIBOOTCMD='run ubi_sonic_boot_bootargs; run ubi_sonic_boot_load; test -n "$boot_once" && setenv boot_once "" && saveenv; bootz $kernel_addr $initrd_addr $fdt_addr' UBIBOOTCMD_OLD='run ubi_sonic_boot_bootargs_old; run ubi_sonic_boot_load_old; test -n "$boot_once" && setenv boot_once "" && saveenv; bootz $kernel_addr $initrd_addr $fdt_addr' From 48da1596167799c41c50746991d02a748ffba40a Mon Sep 17 00:00:00 2001 From: Qi Luo Date: Thu, 26 Aug 2021 08:06:00 -0700 Subject: [PATCH 110/186] Simple refactor test code hostcfgd_test.py (#8515) Simple refactor test code --- src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py b/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py index 9bd82a76afc7..15dd66f29e7e 100644 --- a/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py +++ b/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py @@ -1,6 +1,7 @@ import os import sys -import swsscommon +import swsscommon as swsscommon_package +from swsscommon import swsscommon from parameterized import parameterized from sonic_py_common.general import load_module_from_source @@ -12,7 +13,7 @@ from pyfakefs.fake_filesystem_unittest import patchfs -swsscommon.swsscommon.ConfigDBConnector = MockConfigDb +swsscommon.ConfigDBConnector = MockConfigDb test_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) modules_path = os.path.dirname(test_path) scripts_path = os.path.join(modules_path, "scripts") @@ -93,7 +94,7 @@ def test_hostcfgd(self, test_name, test_data, fs): Returns: None """ - fs.add_real_paths(swsscommon.__path__) # add real path of swsscommon for database_config.json + fs.add_real_paths(swsscommon_package.__path__) # add real path of swsscommon for database_config.json fs.create_dir(hostcfgd.FeatureHandler.SYSTEMD_SYSTEM_DIR) MockConfigDb.set_config_db(test_data["config_db"]) with mock.patch("hostcfgd.subprocess") as mocked_subprocess: From 92d4bfef10788e42676a205d24d86f8bf7d929a6 Mon Sep 17 00:00:00 2001 From: Praveen Madhusudhana <54973959+ph408077@users.noreply.github.com> Date: Thu, 26 Aug 2021 23:00:59 +0530 Subject: [PATCH 111/186] [yang]: SONiC Yang model support for LLDP (#8120) --- src/sonic-yang-models/setup.py | 1 + .../tests/files/sample_config_db.json | 18 ++ .../tests/yang_model_tests/tests/lldp.json | 28 +++ .../yang_model_tests/tests_config/lldp.json | 166 ++++++++++++++++++ .../yang-models/sonic-lldp.yang | 155 ++++++++++++++++ 5 files changed, 368 insertions(+) create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests/lldp.json create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests_config/lldp.json create mode 100644 src/sonic-yang-models/yang-models/sonic-lldp.yang diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py index 51bc30c89b73..13ce554d022c 100644 --- a/src/sonic-yang-models/setup.py +++ b/src/sonic-yang-models/setup.py @@ -72,6 +72,7 @@ './yang-models/sonic-versions.yang', './yang-models/sonic-vlan.yang', './yang-models/sonic-vrf.yang', + './yang-models/sonic-lldp.yang', './yang-models/sonic_yang_tree']), ], zip_safe=False, 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 a26902ad7105..5d8009afbc04 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -1050,6 +1050,24 @@ "trap_ids": "ip2me", "trap_group": "queue1_group1" } + }, + "LLDP": { + "GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "12", + "multiplier": "5", + "supp_mgmt_address_tlv": "true", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + }, + "LLDP_PORT": { + "Ethernet0": { + "mode": "TRANSMIT", + "enabled": "true" + } } }, diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/lldp.json b/src/sonic-yang-models/tests/yang_model_tests/tests/lldp.json new file mode 100644 index 000000000000..fbd621b84fd5 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/lldp.json @@ -0,0 +1,28 @@ +{ + "LLDP_GLOBAL_TEST": { + "desc": "LLDP test global LLDP table" + }, + "LLDP_GLOBAL_TEST_INVALID_HELLO": { + "desc": "LLDP test global table with invalid hello value", + "eStrKey" : "InvalidValue", + "eStr": ["hello_time"] + }, + "LLDP_GLOBAL_TEST_INVALID_MULTIPLIER": { + "desc": "LLDP test global table with invalid multiplier value", + "eStrKey" : "InvalidValue", + "eStr": ["multiplier"] + }, + "LLDP_PORT_TEST": { + "desc": "LLDP test LLDP port table" + }, + "LLDP_PORT_TEST_INVALID_IFNAME": { + "desc": "LLDP test port table with invalid ifname", + "eStrKey" : "LeafRef", + "eStr": ["Eth"] + }, + "LLDP_PORT_TEST_INVALID_MODE": { + "desc": "LLDP test port table with invalid mode", + "eStrKey" : "InvalidValue", + "eStr": ["mode"] + } +} diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/lldp.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/lldp.json new file mode 100644 index 000000000000..4543fc8a1bb1 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/lldp.json @@ -0,0 +1,166 @@ +{ + "LLDP_GLOBAL_TEST": { + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP": { + "sonic-lldp:GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "20", + "multiplier": "5", + "supp_mgmt_address_tlv": "true", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + } + } + }, + "LLDP_GLOBAL_TEST_INVALID_ID": { + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP": { + "sonic-lldp:GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "10", + "multiplier": "5", + "supp_mgmt_address_tlv": "true", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + } + } + }, + "LLDP_GLOBAL_TEST_INVALID_HELLO": { + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP": { + "sonic-lldp:GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "test", + "multiplier": "5", + "supp_mgmt_address_tlv": "true", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + } + } + }, + "LLDP_GLOBAL_TEST_INVALID_MULTIPLIER": { + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP": { + "sonic-lldp:GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "10", + "multiplier": "xyz", + "supp_mgmt_address_tlv": "true", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + } + } + }, + "LLDP_GLOBAL_TEST_DEFAULT_SUPP_MGMT_ADDR_TLV": { + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP": { + "sonic-lldp:GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "10", + "multiplier": "5", + "supp_mgmt_address_tlv": "false", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + } + } + }, + "LLDP_PORT_TEST": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": 9000, + "name": "Ethernet0", + "speed": 25000 + } + ] + } + }, + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP_PORT": { + "LLDP_PORT_LIST": [ + { + "ifname": "Ethernet0", + "mode": "TRANSMIT", + "enabled": "true" + } + ] + } + } + }, + "LLDP_PORT_TEST_INVALID_IFNAME": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": 9000, + "name": "Ethernet0", + "speed": 25000 + } + ] + } + }, + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP_PORT": { + "LLDP_PORT_LIST": [ + { + "ifname": "Eth", + "mode": "TRANSMIT", + "enabled": "true" + } + ] + } + } + }, + "LLDP_PORT_TEST_INVALID_MODE": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": 9000, + "name": "Ethernet0", + "speed": 25000 + } + ] + } + }, + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP_PORT": { + "LLDP_PORT_LIST": [ + { + "ifname": "Ethernet0", + "mode": "TRANSMITTING", + "enabled": "true" + } + ] + } + } + } +} diff --git a/src/sonic-yang-models/yang-models/sonic-lldp.yang b/src/sonic-yang-models/yang-models/sonic-lldp.yang new file mode 100644 index 000000000000..d1b04f28e93b --- /dev/null +++ b/src/sonic-yang-models/yang-models/sonic-lldp.yang @@ -0,0 +1,155 @@ +module sonic-lldp { + namespace "http://github.com/Azure/sonic-lldp"; + prefix slldp; + yang-version 1.1; + + import sonic-port { + prefix prt; + } + + import sonic-extension { + prefix sonic-ext; + } + + organization + "SONiC"; + + contact + "SONiC"; + + description + "SONiC LLDP yang model"; + + revision 2021-07-08 { + description + "Initial revision."; + } + + grouping lldp_mode_config { + leaf enabled { + type boolean; + description + "Enable/Disable LLDP"; + } + + leaf mode { + type enumeration { + enum RECEIVE; + enum TRANSMIT; + } + + description + "RX/TX mode for LLDP frames"; + } + } + + container sonic-lldp { + container LLDP { + container GLOBAL { + + leaf hello_time { + type uint8 { + range "5..254" { + error-message "Invalid hello timer value."; + } + } + default 30; + units seconds; + description + "It is the time interval at which periodic hellos are + exchanged. Default is 30 seconds"; + } + + leaf multiplier { + type uint8 { + range "1..10" { + error-message "Invalid LLDP multiplier value."; + } + } + default 4; + description + "This multiplier value is used to determine the timeout + interval (i.e. hello-time x multiplier value) after + which LLDP neighbor entry is deleted."; + } + + leaf system_name { + type string; + description + "System administratively assigned name"; + } + + leaf system_description { + type string; + description + "System description"; + } + + leaf supp_mgmt_address_tlv { + type boolean; + default false; + description + "Suppress sending of Management Address TLV in LLDP frames"; + } + + leaf supp_system_capabilities_tlv { + type boolean; + default false; + description + "Suppress sending of System Capabilities TLV in LLDP frames"; + } + + leaf enabled { + type boolean; + default true; + description + "Enable/Disable LLDP"; + } + + leaf mode { + type enumeration { + enum RECEIVE; + enum TRANSMIT; + } + + description + "RX/TX mode for LLDP frames"; + } + + //uses lldp_mode_config; + } + } + + container LLDP_PORT { + list LLDP_PORT_LIST { + key "ifname"; + + leaf ifname { + type leafref { + path "/prt:sonic-port/prt:PORT/prt:PORT_LIST/prt:name"; + } + description + "Reference of port on which LLDP to be configured."; + } + + leaf enabled { + type boolean; + default true; + description + "Enable/Disable LLDP"; + } + + leaf mode { + type enumeration { + enum RECEIVE; + enum TRANSMIT; + } + + description + "RX/TX mode for LLDP frames"; + } + //uses lldp_mode_config; + } + } + } +} From f78f6772f9cfd45bd53f9c0a24cfcba49a2d25a6 Mon Sep 17 00:00:00 2001 From: Shi Su <67605788+shi-su@users.noreply.github.com> Date: Thu, 26 Aug 2021 12:53:51 -0700 Subject: [PATCH 112/186] [sonic-swss-common] Update submodule (#8591) [schema] Add BFD session table --- 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 508202bf540a..4253aa6c20ea 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit 508202bf540a86c98c38beb793c02afa9c05f253 +Subproject commit 4253aa6c20ea2dbf03fd705d601a5ef789ab20e4 From 48ba459f9ffcf3c5623927ab893ac3f15063aee2 Mon Sep 17 00:00:00 2001 From: Samuel Angebault Date: Thu, 26 Aug 2021 19:02:10 -0700 Subject: [PATCH 113/186] [Arista] Rely on automatic flash size detection for Lodoga (#8608) Lodoga actually has a 8GB storage device. LodogaSsd variant has a 30GB SSD drive. However, in boot0 both were mishandled and assigned 4GB for legacy reasons. Remove the hardcoding of the flash size and let boot0 autodetect the available space. --- files/Aboot/boot0.j2 | 1 - 1 file changed, 1 deletion(-) diff --git a/files/Aboot/boot0.j2 b/files/Aboot/boot0.j2 index 29271d572425..16ab2d87172c 100644 --- a/files/Aboot/boot0.j2 +++ b/files/Aboot/boot0.j2 @@ -510,7 +510,6 @@ write_platform_specific_cmdline() { fi if [ "$sid" = "Lodoga" ]; then aboot_machine=arista_7050cx3_32s - flash_size=3700 fi if [ "$sid" = "Marysville" ]; then aboot_machine=arista_7050sx3_48yc8 From c69c2faf63e002db19c14cbfd194efc5b592aa56 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 26 Aug 2021 22:35:45 -0700 Subject: [PATCH 114/186] Fix Python 3 syntax in SONiC container startup scripts The common startup script used for SONiC containers is calling an inline python command that uses Python 2 syntax, and thus errors out when run with Python 3. Make this work with Python 3. Signed-off-by: Saikrishna Arcot --- files/build_templates/docker_image_ctl.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/build_templates/docker_image_ctl.j2 b/files/build_templates/docker_image_ctl.j2 index 541f52656b07..850188ff0a88 100644 --- a/files/build_templates/docker_image_ctl.j2 +++ b/files/build_templates/docker_image_ctl.j2 @@ -57,7 +57,7 @@ function ebtables_config() function getMountPoint() { - echo $1 | python -c "import sys, json, os; mnts = [x for x in json.load(sys.stdin)[0]['Mounts'] if x['Destination'] == '/usr/share/sonic/hwsku']; print '' if len(mnts) == 0 else os.path.abspath(mnts[0]['Source'])" 2>/dev/null + echo $1 | python -c "import sys, json, os; mnts = [x for x in json.load(sys.stdin)[0]['Mounts'] if x['Destination'] == '/usr/share/sonic/hwsku']; print('' if len(mnts) == 0 else os.path.abspath(mnts[0]['Source']))" 2>/dev/null } function getBootType() From 9466d682e9ee2711ce631ff9525041b9ac6209e9 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 26 Aug 2021 23:13:37 -0700 Subject: [PATCH 115/186] Make changes needed to build a basic Broadcom image Vendor-specific SAI modules have been commented out. Bootup has not been tested. Signed-off-by: Saikrishna Arcot --- .../broadcom/docker-syncd-brcm-dnx-rpc.mk | 2 ++ platform/broadcom/docker-syncd-brcm-dnx.mk | 2 ++ platform/broadcom/docker-syncd-brcm-rpc.mk | 2 ++ platform/broadcom/docker-syncd-brcm.mk | 2 ++ platform/broadcom/rules.mk | 30 +++++++++---------- platform/broadcom/saibcm-modules-dnx | 2 +- platform/pddf/i2c/debian/rules | 2 +- .../pddf/i2c/modules/cpld/pddf_cpld_module.c | 2 +- 8 files changed, 26 insertions(+), 18 deletions(-) diff --git a/platform/broadcom/docker-syncd-brcm-dnx-rpc.mk b/platform/broadcom/docker-syncd-brcm-dnx-rpc.mk index c4ccf51f6534..395f23ed1f4e 100644 --- a/platform/broadcom/docker-syncd-brcm-dnx-rpc.mk +++ b/platform/broadcom/docker-syncd-brcm-dnx-rpc.mk @@ -29,3 +29,5 @@ $(DOCKER_SYNCD_BRCM_DNX_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_BRCM_DNX_RPC)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_BRCM_DNX_RPC)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh $(DOCKER_SYNCD_BRCM_DNX_RPC)_MACHINE = broadcom-dnx + +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BRCM_DNX_RPC) diff --git a/platform/broadcom/docker-syncd-brcm-dnx.mk b/platform/broadcom/docker-syncd-brcm-dnx.mk index e08a38d93862..2d4b1af07fe2 100644 --- a/platform/broadcom/docker-syncd-brcm-dnx.mk +++ b/platform/broadcom/docker-syncd-brcm-dnx.mk @@ -46,3 +46,5 @@ $(DOCKER_SYNCD_DNX_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_SYNCD_DNX_BASE)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_DNX_BASE)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh $(DOCKER_SYNCD_DNX_BASE)_BASE_IMAGE_FILES += bcm_common:/usr/bin/bcm_common + +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_DNX_BASE) diff --git a/platform/broadcom/docker-syncd-brcm-rpc.mk b/platform/broadcom/docker-syncd-brcm-rpc.mk index 554c603e63e4..67186aad55a6 100644 --- a/platform/broadcom/docker-syncd-brcm-rpc.mk +++ b/platform/broadcom/docker-syncd-brcm-rpc.mk @@ -28,3 +28,5 @@ $(DOCKER_SYNCD_BRCM_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_BRCM_RPC)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_BRCM_RPC)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh $(DOCKER_SYNCD_BRCM_RPC)_MACHINE = broadcom + +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BRCM_RPC) diff --git a/platform/broadcom/docker-syncd-brcm.mk b/platform/broadcom/docker-syncd-brcm.mk index 1129c7681c34..9ded6bccdf79 100644 --- a/platform/broadcom/docker-syncd-brcm.mk +++ b/platform/broadcom/docker-syncd-brcm.mk @@ -22,3 +22,5 @@ $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /usr/share/sonic/device/x86_64-broadcom_commo $(DOCKER_SYNCD_BASE)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_BASE)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh $(DOCKER_SYNCD_BASE)_BASE_IMAGE_FILES += bcm_common:/usr/bin/bcm_common + +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BASE) diff --git a/platform/broadcom/rules.mk b/platform/broadcom/rules.mk index e890c43e5c5a..e7a830d41137 100644 --- a/platform/broadcom/rules.mk +++ b/platform/broadcom/rules.mk @@ -1,20 +1,20 @@ include $(PLATFORM_PATH)/sai-modules.mk include $(PLATFORM_PATH)/sai.mk -include $(PLATFORM_PATH)/platform-modules-nokia.mk -include $(PLATFORM_PATH)/platform-modules-dell.mk -include $(PLATFORM_PATH)/platform-modules-arista.mk -include $(PLATFORM_PATH)/platform-modules-ingrasys.mk -include $(PLATFORM_PATH)/platform-modules-accton.mk -include $(PLATFORM_PATH)/platform-modules-alphanetworks.mk -include $(PLATFORM_PATH)/platform-modules-inventec.mk -include $(PLATFORM_PATH)/platform-modules-cel.mk -include $(PLATFORM_PATH)/platform-modules-delta.mk -include $(PLATFORM_PATH)/platform-modules-quanta.mk -#include $(PLATFORM_PATH)/platform-modules-mitac.mk -include $(PLATFORM_PATH)/platform-modules-juniper.mk -include $(PLATFORM_PATH)/platform-modules-brcm-xlr-gts.mk -include $(PLATFORM_PATH)/platform-modules-ruijie.mk -include $(PLATFORM_PATH)/platform-modules-ragile.mk +#include $(PLATFORM_PATH)/platform-modules-nokia.mk +#include $(PLATFORM_PATH)/platform-modules-dell.mk +#include $(PLATFORM_PATH)/platform-modules-arista.mk +#include $(PLATFORM_PATH)/platform-modules-ingrasys.mk +#include $(PLATFORM_PATH)/platform-modules-accton.mk +#include $(PLATFORM_PATH)/platform-modules-alphanetworks.mk +#include $(PLATFORM_PATH)/platform-modules-inventec.mk +#include $(PLATFORM_PATH)/platform-modules-cel.mk +#include $(PLATFORM_PATH)/platform-modules-delta.mk +#include $(PLATFORM_PATH)/platform-modules-quanta.mk +##include $(PLATFORM_PATH)/platform-modules-mitac.mk +#include $(PLATFORM_PATH)/platform-modules-juniper.mk +#include $(PLATFORM_PATH)/platform-modules-brcm-xlr-gts.mk +#include $(PLATFORM_PATH)/platform-modules-ruijie.mk +#include $(PLATFORM_PATH)/platform-modules-ragile.mk include $(PLATFORM_PATH)/docker-syncd-brcm.mk include $(PLATFORM_PATH)/docker-syncd-brcm-rpc.mk include $(PLATFORM_PATH)/docker-saiserver-brcm.mk diff --git a/platform/broadcom/saibcm-modules-dnx b/platform/broadcom/saibcm-modules-dnx index 70d0ce29b1cf..d7c7cc932c96 160000 --- a/platform/broadcom/saibcm-modules-dnx +++ b/platform/broadcom/saibcm-modules-dnx @@ -1 +1 @@ -Subproject commit 70d0ce29b1cffce381b55e263649a18e9219f13b +Subproject commit d7c7cc932c96eda6ad7e040ff58a0a8b41511a52 diff --git a/platform/pddf/i2c/debian/rules b/platform/pddf/i2c/debian/rules index 35fca9a784ad..45a58fb9b570 100755 --- a/platform/pddf/i2c/debian/rules +++ b/platform/pddf/i2c/debian/rules @@ -12,7 +12,7 @@ include /usr/share/dpkg/pkg-info.mk export INSTALL_MOD_DIR:=extra -PYTHON ?= python2 +PYTHON ?= python3 PACKAGE_PRE_NAME := sonic-platform-pddf KVERSION ?= $(shell uname -r) diff --git a/platform/pddf/i2c/modules/cpld/pddf_cpld_module.c b/platform/pddf/i2c/modules/cpld/pddf_cpld_module.c index af15e390265f..156ab9644c6c 100644 --- a/platform/pddf/i2c/modules/cpld/pddf_cpld_module.c +++ b/platform/pddf/i2c/modules/cpld/pddf_cpld_module.c @@ -115,7 +115,7 @@ static ssize_t do_device_operation(struct device *dev, struct device_attribute * strcpy(board_info.type, device_ptr->dev_type); /*pddf_dbg(KERN_ERR "Creating a client %s on 0x%x, platform_data 0x%x\n", board_info.type, board_info.addr, board_info.platform_data);*/ - client_ptr = i2c_new_device(adapter, &board_info); + client_ptr = i2c_new_client_device(adapter, &board_info); if (client_ptr != NULL) { i2c_put_adapter(adapter); From df1dc1e90d7c1f2ff43cae4376ee658baa5c2e59 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 26 Aug 2021 23:16:07 -0700 Subject: [PATCH 116/186] Re-enable Broadcom build Partial revert of 323b611071e8c850dd93c02b7fe748cc63086ba4 Signed-off-by: Saikrishna Arcot --- azure-pipelines.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 89c58cc432d4..9e17fbe0fe0c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -44,6 +44,9 @@ stages: buildOptions: 'USERNAME=admin SONIC_BUILD_JOBS=$(nproc) ${{ variables.VERSION_CONTROL_OPTIONS }}' jobGroups: - name: vs + - name: broadcom + variables: + swi_image: yes - stage: Test variables: From cb4fa38a1210e0f6f8ef0a7a228872eca922cc14 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Fri, 27 Aug 2021 18:48:55 -0700 Subject: [PATCH 117/186] Update src/sonic-linux-kernel to fix DHCP relay test case 3 patches have been added that reverts some commits that broke the DHCP relay test case. Signed-off-by: Saikrishna Arcot --- 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 d02e012d6212..403f0b4da031 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit d02e012d6212fcd4e3d2644781b966f872b16afb +Subproject commit 403f0b4da03114193e02243bbcfd9d7ab2c405e6 From 1b1be0292e841f37268b8b7171d806235dde1da4 Mon Sep 17 00:00:00 2001 From: Shi Su <67605788+shi-su@users.noreply.github.com> Date: Sat, 28 Aug 2021 16:57:04 -0700 Subject: [PATCH 118/186] [sonic-sairedis] Update submodule (#8592) Update the sonic-sairedis submodule. The following is a list of new commits in the submodule. f85322e Advance SAI submodule (#911) 66c1a3d [syncd] Check warm vids right after discover (#907) 1020de7 Change the log severity leve from ERROR to NOTICE if getStatus is not supported by vendor (#908) 5349a9d Add support for BFD notification (#903) 6ff9100 [MACsec]: Fix Bug: MACsec device will be terminated exceptionally if the MACsec port was disabled in runtime (#875) b91f75f [sairedis] Add warning on double switch id allocation 518b93a [tests] Adapt tests to armhf arch 36106e9 [vslib] Unify bulkCreate for entries with perf timer 88cf0f7 [vslib] Remove dead code f282690 Simplify declare every entry macro reuse b28e5e3 [tests] Add missing memory header 980bba4 Add missing pyext in makefile 00ffa62 Update aspell 4a5d3b5 Add SwitchBCM81724 tests 8a7b712 Remove dead code from SwitchBCM81724 71834d2 Fix supported object list size bug on SwitchBCM81724 0da464b Add SwitchBCM56850 tests 4d7956b Add SwitchMLNX2700 tests 2e418ab [saivs] Refactor headers a4b15a6 Correct entry in SaiUnittests b5a2f63 Update aspell 923ab2f Add SwitchContainer tests 484beb1 Add Switch tests cc2e078 Add SwitchConfig tests 724ce74 Add TrafficFilterPipes tests 03e4923 Add HostInterfaceInfo tests 5db4e72 Add TrafficForwarder tests 1b4d6d1 Add SwitchConfigContainer tests 7a32cd6 Add Signal tests 7c016f0 Add SelectableFd tests 21e735d Update SaiUnittests tests 353a058 Add SaiUnittests tests 5572102 Fix ContextConfigContainer tests 0fd06c9 Move error to throw on sai unittests 3c3b369 Add db channel from context config to VS 330c561 Fix ResourceLimiterContainer 30f5825 Add missing files for ResourceLimiter tests 8a871ee Update aspell 467e228 Add ResourceLimiterParser tests f6b35da Add ResourceLimiterContainer tests 99f04e9 Remove default ctr/dtr from struct MACsecManager 9381f2d Add ResourceLimiter tests ab2ef9d Add RealObjectIdManager tests 5f6b004 Add NetMsgRegistrar tests 8142375 Add MACsecIngressFilter tests 888197d Add MACsecEgressFilter tests 8ed6e36 Add MACsecAttr tests b14b598 Add LaneMapFileParser tests 38a52ac Add LaneMapContainer tests 2997892 Add LaneMap tests 734c7ef Add SaiAttrWrap tests c6e7ac0 Add FdbInfo tests 7ed640d Add EventQueue tests 752d424 Add EventPayloadPacket tests 85042f4 Add EventPayloadNetLinkMsg tests 8bf97ed Add CorePortIndexMapFileParser tests ff7c6c5 Add CorePortIndexMapContainer tests 4598078 Add CorePortIndexMap tests d6f7435 Add vslib ContextConfigContainer tests bc27a04 Add sairedis api tests 9a96cd7 Fix tam tests a3bc56e Move tam api to separate test 9d1032b Add sairedis tam api tests f1570e5 Add sairedis lib tests 91ce42c Check for null pointer on bulk entries apis 78252c7 Update interface query tests cf956b6 Fix error code on dbg dump e7e1d80 Fix api query when unspecified api passed cd93183 Tests rename fix qosmaps to qosmap 5e9e0c9 Rename fix qosmaps to qosmap 5b67e6b Add virtual router tests 0d946cf Fix lag tests 27bbde7 Add udf tests 31a3613 Add tunnel tests 3366e47 Update tam tests 5b06fb3 Add tam tests 02d6d89 Add system port tests 9224e13 Add switch tests c2c0af8 Add stp tests 2192040 Add segment route tests 702dff6 Add scheduler group tests 24e3d92 Add sample packet tests fda4f80 Add rpf group tests 5ecab66 Add router interface tests 9114865 Add route tests 895129e Add queue tests e01707f Add qos map tests 8162205 Add port tests 46d15e9 Add policer tests 36cf6d1 Add next hop group tests 2200e38 Add next hop tests 1b2bf3c Fix lag tests 27a2b90 Add neighbor tests fc28438 Add nat tests 7468777 Add mpls tests 82ca7e5 Add mirror tests adbcfd9 Add mcast fdb tests d624231 Add macsec tests 72cfe42 Add lag tests 9f1b54b Add l2mc group tests d16bc95 Add l2mc tests 3d07e59 Fix isolation tests 85e5ac0 Add isolation group tests 1c4c11f Add ipcm group tests b6ed3e0 Add ipcm tests 78e8b68 Add fdb tests 8af035b Add dtel tests b56c601 Add counter tests 7c61b13 Add buffer tests fe6a041 Add bridge tests ec96469 Add bmtor tests f6d5d7d Add bfd tests d3419e0 Add acl tests 14a26b1 Add hash and hostif tests 18a09f9 Move hostintf to hostif name in lib and libvs a02b593 Add vs vlan tests 3122b37 Update wred tests 312627f Remove comments from test makefile 466a589 Update unittests 2418585 Preapre unittests skeleton 31718cf [unittest] Add unittest skeleton a4e2d28 [syncd] Fix defines in Makefile.am a4bc9e4 Remove unnecessary include from Makefiles b2e368e Update debian/libsaimetadata-dev.install 222a5b0 Update .gitignore f77ed71 Bring back pyext module 6942de0 Propagate inc and src merge 378bfff Merge include and src for lib and vslib 89c004a Whitespace refactor 3b02209 Simplify SaiInterface macros b7ec50a Add find cross include tool ce6ad22 Remove unnecessary include from SaiInterface.h 8172de2 Remove unnecessary comments for include 50bfd42 Move common SAI includes to configure.ac f40a168 Refactor Makefile.am files even more c91b117 [pyext] Update Makefile.am with top_srcdir 0a0ff45 [sairedis] Update Makefile.am 7b1a0b9 Rename saiserialize.cpp to SaiSerialize.cpp 47dac40 [vslib] Move sai_vs.cpp to sai_vs_interfacequery.cpp 39d003c Add check for configure conflict code-coverage/enable-debug add29e0 Move DBGFLAGS initialization to configure.ac e75abb7 Refactor all Makefile.am 9bb541a Remove white spaces from line endings 2e0b74b Add TODO for future split single file binaries 5b71d21 Propagate Notifications changes aaa519f Move Notificatios to libsaimeta 855be73 Move SelectableChannel classes to libsaimeta 016b5d9 [tests] [sairedis] Update include to use direct name 0fffcb0 Propagate PerformanceIntervalTimer changes 9d17b0a Move PerformanceIntervalTimer to libsaimeta cc5ab4c Move joinFieldValues to libsaimeta 638ca82 Move getHardwareInfo to libsaimeta 3951504 [vslib] Fix VirtualObjectIdManager multi arch logging 5b888a3 Remove unused SAIFLAGS from makefiles c9f05ea Remove ../ from includes 737393d Move SaiInterface to meta directory e13991a [debian] Update install to include only sai*.h files 8e3a8fb [meta] Make swap lib naming for better read in Makefile.am f1b632c Update autoclean.sh 6f319f8 Update .gitignore --- src/sonic-sairedis | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-sairedis b/src/sonic-sairedis index b71c2a5a8f80..f85322e139a9 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit b71c2a5a8f80d9206145ad07b0411e8d7b82ad1c +Subproject commit f85322e139a9b10f0154b26efaed689791d135d5 From 086254bfd2b8458f88d90a5500c41332fd5eb6bd Mon Sep 17 00:00:00 2001 From: Shilong Liu Date: Mon, 30 Aug 2021 10:49:52 +0800 Subject: [PATCH 119/186] Fix azp pipeline file which is involved by former PR (#8616) --- .azure-pipelines/docker-sonic-slave.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure-pipelines/docker-sonic-slave.yml b/.azure-pipelines/docker-sonic-slave.yml index ffb29d4c3550..c9121df880b0 100644 --- a/.azure-pipelines/docker-sonic-slave.yml +++ b/.azure-pipelines/docker-sonic-slave.yml @@ -46,7 +46,7 @@ parameters: default: sonicdev variables: -- ${{ if eq(variables['Build.SourceBranchName'], '202012' }}: +- ${{ if eq(variables['Build.SourceBranchName'], '202012') }}: - name: BUILD_OPTIONS value: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' From 912fd699e1608573e79e7baea7c8edbf4caa0dc8 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Sun, 29 Aug 2021 23:31:40 -0700 Subject: [PATCH 120/186] Mark the PTF docker container as a Buster container Signed-off-by: Saikrishna Arcot --- platform/vs/docker-ptf.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/vs/docker-ptf.mk b/platform/vs/docker-ptf.mk index 857f53574743..445fc8daf4d3 100644 --- a/platform/vs/docker-ptf.mk +++ b/platform/vs/docker-ptf.mk @@ -4,3 +4,4 @@ DOCKER_PTF = docker-ptf.gz $(DOCKER_PTF)_PATH = $(DOCKERS_PATH)/docker-ptf $(DOCKER_PTF)_DEPENDS += $(LIBTHRIFT) $(PYTHON_THRIFT) $(PTF) $(PYTHON_SAITHRIFT) SONIC_DOCKER_IMAGES += $(DOCKER_PTF) +SONIC_BUSTER_DOCKERS += $(DOCKER_PTF) From 57e7b941ab4d13f4a16ba2478db221affed18fea Mon Sep 17 00:00:00 2001 From: Samuel Angebault Date: Mon, 30 Aug 2021 15:26:56 -0700 Subject: [PATCH 121/186] [Arista] Fix flash size computation for Lodoga (#8622) The Lodoga platform also matched crow which was hardcoding the flash size to 3700. This change enables autodetect on Clearlake which in turns allows autodetect for Lodoga. The threshold was bumped from 3700 to 4000 because size computation can differ slightly and report slightly above 3700. --- files/Aboot/boot0.j2 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/files/Aboot/boot0.j2 b/files/Aboot/boot0.j2 index 16ab2d87172c..efbd3d4e8c97 100644 --- a/files/Aboot/boot0.j2 +++ b/files/Aboot/boot0.j2 @@ -478,7 +478,6 @@ write_platform_specific_cmdline() { if [ "$platform" = "crow" ]; then # Assuming sid=Clearlake aboot_machine=arista_7050_qx32s - flash_size=3700 cmdline_add modprobe.blacklist=radeon,sp5100_tco fi if [ "$sid" = "Upperlake" ] || [ "$sid" = "UpperlakeES" ]; then @@ -592,7 +591,7 @@ write_platform_specific_cmdline() { if [ $flash_size -ge 28000 ]; then varlog_size=4096 - elif [ $flash_size -gt 3700 ]; then + elif [ $flash_size -gt 4000 ]; then varlog_size=400 else varlog_size=256 From c7fcbe1ab34a0b0b86d8f2330e7c38fda236ecf1 Mon Sep 17 00:00:00 2001 From: vdahiya12 <67608553+vdahiya12@users.noreply.github.com> Date: Mon, 30 Aug 2021 15:56:41 -0700 Subject: [PATCH 122/186] [sonic-platform-daemons][sonic-platform-common] submodule update (#8577) This PR updates the following commits in sonic-platform-daemons e038bc2 [xcvrd] initial support for integrating vendor specfic class objects for calling Y-Cable API's inside xcvrd (#197) 57e3d78 Fix issue#8230 (#210) f63fc94 [thermalctld] Use interval set in thermal policy if available (#164) 8b2227d [CI] Sum up Azp unit test code coverage (#209) b880c48 [xrcvd]: Added unit test for sfp oir events (#205) 4a32b5a [y-cable] fix for logging the xcvrd metrics before writing the state to the State-DB (#208) 53e1532 (origin/shilong-test) Add str conversion for numeric xcvr info fields to xcvrd (#200) 03a4add Introduce mgmtinit delay after transceiver module insertion (#201) This PR updates the following commits in sonic-platform-common 0dc71c1 Add y-cable driver for simulated mux (#213) Signed-off-by: vaibhav-dahiya --- src/sonic-platform-common | 2 +- src/sonic-platform-daemons | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sonic-platform-common b/src/sonic-platform-common index c17c37065e99..0dc71c1a19bd 160000 --- a/src/sonic-platform-common +++ b/src/sonic-platform-common @@ -1 +1 @@ -Subproject commit c17c37065e9956593b2025ee7fe1362c6ffea64d +Subproject commit 0dc71c1a19bd27c15a2d4d0ac9c347637cdb4391 diff --git a/src/sonic-platform-daemons b/src/sonic-platform-daemons index 66e78174a726..e038bc2997ab 160000 --- a/src/sonic-platform-daemons +++ b/src/sonic-platform-daemons @@ -1 +1 @@ -Subproject commit 66e78174a7269cccc3da97b2b0f3846b69d6b8e7 +Subproject commit e038bc2997ab7504b544c087bb88bb01b3bd620c From d53c6248e4a0f7d7e2d28ff0b394c0e91cf5e6b4 Mon Sep 17 00:00:00 2001 From: Song Yuan <64041228+ysmanman@users.noreply.github.com> Date: Mon, 30 Aug 2021 16:04:07 -0700 Subject: [PATCH 123/186] [chassis] Set LAG Id range for 7800 chassis (#8052) Configure LAG Id range in chassisdb.conf for 7800 chassis. --- device/arista/x86_64-arista_7800_sup/chassisdb.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/device/arista/x86_64-arista_7800_sup/chassisdb.conf b/device/arista/x86_64-arista_7800_sup/chassisdb.conf index 3918a00c4ee9..221b9e9c27b2 100644 --- a/device/arista/x86_64-arista_7800_sup/chassisdb.conf +++ b/device/arista/x86_64-arista_7800_sup/chassisdb.conf @@ -1,2 +1,5 @@ start_chassis_db=1 chassis_db_address=127.100.1.1 + +lag_id_start=1 +lag_id_end=128 From 803aa389b09d7a8fd173cebdc8a7cd3015b8db46 Mon Sep 17 00:00:00 2001 From: Santhosh Kumar T <53558409+santhosh-kt@users.noreply.github.com> Date: Tue, 31 Aug 2021 19:47:54 +0530 Subject: [PATCH 124/186] DellEMC S6100 SSD Monitor Porting Changes in master (#7289) Why I did it To monitor the SSD health condition in DellEMC S6100 platform post upgrade. A daemon is introduced to monitor the SSD every one hour. To check for SSD status at boot time and at the time of cold-reboot. All these changes are supported only for newer SSD firmware. Porting changes from 201911 branch Added a platform_reboot_pre_check script to prevent cold-reboot based on SSD status. Depends on Azure/sonic-utilities#1556 DO NOT MERGE UNTIL ABOVE PR IS MERGED --- .../debian/platform-modules-s6100.install | 8 ++ .../s6100/scripts/iSMART_64 | Bin 0 -> 221840 bytes .../s6100/scripts/platform_reboot_pre_check | 38 ++++++ .../s6100/scripts/s6100_platform.sh | 2 + .../s6100/scripts/s6100_ssd_mon.sh | 21 ++++ .../s6100/scripts/s6100_ssd_upgrade_status.sh | 118 ++++++++++++++++++ .../s6100/scripts/soft-reboot_plugin | 1 + .../s6100/systemd/s6100-ssd-monitor.service | 12 ++ .../s6100/systemd/s6100-ssd-monitor.timer | 12 ++ .../systemd/s6100-ssd-upgrade-status.service | 14 +++ 10 files changed, 226 insertions(+) create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/iSMART_64 create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/platform_reboot_pre_check create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_mon.sh create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh create mode 120000 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin create mode 100644 platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service create mode 100644 platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer create mode 100644 platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install index 1f1b7609b760..bf95a7ec8961 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install @@ -10,20 +10,28 @@ s6100/scripts/platform_reboot_override usr/share/sonic/device/x86_64-dell_s6100_ s6100/scripts/fast-reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/track_reboot_reason.sh usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/warm-reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 +s6100/scripts/soft-reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/ssd-fw-upgrade usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/override.conf /etc/systemd/system/systemd-reboot.service.d common/dell_lpc_mon.sh usr/local/bin +s6100/scripts/s6100_ssd_mon.sh usr/local/bin +s6100/scripts/s6100_ssd_upgrade_status.sh usr/local/bin common/actions.sh usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/platform_sensors.py usr/local/bin +s6100/scripts/platform_reboot_pre_check usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/hw-management-generate-dump.sh usr/bin s6100/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/platform_watchdog_enable.sh usr/local/bin s6100/scripts/platform_watchdog_disable.sh usr/local/bin s6100/scripts/sensors usr/bin +s6100/scripts/iSMART_64 usr/local/bin s6100/systemd/platform-modules-s6100.service etc/systemd/system s6100/systemd/s6100-lpc-monitor.service etc/systemd/system +s6100/systemd/s6100-ssd-monitor.service etc/systemd/system +s6100/systemd/s6100-ssd-monitor.timer etc/systemd/system +s6100/systemd/s6100-ssd-upgrade-status.service etc/systemd/system s6100/systemd/s6100-reboot-cause.service etc/systemd/system s6100/systemd/s6100-i2c-enumerate.service etc/systemd/system s6100/scripts/s6100_serial_getty_monitor etc/monit/conf.d diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/iSMART_64 b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/iSMART_64 new file mode 100755 index 0000000000000000000000000000000000000000..e485a6ee104e320cf8b24c78ed003782d0cf9b4b GIT binary patch literal 221840 zcmd>n31AdO_IFRnK!898g5Pc<+4S&Y=PH*>jY!^uiidt8~t~_sP6nU2VxX= z(2sN~`y2fwEd49^$~B9^#ZF$Z*g1}+>%R*`G%cnXN(wr{DN777tCMeUOsqv{)oXNh99?V@o~dgyNNzwPd}@W)kI{7za0EW zJa@u>qyv=yVcELd9(wnaZ~N7>n%nXDQ*S)^!Yx-(-pTlnXs~vr=SW4iPAu&dq&e{4 zfTM2iF}HAf){77S&=Jvu|8h}rqRbC~PL#d}6(&m0PLe(=37wadq+gzdPH7T+TcqdU zzu14*A|Vl0Dtq`#je{fi{@3zOh~PJ-W-B>kQwbe>O=etVMielRO_J^cBZ=C(DhYl-l5{l*otu)Rf0rbE1k!WxU+lln zlhpe-fQk5@nFN1*68!cg_=&*h;J?^^t&-?Tha_~aOp?AON&4wX?;v%PijJJgs@9*Y zpCCr*r7`I@2>iO3bP3O?h4fe&Ax)id{-mk1W-pyRcm6Wh?4{>V8oyxiqS@z9pRr)J zG7vC`7c8DR-8FylB5BUD*|V=8FmdNv z>|U~D_EKr)g4xrT0!Vc&cDqagR69hYZ>PcT9!8lj=XjbJo1^h8q8H1WR{;y0R-29Jm5 z+6|PBPW(${TPDC#dMlC6>1P-yHcTWN`=2C{|CNLP+}-B4CQs`aj92<+1KrEUq@eQ8F0k;OBp zTIR!%?brY5?NFjD}-SJjDI<%bg*Xp>u*XY zA5;G~#FVc4)RdQRN~gN@e-2YR^G`*FVoE2T^nV4WblsLw-egmH8y$?_X{L1Y0rh|L zOzD|=B7T>c($S&DzvZU%_C~5C6`9gyQ+kOhUDpxHE;XfhFyYsk(#_AI^``VAO!y6^ zbeaR`|2CS^JL`$~Ei0M3f)u!}pQ+kal{YX=Kttq{mDZS2=-rbZQGNtQt zQ_8M4r5|O&M@;EGP3h8=QN8VDO3yH*=a|y7OzFK%>Di|ATvK|EDg9_udVf=TA5;1e zQ+i)hdcG;WpDEp8O7Cw4Qw^^GxZ3P3cQa>BpJU zmz&a$H>DSu(ubJROHAoQP3fhk^kJs-b*A*;ru6lu^gL7g22(oudiuYOrgZi=5gBEs z^n4wR-+(FoBvX2|DSebFy~dP2+LT^vN*`lNS3G+&6xIIWlw3*i23+>gi?Ei8XM4u$ zCJ=&$^0onTsPA_Cm3ui5qWC-lX?2J2uWvcU$uw&9CljkpWAVRG9M3>WD`4@Z6em-w zIavI1ij#@ehOqbyij!&8a#;LgijzszvRM3FijyhTBo?1YaWbJ={jW&qJC5RHI<-0$ zKZ)XGGPN2OA4YL9m0EzskEJ-7NNppF=Te+Zqqd&KyHT7>qE^b{9Vt$xP%C2bHWVil zs4ZdfG>Vhy)26ZbPnRN2CQmD1@qH90Q>Qst{9B5XiPMI#_?HwX)28LH_}?i`CQZv? z@f{Q=Q>IBQ{uaf_glYA^Q2V!0Jcr_SEM87=GFe&;i@!i|GF4iD#h;=$nJ8@|i$6?p zGELfg7Qct$WRkQ}7Qc<+WQw#R7Qcz&8HefsE@t$nyiQhN&T)Et zE9Dm|tN+CaRQ}om1QcJrQW-i$u~jMW|LW>&P;0AGlY2>1Ugz}}jrlPR%Hi%%h=QR- z5b%^L``1Xa?PoPrWMM&8@th*L?cv)|&LH+Z6*yEgMf(fNP#6|1OYyCU`07iX2NcyA zQG8Vu{n2<1^-=I%G0=d}_$XR&K!P>QLpIQ73G@Yss`m2{ zd-HXw>pWDJkIJeQpF03t7lB&|T*Yx980v)TD)K3G`Ok+Ag)$$rq1x9&nUB-&--)#n zquvYydor+!-%E=+1bM@Ne8n?Hij0qqjJJ8lSt3I-GG0VRg|r_GXg^U~oPqLeSmCX# zYaxISsGwR1?w!?J$sChZK7yVRRI$@~sN!>m5DUqhBu|~K#Q7PIIQq+*0zT&+&x$>g zJ4>Y57-Dz0hczx@eOT_Ns&kKT+tvwSs-h5oc*nG1jOeux>1|u5Ss~x>7Jv~)i$JIq z$1JpBUN>Ppbw$Mi*YUjaf;1}TsavH~)@3NIYvfm`hHI#_*I>dcN~?}^WZrHiJsNK?z=x6 zIz(zCdmYfP3I({(#Ap*pi8zHNRtjI6Ff}0qb*&W@FrfmWGy~?h!tS=fpc$ghhpn)s z7FfCgd(H|w!veD#u-B}xJ{DL@16E^&{Q?2$BgoM7Z>*SIz-Y7{ToFM=s7A`)I~&R5gp-x8hqnS!F%N`o|0X%dJP_Ux(C7n! zRb?>8c$K|BLc8Tn&d)vdVBOUv$|v;>xcAlqz)JQMc|B;HS5=%~sALONZ#+Fj?sy~j zs{_QG{jWb^x`GyTfy62t<76qc7a{Fq#sf$zd?Eg>A*|MfGTo0JpmgY@U0d9 zMkvE6a9$NzsZuHf{H&N^gI@WEYsU-9h&yK@Y7RkXt6tg|ul(kN%0yk;UORFnV_ z`s?=y?V!-36be)59)!?Up9x*BNdFHKy_9_vg|0;?oP&p)&E2hH1f|SJO3{kllB-R{ z*%ZGBahAWJVjjgOP}%D#bP9#;qfj1&Hc@CGg=#3&8=;~VpGmHqif<|2fyH-A?v_O> zJ|*fcen9Ha^}zR_(DxJ?L7{IDD#heJ|B@-peTDa$1Mf8i@3k)Ij8Iph`E{xUdveQL zh%qm*qJYXi1Wlo_>OAOKad3!S{1mbgl2(4gi;Qv}T#*)jw^Vf=^cT=5jO%IY(K^Lf zn!zj>Gyzs@D^2ieB+tUk%jb-ERzxJ%d2rf2kq2CTJdp=otvr$YUG2k1S6o3{^hFE8 zT`P(yd?bb2R;;IRJJvGQzV<&{uYVzFy-Yc`6UtV~{q?cupQo(e>wp1Nd|S%kZqHKG z^u9ESBp-KZAoLi@o#}s!W^jsnKOul$ax>-EDgH@Wz zl)04#NX4sE^&+H_$h>cZj%N$~mE_`c;AHbid-+BQ5tZeGkvHZ=#$t}8_`OuW)lDCS zW+?u(oG~vkww2aOh>ro7#A;>KCQH8J`-pNoVKSrL!*Ual{qQ@G4SH)aUy^zoFiew&WkSyD66)B3Vu#AnnV)mhJsv< zE#2L?)ZZqlN6;-y>eUcZ_(-1f73F+p&M7TBglblAAryt=)4UY)dFvnxoo-G{liCW- zHXRGjoQyL|mt>0kJ1M_!GR~*{D^6Cl?nIKFLIwBI0I|vveZ%s{P(Jy52}RN>o-i$7 z5#e+yNQWg77JT=g&?lz2KarqbMlTy8^e_=g?zHfyrDfEoJR!{x*d7QhhFw}Fqgrpl zdW?2dvRWsjRxatbdJi6f5fB<-u3qoK!Iaa(oRgdzooH zRDm^}rJTU68CEW?2ve`juD@jLrQF!lT19_Y`&wEU*%@^11rt(5-Op&nd*5Pd;>tVt z(!`Z(jirep2la`I4ER4d-5(0B@kC^V8n*}oukJcY(ns4s=4Qm8vZs&lWuz~(F5tE?mQ8CW_4Vy&vU z3i*6ZVN-ID*8ts`9CU{PT96#{hygl1Ip_rgl$#t>X@GvwlD4kK0M#Z3eQtnWOb+^& z0lFnQ=obStAE1iNUm^PkLkJy1p|unmMLhC4WHHB&@v=AX^I((1*vA&0A zMF>yDCuvCVH72;Z#rKFPjgnhY7LVt8WY;U)w+NB@2zMdeM)53+*zl*G9Jh!v${BL? zXZp-N$OzV~6nSevvElz%@{zFW(^txo;NiHphn_%JG>DV$2w;ROGiz7{wwfx=D0e8} z9bltgGP@Cxp#eqpDhds8uf*0wyaha#!DEwoEQ`mc@mMyG&Ev5g9$Ug=v~U8N%Xw@F zj}`G)K97~~n1fc4N1NwZS}(*xXEVT0RYm$C-At_c zIx00goq&MWu!TcilBJZW%hf(W5a@0YI12>Az2X2T8i2v(8cr7F&oi>yo3k$!*_RvH z-+e_-8E-mT2(~&@tTu8!L{3<)xZ6nBj)aPhh=zXJL$Z-j25tS(06YS~emTpVg^d03 z#es^h(m1J%p8cT`Ud{8onp{O)n}Z;9B%6LfC7+-`N}(xK?~$gg$wt;VQ9&jO&5^%* zQ$DV8X?LoT5?GDPjT*ZEt9nVjy@BOjc?k8~VG#Q_Ys4S}Kp_A&8i1VuKr}BS9ijn= z432o)K)k?63^7Ph2qZ!V;8q40ZU86*K)OwD>=IrFsU8!5j*)W#av=VEBf-g`LWCVE z&Ngxea_C$mp&N(3pi^CG^Wl#PE{v8 z~mEZ(i&TY#04Sl2U!2UJl*g8Fhd1eIe)sFp%Z zWbYz`$9+94DohhCRB_X!0LG2Of=?MD!V&KnhD71^xvJeV-UpvUwainkotUJP(6M6z| z6!qpe=s}^U$(xGpw1`H7Q-@*dD2b`#K7*BOccUj50=l>zB}TExs)u>)_kDueGh3qe z+bG01DxnbLXeB~PILac9Xr)Q7o;dorF&t?inu4P?RC`b2NTLwq=s$ngIogX*5{|MH z$>_6qjvR3^y3ouKwaF@@DCB?qd^8o zxydoFp(HYDtZv0~^fQPW9GQEP*WQC_ zXS&sqLX4vf3Nem;{WvK{jn%Dqj^-!hD9&a34%LhG0ngqcY|YKR(^ps%XRC3p1`8ZH z5WeE);q4zGjKvPsxziKMv94>4#8Bea_%l=hSFE1xp4F=bn8+jI$iPGDTm!V3f$Z0R z%C|(m1^b{XZ^bjuS<5#EKJIJ7u1lR~MIF}j?q$!`nhx&v1R%z~8EBKjnR=}IF$CVD zb9y=G>EZT*YsLoc=$Uv@-FwFR>cQC+24}rEXQADkvjP(Aiaj$|$$Tr4g54Wkfo5Fn%j+6H)ByxEh2eQnf#>NgdA~VpupmPt~)4*9LYTt>(c4b`}ggOI3Kct`2C%{6lF57)u@F#m6>lTY9Ty>x8zM7<*jdFOH+OhfA`ql@@09P zJ8e{MW-SV^Dt3MdvLjz#`aGkcx@nDeINNc;8f}m=E!%OJ`K+im^N!V|ptGLyen97a z>jsE|n7%+Tt$0?{ViBz~t+b=>%3<81C%if^Y4aX+qs2ZjC_4CYFu>a>r0_CH1RB8; zQNyD=Ary4hkQ~A@RA-GvEOm;1bQ-5uSx(Cc>=0S#=AA^jhA*3i6n|z~d_l+)vxox& zw)tvQcm3Tz{90o3IBRGjk7?g7Foy}>EutXXRHTJJz5vG{b5IN5Y!tQO;X0DbWgkS- z&qX*+V`(8KF z`RYzEM2p)rW8#Dq->$7s^IqdaI81%d^R~V$y7NX#^LevSvEtc6Kj_pQG_?zQBfoO@ z20=QHOe|@Cr~dYPrxBw?NH7@vm9?LhQPfl4$i_Cf?7IaBOckj#JfjxmcVy#T8aVRN zRGg9HsWj(^CgU`b4vx^`8j9(eSXJEw8r5(giABKG9F?uLtB=?LYUq09|AgpoZ`v55>WORG*EL8^ z)U-rOdJ)M1Ym6q&TeM7e&f zVCi4byTJ%OV}v$}P?h(7grq9(1N`Sf`hlG)6ZxSWaD)f*K$t_S9cQn$(u1E`eLJlo zE=Pkx*S;+{(00Ll@i2DN%7dJq@(#eF=0uq3NDT7x_kd#odR8 zQTiJt8RO`DjM}+s2RuhVJE|d$x$ONLe8!6zar*}3;-NHph+F0@rCPKxJW~~!L-kA~ z;}sB|xkzLVlfCVc!b_7grICeJRQn_|X%ZchCGAU|IYcKdd&yY}dI`YDS8{+107HEBdpOj!7h9Y%B*j?qNPO*g-fTeN)xf~FztNXmv zkDe{`x7W(nJTPG8xCBD~`g2|ABj8yk0K8!UIx_%MHq}d-HMflvTDod7Tmr}UP)mz`w82Fi{FJQsKJW&n=!Y>S7Y_p+b?x$z zzaCQkBsWpi$BudB?L$pjtR^;oWbdo!8_yOtgs|hZmI8VScI0X~CQ6Dii&$mp-<2of~MgX_5p=( zUv(|DL-G49Qetf#GRr2FBoI(5@R>Nb}JXXtNH9S_w zW3@aM;;}j&tLL#0k41Q_p2sBWO)LoWSO$+t2N*9|JeI*@**uoTV>vvQ&13x$Q@uHe z_`E|9_G}T|`3VL%^dW%mr=thE*}z{94$#e#wh2+yOHpMVdBN3yakcT%aVmZ&=9VC> z=Mf0=+z9lOoB9*0VGY>{n}r4dqj-K`52{rBQ|c94t>Q1O14(ohbw@)R_Btn+wc2TN zAx_d7q@;5gss60VAC;dD(hO%>Nov}!h?&7ptiE9Q42B< zEF#|20!l66!E6Lec`ygTbv)P~!Sy_d1&_5GcrYKqjV$PJkny5m^gN}nQnXr}s>J!- z_d+cov(Q7IL3#P{riSnzK(e9FuwyFlIA!8tJweO1sBaXD$ZPUpikO*4S6_#8Y||-4 zTiCPBb&BG@pN3jPbH4)rhf0n6~7)TCs)-lVEx_z zeg9g@KtAg-&fn6r*|Xw;h8p`A5m>#K`M)^P%QVoa275fDfvbTDeZdddt>w`;5~u=xxokIox5(*q#yO7=76FZki4YEUPR!dVYj zW%*XnNo|}5$BAqZ?!FzqWz>hv#_k%XXyNL}16eM3Bb3#_eGPh#idxS&D@Tqq4CRtkuqYHwMguX=K-?G??NJjK zPb*hD9%w0h*YI%~FX+$Fh!{ab9hjhZlNsclqra-+%|TVDk$&J-vo}>-SwbBiM8{}_ zIG!x}LQ#v@`F@|bKj4BVyqrYKN$V6FO9hl=*0rK{i*-u(6Q#Cslp5&P2|0SVk|yZ2 zS4J`#DAzGbxvU1tebOs&ec26^+rZ0lfwa{-DO2|LPS!~$1(J5siPRyfI!WoBQsp`s zjo^K%*Fu0;qkYg6A2G*N}&b3P$?Ii>~7MCKaLmX zWji*l?7pLTH~YOqAnWqU7#+r7duS_3-?_1zj*}ayDo+iR=a^I7NKGkQFDjzZ4|k+h znHNJKY%hBVKPAqMDa#cY<>cZ=P-9APF9YlvlM)!|p>yMIQ{{ZVOO^A57U8oI>V#0+ zurp=hSFMFX0EIiEa0V-kzt6WsC^f5YgNR)G9kdE>SUvBl#!KhVr>y&QQLM!IVoF?& zfqOY6?#J$25GBr6QsQP{YR;8F{*oqx38(h)&9pLz6Z0j^ zLoC|D{6x8!?gip@7)LL#sf@L;bd&`xNo!5r{xU^HLpD=#x&9K^-B?P)Oqa2yjNB%# z!AwMVHq`7C1*frsl_1JIgP9-blVy5c6i492vnyL=toWB;zlF)sT79?VR4^wtsL(>y zF*-@=5niY1RaZc<=o86x;XQ2bwMuw*MTD_)%(%!{y@dopi-z(o-=H^WHp_hGbok7I zs=tIr3S!jjCOk7?#AIm%EhHl-2zA^c*t63bL9LzC}-`e)uo77 z&II3rR`aY~hVxXBiXfy|1VSsD|I-7w`)&=AeU!bH;BYP#qR*Rr`B7r~?OmY=9OL=v4-KN(b3F=mi6$5a><@ z^6H?U-)D028=#{JbR`2#(?MYlnrDE1eF>m58EBLa+QmWR4bUzE9m7CfbWo6kdK#dY z2$aS^-ckdr{SGtl)q z$jw1F8K4{jEn=W4I%p0D%{D+kzX;F-2Flk#=W&q30DVNDJ`8k(4jRuv-3`$51UiK0 zqiX-xD?$V#Ip{x#a}nH3puaQFn>uI!2fc5A<`U>-26|KnWpmIo2520CN*QRC4(h-` zHyWU$2y_JlU95xJaL^0`6nO!l(-C+ek^Z|i-Gfy-iKRoRPJT0UF7W|t%Yw}7YRlk>^0gQ)Vp zO3oQ-s>g3R-8*2cjVyi^js({0DFX|9(TocyL$&t;F|{aP!6YHlLH1sVeuqz2O||>H zwe%xm{*unY7@TJWJUqeJ@fmwJI*5!YY#rUT2;&CeYozJQ|l@frFzLy_y&0 zRIf$z!qhm{ss57EDBtC##w}7%odLQ#3W^n^6TqN-{`0sL7XPrRHWWXj$GT+%hq0hs zyqYzXsb2KFP>*nAxKlu#GUW(CYC)ddO-A#KX1Fpd4T5(*9Gm*dr9OJ^PFzc zR$nJ_E@wIJR#=>e3vXvqz}j_*eal9g&f7QPrx*g=&zGE;SnMPfIy!Qm?4^;eOTvDu zNT1}!T!4$vew#>};GSxv(UvfkALc&8NW;AfBJD&Y4RH?Tenvl@OP- zp$XY`uQZwxmFVS0nl8~{?hA~xXcOoN3-2Yp3B%pT8EJYGM!35L?K}RO%f31U6FD9n zRXJ=n?Lo3%I)$bRGRj$0kWtQ}g48+7GYL}XEZ-d!q%K^uAa&s~L1v)^U>N<+PTq)y z8*H1@Fe=C>8&P(nY8YiV%0`sks2WDuMSuF9&BZ6cz{Yel8#<};OfAw$O){y5PHFpUsy)a4Z0#Yy%CzFww=xVD6FDKBE0Ks@m+V_~{U`*3fi|;X)lQdu~-guK6i|}J) zEU3&^&*VyUe~z|=%7`BJ1aJqXH2N#|h0&B@loE0~qbVm-ipI7Em}Yqb6Dj3eckd|X z0!j%}Mc1Jsdah~bTPniNoiy5JCflA;>}ImvD5bTTEMqT|$o2(Ub`SI~nAV7T37+mg zC&~p5J(JZuC7Qyj-R>R?`L)GL(dZetJq`pAZ9~x!viC_ugZ8SYb0v0d^gUMcS+Z9n zks1QyRmk2CEUCO2*}Da)dR1;W+QX|ENiCR(D!P+kZa0BuxV!40;qFZIKS0^Y4_~R1 znG;3i6QTzYbb)pF>;#CBg!t*HTznG-2&2`@W$zo9FX=T6mA#t~4ccpfWS3h%fvEN{ z{=m<81&Jm5qU?oOG(ZX;D_&-0Cli<@Wv_*d{@&f1&kJnfBlydFnX9+Z%ej}K{K~hAwy-$^ zc0Oq<6+W7bAD=xNwOBhnU2t6EDO9Up$3%l0~+)2ggDrM&LRw()iI+JY7ohU=s;D@iY7Ag^iI`W#%({ufKJw;ArJ#pviAI+I8az0}@ z@J0I(;moo=^kXmUiyxnT04fZpmtv_uT5y0U_!uvEuAamB?<{g}caa zj{I&L7ta)qY!kG<0wlZVOg(A?720Hf7C)Gm^w#U}=UpgD9iy|2-ZHz;p3w@KT>COs zQZ8<3(FW}+ppz)XHrX4XT>EeorJFp)srCUZ*ur(9YVXN{N4W;6_9Iv@(}j6(1`GCa zby4lVJW9p-y4tGteJt1y8fFh8XbaE7L*O|03!@8IkFwyo?m_x{*0?$fZ|rhMO1!ib zz&#K(O#4p1ycelV9@!J&0{k z?-=>nM}dxNAA-N0NDJ3R__L}FNu!507~{zkk>z6gkf0}$B^P@U(7JFt5p{>~c<5Tm z`*!sMq;_&i2*9BI<41C7OGwgoA&M@w6xkc#Mb2VH=+V6aa6G>x?b!tIDgp0hz^?%u zZiJ+*G{e~*ls|91fIA+D7_=n~l?TwHR;rkfdf}sa+vlML~ zSzakQo2akePU}TtXAJi<*{5UF@0U9`55iOOqb9Y8t|mi279im|N+_iSL>9B$S%}cP zo4DjDuwOnlfQ$=_Vs!Hp607&imsNszy9`GBB7{)^5}XIcEf(0j^11h5+Xrvn9z@$< z!f;@bHfm^l&9+UQvw9;D%TW80NGN{#C<)}uY<^)Gf4Tjy=- z+0%rcN{w0nBDB8#RYY=B?M3Fa5~Njm=i)COfb;M}|6mK}0z}IR8it2zFGP$6^f{`1 zA`7OuPE+ltuwV<m`V7QEDgL_0H;R=0gfHh6)fyQ_kS?ou$y3`^GRgGe4 z@|tVWcGW)bL27JQGRjj}FdLSI5t#NZ#_`9nFRFb!%jr(`Jf8)RBzr!X1-ntvTo&x% z&I-+6h8N8_1NXABtyorjH@@WHCHccY#smNZ2nIY8gQ`^-RfGp>877#bV+S@!rEy_(ir)V8S9*0!Z>2VXB<8noyAzhd;9E_{0_58DpmnByT&4&r z{=Z}x!KJu)kOAl&VZ4R19N2U4OJx*KWhYZO>zqlx$_c)R;`<(QxQxj`oHQAPiVJ)EW|Oc_Moq z5l&zElHxB!L+L0Ed*$bsJDGLwh(4h92puGco%a%Yn&jq*ERb)gh8WSD$Eha&n1}Ea zx&=IAsk;;qoN}NaNiKGww01fZGUNA5KMol9Sy1sWhv-BQCs%|(RY9R?avi{$EabX# zZ8Et&g&aHw?&SmOG_pb(vYPy!d($%0)_!t$q;zafVv`@ z-1QFf;m-8iGf~Ut3z?VFIqg;Ir@Zhc)?Mc#hd1J4fYAp5FwR$~$g<4;EJ0$;?MM{< z#jmJw^nBOZaV4LQ1x;`rYkDsk0}N=IQ|gNAq%IHp5+`COh0VN{=Qbyp4j1s{|7lb0%bOHdj## zs8E3NbkKf`z*tJd1t?1gy_*1ZgaCy}+;DTfPbL8Er_O<3s&r6s0?j^3(EEj+PO5$EIvP5?=?OT31#{>LIFJSV&=W9+ z1^c>3i*AdaMB92F$rue((Rvt)b)Zgf=puDht7esDF}Gn6`4Wg$g% z(z#r$$pup(3JlM9(*xVzYRRQ95hq zi#|=DoK`WKa4Dr|)jD18Qx-9a319T0fgnapV@sikr%rBEsXw~_8!Nrv)=j9zGT0l` z=GA+ramRvO`*@e4@0!Lh&In%%uaSdP&`T2!`iEt-$?Ta9Rmi}@K9gs`9^w)=b7p!p z6W){*?rzRZLna(1A_`v{UNnWIV;`%6XSEX!ahNsKVF&p?4)p>pO9Q9t4Rnw<6K$Y|6GnJ|c#Zs= zXg;-(&C$*ISXwIZIi_F%PNu6$#qy~%3Hk3)7 zZe&txMW@3_HadN1g3h|nN1bl&EQjcksUvyB?nej( zEE#t>_?e~iimo)bV-}n{4>Xq6I7iZu_T$5W13=k0<>!MSkh-y)G{Z<;MyaZOG%35k zgwG*GNpW`XXS@O%^wMeq%3*6C_xrR58kYbeNi0*{k#;ill_x3dO3t@$^ssEKt1wg~ z?J7J`?O)!+yu56*1o_Hr^9kPD4BU%?Wb|3?ALg9o9&2)zL5XyO73 zG@6nrF_XS$H}F}^gd0E`WseXQ1RV>gR?UktSpP&#o(Nm?%x6Ki=sB1Ld$*t#D zpg?A|m}ky|sLgrvg&?s0JcrK^E`=rx!$^`h710(VPdr_LDs4TNB#RmD{_B|(-Px3i zHIK+yq6AAV3^XTJ<1qibV2|6VW+mthqUK=dR!sw!% zC5ovmhDV-p$Bdo%fWgpR)HgmT4PDS#nvF6ns1{MMJO|?*QtfyJ_&`VY>4`=5k2p=t zUma;!XZBV_=1;wo8i%ghy|p_Y&cXm%98{h|aN*#z}C_h1)Am+vU&o>kig5iUiY z1pA~_JRz*y0~f-K5xdrqo#Gpp-Nb_WCw-ey)cB}xv&zz^SewVP{-xihH}@5X4eyOL znO$CNa0l34n!Ptw#tz)8+Vn~{Ir!|S$+g*=Q5*L6`tzA#B`Fl5IoMTgYEw}x-%4dj z^Qb6RDvst+nQWy}&^#*htW>5okIHf@l_kxhQd9zyVIfphL@CYbsiJjpv}h%=d9*gf z(OTbZTC|g5ZR5t~(Nc>7D2P`+n>b+AqV48#(dQI@wozO>r(AaJd7fyp_6?ZoSBk1Z zy;)YM=&fd#e7o5tY5%2p+}1R^dw1i+eLt$%vG53sybb{kGElQV;wOi;`*0m%zi>@skuuZ`^71S^`WeovLq2N`H z7GCAMM_{rjuIR^1kvQRpU+C6-ki$lPfV@@uTop{E;d<>P=Sj40lym2*?QoDcTnDbr z9`jw4pmttIKYU+5y`51V?gXGyuiC%RZVx_yic=?O9i2LXhb`Hh?B)HG+`yP*;CVe} z8}P0H>}OTxnCB?gU0Va%W4=OIF3zK1n1bGG5EQo%Xl)TzQ4K9wQ)@zWt3DUOM(Paq z;el8Ykk6k(=gG@yy+zEpeH}5UYDjjtj?P)vFv^im--Jj_%-;iNwd$nhxIn$34)ZV1 z!M7AtXPpn{G1wwP=&qZYl)*muAD>N^BhYsi@X3QT`Ia!2Pdp2E+O+cyn{=*#@2907 zHgY{cuEBQyVT66GY7urRNt(D9=f0df8CvsjzD1lA_crCXc2sI>tti?u2Eus5m*hPKHxIO);Dr(wVeTfn|Mk<=EjPfUo~ zM>%U~8dd|YCGB`N+SvC$v`nS|#s@5DLpOt(pr|PZ8;$V%O4<82(p3gdWt{v4IqIYu z;6nT**1aF0@eP$CO@RkOjHIBg(y%0plnTa%Wvzq{Z%*2+7S^h6#tTWd57uR2*hsQ` z$T1}_L5fs7cIE_=lF%By zNl8p=R3?X_esL=OsN?$aw~x4ftiWUSuo{sYKwo$$+DwE^U%_db5y>S+Q;%SHII%|L zi5=K%ihg)UKZwG-4LVuWkVQ~&u8}MfJJwkD2}yE%wsxnGdupTe-!M(SVvE-44=A&3 zx+&H+ElgsYo>&^Ac6XW+Oln83q?*)Dw@u;-ZMd|-(6tLwDV>9!ivGM2Lg_MEA7-UH z2lRENI}YI(4QTw6>z~b1x?wfRl};|EjZ@*;`azx@r;)wn;9Av@&8Fkscs!;oN_qNj zu9VioiM;>Vv7x?)l1&={i$!G`c?C@@`*5uoJ?k1SYpedRJlM}zZ5cgbTrbBRJoEUe zz+RH&+5RvR5U7x7oTvRYL`tnr6N8*#f6NTgVru{Gv zpT9vZ_2Glvyyg#|xhUL#mL#y*`|+)mm=TLDvH%+>uGW0Mcyf4o1B7G8Nv~Z({b-4$ ziDkd}P?Y`S82-|g7S&CpxXxI^-#>}r|LcMn#l7F0U{YLqn~Ox3Kymd0AuUEJqKIt&)-akybhnG5=Z$DSX7iK3;nrBz<#Rnx4=_H-!ZN6O%>iXCWySfIB z(jUyB&cDW@%Zcpj;8;!0LIQuHu!R{#Eet8ExAB)uI?9`ND87R1L=MA>HdrH>YKsk)QCkRGTI!RVqqt4 zzW2)Z#5&HGl5tW&;zz{C^BG`Morurg5enN3|M!IVMcF@&;XdOki?Sy++$Y7V`%y^@ z_uN@A>U@DY!KBV~Yfzjz$F6NLA7c2_RJy#LPb1&^fa`MQPls8T|HliU;Yu_<_5AF= zG*3F(WzmxalcYv3fR39Hqa;Jk2__{Gn{c|XY2JkEIVF`=h)uYQMxi3O0#8Q{vsPSy zts~vDJOSaDM{46O+&+7AEZm0`2`!u_(n>D=HwFX(tB#;I8i(UJnOr;xCQqx!?j8d>G&W>>j(YiyNq zjK)qKd+S!;(Od})Z8p1KZ;55MkrJBL>?)Tvw@UgFD!Fsk9*q-kg6WbJS7ltO*iO-~ zO2B-_r|Bus9JT#aP_Pz`t2hC>=e*X;PRVSxgg$#Uw#qn0Vcm1?98g)w7j zUWXnZ$8IC5Y=;jXvTkjLhvk6t$IAY3JS=U2<;fXNxWZWeW6TQU{YXeOVX$8k^YA=y zu_?jy@NCjT&3lC;Haf>#mtdD!EYy74oj*=5{r)gNPXEUXH8+$ce4O%C#^1D1^8&eV zv|IGY(Z)+IZ-h2BdZFg($tLBi!wH8u<^+>A(w$MHUB(FqI*tT|tNgNM^xV^g^HOPH zJzp-|jt^FmQ}@xo4zm^x27TSBYlCpJow_&Uo7@)+LS^Iy9$48AxQJ{QDe2Y z;!Jv6HL;I_T=KO@AN$3zn9MfgN*?T;;)IoAeOZ=XdaM*#OT_!J_59^+G)_M!4wY!i z)cxQ~;IC27@hDs5Y)9WPx3DGNRsPLv&5mO$UeZy9#5=szTo@LH#LJ;E4E=$u!B+dvxyi3=U+Dw-4JfJiP%N9%%bRV8kN9AeENJs6T#+v=@`+*yl()T_l=`@-^XMz zwn4sfaVZ7)yl*n<*Iq;1%0x0F5VPOBM3@n4;l{L}J6d2Z)yOK(Zg!RQO$=+5ag4^A z$>F-09M)V3o!V@6f5e9@n#gXB?qzu5o(PSU?nljLcVg4oeKbHr7!RRlxcAfHs{O$n zsy5RbVKP7XImTpeLW0#~uHKuCL214aAT%@pkE+wzQ6tLl_*FYgl*Vr|ZSdY9)xP5_ z6NLzDwJ2)bI@E2Ujk#2JPedNxmc0sZWYz;0WJlroM1mzWYSY&P`80q3cG$&t?e3L>-AlDt#|B!HD}k0!#ql1x($+At-CDz;_(zm=otWK zflZfezfYRV(MCosxO;(r+LP) zQ{u)qYj|wOlkDX+y=kX}buaGqCQAG)@Xx={aEGI6erfsdr$Q$993zIkxOA3|2XAyy$(FWd|1+V0Vrn7sOASY(%K||w$n)1G@D1cQt^fg$ndepP_32^Yu;uT`;rKWX;|F8%@x|Ww zHl(L9Gi4}RfW3c?+cZjgai82Yj+)U?{N4M*uSH|=UZZu8H-kCSqTfTsAN}MoFh>gX zdob53j=3i54zZBx{r+a5mQCYa+h~8_(}* z5*tVUPHY?-$3|S|ayhJ<#^s>BfCqU1%zvye2S?9%hhR*F4uV}lx#`y!y`~sjJI7+@{AYwG_%a3vRjvt%I;TyEs?C^<2 zGTq_ReW3)4WVX?%{6DcscCZtT9~(Xw-85x#Q1lU@A4|8sKb+A2b5JwP{vS_B z;{Q=5{6G2;{vS@E313v3fH#|T|F0jyNjiqVgxEO$?-LxNOG2jE1O05gI-i6lUjXLY zNZo}Gbs<<_3;1&J0(er|o!lk;)45amIM{4artQsq5E>3a5+OIcX_fTRlmG* zm|AsgQ(85^)T;jz-uG>%H^Tc4{@d(*KZ{tb_uU^0k6OO^UP9egXq zIK^V#8;F1T?b;!_7hV@#g{{+9VZ{!}RZsS2UU&xXs5-1KVf>F@x*vv*x6osQ_Bg~k zt+Alk&4WMAyO*7u7VS&)j!>gtx*v8zjQaI9Cz#Z)QHQ9~k4vR?;t z3GKe8xw7>M9%f}*0bx#G5`faQ!u>>F|H?ati( z`k)I$9Se{aSAx;G0Ds>7U+_Wq-0L((Hed+z?Oou6a%_m}DI7U7ws$wsLZ)D5lyd`J z3AO>FMAGhRK?I*6f|?6q)yW9aJ$CwSKBz;?BA$t_!`O{I0fng!gP{aqG3Yh`SIrMC z?7E2toux|VSg><#-U&32{m!zj?A0->Zpvsm9cjsHpe8-q^S-d_$@XVq|Tj z%LVBZR=jys7tMe0fujxVR4kqLM3y-1DZXAqP7mF<$UktzfpqpW3S{?((^_jBj;vN< z9ByQ9OP`kAr{LSN;Uj5>|NU=qkF?Tyo1VOFpFBCR4_}n6-6v;FqCfUW&#+1RZDlP^o(U_J|nNW2IovX&JDPFZUaAVaw!r@QKRL!$rZUU8=mcxQ`@V@`p4L-JIo0t zdxiBxi5eASufz>d?A6_Cj!tE$a=4*7|1)l=TH<8TVKr2zn+#Q--(sl#!M%gjy1-vU zHyNrS`1nO~L-iwTJPcJfi4omA=aHrus+*jN4VAD)HPN%@hM}_BAB&-C{8%v?mNQOI zU|59pO2mM$IaW(q2NjAnELIDY+^{4!K#gzE|Hp>qoDmHgmN#P!3w@L}&aias8E07N z5ZfhvOqK-wY@cXO2vNre*#XlmZb|g{g?UwlJwow4`d+#rsf&6%Ajv%*34O zQP6u5H(6k-DK)J?O%3u#x3ZDnlA1Pq=p>NA;mNNTP4acXNJ3fWXKE`$dmE|L3wr?=Amt*`nE~$)wGR9%KA4;{We{(derW zv!EJ~dUEH%HNY}pO?3Xx+oHSsTbkBvTht#@vRCL;INcVJ=?QT+NG$GzQY`M=*Fm>E zq3E0pB>0?6EbiPT?$;cE3ns-^Ti78};KanFHh#Wjnv>O%$0xWL<*cPSSuLBB;R~rC zh|~6%ll@Bb23)vElY({fCiV#!R3Ii~yW=Y`CS(Ctl3qp<+#~?A2^r&JQY~MCzQDz_ zJas8@kuf)EfHs>Z(Z^y^5rdZV`uC`Xb*j6TmW%G_hc;tNJlxge+-(ukZh6gj^b(r0 z7H)AZcZ+u*!TPqTXK#OWe;J(t*1I3v+Mh5dfG6E8Zv1t9URhU*L{oKfU7zDl{z&Th zH1#45RY9Za>@ipn9r1tjdnKdkI~?X_#P9a;2ZeQxn-KNezE|SvV=)rH<+{GxJH{x< z_2vYVl62ssNngh?U&gz*T`H{*m+`(OwBjK4Z2nAI(QnBgMJq1LJ#1RBA}dBK7MK%E zTG9BsJtnqIr6l6Dg|F`7rsLzs|6EF9Tl7a!l94%wO-UxVk5Q7-%?Zs?lD@4Qp(N71 zTuEMd^v|UvyRZ18C`qTDhfPUN$c#~vTyug+NsfwtzAUkm8-#8CR;jdtq5OHrKESo& zzK0K!R`5qXb9fV8_>G4cb5{Symk2*T|Bs?IpLIWMTJuZm7_HfBPB3W=6cw`rePah_ zHs%M`3$59eo=R&N%Ae_~>w)tMrtcsoI`=$0_M}|b1SjSCW3qWt%a|cN zz?@(j!YK@Y7h9?!EDZlSkMJS<$bE--2>*`_`#UpZM?;+2{goXlUAfy zg!uMgDygA#7g1{KlMM(u&3}LcH-) zDkTw%5DxK1!?}1c|Cv^*uAA~lQIePB->f8K&!_9ua^PsZ|BFdYNGq^o5e&WSW{nj) z9^w$1b;m=$`GS3r@#%=J8HqML#38gff8`IA{5wc9YT--sm2K48ybTYq-;vl?J0C$m z{GN_)UpK+b?`m0^g@UBzvF7+`_YBce;GzLu`t&Tk&`DQmb%x zPS5T(Nli~9pTlqOfC!Fi9;##FP2O0xnPETWAlkw%3fY_iV&x?Lt&A)>rmUSLP4I0; z%d?{}LX^Y#jKXdO>`WUT@OUwhZoh3*#Z^D2sQ474;s>L!_=>X$W+VQVM_~ovpnNj^ z7|r-TGs@pAKAlR{J6tgROcYV3951p*DLx2_Trh`zGMYh%@@Zz+a#O|Po3ag8{A`pW z5i6f(rr6J@_=YHq5amnEutRN)7Kh!9>W&kmu$Qf5kj-yivHw>#}%Km9%=RBtq-1k zTQnP|IynNR?usV+oDo1HmQw4Y*{oDN;_e0!_as2T)|6)OkzcQjM5Xe0{PB&;1_#LF z3v>PgbPqMHG)f^3GL1uSHXv-7fG5%ynz=}<7uyT+rKP+>Q3EZSL{HvV^5ScZM7?Sor%? zYQY5;Vbg6qRXE!Marqv#LOCh@aMB1s%M|BMl zfUc;H?7l_Rt+@5Dctj(Lkiw;wA<^{It)e%a8mhl>#FQU!8Ue3M-6hm7Wv7t$QQJ_x z{B^0_4ZvW+Ju7P2f#}_8VXf+}K>_B~U5m9{)9fOg@M}A(Vwb39#4J%^q}{jQJT@P~ z&WmMi`c~8ioqN!1DLhtn?(rA2KsPDdDkEvW*D1av9Zwa!ir52>m3@X!@F}dn;v?DO zvGjrBJF_Ok^~kBmWlqzw*PEO69ldf=ITg957xJy#r8A zr12^T+Wx~2{Ba0fE6qWw`6!DoQsO))Z*m?ivH$daZ%Oo#vU+b(4vBh8$>)a-%~I6# zzT`OIi4_?dsPf*6M6|+NhhN3#-H4x{w+w&LJ-Dp<+Vgs`0_hJ&l_-Oa;|LJ{jhHy zM!}}CA5UcJRb{BE9%afUxTA(P4IoyK@m*|27BWI-fEAy2JxZx->8~IG-{Be=edr68 zQ5!?9y+p)MM9h_l_I#}&mz3>pY9p_U+>Z8)_@hMJOMiWg)$l;hG9AMzwiC(G$GdX% zv?`t?d7dR<;QDPQrd4lajOvtwm51;Tz0G)2d>`-otKzFxet^sh^rpf#2c?CJk8{ll zI?|WBsvIp1#{79R+OejE&LYwHyc%jNRVWOq2To;0&`$J4{?)BkIKr%ozsGJ>t zUd#4o`ICf=N*Rz(@?J#-Ds3$kBYcET0Gz(Z@?4LZk`|!C@Juvs|G%htuEA&e?GHm5 zn{R;guJ}98qE7ec<+Y`sF%M+gB;NmzQn`TuUq|2)4nC2CGdTE41AH~W@+LNZ6m?Pr zx0z?Mf#tG?GLa=58{dkM&%MW2Sm&Fx8;_(>&fV9|z^~7FAY7n24~%lwxw~O69Gx_`! z%U8%2;8{d@KKlj#>@AgNkYeCJ68t12gqD1R@p<7$(g~cnbl{>OJvclX925;^9EoWM z$L2>!@F8vL2eW4Db9r1aRmg zEQe_1$cJ1w#jE)#^u;v@(N{%6T~{D<4TY*!A+(r66R$^THieG$B6JCbzPk~jb12jX zFY0S}MN|rDcOf)}LO0?YSK0{_I#`C#01C~=X9Bfe2%&v-Gzv$|Vr{K6%-mTx8l(L} z;uDBYIs&E0kc9>j0v8BNp`ITj^ge|~?m`GRjz}TrCkSn!(6mnxdXYlcevZ(S6nf$d zgdSwMUm>)XLJPh@NTtwn4WZQ(Dh?ky6#h%-;eX<1StxBEeinpUY{k#)&@^F@des{!**l)gj&u)-M&p9XNiE7ItUZTi zJFOj(2g3if|(-Udi*+kpr`qK=maBm#g+izlAD=dU_(Vd?Sg` zqD^uelQyLx!nBFX1|2x<#yT(p;+@)a!J<0!q>w6NbZ~%T`qJMMc;*lbhVz|h z=1-puK_7^Z{Z7Jskp))`@kCm?=Hbt(cIcmC8ra&oAn1u?%Ed)sXUr4$BNx*gUK@#w zF*PhsUyx$KRayL<)8ZSDu5~5ER}8V75cmQY3crY;b`XCWWRqqny3B@XZ#K2aaP3ZB zgbyLPm~JR(Ql&IJs;i1Vgp6&f{XzI{p2(4|zN-BW7VPHgrrLch*uy2O_LVHyPxiKL zOhwcQqqoW4&p;hZRcRVkquNI@B5h^wn}{}v+dl{rENuwxWKl zWWfyT$4xBQTJ}zWo;Qs>tqY2%b{C_NNyO%}pe%dY8_f-kOtZ=l(%xoWbPS^awF)5G zM0T)p19raJLn7%)V*fh}X1o8=G(zEt(0^96y?a~}i*_sxXO)KAm4@4thFg_}(@WVr zJZ8;NUUM40f~8wAdWXHiT68P+6u_>rW4@=K%RLdh%dXwpnDS;>j}A|7us$#W859d>u9!_u^9S((J^u!CP1@w3z zF#qC>uOL61ODRD|Do+s8fY6svfO;DqlCz$VEq%d?t`NBodb49q7ZmJ zilsUR;RcV6As4(_(<3uXUPH9z0ya_|*>v~Oe!3Egitd*?I5NYdsQq8W6FfSGAf{AQ zB+GtvnoZ(GC4F_4mh~}_QGD(?Um;(Q^4V_$(JJR5+7iREq3}sVm{y%^gAWAn;et>3 zv`-<*NFOB9PZsGzM0zig-cO`6w-5MsBE3CNceM#kA>WofWl{1MiPy9j_ZMJh4#aT0 zkEFGVBEA%ew+zI*9YD}iSU-17v{QG)1sf@rHytCdi=D@C?bWDhs8-&c`+E~~ILUNAz1wS@8K z-FlE!ILxR}LWSY}3@LNuUpaCvM-DNNAMK(Es#Bkds`gJm?=2a#wk-50HVE9fO?X8_ z!mSfD)kLp3Y9UL{ih7>J+`z#|5~@Ip@e0lNeD3XvudqzFSfk1AJ9THvxT>uMHvrXe ziE(Lhk8-%cQJ?NA@Rzy_t&)ZsfY7@^dsAX??N4Z+bFU|0^Nqu|lJ??dG<~^pT&jZp z%rv%|Y4c%Etgud*xeso2nPS@~Z|bP5D>>iR!{e;Oq#Kj^(8^6IDfLKGC+)>+c@T1$ z;nVJ>WhUSFEZV3;=~2$@^37%9?KDN)Oohd}^^low3%Try@8xOuiCMx^{9bb5%O{&< z+l_kB@2n}$F{h?es_G>oY)KzyTahhNR7W2Sp;qOXzha_Q{t$jdPDz#l$*~20u@LwO1)T}E!$0ALv@T}fT`$fJL_hB%V`ab%9%zX)bRMqwWfTS!!6Z?Y}TdPki z7FvO90|7-7l953PMj!%pjUhm4NHCeOsBDI@8OKrTPg?h-u63!{iUJxreoX&WX<5^drl;9a}whA%aiq2=Dt9M}Yn*#MGva=i%i zooiQJ?Q8scN8mBEH%yA}#ub4qd3MtgK#YQRYXXfSf$f1!{Sgc1*yXx$;snEe@Yth) zhuY#<3nPL1afjdmQjqyX`2%h5W)1FK+d={RpdY@q9BImIG-@uenC?bZxLLZbdLX9>dXYfm@y~ni*`hCB6RDR7tn)awOff zXK7^BLlE;Fk)6%u_csS_IiNhh0*v6i6};TSbvUkdoV(q)i=*}odd}bj62uff0+xj-N|MSa2urtt^>Vc72!=}l-IUF(b zd#%Vc09fcMWp|&0f(?GVpe!lq9h^8}JasK7D{VpVqT20(-jaJyK{o@77W5ISR13dJLeM{7~NQr2Ba<&oZXY0J9%9|`H*A@?5Xo#&KAvzaKuE)Er|#pNd#SDCgrzpJ>M z)Z#uw4QpiuoZ?u7Qydr;?tY1c9`5qf7T1pEW9!Ctx%Y6l#wqT%5SwzxhQInka}U$9 zW)8IV?BwDy(iS(@Rov{<;;6sEUC;Lu_*b8A?lJ4SW){l&0H{5z{ccw}ZR~;1YP0r7 zx%aSkH?T-q#^7XbY(+=RlRTZJmOFn1Bd~43u<7pi<&9AIG}d<}LuEVafOMwkr?|%eL-sGZhwJdz%AKxaoY^$ zBQ2N1xJ5Rvz%_~2_HdL2F#cCeod+Y~4S0ykm9u$YwQo6%YoJFpekB?vB5*$#UPX7g zb}*?Oo6wW4W4j52{)am@o7%%d=QQ<>%v=vu#l%=8#5=y>+AZ){8V(wujWuyQ!<1>+A#>IFFpXUoE_| z<3Dh}|L2~QOnzwJA=17cOV`F}pf0M@FcC@@5htQa+$KyF{1UXH)lq6PDU-P#O~X}X z6?g*K7b0*|0RH;)T8#8QPeZ`tSe^0`AhYxF=I2ZkzWqgQ!pj9Tw8^<{YN1hu86%l6O5yerUIEow`6M-X$p{e^b*uO!3v~M_fqRCt$Dnp2VJsV?KjYOG%8FmsP8Go9ab_6v zT&QTg6x!4}2))H(q=1YW;PBAHaLYQ=!M*`vSDyj)Po%`_qz1@5CMC{YHoyT1AP$r_ zKpRne;b2Zmm`qHnW#VN~8;JL74UpMQ%0UhgvspHfnKV1*er+J*6-Y!TJL45NFe>s% z9`ySmB^~s8hl0@OwJ>IGMaD=FTb}@g(nFkS#)K#YI^sc1B>I%OrH=v3|=b(oqu6jYg6IHEoLxIS$`u(UnA4Z+Ix@KXrt+rupgpdwErc&rDF&ixFPA@|WRC8Yk- zXV`R;Y=<6hv+WQ>%B}pVLR<=MptIT^wTih=fBeQ)Dj6qb)SVqswnr4|&bTPl>j+e# z?f`OZNP;enfXoF?#uX47u^rEfh?aA&+i<&{tpqVxCW@@ugZa5GEDd0TYH26-)%I^Z zCm7{)TNz9(w!cPRhEMcEDb;^11AFrCGmzR5fU^Ys#MEqH_tWD|v13sLy3O7u>_9_A zFUD6*t3Ekw_3J(5pr$KOEiiG2UyRZv!QGvqrB6|S}h=j4>6{(mOpb

S z;SZ{%-^L;&OnEB;t+x|E@D>^^41U-Ok}c}vBxBtU%GNbF2ohM29$og(9B<0}PV2wkLvmMfvF-xESlbqHMrLWI!n*CgRa_Uh5i z#7)5<*h)pG=z8#A26$$k8j)FVn8PlqjLlL&m<1GV zQPk9hcR(1*sQhBzK2HAP?Jo#abtUHCO{x*wNj1O{_y0WVm- z8G8hir0@$=1sWc4M0H^!wuRe1qninf#)v(-kq!W6?QkuM{G}+elW#Ag8#n@JwPoD` zG+I?-wnjx|N34|A=l{t&)R`%VJ4x@{W^_Bb^%Wq3tq<8j|&x;nVh=BhMI1r&h@4y{yaK~8)s(yz|pen4>f$ehccH_=ovcfGa>m~+R zvO++gt6k{f@C1Oh@VF85Zx>o-wuj%r6TGo^5tO!ve~%#09*!gUQhPXSFGzs8ksr9F zxT+WRXcuh_1&WzuT)A}hgC~qAZ)43ul*D#}YCcC8^y zsO;MRBgX5HF0B|>3Id9emZWbnsz482jL=Ju7_Ts5Oe37@-%b)vW_Uh|HJTfY zHOpRVmoAu*#D#PEVER@FGA+~V5%IrMcc5M$pe~?Sdk|ov^iLXmsKK8#=m+&GY!CNG zaH%RA@_hwQYto2y%3H}|U4J*Ky63F;u+2vEj;D4&^S*eD0Hb;GiLKa(-Y!bl-|zo0 zm@))`YM$?LTk|lpy07~J)KvT_$qy6y8%iDsA9N!eCdxVDK1H|*TLOS^D*{FM2&hq2 z#!TtHZoH2Jb^KqUn16pWNrH{o6)5JEN?9P<*M*u917(!*g|i^y()a_vFd}Y)xG0eu z1z<#cf=Xngv}*rtcv}JzxetL#fU@_+-}$*=q!+Pdq*DNfkwRtU zy|>7L|JB!pk+%>iBfG$K_q)=T1I!6z05^;xQ z+&Y*~k=H&BKG+_(V?93pBt}ZV`@~eq8#i7+LD)mnwCV<+x`Zk@#-_W_&^^*k_gPB! ziAwi3mF^Q9x{o5=-vJty15)T6Y(qtxB0@9c&p&F!@(u+Kv1}E95zF@!{Y%nz{7?T* z#L|I4#nJ*&AYZta`?_}kJ4-=fEM<{2c>rObAhvOr5&q@~Q$QYxHM=4vVM zO7`_sxET4%hY3dTN{n5^NK?e#P2|ilQmaJ_&>}wFEsXpFfim(5G8;yyHK8FW227Mv z)Y#FKv{bqbsqxXn6^>%A+jIZbtml?_4Il{Exh`;sK}dcaKIjgX}wy12Z)V?Ya|P=zLj%2B#Ws3yN{T9 z{u`39o?jM#5zqB1o=>F#`+xhIi05qtDxOy&h=C=bgk1vX$_@m+0$PzI=wK{k z^W$7J$JXD>^=}Ag8FvYUds`ZhM1t$_h%LH>`I+M~S|QQQD~@2}j>)<$4B#^mvM)Xp zB0}OtPTmk#GFzuLUgOS}S zG(ZZ&YLVmP%z16Vb(!2AQJCNTIt8q&*Iqp>g?2{@Pb5^C`;_sGcqP8O&9MIE-l~`maSSy&;t8oxNO!i2wLZ zHg|ntM)HuieNjZ}J2$?HR^na3{WH`IE4XCoWN?E9mJjF$4a}*c{P`uNO9b`%f>MfIE?Dj0I`B#aVu0(mnt@~3=cp}>yJheRi=m=0gxg9I}5OO zQkOB!&hjxo^qVw$e>#|h^`g0QSuZZ=!g_I_mukH}d(^RBeEk)Tkm0BCCA)z`QT##GW_j+^N)ea#@_Zd7LG6ZmT#<%2BLy$!#OI8-D9 zGY`3*)gM%89gfxoWxD0pBCRD(J=}ah>w)F*C+AQk9^<9=89iNq>R=V0EC8dYWs160 z+ONMzQJ;=L^|TPEyJu)GMLxX^wyuxm%1od%j0{m2e>-nC}TP2_(@T&f{Hs*ssAv4JK)Dk_P!2Owgb}gUK44 zticon7@nVk;M;Id_d9i?GWSM0CoEx6b)n1)|JH_=ix8x$3cVn_;-CA%!9Yvy5MUO z_^F*HE7FF?PwdA*gZcQe$+8n!kPq*&aA5@NGk^ypSw>mdFHmdHpr%tZgv(^pUI*4- z+SyKBrkxuo(QLKbPq&=`0u?_|dmiKO55&}aBz!$;wW)dg|7D zOnVTEdT0)O!b?=tnd z9m!aqHwnPh=MzfNDN51pF9=2VBhdQ1?QS%bA8SLo0~oyxr4_Mh8_Io%PjbK2g9vI!8^UjAUy!)pP-<_x-ZXfU!N4iYCc*w#C;S+*29 zfVkBxyZIA<(aqrpkyaf-Am9rCd~b&cbV1%p+dHT^`~dMf=(Cz-VY)s1Fu-VNKSMB) zGhYbJU_ypd#W?iAqZOeU@gsj?YJ~O88W|)2QzLQ~RBXgUVzd0io|hW=Dgv#Mp{PAo z3hfr9!l~@MfwG^=+7%s29)(?jQaB$2t#T=Q{2EdAk+2Mr&BJj`>7wkOh)ImDzrTPz z(P#jgT6py}&cfca5FUH?HBO5c+-Vp*lL`U`zbyd6;Ag6GZ;0*ipZJ_G=trOoeivkR z-$<2ZaFpD~zUF?+(Ir zccBWPPwyajAG7iZ`bWc*X;W{%(7>kN{-MKrzM>YsUk^qiH1+*^u<1x_K3>J5VV~;Q zeq-NF7f^t>JKDqS3Bph`HRU1*QMA{0Qqf#h5}F#{bi1jC4vGc!aJv9ZJ$#F+AF&a$ z#R~cF#$g^X97EW;9n>VFSUh7FZ|lLUfgP0@ zmCb49Q@};)w8>Q$IsVGUn3I6LXP|E^L&;_=vz6>Ow;AR>fO3(!?E)~&O;qNt5rgLM z5ch2g*Y1_Mb_haV(1((x&cloZM(;e#wDYk~G zgyR(up*Vis>ELK;NuI{}29hP$@HFrmj8*M*PB*nT{h4l(6K3n7?#Z?zU2pXy@O$>f zt(+Dgc&n+)qp3=$%fH@2fT_##RJgB;rSSiKhbZcRU)pu~IWl+8roo7%nQ}NvNKZ56 za2O)Ak5Y@kK1wY@UwxF?0rpXPcfdZX-MzOEOLE*>h>nIG)|+cvC@}0)-f}uh#Y%Z8 zf@YbV*w21L7y!PK_GhQ3xdl%;H}Sh2GywEV>{rsJ#vi%a$hDnPfLw1AfRXEJmFpEd zDLVgM&x%|hLZEHrC#VB`y-ExKOM(ITf;FRVP12m|afnInUtF_%7y~T@k|ZV3xd2KY zZE*$Sy$1hk)UKxkwdbmsBmS$K41@0@85wL5fMM`Q%HX47+WgzM3xh8pPzKu|jP7qp zZJ6;M*lgQcHA{mGP4S;!bYZ?JPBJGoY*fe3JCJ6pzE>RvBU#;fu(o|NlW z6u#Kp_U?c&+asO2<3O{0si(}{U=AwJz@DSrj-Z#0LD((tFh4-vvbdXUxqyw_o-Fby z9ANeWHH)japBFYGPV1l(tgYk8Hnxtd@$9^N@irK?k&E!Z;(9s^yT2(~ThKwgbD7Wu zW0k)@fwJ8Iq!68*Rx9$$QgfKk^2t$XCNl;r1JKm!sflPyolw@Gw%P7mMEb`@ihC&P?(f~hkR+%jrsSs2@Tp329l7N|8>BgAuI6- z3Cfy;!G1U{k+uczteg!er+WiZd6~LZ5yt<1qr+6sMgKH`5p2+XEq>~cg|4X%UAHBW zC(+e-y`xMUDaAx<2R3=o~-vKqR0w+xr9!qLdCJGNYnpAI|Vn^+8(CIaRQ7q1R>^cn~X?m;MnVwC z*YW7?&<|g2Ve8;pP-y2KO5W5kP0T}Q$D=+LK?U6`j7O??1V9Rq`f(a z4gLv}!bYGbWpN8l3TwhvlBw}it~b?DPF+BCj1_>Xj&WKYIczC0f9_LK9Va2s>c~OW z*?l+kjU_?6QC6rK(0R9&KMLHb9qvKsn>6IU^z9o-)hV+Hc8>UY|7{oyQ3=4{3;`Gh z1Iplqt-|10PYQ$IL!bmbu?56yi`Sl+2PdpzG?BuQ?su^o79uhFZ-dqB;8l{m#+v~>|wrCLksr`s5LwfFW7 zMi!4F8D(*e0E{eFsVsgjX43!PkN{+H3j&qJb)ZysVnDC%0Ds#GQE86$Jw`s#spZXx z_}8sjb|a|~eTK)d3B|kS!qhz*;LK$8`EF>J4j&TMETK9#;YA0p>P(FjD87aowciY7#T%U+{#8YY74sS0zN7st7F*r(pL@m0AFgT$zb}RYfqFu2ytcx6L;t+(J$?E z?q0+lK!9~Rce|Xs-MF)7FmcOTV~{BQ27tD>K=eT~*JBceH*1Dq(WW_qB74-8{5{}u z(k?0+nJ|pJM}zw`_^AdDYH&9Kyt|>CV*Lkie-{A(Jm}L9G>7j+JYJjD#1CljkOmJU zfS&ve!JoSafdD8k?#(!XY4AH}B9M}0!Je@&l*z*K+rumjQ(>;cn!9fXVlB)JT9Ae^ zKls9Ijtd6}%ghXx3lS*GN%80m>^LS7*&JklOZ~($2^B0dd8xHp&8997S0EWXNk}zWQWfYh)7<#MnSN*^H4AiWk=Y%{-Lpluynn)h4tpt#h$XLE>S{15rgI5_%k8&HUz3h*Z+VGMRb#s0la}SdYw@>>**l_hOl98)z0x(=PD_0Ygt7je- zu680&uAYVjy7gF#G(K$?VxeZK+SGxFgYjuquR5WPdbi8D+l@QhJHl;WKJ7>8d|K~2 z=6lszCf+emSj+Z@ldNSU_U8q5o!qZ+DE71)TCh*4dA$+g?W{D2aJc}C2=7x7ek`Wb zfB8cq!Y~3A;bjoFVq=R*^>|r7_S{+OnN5E}NvZbKHHJTUHMt0t(zlx2-DG%tl9dV` z|62ft$5!QWyz+R%gTmvT2$aVkgUasH)XJp}eYTQ^bZT-3BL1JKiFM$KoI6xa635~s z)a3RDlhx!aSazh=%V3|10wt-u!U*tER44^FO8`cIZ>s=56#M3%`+x}WLIf(nvmxyL zDapNv?^{WBqNG$MaqU3Fi^bR!m(=C9hhGDb{cY;z!wIMv@8-j4@hjFD25)42g277! zU>N*N862w&F8ir4xCVhT*a#Bka~aNII|s4Za3=(xve^(WbnjY2Nv5IXj{-21{6i_Z zODwd1&;3HlrwEji9#Gvg5*5g|;!uH2UH#4eH;TjFM+g&c_7Q#;lp{4GgE*Gfy`!%T zsJuJ+4!D{HX|I63c)c6epJ(v_OP<4R9>0sKr?d}q^Eh%4xf=1B*lYhF0vs<;qx?eAg1e#!6eTP!(j4$1aJxHJL3(XlruZGKvbSx@0sDN`!Z>N zSks5tUP8ow*re&2$-znp;}tF|AD&J^cq1=WLdFnYnMOiCx;IHejU0+D1$wMBW~;0m zXTbQV3%`MRi7V0b#iy<^t#&>%nHrrV0Mlx}uNs{pU5kIhJ<@7VMWC(LzZ$J}YWyFU z8yq7Hjz0;&;8>zK+Qhp0Ke}6R{2hVf_zTK2t9x|OxY!35?F?Ynk!|vZs7sI@W;JPJ z_W}FfgdGp!yAn;u`kv_A>d-mT-8Y&W6kCYAotZFct`_or|Z(~bcsz4Tw_tU{*$|K$B8q_ zGqEH&T8DS3A~_nuO)HWNL?oNPbRtpMzu>`wwF8O79B0TmG8ICfBC(uCn-Ix6KS?W+ zc2u14VouJ_49@{0c%&sh`74=Wp2o^9l8-Ag!xQxJ_k27%GyH8lHp%{!uQg6avJ8ym zWDD;g*`7N8G49R%W)=pB8wdNKy$+%j(ccceXNha`0tk)Ha@2m!Nw~BFl-z?n1qk` zt5{6`Yqtp-T?mwo--6}tH=x#rhF~Nk4~T8kFaV@GQzaiDElyYf343s+0s@|*z(>4N zgX`1Bz=+y1e+y}Kiwqn~L}D_i3B($_vfU#ZqbRnq2-9We4R=xq*eQ9bQ}QO=KH7Oe z0?tb%05$3BS%G;Yma8@s1F@R+7Y)G9unOOpwibPmOIL1iQ z(Hxlt9Edk)RhGJCDtY>61Xx2;XPa;}k>FaCgaeA!&`56PdQfT;VWhW-L_i46&;h)u zg;$vzKkdHIzYCO*>K_vuBv5I-=kzm9u8w=vJm#GIMjaArZ(SDJJe0> zn@Vk=QhS6_`*nxfEK=K$(Fe7;4z&WwQzl3!Rfln8J5%^wZVbvX^(m(Si22_ebqRml$fFg?LEq%>ppg`i78_5x*9*@4w?lq4uW;l-k?DS$F>gwJ>Nyx1z)F zZ95znM^BE%H$C+o99iOwWT7>sYSVQzg}vX`vU|==AIUS zVeae7+();OEB~`M2y-tYQ0BHn5Z$97=(Ng;N_l^}&yFp*`8LV%Kz%je^XrVj8&R1Qc&Px4zzday zbz-XhvwkcBKL>#d{4B8B{TRqfEAR%yChNY7g|*C?@v88)f#F$ARbbCy8sNe zWlHUDZXss>-9Hj)A4Z_m-UZIOzXS?k;9(~)>WFUK#GBYvgK+MeAto5BA4=87X`<&2 z1%~LYl4jkWED~&Q=ckaxv>Fd!8h8z2Gyjftz_)IPq)pdkE&vVbnoJr=yzo}CBuZUo z_ueH&5-n2lv+<1rFp{WLNjxX^)_>DRk;GjHR1!BrYUo|1>tXN88}zOpQJ7-clbyqn zh;h%GHSHMAHV07Lp^O8U`C`rFqF>2U-~`deVLdjwmJoVS^A3b5j~GZ@>%lbrActTgXKQ|q>& zPvra1qwtYpnW7BDn^whrct7$So1S_QPNh2CP0tUMo@>PJ`_EK*<~j7t1U=x9u2T1E zlw;E}vM*XF0-Kf_f0RtiuP-*T`2!_R`zHV+n;$AI{gswy|6649A_A4ocF=9p@)3%$ zX(`w*EwnF?%djL`&WIP=w0zIdlIy1B7NupG^f3O3N=un`B{#dV;hbCTqpm^U|XaG%1o2RIvYF4PYkPQ%BgU?|@}32O{lP z&;THO2*Lzu#|BeLYucV6M)S3Ju9v*YN#$ogUeZ59=^L4rz8U>9QV4vq=et`!*LwL_ zIspGI8$@9;oO-z#$o6*>>30#I?CE<9UdD5Es7S0qte3tonz0qnUK@BH^aP*xqlKXj z++%Fu)kw%+{Ev%_#{UBesqw!RfYJCYIAd_)rYZw(Tq_K`hd?#{^~JD(lc6WDdriGZ zhlWacOlBCIs$GOJ9L?x>8e_=vw>^&ws%hkPwgD1zow=T~Jn_?Q;wlVrlib98U5UF# zIu-vZO58MuxG5kG46`|QgMOuPNM`sd+`}O4rlH?dm#p_5OEC(O#p%Spvk!?6A>F25d^=E=Y0x^X< z*CQICQIMHXiwW8L5!VrZjFeCgv5h1alkm8DzAH!kI4|`Ko7kZ?vEMSp{(S+dH^k0T zVwX#Q;rA)AgB@b`A#+bnM|eGp6~da$T~BFLpiQmWL0GQ!85AleDx({jB3Su6tOsi< z*iR2golC`x{90wOf>M?2{hH*2(*BsrMB-$&iztDLMtHbH(gwg7~ti>Eyr*Gof!h&P~h3D7;C(0k}>k7rB>Y z^%Hh#kQb>WwNq|{TEzc!5wu6-iFZ&$TzU$#nbVon%y;`K&h92hvi)YnGR{TjtyikH zjrk!J*nb^t5YXP{Xxk4_4wB|D=?^sN(VBFTCf(p9U5KPT$3w?FB*@IsPe(Z~IFk;j z4g1s~?4n)t4IwezuB+l`Kt?+l7d8`z5wFO1Q3k&mj%2WD|XJixs{e2!H< zAH5f6nB$m?awJBg*y*@0jpN&`{Qe7ao)qY<{~hr;pTsSUta>rhxHD3|BS|mY16}xj z<~zr<2i`rZJ@9*k?;YJ9cpu>(5dINi9RJ<8{{UeR!ac{BuX18in>M3o5ejPRIt+7b z--?#*-gZp5=Pcb~nc?h;yts7%cT*zC3Em_Fog~$*JnrA58oVy>W-T6j2I6K3ZkkXQ zia9Cp;^jY#23~ZEd-1@Sw&bPl6@X3Wv1)DmJl)s1`hs`9|5$I*ua}Eb6IDdZlF9pns#*2SZdK01J8OJpj zl-{pXUW{qX^1$#tHP18BfWTlsem!6hqbQwQ`OV`6y6>E~IJA;2gW9ug0dC|a(7-2# zvW~!BQqq$jh2FUemx4hkUb+!_cA~6;?G1xb2){KP*sCSJ*c9(~Qee-THc$2_)RG1n z-%05AJd`q8`bod%o3l1J%9t&qM<9;M(a|`$Ff+_kDy6IpIg%Ge;0YgaZY|??4CFo* z9H}X|6LK582pBjy#Qx`SH%y8Fnqmx73{RxkkVsLeDNbREL5UQ#nqqe_V*_G>&&)i# z)C#OvS|5xQbQBJ%YG@D<;=6zSabV#%#jzzRPm zy~v60ezJOb+n*JOmJp0>B@%P0_ui}RUb`LIgi#I1!)I?rhq_@y>C!c|t`Nzx6YO6w zlFNR;1X0JXIv1Ft|XFuAar`cdf-I0;ls~Bvhv`O)VPt1HAtEQ@&53l24-Hf zn6BP8P_&^JJv9rMXcsV`KZh3OSjURv%hFf(XXW7@swL?l91ss~kgi?sE87a2ACqLJ zkZ-Sk*o%9FD~|^^tKEfrxGS9-HX+V4vp3o`KKQL*1N|ZrYj9;6HrzPm^?nUN%em9l}KZ{b|Ux?CESjsqB15Lo#+B zG>RE+6vGS(TLhWc)No|(d`~)?v;C2l-8c_FsUt$?N@x%tB}D(Z^<0)8>A)Jq$H9Ao zk&l9r-sq4B-r6q28`rbY%)?CW7?8#x;_7v;fp~(k7*P-tJ{%zXrj4P9^a9)w?nO?Z zhlu1BPR?FHI>G~xobagJMZ!KjcZ3HSXyy~)dfdt(Y$yeN*_f@b6H9EwXW}pTr$zWQ z=0aK7J1Wg_oYnpe-wdLrDckN7NG_&pSk1aBz>FN(uHZU^8^2Ve!UIR8ZW zbqA28fZYawW3zB#9MIq(Ir7$+hrJYh_JPI^l*ZXg<6X@{oj8j?uqTzF z*)7R_RCFV2!XRzx%8a!A=3O3LV4yVjpyyqshe3j##&05$F@56?d#tm-u=f}1A;qq7+%Esx&8MIJPeKdgh&GR|H$_(ElHX*Qq zhvW{$VWiJxj%&-j@=8Kua2b&DWu&z48|Tt_=Q@9&D_S@_qXwHSBl5|0JZ4EB{+PxM zjRdx^aKX#canoE94UuN0jFeAPBP4-GEOw z@Y_3ABYMoUk=>C1S-K&*_ClbF1a|NNnAa-iBLX{lo@(Z}z*EbH;v?;7uKT+0hbA?x zYW1xo1a+)42*?z8%J94FIL5C&%ACa-XvMj`ft@)2H1HHpaEt^V>RE{N8ISxxj*bkx z$cKB)1N&ZKE(nTj3_E}UT%IpUhpmyM=L_4rkhheVjB0^uvQAUZx>XO|Ux9JUksy^f zJz2N`{qR_E!}(x*X+C)#z4L5TO4E+T_TaH;PoY~2I7-}ddPS|3JITsL<#oa%&CboC z``AU)2;&Tm(}ttV`GhSc5HI}FNZ`d_tZ`>BR=OjI?Ih5I&gl^h6#PepsZ3@&+a4-L z42pr?Ha6w_D>253KtZ|Y5z9Cek31fEOj~f<+2#5RMs@~2`+(QB-cy5PpzNKZJ}*W~ zQR>cU`HP9ql03Pd+Bjv)xyKsg@((F3<30d_QTV07ypwH*`Pp*2S)kw_BBOB+@fj*n z{=PPzP)a)Ll!MKw_>-SNV@0FV*J*KJAk@j%h!>l6zk(T~YIEwp%bnIBq8y3nFOMVA zAFX=l>Vlka50nK6wgIOzrq^yK1`=31J72RjP0@nj>%V}bXv(EEs1KrFjV*@>Cr z?n_`)^utB5;m{pEkivfE^cXWA+IMhk>MEDiaeqlSrC2G zrtL$5(E&UV1s~yrftC#{n7gJ&o1w^BWf~z}#>h}KbDpgfqW^58>V724Fg>WTt@WZaci*k@&7MS4G#_3vs? zBl~Dk7#RO^EeZ(Jwy1On52~UL9^t`MlN%dqsUS@)ky3AqDoC!RLH}=C)X{ylsH6Ys z76p{)TU1(<2USsrg7RRh%7YJe6--lCq&BHV1^cWlwkU(cWlZr&g#u2RVZ6is1j8Hz znB*#?Bdit&NwP7cw&HL)c^?INX8)1&Z(jbOsjD9bPBwV^N15~F#QY7b3 z^PUekc63|(+cW;L?;|>(wq0*7<2h%tACdGPJi@GDhyAO>+;m0?G5q|qZjKDvof2l& zhHitS1;0n;(5CjdrEQx-h%$I!X%`+6gU4O|FG_ps=_w3;*=CUR9*VR#UiL2%b7Cqn znKm)8pd-ho)-SuIy{p^ZTVP5;v>3I~{WDfcYR{=I)1h$o_rgW?|0krat{^DvQ=X_9crxbVB>+LlMP& zE0RTVD7MLnV)C@UMR9bpD4ed>qZ9BA4f8*5^@!qV6~*R1^d*Wu)WURwha!ucmnX~O zP%MX$#kkY@mc^((W#Lf^mn?ccvKXbZ`04xmbiYdS0Qw4)ZRS-Yy&UOdL?3x=2Ioxq zmFiV-tPi4}#3BP{lB0pR4&GrNSLOiJ2~d{-VHpSW4SNB>I>H9u^EaL3N{{6iE`543 zNMa9Gvq*!!^*MIA=t~2=c1O!jc0}GX%KLnFx@|~tVr$|}lijky&@!3_Cr3702;9>m zoE&pbmew>fF_t|@7GA?Y!5A8=u6v*4o}AhBW4JyTi@f{ zLhQV~!G7d4>nW6|r!yaD!r9=!8d>5jPaf$RYXq*n!LemT9L)+wHu7U!a9A+7-MC3_ z3EiT%aA-HS>aB&_oq9VOx1D;MjoaONTY%dxxh*WDzazI{ibp02m2S^mVO>Dy3co4D zNK#B-xuy$0rI!>7Unr99h~JL%uE)Y+P6WwU#bCbqZ8K-;FkHYaHc%!I!za5zLnGlr zeI|iYDlW0dK(v`i43{7xx{;}(G3Jd5QkgY8n;We$sVF4NyrSN5YEkcWc5xii$?Re{ zCnS7Kl&hhyK^UQO}@f@Qj z*!YxknOd~d5Bt2H`DGF^e6Go3!i={hPSYzsIGs}Vx)!p?smRQ0Zb9`c%Y5#RIgipJ zRy&WJrfib7fjxeofUJ|`A@kZ7Ad>F62_@=F-}X&aefzIOQgGSd<8kwRu=;kDq))GJwGy{~eOsNA(6ydXdQU~` zIa2SbWj(|69=Ck8D=I3RJU#yCsZfV?JJ=i8Gvw>`v})f#X3#gV-N7od`MSFZ&I!lD zYXSA{occ2`V#6CW8{2zeo@0W>q~uzU8T?%GrWiND9@|Jf_DgP-B$Bh9W-yWF+0 z+n&c4<|ZD^D`@zH1}Rb$GRPWC6vn7zuID?vQDfo7vS2dME+9i*Vl%ebd_Mpa(TSac z!znDa$9Uz9TW64UDa*qPOEzCOzJc!C_MPIyE4no-x+DI_Q)E-%*Ap?@P0ULYgX0TX z7>rdFcl8}rhl-_x z3UOwBumhwAcJ~An))Bw{WE6u8%a1}zdQ+q!da=k?7>xe}qD;ba-me4;_P6fF%Ish) zH6UYa=Hocq&gY|ZbSIso0Q*2+_bS{oe>AX5=6CuxBav=H51&h~iEzhd+OUB_qPV!j zkAf0cN+%C;euv&%lDBnXd-wJrPMhbnL2SdO3%t2>x1+mFe7c)e47|{rH$`9d{?a)K z_%m#4^f{YW?e#TM&X8M2{HpB+%$-8E@BeZ72_J&-iNty6#ui~fwmO?f~DUErizyD;v!S^E9&WA zrD}_|*6(Gbv0}{E{8q(iUKc)q^7iX=Yiw~MFD(c2rVa}>WOKg-2!fbpkGJV+zJ$!^ z0hw)5=z^=?|m(uAfry_9CgR;qqq;_)uHJos0h+ zt>Lw6P<$-o#Z&g%8XiV;N^3ZS93Mn$(DnnZV>?UJHlD)hK!xgU8@taF$@JYeo>=H= z8xPG+=RcYIpG$~!%*!yS_f`74X{8Ae0p|p+OX!)DcNm1795%eoe zENTX?E6f6a{R{@r{GT#*7M~XF@Gxa7Ws<5lG>@#js)m zHf;xXJDa|Y50}PkYY$(5KHI0R$MDmsLF#^KXKp&j)39v|_A$H=bOenDW;;k1BEJLE zt)n`CP3JVd?FV7v5Ati-WeL}4@KC{=>_5$ag$iZxHGd_MDA|9?MnW7#fl0+-*%_CscB^VI1v1F|3Ol)x+iy`4EsIMsqs&9`4$L_*HGvN-(h)A z0OqxjTy`_~{w*6&%zxwp22+khps3<`)F-^!xnra~FlgG76qM7rYaJiQ!g!$rLR-o*&?Goc6X82K5m>^)?9yO6U9>R2t*gK5 zvA~0*e@B?y%udjS{sBiatpJbF{w7y4h!RJ?a8JScH}r#=p$h7IR+yJ zA}}dnP_`9PN}MHqnLA5k@)C{!ot#^c)5e|jK?$yYbU5!+>K+_gN0S^(!YR>>Nce6l z5+e?CG4}FKM|cll=HxAs9Mo@AVC7>c6GH}xf=44OYT`QxnuSXJY)D%iU$1-&sr9ir zyczfH;U}2CJ@sSaTKMP-Rbo_1G5JFCQNJQE zsG>@BtGIqqOibp&+wb?=U~Kgu-n0js+A(>(Y;Q2K9NWw;9TaT(V{dTG=fN?Z{a$W* zr?;*9u*mb+AjxTIirSPV@7Z~`f^8XZ>p|r6$lisK@;%Lgct_w1%C2W@<`d<6u(v9n z(}{s1RP>0zz#Do2SDc@iG~8D1Iut=31nY# zURj7!Ktw*$&MY88jCXRSR7c6V&e(S z&HbAKy@vmxczY=G2g}iB4QU|89!7xANZD|k(lO{16c685fp-)Qe1YxJqHp71KzJYc zB7u20FfV^Wu@1LM=!}+s(e}YesRb}OoSO>`bsClBigHAvQG;Ajhq-g%Z4>oAcu;-; z#=()67yrhlu(=fh=G}318xvV$2zLSMJ!bo7W7#8wyZ)XWvC%}J&3JQMj)-Xa@aSe1 zff*;3ha(nnEsE@w9gC5U_+a2u=W9m%jqjSC@gs&BNFg@ePXaeXNC!Ei~zYn|O z(KC)d&+Zw2bs}D7W;5v?4AT)U9Ud(o8NnWF9An?rKbD_3=}HLLA}tv&n|x#wvKBj; zZ9-<*gj5?sirj?!O$m7zMT3xKO33X9r1*HiA!IGgAuJ>q7P@xh3NvXxZpLG@aX2=! z0it8k=W{q>z`N+sA4&MkS|q}r?|qTpV>{vZiA{yMiEU&B8DXaK@)#m*UatI(5$dh1 zCkVAs07j_tB1UY)JHmwjfpbKtzd@k9tOVaG)W<+blhD);rvd;!-gh~LU7C>37vouG zZ)WC|N3yx7qF_k~9c@Q^6)G8;5RApBK5nw5qd|)P4#m^syT%xbdmu?t{Hy>B#d;$B zi1A8s@Arh_vmA;$z@1QReD&lPSLY(0@3f;K7zc{&Vl+n6kruvXfOgS|04q~07jCdWDGGPLn__>v-u*)fe@(H{VGUZ>wW|h zx~q?JGKI3kNA(rE3LRk=dZHG9>?HX^x()dP_%6o3&)o>KRbkmbL5 zo`~cV1WMia!HL}Up7nFkM?O7>`Fr|z@a*nD0MG7z z1W8KQ9)1Qu7!H0H1apzNqklxf>&Gv7rw8leEA!k%OlJ{0iU;GC*!#8ej_wcNu<1mY zR$YHZ+R;D}9~IAtCnoIM%=G&fQ%=J%^o{gkd zx0J{7`)l!$j%bVw!Ve|8S_*c|!zYS-6!`}*e({N2QB&i;8f7Z#eF&Wu)gk~>QDKk+IifTLIP?`CN>IG(cj^8?0aSv16KT_PsIJm2T8$&^In`~S@2Z@Pe zRv26#o0UdUq`$}m$0 z`^Pm_aS?O04_vhgT#;41k;YH3Cn6px-D|&#x^9mJJ#{OeEG2EEYc4v!wGh~`t>WY0 zgX+&iCHBP!{Dp%fy7EvSrj5#jOHKX)_lFbi^F*vNI@zjUW*o5%vVB^6;*NL)&_S-m zadIRxT#Dp){0ko+%nYBRk00^zrOfbnef*e@f6feB`uG_h;n`2=2Bo0_3Dyjr(#EF= zJ*Q6T<;~zJe`E0Fp7A;sITBAj-_rZ9^Zsjk{|(+BuJ=db9>+w*f&LqzWAx_8&{y^5 z>!D$Kb5v&d1|$U0SPRCx_&kCZ4_N5M15evr+d`19am3mdKKl5r1`doa`~XE=sImR* zSox9zW4BIQ5(r zi&MN=p*S9x75RD3H#HXEG_f1BE?7WMo^DS~ye0vEi455;_mdy#y#SkJ%-L_9)ZhO= zP|Mmhb#vfDz2P`AfJ2$nEAZtQFRC|n{MMIL&c{Nskn^RpM9vpO+|oqi(~on>`Fu!W zLl6TE%oYu>-}QOzSc*9Fm=d3_Xl~KjMUj0)O(7Jw5W*>5*4w zjCr3%IN0_-hsEbwFfHLfg{+)6GLKnLA^2uQK9~{tYY8yy8~$dn>Dhk4Nj;4pz=#bx z=e(kGi_R-LzvzNzH!K`yr~mj_P)mGBf!mZ{Kej~tMm6|GE$~&=R8?S$1%BW8H~j<| z@mbSrYwH$NH(YF0&n_*RHOE?5S8ts;dzLk-!Rq^m$nOmCmDVk&s9*@djHzZ-HB{9vt6E^OFslJc>*{?$)MV(Qs)~@cu%=>>>oHWlq^e%> zge<*3bK$}U6k1)oplXG0TG{k7t%Z%Xl_82!VUXn5gZufWR#aZxxKxNYx66fxg%#B` zb|l2JzzP%>TW+8VV^&pV-Lk6sm4d)|aG`KuUL+1!(ez0#G%m-w9M@b+7_zGdbty{7 zDm8Soen*Y6hCx(@CI?am(N>Fm2!cA|GI~@^%>vZ#7^)v{S8Fgt)X+EN-=v3AeA(kH zoXk)iN^Ug197GhO0oPJdLXA$d^5r7Jt*3TQU!IAmcN9o;$MWSP!id36ETPYj2uB{S zDBlEwYO$ksqFa{bo9HUUXq;yB6(FXhx}oBtnkv+YmB{LwgqT3BMAWHrBA!2A4%jCz zUa-V~|I)^qQ1#f0R0kykvw(k%sJClUqI@~vpST>AH#v|60!TC<8;sCb1_3v)k=3w8 zE_Eq_&m-cB8Y<{Y>)2y0A6s*EgH>A>vhvTcDr%}1)h?;34N2Tg0IO>28W%0L8kSa6 zRta!vMPoyiZ-}R?$yRb39-Tcl*Y6*L2pRw*+62%gC27Uh=$!GnOzjbpM0sNzDS6^N zf}-w^&Q^4)-#34|P;MUlmWJ<{u>bM;e3}W@o3JG*Ts}(Eb((PS3HrPyDaz&V)03c*GOH<5pOVksvQuf}9BwXq3ie3#6o~Ayi+t z(sx#4b>+oYpdNMYE1z97w&*mg=(O3hr(6E)+-zS-U5Vw-&CMQ{n>)6Y@#veDt+Zwq zojvZ00;nw6Krm}{3% zrriYeu(A<0ccme}vVP^#P@PpJyqsOSyrRC!H#;DvzpgRln+DAhKCR-~kmxYgby;T|2%#9 zSm~2rW*_m`jV-^g_7NX4@yGTNzsSUo?<2m!#Gl$nyn0#i&H9MPo`n7WvQ6y2$xY)T zi~LgkH27Nw{vi?kwAm|bLlrB~|20_WjICQLJ>~2!L7g_TcG;4u?AjdUJX0`D_E{D(PPUK}>hI8`bR(_;aZa1CMrTj9`<9%^rZ35z zEdApc%ST+xkzPFu+rdhc2WgSC5=pfkEvm0ry12Sho0G)RCxy?YO-@=F!Sc%%Zim>9 zIo`)y?_-|#G2i>>_dZVWK2G#L7I+^gIgeu(fmk}2rDqrpD(f226M@394Z?@|o~HSe z2}ac;ivDj1mVhwxqvR30%-~epVlA7!ba7REm9@AIiPhD&GiWFkCbyFz3=w9)J<3QGXXw0 zH~YY;d{Y}6=B!+rXeQ7Bb#Xxq#vm1NHrPj)A7aPlE`<9kv5+)6fd;TMvm#Wzj7X4x zPVIQxsg-y;cOu?EhR|232`x?}Fa-cG#8(!uidSN&X~!l=8{#WEd)heDA4#-3Zcf#b zrD$NGMrap*?zpnL%W(VIMW@>IBDpIuekfI+wYvy;zBflKmY^&8YT zKps1JDqOMGSJXBvL>-tPgv>@Zy*5-;zmSft{tS3_sG@d3MZKeu28{U;z(wLRY?)|5lsedhHC-_(J9i#(sM#$Fh3cy>YJ}DHon2AW zSmm2lgh>*)v!<6|=$n(>U|}vJkJp?WTpP@26-yb!be<&vZx805$#ZgHCeBM>GIqcr z#je-XPzi(5Ko@edX>2h1#?aaY0ChtSZ2Ar^g{jzCoQpWYQZ+~=3J^^=yXulgjM+Hp zBw4H}P{UE926NosIA(}%7WBDpiHRegq z$-f6K$%bG84YLV?8^akU8{#X+?3fo)v}{qDbbzKNC1h$%UFF3Nx*-roLj|YXjy;w_ z#VzH-xh#c*_+|hWJihykK(0 zO|F_;8JgTMc~QMjZLQbmTwqHuU8GF~=39$rmriFjIX2c-heHbK)#nsU%ALqy zYHk67NjW+BJ~)vVRB=doK_&c0r&xmFpI=a2yRdHb7;EM<(|mm0rxl7^jtgpd%QOvN zF!0yRvmJkb(z6Z!SHoW!ypQ#P{|W;yF=0*hMRg7J|(=t_#ZuH^0!98&Q;ad zqeo?1JrPO(`(z7XG3-H2mCskTqN)ijx#1L6FHavsg=AxWqLYduA;> za=J!pC8U5^RUu5ZDxjpEj-I+v>L;0mvr8;9vtZF0_)05QR4>82`&1ZCX&DBAHfYI& zS&tRtj6F~Q+SWKstS-O=CHg}2;nMybTG%LDxU3mf3q!v0+Nu>x!7jK~vS!rbbXld! zP^ zK1bB*g(|HM&@I+Ebs=;m$ugXQI<8NJCiqURpQJ2Gl*rQfBzmv4qe5mCj`NQHSU+CK zw7NP^{bGS?C29`!PHU*ufay?myK9Zx?K`ceqG2(e3oTE}F0aLeG$(lt_0mmwb2?h( z(js3GRsztmLBnBZOvOVLVGft5#i~jQ9+C4Nvn4V{yud`-UFJ!}JK`t5k zY>rN22ckqPM=pRUYU|OE(qv^3wld7G0qSq zV(KAOcZ92nL-!J5^A%lGOEXzxDUp>jlvFBbRKU@eSqdy^U@gEJy`*7`ue7?BPB50o zU|KC`sHQPBTHCnfA~d?Xg_5zs2*ur2%YyS!pR}@CJ+wHfRuF5E22V*ftR(b^R?@Az ztTl)vVRNNFF#74@&@?U)WkP>v7Hezj~=i{G^A(zI!BIyhXg_W?_*75$iTZ|TNig;Vt4A~8X( zxT#nUbJvhax=N}H^95DDMBOZ_sHyg#@f9zw##p1QqFSb86Dd)F;_g@1Y91-nS6&mU zudrpMC8z+6AY6uHxf%{@bX7&=Vl&g&2&8Zq@^VY3j*%R$^lSiqCoV0TCu^pnf-b}B zf&1Lm+n}z3lBed@-By%f$1GORK)bV8%NJuUn?#K#Cva7y%c>G%tVq!a8mZ(Sm{EK; z%&v4dOb8l_rDqfYkvev{xULo}Ff}!(>`-F9C&3t3rQM1vRV^1)0C9wpJ2*BEPydF# z#oOVD5qHr?rEGxrfr8m5SYqx*Csa;r&*xb0ME8R=b8C5BJ&eo(*nxnEtFKrU>2liE z8ZcF38sjXC<7g~Bs%PRf3udg7yFqvLB+7$PH~pSeuv=pjH9(uh8W7#`xoRM-% zhWWLPfh&P>{_FSNzMmN+g z3|TWu%5($97z;@;H8j1%A|s}mpH^SxbyJkS>BcA~JFbTMwC=0BXG4B>UrqKn4 za2)Vsx=J&)*k3vofbk_}7tJXe@319p&Mw%K&S4A1x?3rRC03)m-J&|h_!|7MP446g zG)ixJzSJg>GcwjUU+#28wUvwE_Nco`y|vwNU!VaN3e^oOokW>7F)^iJI+<>4M#2C= z6tl8!2?o2UEKeF~)9i2(KDXgoVwlrayJ@P%j7eamINmi+Qu(H!i_j>vGiSROLfIXd zJL9a^B%F0kYnp$RX-SS*PwzDg!ce0BVyBRU?IP$EmQ>e{HkM(Gk!% zQOoRm(?()m91JmPoK>;pqH6kieNZ6Q+vg#~$&(<(@pnBq-SIAR(&X0xj3fEcvrvs= z%vdD>6%9)Ti*>V`fLlL2R^RCi43ztq7GZJ)ZE4or8DJknYj|=noMU_hl+`up9xkz` zm?KEaa2hy*s-}s>YGVT&0*rj@Na#8H>oYNngAwo|3;dZqW73afpM|x&I@? zz~M-u@}0!R+9Dtq=t&CH0ib-RWCuu=ic3q>O8__K=fndymfz8UlL$0r+WrhHM$NBG zDOsbXsn&>LM@5ZsOG)Hli$F$|YADcDIH-Z2AoE?E=IFaBT=@i*IAYqLRm$)_Ve$1j zrDqaO)i|kpBY5CRi@kD@&V&h91KkovgHx+&>XuuWg{x{wWxqYLMXYe^M6H|9?NGxd@~~^w^JS$Y2MbRI^10isS;xK(;%VQ-5jb%(wGNcUK%-;mO>0 zdH((COyBt?{FC`6{*(FK+e%VV*mPpA6z4KaD{3*-E!%?KqRO%6a9@SXQ8~DLxqapn zZ(Y2V)8N_9IZ*MIUEU$(%SFB0vy`gPvTJ9w_AHo@P2<@*aV}31&N+AcIQdl1Fj6%W z+M+or^SwIRjVYhBv%VVZ8FM&uzeWDM93L*ZyyWqc@0(g&l!FU4RDvy1Y00fJoK<>D^)G{oYP>&qolTyS?9^5zo#Y+}JB*Ec(t zcf^bf9$C=rY~B$SF8O@S@s(zm<@jb612&6!ammF65xC%v2yl@*Bw@B$L^X@0%_1|i z$jmI#GM@-=$;Cw;kqviwyyW}l6BRCikpf%*BdYn>4~4JBfEBgB;B#NAtKq`Dk3d&=4NO6CKXsEdDf(SYif~&ZFra9g6A$51eTnoFEkEiBf|v9nNEYk2a-akNCu-YJlW!II-MXQvfrQ{> zBoGZgR+i^QGLh&B_NErGPs}wGI+O&MnqY5gzg3Vg;B2R+Nr@t{#g&AlC>cp!Ur4|_ zG*o5fAc0JvvOtn5!W@AMg$dD0)#cdiC*Vq>jYrVuf^=ybNj2nwyP6E)d2AX}izVRg;*d%wE0xoLgp!O!zj>r7U(VW6dPxojiB>8!dY zS2LZT;FMt7sH@_L@@i_@W51P>x-T%yG*Ux}jUS-6k$O^*yPXp(y(7VCQkQsA=feHpyF&KYG2{NpnnB^?RVWiMqV+S#H2iHV!&aD{*H9u1WS_^ zVF8?1#6k)7x)KwqRRrfIAxQ@Y24;sy67>VzNXqPefT1X!)DSmG^P~=BTl^FIivHfi zCJ0vw(SgCGFb)~GclfcvvJ3;c`Q!#E^(M!U8-4c!>omTyih3;hV93n}`?Kf#;5nXi z^5u$=0PZm;z!mN!uGzd!;-z40QSofvOyp$(FMeJmXP&P(R9|C_!cJMd3NszGnKz-R zI0cwLVcwjyKGatyj0R$rVbf(FV3md|vV<>?yUA2QO1im=s~c)C zTSVMeiCYTZ7`N_}o>7pS<98LNfE3&YJil~~yRG1zwbG)p9FFJ`8j%2|!D7<8HONVy zo01-H*J7aPu7T+@@uG#iOW`Up0ZhSAUVCwE-E!ZZIHRf^|2_E6!iiIU{C^MsYw&+J z{-4ADhxq?5oRw98|MT#F1^(~D|BLwl3;w@~W6(~*|AqJuUIkL zEAiiq|A+Da3jROC|4}%+t_c4N@gK$iCj7sO|IhJ%49=M>!GAUWufhK>@V^`XpX2|i z?0@Vl#bCR_erLpNc~08z%}S z42IBn!*FSo3Afg{<&BB6|N|<`ZpzZ%iPHAszZ!>_G)!fgMPi??6E(7Cl z6LdB3exrexAF)q2a)8)#vG_H1IQ4sDN=D}s;+Rm^^9h-w#}>~hH6{!hJ$6XxkO@(hA4ZyCxkWP_53tauI5O*M>+#Im(MR*$^JD4BD1Dz# z-KE1l{;%F^vFhJ%u@2teVqJ=TFZQ8$LaActz{;U`03L64WOg;`!&$*l1wm|a%ozD~ zi!~1W>DbT09>gBTz6ATl*ssEV1NK|6uf<;fRg1L<`%kf7iTyh4zrlVt_J^@QiT#h* zU&DSc^bccy0{b)AH)4Mk`5*gxar!#PZ$?RVNYEf(!} z^6ow+UN}KJXTss8VNwpzo38kY+{OPiL@Aj%Ik#l;BxdN%Rtm7E_!s?9o2y>x zmPcNVrs~LB+q!ystw*UU=#gNv^?rezCrA~(ik{gp8}OwE=mbe0Z$r$5 z^^3|Pe8$qJ4P)adt=m;B`f$|5!(ok!QSttkJeAh zs`oO~IYXmM@O`7`(1B5de$vb5wG}}=(9d@aj3Qj~P(s+IeI1{H>fIld>Q+a);&B>o zqu_DASU8+Xca`HYa-2DopI#vk%s270VXzY4YAHZ=^hc{k2~7> zJs>){mY#alKEZiE#y|Cv3~n+=$*c?qqoL#RDWk>)dPIP}F+tAhO4o7d@ia%KYJOsP zlO{8Sd)j#1qO7tK_vy*)IO76i;92JmK4-AbDpx#9F*=cJ;x-3f*~T$_fQ2uNo8aY3 zGGmBX{8L91@1fDga+D9;vM}+0VMTP{`+x0`E zct;1fbB0DMqP10vq`0B@4OJ%&#d9c)!RV;QDtck|6g2qgYfzl<{^o4u3NXmYb244s zf%cRA{Uev4tAWQE@hG4f#WVgYUVJRsiSU@YsKFktj^p7}AdpZcFe&=Vihi$YzADu4 z44y7=6dcwN5U&OZc-B+B4{QsQaI)VREmt}Tu263q>!L)Qvv7$@+m|$|7hhY0)GxZe zBb=|I;-yNFSyv9%xR1#%x|HegwvKU&PJeI3c1`6^deFo~heu!O;xOW?@bxX+y;2M{ z_{HPKn6qlfDwk4t1zv?Rqj*RLTVxSj5{#IYoN)l8!(70Pr_#`WHoInJeVID0#hYd( zJw$A(hluI@6~)i1uQjV1YQyHR_~|O$Gz%@OP{m+B7m{CcbMp&>p~T@Tf2k1J&ZhGy z?k3)A#2cLPjrgiOvntscBsR^E+#yDddhKMCYOU@`cK{eK@t--}{<^0N_7{TiQj57+e^0F|xl%ad; z&^y;qZXXy8<+Khe4ddbKEo=A#}pC%E)s%wJ5zQTLuymCaaVh=xM(c_Lk9zw3}2@m@IrzdGE$UNyVY z0@=qcDnC&5<^9`)5z^7X7ccQ5T$?f00!Lav;g~KF9}Kr~?1&p#NjW_2wsO}-)F4^z6x9i z9D%RzZUIijr*qQ}G>p%_#(6*!pTjKy9Ak=k@b^r%0K4O_!F&ar1MJnsFs{cR zLdyrfgufJ63M|K8<%~pyHqwnhWRzjHSc8F=l;J$!^OY^u1;C4{u|@;zHVK11!i}*tO17^#(h04YZ7ovKg)^% z>yN;Bz`q}9SsQ?>jG1U~@NBe)(R{>te(V9!NJ7w~ZW z?WDcHLBJypM}A%ge*pVlj_U#ouEuqNKVO0L0r#LU-T?d`^pWoYr=XwghEHhM0S5z* zS_S_DkGlow1TF$DCtQtq1FyLa@doZ(i|Yb++=+ZU66N$R_y@QYSP8rixD0svJ-9Bg z+r79h@B(1BqYMLCuC|o(rW+}XyQdu9?ZD0}QV#4+Jj@!+FYU8V)Drc7+j_$ozfSzILPQeHly#vLk?Qhd8u(~|C3M58*mI6Ae+=-U-UBCTOx`xx?h?)`ruBf)wr^@ zLxaqh5dJjUt$6sDi__8`>8dnz8rfNnz3k0>*5^dT?d*)(xfgWqU(ipa+rlREZ*^_NFADwuPxNzF3v_ou*XXd*5V!Lc_k94W7RRUet)D~+oohbQ6@e0LdDqeNaoe3R^ zX{&CI){vd$2%nAcJ>6{KbiJM3;)cji>!3T~kQVC={ElBQb(7Li_!fk3MR=lo{R-hf z>)v9G!Z;v)e%i z!nd~*z8B%=79>9Zh;+242*1u@e?{E>2!x+jhz8em25~4r{TdJI%5T4ae_@VSn1ewHfdD*Xt5 z7~@iWzN@wTrVUVy@&HgrpnX_B5%(wHr+E3McJy>K zG>(6JT8lN%tvlSQqjCOUr{jKyTUYPYt%vS}nJrcT<=AoE!q#?|uKONz#j{(i$KCes zciQU)KfR7|^3`tLGN&#dx}tMhtdHEfW~c6K=)T1``&GB@d8cj}bhnm!`{iEfZoxQx zB+!xGJe8#&b$)C?_`~zP)3F!2ej&8S?)>fL%wL)x9TGt~MtN~u_XO2-#ji{Ar~Zpt ztWI`&)Nbx^=0^;=-RI#xuf5%)a`l0;Us(m+Gs{}6i!g6-TsL-*uB4pa4bb&jf&0sD zKQ}u4yc4?6wch2b7vlBg$`)&uyIf6nreg$jJ8!@}W_x-m9d|hWR|#EgRf{#pt()r9 zEr)I`=10rjx}Q09G@tCU)?2p~y864lb?K=8ul){xvBlnwQ#!s@T}?cH2Saxk=4W2@ zw-may4|=x;7eM#RhrR9H4&91JymhZYch#e4&)wxy>xZZ^}xKMK_{k5>wUv%yy=*iIe7 z*CPCCcR5?uTF%JMO6U&4d>zxv*7%&>+Aps|cnZQVw8tlHv5E|xzXjpvzR_ZBv!9>3 zRT-dgTF>~=7R>9(&ywD>cT}T7;k~ea@$Ne<*7NpwrZvUKUHJ&Vd>iif+wG5UjbAAO z8WBF+9%3A%AR zTdZb#zL32)TFVLPV$fNi;duo*QT$K#o@lj4`LGJQTXwnn&$O3Rxg|U65kC1#JYVF# z-k{d&k)8LTI}__JGaP=J68BR&){(CIC!V>0HXfhU%T;9Pd|HqC7UAzY!v7u*FG2W| zyRmNNu>T`vpW<1G@Mre4So7`S-I*;d)^Qlu z#N$i$`Z?!sTcMkcb)%c?^`6SvHO}@h9qVE*cCxGm?)X(Y<2M+(9-Z-rp3_~|eNb8( zosLrI?&^m13;T5`etn$Ry#Tt~u}<}6bd_9{-VL zHMs3nIPI;3E(Pmx&%1SxId!x?c?;I-=x@I|%E4Yqh0YIJzx>H@mUWuj&!;&3+>O>L zPryATx4kLO>*hoE=aVe!1h>5-oc7L!?#(RRGjiMO@3gm!>}6Zd{*KB^U#E`NRbS7= zx}81WNLTGl?-uBe%D1d{-SKI{m(Fzdv|%RbmrRttiv8N!m>8P&2c}Y9;H6j z+Fnt4nFQUl&>ic(Zg1yxX}$N!Q!Q(cyZ-KU*56goU5)k9NA3Qj`ujVlUp7E@k)qSbj$jYBfNh+d@I7Q znqgVr+4Cdq8~X!R@EDS>Y2*_PGW z5s$QZJSq|1=bXfTScdR)gy*BZj{6~P=pp0?vVS|m`_^GS9KYk?sgEi@Q9L&wd>z7% zbeE^@t>uaA(E9$}Snr-`Pfyykcz$)mfa~uu%L?1)mud6j>ji@mKI8(+YIdaaZz`Rt z{3HC63oWbB9#5(#^IPi)#UlpYk1w*?TnD7^l?X3F_(P8C{4VZKy8rOfPvCDyI@03l z*n;qferj2#+vAZsDPFF=LioD~SAY6X#vf_l#naIX_a~ma*s}WC%LUb^gPiqv1auEy zYFX#l<3T#@Qo6e8*DImhaXHrY?dc)iXX=tlN9kS;-TI&7J^?Wjuhenzc;8EQ+6kxo zE4{9?EM#-*`O~!TRsJKq3&I`cIjw8lZ{2X8W%qK+s<6kC2Pq{mIT+!At1T-?_D5xO zzb185M&GN`#$;q(l|CwC(DDPuXJlX6X?#Y}#RpE#2t+c9iZil{GX{;y$b=61Q5l`p z{fQXt)W8n8Ex9Es13K6)P_fg)Yh59Y5Yx_gny0Kz3BMH)Bu4& zOGmUdcMd3|sT^$^Qv(DBZds_Ung`9abWIzE(rQylyE0 z{5|6fjBhe-XZ(h-Q!luaG9Jr#0;8Nil#hooj%J+6SiyJ!<5i3|GyZ|`Wk#_Z z#}p%#+Q8;3;!N8=Qc}858{n-=?dH#3YBy>dyzQkN;?rJtinzDE)I)vhusZC^UQg;o zd|Vf+ufBAuY4%~Sw@-V1b*jtqaos*XudBKSANKnB^j|+(uk&F~b;X`KN(46QSE);+ zGDh2qE~E611pkX(`nAQgV{fek+O(qF&rQ!oAbCqDJk-=}r;=N}ob^!2Hi z@zx1G^>=dq6#LZQ!}{qSdh!eT@^`GC=b@)@8s(Mf&-c(v`MIC%FZZcm$NJlS>YG^q z2M;~Po%Uy0{}&Iv#Q%BL@9?Srko5;1UXjJ6rcLfSwF$2{tMQh?V)E` z9K>Hze?lJTi(cx(#U6SoulMj3Z}iZUeTs|d@AJ@$eJS7HSAA&W_;2ut56j{p^-uiu zs>k{6^l$UflYMFr#9yC#=*eGp|L*nBQ+#MHC-yscYrlSAUZpm_^_AjI@%aclZHIZ- zPltxmEc)Yp>OUsq*oJ%PDL&*Q(Vym_m;9CbWBSzlEe}$@#s6OQNBr-%KDhN>{e$TJ z=CA1AC+A}ed-#X)m)d*rzu)pNdcWmg^nS~~=ofp$pW;qsVkdUmmU-yi<>w}!`i_(z ziql#Z8+z`k{rXGgjr4c2e!YiY;{RLLZ}zFbm-X*@=%xHfdH%{nPjRRH4{YB!xc&5s zeZS>d?C)Uv{XFdd(95%w2N{nH^GL7gWjr#`Loelr{7T!IKK0VxeqZ(FHXR+qtG$)< zu4R3tNBl)E^(*F~m-2Qu+h69P7k^5BvBIZb>hBt#da1vU_|!LX{JqBe9j%X|f1mAp z^)KWf>f@z7f59XElwVZVME^GreOG7?vgtqf&`WvvzUr6w2T@Ynff?<$hf;pN@A@V6 zCD|WI&S;eUO7=%izsS+|U0>ung6{foq|f@}cYG%Hzwh?ENr*R%_$?>oDgZxi^q5W6Q7`au55Wm;3Fjed=XByvai^<);aGMw{1qos?%8uWa$KPi2jE(eLokQ(2>3 z^m{$@68{Z2hqmtB+i%}R|3@u126^bk|C?CvRUSnDD(k(46#g@<0s!w0N?&_hrDr(N_fdFZJ=(lum0{qKH0LhOHyYtXjcXME)OtZ#hk zDGjuF^+ysP>0kUjKR~u`Ro3C#L)$O^Vt)Q~xaMAM~l0 z{&%BK{eMe+a+kB>{qwV{@T7UfZ2dgK|hJkNDKf{h-%;>g9gWM?Up3pGoQE zFMpdj{)hY2OM92+Q!nk^M4$Q>I6gH#_0m3G=~KUh?XUHzm+{S0KJ_xb`HN3|vi;-? zae?$N|F6a$$@bHk0pkB;`|0$H9EpFLm`Jvt;u($NpYOZt|s1wCMO-v`p$8G!P`yL-B+h?cW!JzB-dxfBTf|m{I{*o%JUANdaUOR2Jt37nv_j*5RP#T^Q#x7f?$9Sp;+H9M?z(cldeGxR-HvPf9+wZU4{vXsqz1RB(VqcP+>(hQJr(uFmy%gzc4?T@b zI%Ajd+{GSx`nD0Z5u*R4hyFll)3M9^>^7hJmvIhl5Bb!;qUFYV554&Reb#UG&{KNp zS?(RI-{zrbSsW<+biVk@%fIgY@bWL^9ohHmU(x&Zujs!o|B8KiALO4N{-w0iF8#OH z`-YvMrCs!1?;BEn(Jp$g_YK|o+qcgsoSk^1xa_Oa5;3 z&`Wy%%t_qkp_lZEzHi_5{UhmplkK14p_lQ>`>dbsQ@?}tOMU9){^jjH^)h~X%0n;d zO_qPo5EqDllI7p!7(Psv|MuIHWc%N~f24jT+yD0K*AKP*clW=4_UMoP)%N83@(%_xpXvds*-I`;JYlPkt|n9l;>&v(&HT z_qW^j&swIF-`{rnN7g&!dA0xa^Tg7gG;uVO_1&3Y-*PvlS6Yw7H+M6Y z{QhXGZ|Ik_FYhy*{QkbvKhoY&Iil@<`}j3kU)rBWb(x2Ks$bM5ivDH~J+%weCW?NY zhhFNh%(q|msh9gb?|JAE6~`v^E!loK+_K++jK6+kVOdYcd@+PuEkF7}_*a>MKIsf*t4c#h&@pMUzP#?xNwVWRiD9!Be16qkQ>e(UwVwZuo}w_fjC%lztYat=1H`IW@q z?|fMFGQahDzFG8g|Jv*MW=U_8ioN&x9L)`B&h#wn&+{lhR1WAGqQBlle-N~k2GKv{ zp_l&seVjwvCJ(*D|6?sTyzb{p{6+6|KUd-}dawJrl3y~v^?Ki3^fJHodf#30H(7r< z!(EW9zwP%IQvRhrChM=W07-rPzUr^6Ps#oHw>;W6s_)dsiT*1OJ;k5$SoA#xwqG6~ zb!=Iz&toiN9LYF}aUA0$#?u+kU_6U)E@O~!9%Gm>#<+y>BF2juFK4`p@mj_k7*{dg z%6JFkZy6t8e1!1{#-|xKFuusRiSZ4_w;11M{0HL)j5`@WXZ(ioJ4WL;?f(N9yD}ca z*o(0r<57&qG7e%K!kEiAjBx~GG2>Xq(-@~Q&SX53(PXS-tYr)_Mj00~UdZ?}#>*I& zGya0{dd6Qfu4Y`zcn{BsB*>B5-7IFNA!V=3c&#)}z$&G<0mON`qXcQYO`NMGkT#*vJrjCG957*{c_V|<12 zJ;uF^Jx|bfPh>1+oXr?!yp-`~#&wJ@Gya2d4`cTewcXjN2LaG4>j)?ViLqn(<7=2;Ux#<7g&Fvb|KWL(4eIOAr<4;Wh*duOp97{@T4%@}38l5q{=6O6Ah?qIYS zdk@uihcK2fp2Zkpyn=Bx?0pmi(^BJZ8J`^|T zdtmQ_eJE~TpM-rN_QP;I0+?u{{+agcQuY2D;5u~h_h4U*{XramLmhsCjpie?KMo!3 z&tcERAmK3VU9rE2>`T2VN6w6gAqPfbLoB z&tM;lL3b|i>v5bTlan@VWPm#u`_u5zChV_ZKLrUIgMAeCXK-9h2~4mZ3ZC{&xW*3b z?_iIDSc1I~`)fE}K!OC@G2m%mfonXC{eJ9^f!Kt71NN0Teu@MMwqwCl@K7XT4))Wr zuRLDwzXayt_&T6$AE(_pVcv>wZ$8y}uxaI=-YG!7G&jTWe+KA zR7W`%*YMhNne}QUm)1rx~e6X`6hS5o?oAH*Rc` zKfu`7Cf~_u?i?`OTN+Bp_=DQwI~$wZ$-HpsP`9qCmV@A2<+hOzpr65w8i%`nisUi_cxaIt7s#hhwsOs+T%I-&n|*-#=g0 zf^REb53rr>Y^M&#v^|EM;&VI4N1D>7!MA1S1*L~KBHI7iIHv7w>?uY+Bf$J1#Tv#g z=9e;G#Qa|7o0y-*d?z?01?6_`x4JwpWd|JsBtNtqA5h9`QuPV_nZN2p%~Skn%Vd7W zNda|SPn`(16Pa(y38>=?PH+M9n+i0)7VR=^qnVGM98kv%IHqkP^Y4xbsN*Nq|AtY{ z{9&hR{(inLo!6E>sXrsXWk$6>cXPTZ-IU(QRBdN5+rLKXyBiH%Mk(eH=5J>GN31`J z`TJPEl=afpQoq+$d^RdQ;W^T)X}y!r6aBNAmw1*izw~*{OFUa_n5^O=9s zyyQEL=g4nM|E_t-_t%C0hf}|e`R4bX{BGt0A8P&qt}oqysyu(HdGY6Q%m=>IywtA| z%&-2ZQ$L;g=DnI-+yKppNsoUMygK%Eg+$QH2`D&zRrt z;;&);qGe9~D&~7%qWSCC&I8Qrd#a`Hjr){k7)LLb;^vuguR{9Z<);QxzB=Fkin$ z^8=axiur4A*Zd;pE#|x2srdlc>kPz;{5;_v%|FiiBbiVAo#wA*ekk)R?$`WB%#UOK zyoWUZD)Y0&{v(=~c-Ar>dQ|fxaZKA!nE&ll0d*|bUC#XQXEc8l`{y^z&w5_-RNrWO zg!!Mp6i~;VSigb!6`M5wIoG?lnE&Zpn!gD1W!k=A-g-Bnj(@`GqMOC!w~MxGUi{pP z`LB0qeir-rc;+YV)V#F+In3|frTIA=&y$&-`L*VkGe3s;ZF`*jROahjoctW-_oNmZ zv{_t#E12J%u6fCqM&^$^Q1epWE@M8gi&MXf`Pm0K`TLl^@L)^27Bf>+7yb(fm`)7md{XJmz0#e$6SGU#jKC2h1OHs^;(Hdh{iDivO;W zqm+{7y|ksE-JU6CU^{QIe%(y1zlhWI5$hXV z>DtZu+&Nl*9Qp&=x}cq-{93_!8PD`#{x0SZ)^cMY^N%qv>CIDoe`64rPp)3ZNY-z5 z#pg8UcQN0G?ayJp^QpT0i2eD@_jU10m>=ZguVlW+#oxsIc;+QtcQQYhc_|N%Fu$02 zDgVzgf4R%fYs}y1(!ay}T`v76%s<9FvPo^?G`00( zzL|OP=kd(%W?uYRzZDn#|WQFZS!1U&?%Mj_3KzuV!B2 zc?I*2F)#UY1M?f1m-4@s`L|s9hne5Sy!huC=8a-!xq6lP?#xU1f1CMi7ylXa(_H*M z@NKo*oskgAN8>@AkD(Oph;Gb>9@6}enD5K{RS#?aJI?n3%wPVf<_+fa!BcsdJ6fkp z(mP7@PiXxisrtI5tY6Cdft)Wv#rHR|x&ET~sV&5I?tN0*$>$6{AADQsy+qmRXEgA9 zO5(FLMf>5LceI^GwttP%qkk!J=8LRTz0P`Br;`3|7xNFnE^Rk+JlAZ~_B(TW?_~a- zcQt>ymK(og{yXN8Nospm`1iHGFZ+2bc-61*dU$`f^AYQNeyH{5u$=>t<)qJKy{s(v z1W)Cm;bX0*buQYDW_^J5I8@tE*4KTa^^=&tvX{2=n2SG^_358#z0~UoY=0WtmwY*k z`MEB>miY$erCv~U+sgMvO5ek{t3u}^N7J}O@%yinQ+Qi;egVB<^xW@$!5U>}|N8>J zWxe~p!&8di|Ng~m$_`d3T=xq;0N;b^=@;5>oQ=jmng7)Tny;ehVY8Tj?s&~h`<8+F zL3V~*q4^WI{2a-A?`t*xF7tyGuWj1@KP3S_BLP2;?U&5c_8(>YOA_dBNWkBdfPXpx z|3(6S2lz~Tg7|kj3f`f(k0AG7WE^XvL&?NCoBMuEU+Br7YgXuV(S2OnPEx%7ZU6t& z1bivmIqt{WP6OMiN}ykyfWMOMoO+M8^CjE)6?jV53fDT-?^wU;Pg;K@kGq~={=%y@ zFY}aF6>m?G{{4Oe-b%ptM1}26>y{iJvDhE{p|pO^{2&fEk@-O13dION0=$fc#0KFs z#b+3^O&$N6xWb&n{PaEnC4ZU+H08_>8?5#3aR>9csz>|ZmuyII-DL^*)d~1@3HU!H z;I}2Gw)FiKpJ6l)*LrjxYRh8&%=3$+ z0d-Cz`)vmE7yVT0yRiNo@Ko>I?btk}-|w=c z4UZ?K{0ErNtkLlq!10-tz|K6@e_p2b3sUsumw-Q%#$DWx%RKaQ)(_gH^%bn2ouL1^ ziS>J~WBY9Ae&%mjuldew=P7mFen!C6u5MC#hilY9Guv75xwaEz$*u(YbPVL$@@HT0 zR8BIx>vmh_1(`~pVH{qh?LW`)EMWdu=LXajM`3-FwlN9p-;DOTJNmW7JTK5{tb=j+ zk>^ZKat3a`6M>-@xVMeCFryy0)xnrKKe)uG$STMgmTT0P)rP>9h05xdoQJ4Jg9{pAz83LYnB7W8%0iXldIz;I z#|TEsqCqnnix@~>?ZvZxyOT z^NbufGhy_YNt0~+48(bCI8qT5;h2TN$hb%_7!qRgX+^m?1aCWIfL4-XrbXI=hm?#ZAm30?iqDyGGdmFnzg^7;z`rS%y!TP zMXp#C6gk2R?WWDCv6^5+!pG*tf91!2#m^oa&yU&hd>B8&oEfJ}f@Pt&1$E$bY;hzO ztgnrVWj-_~KOAExSQ zjY@#}87W(2R+h!e)In8US+vG%2$~g3D(rQ*AP;qz8Z6{Q1KNdHVog}f11S`U*;7iO3Znu!^n7JQI2E~^8U0)eLmY$;3 zI62WQuM5NX4Uup|IHIzJoMsCVb5%j@L*4M1p@rx`I8*GDZlsx+S5GZs>j7FsKA;vc z{!_Pz@k8ArIuA{B87`)_B3Or>Ce8=ppK8?rvM`FWSf!fC_?eC>#B8Oi%=QCQnRZ`~ zD;^8c6{#xjJTx1qF1NusP1es>O*8BCQCkXgNqr0*tnOZ_^5VbpiX|wX$+oj%<%`;|RfbW_Vkciv zlvQ*1e^T?Jrh1tmHcwEq&+x%3Roky{@)!>MKyaqK)-N1ifjcSyoqD9a80^wvq=7C`)P}Q5OtVJ4#v+E*vp1xg#AH`GK;8kFGT^<~wy6=n!gh^MAt z`0xTFvIrBJ3e2-GORLB!#OWa#Mg&pdBlQv#ZU}}<*lMlqW~?!Uy3}f{FdHKnJ(=(l zqFy>Ab|c6oN^GnwLZC-gYSe`ExqO{tFSCU?j(o~d`80NV@#Hb)m?k6|X+NdU?2F5t`6%9*N9l$(IhJ)1P%|ky`-B24gbt9sNA(*+W)&C>jj@WFvWSz!UG$)i!#!OP?^re$W(~Q2ftQ>7>G**cLpHr`5OXDl* z0b&?-MInpqcl}tnu>nKd{m<21Am*lKtgeFm6m@Fg%d$!*6~81;vSXFCF0YV6s+uZ_ zG~+|*Z;c~aMUOe(X&FTy<4c_F%#|FK!wt2rc$h&ovY# z9{jL>`{77KZb9KV1G$Yh*BL#EN-dU*%tgU6%-}HdK)J6rs$!UtIF;x{8nH&D=c`r0 zu*-|4S&a^hieMzB+TzM+SeBzOokdTq!g3j#D zEky+gRkU7|3WTlUr``iyZ53e3Go~6RH+iaB2zAz8Q*I*tqT$04HOTBm7r`O$F2@Zp#~IBGwpAgE1ct~MgLI9P#18)GLG&ls<> zFWL~ns)(z^OM=u0rfLxirK`0vP4tg4HldC)LAOa&BkZaiwNW&cAw8#2GqwphDjqk+ zoK-uvR^?YkBbH5~dWdNoR+{B{Wkpp3iW4n}#4!A$wBn!BGguc^(XXtns?t^)cvw*p zTY|hTr-4Q5DS1X?v@RHQ4GN5`C}#I%NkA8J)nt8tP(3ma3px_?cB5 z#$haoxpx*VS3wk3eR5V1(?E6Kpr#T=))6fP~sbz$W}-C8=Le~ zo+D%0n1Ublh>@JXF*SfA1K)d4VD#nZN(dPo1ld_V=Hpe;LB*{86lH;`5vM{Mj6F0y;;oFXvwkj{M4Qj(^vp zFW-EX=Vu{N8(qu3U4aAp`GFn*6&&F6SM&W}Ij1}S5L}64`}y*njAq=Ir%mFkkM=*l z83Fe5*2N zu&WIt(|Kq-=sI7%@?b-p~0*1SNUzxqx& zQ)8y{&}hLi#YNID&qXZlrx~(u-!kn7_??EtQ~I-AyqsU);@O?*916l?gYj$IrBBY$ z*Y74LaG>i@+0iMrpN;1mIR2dnX`bFII2> $SSD_UPGRADE_LOG + +iSMART="/usr/local/bin/iSMART_64" +iSMART_OPTIONS="-d /dev/sda" +iSMART_CMD=`$iSMART $iSMART_OPTIONS` + +SSD_UPGRADE_STATUS1=`io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 09 --offset 211; io_rd_wr.py --get --offset 212` +SSD_UPGRADE_STATUS1=$(echo "$SSD_UPGRADE_STATUS1" | awk '{print $NF}') + +SSD_UPGRADE_STATUS2=`io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 0A --offset 211; io_rd_wr.py --get --offset 212` +SSD_UPGRADE_STATUS2=$(echo "$SSD_UPGRADE_STATUS2" | awk '{print $NF}') + +if [ $SSD_UPGRADE_STATUS1 == "2" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_error + + echo "$0 `date` Upgraded to unknown version after first mp_64 upgrade." >> $SSD_UPGRADE_LOG + +elif [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "2" ];then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_error + + echo "$0 `date` Upgraded to unknown version after second mp_64 upgrade." >> $SSD_UPGRADE_LOG + +elif [ $SSD_FW_VERSION == "s210506g" ] || [ $SSD_FW_VERSION == "s16425cg" ]; then + # If SSD Firmware is upgraded + GPIO_STATUS=$(echo "$iSMART_CMD" | grep GPIO | awk '{print $NF}') + + if [ $GPIO_STATUS != "0x01" ];then + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_low + echo "$0 `date` The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" >> $SSD_UPGRADE_LOG + echo "$0 `date` soft-/fast-/warm-reboot is allowed." >> $SSD_UPGRADE_LOG + + else + if [ $SSD_UPGRADE_STATUS1 == "0" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_high + systemctl start --no-block s6100-ssd-monitor.timer + + if [ $SSD_MODEL == "3IE" ];then + echo "$0 `date` SSD FW upgraded from S141002C to S210506G in first mp_64." >> $SSD_UPGRADE_LOG + else + echo "$0 `date` SSD FW upgraded from S16425c1 to S16425cG in first mp_64." >> $SSD_UPGRADE_LOG + fi + elif [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "1" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_low + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." + + echo "$0 `date` SSD entered loader mode in first mp_64 and upgraded to latest version after second mp_64." >> $SSD_UPGRADE_LOG + fi + fi + +else + if [ $SSD_UPGRADE_STATUS1 == "ff" ] && [ $SSD_UPGRADE_STATUS2 == "ff" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_pending_upgrade + + echo "$0 `date` SSD upgrade didn’t happen." >> $SSD_UPGRADE_LOG + + elif [ $SSD_UPGRADE_STATUS1 == "1" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_low + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." + + echo "$0 `date` SSD entered loader mode in first mp_64 upgrade." >> $SSD_UPGRADE_LOG + + if [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "0" ]; then + echo "$0 `date` SSD entered loader mode in first mp_64 and recovered back to older version in second mp_64." >> $SSD_UPGRADE_LOG + fi + fi + +fi + +echo "$0 `date` SMF Register 1 = $SSD_UPGRADE_STATUS1" >> $SSD_UPGRADE_LOG +echo "$0 `date` SMF Register 2 = $SSD_UPGRADE_STATUS2" >> $SSD_UPGRADE_LOG +echo "$SMART_CMD" >> $SSD_UPGRADE_LOG +echo "$iSMART_CMD" >> $SSD_UPGRADE_LOG +sync diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin new file mode 120000 index 000000000000..180742bbc4d5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin @@ -0,0 +1 @@ +fast-reboot_plugin \ No newline at end of file diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service new file mode 100644 index 000000000000..75e3b224b65b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service @@ -0,0 +1,12 @@ +[Unit] +Description=Dell S6100 SSD monitoring poller +DefaultDependencies=no + +[Service] +User=root +ExecStart=/usr/local/bin/s6100_ssd_mon.sh +RemainAfterExit=no + +[Install] +WantedBy=multi-user.target + diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer new file mode 100644 index 000000000000..ede2b636d80b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer @@ -0,0 +1,12 @@ +[Unit] +Description=Dell S6100 SSD monitoring poller timer +DefaultDependencies=no +After=pmon.service + +[Timer] +OnBootSec=5min +OnUnitActiveSec=60min + +[Install] +WantedBy=timers.target + diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service new file mode 100644 index 000000000000..4de9cf73b965 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service @@ -0,0 +1,14 @@ +[Unit] +Description= Checking Dell S6100 SSD upgrade status +After=pmon.service +DefaultDependencies=no + +[Service] +User=root +Type=oneshot +ExecStart=/usr/local/bin/s6100_ssd_upgrade_status.sh +RemainAfterExit=no + +[Install] +WantedBy=multi-user.target + From d429c75581c90da37a5f064539205eb8d4679db6 Mon Sep 17 00:00:00 2001 From: Aravind Mani <53524901+aravindmani-1@users.noreply.github.com> Date: Tue, 31 Aug 2021 12:37:03 -0700 Subject: [PATCH 125/186] DellEMC: Z9332f fix LED issue (#8639) --- .../DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm | 1 + .../th3-z9332f-16x400G-64x100G.config.bcm | 1 + .../DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm | 1 + 3 files changed, 3 insertions(+) diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm index 827cf9c754e1..c1101797b021 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm @@ -520,3 +520,4 @@ serdes_lane_config_media_type_24=copper sai_preinit_cmd_file=/usr/share/sonic/hwsku/sai_preinit_cmd.soc sai_postinit_cmd_file=/usr/share/sonic/hwsku/sai_postinit_cmd.soc +led_fw_path=/usr/share/sonic/hwsku/ diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm index d207912c5ef1..17f2d565c26a 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm @@ -582,3 +582,4 @@ serdes_lane_config_media_type_24=copper sai_preinit_cmd_file=/usr/share/sonic/hwsku/sai_preinit_cmd.soc sai_postinit_cmd_file=/usr/share/sonic/hwsku/sai_postinit_cmd.soc +led_fw_path=/usr/share/sonic/hwsku/ diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm index cbccb223e98a..9f33e13cc225 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm @@ -522,3 +522,4 @@ serdes_lane_config_media_type_24=copper sai_preinit_cmd_file=/usr/share/sonic/hwsku/sai_preinit_cmd.soc sai_postinit_cmd_file=/usr/share/sonic/hwsku/sai_postinit_cmd.soc +led_fw_path=/usr/share/sonic/hwsku/ From 50a9587e6e8693ca1471b5a37e98cb580ff6be1f Mon Sep 17 00:00:00 2001 From: byu343 Date: Tue, 31 Aug 2021 15:52:48 -0700 Subject: [PATCH 126/186] [gbsyncd] Flush GB_ASIC_DB for gbsyncd cold restart (#8633) This is to flush the state in GB_ASIC_DB when running 'config reload'. Otherwise, the left state affects the cold restart of gbsyncd. --- files/scripts/swss.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/files/scripts/swss.sh b/files/scripts/swss.sh index 298f5e21b656..775bcc87cd0a 100755 --- a/files/scripts/swss.sh +++ b/files/scripts/swss.sh @@ -157,6 +157,8 @@ start() { $SONIC_DB_CLI ASIC_DB FLUSHDB $SONIC_DB_CLI COUNTERS_DB FLUSHDB $SONIC_DB_CLI FLEX_COUNTER_DB FLUSHDB + $SONIC_DB_CLI GB_ASIC_DB FLUSHDB + $SONIC_DB_CLI GB_COUNTERS_DB FLUSHDB clean_up_tables STATE_DB "'PORT_TABLE*', 'MGMT_PORT_TABLE*', 'VLAN_TABLE*', 'VLAN_MEMBER_TABLE*', 'LAG_TABLE*', 'LAG_MEMBER_TABLE*', 'INTERFACE_TABLE*', 'MIRROR_SESSION*', 'VRF_TABLE*', 'FDB_TABLE*', 'FG_ROUTE_TABLE*', 'BUFFER_POOL*', 'BUFFER_PROFILE*', 'MUX_CABLE_TABLE*'" fi From 7735e8a7928a654b408dd7ae6779f2e605973af6 Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Tue, 31 Aug 2021 17:15:03 -0700 Subject: [PATCH 127/186] [7050] define hwsku.json for Arista-7050QX-32S-S4Q31 to skip SFP checks for first 4 ports (#8624) Why I did it The first 4 ports on this dut are breakout ports. They might not always be connected in lab. Mark them as 'RJ45' to skip the SFP check since they are by default disabled. How to verify it run platform test_reboot.py Signed-off-by: Ying Xie --- .../Arista-7050QX-32S-S4Q31/hwsku.json | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/hwsku.json diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/hwsku.json b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/hwsku.json new file mode 100644 index 000000000000..a407ccd84052 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/hwsku.json @@ -0,0 +1,144 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x10G", + "port_type": "RJ45" + }, + "Ethernet1": { + "default_brkout_mode": "1x10G", + "port_type": "RJ45" + }, + "Ethernet2": { + "default_brkout_mode": "1x10G", + "port_type": "RJ45" + }, + "Ethernet3": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet4": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet8": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet12": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet16": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet20": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet24": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet28": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet32": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet36": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet40": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet44": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet48": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet52": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet56": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet60": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet64": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet68": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet72": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet76": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet80": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet84": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet88": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet92": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet96": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet100": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet104": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet108": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet112": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet116": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet120": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet124": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + } + } +} From 479f61404bb78074c68e737132d1067f76a39c0e Mon Sep 17 00:00:00 2001 From: richardyu Date: Tue, 31 Aug 2021 19:20:06 -0700 Subject: [PATCH 128/186] Add thrift in the docker-sonic-mgmt (#8623) Co-authored-by: richardyu-ms --- 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 23007ffb9a86..543e4df1f075 100644 --- a/dockers/docker-sonic-mgmt/Dockerfile.j2 +++ b/dockers/docker-sonic-mgmt/Dockerfile.j2 @@ -71,6 +71,7 @@ RUN pip install cffi==1.10.0 \ textfsm \ virtualenv \ retry \ + thrift==0.11.0 \ && git clone https://github.com/p4lang/scapy-vxlan.git \ && cd scapy-vxlan \ && python setup.py install \ From 4858153d25c5b263f0c97939fd98a8b81444068f Mon Sep 17 00:00:00 2001 From: SuvarnaMeenakshi <50386592+SuvarnaMeenakshi@users.noreply.github.com> Date: Tue, 31 Aug 2021 22:45:59 -0700 Subject: [PATCH 129/186] [vs][multi-asic]: Add new platforms for multi-asic vs. (#8269) Why I did it End goal: To have azure pipeline job to run multi-asic VS tests. Intermediate goal: Require multi-asic KVM image so that the test can be run. The difference between single asic and multi-asic KVM image is asic.conf file which has different NUM_ASIC values. Idea behind the approach in this PR to attain the intermediate goal above: Ease of building multi-asic KVM image so that any user or azure pipeline can use a simple make command to generate single or multi-asic KVM images as required. Use a single onie installer image and multiple KVM images for single and multi-asic images. Current scenario: For VS platform, sonic-vs.bin is generated which is the onie installer image and sonic-vs.img.gz is generated which is the KVM iamge. Scenario to be achieved: sonic-vs.bin - which will include single asic platform, 4 asic platform and 6 asic platform. sonic-vs.img.gz - single asic KVM image sonic-4asic-vs.img.gz - 4 asic KVM image sonic-6asic-vs.img.gz - 6 asic KVM image In this PR, 2 new platforms are added for 4-asic and 6-asic VS. How I did it Create 4-asic and 6-asic device directories with the required files and hwsku files. Add onie-recovery image information in vs platform. How to verify it After this PR change, no build change. sonic-vs.bin onie installer image should include information of new multi-asic vs platforms. --- .../msft_four_asic_vs/2/buffers.json.j2 | 3 - .../2/buffers_defaults_def.j2 | 45 -- .../2/buffers_defaults_t0.j2 | 45 -- .../2/buffers_defaults_t1.j2 | 45 -- .../msft_four_asic_vs/2/lanemap.ini | 8 - .../msft_four_asic_vs/2/pg_profile_lookup.ini | 17 - .../msft_four_asic_vs/2/qos.json.j2 | 1 - .../msft_four_asic_vs/2/sai.profile | 3 - .../2/td2-s6000-32x40G.config.bcm | 646 ------------------ .../msft_four_asic_vs/3/buffers.json.j2 | 3 - .../3/buffers_defaults_def.j2 | 45 -- .../3/buffers_defaults_t0.j2 | 45 -- .../3/buffers_defaults_t1.j2 | 45 -- .../msft_four_asic_vs/3/lanemap.ini | 8 - .../msft_four_asic_vs/3/pg_profile_lookup.ini | 17 - .../msft_four_asic_vs/3/qos.json.j2 | 1 - .../msft_four_asic_vs/3/sai.profile | 3 - .../3/td2-s6000-32x40G.config.bcm | 646 ------------------ .../msft_multi_asic_vs/0/buffers.json.j2 | 3 - .../0/buffers_defaults_def.j2 | 45 -- .../0/buffers_defaults_t0.j2 | 45 -- .../0/buffers_defaults_t1.j2 | 45 -- .../0/pg_profile_lookup.ini | 17 - .../msft_multi_asic_vs/0/qos.json.j2 | 1 - .../msft_multi_asic_vs/0/sai.profile | 3 - .../0/td2-s6000-32x40G.config.bcm | 646 ------------------ .../msft_multi_asic_vs/1/buffers.json.j2 | 3 - .../1/buffers_defaults_def.j2 | 45 -- .../1/buffers_defaults_t0.j2 | 45 -- .../1/buffers_defaults_t1.j2 | 45 -- .../1/pg_profile_lookup.ini | 17 - .../msft_multi_asic_vs/1/qos.json.j2 | 1 - .../msft_multi_asic_vs/1/sai.profile | 3 - .../1/td2-s6000-32x40G.config.bcm | 646 ------------------ .../msft_multi_asic_vs/2/buffers.json.j2 | 3 - .../2/buffers_defaults_def.j2 | 45 -- .../2/buffers_defaults_t0.j2 | 45 -- .../2/buffers_defaults_t1.j2 | 45 -- .../2/pg_profile_lookup.ini | 17 - .../msft_multi_asic_vs/2/qos.json.j2 | 1 - .../msft_multi_asic_vs/2/sai.profile | 3 - .../2/td2-s6000-32x40G.config.bcm | 646 ------------------ .../msft_multi_asic_vs/3/buffers.json.j2 | 3 - .../3/buffers_defaults_def.j2 | 45 -- .../3/buffers_defaults_t0.j2 | 45 -- .../3/buffers_defaults_t1.j2 | 45 -- .../3/pg_profile_lookup.ini | 17 - .../msft_multi_asic_vs/3/qos.json.j2 | 1 - .../msft_multi_asic_vs/3/sai.profile | 3 - .../3/td2-s6000-32x40G.config.bcm | 646 ------------------ .../msft_multi_asic_vs/4/buffers.json.j2 | 3 - .../4/buffers_defaults_def.j2 | 45 -- .../4/buffers_defaults_t0.j2 | 45 -- .../4/buffers_defaults_t1.j2 | 45 -- .../4/pg_profile_lookup.ini | 17 - .../msft_multi_asic_vs/4/qos.json.j2 | 1 - .../msft_multi_asic_vs/4/sai.profile | 3 - .../4/td2-s6000-32x40G.config.bcm | 646 ------------------ .../msft_multi_asic_vs/5/buffers.json.j2 | 3 - .../5/buffers_defaults_def.j2 | 45 -- .../5/buffers_defaults_t0.j2 | 45 -- .../5/buffers_defaults_t1.j2 | 45 -- .../5/pg_profile_lookup.ini | 17 - .../msft_multi_asic_vs/5/qos.json.j2 | 1 - .../msft_multi_asic_vs/5/sai.profile | 3 - .../5/td2-s6000-32x40G.config.bcm | 646 ------------------ .../x86_64-kvm_x86_64_4_asic-r0/asic.conf | 1 + .../x86_64-kvm_x86_64_4_asic-r0/default_sku | 1 + .../installer.conf | 1 + .../msft_four_asic_vs/0/buffers.json.j2 | 0 .../0/buffers_defaults_def.j2 | 0 .../0/buffers_defaults_t0.j2 | 0 .../0/buffers_defaults_t1.j2 | 0 .../msft_four_asic_vs/0/lanemap.ini | 0 .../msft_four_asic_vs/0/pg_profile_lookup.ini | 0 .../msft_four_asic_vs/0/port_config.ini | 0 .../msft_four_asic_vs/0/qos.json.j2 | 0 .../msft_four_asic_vs/0/sai.profile | 0 .../0/td2-s6000-32x40G.config.bcm | 0 .../msft_four_asic_vs/1/buffers.json.j2 | 1 + .../1/buffers_defaults_def.j2 | 1 + .../1/buffers_defaults_t0.j2 | 1 + .../1/buffers_defaults_t1.j2 | 1 + .../msft_four_asic_vs/1/lanemap.ini | 0 .../msft_four_asic_vs/1/pg_profile_lookup.ini | 1 + .../msft_four_asic_vs/1/port_config.ini | 0 .../msft_four_asic_vs/1/qos.json.j2 | 1 + .../msft_four_asic_vs/1/sai.profile | 1 + .../1/td2-s6000-32x40G.config.bcm | 1 + .../msft_four_asic_vs/2/buffers.json.j2 | 1 + .../2/buffers_defaults_def.j2 | 1 + .../2/buffers_defaults_t0.j2 | 1 + .../2/buffers_defaults_t1.j2 | 1 + .../msft_four_asic_vs/2/lanemap.ini | 4 + .../msft_four_asic_vs/2/pg_profile_lookup.ini | 1 + .../msft_four_asic_vs/2/port_config.ini | 4 - .../msft_four_asic_vs/2/qos.json.j2 | 1 + .../msft_four_asic_vs/2/sai.profile | 1 + .../2/td2-s6000-32x40G.config.bcm | 1 + .../msft_four_asic_vs/3/buffers.json.j2 | 1 + .../3/buffers_defaults_def.j2 | 1 + .../3/buffers_defaults_t0.j2 | 1 + .../3/buffers_defaults_t1.j2 | 1 + .../msft_four_asic_vs/3/lanemap.ini | 4 + .../msft_four_asic_vs/3/pg_profile_lookup.ini | 1 + .../msft_four_asic_vs/3/port_config.ini | 4 - .../msft_four_asic_vs/3/qos.json.j2 | 1 + .../msft_four_asic_vs/3/sai.profile | 1 + .../3/td2-s6000-32x40G.config.bcm | 1 + .../msft_four_asic_vs/topology.sh | 0 .../x86_64-kvm_x86_64_4_asic-r0/plugins | 1 + .../pmon_daemon_control.json | 1 + .../x86_64-kvm_x86_64_6_asic-r0/asic.conf | 1 + .../x86_64-kvm_x86_64_6_asic-r0/default_sku | 1 + .../installer.conf | 1 + .../msft_multi_asic_vs/0}/buffers.json.j2 | 0 .../0}/buffers_defaults_def.j2 | 0 .../0}/buffers_defaults_t0.j2 | 0 .../0}/buffers_defaults_t1.j2 | 0 .../msft_multi_asic_vs/0/lanemap.ini | 0 .../0}/pg_profile_lookup.ini | 0 .../msft_multi_asic_vs/0/port_config.ini | 0 .../msft_multi_asic_vs/0}/qos.json.j2 | 0 .../msft_multi_asic_vs/0}/sai.profile | 0 .../0}/td2-s6000-32x40G.config.bcm | 0 .../msft_multi_asic_vs/1/buffers.json.j2 | 1 + .../1/buffers_defaults_def.j2 | 1 + .../1/buffers_defaults_t0.j2 | 1 + .../1/buffers_defaults_t1.j2 | 1 + .../msft_multi_asic_vs/1/lanemap.ini | 0 .../1/pg_profile_lookup.ini | 1 + .../msft_multi_asic_vs/1/port_config.ini | 0 .../msft_multi_asic_vs/1/qos.json.j2 | 1 + .../msft_multi_asic_vs/1/sai.profile | 1 + .../1/td2-s6000-32x40G.config.bcm | 1 + .../msft_multi_asic_vs/2/buffers.json.j2 | 1 + .../2/buffers_defaults_def.j2 | 1 + .../2/buffers_defaults_t0.j2 | 1 + .../2/buffers_defaults_t1.j2 | 1 + .../msft_multi_asic_vs/2/lanemap.ini | 0 .../2/pg_profile_lookup.ini | 1 + .../msft_multi_asic_vs/2/port_config.ini | 0 .../msft_multi_asic_vs/2/qos.json.j2 | 1 + .../msft_multi_asic_vs/2/sai.profile | 1 + .../2/td2-s6000-32x40G.config.bcm | 1 + .../msft_multi_asic_vs/3/buffers.json.j2 | 1 + .../3/buffers_defaults_def.j2 | 1 + .../3/buffers_defaults_t0.j2 | 1 + .../3/buffers_defaults_t1.j2 | 1 + .../msft_multi_asic_vs/3/lanemap.ini | 0 .../3/pg_profile_lookup.ini | 1 + .../msft_multi_asic_vs/3/port_config.ini | 0 .../msft_multi_asic_vs/3/qos.json.j2 | 1 + .../msft_multi_asic_vs/3/sai.profile | 1 + .../3/td2-s6000-32x40G.config.bcm | 1 + .../msft_multi_asic_vs/4/buffers.json.j2 | 1 + .../4/buffers_defaults_def.j2 | 1 + .../4/buffers_defaults_t0.j2 | 1 + .../4/buffers_defaults_t1.j2 | 1 + .../msft_multi_asic_vs/4/lanemap.ini | 0 .../4/pg_profile_lookup.ini | 1 + .../msft_multi_asic_vs/4/port_config.ini | 0 .../msft_multi_asic_vs/4/qos.json.j2 | 1 + .../msft_multi_asic_vs/4/sai.profile | 1 + .../4/td2-s6000-32x40G.config.bcm | 1 + .../msft_multi_asic_vs/5/buffers.json.j2 | 1 + .../5/buffers_defaults_def.j2 | 1 + .../5/buffers_defaults_t0.j2 | 1 + .../5/buffers_defaults_t1.j2 | 1 + .../msft_multi_asic_vs/5/lanemap.ini | 0 .../5/pg_profile_lookup.ini | 1 + .../msft_multi_asic_vs/5/port_config.ini | 0 .../msft_multi_asic_vs/5/qos.json.j2 | 1 + .../msft_multi_asic_vs/5/sai.profile | 1 + .../5/td2-s6000-32x40G.config.bcm | 1 + .../msft_multi_asic_vs/topology.sh | 0 .../x86_64-kvm_x86_64_6_asic-r0/plugins | 1 + .../pmon_daemon_control.json | 1 + platform/vs/kvm-image.mk | 2 +- platform/vs/onie.mk | 8 +- 180 files changed, 90 insertions(+), 6466 deletions(-) delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/lanemap.ini delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/pg_profile_lookup.ini delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/qos.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/sai.profile delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/lanemap.ini delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/pg_profile_lookup.ini delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/qos.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/sai.profile delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_def.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t0.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t1.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/qos.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/sai.profile delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/qos.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/sai.profile delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/qos.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/sai.profile delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/qos.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/sai.profile delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/qos.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/sai.profile delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/qos.json.j2 delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/sai.profile delete mode 100644 device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm create mode 100644 device/virtual/x86_64-kvm_x86_64_4_asic-r0/asic.conf create mode 100644 device/virtual/x86_64-kvm_x86_64_4_asic-r0/default_sku create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/installer.conf rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/0/buffers.json.j2 (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/0/buffers_defaults_def.j2 (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/0/buffers_defaults_t0.j2 (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/0/buffers_defaults_t1.j2 (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/0/lanemap.ini (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/0/pg_profile_lookup.ini (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/0/port_config.ini (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/0/qos.json.j2 (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/0/sai.profile (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/0/td2-s6000-32x40G.config.bcm (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/1/lanemap.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/pg_profile_lookup.ini rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/1/port_config.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/qos.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/sai.profile create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 create mode 100644 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/lanemap.ini create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/pg_profile_lookup.ini rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/2/port_config.ini (55%) create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/qos.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/sai.profile create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 create mode 100644 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/lanemap.ini create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/pg_profile_lookup.ini rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/3/port_config.ini (55%) create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/qos.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/sai.profile create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_4_asic-r0}/msft_four_asic_vs/topology.sh (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/plugins create mode 120000 device/virtual/x86_64-kvm_x86_64_4_asic-r0/pmon_daemon_control.json create mode 100644 device/virtual/x86_64-kvm_x86_64_6_asic-r0/asic.conf create mode 100644 device/virtual/x86_64-kvm_x86_64_6_asic-r0/default_sku create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/installer.conf rename device/virtual/{x86_64-kvm_x86_64-r0/msft_four_asic_vs/1 => x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0}/buffers.json.j2 (100%) rename device/virtual/{x86_64-kvm_x86_64-r0/msft_four_asic_vs/1 => x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0}/buffers_defaults_def.j2 (100%) rename device/virtual/{x86_64-kvm_x86_64-r0/msft_four_asic_vs/1 => x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0}/buffers_defaults_t0.j2 (100%) rename device/virtual/{x86_64-kvm_x86_64-r0/msft_four_asic_vs/1 => x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0}/buffers_defaults_t1.j2 (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/0/lanemap.ini (100%) rename device/virtual/{x86_64-kvm_x86_64-r0/msft_four_asic_vs/1 => x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0}/pg_profile_lookup.ini (100%) rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/0/port_config.ini (100%) rename device/virtual/{x86_64-kvm_x86_64-r0/msft_four_asic_vs/1 => x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0}/qos.json.j2 (100%) rename device/virtual/{x86_64-kvm_x86_64-r0/msft_four_asic_vs/1 => x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0}/sai.profile (100%) rename device/virtual/{x86_64-kvm_x86_64-r0/msft_four_asic_vs/1 => x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0}/td2-s6000-32x40G.config.bcm (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/1/lanemap.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/1/port_config.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/qos.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/sai.profile create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/2/lanemap.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/2/port_config.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/qos.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/sai.profile create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/3/lanemap.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/3/port_config.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/qos.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/sai.profile create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/4/lanemap.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/4/port_config.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/qos.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/sai.profile create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/5/lanemap.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/5/port_config.ini (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/qos.json.j2 create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/sai.profile create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm rename device/virtual/{x86_64-kvm_x86_64-r0 => x86_64-kvm_x86_64_6_asic-r0}/msft_multi_asic_vs/topology.sh (100%) create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/plugins create mode 120000 device/virtual/x86_64-kvm_x86_64_6_asic-r0/pmon_daemon_control.json diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_def.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t0.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/lanemap.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/lanemap.ini deleted file mode 100644 index d2b9e31ecadb..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/lanemap.ini +++ /dev/null @@ -1,8 +0,0 @@ -eth1:1,2,3,4 -eth2:5,6,7,8 -eth3:9,10,11,12 -eth4:13,14,15,16 -eth5:17,18,19,20 -eth6:21,22,23,24 -eth7:25,26,27,28 -eth8:29,30,31,32 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_def.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t0.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/lanemap.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/lanemap.ini deleted file mode 100644 index d2b9e31ecadb..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/lanemap.ini +++ /dev/null @@ -1,8 +0,0 @@ -eth1:1,2,3,4 -eth2:5,6,7,8 -eth3:9,10,11,12 -eth4:13,14,15,16 -eth5:17,18,19,20 -eth6:21,22,23,24 -eth7:25,26,27,28 -eth8:29,30,31,32 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_def.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t0.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_def.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t0.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_def.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t0.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_def.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t0.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_def.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t0.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_def.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t0.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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/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":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/asic.conf b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/asic.conf new file mode 100644 index 000000000000..3e0fdee25c25 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/asic.conf @@ -0,0 +1 @@ +NUM_ASIC=4 diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/default_sku b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/default_sku new file mode 100644 index 000000000000..c6e0315d7d45 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/default_sku @@ -0,0 +1 @@ +msft_four_asic_vs diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/installer.conf b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/installer.conf new file mode 120000 index 000000000000..dd822dfbf819 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/installer.conf @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/installer.conf \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers.json.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers.json.j2 rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers.json.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_def.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_def.j2 rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_def.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_t0.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_t0.j2 rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_t0.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_t1.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_t1.j2 rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_t1.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/pg_profile_lookup.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/pg_profile_lookup.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/pg_profile_lookup.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/port_config.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/qos.json.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/qos.json.j2 rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/qos.json.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/sai.profile b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/sai.profile similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/sai.profile rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/sai.profile diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/td2-s6000-32x40G.config.bcm similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/td2-s6000-32x40G.config.bcm rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/td2-s6000-32x40G.config.bcm diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/port_config.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/sai.profile b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/lanemap.ini new file mode 100644 index 000000000000..5492bd915860 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/lanemap.ini @@ -0,0 +1,4 @@ +eth1:1,2,3,4 +eth2:5,6,7,8 +eth3:9,10,11,12 +eth4:13,14,15,16 diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/port_config.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/port_config.ini similarity index 55% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/port_config.ini index a4361c7b78d6..11dfe6e0e06c 100644 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/port_config.ini +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/port_config.ini @@ -3,7 +3,3 @@ Ethernet-BP32 1,2,3,4 Eth0-ASIC2 8 Eth0-ASIC2 Int Ethernet-BP36 5,6,7,8 Eth1-ASIC2 9 Eth1-ASIC2 Int Ethernet-BP40 9,10,11,12 Eth2-ASIC2 10 Eth2-ASIC2 Int Ethernet-BP44 13,14,15,16 Eth3-ASIC2 11 Eth3-ASIC2 Int -Ethernet-BP48 17,18,19,20 Eth4-ASIC2 12 Eth4-ASIC2 Int -Ethernet-BP52 21,22,23,24 Eth5-ASIC2 13 Eth5-ASIC2 Int -Ethernet-BP56 25,26,27,28 Eth6-ASIC2 14 Eth6-ASIC2 Int -Ethernet-BP60 29,30,31,32 Eth7-ASIC2 15 Eth7-ASIC2 Int diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/sai.profile b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/lanemap.ini new file mode 100644 index 000000000000..5492bd915860 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/lanemap.ini @@ -0,0 +1,4 @@ +eth1:1,2,3,4 +eth2:5,6,7,8 +eth3:9,10,11,12 +eth4:13,14,15,16 diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/port_config.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/port_config.ini similarity index 55% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/port_config.ini index e97ded4527b3..32f55b2a1988 100644 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/port_config.ini +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/port_config.ini @@ -3,7 +3,3 @@ Ethernet-BP64 1,2,3,4 Eth0-ASIC3 16 Eth0-ASIC3 Ethernet-BP68 5,6,7,8 Eth1-ASIC3 17 Eth1-ASIC3 Int Ethernet-BP72 9,10,11,12 Eth2-ASIC3 18 Eth2-ASIC3 Int Ethernet-BP76 13,14,15,16 Eth3-ASIC3 19 Eth3-ASIC3 Int -Ethernet-BP80 17,18,19,20 Eth4-ASIC3 20 Eth4-ASIC3 Int -Ethernet-BP84 21,22,23,24 Eth5-ASIC3 21 Eth5-ASIC3 Int -Ethernet-BP92 25,26,27,28 Eth6-ASIC3 22 Eth6-ASIC3 Int -Ethernet-BP96 29,30,31,32 Eth7-ASIC3 23 Eth7-ASIC3 Int diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/sai.profile b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/topology.sh b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/topology.sh similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/topology.sh rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/topology.sh diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/plugins b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/plugins new file mode 120000 index 000000000000..29725a9aa071 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/plugins @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/plugins/ \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/pmon_daemon_control.json b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/pmon_daemon_control.json new file mode 120000 index 000000000000..5a0bb045d20d --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/pmon_daemon_control.json @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/pmon_daemon_control.json \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/asic.conf b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/asic.conf new file mode 100644 index 000000000000..8a4f716dde7a --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/asic.conf @@ -0,0 +1 @@ +NUM_ASIC=6 diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/default_sku b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/default_sku new file mode 100644 index 000000000000..fc43568478ae --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/default_sku @@ -0,0 +1 @@ +msft_multi_asic_vs diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/installer.conf b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/installer.conf new file mode 120000 index 000000000000..dd822dfbf819 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/installer.conf @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/installer.conf \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers.json.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers.json.j2 rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers.json.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_def.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_def.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_t0.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_t0.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_t1.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_t1.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/pg_profile_lookup.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/qos.json.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/qos.json.j2 rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/qos.json.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/sai.profile similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/sai.profile rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/sai.profile diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/topology.sh b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/topology.sh similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/topology.sh rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/topology.sh diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/plugins b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/plugins new file mode 120000 index 000000000000..29725a9aa071 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/plugins @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/plugins/ \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/pmon_daemon_control.json b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/pmon_daemon_control.json new file mode 120000 index 000000000000..5a0bb045d20d --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/pmon_daemon_control.json @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/pmon_daemon_control.json \ No newline at end of file diff --git a/platform/vs/kvm-image.mk b/platform/vs/kvm-image.mk index 439a6fc1e418..911b7e9a86be 100644 --- a/platform/vs/kvm-image.mk +++ b/platform/vs/kvm-image.mk @@ -10,5 +10,5 @@ $(SONIC_KVM_IMAGE)_DOCKERS += $(filter-out $(patsubst %-$(DBG_IMAGE_MARK).gz,%.g else $(SONIC_KVM_IMAGE)_DOCKERS = $(SONIC_INSTALL_DOCKER_IMAGES) endif -$(SONIC_KVM_IMAGE)_FILES = $(ONIE_RECOVERY_IMAGE) +$(SONIC_KVM_IMAGE)_FILES = $(ONIE_RECOVERY_IMAGE) $(ONIE_RECOVERY_KVM_4ASIC_IMAGE) $(ONIE_RECOVERY_KVM_6ASIC_IMAGE) SONIC_INSTALLERS += $(SONIC_KVM_IMAGE) diff --git a/platform/vs/onie.mk b/platform/vs/onie.mk index 09a807c25b2a..c64a09b8861b 100644 --- a/platform/vs/onie.mk +++ b/platform/vs/onie.mk @@ -1,4 +1,10 @@ ONIE_RECOVERY_IMAGE = onie-recovery-x86_64-kvm_x86_64-r0.iso $(ONIE_RECOVERY_IMAGE)_URL = "https://sonicstorage.blob.core.windows.net/packages/onie/onie-recovery-x86_64-kvm_x86_64-r0.iso?sv=2015-04-05&sr=b&sig=XMAk1cttBFM369CMbihe5oZgXwe4uaDVfwg4CTLT%2F5U%3D&se=2155-10-13T10%3A40%3A13Z&sp=r" -SONIC_ONLINE_FILES += $(ONIE_RECOVERY_IMAGE) +ONIE_RECOVERY_KVM_4ASIC_IMAGE = onie-recovery-x86_64-kvm_x86_64_4_asic-r0.iso +$(ONIE_RECOVERY_KVM_4ASIC_IMAGE)_URL = "https://sonicstorage.blob.core.windows.net/packages/onie/onie-recovery-x86_64-kvm_x86_64_4_asic-r0.iso?sv=2020-04-08&st=2021-08-27T22%3A41%3A07Z&se=2030-08-28T22%3A41%3A00Z&sr=b&sp=r&sig=zyaX7rHnE5jXldpgrnWq1nvsfmMTrVCSuESZqrIxDLc%3D" + +ONIE_RECOVERY_KVM_6ASIC_IMAGE = onie-recovery-x86_64-kvm_x86_64_6_asic-r0.iso +$(ONIE_RECOVERY_KVM_6ASIC_IMAGE)_URL = "https://sonicstorage.blob.core.windows.net/packages/onie/onie-recovery-x86_64-kvm_x86_64_6_asic-r0.iso?sv=2020-04-08&st=2021-08-27T22%3A42%3A24Z&se=2030-08-28T22%3A42%3A00Z&sr=b&sp=r&sig=RqbtHJt8Hvy7j78jt3TgXo27T7zjdUDfSxqmOID1YUU%3D" + +SONIC_ONLINE_FILES += $(ONIE_RECOVERY_IMAGE) $(ONIE_RECOVERY_KVM_4ASIC_IMAGE) $(ONIE_RECOVERY_KVM_6ASIC_IMAGE) From 661df5106a37e44c80bd32b95aa3b8997c2f1543 Mon Sep 17 00:00:00 2001 From: Junhua Zhai Date: Wed, 1 Sep 2021 01:51:04 -0700 Subject: [PATCH 130/186] [gearbox] Update gearbox_config.json for platform vs (#8641) Add "context_id" and "hwinfo" fields for PHY object, which are must-have of attribute sanity check in swss GearboxParser. --- .../x86_64-kvm_x86_64-r0/brcm_gearbox_vs/gearbox_config.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/gearbox_config.json b/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/gearbox_config.json index 2de95c4d806d..f40be4f3eb62 100644 --- a/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/gearbox_config.json +++ b/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/gearbox_config.json @@ -9,7 +9,9 @@ "config_file": "/usr/share/sonic/hwsku/phy1_config_1.json", "sai_init_config_file": "/usr/share/sonic/hwsku/sesto-1.bcm", "phy_access": "mdio", - "bus_id": 0 + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio0_0_0/0" } ], "interfaces": [ From 2e4f47323730c3a7fd890d276922ae18d03ee36e Mon Sep 17 00:00:00 2001 From: Samuel Angebault Date: Wed, 1 Sep 2021 01:52:57 -0700 Subject: [PATCH 131/186] [Arista] Update platform library submodules (#8594) - Disable health monitoring of `psu.voltage` until support is implemented - chassis: disable provisioning bit once linecard has booted - chassis: fix issue in `show version` when running as `admin` - chassis: fix race when reading an eeprom before it's available - chassis: implement `get_all_asics` call - api: fix `ChassisBase.get_system_eeprom_info` implementation - api: add missing thermal condition and info - api: fix return value of `ChassisBase.set_status_led` - sfp: introduce SfpOptoeBase implementation used based on configuration knob - psu: rely on pmbus to read input/output status when other mechanism is missing - misc: other refactors and improvements --- .../x86_64-arista_common/system_health_monitoring_config.json | 1 + platform/barefoot/sonic-platform-modules-arista | 2 +- platform/broadcom/sonic-platform-modules-arista | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/device/arista/x86_64-arista_common/system_health_monitoring_config.json b/device/arista/x86_64-arista_common/system_health_monitoring_config.json index 5ceec23fd26f..3f7e937d032a 100644 --- a/device/arista/x86_64-arista_common/system_health_monitoring_config.json +++ b/device/arista/x86_64-arista_common/system_health_monitoring_config.json @@ -3,6 +3,7 @@ "devices_to_ignore": [ "asic", "psu.temperature", + "psu.voltage", "PSU2 Fan", "PSU1 Fan" ], diff --git a/platform/barefoot/sonic-platform-modules-arista b/platform/barefoot/sonic-platform-modules-arista index 6e8ccd3379d5..89018d062319 160000 --- a/platform/barefoot/sonic-platform-modules-arista +++ b/platform/barefoot/sonic-platform-modules-arista @@ -1 +1 @@ -Subproject commit 6e8ccd3379d5e89f4e80b11391818e648d928d94 +Subproject commit 89018d0623191ecd477c869339ca795f91f6c68c diff --git a/platform/broadcom/sonic-platform-modules-arista b/platform/broadcom/sonic-platform-modules-arista index 6e8ccd3379d5..89018d062319 160000 --- a/platform/broadcom/sonic-platform-modules-arista +++ b/platform/broadcom/sonic-platform-modules-arista @@ -1 +1 @@ -Subproject commit 6e8ccd3379d5e89f4e80b11391818e648d928d94 +Subproject commit 89018d0623191ecd477c869339ca795f91f6c68c From 0ab28bfd3d9d6b2618fb9ecf94989e2d76fcfabf Mon Sep 17 00:00:00 2001 From: Myron Sosyak Date: Wed, 1 Sep 2021 06:10:14 -0700 Subject: [PATCH 132/186] Add thrift 0.13.0 (#8307) #### Why I did it To bump thrift version to 0.13.0, to fix some dependencies issues. #### How I did it As there are dependencies between thrift and saithrinft server (https://github.com/opencomputeproject/SAI/tree/bf3630316cbef484e1015478b5746067bac4e2b8/test/saithrift) which is used by syncd-rpc to update thrift version, I also need to make changes in saithrinft server, and then SAI ref point should be updated in sairedis, and then sairedis ref point should be updated too. It is too many change, so I decided to add thrift 0.13.0 as separeate target to be able to work and test father changes in saithrinft and one when appropriate changes will be merged to SAI and ref points will be updated I will squash this and the old thrift target. I was not able to build thrift deb pkg by original rules, so I copied `debian `folder from the old version and tune it for newer one. #### How to verify it ``` make init make configure PLATFORM=vs make target/debs/buster/libthrift_0.13.0_amd64.deb ``` ``` --- rules/thrift_0_13_0.dep | 8 ++ rules/thrift_0_13_0.mk | 17 ++++ src/thrift_0_13_0/.gitignore | 1 + src/thrift_0_13_0/Makefile | 32 +++++++ .../patch/0001-Remove-unneeded-packages.patch | 85 +++++++++++++++++++ 5 files changed, 143 insertions(+) create mode 100644 rules/thrift_0_13_0.dep create mode 100644 rules/thrift_0_13_0.mk create mode 100644 src/thrift_0_13_0/.gitignore create mode 100644 src/thrift_0_13_0/Makefile create mode 100644 src/thrift_0_13_0/patch/0001-Remove-unneeded-packages.patch diff --git a/rules/thrift_0_13_0.dep b/rules/thrift_0_13_0.dep new file mode 100644 index 000000000000..52d8b6a525f9 --- /dev/null +++ b/rules/thrift_0_13_0.dep @@ -0,0 +1,8 @@ +SPATH := $($(LIBTHRIFT_0_13_0)_SRC_PATH) +DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/thrift_0_13_0.mk rules/thrift_0_13_0.dep +DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) +DEP_FILES += $(shell git ls-files $(SPATH)) + +$(LIBTHRIFT_0_13_0)_CACHE_MODE := GIT_CONTENT_SHA +$(LIBTHRIFT_0_13_0)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) +$(LIBTHRIFT_0_13_0)_DEP_FILES := $(DEP_FILES) diff --git a/rules/thrift_0_13_0.mk b/rules/thrift_0_13_0.mk new file mode 100644 index 000000000000..9da97849809f --- /dev/null +++ b/rules/thrift_0_13_0.mk @@ -0,0 +1,17 @@ +# thrift package + +THRIFT_VERSION_0_13_0 = 0.13.0 +THRIFT_VERSION_0_13_0_FULL = $(THRIFT_VERSION_0_13_0)-6 + +LIBTHRIFT_0_13_0 = libthrift-$(THRIFT_VERSION_0_13_0)_$(THRIFT_VERSION_0_13_0_FULL)_$(CONFIGURED_ARCH).deb +$(LIBTHRIFT_0_13_0)_SRC_PATH = $(SRC_PATH)/thrift_0_13_0 +SONIC_MAKE_DEBS += $(LIBTHRIFT_0_13_0) + +LIBTHRIFT_DEV_0_13_0 = libthrift-dev_$(THRIFT_VERSION_0_13_0_FULL)_$(CONFIGURED_ARCH).deb +$(eval $(call add_derived_package,$(LIBTHRIFT_0_13_0),$(LIBTHRIFT_DEV_0_13_0))) + +PYTHON3_THRIFT_0_13_0 = python3-thrift_$(THRIFT_VERSION_0_13_0_FULL)_$(CONFIGURED_ARCH).deb +$(eval $(call add_derived_package,$(LIBTHRIFT_0_13_0),$(PYTHON_THRIFT_0_13_0))) + +THRIFT_COMPILER_0_13_0 = thrift-compiler_$(THRIFT_VERSION_0_13_0_FULL)_$(CONFIGURED_ARCH).deb +$(eval $(call add_derived_package,$(LIBTHRIFT_0_13_0),$(THRIFT_COMPILER_0_13_0))) diff --git a/src/thrift_0_13_0/.gitignore b/src/thrift_0_13_0/.gitignore new file mode 100644 index 000000000000..dc29c1367931 --- /dev/null +++ b/src/thrift_0_13_0/.gitignore @@ -0,0 +1 @@ +thrift* \ No newline at end of file diff --git a/src/thrift_0_13_0/Makefile b/src/thrift_0_13_0/Makefile new file mode 100644 index 000000000000..55cb4d9212ef --- /dev/null +++ b/src/thrift_0_13_0/Makefile @@ -0,0 +1,32 @@ +SHELL = /bin/bash +.ONESHELL: +.SHELLFLAGS += -e -x + +THRIFT_VERSION = 0.13.0 +THRIFT_VERSION_FULL = $(THRIFT_VERSION)-6 + +MAIN_TARGET = libthrift-$(THRIFT_VERSION)_$(THRIFT_VERSION_FULL)_$(CONFIGURED_ARCH).deb +DERIVED_TARGETS = libthrift-dev_$(THRIFT_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + python3-thrift_$(THRIFT_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + thrift-compiler_$(THRIFT_VERSION_FULL)_$(CONFIGURED_ARCH).deb + +THRIFT_LINK_PRE = http://deb.debian.org/debian/pool/main/t/thrift/ + +$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : + rm -rf thrift-$(THRIFT_VERSION) + + wget -O "thrift_$(THRIFT_VERSION_FULL).debian.tar.xz" "$(THRIFT_LINK_PRE)/thrift_$(THRIFT_VERSION_FULL).debian.tar.xz" + wget -O "thrift_$(THRIFT_VERSION).orig.tar.gz" "$(THRIFT_LINK_PRE)/thrift_$(THRIFT_VERSION).orig.tar.gz" + wget -O "thrift_$(THRIFT_VERSION_FULL).dsc" "$(THRIFT_LINK_PRE)/thrift_$(THRIFT_VERSION_FULL).dsc" + + dpkg-source -x thrift_$(THRIFT_VERSION_FULL).dsc + pushd thrift-$(THRIFT_VERSION) + + # Disable php perl and few other packages as they need additional packages to be installed + patch -p1 < ../patch/0001-Remove-unneeded-packages.patch + DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -d -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $(SONIC_DPKG_ADMINDIR) + popd + + mv $(DERIVED_TARGETS) $* $(DEST)/ + +$(addprefix $(DEST)/, $(DERIVED_TARGETS)): $(DEST)/% : $(DEST)/$(MAIN_TARGET) diff --git a/src/thrift_0_13_0/patch/0001-Remove-unneeded-packages.patch b/src/thrift_0_13_0/patch/0001-Remove-unneeded-packages.patch new file mode 100644 index 000000000000..f1565408a722 --- /dev/null +++ b/src/thrift_0_13_0/patch/0001-Remove-unneeded-packages.patch @@ -0,0 +1,85 @@ +From 7a8d588fa0425550cfd42c3300c8c0a643137190 Mon Sep 17 00:00:00 2001 +From: Myron Sosyak +Date: Fri, 13 Aug 2021 11:26:13 +0000 +Subject: [PATCH] Remove-unneeded-packages + +--- + debian/control | 28 ---------------------------- + debian/rules | 7 +++---- + 2 files changed, 3 insertions(+), 32 deletions(-) + +diff --git a/debian/control b/debian/control +index 5126e47..3f3028c 100644 +--- a/debian/control ++++ b/debian/control +@@ -13,8 +13,6 @@ Build-Depends: debhelper-compat (= 11), dh-python, + python3-all-dev, + python3-six, + golang-go, golang-github-golang-mock-dev, +- pkg-php-tools (>= 1.14~), php-dev, phpunit, php-codesniffer, +- perl (>= 5.22), libbit-vector-perl, libclass-accessor-perl, + # openjdk-11-jdk, javahelper, maven-debian-helper (>= 1.5), ant (>= 1.7), ant-optional, + # libhttpclient-java, libslf4j-java, libservlet3.1-java (>= 8), + # nodejs, npm, +@@ -175,32 +173,6 @@ Description: Python library for Thrift (debug symbols) + # . + # This package contains Javadoc HTML documentation for libthrift-java . + # +-Package: php-thrift +-Architecture: any +-Section: php +-Depends: ${phpcomposer:Debian-require}, ${shlibs:Depends}, ${misc:Depends} +-Provides: ${php:Provides} +-Conflicts: php7.0-thrift, php7.2-thrift +-Replaces: php7.0-thrift, php7.2-thrift +-Description: PHP language support for Thrift +- Thrift is a software framework for the development of reliable and +- performant communication and data serialization. It combines a software +- stack with code generation to build services that operate seamlessly +- across a number of different development languages. +- . +- This package provides the PHP5 language support for Thrift. +- +-Package: libthrift-perl +-Section: perl +-Architecture: all +-Depends: ${perl:Depends}, ${misc:Depends} +-Description: Perl language support for Thrift +- Thrift is a software framework for the development of reliable and +- performant communication and data serialization. It combines a software +- stack with code generation to build services that operate seamlessly +- across a number of different development languages. +- . +- This package provides the Perl language support for Thrift. + + Package: golang-thrift-dev + Architecture: amd64 arm64 armel armhf i386 ppc64el +diff --git a/debian/rules b/debian/rules +index ba63e6f..8217796 100755 +--- a/debian/rules ++++ b/debian/rules +@@ -47,7 +47,6 @@ override_dh_auto_clean: + $(CURDIR)/lib/go/test/gopath/src/golang.org/x/net \ + $(CURDIR)/lib/go/test/gopath/src/github.com/golang/mock + [ ! -f Makefile ] || $(MAKE) clean +- cd $(CURDIR)/lib/php/src/ext/thrift_protocol/ && phpize --clean + find $(CURDIR) \( -name Makefile -o -name Makefile.in \) -exec rm {} \; + find $(CURDIR) -name .dirstamp -exec rm {} \; + $(RM) aclocal.m4 config.h config.log config.status configure \ +@@ -65,10 +64,10 @@ override_dh_auto_clean: + + override_dh_auto_configure: + dh_auto_configure -- \ +- --with-cpp --with-c_glib --with-php --with-php_extension \ +- --with-perl --without-python --with-py3 --without-java \ ++ --with-cpp --with-c_glib --without-php --without-php_extension \ ++ --without-perl --without-python --with-py3 --without-java \ + --without-nodejs --without-erlang --without-lua \ +- --with-go --with-ruby \ ++ --without-go --without-ruby \ + --with-qt4=no --with-qt5=yes \ + --without-rust \ + --disable-tutorial +-- +2.17.1 + From 3fa8c2595f875666c6fc0d1b84f6fd4082d1b447 Mon Sep 17 00:00:00 2001 From: Mohamed Ghoneim Date: Wed, 1 Sep 2021 07:29:17 -0700 Subject: [PATCH 133/186] [yang-models] Removing sonic-acl import from sonic-nat.yang (#8632) #### Why I did it Fixing issue [[sonic-utilities] Unit test failed when building sonic-utilities #1761](https://github.com/Azure/sonic-utilities/issues/1761) Importing `sonic-acl` caused getting references by `backlinks()` to break, #### How I did it solution is to comment out the importing statement as it is not used anyway. #### How to verify it Ran sonic-utilities unit-tests locally after the fix, and all passed. --- src/sonic-yang-models/yang-models/sonic-nat.yang | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/sonic-yang-models/yang-models/sonic-nat.yang b/src/sonic-yang-models/yang-models/sonic-nat.yang index 03e12c2301a3..d01a1a9617f4 100644 --- a/src/sonic-yang-models/yang-models/sonic-nat.yang +++ b/src/sonic-yang-models/yang-models/sonic-nat.yang @@ -7,9 +7,10 @@ module sonic-nat { prefix inet; } - import sonic-acl { - prefix sacl; - } + // Comment sonic-acl import here until libyang back-links issue is resolved for ACL_TABLE leaf reference. + // import sonic-acl { + // prefix sacl; + // } import sonic-types { prefix stypes; From 1646678fb844fffd46ffde40652a615492fb5bab Mon Sep 17 00:00:00 2001 From: SuvarnaMeenakshi <50386592+SuvarnaMeenakshi@users.noreply.github.com> Date: Wed, 1 Sep 2021 17:28:13 -0700 Subject: [PATCH 134/186] [vs][multi-asic]: Add support to build multi-asic vs images (#8270) Why I did it Pre-requisite: #8269 To be able to generate multi-asic KVM image. To provide flexibility to generate single asic or both single and multi-asic images. How I did it Add a new build param, BUILD_MULTIASIC_KVM, if set to "y", the multi-asic VS target KVM images will be generated. If not, only single asic VS image will be generated. Make changes to build_image.sh to generate 4-asic and 6-asic KVM images if BUILD_MULTIASIC_KVM parameter is set to y How to verify it Generate single-asic VS as currently done, no change in build steps: make configure PLATFORM=vs make target/sonic-vs.img.gz - will generate only single asic KVM image. make BUILD_MULTIASIC_KVM=y target/sonic-vs.img.gz - will generate single asic and multi-asic KVM images. should generate: sonic-vs.bin sonic-vs.img.gz sonic-4asic-vs.img.gz sonic-6asic-vs.img.gz --- Makefile.work | 1 + build_image.sh | 71 +++++++++++++++++++++++++++++++++---------------- onie-image.conf | 6 +++++ rules/config | 3 +++ slave.mk | 9 +++++++ 5 files changed, 67 insertions(+), 23 deletions(-) diff --git a/Makefile.work b/Makefile.work index cfcf803329ab..7716baf60b67 100644 --- a/Makefile.work +++ b/Makefile.work @@ -280,6 +280,7 @@ SONIC_BUILD_INSTRUCTION := make \ SONIC_ENABLE_IMAGE_SIGNATURE=$(ENABLE_IMAGE_SIGNATURE) \ ENABLE_HOST_SERVICE_ON_START=$(ENABLE_HOST_SERVICE_ON_START) \ SLAVE_DIR=$(SLAVE_DIR) \ + BUILD_MULTIASIC_KVM=$(BUILD_MULTIASIC_KVM) \ $(SONIC_OVERRIDE_BUILD_VARS) .PHONY: sonic-slave-build sonic-slave-bash init reset diff --git a/build_image.sh b/build_image.sh index 5353e85ab2f3..8ad484cdba39 100755 --- a/build_image.sh +++ b/build_image.sh @@ -25,6 +25,47 @@ fi IMAGE_VERSION="${SONIC_IMAGE_VERSION}" +generate_kvm_image() +{ + NUM_ASIC=$1 + if [ $NUM_ASIC == 4 ]; then + KVM_IMAGE=$OUTPUT_KVM_4ASIC_IMAGE + RECOVERY_ISO=$onie_recovery_kvm_4asic_image + elif [ $NUM_ASIC == 6 ]; then + KVM_IMAGE=$OUTPUT_KVM_6ASIC_IMAGE + RECOVERY_ISO=$onie_recovery_kvm_6asic_image + else + KVM_IMAGE=$OUTPUT_KVM_IMAGE + RECOVERY_ISO=$onie_recovery_image + NUM_ASIC=1 + fi + + echo "Build $NUM_ASIC-asic KVM image" + KVM_IMAGE_DISK=${KVM_IMAGE%.gz} + sudo rm -f $KVM_IMAGE_DISK $KVM_IMAGE_DISK.gz + + SONIC_USERNAME=$USERNAME PASSWD=$PASSWORD sudo -E ./scripts/build_kvm_image.sh $KVM_IMAGE_DISK $RECOVERY_ISO $OUTPUT_ONIE_IMAGE $KVM_IMAGE_DISK_SIZE + + if [ $? -ne 0 ]; then + echo "Error : build kvm image failed" + exit 1 + fi + + [ -r $KVM_IMAGE_DISK ] || { + echo "Error : $KVM_IMAGE_DISK not generated!" + exit 1 + } + + gzip $KVM_IMAGE_DISK + + [ -r $KVM_IMAGE_DISK.gz ] || { + echo "Error : gzip $KVM_IMAGE_DISK failed!" + exit 1 + } + + echo "The compressed kvm image is in $KVM_IMAGE_DISK.gz" +} + generate_onie_installer_image() { # Copy platform-specific ONIE installer config files where onie-mk-demo.sh expects them @@ -93,32 +134,16 @@ elif [ "$IMAGE_TYPE" = "raw" ]; then elif [ "$IMAGE_TYPE" = "kvm" ]; then - echo "Build KVM image" - KVM_IMAGE_DISK=${OUTPUT_KVM_IMAGE%.gz} - sudo rm -f $KVM_IMAGE_DISK $KVM_IMAGE_DISK.gz - generate_onie_installer_image - - SONIC_USERNAME=$USERNAME PASSWD=$PASSWORD sudo -E ./scripts/build_kvm_image.sh $KVM_IMAGE_DISK $onie_recovery_image $OUTPUT_ONIE_IMAGE $KVM_IMAGE_DISK_SIZE - - if [ $? -ne 0 ]; then - echo "Error : build kvm image failed" - exit 1 + # Generate single asic KVM image + generate_kvm_image + if [ "$BUILD_MULTIASIC_KVM" == "y" ]; then + # Genrate 4-asic KVM image + generate_kvm_image 4 + # Generate 6-asic KVM image + generate_kvm_image 6 fi - [ -r $KVM_IMAGE_DISK ] || { - echo "Error : $KVM_IMAGE_DISK not generated!" - exit 1 - } - - gzip $KVM_IMAGE_DISK - - [ -r $KVM_IMAGE_DISK.gz ] || { - echo "Error : gzip $KVM_IMAGE_DISK failed!" - exit 1 - } - - echo "The compressed kvm image is in $KVM_IMAGE_DISK.gz" ## Use 'aboot' as target machine category which includes Aboot as bootloader elif [ "$IMAGE_TYPE" = "aboot" ]; then diff --git a/onie-image.conf b/onie-image.conf index 5d32226371fd..73deded2027e 100644 --- a/onie-image.conf +++ b/onie-image.conf @@ -50,3 +50,9 @@ OUTPUT_ABOOT_IMAGE=target/sonic-aboot-$TARGET_MACHINE.swi ## Aboot boot image name ABOOT_BOOT_IMAGE=.sonic-boot.swi + +## Output file name for 4-asic kvm image +OUTPUT_KVM_4ASIC_IMAGE=target/sonic-4asic-$TARGET_MACHINE.img + +### Output file name for 6-asic kvm image +OUTPUT_KVM_6ASIC_IMAGE=target/sonic-6asic-$TARGET_MACHINE.img diff --git a/rules/config b/rules/config index 9c77aee1f0c0..6171894cff7d 100644 --- a/rules/config +++ b/rules/config @@ -196,3 +196,6 @@ SONIC_VERSION_CONTROL_COMPONENTS ?= none # Set the env variable ENABLE_DOCKER_BASE_PULL = y to enable pulling sonic-slave docker from registry REGISTRY_PORT ?= 443 REGISTRY_SERVER ?= sonicdev-microsoft.azurecr.io + +# BUILD_MULTIASIC_KVM - if set to y multi-asic KVM images will be generated. +BUILD_MULTIASIC_KVM = n diff --git a/slave.mk b/slave.mk index 8417d7aa47da..9e4bf532bfda 100644 --- a/slave.mk +++ b/slave.mk @@ -218,6 +218,10 @@ endif MAKEFLAGS += -j $(SONIC_BUILD_JOBS) export SONIC_CONFIG_MAKE_JOBS +ifeq ($(CONFIGURED_PLATFORM),vs) +export BUILD_MULTIASIC_KVM=$(BUILD_MULTIASIC_KVM) +endif + ############################################################################### ## Routing stack related exports ############################################################################### @@ -281,6 +285,9 @@ $(info "TELEMETRY_WRITABLE" : "$(TELEMETRY_WRITABLE)") $(info "PDDF_SUPPORT" : "$(PDDF_SUPPORT)") $(info "MULTIARCH_QEMU_ENVIRON" : "$(MULTIARCH_QEMU_ENVIRON)") $(info "SONIC_VERSION_CONTROL_COMPONENTS": "$(SONIC_VERSION_CONTROL_COMPONENTS)") +ifeq ($(CONFIGURED_PLATFORM),vs) +$(info "BUILD_MULTIASIC_KVM" : "$(BUILD_MULTIASIC_KVM)") +endif $(info ) else $(info SONiC Build System for $(CONFIGURED_PLATFORM):$(CONFIGURED_ARCH)) @@ -933,6 +940,8 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ export initramfs_tools="$(IMAGE_DISTRO_DEBS_PATH)/$(INITRAMFS_TOOLS)" export linux_kernel="$(IMAGE_DISTRO_DEBS_PATH)/$(LINUX_KERNEL)" export onie_recovery_image="$(FILES_PATH)/$(ONIE_RECOVERY_IMAGE)" + export onie_recovery_kvm_4asic_image="$(FILES_PATH)/$(ONIE_RECOVERY_KVM_4ASIC_IMAGE)" + export onie_recovery_kvm_6asic_image="$(FILES_PATH)/$(ONIE_RECOVERY_KVM_4ASIC_IMAGE)" export kversion="$(KVERSION)" export image_type="$($*_IMAGE_TYPE)" export sonicadmin_user="$(USERNAME)" From b7cad1c56908460bac14174f4b3cfb0c0cc2e47e Mon Sep 17 00:00:00 2001 From: Nazarii Hnydyn Date: Thu, 2 Sep 2021 05:11:17 +0300 Subject: [PATCH 135/186] [submodule]: Advance sonic-utilities (#8653) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commits on Aug 25, 2021 [show][config] cli refactor for muxcable with abstract class implemen… 37039f5 [voq][chassis] VOQ cli show commands implementation (#1689) 7ebb2f7 [PBH] CLI for Policy Based Hashing (#1701) 6fd0675 Commits on Aug 26, 2021 [config reload] Call systemctl reset-failed for snmp,telemetry,mgmt-f… f5ce87a Commits on Aug 27, 2021 Fix logic in RIF counters print (#1732) 83309c6 Commits on Aug 30, 2021 [ecnconfig] Fix exception seen during display and add unit tests (#1784) 3e8626e Commits on Aug 31, 2021 [debug dump util] Module implementation Logic and Port Module (#1667) 720b650 --- src/sonic-utilities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-utilities b/src/sonic-utilities index e12c1c82c26b..720b650f8eff 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit e12c1c82c26bc67f887c4324066af002b30119ad +Subproject commit 720b650f8effa7b397db70bd4b9aa8d5952b2fb0 From 112fda787782fc70328d7f902412ad64bfdd2b68 Mon Sep 17 00:00:00 2001 From: shlomibitton <60430976+shlomibitton@users.noreply.github.com> Date: Thu, 2 Sep 2021 07:17:36 +0300 Subject: [PATCH 136/186] [Flex Counters] Reset flex counters delay flag on config DB when enable_counters script is called (#8500) #### Why I did it Reset flex counters delay flag on config DB when enable_counters script is called to allow enablement of flex counters in orchagent. #### How I did it Push to config DB 'false' value for delay indication when enable_counters script is called before enabling the counters. #### How to verify it Observe counters are created when enable_counters script is called. --- dockers/docker-orchagent/enable_counters.py | 3 ++ .../yang-models/sonic-flex_counter.yang | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/dockers/docker-orchagent/enable_counters.py b/dockers/docker-orchagent/enable_counters.py index a00bd3facce7..d0c855cc61b3 100755 --- a/dockers/docker-orchagent/enable_counters.py +++ b/dockers/docker-orchagent/enable_counters.py @@ -17,6 +17,9 @@ def enable_counter_group(db, name): info = {} info['FLEX_COUNTER_STATUS'] = 'enable' db.mod_entry("FLEX_COUNTER_TABLE", name, info) + else: + entry_info.update({"FLEX_COUNTER_DELAY_STATUS":"false"}) + db.mod_entry("FLEX_COUNTER_TABLE", name, entry_info) def enable_rates(): # set the default interval for rates 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 3f0c805e1e99..6c37d7a0cb5c 100644 --- a/src/sonic-yang-models/yang-models/sonic-flex_counter.yang +++ b/src/sonic-yang-models/yang-models/sonic-flex_counter.yang @@ -23,6 +23,10 @@ module sonic-flex_counter { } } + typedef flex_delay_status { + type boolean; + } + description "FLEX_COUNTER_TABLE part of config_db.json"; /* below are in alphabetical order */ @@ -32,6 +36,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container DEBUG_COUNTER { @@ -39,6 +46,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PFCWD { @@ -46,6 +56,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PG_DROP { @@ -53,6 +66,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PG_WATERMARK { @@ -60,6 +76,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PORT { @@ -67,6 +86,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PORT_RATES { @@ -74,6 +96,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PORT_BUFFER_DROP { @@ -81,6 +106,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container QUEUE { @@ -88,6 +116,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container QUEUE_WATERMARK { @@ -95,6 +126,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container RIF { @@ -102,6 +136,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container RIF_RATES { @@ -109,6 +146,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } } From 058f9751d879549c4331a4a32236adce8aa9ef88 Mon Sep 17 00:00:00 2001 From: richardyu Date: Thu, 2 Sep 2021 01:01:42 -0700 Subject: [PATCH 137/186] [SAIServer] sai server reads config from hwsku folder (#8625) To enable saiserver docker on different platforms, it needs different configuration files. make the saiserver docker mount them in hwsku folder. Co-authored-by: Ubuntu --- .../docker-saiserver-brcm/Dockerfile.j2 | 2 -- .../docker-saiserver-brcm/portmap.ini | 33 ------------------- .../docker-saiserver-brcm/profile.ini | 1 - .../docker-saiserver-brcm/supervisord.conf | 2 +- 4 files changed, 1 insertion(+), 37 deletions(-) delete mode 100644 platform/broadcom/docker-saiserver-brcm/portmap.ini delete mode 100644 platform/broadcom/docker-saiserver-brcm/profile.ini diff --git a/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 b/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 index 3fbbceb6989f..2fe765febcf3 100644 --- a/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 +++ b/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 @@ -28,8 +28,6 @@ RUN apt-get install -yf kmod COPY ["files/dsserve", "files/bcmcmd", "start.sh", "bcmsh", "/usr/bin/"] RUN chmod +x /usr/bin/dsserve /usr/bin/bcmcmd -COPY ["profile.ini", "portmap.ini", "/etc/sai/"] - COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] ## Clean up diff --git a/platform/broadcom/docker-saiserver-brcm/portmap.ini b/platform/broadcom/docker-saiserver-brcm/portmap.ini deleted file mode 100644 index 7161416e4d4c..000000000000 --- a/platform/broadcom/docker-saiserver-brcm/portmap.ini +++ /dev/null @@ -1,33 +0,0 @@ -# alias lanes -Ethernet0 29,30,31,32 -Ethernet4 25,26,27,28 -Ethernet8 37,38,39,40 -Ethernet12 33,34,35,36 -Ethernet16 41,42,43,44 -Ethernet20 45,46,47,48 -Ethernet24 5,6,7,8 -Ethernet28 1,2,3,4 -Ethernet32 9,10,11,12 -Ethernet36 13,14,15,16 -Ethernet40 21,22,23,24 -Ethernet44 17,18,19,20 -Ethernet48 49,50,51,52 -Ethernet52 53,54,55,56 -Ethernet56 61,62,63,64 -Ethernet60 57,58,59,60 -Ethernet64 65,66,67,68 -Ethernet68 69,70,71,72 -Ethernet72 77,78,79,80 -Ethernet76 73,74,75,76 -Ethernet80 105,106,107,108 -Ethernet84 109,110,111,112 -Ethernet88 117,118,119,120 -Ethernet92 113,114,115,116 -Ethernet96 121,122,123,124 -Ethernet100 125,126,127,128 -Ethernet104 85,86,87,88 -Ethernet108 81,82,83,84 -Ethernet112 89,90,91,92 -Ethernet116 93,94,95,96 -Ethernet120 97,98,99,100 -Ethernet124 101,102,103,104 diff --git a/platform/broadcom/docker-saiserver-brcm/profile.ini b/platform/broadcom/docker-saiserver-brcm/profile.ini deleted file mode 100644 index b64d997fb451..000000000000 --- a/platform/broadcom/docker-saiserver-brcm/profile.ini +++ /dev/null @@ -1 +0,0 @@ -SAI_INIT_CONFIG_FILE=/etc/bcm/td2-s6000-32x40G.config.bcm diff --git a/platform/broadcom/docker-saiserver-brcm/supervisord.conf b/platform/broadcom/docker-saiserver-brcm/supervisord.conf index e90e41645042..ccb107b3d1f8 100644 --- a/platform/broadcom/docker-saiserver-brcm/supervisord.conf +++ b/platform/broadcom/docker-saiserver-brcm/supervisord.conf @@ -20,7 +20,7 @@ stdout_logfile=syslog stderr_logfile=syslog [program:saiserver] -command=/usr/sbin/saiserver -p /etc/sai/profile.ini -f /etc/sai/portmap.ini +command=/usr/sbin/saiserver -p /usr/share/sonic/hwsku/sai.profile -f /usr/share/sonic/hwsku/port_config.ini priority=3 autostart=false autorestart=false From 124e6d42e6858156d98bebe65dbda4e3a4cdc746 Mon Sep 17 00:00:00 2001 From: Nazarii Hnydyn Date: Thu, 2 Sep 2021 11:04:12 +0300 Subject: [PATCH 138/186] [submodule]: Advance sonic-swss. (#8652) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commits on Aug 17, 2021 [VS Test] Skip flaky tests (#1875) f501e1c Skipping another flaky test temporarily (#1878) 15a014b Commits on Aug 18, 2021 Change rif_rates.lua and port_rates.lua scripts to calculate rates co… ed867b1 Commits on Aug 20, 2021 [ACL] Match TCP protocol while matching TCP_FLAG (#1854) 756471a Commits on Aug 23, 2021 [macsecmgrd] MACsec XPN changes (#1821) 4bf3d61 Commits on Aug 24, 2021 [ci]: fix artifacts download from swss-common and sairedis (#1882) 12f0ee7 Commits on Aug 26, 2021 [gearbox] Set port speed to SAI_PORT_ATTR_SPEED for gearbox (#1785) fc6cd81 [fpmsyncd][MPLS] updates for MPLS plus AZP libnl3 install (#1871) 76e3406 Commits on Aug 27, 2021 Fix vs test failure in test_buffer_traditional (#1881) db9ca83 Commits on Aug 31, 2021 [buffer orch] Bugfix: Don't query counter SAI_BUFFER_POOL_STAT_XOFF_R… 3d6b1f0 Commits on Sep 01, 2021 [pbh]: Add PBH OA (#1782) eb79ca4 Signed-off-by: Nazarii Hnydyn --- src/sonic-swss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-swss b/src/sonic-swss index 7d16f69fd230..eb79ca4a5248 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit 7d16f69fd2307367dba33ee7a9f6585efa829281 +Subproject commit eb79ca4a524899f57995abd5ae5ec5f773ec85d0 From 53e4280df1c5c198260692cc114cafdb6c696ee5 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Thu, 2 Sep 2021 01:23:37 -0700 Subject: [PATCH 139/186] [ci]: increase the t0 kvm test limit to 5 hours Signed-off-by: Guohan Lu --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e32ec7aa32c4..53cee38e797a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -107,7 +107,7 @@ stages: - job: pool: sonictest displayName: "kvmtest-t0" - timeoutInMinutes: 240 + timeoutInMinutes: 300 steps: - template: .azure-pipelines/run-test-template.yml From 2300a887562d8a6b698b2003712f01dfe2f80b78 Mon Sep 17 00:00:00 2001 From: Kebo Liu Date: Thu, 2 Sep 2021 22:53:19 +0800 Subject: [PATCH 140/186] [Mellanox] remove sensor conf for SN4600 A0 platform due to EOL (#8629) - Why I did it SN4600 A0 platform was EOL, so there is no need to support it, sensor conf can be removed and we don't need to maintain 2 sensor conf files, only A1 platform is needed. - How I did it Remove get_sensors_conf_path which intends to load correct sensor conf for different(A0/A1) platforms. Remove the sensor conf for A0 platform, rename previous sensor.conf.a1 to sensor.conf - How to verify it Run sensor test on the SN4600 platform. --- .../get_sensors_conf_path | 1 - .../x86_64-mlnx_msn4600-r0/sensors.conf | 178 ++++++------------ .../x86_64-mlnx_msn4600-r0/sensors.conf.a1 | 133 ------------- 3 files changed, 61 insertions(+), 251 deletions(-) delete mode 120000 device/mellanox/x86_64-mlnx_msn4600-r0/get_sensors_conf_path delete mode 100644 device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf.a1 diff --git a/device/mellanox/x86_64-mlnx_msn4600-r0/get_sensors_conf_path b/device/mellanox/x86_64-mlnx_msn4600-r0/get_sensors_conf_path deleted file mode 120000 index f1509a1e1d3d..000000000000 --- a/device/mellanox/x86_64-mlnx_msn4600-r0/get_sensors_conf_path +++ /dev/null @@ -1 +0,0 @@ -../x86_64-mlnx_msn4700-r0/get_sensors_conf_path \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf b/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf index da05cd94bf9f..dfe848ca8aa4 100644 --- a/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf +++ b/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf @@ -21,134 +21,78 @@ bus "i2c-15" "i2c-1-mux (chan_id 6)" # Power controllers bus "i2c-5" "i2c-1-mux (chan_id 4)" - chip "xdpe12284-i2c-*-62" - label in1 "PMIC-1 PSU 12V Rail (in)" - ignore in2 - label in3 "PMIC-1 ASIC 0.8V VCORE_MAIN Rail (out)" - ignore in4 + chip "mp2975-i2c-*-62" + label in1 "PMIC-1 PSU 12V Rail (in1)" + label in2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail (out)" label temp1 "PMIC-1 Temp 1" - label temp2 "PMIC-1 Temp 2" - label power1 "PMIC-1 ASIC 12V VCORE_MAIN Rail Pwr (in)" - ignore power2 - label power3 "PMIC-1 ASIC 0.8V VCORE_MAIN Rail Pwr (out)" - ignore power4 - label curr1 "PMIC-1 ASIC 12V VCORE_MAIN Rail Curr (in)" - ignore curr2 - label curr3 "PMIC-1 ASIC 0.8V VCORE_MAIN Rail Curr (out)" - ignore curr4 - chip "xdpe12284-i2c-*-64" - label in1 "PMIC-2 PSU 12V Rail_1 (in)" - label in2 "PMIC-2 PSU 12V Rail_2 (in)" - label in3 "PMIC-2 ASIC 1.8V Rail_1 (out)" - label in4 "PMIC-2 ASIC 1.2V Rail_2 (out)" + label power1 "PMIC-1 PSU 12V Rail Pwr (in1)" + label power2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail Pwr (out)" + label curr1 "PMIC-1 PSU 12V Rail Curr (in1)" + label curr2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail Curr (out)" + chip "mp2975-i2c-*-64" + label in1 "PMIC-2 PSU 12V Rail (in1)" + label in2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail (out)" + label in3 "PMIC-2 ASIC 1.2V VCORE MAIN Rail (out)" label temp1 "PMIC-2 Temp 1" - label temp2 "PMIC-2 Temp 2" - label power1 "PMIC-2 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-2 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-2 ASIC 1.8V Rail_1 Pwr (out)" - label power4 "PMIC-2 ASIC 1.2V Rail_2 Pwr (out)" - label curr1 "PMIC-2 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-2 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-2 ASIC 1.8V Rail_1 Curr (out)" - label curr4 "PMIC-2 ASIC 1.2V Rail_2 Curr (out)" - chip "xdpe12284-i2c-*-66" - label in1 "PMIC-3 PSU 12V Rail_1 (in)" - label in2 "PMIC-3 PSU 12V Rail_2 (in)" - label in3 "PMIC-3 ASIC 0.85V Rail_1 T0_1 (out)" - label in4 "PMIC-3 ASIC 1.8V Rail_2 T0_1 (out)" + label power1 "PMIC-2 PSU 12V Rail Pwr (in1)" + label power2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail Pwr (out)" + label curr1 "PMIC-2 PSU 12V Rail Curr (in1)" + label curr2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail Curr (out)" + label curr3 "PMIC-2 ASIC 1.2V VCORE MAIN Rail Curr (out)" + chip "mp2975-i2c-*-66" + label in1 "PMIC-3 PSU 12V Rail (in1)" + label in2 "PMIC-3 ASIC 0.85V T0_1 Rail (out)" + label in3 "PMIC-3 ASIC 1.8V T0_1 Rail (out)" label temp1 "PMIC-3 Temp 1" - label temp2 "PMIC-3 Temp 2" - label power1 "PMIC-3 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-3 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-3 ASIC 0.85V Rail_1 T0_1 Pwr (out)" - label power4 "PMIC-3 ASIC 1.8V Rail_2 T0_1 Pwr (out)" - label curr1 "PMIC-3 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-3 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-3 ASIC 0.85V Rail_1 T0_1 Curr (out)" - label curr4 "PMIC-3 ASIC 1.8V Rail_2 T0_1 Curr (out)" - chip "xdpe12284-i2c-*-68" - label in1 "PMIC-4 PSU 12V Rail_1 (in)" - label in2 "PMIC-4 PSU 12V Rail_2 (in)" - label in3 "PMIC-4 ASIC 0.85V Rail_1 T2_3 (out)" - label in4 "PMIC-4 ASIC 1.8V Rail_2 T2_3 (out)" + label power1 "PMIC-3 PSU 12V Rail Pwr (in1)" + label power2 "PMIC-3 ASIC 0.85V T0_1 Rail Pwr (out)" + label curr1 "PMIC-3 PSU 12V Rail Curr (in1)" + label curr2 "PMIC-3 ASIC 0.85V T0_1 Rail Curr (out)" + label curr3 "PMIC-3 ASIC 1.8V T0_1 Rail Curr (out)" + chip "mp2975-i2c-*-6a" + label in1 "PMIC-4 PSU 12V Rail (in1)" + label in2 "PMIC-4 ASIC 0.85V T2_3 Rail (out)" + label in3 "PMIC-4 ASIC 1.8V T2_3 Rail (out)" label temp1 "PMIC-4 Temp 1" - label temp2 "PMIC-4 Temp 2" - label power1 "PMIC-4 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-4 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-4 ASIC 0.85V Rail_1 T2_3 Pwr (out)" - label power4 "PMIC-4 ASIC 1.8V Rail_2 T2_3 Pwr (out)" - label curr1 "PMIC-4 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-4 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-4 ASIC 0.85V Rail_1 T2_3 Curr (out)" - label curr4 "PMIC-4 ASIC 1.8V Rail_2 T2_3 Curr (out)" - chip "xdpe12284-i2c-*-6a" - label in1 "PMIC-5 PSU 12V Rail_1 (in)" - label in2 "PMIC-5 PSU 12V Rail_2 (in)" - label in3 "PMIC-5 ASIC 0.85V Rail_1 T4_5 (out)" - label in4 "PMIC-5 ASIC 1.8V Rail_2 T4_5 (out)" + label power1 "PMIC-4 PSU 12V Rail Pwr (in1)" + label power2 "PMIC-4 ASIC 0.85V T2_3 Rail Pwr (out)" + label curr1 "PMIC-4 PSU 12V Rail Curr (in1)" + label curr2 "PMIC-4 ASIC 0.85V T2_3 Rail Curr (out)" + label curr3 "PMIC-4 ASIC 1.8V T2_3 Rail Curr (out)" + chip "mp2975-i2c-*-6e" + label in1 "PMIC-5 PSU 12V Rail (in1)" + label in2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 (out)" + label in3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 (out)" label temp1 "PMIC-5 Temp 1" - label temp2 "PMIC-5 Temp 2" - label power1 "PMIC-5 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-5 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-5 ASIC 0.85V Rail_1 T4_5 Pwr (out)" - label power4 "PMIC-5 ASIC 1.8V Rail_2 T4_5 Pwr (out)" - label curr1 "PMIC-5 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-5 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-5 ASIC 0.85V Rail_1 T4_5 Curr (out)" - label curr4 "PMIC-5 ASIC 1.8V Rail_2 T4_5 Curr (out)" - chip "xdpe12284-i2c-*-6c" - label in1 "PMIC-6 PSU 12V Rail_1 (in)" - label in2 "PMIC-6 PSU 12V Rail_2 (in)" - label in3 "PMIC-6 ASIC 0.85V Rail_1 T6_7 (out)" - label in4 "PMIC-6 ASIC 1.8V Rail_2 T6_7 (out)" - label temp1 "PMIC-6 Temp 1" - label temp2 "PMIC-6 Temp 2" - label power1 "PMIC-6 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-6 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-6 ASIC 0.85V Rail_1 T6_7 Pwr (out)" - label power4 "PMIC-6 ASIC 1.8V Rail_2 T6_7 Pwr (out)" - label curr1 "PMIC-6 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-6 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-6 ASIC 0.85V Rail_1 T6_7 Curr (out)" - label curr4 "PMIC-6 ASIC 1.8V Rail_2 T6_7 Curr (out)" - chip "xdpe12284-i2c-*-6e" - label in1 "PMIC-7 PSU 12V Rail_1 (in)" - label in2 "PMIC-7 PSU 12V Rail_2 (in)" - label in3 "PMIC-7 ASIC 1.2V Rail_1 T0_3 (out)" - label in4 "PMIC-7 ASIC 1.2V Rail_2 T4_7 (out)" - label temp1 "PMIC-7 Temp 1" - label temp2 "PMIC-7 Temp 2" - label power1 "PMIC-7 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-7 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-7 ASIC 1.2V Rail_1 T0_3 Pwr (out)" - label power4 "PMIC-7 ASIC 1.2V Rail_2 T4_7 Pwr (out)" - label curr1 "PMIC-7 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-7 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-7 ASIC 1.2V Rail_1 T0_3 Curr (out)" - label curr4 "PMIC-7 ASIC 1.2V Rail_2 T4_7 Curr (out)" + label power1 "PMIC-5 PSU 12V Rail Pwr (in1)" + label power2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 Pwr (out)" + label power3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 Pwr (out)" + label curr1 "PMIC-5 PSU 12V Rail Curr (in1)" + label curr2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 Curr (out)" + label curr3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 Curr (out)" bus "i2c-15" "i2c-1-mux (chan_id 6)" chip "tps53679-i2c-*-58" - label in1 "PMIC-8 PSU 12V Rail (in1)" - label in2 "PMIC-8 PSU 12V Rail (in2)" - label in3 "PMIC-8 COMEX 1.8V Rail (out)" - label in4 "PMIC-8 COMEX 1.05V Rail (out)" - label temp1 "PMIC-8 Temp 1" - label temp2 "PMIC-8 Temp 2" - label power1 "PMIC-8 COMEX 1.8V Rail Pwr (out)" - label power2 "PMIC-8 COMEX 1.05V Rail Pwr (out)" - label curr1 "PMIC-8 COMEX 1.8V Rail Curr (out)" - label curr2 "PMIC-8 COMEX 1.05V Rail Curr (out)" + label in1 "PMIC-6 PSU 12V Rail (in1)" + label in2 "PMIC-6 PSU 12V Rail (in2)" + label in3 "PMIC-6 COMEX 1.8V Rail (out)" + label in4 "PMIC-6 COMEX 1.05V Rail (out)" + label temp1 "PMIC-6 Temp 1" + label temp2 "PMIC-6 Temp 2" + label power1 "PMIC-6 COMEX 1.8V Rail Pwr (out)" + label power2 "PMIC-6 COMEX 1.05V Rail Pwr (out)" + label curr1 "PMIC-6 COMEX 1.8V Rail Curr (out)" + label curr2 "PMIC-6 COMEX 1.05V Rail Curr (out)" chip "tps53679-i2c-*-61" - label in1 "PMIC-9 PSU 12V Rail (in1)" - label in2 "PMIC-9 PSU 12V Rail (in2)" - label in3 "PMIC-9 COMEX 1.2V Rail (out)" + label in1 "PMIC-7 PSU 12V Rail (in1)" + label in2 "PMIC-7 PSU 12V Rail (in2)" + label in3 "PMIC-7 COMEX 1.2V Rail (out)" ignore in4 - label temp1 "PMIC-9 Temp 1" - label temp2 "PMIC-9 Temp 2" - label power1 "PMIC-9 COMEX 1.2V Rail Pwr (out)" + label temp1 "PMIC-7 Temp 1" + label temp2 "PMIC-7 Temp 2" + label power1 "PMIC-7 COMEX 1.2V Rail Pwr (out)" ignore power2 - label curr1 "PMIC-9 COMEX 1.2V Rail Curr (out)" + label curr1 "PMIC-7 COMEX 1.2V Rail Curr (out)" ignore curr2 # Power supplies diff --git a/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf.a1 b/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf.a1 deleted file mode 100644 index dfe848ca8aa4..000000000000 --- a/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf.a1 +++ /dev/null @@ -1,133 +0,0 @@ -################################################################################ -# Copyright (c) 2021 Mellanox Technologies -# -# Platform specific sensors config for SN4600 -################################################################################ - -# Temperature sensors -bus "i2c-2" "i2c-1-mux (chan_id 1)" - chip "mlxsw-i2c-*-48" - label temp1 "Ambient ASIC Temp" - -bus "i2c-7" "i2c-1-mux (chan_id 6)" - chip "tmp102-i2c-*-49" - label temp1 "Ambient Fan Side Temp (air intake)" - chip "tmp102-i2c-*-4a" - label temp1 "Ambient Port Side Temp (air exhaust)" - -bus "i2c-15" "i2c-1-mux (chan_id 6)" - chip "tmp102-i2c-15-49" - label temp1 "Ambient COMEX Temp" - -# Power controllers -bus "i2c-5" "i2c-1-mux (chan_id 4)" - chip "mp2975-i2c-*-62" - label in1 "PMIC-1 PSU 12V Rail (in1)" - label in2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail (out)" - label temp1 "PMIC-1 Temp 1" - label power1 "PMIC-1 PSU 12V Rail Pwr (in1)" - label power2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail Pwr (out)" - label curr1 "PMIC-1 PSU 12V Rail Curr (in1)" - label curr2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail Curr (out)" - chip "mp2975-i2c-*-64" - label in1 "PMIC-2 PSU 12V Rail (in1)" - label in2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail (out)" - label in3 "PMIC-2 ASIC 1.2V VCORE MAIN Rail (out)" - label temp1 "PMIC-2 Temp 1" - label power1 "PMIC-2 PSU 12V Rail Pwr (in1)" - label power2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail Pwr (out)" - label curr1 "PMIC-2 PSU 12V Rail Curr (in1)" - label curr2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail Curr (out)" - label curr3 "PMIC-2 ASIC 1.2V VCORE MAIN Rail Curr (out)" - chip "mp2975-i2c-*-66" - label in1 "PMIC-3 PSU 12V Rail (in1)" - label in2 "PMIC-3 ASIC 0.85V T0_1 Rail (out)" - label in3 "PMIC-3 ASIC 1.8V T0_1 Rail (out)" - label temp1 "PMIC-3 Temp 1" - label power1 "PMIC-3 PSU 12V Rail Pwr (in1)" - label power2 "PMIC-3 ASIC 0.85V T0_1 Rail Pwr (out)" - label curr1 "PMIC-3 PSU 12V Rail Curr (in1)" - label curr2 "PMIC-3 ASIC 0.85V T0_1 Rail Curr (out)" - label curr3 "PMIC-3 ASIC 1.8V T0_1 Rail Curr (out)" - chip "mp2975-i2c-*-6a" - label in1 "PMIC-4 PSU 12V Rail (in1)" - label in2 "PMIC-4 ASIC 0.85V T2_3 Rail (out)" - label in3 "PMIC-4 ASIC 1.8V T2_3 Rail (out)" - label temp1 "PMIC-4 Temp 1" - label power1 "PMIC-4 PSU 12V Rail Pwr (in1)" - label power2 "PMIC-4 ASIC 0.85V T2_3 Rail Pwr (out)" - label curr1 "PMIC-4 PSU 12V Rail Curr (in1)" - label curr2 "PMIC-4 ASIC 0.85V T2_3 Rail Curr (out)" - label curr3 "PMIC-4 ASIC 1.8V T2_3 Rail Curr (out)" - chip "mp2975-i2c-*-6e" - label in1 "PMIC-5 PSU 12V Rail (in1)" - label in2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 (out)" - label in3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 (out)" - label temp1 "PMIC-5 Temp 1" - label power1 "PMIC-5 PSU 12V Rail Pwr (in1)" - label power2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 Pwr (out)" - label power3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 Pwr (out)" - label curr1 "PMIC-5 PSU 12V Rail Curr (in1)" - label curr2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 Curr (out)" - label curr3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 Curr (out)" - -bus "i2c-15" "i2c-1-mux (chan_id 6)" - chip "tps53679-i2c-*-58" - label in1 "PMIC-6 PSU 12V Rail (in1)" - label in2 "PMIC-6 PSU 12V Rail (in2)" - label in3 "PMIC-6 COMEX 1.8V Rail (out)" - label in4 "PMIC-6 COMEX 1.05V Rail (out)" - label temp1 "PMIC-6 Temp 1" - label temp2 "PMIC-6 Temp 2" - label power1 "PMIC-6 COMEX 1.8V Rail Pwr (out)" - label power2 "PMIC-6 COMEX 1.05V Rail Pwr (out)" - label curr1 "PMIC-6 COMEX 1.8V Rail Curr (out)" - label curr2 "PMIC-6 COMEX 1.05V Rail Curr (out)" - chip "tps53679-i2c-*-61" - label in1 "PMIC-7 PSU 12V Rail (in1)" - label in2 "PMIC-7 PSU 12V Rail (in2)" - label in3 "PMIC-7 COMEX 1.2V Rail (out)" - ignore in4 - label temp1 "PMIC-7 Temp 1" - label temp2 "PMIC-7 Temp 2" - label power1 "PMIC-7 COMEX 1.2V Rail Pwr (out)" - ignore power2 - label curr1 "PMIC-7 COMEX 1.2V Rail Curr (out)" - ignore curr2 - -# Power supplies -bus "i2c-4" "i2c-1-mux (chan_id 3)" - chip "dps460-i2c-*-58" - label in1 "PSU-1(L) 220V Rail (in)" - ignore in2 - label in3 "PSU-1(L) 12V Rail (out)" - label fan1 "PSU-1(L) Fan 1" - ignore fan2 - ignore fan3 - label temp1 "PSU-1(L) Temp 1" - label temp2 "PSU-1(L) Temp 2" - label temp3 "PSU-1(L) Temp 3" - label power1 "PSU-1(L) 220V Rail Pwr (in)" - label power2 "PSU-1(L) 12V Rail Pwr (out)" - label curr1 "PSU-1(L) 220V Rail Curr (in)" - label curr2 "PSU-1(L) 12V Rail Curr (out)" - chip "dps460-i2c-*-59" - label in1 "PSU-2(R) 220V Rail (in)" - ignore in2 - label in3 "PSU-2(R) 12V Rail (out)" - label fan1 "PSU-2(R) Fan 1" - ignore fan2 - ignore fan3 - label temp1 "PSU-2(R) Temp 1" - label temp2 "PSU-2(R) Temp 2" - label temp3 "PSU-2(R) Temp 3" - label power1 "PSU-2(R) 220V Rail Pwr (in)" - label power2 "PSU-2(R) 12V Rail Pwr (out)" - label curr1 "PSU-2(R) 220V Rail Curr (in)" - label curr2 "PSU-2(R) 12V Rail Curr (out)" - -# Chassis fans -chip "mlxreg_fan-isa-*" - label fan1 "Chassis Fan Drawer-1" - label fan2 "Chassis Fan Drawer-2" - label fan3 "Chassis Fan Drawer-3" From 7c9be314e2f390a5f2c522f74128ac5e1e2b6230 Mon Sep 17 00:00:00 2001 From: Ann Pokora <44511240+qbdwlr@users.noreply.github.com> Date: Thu, 2 Sep 2021 13:32:27 -0400 Subject: [PATCH 141/186] [yang]: sonic-yang-models updates for MPLS (#7881) SONiC YANG model support in buildimage for MPLS: sonic-yang-model support for MPLS enable/disable sonic-yang-model support for MPLS CRM thresholds --- .../tests/yang_model_tests/tests/crm.json | 38 ++++++ .../yang_model_tests/tests_config/crm.json | 112 +++++++++++++++++- .../yang-models/sonic-crm.yang | 52 ++++++++ .../yang-models/sonic-interface.yang | 7 ++ .../yang-models/sonic-portchannel.yang | 7 ++ .../yang-models/sonic-vlan.yang | 7 ++ 6 files changed, 222 insertions(+), 1 deletion(-) diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/crm.json b/src/sonic-yang-models/tests/yang_model_tests/tests/crm.json index c10e42d899f1..cdfc531f212d 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/crm.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/crm.json @@ -77,5 +77,43 @@ "desc": "IPMC_WITH_WRONG_THRESHOLD_TYPE pattern failure.", "eStrKey": "Pattern", "eStr": ["wrong" ] + }, + "MPLS_INSEG_WITH_WRONG_THRESHOLD_TYPE": { + "desc": "MPLS_INSEG_WITH_WRONG_THRESHOLD_TYPE pattern failure.", + "eStrKey": "Pattern", + "eStr": ["wrong" ] + }, + "MPLS_INSEG_WITH_WRONG_PERCENTAGE": { + "desc": "MPLS_INSEG_WITH_WRONG_PERCENTAGE must condition failure.", + "eStrKey": "Must" + }, + "MPLS_INSEG_WITH_HIGH_THRESHOLD_ERR": { + "desc": "MPLS_INSEG_WITH_HIGH_THRESHOLD_ERR must condition failure about high threshold being lower than low threshold.", + "eStr": ["high_threshold should be more than low_threshold"] + }, + "MPLS_INSEG_WITH_CORRECT_USED_VALUE": { + "desc": "MPLS_INSEG_WITH_CORRECT_USED_VALUE no failure." + }, + "MPLS_INSEG_WITH_CORRECT_FREE_VALUE": { + "desc": "MPLS_INSEG_WITH_CORRECT_FREE_VALUE no failure." + }, + "MPLS_NH_WITH_WRONG_THRESHOLD_TYPE": { + "desc": "MPLS_NH_WITH_WRONG_THRESHOLD_TYPE pattern failure.", + "eStrKey": "Pattern", + "eStr": ["wrong" ] + }, + "MPLS_NH_WITH_WRONG_PERCENTAGE": { + "desc": "MPLS_NH_WITH_WRONG_PERCENTAGE must condition failure.", + "eStrKey": "Must" + }, + "MPLS_NH_WITH_HIGH_THRESHOLD_ERR": { + "desc": "MPLS_NH_WITH_HIGH_THRESHOLD_ERR must condition failure about high threshold being lower than low threshold.", + "eStr": ["high_threshold should be more than low_threshold"] + }, + "MPLS_NH_WITH_CORRECT_USED_VALUE": { + "desc": "MPLS_NH_WITH_CORRECT_USED_VALUE no failure." + }, + "MPLS_NH_WITH_CORRECT_USED_VALUE": { + "desc": "MPLS_NH_WITH_CORRECT_USED_VALUE no failure." } } diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/crm.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/crm.json index db08d941b6d8..f2878bd7b2a8 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/crm.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/crm.json @@ -218,5 +218,115 @@ } } } + }, + "MPLS_INSEG_WITH_CORRECT_FREE_VALUE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_inseg_high_threshold": 90, + "mpls_inseg_low_threshold": 70, + "mpls_inseg_threshold_type": "free" + } + } + } + }, + "MPLS_INSEG_WITH_CORRECT_USED_VALUE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_inseg_high_threshold": 85, + "mpls_inseg_low_threshold": 25, + "mpls_inseg_threshold_type": "used" + } + } + } + }, + "MPLS_INSEG_WITH_HIGH_THRESHOLD_ERR": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_inseg_high_threshold": 80, + "mpls_inseg_low_threshold": 81, + "mpls_inseg_threshold_type": "PERCENTAGE" + } + } + } + }, + "MPLS_INSEG_WITH_WRONG_PERCENTAGE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_inseg_high_threshold": 110, + "mpls_inseg_low_threshold": 85, + "mpls_inseg_threshold_type": "PERCENTAGE" + } + } + } + }, + "MPLS_INSEG_WITH_WRONG_THRESHOLD_TYPE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_inseg_high_threshold": 90, + "mpls_inseg_low_threshold": 70, + "mpls_inseg_threshold_type": "wrong" + } + } + } + }, + "MPLS_NH_WITH_CORRECT_FREE_VALUE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_nexthop_high_threshold": 90, + "mpls_nexthop_low_threshold": 70, + "mpls_nexthop_threshold_type": "free" + } + } + } + }, + "MPLS_NH_WITH_CORRECT_USED_VALUE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_nexthop_high_threshold": 85, + "mpls_nexthop_low_threshold": 25, + "mpls_nexthop_threshold_type": "used" + } + } + } + }, + "MPLS_NH_WITH_HIGH_THRESHOLD_ERR": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_nexthop_high_threshold": 80, + "mpls_nexthop_low_threshold": 81, + "mpls_nexthop_threshold_type": "PERCENTAGE" + } + } + } + }, + "MPLS_NH_WITH_WRONG_PERCENTAGE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_nexthop_high_threshold": 110, + "mpls_nexthop_low_threshold": 85, + "mpls_nexthop_threshold_type": "PERCENTAGE" + } + } + } + }, + "MPLS_NH_WITH_WRONG_THRESHOLD_TYPE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_nexthop_high_threshold": 90, + "mpls_nexthop_low_threshold": 70, + "mpls_nexthop_threshold_type": "wrong" + } + } + } } -} \ No newline at end of file +} diff --git a/src/sonic-yang-models/yang-models/sonic-crm.yang b/src/sonic-yang-models/yang-models/sonic-crm.yang index 29161958e479..48c15b0e48cc 100644 --- a/src/sonic-yang-models/yang-models/sonic-crm.yang +++ b/src/sonic-yang-models/yang-models/sonic-crm.yang @@ -353,6 +353,58 @@ module sonic-crm { type threshold; } + leaf mpls_inseg_threshold_type { + description "CRM threshold support for MPLS in-segment entries"; + + must "(((current()='PERCENTAGE' or current()='percentage') and + ../mpls_inseg_high_threshold<100 and + ../mpls_inseg_low_threshold<100) or + (current()!='PERCENTAGE' and current()!='percentage'))"; + type stypes:crm_threshold_type; + } + + leaf mpls_inseg_high_threshold { + description "CRM threshold support for MPLS in-segment entries"; + + must "(current() > ../mpls_inseg_low_threshold)" + { + error-message "high_threshold should be more than low_threshold"; + } + type threshold; + } + + leaf mpls_inseg_low_threshold { + description "CRM threshold support for MPLS in-segment entries"; + + type threshold; + } + + leaf mpls_nexthop_threshold_type { + description "CRM threshold support for MPLS next-hops"; + + must "(((current()='PERCENTAGE' or current()='percentage') and + ../mpls_nexthop_high_threshold<100 and + ../mpls_nexthop_low_threshold<100) or + (current()!='PERCENTAGE' and current()!='percentage'))"; + type stypes:crm_threshold_type; + } + + leaf mpls_nexthop_high_threshold { + description "CRM threshold support for MPLS next-hops"; + + must "(current() > ../mpls_nexthop_low_threshold)" + { + error-message "high_threshold should be more than low_threshold"; + } + type threshold; + } + + leaf mpls_nexthop_low_threshold { + description "CRM threshold support for MPLS next-hops"; + + type threshold; + } + } /* end of Config */ } diff --git a/src/sonic-yang-models/yang-models/sonic-interface.yang b/src/sonic-yang-models/yang-models/sonic-interface.yang index 48f63a29c563..f559eb6be1b6 100644 --- a/src/sonic-yang-models/yang-models/sonic-interface.yang +++ b/src/sonic-yang-models/yang-models/sonic-interface.yang @@ -68,6 +68,13 @@ module sonic-interface { } default "0"; } + leaf mpls { + description "Enable/disable MPLS routing for the interface"; + type enumeration { + enum enable; + enum disable; + } + } } /* end of INTERFACE_LIST */ diff --git a/src/sonic-yang-models/yang-models/sonic-portchannel.yang b/src/sonic-yang-models/yang-models/sonic-portchannel.yang index f02a45d93917..587a19e4bec6 100644 --- a/src/sonic-yang-models/yang-models/sonic-portchannel.yang +++ b/src/sonic-yang-models/yang-models/sonic-portchannel.yang @@ -179,6 +179,13 @@ module sonic-portchannel { } default "0"; } + leaf mpls { + description "Enable/disable MPLS routing for the portchannel interface"; + type enumeration { + enum enable; + enum disable; + } + } } /* end of list PORTCHANNEL_INTERFACE_LIST */ list PORTCHANNEL_INTERFACE_IPPREFIX_LIST { diff --git a/src/sonic-yang-models/yang-models/sonic-vlan.yang b/src/sonic-yang-models/yang-models/sonic-vlan.yang index d6f2a4808a6f..c63bc6b46ac4 100644 --- a/src/sonic-yang-models/yang-models/sonic-vlan.yang +++ b/src/sonic-yang-models/yang-models/sonic-vlan.yang @@ -80,6 +80,13 @@ module sonic-vlan { } default "0"; } + leaf mpls { + description "Enable/disable MPLS routing for the vlan interface"; + type enumeration { + enum enable; + enum disable; + } + } } /* end of VLAN_INTERFACE_LIST */ From 386efa6d12446096e8ea0749f7030bbee9740510 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 2 Sep 2021 16:28:03 -0700 Subject: [PATCH 142/186] fixup! Make changes needed to build a basic Broadcom image --- platform/broadcom/saibcm-modules-dnx | 2 +- .../sdklt/linux/bde/ngbde_procfs.c | 10 ++++ .../linux/kernel/modules/bcm-knet/bcm-knet.c | 59 +++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) diff --git a/platform/broadcom/saibcm-modules-dnx b/platform/broadcom/saibcm-modules-dnx index d7c7cc932c96..d070b9cca3d1 160000 --- a/platform/broadcom/saibcm-modules-dnx +++ b/platform/broadcom/saibcm-modules-dnx @@ -1 +1 @@ -Subproject commit d7c7cc932c96eda6ad7e040ff58a0a8b41511a52 +Subproject commit d070b9cca3d1233639589fc8b583cdc7e3638690 diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c index 8f4b701b2ab2..853e561d9288 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c @@ -88,12 +88,22 @@ proc_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) +static struct file_operations proc_fops = { + owner: THIS_MODULE, + open: proc_open, + read: seq_read, + llseek: seq_lseek, + release: proc_release, +}; +#else static struct proc_ops proc_fops = { proc_open: proc_open, proc_read: seq_read, proc_lseek: seq_lseek, proc_release: proc_release, }; +#endif int ngbde_procfs_init(void) diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c index 43edc056beff..5f0924589beb 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c @@ -6494,6 +6494,7 @@ bkn_proc_link_write(struct file *file, const char *buf, return count; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations bkn_proc_link_file_ops = { owner: THIS_MODULE, open: bkn_proc_link_open, @@ -6502,6 +6503,15 @@ struct file_operations bkn_proc_link_file_ops = { write: bkn_proc_link_write, release: single_release, }; +#else +struct proc_ops bkn_proc_link_file_ops = { + proc_open: bkn_proc_link_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bkn_proc_link_write, + proc_release: single_release, +}; +#endif /* * Device Rate Control Proc Read Entry @@ -6601,6 +6611,7 @@ bkn_proc_rate_write(struct file *file, const char *buf, return count; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations bkn_proc_rate_file_ops = { owner: THIS_MODULE, open: bkn_proc_rate_open, @@ -6609,6 +6620,15 @@ struct file_operations bkn_proc_rate_file_ops = { write: bkn_proc_rate_write, release: single_release, }; +#else +struct proc_ops bkn_proc_rate_file_ops = { + proc_open: bkn_proc_rate_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bkn_proc_rate_write, + proc_release: single_release, +}; +#endif /* * Driver DMA Proc Entry @@ -6851,6 +6871,7 @@ bkn_seq_dma_open(struct inode *inode, struct file *file) return seq_open(file, &bkn_seq_dma_ops); }; +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations bkn_seq_dma_file_ops = { .owner = THIS_MODULE, .open = bkn_seq_dma_open, @@ -6858,6 +6879,14 @@ static struct file_operations bkn_seq_dma_file_ops = { .llseek = seq_lseek, .release = seq_release }; +#else +static struct proc_ops bkn_seq_dma_file_ops = { + .proc_open = bkn_seq_dma_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = seq_release +}; +#endif /* * Device Debug Control Proc Write Entry @@ -6981,6 +7010,7 @@ static int bkn_proc_debug_open(struct inode * inode, struct file * file) return single_open(file, bkn_proc_debug_show, NULL); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations bkn_proc_debug_file_ops = { owner: THIS_MODULE, open: bkn_proc_debug_open, @@ -6989,6 +7019,15 @@ struct file_operations bkn_proc_debug_file_ops = { write: bkn_proc_debug_write, release: single_release, }; +#else +struct proc_ops bkn_proc_debug_file_ops = { + proc_open: bkn_proc_debug_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bkn_proc_debug_write, + proc_release: single_release, +}; +#endif /* * Device Statistics Proc Entry @@ -7110,6 +7149,7 @@ bkn_proc_stats_write(struct file *file, const char *buf, return count; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations bkn_proc_stats_file_ops = { owner: THIS_MODULE, open: bkn_proc_stats_open, @@ -7118,6 +7158,15 @@ struct file_operations bkn_proc_stats_file_ops = { write: bkn_proc_stats_write, release: single_release, }; +#else +struct proc_ops bkn_proc_stats_file_ops = { + proc_open: bkn_proc_stats_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bkn_proc_stats_write, + proc_release: single_release, +}; +#endif /* * Device Debug Statistics Proc Entry @@ -7286,6 +7335,7 @@ bkn_proc_dstats_write(struct file *file, const char *buf, return count; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations bkn_proc_dstats_file_ops = { owner: THIS_MODULE, open: bkn_proc_dstats_open, @@ -7294,6 +7344,15 @@ struct file_operations bkn_proc_dstats_file_ops = { write: bkn_proc_dstats_write, release: single_release, }; +#else +struct proc_ops bkn_proc_dstats_file_ops = { + proc_open: bkn_proc_dstats_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bkn_proc_dstats_write, + proc_release: single_release, +}; +#endif static int bkn_proc_init(void) From bdac06574a435bcf95a4533a370f739356d678a9 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Sun, 5 Sep 2021 23:02:30 -0700 Subject: [PATCH 143/186] Update repos for Bullseye slave container Update the repos for amd64, and add support for at least arm64. Signed-off-by: Saikrishna Arcot --- sonic-slave-bullseye/Dockerfile.j2 | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/sonic-slave-bullseye/Dockerfile.j2 b/sonic-slave-bullseye/Dockerfile.j2 index fac3bbe2b4aa..c0022963d582 100644 --- a/sonic-slave-bullseye/Dockerfile.j2 +++ b/sonic-slave-bullseye/Dockerfile.j2 @@ -15,6 +15,8 @@ COPY ["no-check-valid-until", "/etc/apt/apt.conf.d/"] ## TODO: Re-add in any necessary mirror URLs here as they become available RUN echo "deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free" >> /etc/apt/sources.list && \ echo "deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free" >> /etc/apt/sources.list && \ + echo "deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ + echo "deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ echo "deb [arch=amd64] http://debian-archive.trafficmanager.net/debian bullseye-backports main" >> /etc/apt/sources.list {%- if CONFIGURED_ARCH == "armhf" %} @@ -22,21 +24,17 @@ RUN echo "deb [arch=armhf] http://deb.debian.org/debian bullseye main contrib no echo "deb-src [arch=armhf] http://deb.debian.org/debian bullseye main contrib non-free" >> /etc/apt/sources.list && \ echo "deb [arch=armhf] http://deb.debian.org/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \ echo "deb-src [arch=armhf] http://deb.debian.org/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb [arch=armhf] http://security.debian.org bullseye/updates main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb-src [arch=armhf] http://security.debian.org bullseye/updates main contrib non-free" >> /etc/apt/sources.list && \ - echo 'deb [arch=armhf] http://ftp.debian.org/debian bullseye-backports main' >> /etc/apt/sources.list && \ - echo "deb [arch=armhf] http://packages.trafficmanager.net/debian/debian bullseye main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb [arch=armhf] http://packages.trafficmanager.net/debian/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list + echo "deb [arch=armhf] http://security.debian.org bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ + echo "deb-src [arch=armhf] http://security.debian.org bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ + echo 'deb [arch=armhf] http://ftp.debian.org/debian bullseye-backports main' >> /etc/apt/sources.list {%- elif CONFIGURED_ARCH == "arm64" %} RUN echo "deb [arch=arm64] http://deb.debian.org/debian bullseye main contrib non-free" > /etc/apt/sources.list && \ echo "deb-src [arch=arm64] http://deb.debian.org/debian bullseye main contrib non-free" >> /etc/apt/sources.list && \ echo "deb [arch=arm64] http://deb.debian.org/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \ echo "deb-src [arch=arm64] http://deb.debian.org/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb [arch=arm64] http://security.debian.org bullseye/updates main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb-src [arch=arm64] http://security.debian.org bullseye/updates main contrib non-free" >> /etc/apt/sources.list && \ - echo 'deb [arch=arm64] http://ftp.debian.org/debian bullseye-backports main' >> /etc/apt/sources.list && \ - echo "deb [arch=arm64] http://packages.trafficmanager.net/debian/debian bullseye main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb [arch=arm64] http://packages.trafficmanager.net/debian/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list + echo "deb [arch=arm64] http://security.debian.org bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ + echo "deb-src [arch=arm64] http://security.debian.org bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ + echo 'deb [arch=arm64] http://ftp.debian.org/debian bullseye-backports main' >> /etc/apt/sources.list {%- endif %} ## Make apt-get non-interactive From 74134c0bb69d2af9ef3f4879db3eca4e5213564a Mon Sep 17 00:00:00 2001 From: Qi Luo Date: Wed, 8 Sep 2021 04:09:45 -0700 Subject: [PATCH 144/186] [sonic-utilities] submodule update (#8658) Includes commits ``` d7900dd 2021-09-01 | [config][generic-update] Implementing patch sorting (2nd attempt) (#1794) [Mohamed Ghoneim] 7ed9a91 2021-09-01 | [show] Allow system with no ports in config db run without errors (#1754) [Lior Avramov] ``` --- src/sonic-utilities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-utilities b/src/sonic-utilities index 720b650f8eff..d7900ddf1b30 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit 720b650f8effa7b397db70bd4b9aa8d5952b2fb0 +Subproject commit d7900ddf1b304f806f3532fdbf5981f2df9d5e6a From f4dea87cf97a78bd200a092da2193553c13a0494 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Wed, 8 Sep 2021 08:45:16 -0700 Subject: [PATCH 145/186] Revert "[hostcfgd] Delay hostcfgd and aaastatsd for faster boot time (#7965)" (#8705) cause regression on the kvm testing This reverts commit 76d5223c9a99a54621b87872db8db786c9fcb684. --- .../debian/sonic-host-services-data.aaastatsd.service | 3 +++ .../debian/sonic-host-services-data.aaastatsd.timer | 11 ----------- .../debian/sonic-host-services-data.hostcfgd.service | 3 +++ .../debian/sonic-host-services-data.hostcfgd.timer | 11 ----------- 4 files changed, 6 insertions(+), 22 deletions(-) delete mode 100644 src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer delete mode 100644 src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service index b93fe92c04ed..b03c6a9551c0 100644 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service @@ -12,3 +12,6 @@ Restart=on-failure RestartSec=10 TimeoutStopSec=3 +[Install] +WantedBy=sonic.target + diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer deleted file mode 100644 index e0458ff326f5..000000000000 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Delays aaastatsd daemon until SONiC has started -PartOf=aaastatsd.service - -[Timer] -OnActiveSec=1min 30 sec -Unit=aaastatsd.service - -[Install] -WantedBy=timers.target sonic.target - diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service index 5e2434527124..4adf2aba77ad 100644 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service @@ -9,3 +9,6 @@ After=sonic.target Type=simple ExecStart=/usr/local/bin/hostcfgd +[Install] +WantedBy=sonic.target + diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer deleted file mode 100644 index baf80f4b4cbd..000000000000 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Delays hostcfgd daemon until SONiC has started -PartOf=hostcfgd.service - -[Timer] -OnActiveSec=1min 30 sec -Unit=hostcfgd.service - -[Install] -WantedBy=timers.target sonic.target - From 63ba489c6bd70a2541cd182d902ef34af9261eec Mon Sep 17 00:00:00 2001 From: Nazarii Hnydyn Date: Wed, 8 Sep 2021 19:59:50 +0300 Subject: [PATCH 146/186] [Mellanox] Advance hw-mgmt to V.7.0010.2346. (#8667) Commits on Sep 01, 2021 hw-mgmt: attributes: Add PSU power sensor attributes d8fce39 Commits on Sep 02, 2021 Remove MFT package flint tool from hw-management dump generation. 53d06b2 hw-mgmt: debug: Add timeout to generate-dump.sh b661fa3 Signed-off-by: Nazarii Hnydyn --- platform/mellanox/hw-management/hw-mgmt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/mellanox/hw-management/hw-mgmt b/platform/mellanox/hw-management/hw-mgmt index fedae3bfe21c..b661fa329e2d 160000 --- a/platform/mellanox/hw-management/hw-mgmt +++ b/platform/mellanox/hw-management/hw-mgmt @@ -1 +1 @@ -Subproject commit fedae3bfe21c98fd61e6d1252ee0a67516bcc553 +Subproject commit b661fa329e2dff4fd6c22da89d009169e1008d99 From 888aa541400ce8b2ad7afb5e7b031fd4bc1ca86e Mon Sep 17 00:00:00 2001 From: gechiang <62408185+gechiang@users.noreply.github.com> Date: Wed, 8 Sep 2021 14:39:35 -0700 Subject: [PATCH 147/186] [broadcom]: BRCM SAI 5.0.0.8 Catch up fixes since 5.0.0.6 (#8684) Catch up on fixes from BRCM SUG repo to pick up fixes after 5.0.0.6 all the way up to 5.0.0.8 Fixes include the following: ``` CS00012201827: Warmreboot causes syncd crash with SAI_API_UNSPECIFIED:syncdb_data_file_read:2230 Failed to parse JSON: error -2 DNX: Fix for ACL table create with v6 next hdr attr and many unspecified changes that also went into 5.0.0.8 ``` #### How to verify it Preliminary tests looks fine on both XGS (gechiang) and DNX (judyjoseph) On XGS testing done as following: BGP neighbors were all up with proper routes programmed interfaces are all up Manually ran the following test cases on 7260CX3 T0 DUT and all passed: ``` ipfwd/test_dir_bcast.py fdb/test_fdb.py fib/test_fib.py vlan/test_valn.py ``` Also validated for for CS00012201827 (https://github.com/Azure/sonic-buildimage/issues/8300) --- platform/broadcom/sai.mk | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/platform/broadcom/sai.mk b/platform/broadcom/sai.mk index e4f36385a83a..e8d7ed2cb5e3 100644 --- a/platform/broadcom/sai.mk +++ b/platform/broadcom/sai.mk @@ -1,12 +1,12 @@ -BRCM_SAI = libsaibcm_5.0.0.6-1_amd64.deb -$(BRCM_SAI)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm_5.0.0.6-1_amd64.deb?sv=2015-04-05&sr=b&sig=HA%2FwgMr%2BHnb6zzFCQDfO1WF%2Bf6PBSmIzH13728LTNz4%3D&se=2035-03-31T20%3A45%3A36Z&sp=r" -BRCM_SAI_DEV = libsaibcm-dev_5.0.0.6-1_amd64.deb +BRCM_SAI = libsaibcm_5.0.0.8_amd64.deb +$(BRCM_SAI)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm_5.0.0.8_amd64.deb?sv=2015-04-05&sr=b&sig=T%2FPesnOIeN9802mClMpgk8XFQbqjFAgCnJbbNHxijHo%3D&se=2035-05-13T21%3A34%3A26Z&sp=r" +BRCM_SAI_DEV = libsaibcm-dev_5.0.0.8_amd64.deb $(eval $(call add_derived_package,$(BRCM_SAI),$(BRCM_SAI_DEV))) -$(BRCM_SAI_DEV)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm-dev_5.0.0.6-1_amd64.deb?sv=2015-04-05&sr=b&sig=z634%2BUk14EY5VjEE4tjhvDSP2hiK8s1EJAxjvidl44I%3D&se=2035-03-31T20%3A46%3A17Z&sp=r" +$(BRCM_SAI_DEV)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm-dev_5.0.0.8_amd64.deb?sv=2015-04-05&sr=b&sig=X33hZLhRI3L6f4a5JFSlhJvoaTj%2B3zrmNBM9IzIA%2Bj4%3D&se=2035-05-13T21%3A35%3A58Z&sp=r" # SAI module for DNX Asic family -BRCM_DNX_SAI = libsaibcm_dnx_5.0.0.6-1_amd64.deb -$(BRCM_DNX_SAI)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm_dnx_5.0.0.6-1_amd64.deb?sv=2015-04-05&sr=b&sig=mDcpzWUcTSzNBM6vPPYNuMQ6D%2BTKQAC9k%2Fv0%2Bnz3L%2BM%3D&se=2035-03-31T20%3A46%3A44Z&sp=r" +BRCM_DNX_SAI = libsaibcm_dnx_5.0.0.8_amd64.deb +$(BRCM_DNX_SAI)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm_dnx_5.0.0.8_amd64.deb?sv=2015-04-05&sr=b&sig=uy0OW6ZhWjYntalZunEIIzHUztkOyI7TS3F73Sla9vY%3D&se=2035-05-13T21%3A37%3A06Z&sp=r" SONIC_ONLINE_DEBS += $(BRCM_SAI) SONIC_ONLINE_DEBS += $(BRCM_DNX_SAI) From f53213e551927afba0a0948d98d62e4a2a7d6b70 Mon Sep 17 00:00:00 2001 From: Aravind Mani <53524901+aravindmani-1@users.noreply.github.com> Date: Wed, 8 Sep 2021 17:59:03 -0700 Subject: [PATCH 148/186] DellEMC: Z9332f fix reboot cause issue (#8640) Why I did it Power cycle test case fails for Z9332f in sonic-mgmt framework(#8605). How I did it Modified the platform API to return expected strings. How to verify it Power cycle the device and verify the reboot reason. Run sonic-mgmt test_reboot script. --- .../z9332f/sonic_platform/chassis.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py index a412122bae48..aba6160d1938 100755 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py @@ -110,11 +110,11 @@ class Chassis(ChassisBase): 34: 2, } - reboot_reason_dict = { 0x11: (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Power on reset"), + reboot_reason_dict = { 0x11: (ChassisBase.REBOOT_CAUSE_POWER_LOSS, "Power on reset"), 0x22: (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Soft-set CPU warm reset"), 0x33: (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Soft-set CPU cold reset"), 0x66: (ChassisBase.REBOOT_CAUSE_WATCHDOG, "GPIO watchdog reset"), - 0x77: (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Power cycle reset"), + 0x77: (ChassisBase.REBOOT_CAUSE_POWER_LOSS, "Power cycle reset"), 0x88: (ChassisBase.REBOOT_CAUSE_WATCHDOG, "CPLD watchdog reset") } From 7e02f7b4ba89fb0d6dcdcc0d3d651c92742b2ffd Mon Sep 17 00:00:00 2001 From: Longxiang Lyu <35479537+lolyu@users.noreply.github.com> Date: Thu, 9 Sep 2021 22:25:14 +0800 Subject: [PATCH 149/186] [submodule] advance sonic-utilities (#8695) To include sonic_installer swap setup changes 171eb4f [sonic_installer] Add swap setup support (#1787) 6483b0b QOS fieldvalue refernce ABNF format to string (#1626) 8d16eb5 [Fast-reboot] Set flex counters delay indicator to prevent flex counters enablement after fast-reboot (#1768) 1bc24ca [portstat pfcstat] Unify the packet number format in the output of portstat and pfcstat in all cases (#1755) d7900dd [config][generic-update] Implementing patch sorting (2nd attempt) (#1794) 7ed9a91 [show] Allow system with no ports in config db run without errors (#1754) Signed-off-by: Longxiang Lyu --- src/sonic-utilities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-utilities b/src/sonic-utilities index d7900ddf1b30..171eb4f4c3df 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit d7900ddf1b304f806f3532fdbf5981f2df9d5e6a +Subproject commit 171eb4f4c3dff0c75e38c9f4dfbdbeb72a8eeb5a From 8514a484cd54adab63ecdbf41bd2e07b70f3f59b Mon Sep 17 00:00:00 2001 From: pettershao-ragilenetworks <81281940+pettershao-ragilenetworks@users.noreply.github.com> Date: Fri, 10 Sep 2021 01:49:37 +0800 Subject: [PATCH 150/186] [platform/ragile] support ra-b6910-64c (#7950) What I did it Add new platform x86_64-ragile_ra-b6910-64c-r0 (Tomahawk 3) ASIC Vendor: Broadcom Switch ASIC: Tomahawk 3 Port Config: 64x100G -How I did it Provide device and platform related files. -How to verify it show platform fan show platform ssdhealth show platform psustatus show platform summary show platform syseeprom show platform temperature show interface status --- .../RA-B6910-64C/port_config.ini | 65 + .../RA-B6910-64C/sai.profile | 1 + .../th2-ra-b6910-64c-64x100G.config.bcm | 976 +++ .../x86_64-ragile_ra-b6910-64c-r0/bcm.rc | 1 + .../x86_64-ragile_ra-b6910-64c-r0/bcm_pre.rc | 0 .../x86_64-ragile_ra-b6910-64c-r0/default_sku | 1 + .../x86_64-ragile_ra-b6910-64c-r0/dev.xml | 122 + .../installer.conf | 1 + .../led_proc_init.soc | 23 + .../minigraph.xml | 63 + .../x86_64-ragile_ra-b6910-64c-r0/monitor.py | 223 + .../x86_64-ragile_ra-b6910-64c-r0/pcie.yaml | 429 + .../pddf/pd-plugin.json | 67 + .../pddf/pddf-device.json | 7012 +++++++++++++++++ .../pddf_support | 0 .../platform_env.conf | 0 .../plugins/eeprom.py | 25 + .../plugins/fanutil.py | 199 + .../plugins/ledutil.py | 59 + .../plugins/psuutil.py | 270 + .../plugins/sfputil.py | 236 + .../plugins/sysstatutil.py | 82 + .../plugins/thermalutil.py | 75 + .../pmon_daemon_control.json | 5 + .../sensors.conf | 21 + .../sonic_platform_config/chassis.json | 3 + .../sonic_platform_config/component.json | 60 + .../sonic_platform_config/fan.json | 152 + .../sonic_platform_config/psu.json | 134 + .../sonic_platform_config/thermal.json | 130 + .../x86_64-ragile_ra-b6910-64c-r0/systest.py | 43 + platform/broadcom/one-image.mk | 1 + platform/broadcom/platform-modules-ragile.mk | 9 + .../common/script/ragileutil.py | 2 +- .../debian/control | 4 + .../debian/rule-ragile.mk | 1 + .../ra-b6910-64c/LICENSE | 15 + .../ra-b6910-64c/MAINTAINERS | 5 + .../ra-b6910-64c/Makefile | 25 + .../ra-b6910-64c/README.md | 1 + .../x86_64_ragile_ra_b6910_64c_r0_config.py | 420 + .../ra-b6910-64c/modules/driver/Makefile | 1 + .../ra-b6910-64c/modules/driver/rg_cpld.c | 509 ++ .../scripts/pddf_post_driver_install.sh | 31 + .../ra-b6910-64c/setup.py | 32 + .../ra-b6910-64c/sonic_platform/__init__.py | 4 + .../ra-b6910-64c/sonic_platform/chassis.py | 137 + .../ra-b6910-64c/sonic_platform/common.py | 44 + .../ra-b6910-64c/sonic_platform/eeprom.py | 14 + .../ra-b6910-64c/sonic_platform/fan.py | 39 + .../ra-b6910-64c/sonic_platform/fan_drawer.py | 71 + .../ra-b6910-64c/sonic_platform/platform.py | 25 + .../ra-b6910-64c/sonic_platform/psu.py | 36 + .../ra-b6910-64c/sonic_platform/sfp.py | 17 + .../ra-b6910-64c/sonic_platform/thermal.py | 17 + .../ra-b6910-64c/sonic_platform/watchdog.py | 23 + .../systemd/pddf-platform-init.service | 1 + src/sonic-device-data/tests/permitted_list | 29 + 58 files changed, 11990 insertions(+), 1 deletion(-) create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/port_config.ini create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/sai.profile create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/th2-ra-b6910-64c-64x100G.config.bcm create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm.rc create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm_pre.rc create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/default_sku create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/dev.xml create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/installer.conf create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/led_proc_init.soc create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/minigraph.xml create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/monitor.py create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/pcie.yaml create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pd-plugin.json create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pddf-device.json create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf_support create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/platform_env.conf create mode 100755 device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/eeprom.py create mode 100755 device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/fanutil.py create mode 100755 device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/ledutil.py create mode 100755 device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/psuutil.py create mode 100755 device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sfputil.py create mode 100755 device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sysstatutil.py create mode 100755 device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/thermalutil.py create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/pmon_daemon_control.json create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/sensors.conf create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/chassis.json create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/component.json create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/fan.json create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/psu.json create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/thermal.json create mode 100644 device/ragile/x86_64-ragile_ra-b6910-64c-r0/systest.py create mode 100755 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/LICENSE create mode 100755 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/MAINTAINERS create mode 100755 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/Makefile create mode 100755 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/README.md create mode 100755 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/config/x86_64_ragile_ra_b6910_64c_r0_config.py create mode 100755 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/Makefile create mode 100755 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/rg_cpld.c create mode 100755 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/scripts/pddf_post_driver_install.sh create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/setup.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/__init__.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/chassis.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/common.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/eeprom.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan_drawer.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/platform.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/psu.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/sfp.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/thermal.py create mode 100644 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/watchdog.py create mode 120000 platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/systemd/pddf-platform-init.service diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/port_config.ini b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/port_config.ini new file mode 100644 index 000000000000..38a55bd9e63e --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/port_config.ini @@ -0,0 +1,65 @@ +# name lanes alias index speed +Ethernet1 9,10,11,12 hundredGigE1 0 100000 +Ethernet2 13,14,15,16 hundredGigE2 1 100000 +Ethernet3 25,26,27,28 hundredGigE3 2 100000 +Ethernet4 29,30,31,32 hundredGigE4 3 100000 +Ethernet5 41,42,43,44 hundredGigE5 4 100000 +Ethernet6 45,46,47,48 hundredGigE6 5 100000 +Ethernet7 57,58,59,60 hundredGigE7 6 100000 +Ethernet8 61,62,63,64 hundredGigE8 7 100000 +Ethernet9 73,74,75,76 hundredGigE9 8 100000 +Ethernet10 77,78,79,80 hundredGigE10 9 100000 +Ethernet11 89,90,91,92 hundredGigE11 10 100000 +Ethernet12 93,94,95,96 hundredGigE12 11 100000 +Ethernet13 105,106,107,108 hundredGigE13 12 100000 +Ethernet14 109,110,111,112 hundredGigE14 13 100000 +Ethernet15 121,122,123,124 hundredGigE15 14 100000 +Ethernet16 125,126,127,128 hundredGigE16 15 100000 +Ethernet17 137,138,139,140 hundredGigE17 16 100000 +Ethernet18 141,142,143,144 hundredGigE18 17 100000 +Ethernet19 153,154,155,156 hundredGigE19 18 100000 +Ethernet20 157,158,159,160 hundredGigE20 19 100000 +Ethernet21 169,170,171,172 hundredGigE21 20 100000 +Ethernet22 173,174,175,176 hundredGigE22 21 100000 +Ethernet23 185,186,187,188 hundredGigE23 22 100000 +Ethernet24 189,190,191,192 hundredGigE24 23 100000 +Ethernet25 201,202,203,204 hundredGigE25 24 100000 +Ethernet26 205,206,207,208 hundredGigE26 25 100000 +Ethernet27 217,218,219,220 hundredGigE27 26 100000 +Ethernet28 221,222,223,224 hundredGigE28 27 100000 +Ethernet29 233,234,235,236 hundredGigE29 28 100000 +Ethernet30 237,238,239,240 hundredGigE30 29 100000 +Ethernet31 249,250,251,252 hundredGigE31 30 100000 +Ethernet32 253,254,255,256 hundredGigE32 31 100000 +Ethernet33 1,2,3,4 hundredGigE33 32 100000 +Ethernet34 5,6,7,8 hundredGigE34 33 100000 +Ethernet35 17,18,19,20 hundredGigE35 34 100000 +Ethernet36 21,22,23,24 hundredGigE36 35 100000 +Ethernet37 33,34,35,36 hundredGigE37 36 100000 +Ethernet38 37,38,39,40 hundredGigE38 37 100000 +Ethernet39 49,50,51,52 hundredGigE39 38 100000 +Ethernet40 53,54,55,56 hundredGigE40 39 100000 +Ethernet41 65,66,67,68 hundredGigE41 40 100000 +Ethernet42 69,70,71,72 hundredGigE42 41 100000 +Ethernet43 81,82,83,84 hundredGigE43 42 100000 +Ethernet44 85,86,87,88 hundredGigE44 43 100000 +Ethernet45 97,98,99,100 hundredGigE45 44 100000 +Ethernet46 101,102,103,104 hundredGigE46 45 100000 +Ethernet47 113,114,115,116 hundredGigE47 46 100000 +Ethernet48 117,118,119,120 hundredGigE48 47 100000 +Ethernet49 129,130,131,132 hundredGigE49 48 100000 +Ethernet50 133,134,135,136 hundredGigE50 49 100000 +Ethernet51 145,146,147,148 hundredGigE51 50 100000 +Ethernet52 149,150,151,152 hundredGigE52 51 100000 +Ethernet53 161,162,163,164 hundredGigE53 52 100000 +Ethernet54 165,166,167,168 hundredGigE54 53 100000 +Ethernet55 177,178,179,180 hundredGigE55 54 100000 +Ethernet56 181,182,183,184 hundredGigE56 55 100000 +Ethernet57 193,194,195,196 hundredGigE57 56 100000 +Ethernet58 197,198,199,200 hundredGigE58 57 100000 +Ethernet59 209,210,211,212 hundredGigE59 58 100000 +Ethernet60 213,214,215,216 hundredGigE60 59 100000 +Ethernet61 225,226,227,228 hundredGigE61 60 100000 +Ethernet62 229,230,231,232 hundredGigE62 61 100000 +Ethernet63 241,242,243,244 hundredGigE63 62 100000 +Ethernet64 245,246,247,248 hundredGigE64 63 100000 \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/sai.profile b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/sai.profile new file mode 100644 index 000000000000..3e996d3bea3e --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/th2-ra-b6910-64c-64x100G.config.bcm diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/th2-ra-b6910-64c-64x100G.config.bcm b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/th2-ra-b6910-64c-64x100G.config.bcm new file mode 100644 index 000000000000..787c851bcc2e --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/th2-ra-b6910-64c-64x100G.config.bcm @@ -0,0 +1,976 @@ +core_clock_frequency=1700 +dpp_clock_ratio=2:3 +table_dma_enable=1 +tslam_dma_enable=1 +tdma_intr_enable=0 +tslam_intr_enable=0 +miim_intr_enable=0 +portmap_1=9:100 +#portmap_2=10:25:i +#portmap_3=11:25:i +#portmap_4=12:25:i +portmap_5=13:100 +#portmap_6=14:25:i +#portmap_7=15:25:i +#portmap_8=16:25:i +portmap_9=1:100 +#portmap_10=2:25:i +#portmap_11=3:25:i +#portmap_12=4:25:i +portmap_13=5:100 +#portmap_14=6:25:i +#portmap_15=7:25:i +#portmap_16=8:25:i +portmap_17=25:100 +#portmap_18=26:25:i +#portmap_19=27:25:i +#portmap_20=28:25:i +portmap_21=29:100 +portmap_22=17:100 +portmap_23=21:100 +portmap_24=41:100 +portmap_25=45:100 +portmap_26=33:100 +portmap_27=37:100 +portmap_28=57:100 +portmap_29=61:100 +portmap_30=49:100 +portmap_31=53:100 + +portmap_34=73:100 +#portmap_35=74:25:i +#portmap_36=75:25:i +#portmap_37=76:25:i +portmap_38=77:100 +#portmap_39=78:25:i +#portmap_40=79:25:i +#portmap_41=80:25:i +portmap_42=65:100 +#portmap_43=66:25:i +#portmap_44=67:25:i +#portmap_45=68:25:i +portmap_46=69:100 +#portmap_47=70:25:i +#portmap_48=71:25:i +#portmap_49=72:25:i +portmap_50=89:100 +#portmap_51=90:25:i +#portmap_52=91:25:i +#portmap_53=92:25:i +portmap_54=93:100 +portmap_55=81:100 +portmap_56=85:100 +portmap_57=105:100 +portmap_58=109:100 +portmap_59=97:100 +portmap_60=101:100 +portmap_61=121:100 +portmap_62=125:100 +portmap_63=113:100 +portmap_64=117:100 + +portmap_68=137:100 +#portmap_69=138:25:i +#portmap_70=139:25:i +#portmap_71=140:25:i +portmap_72=141:100 +#portmap_73=142:25:i +#portmap_74=143:25:i +#portmap_75=144:25:i +portmap_76=129:100 +#portmap_77=130:25:i +#portmap_78=131:25:i +#portmap_79=132:25:i +portmap_80=133:100 +#portmap_81=134:25:i +#portmap_82=135:25:i +#portmap_83=136:25:i +portmap_84=153:100 +#portmap_85=154:25:i +#portmap_86=155:25:i +#portmap_87=156:25:i +portmap_88=157:100 +portmap_89=145:100 +portmap_90=149:100 +portmap_91=169:100 +portmap_92=173:100 +portmap_93=161:100 +portmap_94=165:100 +portmap_95=185:100 +portmap_96=189:100 +portmap_97=177:100 +portmap_98=181:100 + +portmap_102=201:100 +#portmap_103=202:25:i +#portmap_104=203:25:i +#portmap_105=204:25:i +portmap_106=205:100 +#portmap_107=206:25:i +#portmap_108=207:25:i +#portmap_109=208:25:i +portmap_110=193:100 +#portmap_111=194:25:i +#portmap_112=195:25:i +#portmap_113=196:25:i +portmap_114=197:100 +#portmap_115=198:25:i +#portmap_116=199:25:i +#portmap_117=200:25:i +portmap_118=217:100 +#portmap_119=218:25:i +#portmap_120=219:25:i +#portmap_121=220:25:i +portmap_122=221:100 +portmap_123=209:100 +portmap_124=213:100 +portmap_125=233:100 +portmap_126=237:100 +portmap_127=225:100 +portmap_128=229:100 +portmap_129=249:100 +portmap_130=253:100 +portmap_131=241:100 +portmap_132=245:100 + +pbmp_xport_xe=0x3ffc444447ff111113ffc44444ffe22222 +oversubscribe_mode=1 + +port_flex_enable=1 +#L2/L3 only use dedicated table (8K) each +#FPEM occupy 2 banks +#fpem_mem_entries=65536 +l3_mem_entries=49152 +l2_mem_entries=32768 +l3_alpm_enable=2 +ipv6_lpm_128b_enable=1 + +l2xmsg_mode=0 + +phy_chain_tx_lane_map_physical{1.0}=0x0213 +phy_chain_tx_lane_map_physical{5.0}=0x0123 +phy_chain_tx_lane_map_physical{9.0}=0x2130 +phy_chain_tx_lane_map_physical{13.0}=0x3012 +phy_chain_tx_lane_map_physical{17.0}=0x0213 +phy_chain_tx_lane_map_physical{21.0}=0x1203 +phy_chain_tx_lane_map_physical{25.0}=0x2130 +phy_chain_tx_lane_map_physical{29.0}=0x1230 +phy_chain_tx_lane_map_physical{33.0}=0x1302 +phy_chain_tx_lane_map_physical{37.0}=0x1203 +phy_chain_tx_lane_map_physical{41.0}=0x1302 +phy_chain_tx_lane_map_physical{45.0}=0x3021 +phy_chain_tx_lane_map_physical{49.0}=0x3012 +phy_chain_tx_lane_map_physical{53.0}=0x1302 +phy_chain_tx_lane_map_physical{57.0}=0x0213 +phy_chain_tx_lane_map_physical{61.0}=0x3021 +phy_chain_tx_lane_map_physical{65.0}=0x3012 +phy_chain_tx_lane_map_physical{69.0}=0x0213 +phy_chain_tx_lane_map_physical{73.0}=0x1302 +phy_chain_tx_lane_map_physical{77.0}=0x3021 +phy_chain_tx_lane_map_physical{81.0}=0x3012 +phy_chain_tx_lane_map_physical{85.0}=0x1302 +phy_chain_tx_lane_map_physical{89.0}=0x0213 +phy_chain_tx_lane_map_physical{93.0}=0x3021 +phy_chain_tx_lane_map_physical{97.0}=0x3012 +phy_chain_tx_lane_map_physical{101.0}=0x3120 +phy_chain_tx_lane_map_physical{105.0}=0x3210 +phy_chain_tx_lane_map_physical{109.0}=0x0213 +phy_chain_tx_lane_map_physical{113.0}=0x1230 +phy_chain_tx_lane_map_physical{117.0}=0x3120 +phy_chain_tx_lane_map_physical{121.0}=0x0321 +phy_chain_tx_lane_map_physical{125.0}=0x0213 +phy_chain_tx_lane_map_physical{129.0}=0x2103 +phy_chain_tx_lane_map_physical{133.0}=0x1302 +phy_chain_tx_lane_map_physical{137.0}=0x1230 +phy_chain_tx_lane_map_physical{141.0}=0x3120 +phy_chain_tx_lane_map_physical{145.0}=0x2103 +phy_chain_tx_lane_map_physical{149.0}=0x0213 +phy_chain_tx_lane_map_physical{153.0}=0x0123 +phy_chain_tx_lane_map_physical{157.0}=0x2103 +phy_chain_tx_lane_map_physical{161.0}=0x3012 +phy_chain_tx_lane_map_physical{165.0}=0x3210 +phy_chain_tx_lane_map_physical{169.0}=0x2031 +phy_chain_tx_lane_map_physical{173.0}=0x1230 +phy_chain_tx_lane_map_physical{177.0}=0x3012 +phy_chain_tx_lane_map_physical{181.0}=0x1032 +phy_chain_tx_lane_map_physical{185.0}=0x3120 +phy_chain_tx_lane_map_physical{189.0}=0x2103 +phy_chain_tx_lane_map_physical{193.0}=0x3012 +phy_chain_tx_lane_map_physical{197.0}=0x3210 +phy_chain_tx_lane_map_physical{201.0}=0x2031 +phy_chain_tx_lane_map_physical{205.0}=0x2103 +phy_chain_tx_lane_map_physical{209.0}=0x3012 +phy_chain_tx_lane_map_physical{213.0}=0x1032 +phy_chain_tx_lane_map_physical{217.0}=0x3120 +phy_chain_tx_lane_map_physical{221.0}=0x0213 +phy_chain_tx_lane_map_physical{225.0}=0x3120 +phy_chain_tx_lane_map_physical{229.0}=0x2031 +phy_chain_tx_lane_map_physical{233.0}=0x1203 +phy_chain_tx_lane_map_physical{237.0}=0x3210 +phy_chain_tx_lane_map_physical{241.0}=0x3021 +phy_chain_tx_lane_map_physical{245.0}=0x2031 +phy_chain_tx_lane_map_physical{249.0}=0x0213 +phy_chain_tx_lane_map_physical{253.0}=0x2103 + +phy_chain_rx_lane_map_physical{1.0}=0x2301 +phy_chain_rx_lane_map_physical{5.0}=0x1032 +phy_chain_rx_lane_map_physical{9.0}=0x2103 +phy_chain_rx_lane_map_physical{13.0}=0x2301 +phy_chain_rx_lane_map_physical{17.0}=0x1032 +phy_chain_rx_lane_map_physical{21.0}=0x2031 +phy_chain_rx_lane_map_physical{25.0}=0x0321 +phy_chain_rx_lane_map_physical{29.0}=0x1032 +phy_chain_rx_lane_map_physical{33.0}=0x3102 +phy_chain_rx_lane_map_physical{37.0}=0x3102 +phy_chain_rx_lane_map_physical{41.0}=0x2130 +phy_chain_rx_lane_map_physical{45.0}=0x2031 +phy_chain_rx_lane_map_physical{49.0}=0x3102 +phy_chain_rx_lane_map_physical{53.0}=0x0231 +phy_chain_rx_lane_map_physical{57.0}=0x3021 +phy_chain_rx_lane_map_physical{61.0}=0x2031 +phy_chain_rx_lane_map_physical{65.0}=0x3102 +phy_chain_rx_lane_map_physical{69.0}=0x3102 +phy_chain_rx_lane_map_physical{73.0}=0x2130 +phy_chain_rx_lane_map_physical{77.0}=0x2031 +phy_chain_rx_lane_map_physical{81.0}=0x3102 +phy_chain_rx_lane_map_physical{85.0}=0x0231 +phy_chain_rx_lane_map_physical{89.0}=0x3021 +phy_chain_rx_lane_map_physical{93.0}=0x2031 +phy_chain_rx_lane_map_physical{97.0}=0x0231 +phy_chain_rx_lane_map_physical{101.0}=0x0132 +phy_chain_rx_lane_map_physical{105.0}=0x3012 +phy_chain_rx_lane_map_physical{109.0}=0x3210 +phy_chain_rx_lane_map_physical{113.0}=0x2301 +phy_chain_rx_lane_map_physical{117.0}=0x1023 +phy_chain_rx_lane_map_physical{121.0}=0x0321 +phy_chain_rx_lane_map_physical{125.0}=0x2310 +phy_chain_rx_lane_map_physical{129.0}=0x2301 +phy_chain_rx_lane_map_physical{133.0}=0x2310 +phy_chain_rx_lane_map_physical{137.0}=0x2103 +phy_chain_rx_lane_map_physical{141.0}=0x2310 +phy_chain_rx_lane_map_physical{145.0}=0x2301 +phy_chain_rx_lane_map_physical{149.0}=0x1023 +phy_chain_rx_lane_map_physical{153.0}=0x2103 +phy_chain_rx_lane_map_physical{157.0}=0x0213 +phy_chain_rx_lane_map_physical{161.0}=0x0231 +phy_chain_rx_lane_map_physical{165.0}=0x0231 +phy_chain_rx_lane_map_physical{169.0}=0x0132 +phy_chain_rx_lane_map_physical{173.0}=0x0213 +phy_chain_rx_lane_map_physical{177.0}=0x0231 +phy_chain_rx_lane_map_physical{181.0}=0x3102 +phy_chain_rx_lane_map_physical{185.0}=0x3201 +phy_chain_rx_lane_map_physical{189.0}=0x0213 +phy_chain_rx_lane_map_physical{193.0}=0x0231 +phy_chain_rx_lane_map_physical{197.0}=0x0231 +phy_chain_rx_lane_map_physical{201.0}=0x0132 +phy_chain_rx_lane_map_physical{205.0}=0x0213 +phy_chain_rx_lane_map_physical{209.0}=0x0231 +phy_chain_rx_lane_map_physical{213.0}=0x3102 +phy_chain_rx_lane_map_physical{217.0}=0x3201 +phy_chain_rx_lane_map_physical{221.0}=0x0213 +phy_chain_rx_lane_map_physical{225.0}=0x0213 +phy_chain_rx_lane_map_physical{229.0}=0x0123 +phy_chain_rx_lane_map_physical{233.0}=0x3012 +phy_chain_rx_lane_map_physical{237.0}=0x3210 +phy_chain_rx_lane_map_physical{241.0}=0x2301 +phy_chain_rx_lane_map_physical{245.0}=0x0123 +phy_chain_rx_lane_map_physical{249.0}=0x1320 +phy_chain_rx_lane_map_physical{253.0}=0x2301 + + +phy_chain_rx_polarity_flip_physical{1.0}=0x0 +phy_chain_rx_polarity_flip_physical{2.0}=0x1 +phy_chain_rx_polarity_flip_physical{3.0}=0x0 +phy_chain_rx_polarity_flip_physical{4.0}=0x1 +phy_chain_rx_polarity_flip_physical{5.0}=0x1 +phy_chain_rx_polarity_flip_physical{6.0}=0x0 +phy_chain_rx_polarity_flip_physical{7.0}=0x1 +phy_chain_rx_polarity_flip_physical{8.0}=0x0 +phy_chain_rx_polarity_flip_physical{9.0}=0x1 +phy_chain_rx_polarity_flip_physical{10.0}=0x0 +phy_chain_rx_polarity_flip_physical{11.0}=0x1 +phy_chain_rx_polarity_flip_physical{12.0}=0x0 +phy_chain_rx_polarity_flip_physical{13.0}=0x1 +phy_chain_rx_polarity_flip_physical{14.0}=0x0 +phy_chain_rx_polarity_flip_physical{15.0}=0x1 +phy_chain_rx_polarity_flip_physical{16.0}=0x0 +phy_chain_rx_polarity_flip_physical{17.0}=0x1 +phy_chain_rx_polarity_flip_physical{18.0}=0x0 +phy_chain_rx_polarity_flip_physical{19.0}=0x1 +phy_chain_rx_polarity_flip_physical{20.0}=0x0 +phy_chain_rx_polarity_flip_physical{21.0}=0x0 +phy_chain_rx_polarity_flip_physical{22.0}=0x0 +phy_chain_rx_polarity_flip_physical{23.0}=0x1 +phy_chain_rx_polarity_flip_physical{24.0}=0x1 +phy_chain_rx_polarity_flip_physical{25.0}=0x0 +phy_chain_rx_polarity_flip_physical{26.0}=0x0 +phy_chain_rx_polarity_flip_physical{27.0}=0x1 +phy_chain_rx_polarity_flip_physical{28.0}=0x1 +phy_chain_rx_polarity_flip_physical{29.0}=0x1 +phy_chain_rx_polarity_flip_physical{30.0}=0x1 +phy_chain_rx_polarity_flip_physical{31.0}=0x1 +phy_chain_rx_polarity_flip_physical{32.0}=0x0 +phy_chain_rx_polarity_flip_physical{33.0}=0x0 +phy_chain_rx_polarity_flip_physical{34.0}=0x0 +phy_chain_rx_polarity_flip_physical{35.0}=0x1 +phy_chain_rx_polarity_flip_physical{36.0}=0x1 +phy_chain_rx_polarity_flip_physical{37.0}=0x1 +phy_chain_rx_polarity_flip_physical{38.0}=0x1 +phy_chain_rx_polarity_flip_physical{39.0}=0x0 +phy_chain_rx_polarity_flip_physical{40.0}=0x0 +phy_chain_rx_polarity_flip_physical{41.0}=0x1 +phy_chain_rx_polarity_flip_physical{42.0}=0x0 +phy_chain_rx_polarity_flip_physical{43.0}=0x0 +phy_chain_rx_polarity_flip_physical{44.0}=0x1 +phy_chain_rx_polarity_flip_physical{45.0}=0x1 +phy_chain_rx_polarity_flip_physical{46.0}=0x1 +phy_chain_rx_polarity_flip_physical{47.0}=0x0 +phy_chain_rx_polarity_flip_physical{48.0}=0x0 +phy_chain_rx_polarity_flip_physical{49.0}=0x0 +phy_chain_rx_polarity_flip_physical{50.0}=0x0 +phy_chain_rx_polarity_flip_physical{51.0}=0x1 +phy_chain_rx_polarity_flip_physical{52.0}=0x1 +phy_chain_rx_polarity_flip_physical{53.0}=0x0 +phy_chain_rx_polarity_flip_physical{54.0}=0x0 +phy_chain_rx_polarity_flip_physical{55.0}=0x1 +phy_chain_rx_polarity_flip_physical{56.0}=0x1 +phy_chain_rx_polarity_flip_physical{57.0}=0x0 +phy_chain_rx_polarity_flip_physical{58.0}=0x1 +phy_chain_rx_polarity_flip_physical{59.0}=0x1 +phy_chain_rx_polarity_flip_physical{60.0}=0x0 +phy_chain_rx_polarity_flip_physical{61.0}=0x1 +phy_chain_rx_polarity_flip_physical{62.0}=0x1 +phy_chain_rx_polarity_flip_physical{63.0}=0x0 +phy_chain_rx_polarity_flip_physical{64.0}=0x0 +phy_chain_rx_polarity_flip_physical{65.0}=0x0 +phy_chain_rx_polarity_flip_physical{66.0}=0x0 +phy_chain_rx_polarity_flip_physical{67.0}=0x1 +phy_chain_rx_polarity_flip_physical{68.0}=0x1 +phy_chain_rx_polarity_flip_physical{69.0}=0x1 +phy_chain_rx_polarity_flip_physical{70.0}=0x1 +phy_chain_rx_polarity_flip_physical{71.0}=0x0 +phy_chain_rx_polarity_flip_physical{72.0}=0x0 +phy_chain_rx_polarity_flip_physical{73.0}=0x1 +phy_chain_rx_polarity_flip_physical{74.0}=0x0 +phy_chain_rx_polarity_flip_physical{75.0}=0x0 +phy_chain_rx_polarity_flip_physical{76.0}=0x1 +phy_chain_rx_polarity_flip_physical{77.0}=0x1 +phy_chain_rx_polarity_flip_physical{78.0}=0x1 +phy_chain_rx_polarity_flip_physical{79.0}=0x0 +phy_chain_rx_polarity_flip_physical{80.0}=0x0 +phy_chain_rx_polarity_flip_physical{81.0}=0x0 +phy_chain_rx_polarity_flip_physical{82.0}=0x0 +phy_chain_rx_polarity_flip_physical{83.0}=0x1 +phy_chain_rx_polarity_flip_physical{84.0}=0x1 +phy_chain_rx_polarity_flip_physical{85.0}=0x0 +phy_chain_rx_polarity_flip_physical{86.0}=0x0 +phy_chain_rx_polarity_flip_physical{87.0}=0x1 +phy_chain_rx_polarity_flip_physical{88.0}=0x1 +phy_chain_rx_polarity_flip_physical{89.0}=0x0 +phy_chain_rx_polarity_flip_physical{90.0}=0x1 +phy_chain_rx_polarity_flip_physical{91.0}=0x1 +phy_chain_rx_polarity_flip_physical{92.0}=0x0 +phy_chain_rx_polarity_flip_physical{93.0}=0x1 +phy_chain_rx_polarity_flip_physical{94.0}=0x1 +phy_chain_rx_polarity_flip_physical{95.0}=0x0 +phy_chain_rx_polarity_flip_physical{96.0}=0x0 +phy_chain_rx_polarity_flip_physical{97.0}=0x1 +phy_chain_rx_polarity_flip_physical{98.0}=0x1 +phy_chain_rx_polarity_flip_physical{99.0}=0x0 +phy_chain_rx_polarity_flip_physical{100.0}=0x0 +phy_chain_rx_polarity_flip_physical{101.0}=0x0 +phy_chain_rx_polarity_flip_physical{102.0}=0x1 +phy_chain_rx_polarity_flip_physical{103.0}=0x1 +phy_chain_rx_polarity_flip_physical{104.0}=0x0 +phy_chain_rx_polarity_flip_physical{105.0}=0x1 +phy_chain_rx_polarity_flip_physical{106.0}=0x1 +phy_chain_rx_polarity_flip_physical{107.0}=0x0 +phy_chain_rx_polarity_flip_physical{108.0}=0x1 +phy_chain_rx_polarity_flip_physical{109.0}=0x1 +phy_chain_rx_polarity_flip_physical{110.0}=0x0 +phy_chain_rx_polarity_flip_physical{111.0}=0x1 +phy_chain_rx_polarity_flip_physical{112.0}=0x0 +phy_chain_rx_polarity_flip_physical{113.0}=0x1 +phy_chain_rx_polarity_flip_physical{114.0}=0x0 +phy_chain_rx_polarity_flip_physical{115.0}=0x1 +phy_chain_rx_polarity_flip_physical{116.0}=0x0 +phy_chain_rx_polarity_flip_physical{117.0}=0x1 +phy_chain_rx_polarity_flip_physical{118.0}=0x0 +phy_chain_rx_polarity_flip_physical{119.0}=0x0 +phy_chain_rx_polarity_flip_physical{120.0}=0x1 +phy_chain_rx_polarity_flip_physical{121.0}=0x0 +phy_chain_rx_polarity_flip_physical{122.0}=0x1 +phy_chain_rx_polarity_flip_physical{123.0}=0x0 +phy_chain_rx_polarity_flip_physical{124.0}=0x1 +phy_chain_rx_polarity_flip_physical{125.0}=0x1 +phy_chain_rx_polarity_flip_physical{126.0}=0x0 +phy_chain_rx_polarity_flip_physical{127.0}=0x0 +phy_chain_rx_polarity_flip_physical{128.0}=0x1 +phy_chain_rx_polarity_flip_physical{129.0}=0x0 +phy_chain_rx_polarity_flip_physical{130.0}=0x1 +phy_chain_rx_polarity_flip_physical{131.0}=0x0 +phy_chain_rx_polarity_flip_physical{132.0}=0x1 +phy_chain_rx_polarity_flip_physical{133.0}=0x1 +phy_chain_rx_polarity_flip_physical{134.0}=0x0 +phy_chain_rx_polarity_flip_physical{135.0}=0x0 +phy_chain_rx_polarity_flip_physical{136.0}=0x1 +phy_chain_rx_polarity_flip_physical{137.0}=0x1 +phy_chain_rx_polarity_flip_physical{138.0}=0x0 +phy_chain_rx_polarity_flip_physical{139.0}=0x1 +phy_chain_rx_polarity_flip_physical{140.0}=0x0 +phy_chain_rx_polarity_flip_physical{141.0}=0x0 +phy_chain_rx_polarity_flip_physical{142.0}=0x1 +phy_chain_rx_polarity_flip_physical{143.0}=0x1 +phy_chain_rx_polarity_flip_physical{144.0}=0x0 +phy_chain_rx_polarity_flip_physical{145.0}=0x0 +phy_chain_rx_polarity_flip_physical{146.0}=0x1 +phy_chain_rx_polarity_flip_physical{147.0}=0x0 +phy_chain_rx_polarity_flip_physical{148.0}=0x1 +phy_chain_rx_polarity_flip_physical{149.0}=0x0 +phy_chain_rx_polarity_flip_physical{150.0}=0x1 +phy_chain_rx_polarity_flip_physical{151.0}=0x1 +phy_chain_rx_polarity_flip_physical{152.0}=0x0 +phy_chain_rx_polarity_flip_physical{153.0}=0x1 +phy_chain_rx_polarity_flip_physical{154.0}=0x0 +phy_chain_rx_polarity_flip_physical{155.0}=0x1 +phy_chain_rx_polarity_flip_physical{156.0}=0x0 +phy_chain_rx_polarity_flip_physical{157.0}=0x1 +phy_chain_rx_polarity_flip_physical{158.0}=0x1 +phy_chain_rx_polarity_flip_physical{159.0}=0x0 +phy_chain_rx_polarity_flip_physical{160.0}=0x0 +phy_chain_rx_polarity_flip_physical{161.0}=0x1 +phy_chain_rx_polarity_flip_physical{162.0}=0x1 +phy_chain_rx_polarity_flip_physical{163.0}=0x0 +phy_chain_rx_polarity_flip_physical{164.0}=0x0 +phy_chain_rx_polarity_flip_physical{165.0}=0x0 +phy_chain_rx_polarity_flip_physical{166.0}=0x0 +phy_chain_rx_polarity_flip_physical{167.0}=0x1 +phy_chain_rx_polarity_flip_physical{168.0}=0x1 +phy_chain_rx_polarity_flip_physical{169.0}=0x1 +phy_chain_rx_polarity_flip_physical{170.0}=0x0 +phy_chain_rx_polarity_flip_physical{171.0}=0x0 +phy_chain_rx_polarity_flip_physical{172.0}=0x1 +phy_chain_rx_polarity_flip_physical{173.0}=0x1 +phy_chain_rx_polarity_flip_physical{174.0}=0x1 +phy_chain_rx_polarity_flip_physical{175.0}=0x0 +phy_chain_rx_polarity_flip_physical{176.0}=0x0 +phy_chain_rx_polarity_flip_physical{177.0}=0x1 +phy_chain_rx_polarity_flip_physical{178.0}=0x1 +phy_chain_rx_polarity_flip_physical{179.0}=0x0 +phy_chain_rx_polarity_flip_physical{180.0}=0x0 +phy_chain_rx_polarity_flip_physical{181.0}=0x1 +phy_chain_rx_polarity_flip_physical{182.0}=0x1 +phy_chain_rx_polarity_flip_physical{183.0}=0x0 +phy_chain_rx_polarity_flip_physical{184.0}=0x0 +phy_chain_rx_polarity_flip_physical{185.0}=0x0 +phy_chain_rx_polarity_flip_physical{186.0}=0x1 +phy_chain_rx_polarity_flip_physical{187.0}=0x1 +phy_chain_rx_polarity_flip_physical{188.0}=0x0 +phy_chain_rx_polarity_flip_physical{189.0}=0x1 +phy_chain_rx_polarity_flip_physical{190.0}=0x1 +phy_chain_rx_polarity_flip_physical{191.0}=0x0 +phy_chain_rx_polarity_flip_physical{192.0}=0x0 +phy_chain_rx_polarity_flip_physical{193.0}=0x1 +phy_chain_rx_polarity_flip_physical{194.0}=0x1 +phy_chain_rx_polarity_flip_physical{195.0}=0x0 +phy_chain_rx_polarity_flip_physical{196.0}=0x0 +phy_chain_rx_polarity_flip_physical{197.0}=0x0 +phy_chain_rx_polarity_flip_physical{198.0}=0x0 +phy_chain_rx_polarity_flip_physical{199.0}=0x1 +phy_chain_rx_polarity_flip_physical{200.0}=0x1 +phy_chain_rx_polarity_flip_physical{201.0}=0x1 +phy_chain_rx_polarity_flip_physical{202.0}=0x0 +phy_chain_rx_polarity_flip_physical{203.0}=0x0 +phy_chain_rx_polarity_flip_physical{204.0}=0x1 +phy_chain_rx_polarity_flip_physical{205.0}=0x1 +phy_chain_rx_polarity_flip_physical{206.0}=0x1 +phy_chain_rx_polarity_flip_physical{207.0}=0x0 +phy_chain_rx_polarity_flip_physical{208.0}=0x0 +phy_chain_rx_polarity_flip_physical{209.0}=0x1 +phy_chain_rx_polarity_flip_physical{210.0}=0x1 +phy_chain_rx_polarity_flip_physical{211.0}=0x0 +phy_chain_rx_polarity_flip_physical{212.0}=0x0 +phy_chain_rx_polarity_flip_physical{213.0}=0x1 +phy_chain_rx_polarity_flip_physical{214.0}=0x1 +phy_chain_rx_polarity_flip_physical{215.0}=0x0 +phy_chain_rx_polarity_flip_physical{216.0}=0x0 +phy_chain_rx_polarity_flip_physical{217.0}=0x0 +phy_chain_rx_polarity_flip_physical{218.0}=0x1 +phy_chain_rx_polarity_flip_physical{219.0}=0x1 +phy_chain_rx_polarity_flip_physical{220.0}=0x0 +phy_chain_rx_polarity_flip_physical{221.0}=0x1 +phy_chain_rx_polarity_flip_physical{222.0}=0x1 +phy_chain_rx_polarity_flip_physical{223.0}=0x0 +phy_chain_rx_polarity_flip_physical{224.0}=0x0 +phy_chain_rx_polarity_flip_physical{225.0}=0x1 +phy_chain_rx_polarity_flip_physical{226.0}=0x1 +phy_chain_rx_polarity_flip_physical{227.0}=0x0 +phy_chain_rx_polarity_flip_physical{228.0}=0x0 +phy_chain_rx_polarity_flip_physical{229.0}=0x1 +phy_chain_rx_polarity_flip_physical{230.0}=0x0 +phy_chain_rx_polarity_flip_physical{231.0}=0x1 +phy_chain_rx_polarity_flip_physical{232.0}=0x0 +phy_chain_rx_polarity_flip_physical{233.0}=0x1 +phy_chain_rx_polarity_flip_physical{234.0}=0x0 +phy_chain_rx_polarity_flip_physical{235.0}=0x1 +phy_chain_rx_polarity_flip_physical{236.0}=0x0 +phy_chain_rx_polarity_flip_physical{237.0}=0x1 +phy_chain_rx_polarity_flip_physical{238.0}=0x0 +phy_chain_rx_polarity_flip_physical{239.0}=0x1 +phy_chain_rx_polarity_flip_physical{240.0}=0x0 +phy_chain_rx_polarity_flip_physical{241.0}=0x1 +phy_chain_rx_polarity_flip_physical{242.0}=0x0 +phy_chain_rx_polarity_flip_physical{243.0}=0x1 +phy_chain_rx_polarity_flip_physical{244.0}=0x0 +phy_chain_rx_polarity_flip_physical{245.0}=0x1 +phy_chain_rx_polarity_flip_physical{246.0}=0x0 +phy_chain_rx_polarity_flip_physical{247.0}=0x1 +phy_chain_rx_polarity_flip_physical{248.0}=0x0 +phy_chain_rx_polarity_flip_physical{249.0}=0x1 +phy_chain_rx_polarity_flip_physical{250.0}=0x1 +phy_chain_rx_polarity_flip_physical{251.0}=0x0 +phy_chain_rx_polarity_flip_physical{252.0}=0x0 +phy_chain_rx_polarity_flip_physical{253.0}=0x0 +phy_chain_rx_polarity_flip_physical{254.0}=0x1 +phy_chain_rx_polarity_flip_physical{255.0}=0x0 +phy_chain_rx_polarity_flip_physical{256.0}=0x1 + + +phy_chain_tx_polarity_flip_physical{1.0}=0x0 +phy_chain_tx_polarity_flip_physical{2.0}=0x0 +phy_chain_tx_polarity_flip_physical{3.0}=0x1 +phy_chain_tx_polarity_flip_physical{4.0}=0x1 +phy_chain_tx_polarity_flip_physical{5.0}=0x0 +phy_chain_tx_polarity_flip_physical{6.0}=0x1 +phy_chain_tx_polarity_flip_physical{7.0}=0x0 +phy_chain_tx_polarity_flip_physical{8.0}=0x1 +phy_chain_tx_polarity_flip_physical{9.0}=0x0 +phy_chain_tx_polarity_flip_physical{10.0}=0x1 +phy_chain_tx_polarity_flip_physical{11.0}=0x1 +phy_chain_tx_polarity_flip_physical{12.0}=0x0 +phy_chain_tx_polarity_flip_physical{13.0}=0x0 +phy_chain_tx_polarity_flip_physical{14.0}=0x1 +phy_chain_tx_polarity_flip_physical{15.0}=0x0 +phy_chain_tx_polarity_flip_physical{16.0}=0x1 +phy_chain_tx_polarity_flip_physical{17.0}=0x0 +phy_chain_tx_polarity_flip_physical{18.0}=0x0 +phy_chain_tx_polarity_flip_physical{19.0}=0x1 +phy_chain_tx_polarity_flip_physical{20.0}=0x1 +phy_chain_tx_polarity_flip_physical{21.0}=0x0 +phy_chain_tx_polarity_flip_physical{22.0}=0x1 +phy_chain_tx_polarity_flip_physical{23.0}=0x1 +phy_chain_tx_polarity_flip_physical{24.0}=0x0 +phy_chain_tx_polarity_flip_physical{25.0}=0x0 +phy_chain_tx_polarity_flip_physical{26.0}=0x1 +phy_chain_tx_polarity_flip_physical{27.0}=0x1 +phy_chain_tx_polarity_flip_physical{28.0}=0x0 +phy_chain_tx_polarity_flip_physical{29.0}=0x0 +phy_chain_tx_polarity_flip_physical{30.0}=0x1 +phy_chain_tx_polarity_flip_physical{31.0}=0x0 +phy_chain_tx_polarity_flip_physical{32.0}=0x1 +phy_chain_tx_polarity_flip_physical{33.0}=0x0 +phy_chain_tx_polarity_flip_physical{34.0}=0x0 +phy_chain_tx_polarity_flip_physical{35.0}=0x1 +phy_chain_tx_polarity_flip_physical{36.0}=0x1 +phy_chain_tx_polarity_flip_physical{37.0}=0x0 +phy_chain_tx_polarity_flip_physical{38.0}=0x1 +phy_chain_tx_polarity_flip_physical{39.0}=0x1 +phy_chain_tx_polarity_flip_physical{40.0}=0x0 +phy_chain_tx_polarity_flip_physical{41.0}=0x1 +phy_chain_tx_polarity_flip_physical{42.0}=0x1 +phy_chain_tx_polarity_flip_physical{43.0}=0x0 +phy_chain_tx_polarity_flip_physical{44.0}=0x0 +phy_chain_tx_polarity_flip_physical{45.0}=0x1 +phy_chain_tx_polarity_flip_physical{46.0}=0x0 +phy_chain_tx_polarity_flip_physical{47.0}=0x0 +phy_chain_tx_polarity_flip_physical{48.0}=0x1 +phy_chain_tx_polarity_flip_physical{49.0}=0x0 +phy_chain_tx_polarity_flip_physical{50.0}=0x1 +phy_chain_tx_polarity_flip_physical{51.0}=0x0 +phy_chain_tx_polarity_flip_physical{52.0}=0x1 +phy_chain_tx_polarity_flip_physical{53.0}=0x1 +phy_chain_tx_polarity_flip_physical{54.0}=0x1 +phy_chain_tx_polarity_flip_physical{55.0}=0x0 +phy_chain_tx_polarity_flip_physical{56.0}=0x0 +phy_chain_tx_polarity_flip_physical{57.0}=0x0 +phy_chain_tx_polarity_flip_physical{58.0}=0x0 +phy_chain_tx_polarity_flip_physical{59.0}=0x1 +phy_chain_tx_polarity_flip_physical{60.0}=0x1 +phy_chain_tx_polarity_flip_physical{61.0}=0x1 +phy_chain_tx_polarity_flip_physical{62.0}=0x0 +phy_chain_tx_polarity_flip_physical{63.0}=0x0 +phy_chain_tx_polarity_flip_physical{64.0}=0x1 +phy_chain_tx_polarity_flip_physical{65.0}=0x0 +phy_chain_tx_polarity_flip_physical{66.0}=0x1 +phy_chain_tx_polarity_flip_physical{67.0}=0x0 +phy_chain_tx_polarity_flip_physical{68.0}=0x1 +phy_chain_tx_polarity_flip_physical{69.0}=0x0 +phy_chain_tx_polarity_flip_physical{70.0}=0x0 +phy_chain_tx_polarity_flip_physical{71.0}=0x1 +phy_chain_tx_polarity_flip_physical{72.0}=0x1 +phy_chain_tx_polarity_flip_physical{73.0}=0x1 +phy_chain_tx_polarity_flip_physical{74.0}=0x1 +phy_chain_tx_polarity_flip_physical{75.0}=0x0 +phy_chain_tx_polarity_flip_physical{76.0}=0x0 +phy_chain_tx_polarity_flip_physical{77.0}=0x1 +phy_chain_tx_polarity_flip_physical{78.0}=0x0 +phy_chain_tx_polarity_flip_physical{79.0}=0x0 +phy_chain_tx_polarity_flip_physical{80.0}=0x1 +phy_chain_tx_polarity_flip_physical{81.0}=0x0 +phy_chain_tx_polarity_flip_physical{82.0}=0x1 +phy_chain_tx_polarity_flip_physical{83.0}=0x0 +phy_chain_tx_polarity_flip_physical{84.0}=0x1 +phy_chain_tx_polarity_flip_physical{85.0}=0x1 +phy_chain_tx_polarity_flip_physical{86.0}=0x1 +phy_chain_tx_polarity_flip_physical{87.0}=0x0 +phy_chain_tx_polarity_flip_physical{88.0}=0x0 +phy_chain_tx_polarity_flip_physical{89.0}=0x0 +phy_chain_tx_polarity_flip_physical{90.0}=0x0 +phy_chain_tx_polarity_flip_physical{91.0}=0x1 +phy_chain_tx_polarity_flip_physical{92.0}=0x1 +phy_chain_tx_polarity_flip_physical{93.0}=0x1 +phy_chain_tx_polarity_flip_physical{94.0}=0x0 +phy_chain_tx_polarity_flip_physical{95.0}=0x0 +phy_chain_tx_polarity_flip_physical{96.0}=0x1 +phy_chain_tx_polarity_flip_physical{97.0}=0x0 +phy_chain_tx_polarity_flip_physical{98.0}=0x1 +phy_chain_tx_polarity_flip_physical{99.0}=0x0 +phy_chain_tx_polarity_flip_physical{100.0}=0x1 +phy_chain_tx_polarity_flip_physical{101.0}=0x0 +phy_chain_tx_polarity_flip_physical{102.0}=0x0 +phy_chain_tx_polarity_flip_physical{103.0}=0x0 +phy_chain_tx_polarity_flip_physical{104.0}=0x1 +phy_chain_tx_polarity_flip_physical{105.0}=0x1 +phy_chain_tx_polarity_flip_physical{106.0}=0x0 +phy_chain_tx_polarity_flip_physical{107.0}=0x1 +phy_chain_tx_polarity_flip_physical{108.0}=0x0 +phy_chain_tx_polarity_flip_physical{109.0}=0x0 +phy_chain_tx_polarity_flip_physical{110.0}=0x0 +phy_chain_tx_polarity_flip_physical{111.0}=0x1 +phy_chain_tx_polarity_flip_physical{112.0}=0x1 +phy_chain_tx_polarity_flip_physical{113.0}=0x0 +phy_chain_tx_polarity_flip_physical{114.0}=0x1 +phy_chain_tx_polarity_flip_physical{115.0}=0x0 +phy_chain_tx_polarity_flip_physical{116.0}=0x1 +phy_chain_tx_polarity_flip_physical{117.0}=0x0 +phy_chain_tx_polarity_flip_physical{118.0}=0x0 +phy_chain_tx_polarity_flip_physical{119.0}=0x1 +phy_chain_tx_polarity_flip_physical{120.0}=0x1 +phy_chain_tx_polarity_flip_physical{121.0}=0x0 +phy_chain_tx_polarity_flip_physical{122.0}=0x1 +phy_chain_tx_polarity_flip_physical{123.0}=0x0 +phy_chain_tx_polarity_flip_physical{124.0}=0x1 +phy_chain_tx_polarity_flip_physical{125.0}=0x0 +phy_chain_tx_polarity_flip_physical{126.0}=0x0 +phy_chain_tx_polarity_flip_physical{127.0}=0x1 +phy_chain_tx_polarity_flip_physical{128.0}=0x1 +phy_chain_tx_polarity_flip_physical{129.0}=0x0 +phy_chain_tx_polarity_flip_physical{130.0}=0x1 +phy_chain_tx_polarity_flip_physical{131.0}=0x0 +phy_chain_tx_polarity_flip_physical{132.0}=0x1 +phy_chain_tx_polarity_flip_physical{133.0}=0x1 +phy_chain_tx_polarity_flip_physical{134.0}=0x1 +phy_chain_tx_polarity_flip_physical{135.0}=0x0 +phy_chain_tx_polarity_flip_physical{136.0}=0x0 +phy_chain_tx_polarity_flip_physical{137.0}=0x0 +phy_chain_tx_polarity_flip_physical{138.0}=0x1 +phy_chain_tx_polarity_flip_physical{139.0}=0x0 +phy_chain_tx_polarity_flip_physical{140.0}=0x1 +phy_chain_tx_polarity_flip_physical{141.0}=0x0 +phy_chain_tx_polarity_flip_physical{142.0}=0x0 +phy_chain_tx_polarity_flip_physical{143.0}=0x1 +phy_chain_tx_polarity_flip_physical{144.0}=0x1 +phy_chain_tx_polarity_flip_physical{145.0}=0x0 +phy_chain_tx_polarity_flip_physical{146.0}=0x1 +phy_chain_tx_polarity_flip_physical{147.0}=0x0 +phy_chain_tx_polarity_flip_physical{148.0}=0x1 +phy_chain_tx_polarity_flip_physical{149.0}=0x0 +phy_chain_tx_polarity_flip_physical{150.0}=0x0 +phy_chain_tx_polarity_flip_physical{151.0}=0x1 +phy_chain_tx_polarity_flip_physical{152.0}=0x1 +phy_chain_tx_polarity_flip_physical{153.0}=0x1 +phy_chain_tx_polarity_flip_physical{154.0}=0x0 +phy_chain_tx_polarity_flip_physical{155.0}=0x0 +phy_chain_tx_polarity_flip_physical{156.0}=0x1 +phy_chain_tx_polarity_flip_physical{157.0}=0x1 +phy_chain_tx_polarity_flip_physical{158.0}=0x0 +phy_chain_tx_polarity_flip_physical{159.0}=0x1 +phy_chain_tx_polarity_flip_physical{160.0}=0x0 +phy_chain_tx_polarity_flip_physical{161.0}=0x0 +phy_chain_tx_polarity_flip_physical{162.0}=0x1 +phy_chain_tx_polarity_flip_physical{163.0}=0x0 +phy_chain_tx_polarity_flip_physical{164.0}=0x1 +phy_chain_tx_polarity_flip_physical{165.0}=0x1 +phy_chain_tx_polarity_flip_physical{166.0}=0x0 +phy_chain_tx_polarity_flip_physical{167.0}=0x1 +phy_chain_tx_polarity_flip_physical{168.0}=0x0 +phy_chain_tx_polarity_flip_physical{169.0}=0x0 +phy_chain_tx_polarity_flip_physical{170.0}=0x0 +phy_chain_tx_polarity_flip_physical{171.0}=0x1 +phy_chain_tx_polarity_flip_physical{172.0}=0x1 +phy_chain_tx_polarity_flip_physical{173.0}=0x0 +phy_chain_tx_polarity_flip_physical{174.0}=0x1 +phy_chain_tx_polarity_flip_physical{175.0}=0x0 +phy_chain_tx_polarity_flip_physical{176.0}=0x1 +phy_chain_tx_polarity_flip_physical{177.0}=0x0 +phy_chain_tx_polarity_flip_physical{178.0}=0x1 +phy_chain_tx_polarity_flip_physical{179.0}=0x0 +phy_chain_tx_polarity_flip_physical{180.0}=0x1 +phy_chain_tx_polarity_flip_physical{181.0}=0x1 +phy_chain_tx_polarity_flip_physical{182.0}=0x0 +phy_chain_tx_polarity_flip_physical{183.0}=0x1 +phy_chain_tx_polarity_flip_physical{184.0}=0x0 +phy_chain_tx_polarity_flip_physical{185.0}=0x1 +phy_chain_tx_polarity_flip_physical{186.0}=0x1 +phy_chain_tx_polarity_flip_physical{187.0}=0x0 +phy_chain_tx_polarity_flip_physical{188.0}=0x0 +phy_chain_tx_polarity_flip_physical{189.0}=0x1 +phy_chain_tx_polarity_flip_physical{190.0}=0x0 +phy_chain_tx_polarity_flip_physical{191.0}=0x1 +phy_chain_tx_polarity_flip_physical{192.0}=0x0 +phy_chain_tx_polarity_flip_physical{193.0}=0x0 +phy_chain_tx_polarity_flip_physical{194.0}=0x1 +phy_chain_tx_polarity_flip_physical{195.0}=0x0 +phy_chain_tx_polarity_flip_physical{196.0}=0x1 +phy_chain_tx_polarity_flip_physical{197.0}=0x1 +phy_chain_tx_polarity_flip_physical{198.0}=0x0 +phy_chain_tx_polarity_flip_physical{199.0}=0x1 +phy_chain_tx_polarity_flip_physical{200.0}=0x0 +phy_chain_tx_polarity_flip_physical{201.0}=0x0 +phy_chain_tx_polarity_flip_physical{202.0}=0x0 +phy_chain_tx_polarity_flip_physical{203.0}=0x1 +phy_chain_tx_polarity_flip_physical{204.0}=0x1 +phy_chain_tx_polarity_flip_physical{205.0}=0x1 +phy_chain_tx_polarity_flip_physical{206.0}=0x0 +phy_chain_tx_polarity_flip_physical{207.0}=0x1 +phy_chain_tx_polarity_flip_physical{208.0}=0x0 +phy_chain_tx_polarity_flip_physical{209.0}=0x0 +phy_chain_tx_polarity_flip_physical{210.0}=0x1 +phy_chain_tx_polarity_flip_physical{211.0}=0x0 +phy_chain_tx_polarity_flip_physical{212.0}=0x1 +phy_chain_tx_polarity_flip_physical{213.0}=0x1 +phy_chain_tx_polarity_flip_physical{214.0}=0x0 +phy_chain_tx_polarity_flip_physical{215.0}=0x1 +phy_chain_tx_polarity_flip_physical{216.0}=0x0 +phy_chain_tx_polarity_flip_physical{217.0}=0x1 +phy_chain_tx_polarity_flip_physical{218.0}=0x1 +phy_chain_tx_polarity_flip_physical{219.0}=0x0 +phy_chain_tx_polarity_flip_physical{220.0}=0x0 +phy_chain_tx_polarity_flip_physical{221.0}=0x1 +phy_chain_tx_polarity_flip_physical{222.0}=0x1 +phy_chain_tx_polarity_flip_physical{223.0}=0x0 +phy_chain_tx_polarity_flip_physical{224.0}=0x0 +phy_chain_tx_polarity_flip_physical{225.0}=0x0 +phy_chain_tx_polarity_flip_physical{226.0}=0x0 +phy_chain_tx_polarity_flip_physical{227.0}=0x1 +phy_chain_tx_polarity_flip_physical{228.0}=0x1 +phy_chain_tx_polarity_flip_physical{229.0}=0x1 +phy_chain_tx_polarity_flip_physical{230.0}=0x1 +phy_chain_tx_polarity_flip_physical{231.0}=0x0 +phy_chain_tx_polarity_flip_physical{232.0}=0x0 +phy_chain_tx_polarity_flip_physical{233.0}=0x0 +phy_chain_tx_polarity_flip_physical{234.0}=0x1 +phy_chain_tx_polarity_flip_physical{235.0}=0x1 +phy_chain_tx_polarity_flip_physical{236.0}=0x0 +phy_chain_tx_polarity_flip_physical{237.0}=0x1 +phy_chain_tx_polarity_flip_physical{238.0}=0x0 +phy_chain_tx_polarity_flip_physical{239.0}=0x1 +phy_chain_tx_polarity_flip_physical{240.0}=0x0 +phy_chain_tx_polarity_flip_physical{241.0}=0x1 +phy_chain_tx_polarity_flip_physical{242.0}=0x0 +phy_chain_tx_polarity_flip_physical{243.0}=0x0 +phy_chain_tx_polarity_flip_physical{244.0}=0x1 +phy_chain_tx_polarity_flip_physical{245.0}=0x1 +phy_chain_tx_polarity_flip_physical{246.0}=0x1 +phy_chain_tx_polarity_flip_physical{247.0}=0x0 +phy_chain_tx_polarity_flip_physical{248.0}=0x0 +phy_chain_tx_polarity_flip_physical{249.0}=0x0 +phy_chain_tx_polarity_flip_physical{250.0}=0x0 +phy_chain_tx_polarity_flip_physical{251.0}=0x1 +phy_chain_tx_polarity_flip_physical{252.0}=0x1 +phy_chain_tx_polarity_flip_physical{253.0}=0x0 +phy_chain_tx_polarity_flip_physical{254.0}=0x1 +phy_chain_tx_polarity_flip_physical{255.0}=0x0 +phy_chain_tx_polarity_flip_physical{256.0}=0x1 + + +serdes_driver_current_lane0=0xf +serdes_driver_current_lane1=0xf +serdes_driver_current_lane2=0xf +serdes_driver_current_lane3=0xf + +dport_map_port_1=1 +dport_map_port_5=2 +dport_map_port_17=3 +dport_map_port_21=4 +dport_map_port_24=5 +dport_map_port_25=6 +dport_map_port_28=7 +dport_map_port_29=8 +dport_map_port_34=9 +dport_map_port_38=10 +dport_map_port_50=11 +dport_map_port_54=12 +dport_map_port_57=13 +dport_map_port_58=14 +dport_map_port_61=15 +dport_map_port_62=16 +dport_map_port_68=17 +dport_map_port_72=18 +dport_map_port_84=19 +dport_map_port_88=20 +dport_map_port_91=21 +dport_map_port_92=22 +dport_map_port_95=23 +dport_map_port_96=24 +dport_map_port_102=25 +dport_map_port_106=26 +dport_map_port_118=27 +dport_map_port_122=28 +dport_map_port_125=29 +dport_map_port_126=30 +dport_map_port_129=31 +dport_map_port_130=32 +dport_map_port_9=33 +dport_map_port_13=34 +dport_map_port_22=35 +dport_map_port_23=36 +dport_map_port_26=37 +dport_map_port_27=38 +dport_map_port_30=39 +dport_map_port_31=40 +dport_map_port_42=41 +dport_map_port_46=42 +dport_map_port_55=43 +dport_map_port_56=44 +dport_map_port_59=45 +dport_map_port_60=46 +dport_map_port_63=47 +dport_map_port_64=48 +dport_map_port_76=49 +dport_map_port_80=50 +dport_map_port_89=51 +dport_map_port_90=52 +dport_map_port_93=53 +dport_map_port_94=54 +dport_map_port_97=55 +dport_map_port_98=56 +dport_map_port_110=57 +dport_map_port_114=58 +dport_map_port_123=59 +dport_map_port_124=60 +dport_map_port_127=61 +dport_map_port_128=62 +dport_map_port_131=63 +dport_map_port_132=64 + +serdes_if_type_1=14 +serdes_if_type_5=14 +serdes_if_type_17=14 +serdes_if_type_21=14 +serdes_if_type_24=14 +serdes_if_type_25=14 +serdes_if_type_28=14 +serdes_if_type_29=14 +serdes_if_type_34=14 +serdes_if_type_38=14 +serdes_if_type_50=14 +serdes_if_type_54=14 +serdes_if_type_57=14 +serdes_if_type_58=14 +serdes_if_type_61=14 +serdes_if_type_62=14 +serdes_if_type_68=14 +serdes_if_type_72=14 +serdes_if_type_84=14 +serdes_if_type_88=14 +serdes_if_type_91=14 +serdes_if_type_92=14 +serdes_if_type_95=14 +serdes_if_type_96=14 +serdes_if_type_102=14 +serdes_if_type_106=14 +serdes_if_type_118=14 +serdes_if_type_122=14 +serdes_if_type_125=14 +serdes_if_type_126=14 +serdes_if_type_129=14 +serdes_if_type_130=14 +serdes_if_type_9=14 +serdes_if_type_13=14 +serdes_if_type_22=14 +serdes_if_type_23=14 +serdes_if_type_26=14 +serdes_if_type_27=14 +serdes_if_type_30=14 +serdes_if_type_31=14 +serdes_if_type_42=14 +serdes_if_type_46=14 +serdes_if_type_55=14 +serdes_if_type_56=14 +serdes_if_type_59=14 +serdes_if_type_60=14 +serdes_if_type_63=14 +serdes_if_type_64=14 +serdes_if_type_76=14 +serdes_if_type_80=14 +serdes_if_type_89=14 +serdes_if_type_90=14 +serdes_if_type_93=14 +serdes_if_type_94=14 +serdes_if_type_97=14 +serdes_if_type_98=14 +serdes_if_type_110=14 +serdes_if_type_114=14 +serdes_if_type_123=14 +serdes_if_type_124=14 +serdes_if_type_127=14 +serdes_if_type_128=14 + +###################user module area ################### + +bcm_tunnel_term_compatible_mode=1 +bcm_num_cos=8 +mmu_lossless=0 +mmu_config_override=0 + +buf.prigroup.guarantee=0 +buf.prigroup.device_headroom_enable=1 +buf.prigroup.pool_resume=1664B +buf.prigroup.pool_scale=8 + +buf.prigroup.port_guarantee_enable=1 +buf.prigroup.port_max_enable=1 +buf.prigroup.flow_control_enable=0 + +buf.queue.pool_scale=8 +buf.mqueue.pool_scale=0.125 +buf.queue.pool_scale_hg=8 +buf.mqueue.pool_scale_hg=8 +buf.mqueue.pool_scale_cpu=0.015625 +buf.queue.qgroup_guarantee_enable=0 +profile_pg_1hdrm_8shared=0 + +buf.map.pri.prigroup=0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7 +num_queues_pci=46 +num_queues_uc0=1 +num_queues_uc1=1 +flow_init_mode=1 +# Protobuf relateed properties +ctr_evict_enable=0 +udp_port=22000 +# Exact match related properties +multi_hash_recurse_depth_exact_match=2 +robust_hash_seed_exact_match=0x12345 +# E-INT related properties +my_udp_port_int=5566 +server_udp_port_int=7788 +probe_marker1_int=0xAAAAAAAA +probe_marker2_int=0xBBBBBBBB +hoplimit_int=8 +lb_port_pipe0_int=1 +lb_port_pipe1_int=67 +ing_origin_id_device_id_mask=0x7FFF80 +egr_origin_id_device_id_mask=0x7FFF80 +port_count_in_pb_stream=1 + diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm.rc b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm.rc new file mode 100644 index 000000000000..7f69f10d3bda --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm.rc @@ -0,0 +1 @@ +rcload /usr/share/sonic/platform/led_proc_init.soc diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm_pre.rc b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm_pre.rc new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/default_sku b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/default_sku new file mode 100644 index 000000000000..f586bdef9f3a --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/default_sku @@ -0,0 +1 @@ +RA-B6910-64C t1 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/dev.xml b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/dev.xml new file mode 100644 index 000000000000..55d37fffd8eb --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/dev.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/installer.conf b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/installer.conf new file mode 100644 index 000000000000..5e62742c11bf --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/installer.conf @@ -0,0 +1 @@ +CONSOLE_SPEED=115200 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/led_proc_init.soc b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/led_proc_init.soc new file mode 100644 index 000000000000..f5c182517e27 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/led_proc_init.soc @@ -0,0 +1,23 @@ + +led 0 stop +led 0 prog 02 01 60 F1 02 00 60 F2 06 E1 80 D2 21 71 10 E0 60 E1 E9 D2 10 75 18 81 61 E3 02 34 67 5C 02 30 67 5C 02 3C 67 5C 02 38 67 5C 02 24 67 5C 02 20 67 5C 02 2C 67 5C 02 28 67 5C 02 14 67 5C 02 10 67 5C 02 1C 67 5C 02 18 67 5C 02 04 67 5C 02 00 67 5C 02 0C 67 5C 02 08 67 5C 3A 40 28 67 67 75 CA 67 75 71 D8 77 D1 12 A0 F8 15 1A 00 57 12 A0 F8 15 1A 02 57 32 00 32 01 B7 97 57 26 F2 87 26 F2 87 26 F2 87 26 F1 87 57 26 F2 87 26 F1 87 26 F1 87 26 F1 87 57 26 F2 87 26 F2 87 26 F2 87 26 F2 87 57 26 F2 87 26 F1 87 26 F1 87 26 F2 87 57 26 F2 87 26 F2 87 26 F2 87 26 E3 87 57 26 F2 87 26 F1 87 26 F1 87 26 E3 87 57 67 6E 71 7C 77 89 57 67 6E 71 96 77 A3 57 67 6E 71 B0 77 BD 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +led 0 start +led auto on + +led 1 stop +led 1 prog 02 01 60 F1 02 00 60 F2 06 E1 80 D2 21 71 10 E0 60 E1 E9 D2 10 75 18 81 61 E3 02 34 67 5C 02 30 67 5C 02 3C 67 5C 02 38 67 5C 02 24 67 5C 02 20 67 5C 02 2C 67 5C 02 28 67 5C 02 14 67 5C 02 10 67 5C 02 1C 67 5C 02 18 67 5C 02 04 67 5C 02 00 67 5C 02 0C 67 5C 02 08 67 5C 3A 40 28 67 67 75 CA 67 75 71 D8 77 D1 12 A0 F8 15 1A 00 57 12 A0 F8 15 1A 02 57 32 00 32 01 B7 97 57 26 F2 87 26 F2 87 26 F2 87 26 F1 87 57 26 F2 87 26 F1 87 26 F1 87 26 F1 87 57 26 F2 87 26 F2 87 26 F2 87 26 F2 87 57 26 F2 87 26 F1 87 26 F1 87 26 F2 87 57 26 F2 87 26 F2 87 26 F2 87 26 E3 87 57 26 F2 87 26 F1 87 26 F1 87 26 E3 87 57 67 6E 71 7C 77 89 57 67 6E 71 96 77 A3 57 67 6E 71 B0 77 BD 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +led 1 start +led auto on + +led 2 stop +led 2 prog 02 01 60 F1 02 00 60 F2 06 E1 80 D2 21 71 10 E0 60 E1 E9 D2 10 75 18 81 61 E3 02 34 67 5C 02 30 67 5C 02 3C 67 5C 02 38 67 5C 02 24 67 5C 02 20 67 5C 02 2C 67 5C 02 28 67 5C 02 14 67 5C 02 10 67 5C 02 1C 67 5C 02 18 67 5C 02 04 67 5C 02 00 67 5C 02 0C 67 5C 02 08 67 5C 3A 40 28 67 67 75 CA 67 75 71 D8 77 D1 12 A0 F8 15 1A 00 57 12 A0 F8 15 1A 02 57 32 00 32 01 B7 97 57 26 F2 87 26 F2 87 26 F2 87 26 F1 87 57 26 F2 87 26 F1 87 26 F1 87 26 F1 87 57 26 F2 87 26 F2 87 26 F2 87 26 F2 87 57 26 F2 87 26 F1 87 26 F1 87 26 F2 87 57 26 F2 87 26 F2 87 26 F2 87 26 E3 87 57 26 F2 87 26 F1 87 26 F1 87 26 E3 87 57 67 6E 71 7C 77 89 57 67 6E 71 96 77 A3 57 67 6E 71 B0 77 BD 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +led 2 start +led auto on + +led 3 stop +led 3 prog 02 01 60 F1 02 00 60 F2 06 E1 80 D2 21 71 10 E0 60 E1 E9 D2 10 75 18 81 61 E3 02 34 67 5C 02 30 67 5C 02 3C 67 5C 02 38 67 5C 02 24 67 5C 02 20 67 5C 02 2C 67 5C 02 28 67 5C 02 14 67 5C 02 10 67 5C 02 1C 67 5C 02 18 67 5C 02 04 67 5C 02 00 67 5C 02 0C 67 5C 02 08 67 5C 3A 40 28 67 67 75 CA 67 75 71 D8 77 D1 12 A0 F8 15 1A 00 57 12 A0 F8 15 1A 02 57 32 00 32 01 B7 97 57 26 F2 87 26 F2 87 26 F2 87 26 F1 87 57 26 F2 87 26 F1 87 26 F1 87 26 F1 87 57 26 F2 87 26 F2 87 26 F2 87 26 F2 87 57 26 F2 87 26 F1 87 26 F1 87 26 F2 87 57 26 F2 87 26 F2 87 26 F2 87 26 E3 87 57 26 F2 87 26 F1 87 26 F1 87 26 E3 87 57 67 6E 71 7C 77 89 57 67 6E 71 96 77 A3 57 67 6E 71 B0 77 BD 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +led 3 start + +led auto on + +linkscan spbm=all force=all interval=250000 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/minigraph.xml b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/minigraph.xml new file mode 100644 index 000000000000..e6b05e400606 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/minigraph.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + switch2 + + + + + + + + + + + + + switch2 + RA-B6910-64C + + + + + + + switch2 + + + DhcpResources + + + + + NtpResources + + 0.debian.pool.ntp.org;1.debian.pool.ntp.org;2.debian.pool.ntp.org;3.debian.pool.ntp.org + + + SyslogResources + + + + + ErspanDestinationIpv4 + + 2.2.2.2 + + + + + + + switch2 + RA-B6910-64C + diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/monitor.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/monitor.py new file mode 100644 index 000000000000..b929fe4146e7 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/monitor.py @@ -0,0 +1,223 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- +# * onboard temperature sensors +# * FAN trays +# * PSU +# +import os +import xml.etree.ElementTree as ET +import glob + +MAILBOX_DIR = "/sys/bus/i2c/devices/" +PORTS_DIR = "/sys/class/net/" +CONFIG_NAME = "dev.xml" + +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: + pass + + retval = retval.rstrip('\r\n') + retval = retval.lstrip(" ") + return retval + +# Get a mailbox register +def get_pmc_register(reg_name): + retval = 'ERR' + if reg_name[0:4] == "/rif" or reg_name[0:4] == "/ma1" or reg_name[0:4] == "/eth": + mb_reg_file = PORTS_DIR + reg_name + else: + mb_reg_file = MAILBOX_DIR + reg_name + filepath = glob.glob(mb_reg_file) + if(len(filepath) == 0): + return "%s %s notfound"% (retval , mb_reg_file) + # when multimatch use the first one + 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, 'r') as fd: + retval = fd.read() + except Exception as error: + pass + + retval = retval.rstrip('\r\n') + retval = retval.lstrip(" ") + return retval + +class checktype(): + def __init__(self, test1): + self.test1 = test1 + @staticmethod + def check(name,location, bit, value, tips , err1): + psu_status = int(get_pmc_register(location),16) + val = (psu_status & (1<< bit)) >> bit + if (val != value): + err1["errmsg"] = tips + err1["code"] = -1 + return -1 + else: + err1["errmsg"] = "none" + err1["code"] = 0 + return 0 + @staticmethod + def getValue(location, bit , type): + value_t = get_pmc_register(location) + if value_t.startswith("ERR") : + return value_t + if (type == 1): + return float(value_t)/1000 + elif (type == 2): + return float(value_t)/100 + elif (type == 3): + psu_status = int(value_t,16) + return (psu_status & (1<< bit)) >> bit + elif (type == 4): + return int(value_t,10) + elif (type == 5): + return float(value_t)/1000/1000 + else: + return value_t; +#######temp + @staticmethod + def getTemp(self, name, location , ret_t): + ret2 = self.getValue(location + "temp1_input" ," " ,1); + ret3 = self.getValue(location + "temp1_max" ," ", 1); + ret4 = self.getValue(location + "temp1_max_hyst" ," ", 1); + ret_t["temp1_input"] = ret2 + ret_t["temp1_max"] = ret3 + ret_t["temp1_max_hyst"] = ret4 + @staticmethod + def getLM75(name, location, result): + c1=checktype + r1={} + c1.getTemp(c1, name, location, r1) + result[name] = r1 +##########PSU + + +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={} + 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 = neighbor.attrib + prob_t['errcode']= 0 + prob_t['errmsg'] = '' + for pros in neighbor.iter("property"): + ret = dict(neighbor.attrib.items() + pros.attrib.items()) + if ('type' not in ret.keys()): + val = "0"; + else: + val = ret["type"] + if ('bit' not in ret.keys()): + bit = "0"; + else: + bit = ret["bit"] + s = checktype.getValue(ret["location"], int(bit),int(val)) + if isinstance(s, str) and s.startswith("ERR"): + prob_t['errcode']= -1 + prob_t['errmsg']= s + 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.keys()): + prob_t['errcode']= -1 + prob_t['errmsg'] = '%s'% ("Not supported PSU type") + 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(): + return os.path.dirname(os.path.realpath(__file__)) + "/"+ CONFIG_NAME + @staticmethod + def getFan(ret): + _filename = status.getFileName() + _tagname = "fan" + status.getvalue(ret, _filename, _tagname) + @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 getMgmtRx(ret): + _filename = status.getFileName() + _tagname = "mgmt_rx" + status.getETValue(ret, _filename, _tagname) + + diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pcie.yaml b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pcie.yaml new file mode 100644 index 000000000000..90ebf1740641 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pcie.yaml @@ -0,0 +1,429 @@ +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 + 03)' +- 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: 1c + fn: '0' + id: 8c10 + name: 'PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express + Root Port #1 (rev d5)' +- 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: '01' + dev: '00' + fn: '0' + id: '1533' + name: 'Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev + 03)' +- bus: '03' + dev: '00' + fn: '0' + id: 6f50 + name: 'System peripheral: Intel Corporation Xeon Processor D Family QuickData Technology + Register DMA Channel 0' +- bus: '03' + dev: '00' + fn: '1' + id: 6f51 + name: 'System peripheral: Intel Corporation Xeon Processor D Family QuickData Technology + Register DMA Channel 1' +- bus: '03' + dev: '00' + fn: '2' + id: 6f52 + name: 'System peripheral: Intel Corporation Xeon Processor D Family QuickData Technology + Register DMA Channel 2' +- bus: '03' + dev: '00' + fn: '3' + id: 6f53 + name: 'System peripheral: Intel Corporation Xeon Processor D Family QuickData Technology + Register DMA Channel 3' +- 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: '07' + dev: '00' + fn: '0' + id: b873 + name: 'Ethernet controller: Broadcom Limited Device b873 (rev 01)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' +- 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 03)' diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pd-plugin.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pd-plugin.json new file mode 100644 index 000000000000..ffa06ff74303 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pd-plugin.json @@ -0,0 +1,67 @@ +{ + "XCVR": { + "xcvr_present": { + "i2c": { + "valmap-SFP28": { + "1": true, + "0": false + }, + "valmap-QSFP28": { + "1": true, + "0": false + } + } + } + }, + + "PSU": { + "psu_present": { + "i2c": { + "valmap": { + "1": true, + "0": false + } + } + }, + + "psu_power_good": { + "i2c": { + "valmap": { + "1": true, + "0": false + } + } + }, + + "psu_fan_dir": { + "i2c": { + "valmap": { + "F2B": "EXHAUST", + "B2F": "INTAKE" + } + } + }, + "PSU_FAN_MAX_SPEED": "18000" + }, + + "FAN": { + "direction": { + "i2c": { + "valmap": { + "1": "INTAKE", + "0": "EXHAUST" + } + } + }, + "present": { + "i2c": { + "valmap": { + "1": true, + "0": false + } + } + }, + "duty_cycle_to_pwm": "lambda dc: dc*255/100", + "pwm_to_duty_cycle": "lambda pwm: pwm*100/255" + } +} diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pddf-device.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pddf-device.json new file mode 100644 index 000000000000..3f5aae68c544 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pddf-device.json @@ -0,0 +1,7012 @@ +{ + "PLATFORM": { + "num_psus": 2, + "num_fantrays": 3, + "num_fans_pertray": 1, + "num_ports": 64, + "num_temps": 3, + "pddf_dev_types": { + "description": "RA-B6910-64C", + "CPLD": [ + "i2c_cpld" + ], + "PSU": [ + "psu_eeprom", + "psu_pmbus" + ], + "FAN": [ + "fan_ctrl", + "fan_cpld", + "fan_eeprom" + ], + "PORT_MODULE": [ + "pddf_xcvr", + "optoe1", + "optoe2" + ] + }, + "std_kos": [ + "i2c-ismt", + "i2c-i801", + "i2c_dev", + "i2c_gpio", + "i2c_algo_bit", + "i2c_mux_pca9641", + "i2c_mux_pca954x force_create_bus=1", + "lm75", + "optoe", + "at24", + "pmbus_core" + ], + "pddf_kos": [ + "pddf_client_module", + "pddf_cpld_module", + "pddf_cpld_driver", + "pddf_mux_module", + "pddf_xcvr_module", + "pddf_xcvr_driver_module", + "pddf_psu_driver_module", + "pddf_psu_module", + "pddf_fan_driver_module", + "pddf_fan_module", + "pddf_led_module", + "pddf_sysstatus_module" + ], + "custom_kos": [ + "ragile_platform", + "rg_cpld", + "rg_fan", + "rg_psu", + "rg_gpio_xeon", + "csu550" + ] + + }, + + "SYSTEM": { + "dev_info": { + "device_type": "CPU", + "device_name": "ROOT_COMPLEX", + "device_parent": null + }, + "i2c": { + "CONTROLLERS": [{ + "dev_name": "i2c-0", + "dev": "SMBUS0" + }, { + "dev_name": "i2c-1", + "dev": "I2C-GPIO0" + }, { + "dev_name": "i2c-2", + "dev": "SMBUS1" + }] + } + }, + + "SMBUS0": { + "dev_info": { + "device_type": "SMBUS", + "device_name": "SMBUS0", + "device_parent": "SYSTEM" + }, + "i2c": { + "topo_info": { + "dev_addr": "0x0" + }, + "DEVICES": [{ + "dev": "CPU_CPLD" + }, + { + "dev": "CONNECT_BOARD_CPLD1" + } + ] + } + }, + + "CPU_CPLD": { + "dev_info": { + "device_type": "CPLD", + "device_name": "CPU_CPLD", + "device_parent": "SMBUS0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x0", + "dev_addr": "0x0d", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "CONNECT_BOARD_CPLD1": { + "dev_info": { + "device_type": "CPLD", + "device_name": "CONNECT_BOARD_CPLD1", + "device_parent": "SMBUS0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x0", + "dev_addr": "0x32", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "SMBUS1": { + "dev_info": { + "device_type": "SMBUS", + "device_name": "SMBUS1", + "device_parent": "SYSTEM" + }, + "i2c": { + "topo_info": { + "dev_addr": "0x2" + }, + "DEVICES": [{ + "dev": "MAC_BOARD_CPLD1_A" + }, + { + "dev": "MAC_BOARD_CPLD2_A" + }, + { + "dev": "CONNECT_BOARD_CPLD2" + }, + { + "dev": "FAN-CTRL" + }, + { + "dev": "TEMP1" + }, + { + "dev": "TEMP2" + }, + { + "dev": "TEMP3" + }, + { + "dev": "EEPROM1" + }, + { + "dev": "MUX1" + } + ] + } + }, + + "MAC_BOARD_CPLD1_A": { + "dev_info": { + "device_type": "CPLD", + "device_name": "MAC_BOARD_CPLD1_A", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x33", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "MAC_BOARD_CPLD2_A": { + "dev_info": { + "device_type": "CPLD", + "device_name": "MAC_BOARD_CPLD2_A", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x35", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "CONNECT_BOARD_CPLD2": { + "dev_info": { + "device_type": "CPLD", + "device_name": "CONNECT_BOARD_CPLD2", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x37", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "FAN-CTRL": { + "dev_info": { + "device_type": "FAN", + "device_name": "FAN-CTRL", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x66", + "dev_type": "fan_cpld" + }, + "dev_attr": { + "num_fantrays": "3" + }, + "attr_list": [{ + "attr_name": "fan1_present", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x30", + "attr_mask": "0x1", + "attr_cmpval": "0x0", + "attr_len": "1" + }, + { + "attr_name": "fan2_present", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x30", + "attr_mask": "0x2", + "attr_cmpval": "0x0", + "attr_len": "1" + }, + { + "attr_name": "fan3_present", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x30", + "attr_mask": "0x4", + "attr_cmpval": "0x0", + "attr_len": "1" + }, + { + "attr_name": "fan1_input", + "attr_devname": "CONNECT_BOARD_CPLD2", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x1b", + "attr_mult": "1", + "attr_len": "2" + }, + { + "attr_name": "fan2_input", + "attr_devname": "CONNECT_BOARD_CPLD2", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x1d", + "attr_mult": "1", + "attr_len": "2" + }, + { + "attr_name": "fan3_input", + "attr_devname": "CONNECT_BOARD_CPLD2", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x1f", + "attr_mult": "1", + "attr_len": "2" + }, + { + "attr_name": "fan1_pwm", + "attr_devtype": "cpld", + "attr_devaddr": "0x32", + "attr_offset": "0x15", + "attr_mask": "0xff", + "attr_len": "1" + }, + { + "attr_name": "fan2_pwm", + "attr_devtype": "cpld", + "attr_devaddr": "0x32", + "attr_offset": "0x15", + "attr_mask": "0xff", + "attr_len": "1" + }, + { + "attr_name": "fan3_pwm", + "attr_devtype": "cpld", + "attr_devaddr": "0x32", + "attr_offset": "0x15", + "attr_mask": "0xff", + "attr_len": "1" + } + ] + } + }, + + "TEMP1": { + "dev_info": { + "device_type": "TEMP_SENSOR", + "device_name": "MAC_TEMP_INLET", + "device_parent": "SMBUS1" + }, + "dev_attr": { + "display_name": "Temp_1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x48", + "dev_type": "lm75" + }, + "attr_list": [{ + "attr_name": "temp1_high_threshold", + "drv_attr_name": "temp1_max" + }, + { + "attr_name": "temp1_max_hyst" + }, + { + "attr_name": "temp1_input" + } + ] + } + }, + + "TEMP2": { + "dev_info": { + "device_type": "TEMP_SENSOR", + "device_name": "MAC_TEMP_OUTLET", + "device_parent": "SMBUS1" + }, + "dev_attr": { + "display_name": "Temp_2" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x49", + "dev_type": "lm75" + }, + "attr_list": [{ + "attr_name": "temp1_high_threshold", + "drv_attr_name": "temp1_max" + }, + { + "attr_name": "temp1_max_hyst" + }, + { + "attr_name": "temp1_input" + } + ] + } + }, + + "TEMP3": { + "dev_info": { + "device_type": "TEMP_SENSOR", + "device_name": "MAC_TEMP_HOTEST", + "device_parent": "SMBUS1" + }, + "dev_attr": { + "display_name": "Temp_3" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x4a", + "dev_type": "lm75" + }, + "attr_list": [{ + "attr_name": "temp1_high_threshold", + "drv_attr_name": "temp1_max" + }, + { + "attr_name": "temp1_max_hyst" + }, + { + "attr_name": "temp1_input" + } + ] + } + }, + + "EEPROM1": { + "dev_info": { + "device_type": "EEPROM", + "device_name": "EEPROM1", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x57", + "dev_type": "24c02" + }, + "dev_attr": { + "access_mode": "BLOCK" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "MUX1": { + "dev_info": { + "device_type": "MUX", + "device_name": "MUX1", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x70", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x3" + }, + "channel": [{ + "chn": "0", + "dev": "FAN1-EEPROM" + }, + { + "chn": "1", + "dev": "FAN2-EEPROM" + }, + { + "chn": "2", + "dev": "FAN3-EEPROM" + }, + { + "chn": "4", + "dev": "PSU1" + }, + { + "chn": "5", + "dev": "PSU2" + } + ] + } + }, + + "FAN1-EEPROM": { + "dev_info": { + "device_type": "EEPROM", + "device_name": "FAN1-EEPROM", + "device_parent": "MUX1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3", + "dev_addr": "0x53", + "dev_type": "rg_fan" + }, + "dev_attr": { + "access_mode": "BLOCK" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "FAN2-EEPROM": { + "dev_info": { + "device_type": "EEPROM", + "device_name": "FAN2-EEPROM", + "device_parent": "MUX1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x4", + "dev_addr": "0x53", + "dev_type": "rg_fan" + }, + "dev_attr": { + "access_mode": "BLOCK" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "FAN3-EEPROM": { + "dev_info": { + "device_type": "EEPROM", + "device_name": "FAN3-EEPROM", + "device_parent": "MUX1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x5", + "dev_addr": "0x53", + "dev_type": "rg_fan" + }, + "dev_attr": { + "access_mode": "BLOCK" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PSU1": { + "dev_info": { + "device_type": "PSU", + "device_name": "PSU1", + "device_parent": "MUX1" + }, + "dev_attr": { + "dev_idx": "1", + "num_psu_fans": "1" + }, + "i2c": { + "interface": [{ + "itf": "pmbus", + "dev": "PSU1-PMBUS" + }, + { + "itf": "eeprom", + "dev": "PSU1-EEPROM" + } + ] + } + }, + + "PSU1-PMBUS": { + "dev_info": { + "device_type": "PSU-PMBUS", + "device_name": "PSU1-PMBUS", + "device_parent": "MUX1", + "virt_parent": "PSU1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x7", + "dev_addr": "0x58", + "dev_type": "psu_pmbus" + }, + "attr_list": [{ + "attr_name": "psu_present", + "attr_devaddr": "0x37", + "attr_devtype": "cpld", + "attr_offset": "0x51", + "attr_mask": "0x1", + "attr_cmpval": "0x0", + "attr_len": "1" + }, + { + "attr_name": "psu_model_name", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x9a", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "12" + }, + { + "attr_name": "psu_power_good", + "attr_devaddr": "0x37", + "attr_devtype": "cpld", + "attr_offset": "0x51", + "attr_mask": "0x2", + "attr_cmpval": "0x2", + "attr_len": "1" + }, + { + "attr_name": "psu_mfr_id", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x99", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "10" + }, + { + "attr_name": "psu_fan_dir", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0xc3", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "5" + }, + { + "attr_name": "psu_v_out", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x8b", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_i_out", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x8c", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_p_out", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x96", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_fan1_speed_rpm", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x90", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + } + ] + } + }, + + "PSU1-EEPROM": { + "dev_info": { + "device_type": "PSU-EEPROM", + "device_name": "PSU1-EEPROM", + "device_parent": "MUX1", + "virt_parent": "PSU1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x7", + "dev_addr": "0x50", + "dev_type": "psu_eeprom" + }, + "attr_list": [{ + "attr_name": "psu_serial_num", + "attr_devaddr": "0x50", + "attr_devtype": "eeprom", + "attr_offset": "0x38", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "20" + }] + } + }, + + "PSU2": { + "dev_info": { + "device_type": "PSU", + "device_name": "PSU2", + "device_parent": "MUX1" + }, + "dev_attr": { + "dev_idx": "2", + "num_psu_fans": "1" + }, + "i2c": { + "interface": [{ + "itf": "pmbus", + "dev": "PSU2-PMBUS" + }, + { + "itf": "eeprom", + "dev": "PSU2-EEPROM" + } + ] + } + }, + + "PSU2-PMBUS": { + "dev_info": { + "device_type": "PSU-PMBUS", + "device_name": "PSU2-PMBUS", + "device_parent": "MUX1", + "virt_parent": "PSU2" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x8", + "dev_addr": "0x5b", + "dev_type": "psu_pmbus" + }, + "attr_list": [{ + "attr_name": "psu_present", + "attr_devaddr": "0x37", + "attr_devtype": "cpld", + "attr_offset": "0x51", + "attr_mask": "0x8", + "attr_cmpval": "0x0", + "attr_len": "1" + }, + { + "attr_name": "psu_model_name", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x35", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "12" + }, + { + "attr_name": "psu_power_good", + "attr_devaddr": "0x37", + "attr_devtype": "cpld", + "attr_offset": "0x51", + "attr_mask": "0x10", + "attr_cmpval": "0x10", + "attr_len": "1" + }, + { + "attr_name": "psu_mfr_id", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x99", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "10" + }, + { + "attr_name": "psu_fan_dir", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0xc3", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "5" + }, + { + "attr_name": "psu_v_out", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x8b", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_i_out", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x8c", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_p_out", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x96", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_fan1_speed_rpm", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x90", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_temp1_input", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x8d", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + } + ] + } + }, + + "PSU2-EEPROM": { + "dev_info": { + "device_type": "PSU-EEPROM", + "device_name": "PSU2-EEPROM", + "device_parent": "MUX1", + "virt_parent": "PSU2" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x8", + "dev_addr": "0x53", + "dev_type": "psu_eeprom" + }, + "attr_list": [{ + "attr_name": "psu_serial_num", + "attr_devaddr": "0x53", + "attr_devtype": "eeprom", + "attr_offset": "0x38", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "20" + }] + } + }, + + "I2C-GPIO0": { + "dev_info": { + "device_type": "I2C-GPIO", + "device_name": "I2C-GPIO0", + "device_parent": "SYSTEM" + }, + "i2c": { + "topo_info": { + "dev_addr": "0x1" + }, + "DEVICES": [{ + "dev": "MAC_BOARD_CPLD1_B" + }, + { + "dev": "MAC_BOARD_CPLD2_B" + }, + { + "dev": "PORT-MUX1" + }, + { + "dev": "PORT-MUX2" + }, + { + "dev": "PORT-MUX3" + }, + { + "dev": "PORT-MUX4" + }, + { + "dev": "PORT-MUX5" + }, + { + "dev": "PORT-MUX6" + }, + { + "dev": "PORT-MUX7" + }, + { + "dev": "PORT-MUX8" + } + ] + } + }, + + "MAC_BOARD_CPLD1_B": { + "dev_info": { + "device_type": "CPLD", + "device_name": "MAC_BOARD_CPLD1_B", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x34", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "MAC_BOARD_CPLD2_B": { + "dev_info": { + "device_type": "CPLD", + "device_name": "MAC_BOARD_CPLD2_B", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x36", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "PORT-MUX1": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX1", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x70", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0xb" + }, + "channel": [{ + "chn": "0", + "dev": "PORT1" + }, + { + "chn": "1", + "dev": "PORT2" + }, + { + "chn": "2", + "dev": "PORT3" + }, + { + "chn": "3", + "dev": "PORT4" + }, + { + "chn": "4", + "dev": "PORT5" + }, + { + "chn": "5", + "dev": "PORT6" + }, + { + "chn": "6", + "dev": "PORT7" + }, + { + "chn": "7", + "dev": "PORT8" + } + ] + } + }, + + "PORT-MUX2": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX2", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x71", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x13" + }, + "channel": [{ + "chn": "0", + "dev": "PORT9" + }, + { + "chn": "1", + "dev": "PORT10" + }, + { + "chn": "2", + "dev": "PORT11" + }, + { + "chn": "3", + "dev": "PORT12" + }, + { + "chn": "4", + "dev": "PORT13" + }, + { + "chn": "5", + "dev": "PORT14" + }, + { + "chn": "6", + "dev": "PORT15" + }, + { + "chn": "7", + "dev": "PORT16" + } + ] + } + }, + + "PORT-MUX3": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX3", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x72", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x1b" + }, + "channel": [{ + "chn": "0", + "dev": "PORT17" + }, + { + "chn": "1", + "dev": "PORT18" + }, + { + "chn": "2", + "dev": "PORT19" + }, + { + "chn": "3", + "dev": "PORT20" + }, + { + "chn": "4", + "dev": "PORT21" + }, + { + "chn": "5", + "dev": "PORT22" + }, + { + "chn": "6", + "dev": "PORT23" + }, + { + "chn": "7", + "dev": "PORT24" + } + ] + } + }, + + "PORT-MUX4": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX4", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x73", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x23" + }, + "channel": [{ + "chn": "0", + "dev": "PORT25" + }, + { + "chn": "1", + "dev": "PORT26" + }, + { + "chn": "2", + "dev": "PORT27" + }, + { + "chn": "3", + "dev": "PORT28" + }, + { + "chn": "4", + "dev": "PORT29" + }, + { + "chn": "5", + "dev": "PORT30" + }, + { + "chn": "6", + "dev": "PORT31" + }, + { + "chn": "7", + "dev": "PORT32" + } + ] + } + }, + + "PORT-MUX5": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX5", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x74", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x2b" + }, + "channel": [{ + "chn": "0", + "dev": "PORT33" + }, + { + "chn": "1", + "dev": "PORT34" + }, + { + "chn": "2", + "dev": "PORT35" + }, + { + "chn": "3", + "dev": "PORT36" + }, + { + "chn": "4", + "dev": "PORT37" + }, + { + "chn": "5", + "dev": "PORT38" + }, + { + "chn": "6", + "dev": "PORT39" + }, + { + "chn": "7", + "dev": "PORT40" + } + ] + } + }, + + "PORT-MUX6": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX6", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x75", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x33" + }, + "channel": [{ + "chn": "0", + "dev": "PORT41" + }, + { + "chn": "1", + "dev": "PORT42" + }, + { + "chn": "2", + "dev": "PORT43" + }, + { + "chn": "3", + "dev": "PORT44" + }, + { + "chn": "4", + "dev": "PORT45" + }, + { + "chn": "5", + "dev": "PORT46" + }, + { + "chn": "6", + "dev": "PORT47" + }, + { + "chn": "7", + "dev": "PORT48" + } + ] + } + }, + + "PORT-MUX7": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX7", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x76", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x3b" + }, + "channel": [{ + "chn": "0", + "dev": "PORT49" + }, + { + "chn": "1", + "dev": "PORT50" + }, + { + "chn": "2", + "dev": "PORT51" + }, + { + "chn": "3", + "dev": "PORT52" + }, + { + "chn": "4", + "dev": "PORT53" + }, + { + "chn": "5", + "dev": "PORT54" + }, + { + "chn": "6", + "dev": "PORT55" + }, + { + "chn": "7", + "dev": "PORT56" + } + ] + } + }, + + "PORT-MUX8": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX8", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x77", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x43" + }, + "channel": [{ + "chn": "0", + "dev": "PORT57" + }, + { + "chn": "1", + "dev": "PORT58" + }, + { + "chn": "2", + "dev": "PORT59" + }, + { + "chn": "3", + "dev": "PORT60" + }, + { + "chn": "4", + "dev": "PORT61" + }, + { + "chn": "5", + "dev": "PORT62" + }, + { + "chn": "6", + "dev": "PORT63" + }, + { + "chn": "7", + "dev": "PORT64" + } + ] + } + }, + + "PORT1": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT1", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "1" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT1-EEPROM" + }, { + "itf": "control", + "dev": "PORT1-CTRL" + }] + } + }, + + "PORT1-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT1-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xb", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT1-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT1-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xb", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT2": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT2", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "2" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT2-EEPROM" + }, { + "itf": "control", + "dev": "PORT2-CTRL" + }] + } + }, + + "PORT2-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT2-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT2" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xc", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT2-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT2-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT2" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xc", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT3": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT3", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "3" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT3-EEPROM" + }, { + "itf": "control", + "dev": "PORT3-CTRL" + }] + } + }, + + "PORT3-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT3-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT3" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xd", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT3-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT3-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT3" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xd", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT4": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT4", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "4" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT4-EEPROM" + }, { + "itf": "control", + "dev": "PORT4-CTRL" + }] + } + }, + + "PORT4-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT4-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT4" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xe", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT4-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT4-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT4" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xe", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT5": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT5", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "5" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT5-EEPROM" + }, { + "itf": "control", + "dev": "PORT5-CTRL" + }] + } + }, + + "PORT5-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT5-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT5" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xf", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT5-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT5-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT5" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xf", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT6": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT6", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "6" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT6-EEPROM" + }, { + "itf": "control", + "dev": "PORT6-CTRL" + }] + } + }, + + "PORT6-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT6-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT6" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x10", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT6-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT6-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT6" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x10", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT7": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT7", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "7" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT7-EEPROM" + }, { + "itf": "control", + "dev": "PORT7-CTRL" + }] + } + }, + + "PORT7-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT7-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT7" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x11", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT7-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT7-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT7" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x11", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT8": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT8", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "8" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT8-EEPROM" + }, { + "itf": "control", + "dev": "PORT8-CTRL" + }] + } + }, + + "PORT8-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT8-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT8" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x12", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT8-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT8-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT8" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x12", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT9": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT9", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "9" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT9-EEPROM" + }, { + "itf": "control", + "dev": "PORT9-CTRL" + }] + } + }, + + "PORT9-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT9-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT9" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x13", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT9-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT9-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT9" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x13", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT10": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT10", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "10" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT10-EEPROM" + }, { + "itf": "control", + "dev": "PORT10-CTRL" + }] + } + }, + + "PORT10-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT10-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT10" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x14", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT10-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT10-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT10" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x14", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT11": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT11", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "11" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT11-EEPROM" + }, { + "itf": "control", + "dev": "PORT11-CTRL" + }] + } + }, + + "PORT11-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT11-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT11" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x15", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT11-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT11-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT11" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x15", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT12": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT12", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "12" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT12-EEPROM" + }, { + "itf": "control", + "dev": "PORT12-CTRL" + }] + } + }, + + "PORT12-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT12-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT12" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x16", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT12-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT12-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT12" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x16", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT13": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT13", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "13" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT13-EEPROM" + }, { + "itf": "control", + "dev": "PORT13-CTRL" + }] + } + }, + + "PORT13-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT13-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT13" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x17", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT13-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT13-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT13" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x17", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT14": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT14", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "14" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT14-EEPROM" + }, { + "itf": "control", + "dev": "PORT14-CTRL" + }] + } + }, + + "PORT14-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT14-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT14" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x18", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT14-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT14-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT14" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x18", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT15": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT15", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "15" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT15-EEPROM" + }, { + "itf": "control", + "dev": "PORT15-CTRL" + }] + } + }, + + "PORT15-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT15-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT15" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x19", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT15-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT15-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT15" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x19", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT16": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT16", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "16" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT16-EEPROM" + }, { + "itf": "control", + "dev": "PORT16-CTRL" + }] + } + }, + + "PORT16-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT16-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT16" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1a", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT16-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT16-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT16" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1a", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT17": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT17", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "17" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT17-EEPROM" + }, { + "itf": "control", + "dev": "PORT17-CTRL" + }] + } + }, + + "PORT17-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT17-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT17" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1b", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT17-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT17-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT17" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1b", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT18": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT18", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "18" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT18-EEPROM" + }, { + "itf": "control", + "dev": "PORT18-CTRL" + }] + } + }, + + "PORT18-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT18-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT18" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1c", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT18-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT18-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT18" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1c", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT19": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT19", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "19" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT19-EEPROM" + }, { + "itf": "control", + "dev": "PORT19-CTRL" + }] + } + }, + + "PORT19-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT19-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT19" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1d", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT19-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT19-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT19" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1d", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT20": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT20", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "20" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT20-EEPROM" + }, { + "itf": "control", + "dev": "PORT20-CTRL" + }] + } + }, + + "PORT20-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT20-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT20" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1e", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT20-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT20-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT20" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1e", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT21": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT21", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "21" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT21-EEPROM" + }, { + "itf": "control", + "dev": "PORT21-CTRL" + }] + } + }, + + "PORT21-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT21-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT21" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1f", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT21-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT21-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT21" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1f", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT22": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT22", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "22" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT22-EEPROM" + }, { + "itf": "control", + "dev": "PORT22-CTRL" + }] + } + }, + + "PORT22-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT22-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT22" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x20", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT22-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT22-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT22" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x20", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT23": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT23", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "23" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT23-EEPROM" + }, { + "itf": "control", + "dev": "PORT23-CTRL" + }] + } + }, + + "PORT23-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT23-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT23" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x21", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT23-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT23-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT23" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x21", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT24": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT24", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "24" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT24-EEPROM" + }, { + "itf": "control", + "dev": "PORT24-CTRL" + }] + } + }, + + "PORT24-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT24-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT24" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x22", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT24-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT24-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT24" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x22", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT25": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT25", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "25" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT25-EEPROM" + }, { + "itf": "control", + "dev": "PORT25-CTRL" + }] + } + }, + + "PORT25-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT25-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT25" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x23", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT25-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT25-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT25" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x23", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT26": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT26", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "26" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT26-EEPROM" + }, { + "itf": "control", + "dev": "PORT26-CTRL" + }] + } + }, + + "PORT26-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT26-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT26" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x24", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT26-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT26-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT26" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x24", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT27": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT27", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "27" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT27-EEPROM" + }, { + "itf": "control", + "dev": "PORT27-CTRL" + }] + } + }, + + "PORT27-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT27-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT27" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x25", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT27-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT27-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT27" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x25", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT28": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT28", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "28" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT28-EEPROM" + }, { + "itf": "control", + "dev": "PORT28-CTRL" + }] + } + }, + + "PORT28-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT28-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT28" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x26", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT28-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT28-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT28" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x26", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT29": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT29", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "29" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT29-EEPROM" + }, { + "itf": "control", + "dev": "PORT29-CTRL" + }] + } + }, + + "PORT29-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT29-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT29" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x27", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT29-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT29-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT29" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x27", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT30": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT30", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "30" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT30-EEPROM" + }, { + "itf": "control", + "dev": "PORT30-CTRL" + }] + } + }, + + "PORT30-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT30-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT30" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x28", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT30-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT30-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT30" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x28", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT31": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT31", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "31" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT31-EEPROM" + }, { + "itf": "control", + "dev": "PORT31-CTRL" + }] + } + }, + + "PORT31-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT31-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT31" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x29", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT31-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT31-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT31" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x29", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT32": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT32", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "32" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT32-EEPROM" + }, { + "itf": "control", + "dev": "PORT32-CTRL" + }] + } + }, + + "PORT32-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT32-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT32" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2a", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT32-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT32-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT32" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2a", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT33": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT33", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "33" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT33-EEPROM" + }, { + "itf": "control", + "dev": "PORT33-CTRL" + }] + } + }, + + "PORT33-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT33-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT33" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2b", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT33-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT33-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT33" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2b", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT34": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT34", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "34" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT34-EEPROM" + }, { + "itf": "control", + "dev": "PORT34-CTRL" + }] + } + }, + + "PORT34-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT34-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT34" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2c", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT34-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT34-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT34" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2c", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT35": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT35", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "35" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT35-EEPROM" + }, { + "itf": "control", + "dev": "PORT35-CTRL" + }] + } + }, + + "PORT35-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT35-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT35" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2d", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT35-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT35-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT35" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2d", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT36": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT36", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "36" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT36-EEPROM" + }, { + "itf": "control", + "dev": "PORT36-CTRL" + }] + } + }, + + "PORT36-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT36-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT36" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2e", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT36-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT36-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT36" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2e", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT37": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT37", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "37" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT37-EEPROM" + }, { + "itf": "control", + "dev": "PORT37-CTRL" + }] + } + }, + + "PORT37-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT37-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT37" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2f", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT37-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT37-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT37" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2f", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT38": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT38", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "38" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT38-EEPROM" + }, { + "itf": "control", + "dev": "PORT38-CTRL" + }] + } + }, + + "PORT38-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT38-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT38" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x30", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT38-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT38-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT38" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x30", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT39": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT39", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "39" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT39-EEPROM" + }, { + "itf": "control", + "dev": "PORT39-CTRL" + }] + } + }, + + "PORT39-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT39-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT39" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x31", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT39-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT39-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT39" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x31", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT40": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT40", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "40" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT40-EEPROM" + }, { + "itf": "control", + "dev": "PORT40-CTRL" + }] + } + }, + + "PORT40-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT40-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT40" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x32", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT40-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT40-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT40" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x32", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT41": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT41", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "41" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT41-EEPROM" + }, { + "itf": "control", + "dev": "PORT41-CTRL" + }] + } + }, + + "PORT41-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT41-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT41" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x33", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT41-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT41-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT41" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x33", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT42": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT42", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "42" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT42-EEPROM" + }, { + "itf": "control", + "dev": "PORT42-CTRL" + }] + } + }, + + "PORT42-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT42-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT42" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x34", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT42-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT42-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT42" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x34", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT43": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT43", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "43" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT43-EEPROM" + }, { + "itf": "control", + "dev": "PORT43-CTRL" + }] + } + }, + + "PORT43-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT43-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT43" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x35", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT43-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT43-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT43" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x35", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT44": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT44", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "44" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT44-EEPROM" + }, { + "itf": "control", + "dev": "PORT44-CTRL" + }] + } + }, + + "PORT44-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT44-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT44" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x36", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT44-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT44-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT44" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x36", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT45": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT45", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "45" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT45-EEPROM" + }, { + "itf": "control", + "dev": "PORT45-CTRL" + }] + } + }, + + "PORT45-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT45-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT45" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x37", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT45-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT45-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT45" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x37", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT46": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT46", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "46" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT46-EEPROM" + }, { + "itf": "control", + "dev": "PORT46-CTRL" + }] + } + }, + + "PORT46-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT46-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT46" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x38", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT46-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT46-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT46" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x38", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT47": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT47", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "47" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT47-EEPROM" + }, { + "itf": "control", + "dev": "PORT47-CTRL" + }] + } + }, + + "PORT47-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT47-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT47" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x39", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT47-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT47-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT47" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x39", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT48": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT48", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "48" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT48-EEPROM" + }, { + "itf": "control", + "dev": "PORT48-CTRL" + }] + } + }, + + "PORT48-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT48-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT48" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3a", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT48-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT48-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT48" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3a", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT49": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT49", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "49" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT49-EEPROM" + }, { + "itf": "control", + "dev": "PORT49-CTRL" + }] + } + }, + + "PORT49-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT49-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT49" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3b", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT49-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT49-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT49" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3b", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT50": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT50", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "50" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT50-EEPROM" + }, { + "itf": "control", + "dev": "PORT50-CTRL" + }] + } + }, + + "PORT50-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT50-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT50" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3c", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT50-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT50-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT50" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3c", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT51": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT51", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "51" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT51-EEPROM" + }, { + "itf": "control", + "dev": "PORT51-CTRL" + }] + } + }, + + "PORT51-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT51-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT51" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3d", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT51-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT51-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT51" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3d", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT52": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT52", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "52" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT52-EEPROM" + }, { + "itf": "control", + "dev": "PORT52-CTRL" + }] + } + }, + + "PORT52-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT52-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT52" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3e", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT52-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT52-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT52" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3e", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT53": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT53", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "53" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT53-EEPROM" + }, { + "itf": "control", + "dev": "PORT53-CTRL" + }] + } + }, + + "PORT53-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT53-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT53" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3f", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT53-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT53-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT53" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3f", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT54": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT54", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "54" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT54-EEPROM" + }, { + "itf": "control", + "dev": "PORT54-CTRL" + }] + } + }, + + "PORT54-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT54-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT54" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x40", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT54-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT54-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT54" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x40", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT55": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT55", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "55" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT55-EEPROM" + }, { + "itf": "control", + "dev": "PORT55-CTRL" + }] + } + }, + + "PORT55-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT55-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT55" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x41", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT55-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT55-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT55" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x41", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT56": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT56", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "56" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT56-EEPROM" + }, { + "itf": "control", + "dev": "PORT56-CTRL" + }] + } + }, + + "PORT56-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT56-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT56" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x42", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT56-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT56-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT56" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x42", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT57": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT57", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "57" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT57-EEPROM" + }, { + "itf": "control", + "dev": "PORT57-CTRL" + }] + } + }, + + "PORT57-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT57-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT57" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x43", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT57-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT57-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT57" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x43", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT58": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT58", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "58" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT58-EEPROM" + }, { + "itf": "control", + "dev": "PORT58-CTRL" + }] + } + }, + + "PORT58-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT58-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT58" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x44", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT58-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT58-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT58" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x44", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT59": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT59", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "59" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT59-EEPROM" + }, { + "itf": "control", + "dev": "PORT59-CTRL" + }] + } + }, + + "PORT59-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT59-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT59" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x45", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT59-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT59-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT59" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x45", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT60": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT60", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "60" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT60-EEPROM" + }, { + "itf": "control", + "dev": "PORT60-CTRL" + }] + } + }, + + "PORT60-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT60-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT60" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x46", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT60-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT60-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT60" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x46", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT61": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT61", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "61" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT61-EEPROM" + }, { + "itf": "control", + "dev": "PORT61-CTRL" + }] + } + }, + + "PORT61-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT61-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT61" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x47", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT61-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT61-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT61" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x47", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT62": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT62", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "62" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT62-EEPROM" + }, { + "itf": "control", + "dev": "PORT62-CTRL" + }] + } + }, + + "PORT62-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT62-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT62" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x48", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT62-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT62-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT62" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x48", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT63": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT63", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "63" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT63-EEPROM" + }, { + "itf": "control", + "dev": "PORT63-CTRL" + }] + } + }, + + "PORT63-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT63-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT63" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x49", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT63-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT63-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT63" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x49", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT64": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT64", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "64" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT64-EEPROM" + }, { + "itf": "control", + "dev": "PORT64-CTRL" + }] + } + }, + + "PORT64-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT64-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT64" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x4a", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT64-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT64-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT64" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x4a", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "FRONT_BOARD_BMC_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "DIAG_LED" + }, + "dev_attr": { + "index": "0" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "2:0", + "value": "0x2", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "2:0", + "value": "0x1", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "2:0", + "value": "0x4", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "2:0", + "value": "0x3", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "2:0", + "value": "0x6", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "2:0", + "value": "0x5", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "2:0", + "value": "0x0", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + } + ] + } + }, + + "FRONT_BOARD_CPU_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "SYS_LED" + }, + "dev_attr": { + "index": "0" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "2:0", + "value": "0x2", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "2:0", + "value": "0x1", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "2:0", + "value": "0x4", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "2:0", + "value": "0x3", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "2:0", + "value": "0x6", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "2:0", + "value": "0x5", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "2:0", + "value": "0x0", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + } + ] + } + }, + + "FRONT_BOARD_PSU_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "LOC_LED" + }, + "dev_attr": { + "index": "0" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "2:0", + "value": "0x2", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "2:0", + "value": "0x1", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "2:0", + "value": "0x4", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "2:0", + "value": "0x3", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "2:0", + "value": "0x6", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "2:0", + "value": "0x5", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "2:0", + "value": "0x0", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + } + ] + } + }, + + "FRONT_BOARD_FAN_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "FAN_LED" + }, + "dev_attr": { + "index": "0" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "2:0", + "value": "0x2", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "2:0", + "value": "0x1", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "2:0", + "value": "0x4", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "2:0", + "value": "0x3", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "2:0", + "value": "0x6", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "2:0", + "value": "0x5", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "2:0", + "value": "0x0", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + } + ] + } + }, + + "FAN1_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "FANTRAY_LED" + }, + "dev_attr": { + "index": "0" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "3:0", + "value": "0xa", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "3:0", + "value": "0xe", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "3:0", + "value": "0x9", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "3:0", + "value": "0xd", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "3:0", + "value": "0x3", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "3:0", + "value": "0x7", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "3:0", + "value": "0xb", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + } + ] + } + }, + + "FAN2_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "FANTRAY_LED" + }, + "dev_attr": { + "index": "1" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "3:0", + "value": "0xa", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "3:0", + "value": "0xe", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "3:0", + "value": "0x9", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "3:0", + "value": "0xd", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "3:0", + "value": "0x3", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "3:0", + "value": "0x7", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "3:0", + "value": "0xb", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + } + ] + } + }, + + "FAN3_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "FANTRAY_LED" + }, + "dev_attr": { + "index": "2" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "3:0", + "value": "0xa", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "3:0", + "value": "0xe", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "3:0", + "value": "0x9", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "3:0", + "value": "0xd", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "3:0", + "value": "0x3", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "3:0", + "value": "0x7", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "3:0", + "value": "0xb", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + } + ] + } + } +} diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf_support b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf_support new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/platform_env.conf b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/platform_env.conf new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/eeprom.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/eeprom.py new file mode 100755 index 000000000000..cf7215e0c9ac --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/eeprom.py @@ -0,0 +1,25 @@ +try: + import os + import sys + import json + sys.path.append('/usr/share/sonic/platform/plugins') + import pddfparse + #from sonic_eeprom import eeprom_base + from sonic_eeprom import eeprom_tlvinfo +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): + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + # system EEPROM always has device name EEPROM1 + self.eeprom_path = pddf_obj.get_path("EEPROM1", "eeprom") + super(board, self).__init__(self.eeprom_path, 0, '', True) diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/fanutil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/fanutil.py new file mode 100755 index 000000000000..f34c260035e8 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/fanutil.py @@ -0,0 +1,199 @@ +# Sample pddf_fanutil file +# All the supported FAN SysFS aattributes are +#- fan_present +#- fan_direction +#- fan_input +#- fan_pwm +#- fan_fault +# where idx is in the range [1-12] +# + + +import os.path +import sys +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse +import json + +try: + from sonic_fan.fan_base import FanBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class FanUtil(FanBase): + """PDDF generic FAN util class""" + + def __init__(self): + FanBase.__init__(self) + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + self.platform = pddf_obj.get_platform() + + self.num_fans = (self.platform['num_fantrays'] * self.platform['num_fans_pertray']) + + def get_num_fans(self): + return self.num_fans + + def get_presence(self, idx): + # 1 based fan index + if idx < 1 or idx > self.num_fans: + print("Invalid fan index %d\n" % idx) + return False + + attr_name = "fan" + str(idx) + "_present" + output = pddf_obj.get_attr_name_output("FAN-CTRL", attr_name) + if not output: + return False + + mode = output['mode'] + presence = output['status'].rstrip() + + vmap = plugin_data['FAN']['present'][mode]['valmap'] + + if presence in vmap: + status = vmap[presence] + else: + status = False + + return status + + def get_status(self, idx): + # 1 based fan index + if idx < 1 or idx > self.num_fans: + print("Invalid fan index %d\n" % idx) + return False + + speed = self.get_speed(idx) + status = True if (speed != 0) else False + return status + + def get_direction(self, idx): + # 1 based fan index + if idx < 1 or idx > self.num_fans: + print("Invalid fan index %d\n" % idx) + return None + + attr = "fan" + str(idx) + "_direction" + output = pddf_obj.get_attr_name_output("FAN-CTRL", attr) + if not output: + return None + + mode = output['mode'] + val = output['status'] + + val = val.rstrip() + vmap = plugin_data['FAN']['direction'][mode]['valmap'] + + if val in vmap: + direction = vmap[val] + else: + direction = val + + return direction + + def get_directions(self): + num_fan = self.get_num_fan() + + for i in range(1, num_fan+1): + attr = "fan" + str(i) + "_direction" + output = pddf_obj.get_attr_name_output("FAN-CTRL", attr) + if not output: + return None + + mode = output['mode'] + val = output['status'] + + val = val.rstrip() + vmap = plugin_data['FAN']['direction'][mode]['valmap'] + + direction = vmap[str(val)] + + print("FAN-%d direction is %s" % (i, direction)) + + return 0 + + def get_speed(self, idx): + # 1 based fan index + if idx < 1 or idx > self.num_fans: + print("Invalid fan index %d\n" % idx) + return 0 + + attr = "fan" + str(idx) + "_input" + output = pddf_obj.get_attr_name_output("FAN-CTRL", attr) + if not output: + return 0 + + #mode = output['mode'] + val = output['status'].rstrip() + + if val.isalpha(): + return 0 + else: + rpm_speed = int(float(val)) + + return rpm_speed + + def get_speeds(self): + num_fan = self.get_num_fan() + ret = "FAN_INDEX\t\tRPM\n" + + for i in range(1, num_fan+1): + attr1 = "fan" + str(i) + "_input" + output = pddf_obj.get_attr_name_output("FAN-CTRL", attr1) + if not output: + return "" + + #mode = output['mode'] + val = output['status'].rstrip() + + if val.isalpha(): + frpm = 0 + else: + frpm = int(val) + + ret += "FAN-%d\t\t\t%d\n" % (i, frpm) + + return ret + + def set_speed(self, val): + if val < 0 or val > 100: + print("Error: Invalid speed %d. Please provide a valid speed percentage" % val) + return False + + num_fan = self.num_fans + if 'duty_cycle_to_pwm' not in plugin_data['FAN']: + print("Setting fan speed is not allowed !") + return False + else: + duty_cycle_to_pwm = eval(plugin_data['FAN']['duty_cycle_to_pwm']) + pwm = duty_cycle_to_pwm(val) + print("New Speed: %d%% - PWM value to be set is %d\n" % (val, pwm)) + + for i in range(1, num_fan+1): + attr = "fan" + str(i) + "_pwm" + node = pddf_obj.get_path("FAN-CTRL", attr) + if node is None: + return False + try: + with open(node, 'w') as f: + f.write(str(pwm)) + except IOError: + return False + + return True + + def dump_sysfs(self): + return pddf_obj.cli_dump_dsysfs('fan') + + def get_change_event(self): + """ + TODO: This function need to be implemented + when decide to support monitoring FAN(fand) + on this platform. + """ + raise NotImplementedError diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/ledutil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/ledutil.py new file mode 100755 index 000000000000..5f9e2e99dbfa --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/ledutil.py @@ -0,0 +1,59 @@ +import sys +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse + + +class LedUtil: + color_map = { + "STATUS_LED_COLOR_GREEN": "on", + "STATUS_LED_COLOR_RED": "faulty", + "STATUS_LED_COLOR_OFF": "off" + } + + def __init__(self): + global pddf_obj + pddf_obj = pddfparse.PddfParse() + self.path = "pddf/devices/led" + self.cur_state_path = "pddf/devices/led/cur_state" + + def set_status_led(self, led_device_name, color, color_state="SOLID"): + if (not led_device_name in list(pddf_obj.data.keys())): + status = "ERROR: " + led_device_name + " is not configured" + return (status) + + if (not color in list(self.color_map.keys())): + status = "ERROR: Invalid color" + return (status) + + index = pddf_obj.data[led_device_name]['dev_attr']['index'] + pddf_obj.create_attr('device_name', led_device_name, self.path) + pddf_obj.create_attr('index', index, self.path) + pddf_obj.create_attr( + 'color', self.color_map[color], self.cur_state_path) + pddf_obj.create_attr('color_state', color_state, self.cur_state_path) + pddf_obj.create_attr('dev_ops', 'set_status', self.path) + return ("Executed") + + def get_status_led(self, led_device_name): + if (not led_device_name in list(pddf_obj.data.keys())): + status = "ERROR: " + led_device_name + " is not configured" + return (status) + + index = pddf_obj.data[led_device_name]['dev_attr']['index'] + pddf_obj.create_attr('device_name', led_device_name, self.path) + pddf_obj.create_attr('index', index, self.path) + pddf_obj.create_attr('dev_ops', 'get_status', self.path) + color_f = "/sys/kernel/" + self.cur_state_path + "/color" + color_state_f = "/sys/kernel/" + self.cur_state_path + "/color_state" + + try: + with open(color_f, 'r') as f: + color = f.read().strip("\r\n") + with open(color_state_f, 'r') as f: + color_state = f.read().strip("\r\n") + except IOError: + status = "ERROR :" + color_f + " open failed" + return (status) + status = "%s-%s:\t%s %s\n" % (led_device_name, + index, color, color_state) + return (status) diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/psuutil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/psuutil.py new file mode 100755 index 000000000000..dccb1ac1a155 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/psuutil.py @@ -0,0 +1,270 @@ +# +# Sample pddf_psuutil file +# +# All the supported PSU SysFS aattributes are +#- psu_present +#- psu_model_name +#- psu_power_good +#- psu_mfr_id +#- psu_serial_num +#- psu_fan_dir +#- psu_v_out +#- psu_i_out +#- psu_p_out +#- psu_fan1_speed_rpm +# + +import os.path +import sys +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse +import json + +try: + from sonic_psu.psu_base import PsuBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class PsuUtil(PsuBase): + """PDDF generic PSU util class""" + + def __init__(self): + PsuBase.__init__(self) + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + self.platform = pddf_obj.get_platform() + + def get_num_psus(self): + return int(self.platform['num_psus']) + + def get_psu_status(self, index): + if index is None: + return False + + device = "PSU" + "%d" % index + output = pddf_obj.get_attr_name_output(device, "psu_power_good") + if not output: + return False + + mode = output['mode'] + val = output['status'] + + val = val.rstrip() + vmap = plugin_data['PSU']['psu_power_good'][mode]['valmap'] + + if val in vmap: + return vmap[val] + else: + return False + + def get_psu_presence(self, index): + if index is None: + return False + + status = 0 + device = "PSU" + "%d" % index + output = pddf_obj.get_attr_name_output(device, "psu_present") + if not output: + return False + + mode = output['mode'] + status = output['status'] + + vmap = plugin_data['PSU']['psu_present'][mode]['valmap'] + + if status.rstrip('\n') in vmap: + return vmap[status.rstrip('\n')] + else: + return False + + def get_powergood_status(self, idx): + if idx is None: + return False + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return False + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_power_good") + if not output: + return False + + mode = output['mode'] + status = output['status'] + + vmap = plugin_data['PSU']['psu_power_good'][mode]['valmap'] + + if status.rstrip('\n') in vmap: + return vmap[status.rstrip('\n')] + else: + return False + + def get_model(self, idx): + if idx is None: + return None + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return None + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_model_name") + if not output: + return None + + model = output['status'] + + # strip_non_ascii + stripped = (c for c in model if 0 < ord(c) < 127) + model = ''.join(stripped) + + return model.rstrip('\n') + + def get_mfr_id(self, idx): + if idx is None: + return None + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return None + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_mfr_id") + if not output: + return None + + mfr = output['status'] + + return mfr.rstrip('\n') + + def get_serial(self, idx): + if idx is None: + return None + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return None + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_serial_num") + if not output: + return None + + serial = output['status'] + + return serial.rstrip('\n') + + def get_direction(self, idx): + if idx is None: + return None + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return None + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_fan_dir") + if not output: + return None + + mode = output['mode'] + direction = output['status'].rstrip('\n') + + vmap = plugin_data['PSU']['psu_fan_dir'][mode]['valmap'] + if direction in vmap: + airflow_dir_real = vmap[direction] + else: + airflow_dir_real = direction + + return airflow_dir_real + + def get_output_voltage(self, idx): + if idx is None: + return 0.0 + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return 0.0 + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_v_out") + if not output: + return 0.0 + + v_out = output['status'] + + # value returned by the psu driver is in mV + return float(v_out)/1000 + + def get_output_current(self, idx): + if idx is None: + return 0.0 + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return 0.0 + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_i_out") + if not output: + return 0.0 + + i_out = output['status'] + + # current in mA + return float(i_out)/1000 + + def get_output_power(self, idx): + if idx is None: + return 0.0 + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return 0.0 + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_p_out") + if not output: + return 0.0 + + p_out = output['status'] + + # power is returned in micro watts + return float(p_out)/1000000 + + def get_fan_rpm(self, idx, fan_idx): + if idx is None or fan_idx is None: + return 0 + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return 0 + + device = "PSU"+"%d" % (idx) + num_fans = pddf_obj.get_num_psu_fans(device) + + if fan_idx < 1 or fan_idx > num_fans: + print("Invalid PSU-fan index %d\n" % fan_idx) + return 0 + + output = pddf_obj.get_attr_name_output(device, "psu_fan"+str(fan_idx)+"_speed_rpm") + if not output: + return 0 + + #mode = output['mode'] + output['status'] = output['status'].rstrip() + if output['status'].isalpha(): + return 0 + else: + speed = int(output['status']) + + return speed + + def dump_sysfs(self): + return pddf_obj.cli_dump_dsysfs('psu') diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sfputil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sfputil.py new file mode 100755 index 000000000000..1ca925610822 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sfputil.py @@ -0,0 +1,236 @@ +import os.path +import sys +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse +import json + +try: + import time + from ctypes import create_string_buffer + from sonic_sfp.sfputilbase import SfpUtilBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class SfpUtil(SfpUtilBase): + """Platform generic PDDF SfpUtil class""" + + _port_to_eeprom_mapping = {} + _port_start = 0 + _port_end = 0 + _port_to_type_mapping = {} + _qsfp_ports = [] + _sfp_ports = [] + + def __init__(self): + SfpUtilBase.__init__(self) + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + self.platform = pddf_obj.get_platform() + self._port_start = 0 + self._port_end = self.get_num_ports() + + for port_num in range(self._port_start, self._port_end): + device = "PORT" + "%d" % (port_num+1) + port_eeprom_path = pddf_obj.get_path(device, "eeprom") + self._port_to_eeprom_mapping[port_num] = port_eeprom_path + port_type = pddf_obj.get_device_type(device) + self._port_to_type_mapping[port_num] = port_type + self.populate_port_type(port_num) + + def get_num_ports(self): + return int(self.platform['num_ports']) + + def is_valid_port(self, port_num): + if port_num < self._port_start or port_num > self._port_end: + return False + else: + return True + + def get_presence(self, port_num): + if port_num < self._port_start or port_num > self._port_end: + return False + + device = "PORT" + "%d" % (port_num+1) + output = pddf_obj.get_attr_name_output(device, 'xcvr_present') + if not output: + return False + + #mode = output['mode'] + modpres = output['status'].rstrip() + if 'XCVR' in plugin_data: + if 'xcvr_present' in plugin_data['XCVR']: + ptype = self._port_to_type_mapping[port_num] + vtype = 'valmap-'+ptype + if vtype in plugin_data['XCVR']['xcvr_present']: + vmap = plugin_data['XCVR']['xcvr_present'][vtype] + if modpres in vmap: + return vmap[modpres] + else: + return False + # if plugin_data doesn't specify anything regarding Transceivers + if modpres == '1': + return True + + return False + + def populate_port_type(self, port): + if self._port_to_type_mapping[port] == 'QSFP' or self._port_to_type_mapping[port] == 'QSFP28': + self._qsfp_ports.append(port) + elif self._port_to_type_mapping[port] == 'SFP' or self._port_to_type_mapping[port] == 'SFP28': + self._sfp_ports.append(port) + + @property + def port_start(self): + return self._port_start + + @property + def port_end(self): + return (self._port_end - 1) + + @property + def port_to_eeprom_mapping(self): + return self._port_to_eeprom_mapping + + @property + def qsfp_ports(self): + return self._qsfp_ports + + def reset(self, port_num): + if port_num < self._port_start or port_num > self._port_end: + return False + + device = "PORT" + "%d" % (port_num+1) + port_ps = pddf_obj.get_path(device, "xcvr_reset") + if port_ps is None: + return False + + try: + reg_file = open(port_ps, 'w') + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + return False + + try: + reg_file.seek(0) + reg_file.write('1') + time.sleep(1) + reg_file.seek(0) + reg_file.write('0') + reg_file.close() + return True + except IOError as e: + return False + + def get_low_power_mode(self, port_num): + # Check for invalid port_num + if port_num < self._port_start or port_num > self._port_end: + return False + + if not self.get_presence(port_num): + return False + + device = "PORT" + "%d" % (port_num+1) + output = pddf_obj.get_attr_name_output(device, 'xcvr_lpmode') + if not output: + if port_num not in self.qsfp_ports: + return False # Read from eeprom only for QSFP ports + try: + eeprom = None + eeprom = open(self.port_to_eeprom_mapping[port_num], "rb") + # check for valid connector type + eeprom.seek(2) + ctype = eeprom.read(1) + if ctype in ['21', '23']: + return False + + eeprom.seek(93) + lpmode = ord(eeprom.read(1)) + + if ((lpmode & 0x3) == 0x3): + return True # Low Power Mode if "Power override" bit is 1 and "Power set" bit is 1 + else: + # High Power Mode if one of the following conditions is matched: + # 1. "Power override" bit is 0 + # 2. "Power override" bit is 1 and "Power set" bit is 0 + return False + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + return False + finally: + if eeprom is not None: + eeprom.close() + time.sleep(0.01) + else: + #mode = output['mode'] + status = int(output['status'].rstrip()) + + if status == 1: + return True + else: + return False + + def set_low_power_mode(self, port_num, lpmode): + # Check for invalid port_num + if port_num < self._port_start or port_num > self._port_end: + return False + + if not self.get_presence(port_num): + return False # Port is not present, unable to set the eeprom + + device = "PORT" + "%d" % (port_num+1) + port_ps = pddf_obj.get_path(device, "xcvr_lpmode") + if port_ps is None: + if port_num not in self.qsfp_ports: + return False # Write to eeprom only for QSFP ports + try: + eeprom = None + eeprom = open(self.port_to_eeprom_mapping[port_num], "r+b") + # check for valid connector type + eeprom.seek(2) + ctype = eeprom.read(1) + if ctype in ['21', '23']: + return False + + # Fill in write buffer + regval = 0x3 if lpmode else 0x1 # 0x3:Low Power Mode, 0x1:High Power Mode + buffer = create_string_buffer(1) + buffer[0] = chr(regval) + + # Write to eeprom + eeprom.seek(93) + eeprom.write(buffer[0]) + return True + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + return False + finally: + if eeprom is not None: + eeprom.close() + time.sleep(0.01) + else: + try: + f = open(port_ps, 'w') + if lpmode: + f.write('1') + else: + f.write('0') + f.close() + return True + except IOError as e: + return False + + 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 + + def dump_sysfs(self): + return pddf_obj.cli_dump_dsysfs('xcvr') diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sysstatutil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sysstatutil.py new file mode 100755 index 000000000000..af4dd5915361 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sysstatutil.py @@ -0,0 +1,82 @@ +import os.path +import sys +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse +import json + + +class SYSStatusUtil(): + """Platform-specific SYSStatus class""" + + def __init__(self): + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + + def get_board_info(self): + device = "SYSSTATUS" + node = pddf_obj.get_path(device, "board_info") + if node is None: + return False + try: + with open(node, 'r') as f: + status = f.read() + print("board_info : %s" % status) + except IOError: + return False + + def get_cpld_versio(self): + device = "SYSSTATUS" + node = pddf_obj.get_path(device, "cpld1_version") + if node is None: + return False + try: + with open(node, 'r') as f: + status = f.read() + print("cpld1_version : %s" % status) + except IOError: + return False + + def get_power_module_status(self): + device = "SYSSTATUS" + node = pddf_obj.get_path(device, "power_module_status") + if node is None: + return False + try: + with open(node, 'r') as f: + status = f.read() + print("power_module_status : %s" % status) + except IOError: + return False + + def get_system_reset_status(self): + device = "SYSSTATUS" + for i in range(1, 8): + node = pddf_obj.get_path(device, "system_reset"+str(i)) + if node is None: + return False + try: + with open(node, 'r') as f: + status = f.read() + print("system_reset%s : %s" % (i, status)) + except IOError: + print("system_reset%s not supported" % i) + + def get_misc_status(self): + device = "SYSSTATUS" + for i in range(1, 3): + node = pddf_obj.get_path(device, "misc"+str(i)) + if node is None: + return False + try: + with open(node, 'r') as f: + status = f.read() + print("misc%s : %s" % (i, status)) + except IOError: + print("system_reset%s not supported" % i) + + def dump_sysfs(self): + return pddf_obj.cli_dump_dsysfs('sys-status') diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/thermalutil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/thermalutil.py new file mode 100755 index 000000000000..6aef47b7e924 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/thermalutil.py @@ -0,0 +1,75 @@ +import os.path +import sys +import json +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse + + +class ThermalUtil: + def __init__(self): + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + self.platform = pddf_obj.get_platform() + self.num_thermals = self.platform['num_temps'] + self.info = [] + + def get_num_thermals(self): + return (self.num_thermals) + + def get_thermal_info(self): + list = [] + pddf_obj.get_device_list(list, "TEMP_SENSOR") + list.sort() + for dev in list: + data = {} + device_name = dev['dev_info']['device_name'] + topo_info = dev['i2c']['topo_info'] + label = "%s-i2c-%d-%x" % (topo_info['dev_type'], + int(topo_info['parent_bus'], 0), int(topo_info['dev_addr'], 0)) + attr_list = dev['i2c']['attr_list'] + data['device_name'] = device_name + data['label'] = label + for attr in attr_list: + attr_name = attr['attr_name'] + node = pddf_obj.get_path(device_name, attr_name) + if node is None: + return False + try: + with open(node, 'r') as f: + attr_value = int(f.read()) + except IOError: + return False + data[attr_name] = attr_value/float(1000) + self.info.append(data) + + def show_thermal_temp_values(self, idx): + if idx < 1 or idx > self.num_thermals: + print("Invalid temperature sensor idx %d" % idx) + return None + self.get_thermal_info() + thermal_name = "TEMP"+"%d" % idx + label = "" + value = "" + for temp in self.info: + if thermal_name == temp['device_name']: + label = temp['label'] + value = "temp1\t %+.1f C (high = %+.1f C, hyst = %+.1f C)" % ( + temp['temp1_input'], temp['temp1_max'], temp['temp1_max_hyst']) + else: + continue + + return (label, value) + + def show_temp_values(self): + self.get_thermal_info() + for temp in self.info: + print(temp['label']) + print("temp1\t %+.1f C (high = %+.1f C, hyst = %+.1f C)" % + (temp['temp1_input'], temp['temp1_max'], temp['temp1_max_hyst'])) + + def dump_sysfs(self): + return pddf_obj.cli_dump_dsysfs('temp-sensors') diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pmon_daemon_control.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pmon_daemon_control.json new file mode 100644 index 000000000000..b8d554f3a8b8 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pmon_daemon_control.json @@ -0,0 +1,5 @@ +{ + "skip_ledd": true, + "skip_xcvrd": false, + "skip_psud": false +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sensors.conf b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sensors.conf new file mode 100644 index 000000000000..9b0569d1541d --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sensors.conf @@ -0,0 +1,21 @@ +# libsensors configuration file +# ---------------------------------------------- +# + +bus "i2c-2" "i2c-0-mux (chan_id 0)" + +chip "lm75-i2c-2-48" + label temp1 "LM75_0 air_inlet" + set temp1_max 80 + set temp1_max_hyst 75 + +chip "lm75-i2c-2-49" + label temp1 "LM75_1 air_outlet" + set temp1_max 80 + set temp1_max_hyst 75 + +chip "lm75-i2c-2-4a" + label temp1 "LM75_2 hottest" + set temp1_max 80 + set temp1_max_hyst 75 + diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/chassis.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/chassis.json new file mode 100644 index 000000000000..c5ea46918ff2 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/chassis.json @@ -0,0 +1,3 @@ +{ + "eeprom": {"bus": 2, "loc": "0057"} +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/component.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/component.json new file mode 100644 index 000000000000..35f4b4586447 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/component.json @@ -0,0 +1,60 @@ +{ + "components": [ + { + "name": "CPLD1 (MAC Board A)", + "firmware_version": { + "bus": 2, + "addr": 51, + "offset": 0, + "size": 4, + "way": 1, + "format": 7, + "sep": "/" + }, + "desc": "Used for managing IO modules, SFP+ modules and system LEDs", + "slot": 0 + }, + { + "name": "CPLD2 (MAC Board B)", + "firmware_version": { + "bus": 2, + "addr": 53, + "offset": 0, + "size": 4, + "way": 1, + "format": 7, + "sep": "/" + }, + "desc": "Used for managing IO modules, SFP+ modules and system LEDs", + "slot": 0 + }, + { + "name": "CPLD3 (CONNECT Board A)", + "firmware_version": { + "bus": 2, + "addr": 55, + "offset": 0, + "size": 4, + "way": 1, + "format": 7, + "sep": "/" + }, + "desc": "Used for managing IO modules, SFP+ modules and system LEDs", + "slot": 0 + }, + { + "name": "CPLD4 (CPU Board)", + "firmware_version": { + "bus": 0, + "addr": 13, + "offset": 0, + "size": 4, + "way": 1, + "format": 7, + "sep": "/" + }, + "desc": "Used for managing IO modules, SFP+ modules and system LEDs", + "slot": 1 + } + ] +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/fan.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/fan.json new file mode 100644 index 000000000000..de7030ec1f90 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/fan.json @@ -0,0 +1,152 @@ +{ + "fans": [ + { + "name": "fan1", + "e2loc": {"bus": 3, "addr": 83, "way": "i2c", "size": "256"}, + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_present", + "format": 2, + "bit": 0 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_status", + "format": 2, + "bit": 0 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/3-0053/fan_hw_version"}, + "sn": {"loc": "/sys/bus/i2c/devices/3-0053/fan_sn"}, + "led": { + "loc": "/sys/bus/i2c/devices/0-0032/fan0_led", + "format": 6, + "mask": 11 + }, + "led_colors": { + "green": 9, + "red": 10, + "amber": 3 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/2-0037/hwmon/*/fan1_input" + }, + "speed_setter": { + "loc": "/sys/bus/i2c/devices/0-0032/fan_speed_set" + }, + "speed_max": 23000 + } + ] + }, + { + "name": "fan2", + "e2loc": {"bus": 4, "addr": 83, "way": "i2c", "size": "256"}, + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_present", + "format": 2, + "bit": 1 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_status", + "format": 2, + "bit": 1 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/4-0053/fan_hw_version"}, + "sn": {"loc": "/sys/bus/i2c/devices/4-0053/fan_sn"}, + "led": { + "loc": "/sys/bus/i2c/devices/0-0032/fan1_led", + "format": 6, + "mask": 11 + }, + "led_colors": { + "green": 9, + "red": 10, + "amber": 3 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/2-0037/hwmon/*/fan2_input" + }, + "speed_setter": { + "loc": "/sys/bus/i2c/devices/0-0032/fan_speed_set" + }, + "speed_max": 23000 + } + ] + }, + { + "name": "fan3", + "e2loc": {"bus": 3, "addr": 83, "way": "i2c", "size": "256"}, + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_present", + "format": 2, + "bit": 2 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_status", + "format": 2, + "bit": 2 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/5-0053/fan_hw_version"}, + "sn": {"loc": "/sys/bus/i2c/devices/5-0053/fan_sn"}, + "led": { + "loc": "/sys/bus/i2c/devices/0-0032/fan2_led", + "format": 6, + "mask": 11 + }, + "led_colors": { + "green": 9, + "red": 10, + "amber": 3 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/2-0037/hwmon/*/fan3_input" + }, + "speed_setter": { + "loc": "/sys/bus/i2c/devices/0-0032/fan_speed_set" + }, + "speed_max": 23000 + } + ] + }, + { + "name": "fan4", + "e2loc": {"bus": 3, "addr": 83, "way": "i2c", "size": "256"}, + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_present", + "format": 2, + "bit": 3 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_status", + "format": 2, + "bit": 3 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/6-0053/fan_hw_version"}, + "sn": {"loc": "/sys/bus/i2c/devices/6-0053/fan_sn"}, + "led": { + "loc": "/sys/bus/i2c/devices/0-0032/fan3_led", + "format": 6, + "mask": 11 + }, + "led_colors":{ + "green": 9, + "red": 10, + "amber": 3 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/2-0037/hwmon/*/fan4_input" + }, + "speed_setter": { + "loc": "/sys/bus/i2c/devices/0-0032/fan_speed_set" + }, + "speed_max": 23000 + } + ] + } + ] +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/psu.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/psu.json new file mode 100644 index 000000000000..c807b51fc4b6 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/psu.json @@ -0,0 +1,134 @@ +{ + "psus": [ + { + "name": "psu1", + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 0 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 1 + }, + "sn": {"loc": "/sys/bus/i2c/devices/7-0050/psu_sn"}, + "in_current": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/curr1_input", + "format": 4 + }, + "in_voltage": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/in1_input", + "format": 4 + }, + "out_voltage": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/in2_input", + "format": 4 + }, + "out_current": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/curr2_input", + "format": 4 + }, + "temperature": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/temp1_input", + "format": 4 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/7-0050/psu_hw"}, + "psu_type": {"loc": "/sys/bus/i2c/devices/7-0050/psu_type"}, + "fans": [ + { + "name": "psu_fan1", + "present": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/fan1_fault" + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 1 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/fan1_input" + }, + "speed_max": 28000 + } + ] + } + ], + "in_power": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/power1_input", + "format": 5 + }, + "out_power": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/power2_input", + "format": 5 + } + }, + { + "name": "psu2", + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 4 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 5 + }, + "sn": {"loc": "/sys/bus/i2c/devices/8-0053/psu_sn"}, + "in_current": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/curr1_input", + "format": 4 + }, + "in_voltage": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/in1_input", + "format": 4 + }, + "out_voltage": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/in2_input", + "format": 4 + }, + "out_current": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/curr2_input", + "format": 4 + }, + "temperature": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/temp1_input", + "format": 4 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/8-0053/psu_hw"}, + "psu_type": {"loc": "/sys/bus/i2c/devices/8-0053/psu_type"}, + "fans": [ + { + "name": "psu_fan1", + "present": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/fan1_fault" + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 5 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/fan1_input" + }, + "speed_max": 28000 + } + ] + } + ], + "in_power": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/power1_input", + "format": 5 + }, + "out_power": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/power2_input", + "format": 5 + } + } + ] +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/thermal.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/thermal.json new file mode 100644 index 000000000000..319336673534 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/thermal.json @@ -0,0 +1,130 @@ +{"thermals": [ + { + "name": "INLET TEMP", + "high": { + "loc": "/sys/bus/i2c/devices/2-0048/hwmon/*/temp1_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": null, + "temperature": { + "loc": "/sys/bus/i2c/devices/2-0048/hwmon/*/temp1_input", + "format": 4 + } + }, + { + "name": "OUTLET TEMP", + "high": { + "loc": "/sys/bus/i2c/devices/2-0049/hwmon/*/temp1_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": null, + "temperature": { + "loc": "/sys/bus/i2c/devices/2-0049/hwmon/*/temp1_input", + "format": 4 + } + }, + { + "name": "BOARD TEMP", + "high": { + "loc": "/sys/bus/i2c/devices/2-004a/hwmon/*/temp1_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": null, + "temperature": { + "loc": "/sys/bus/i2c/devices/2-004a/hwmon/*/temp1_input", + "format": 4 + } + }, + { + "name": "PHYSICAL ID 0", + "high": { + "loc": "/sys/class/hwmon/hwmon0/temp1_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": { + "loc": "/sys/class/hwmon/hwmon0/temp1_crit", + "format": 4 + }, + "temperature": { + "loc": "/sys/class/hwmon/hwmon0/temp1_input", + "format": 4 + } + }, + { + "name": "CPU CORE 0", + "high": { + "loc": "/sys/class/hwmon/hwmon0/temp2_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": { + "loc": "/sys/class/hwmon/hwmon0/temp2_crit", + "format": 4 + }, + "temperature": { + "loc": "/sys/class/hwmon/hwmon0/temp2_input", + "format": 4 + } + }, + { + "name": "CPU CORE 1", + "high": { + "loc": "/sys/class/hwmon/hwmon0/temp3_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": { + "loc": "/sys/class/hwmon/hwmon0/temp3_crit", + "format": 4 + }, + "temperature": { + "loc": "/sys/class/hwmon/hwmon0/temp3_input", + "format": 4 + } + }, + { + "name": "CPU CORE 2", + "high": { + "loc": "/sys/class/hwmon/hwmon0/temp4_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": { + "loc": "/sys/class/hwmon/hwmon0/temp4_crit", + "format": 4 + }, + "temperature": { + "loc": "/sys/class/hwmon/hwmon0/temp4_input", + "format": 4 + } + }, + { + "name": "CPU CORE 3", + "high": { + "loc": "/sys/class/hwmon/hwmon0/temp5_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": { + "loc": "/sys/class/hwmon/hwmon0/temp5_crit", + "format": 4 + }, + "temperature": { + "loc": "/sys/class/hwmon/hwmon0/temp5_input", + "format": 4 + } + } + ] +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/systest.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/systest.py new file mode 100644 index 000000000000..38e9ff6aa0c9 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/systest.py @@ -0,0 +1,43 @@ +#!/usr/bin/python3 +# -*- coding: UTF-8 -*- +""" +* onboard temperature sensors +* FAN trays +* PSU +""" +import time +import datetime +from monitor import status + +def doWork(): + a=[]; + ''' + return: [{'status': '1', 'hw_version': '1.00', 'errcode': 0, 'fan_type': 'M6510-FAN-F', 'errmsg': 'OK', 'Speed': '9778', 'id': 'fan1', 'present': '0', 'sn': '1000000000014'}, + {'id': 'fan2', 'errmsg': 'not present', 'errcode': -1}, + {'id': 'fan3', 'errmsg': 'not present', 'errcode': -1}, + {'id': 'fan4', 'errmsg': 'not present', 'errcode': -1} + ] + description: 1.get id + 2.errcode equal 0 : dev normal + not equal 0 : get errmsg + 3.other message add when all check success + ''' + status.checkFan(a) + #status.getTemp(a) + #status.getPsu(a) + + nowTime=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + print(nowTime) + print(a) +def run(interval): + while True: + try: + time_remaining = interval - time.time()%interval + time.sleep(time_remaining) + doWork() + except Exception as e: + print(e) + +if __name__ == '__main__': + interval = 1 + run(interval) diff --git a/platform/broadcom/one-image.mk b/platform/broadcom/one-image.mk index d11f82bde341..7f9a46b5c166 100644 --- a/platform/broadcom/one-image.mk +++ b/platform/broadcom/one-image.mk @@ -70,6 +70,7 @@ $(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELL_S6000_PLATFORM_MODULE) \ $(DELTA_AGC032_PLATFORM_MODULE) \ $(RUIJIE_B6510_48VS8CQ_PLATFORM_MODULE) \ $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE) \ + $(RAGILE_RA_B6910_64C_PLATFORM_MODULE) \ $(NOKIA_IXR7250_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-ragile.mk b/platform/broadcom/platform-modules-ragile.mk index 7da8f8ec48d6..d13b57440740 100644 --- a/platform/broadcom/platform-modules-ragile.mk +++ b/platform/broadcom/platform-modules-ragile.mk @@ -8,3 +8,12 @@ $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEA $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE)_PLATFORM = x86_64-ragile_ra-b6510-48v8c-r0 SONIC_DPKG_DEBS += $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE) SONIC_STRETCH_DEBS += $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE) + +## RA-B6910-64C +RAGILE_RA_B6910_64C_PLATFORM_MODULE_VERSION = 1.0 +export RAGILE_RA_B6910_64C_PLATFORM_MODULE_VERSION + +RAGILE_RA_B6910_64C_PLATFORM_MODULE = platform-modules-ragile-ra-b6910-64c_$(RAGILE_RA_B6910_64C_PLATFORM_MODULE_VERSION)_amd64.deb +$(RAGILE_RA_B6910_64C_PLATFORM_MODULE)_PLATFORM = x86_64-ragile_ra-b6910-64c-r0 +$(eval $(call add_extra_package,$(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE),$(RAGILE_RA_B6910_64C_PLATFORM_MODULE))) + diff --git a/platform/broadcom/sonic-platform-modules-ragile/common/script/ragileutil.py b/platform/broadcom/sonic-platform-modules-ragile/common/script/ragileutil.py index b051b5b02554..7ef2d933d26c 100755 --- a/platform/broadcom/sonic-platform-modules-ragile/common/script/ragileutil.py +++ b/platform/broadcom/sonic-platform-modules-ragile/common/script/ragileutil.py @@ -1413,7 +1413,7 @@ def fac_fans_setmac_tlv(ret): print("\n*******************************\n") util_show_fanse2(fans) - if getInputCheck("check input correctly or not(Yes/No):") == True: + if getInputCheck("check input correctly or not(Yes/No):") == True: for fan in fans: log_debug("ouput fan") fac_fan_setmac(fan) diff --git a/platform/broadcom/sonic-platform-modules-ragile/debian/control b/platform/broadcom/sonic-platform-modules-ragile/debian/control index 74012e876528..ceef3336569b 100755 --- a/platform/broadcom/sonic-platform-modules-ragile/debian/control +++ b/platform/broadcom/sonic-platform-modules-ragile/debian/control @@ -7,3 +7,7 @@ Standards-Version: 3.9.3 Package: platform-modules-ragile-ra-b6510-48v8c Architecture: amd64 Description: kernel modules for platform devices such as fan, led, sfp + +Package: platform-modules-ragile-ra-b6910-64c +Architecture: amd64 +Description: kernel modules for platform devices such as fan, led, sfp diff --git a/platform/broadcom/sonic-platform-modules-ragile/debian/rule-ragile.mk b/platform/broadcom/sonic-platform-modules-ragile/debian/rule-ragile.mk index f533814fc4e0..c3294dc9e177 100755 --- a/platform/broadcom/sonic-platform-modules-ragile/debian/rule-ragile.mk +++ b/platform/broadcom/sonic-platform-modules-ragile/debian/rule-ragile.mk @@ -1,5 +1,6 @@ currentdir = $(shell pwd) MODULE_DIRS := ra-b6510-48v8c +MODULE_DIRS += ra-b6910-64c export MODULE_DIRS diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/LICENSE b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/LICENSE new file mode 100755 index 000000000000..d37122689f3e --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/LICENSE @@ -0,0 +1,15 @@ +Copyright (C) 2016 Microsoft, Inc +Copyright (C) 2018 Ragile Network Corporation +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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/MAINTAINERS b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/MAINTAINERS new file mode 100755 index 000000000000..ec8222405085 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/MAINTAINERS @@ -0,0 +1,5 @@ +# See the SONiC project governance document for more information + +Name = "support" +Email = "support@ragile.com" +Mailinglist = sonicproject@googlegroups.com diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/Makefile b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/Makefile new file mode 100755 index 000000000000..9e262d7c095e --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/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_SERVICE_DIR = $(SUB_BUILD_DIR)/lib/systemd/system/ + +KBUILD_EXTRA_SYMBOLS += $(DIR_KERNEL_SRC)/Module.symvers +export KBUILD_EXTRA_SYMBOLS + +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_SERVICE_DIR} ]; then mkdir -p ${INSTALL_SERVICE_DIR} ;fi + cp $(PWD)/systemd/*.service $(INSTALL_SERVICE_DIR) +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-ragile/ra-b6910-64c/README.md b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/README.md new file mode 100755 index 000000000000..787636c4ad20 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/README.md @@ -0,0 +1 @@ +Device drivers for support of ragile platform for the SONiC project diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/config/x86_64_ragile_ra_b6910_64c_r0_config.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/config/x86_64_ragile_ra_b6910_64c_r0_config.py new file mode 100755 index 000000000000..a25852068fe5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/config/x86_64_ragile_ra_b6910_64c_r0_config.py @@ -0,0 +1,420 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- +from ragilecommon import * +PCA9548START = -1 +PCA9548BUSEND = -2 + +RAGILE_CARDID = 0x0000404c +RAGILE_PRODUCTNAME = "RA-B6910-64C" + +fanlevel = { + "tips": ["LOW", "MEDIUM", "HIGH"], + "level": [75, 150, 255], + "low_speed": [750, 4250, 6750], + "high_speed": [4500, 7500, 10000], +} + +# fit with pddf +fanloc = [ + { + "name": "FAN1/FAN2/FAN3/FAN4", + "location": "2-0066/fan1_pwm", + "childfans": [ + {"name": "FAN1", "location": "2-0066/fan1_input"}, + {"name": "FAN2", "location": "2-0066/fan2_input"}, + {"name": "FAN3", "location": "2-0066/fan3_input"}, + {"name": "FAN4", "location": "2-0066/fan4_input"}, + ], + }, +] + +CPLDVERSIONS = [ + {"bus": 2, "devno": 0x33, "name": "MAC BOARD CPLD-A"}, + {"bus": 2, "devno": 0x35, "name": "MAC BOARD CPLD-B"}, + {"bus": 2, "devno": 0x37, "name": "CONNECT BOARD CPLD-A"}, + {"bus": 0, "devno": 0x0d, "name": "CPU BOARD CPLD"}, +] + + +MONITOR_TEMP_MIN = 34 +MONITOR_K = 14 +MONITOR_MAC_IN = 35 +MONITOR_DEFAULT_SPEED = 0x80 +MONITOR_MAX_SPEED = 0xFF +MONITOR_MIN_SPEED = 0x33 +MONITOR_MAC_ERROR_SPEED = 0XBB +MONITOR_FAN_TOTAL_NUM = 3 +MONITOR_MAC_UP_TEMP = 40 +MONITOR_MAC_LOWER_TEMP = -40 +MONITOR_MAC_MAX_TEMP = 100 + +MONITOR_FALL_TEMP = 2 +MONITOR_MAC_WARNING_THRESHOLD = 100 +MONITOR_OUTTEMP_WARNING_THRESHOLD = 85 +MONITOR_BOARDTEMP_WARNING_THRESHOLD = 85 +MONITOR_CPUTEMP_WARNING_THRESHOLD = 85 +MONITOR_INTEMP_WARNING_THRESHOLD = 70 + +MONITOR_MAC_CRITICAL_THRESHOLD = 105 +MONITOR_OUTTEMP_CRITICAL_THRESHOLD = 90 +MONITOR_BOARDTEMP_CRITICAL_THRESHOLD = 90 +MONITOR_CPUTEMP_CRITICAL_THRESHOLD = 100 +MONITOR_INTEMP_CRITICAL_THRESHOLD = 80 +MONITOR_CRITICAL_NUM = 2 +MONITOR_SHAKE_TIME = 10 +MONITOR_INTERVAL = 60 + + +MONITOR_SYS_LED = [{"bus": 2, "devno": 0x35, "addr": 0xb2, "yellow": 0x03, "red": 0x02, "green": 0x01}] + +MONITOR_SYS_FAN_LED =[ + {"bus": 2, "devno": 0x35, "addr": 0xb4, "yellow": 0x06, "red": 0x02, "green": 0x04}, +] + +MONITOR_FANS_LED = [ + {"bus": 2, "devno": 0x32, "addr": 0x23, "green": 0x09, "red": 0x0a}, + {"bus": 2, "devno": 0x32, "addr": 0x24, "green": 0x09, "red": 0x0a}, + {"bus": 2, "devno": 0x32, "addr": 0x25, "green": 0x09, "red": 0x0a} +] + +MONITOR_SYS_PSU_LED = [ + {"bus": 2, "devno": 0x35, "addr": 0xb3, "yellow": 0x06, "red": 0x02, "green": 0x04}, +] + +MONITOR_FAN_STATUS = [ + {'status': 'green' , 'minOkNum': 3, 'maxOkNum': 3}, + {'status': 'yellow', 'minOkNum': 2, 'maxOkNum': 2}, + {'status': 'red' , 'minOkNum': 0, 'maxOkNum': 1}, +] + +MONITOR_PSU_STATUS = [ + {'status': 'green' , 'minOkNum': 2, 'maxOkNum': 2}, + {'status': 'yellow', 'minOkNum': 1, 'maxOkNum': 1}, + {'status': 'red' , 'minOkNum': 0, 'maxOkNum': 0}, +] + +MONITOR_DEV_STATUS = { + "temperature": [ + {"name": "lm75in", "location": "/sys/bus/i2c/devices/2-0048/hwmon/*/temp1_input"}, + {"name": "lm75out", "location": "/sys/bus/i2c/devices/2-0049/hwmon/*/temp1_input"}, + {"name": "lm75hot", "location": "/sys/bus/i2c/devices/2-004a/hwmon/*/temp1_input"}, + {"name": "cpu", "location": "/sys/class/hwmon/hwmon0"}, + ], + "fans": [ + { + "name": "fan1", + "presentstatus": {"bus": 2, "loc": 0x37, "offset": 0x30, 'bit': 0}, + "rollstatus": [ + {"name": "motor1", "bus": 2, "loc": 0x37, "offset": 0x31, 'bit': 0}, + ] + }, + { + "name": "fan2", + "presentstatus": {"bus": 2, "loc": 0x37, "offset": 0x30, 'bit': 1}, + "rollstatus": [ + {"name": "motor1", "bus": 2, "loc": 0x37, "offset": 0x31, 'bit': 1}, + ] + }, + { + "name": "fan3", + "presentstatus": {"bus": 2, "loc": 0x37, "offset": 0x30, 'bit': 2}, + "rollstatus": [ + {"name": "motor1", "bus": 2, "loc": 0x37, "offset": 0x31, 'bit': 2}, + ] + }, + ], + "psus": [ + {"name": "psu1", "bus": 2, "loc": 0x37, "offset": 0x51, "gettype": "i2c", 'presentbit': 0, 'statusbit': 1, 'alertbit': 2}, + {"name": "psu2", "bus": 2, "loc": 0x37, "offset": 0x51, "gettype": "i2c", 'presentbit': 4, 'statusbit': 5, 'alertbit': 6}, + ], +} + +MONITOR_DEV_STATUS_DECODE = { + 'fanpresent': {0: 'PRESENT', 1: 'ABSENT', 'okval': 0}, + 'fanroll' : {0: 'STALL' , 1: 'ROLL', 'okval': 1}, + 'psupresent': {0: 'PRESENT', 1: 'ABSENT', 'okval': 0}, + 'psuoutput' : {0: 'FAULT' , 1: 'NORMAL', 'okval': 1}, + 'psualert' : {0: 'FAULT' , 1: 'NORMAL', 'okval': 1}, +} +################################################################### + + +MAC_AVS_PARAM = { + 0x68: 0x03c0, + 0x69: 0x03bc, + 0x6a: 0x03b6, + 0x6b: 0x03b0, + 0x6c: 0x03aa, + 0x6d: 0x03a3, + 0x6e: 0x039d, + 0x6f: 0x0397, + 0x70: 0x0391, + 0x71: 0x038a, + 0x72: 0x0384, + 0x73: 0x037e, + 0x74: 0x0379, + 0x75: 0x0371, + 0x76: 0x036b, + 0x77: 0x0365, + 0x78: 0x035f, + 0x79: 0x0358, + 0x7a: 0x0352, + 0x7b: 0x034c, + 0x7c: 0x0348 +} + +MAC_DEFAULT_PARAM = { + "type": 1, + "default": 0x74, + "loopaddr": 0x00, + "loop": 0x00, + "open": 0x00, + "close": 0x40, + "bus": 2, + "devno": 0x60, + "addr": 0x21, + "protectaddr": 0x10, + "sdkreg": "DMU_PCU_OTP_CONFIG_8", + "sdkcmd": "scdcmd", + "sdkcmdargs": ["-t", 5], + "sdktype": 1, + "macregloc": 24, + "mask": 0xff +} + + +DEVICE = [] +DRIVERLISTS = [] + +""" +DRIVERLISTS = [ + {"name": "i2c_dev", "delay": 0}, + {"name": "i2c_algo_bit", "delay": 0}, + {"name": "i2c_gpio", "delay": 0}, + {"name": "i2c_mux", "delay": 0}, + {"name": "i2c_mux_pca9641", "delay": 0}, + {"name": "i2c_mux_pca954x force_create_bus=1", "delay": 0}, # force_deselect_on_exit=1 + {"name": "lm75", "delay": 0}, + {"name": "optoe", "delay": 0}, + {"name": "at24", "delay": 0}, + {"name": "rg_sff", "delay": 0}, + {"name": "ragile_b6510_platform", "delay": 0}, + {"name": "ragile_platform", "delay": 0}, + {"name": "rg_avs", "delay": 0}, + {"name": "rg_cpld", "delay": 0}, + {"name": "rg_fan", "delay": 0}, + {"name": "rg_psu", "delay": 0}, + {"name": "pmbus_core", "delay": 0}, + {"name": "csu550", "delay": 0}, + {"name": "rg_gpio_xeon", "delay": 0}, + {"name": "firmware_driver", "delay": 0}, + {"name": "firmware_bin", "delay": 0}, + {"name": "ragile_common dfd_my_type=0x404c", "delay": 0}, + {"name": "lpc_dbg", "delay": 0}, +] + +DEVICE = [ + {"name": "pca9641", "bus": 0, "loc": 0x10}, + {"name": "pca9548", "bus": 2, "loc": 0x70}, + {"name": "lm75", "bus": 2, "loc": 0x48}, + {"name": "lm75", "bus": 2, "loc": 0x49}, + {"name": "lm75", "bus": 2, "loc": 0x4a}, + {"name": "24c02", "bus": 2, "loc": 0x57}, + {"name": "rg_cpld", "bus": 0, "loc": 0x32}, + {"name": "rg_cpld", "bus": 1, "loc": 0x34}, + {"name": "rg_cpld", "bus": 1, "loc": 0x36}, + {"name": "rg_cpld", "bus": 2, "loc": 0x33}, + {"name": "rg_cpld", "bus": 2, "loc": 0x35}, + {"name": "rg_cpld", "bus": 2, "loc": 0x37}, + {"name": "rg_avs", "bus": 2, "loc": 0x60}, + {"name": "pca9548", "bus": 1, "loc": 0x70}, + {"name": "pca9548", "bus": 1, "loc": 0x71}, + {"name": "pca9548", "bus": 1, "loc": 0x72}, + {"name": "pca9548", "bus": 1, "loc": 0x73}, + {"name": "pca9548", "bus": 1, "loc": 0x74}, + {"name": "pca9548", "bus": 1, "loc": 0x75}, + {"name": "pca9548", "bus": 1, "loc": 0x76}, + {"name": "pca9548", "bus": 1, "loc": 0x77}, + {"name": "rg_fan", "bus": 3, "loc": 0x53}, + {"name": "rg_fan", "bus": 4, "loc": 0x53}, + {"name": "rg_fan", "bus": 5, "loc": 0x53}, + + {"name": "rg_psu", "bus": 7, "loc": 0x50}, + {"name": "dps550", "bus": 7, "loc": 0x58}, + {"name": "rg_psu", "bus": 8, "loc": 0x53}, + {"name": "dps550", "bus": 8, "loc": 0x5b}, + + {"name": "optoe1", "bus": 11, "loc": 0x50}, + {"name": "optoe1", "bus": 12, "loc": 0x50}, + {"name": "optoe1", "bus": 13, "loc": 0x50}, + {"name": "optoe1", "bus": 14, "loc": 0x50}, + {"name": "optoe1", "bus": 15, "loc": 0x50}, + {"name": "optoe1", "bus": 16, "loc": 0x50}, + {"name": "optoe1", "bus": 17, "loc": 0x50}, + {"name": "optoe1", "bus": 18, "loc": 0x50}, + {"name": "optoe1", "bus": 19, "loc": 0x50}, + {"name": "optoe1", "bus": 20, "loc": 0x50}, + {"name": "optoe1", "bus": 21, "loc": 0x50}, + {"name": "optoe1", "bus": 22, "loc": 0x50}, + {"name": "optoe1", "bus": 23, "loc": 0x50}, + {"name": "optoe1", "bus": 24, "loc": 0x50}, + {"name": "optoe1", "bus": 25, "loc": 0x50}, + {"name": "optoe1", "bus": 26, "loc": 0x50}, + {"name": "optoe1", "bus": 27, "loc": 0x50}, + {"name": "optoe1", "bus": 28, "loc": 0x50}, + {"name": "optoe1", "bus": 29, "loc": 0x50}, + {"name": "optoe1", "bus": 30, "loc": 0x50}, + {"name": "optoe1", "bus": 31, "loc": 0x50}, + {"name": "optoe1", "bus": 32, "loc": 0x50}, + {"name": "optoe1", "bus": 33, "loc": 0x50}, + {"name": "optoe1", "bus": 34, "loc": 0x50}, + {"name": "optoe1", "bus": 35, "loc": 0x50}, + {"name": "optoe1", "bus": 36, "loc": 0x50}, + {"name": "optoe1", "bus": 37, "loc": 0x50}, + {"name": "optoe1", "bus": 38, "loc": 0x50}, + {"name": "optoe1", "bus": 39, "loc": 0x50}, + {"name": "optoe1", "bus": 40, "loc": 0x50}, + {"name": "optoe1", "bus": 41, "loc": 0x50}, + {"name": "optoe1", "bus": 42, "loc": 0x50}, + {"name": "optoe1", "bus": 43, "loc": 0x50}, + {"name": "optoe1", "bus": 44, "loc": 0x50}, + {"name": "optoe1", "bus": 45, "loc": 0x50}, + {"name": "optoe1", "bus": 46, "loc": 0x50}, + {"name": "optoe1", "bus": 47, "loc": 0x50}, + {"name": "optoe1", "bus": 48, "loc": 0x50}, + {"name": "optoe1", "bus": 49, "loc": 0x50}, + {"name": "optoe1", "bus": 50, "loc": 0x50}, + {"name": "optoe1", "bus": 51, "loc": 0x50}, + {"name": "optoe1", "bus": 52, "loc": 0x50}, + {"name": "optoe1", "bus": 53, "loc": 0x50}, + {"name": "optoe1", "bus": 54, "loc": 0x50}, + {"name": "optoe1", "bus": 55, "loc": 0x50}, + {"name": "optoe1", "bus": 56, "loc": 0x50}, + {"name": "optoe1", "bus": 57, "loc": 0x50}, + {"name": "optoe1", "bus": 58, "loc": 0x50}, + {"name": "optoe1", "bus": 59, "loc": 0x50}, + {"name": "optoe1", "bus": 60, "loc": 0x50}, + {"name": "optoe1", "bus": 61, "loc": 0x50}, + {"name": "optoe1", "bus": 62, "loc": 0x50}, + {"name": "optoe1", "bus": 63, "loc": 0x50}, + {"name": "optoe1", "bus": 64, "loc": 0x50}, + {"name": "optoe1", "bus": 65, "loc": 0x50}, + {"name": "optoe1", "bus": 66, "loc": 0x50}, + {"name": "optoe1", "bus": 67, "loc": 0x50}, + {"name": "optoe1", "bus": 68, "loc": 0x50}, + {"name": "optoe1", "bus": 69, "loc": 0x50}, + {"name": "optoe1", "bus": 70, "loc": 0x50}, + {"name": "optoe1", "bus": 71, "loc": 0x50}, + {"name": "optoe1", "bus": 72, "loc": 0x50}, + {"name": "optoe1", "bus": 73, "loc": 0x50}, + {"name": "optoe1", "bus": 74, "loc": 0x50}, +] + +INIT_PARAM = [ + {"loc": "1-0034/sfp_enable", "value": "01"}, + {"loc": "2-0035/sfp_enable2", "value": "ff"}, + {"loc": "2-0033/mac_led", "value": "ff"}, + {"loc": "1-0034/sfp_txdis1", "value": "00"}, + {"loc": "1-0034/sfp_txdis2", "value": "00"}, + {"loc": "1-0034/sfp_txdis3", "value": "00"}, + {"loc": "1-0036/sfp_txdis4", "value": "00"}, + {"loc": "1-0036/sfp_txdis5", "value": "00"}, + {"loc": "1-0036/sfp_txdis6", "value": "00"}, + + {"loc": "1-0034/sfp_led1_yellow", "value": "00"}, + {"loc": "1-0034/sfp_led3_yellow", "value": "00"}, + {"loc": "1-0036/sfp_led4_yellow", "value": "00"}, + {"loc": "1-0036/sfp_led6_yellow", "value": "00"}, + {"loc": "1-0034/sfp_led2_yellow", "value": "00"}, + {"loc": "1-0034/sfp_led8_yellow", "value": "00"}, + {"loc": "1-0036/sfp_led5_yellow", "value": "00"}, + {"loc": "1-0036/sfp_led7_yellow", "value": "00"}, +] +""" + +INIT_PARAM = [ + { + "name": "sfp_enable", + "bus": 1, + "devaddr": 0x34, + "offset": 0xa1, + "val": 0x01, + }, + { + "name": "sfp_eanble2", + "bus": 2, + "devaddr": 0x35, + "offset": 0xa0, + "val": 0xff, + }, + { + "name": "mac_led", + "bus": 2, + "devaddr": 0x33, + "offset": 0xa0, + "val": 0xff, + }, + { + "name": "sfp_led1_yellow", + "bus": 1, + "devaddr": 0x34, + "offset": 0xa6, + "val": 0x00, + }, + { + "name": "sfp_led2_yellow", + "bus": 1, + "devaddr": 0x34, + "offset": 0xa7, + "val": 0x00, + }, + { + "name": "sfp_led3_yellow", + "bus": 1, + "devaddr": 0x34, + "offset": 0xa8, + "val": 0x00, + }, + { + "name": "sfp_led4_yellow", + "bus": 1, + "devaddr": 0x36, + "offset": 0xa6, + "val": 0x00, + }, + { + "name": "sfp_led5_yellow", + "bus": 1, + "devaddr": 0x36, + "offset": 0xa7, + "val": 0x00, + }, + { + "name": "sfp_led6_yellow", + "bus": 1, + "devaddr": 0x36, + "offset": 0xa8, + "val": 0x00, + }, + { + "name": "sfp_led7_yellow", + "bus": 1, + "devaddr": 0x36, + "offset": 0xa9, + "val": 0x00, + }, + { + "name": "sfp_led8_yellow", + "bus": 1, + "devaddr": 0x34, + "offset": 0xa8, + "val": 0x00, + }, + { + "name": "fan_speed_set", + "bus": 0, + "devaddr": 0x32, + "offset": 0x15, + "val": 0x80, + }, +] diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/Makefile b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/Makefile new file mode 100755 index 000000000000..f10216ec4d5a --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/Makefile @@ -0,0 +1 @@ +obj-m := rg_cpld.o diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/rg_cpld.c b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/rg_cpld.c new file mode 100755 index 000000000000..35fa2faf7d1f --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/rg_cpld.c @@ -0,0 +1,509 @@ +/* + * rg_cpld.c - A driver for control rg_cpld base on rg_cpld.c + * + * Copyright (c) 1998, 1999 Frodo Looijaard + * Copyright (c) 2018 support + * + * 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 +#include +#include +#include + +typedef enum { + DBG_START, + DBG_VERBOSE, + DBG_KEY, + DBG_WARN, + DBG_ERROR, + DBG_END, +} dbg_level_t; + +static int debuglevel=0; +module_param(debuglevel, int, S_IRUGO); + +#define DBG_DEBUG(fmt, arg...) do { \ + if ( debuglevel > DBG_START && debuglevel < DBG_ERROR) { \ + printk(KERN_INFO "[DEBUG]:<%s, %d>:"fmt, __FUNCTION__, __LINE__, ##arg); \ + } else if ( debuglevel >= DBG_ERROR ) { \ + printk(KERN_ERR "[DEBUG]:<%s, %d>:"fmt, __FUNCTION__, __LINE__, ##arg); \ + } else { } \ +} while (0) + +#define DBG_ERROR(fmt, arg...) do { \ + if ( debuglevel > DBG_START) { \ + printk(KERN_ERR "[ERROR]:<%s, %d>:"fmt, __FUNCTION__, __LINE__, ##arg); \ + } \ + } while (0) + +/* static const unsigned short rg_i2c_cpld[] = { 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, I2C_CLIENT_END }; */ + +#define CPLD_SIZE 256 +#define CPLD_I2C_RETRY_TIMES 3 +#define COMMON_STR_LEN (256) + +struct cpld_data { + struct i2c_client *client; + struct device *hwmon_dev; + struct mutex update_lock; + char valid; /* !=0 if registers are valid */ + unsigned long last_updated; /* In jiffies */ + u8 data[CPLD_SIZE]; /* Register value */ +}; + +static s32 cpld_i2c_smbus_read_byte_data(const struct i2c_client *client, u8 command) +{ + int try; + s32 ret; + + ret = -1; + for (try = 0; try < CPLD_I2C_RETRY_TIMES; try++) { + if ((ret = i2c_smbus_read_byte_data(client, command) ) >= 0 ) + break; + } + return ret; +} + +static s32 cpld_i2c_smbus_read_i2c_block_data(const struct i2c_client *client, + u8 command, u8 length, u8 *values) +{ + int try; + s32 ret; + + ret = -1; + for (try = 0; try < CPLD_I2C_RETRY_TIMES; try++) { + if ((ret = i2c_smbus_read_i2c_block_data(client, command, length, values) ) >= 0 ) + break; + } + return ret; +} + +static ssize_t show_fan_rpm_value(struct device *dev, struct device_attribute *da, char *buf) +{ + struct cpld_data *data = dev_get_drvdata(dev); + struct i2c_client *client = data->client; + int index = to_sensor_dev_attr_2(da)->index; + uint8_t size; + s32 status; + s32 ret_t; + + ret_t = 0; + status = -1; + size = 0; + mutex_lock(&data->update_lock); + status = cpld_i2c_smbus_read_byte_data(client, index); + if (status < 0) { + mutex_unlock(&data->update_lock); + return 0; + } + data->data[0] = status; + status = cpld_i2c_smbus_read_byte_data(client, index + 1); + if (status < 0) { + mutex_unlock(&data->update_lock); + return 0; + } + data->data[1] = status; + DBG_DEBUG("cpld reg pos:0x%x value:0x%x\n", index, data->data[0]); + DBG_DEBUG("cpld reg pos:0x%x value:0x%x\n", index + 1, data->data[1]); + ret_t = (data->data[1] << 8) + data->data[0] ; + if (ret_t == 0 ) { + size = snprintf(buf, CPLD_SIZE, "%d\n", ret_t); + } else if (ret_t == 0xffff) { + size = snprintf(buf, CPLD_SIZE, "%d\n", 0); + } else { + size = snprintf(buf, CPLD_SIZE, "%d\n", 15000000 / ret_t); + } + mutex_unlock(&data->update_lock); + return size; +} + +static ssize_t set_cpld_sysfs_value(struct device *dev, struct device_attribute *da, const char *buf, size_t +count) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct cpld_data *data = i2c_get_clientdata(client); + unsigned long val; + int err; + + err = kstrtoul(buf, 16, &val); + if (err) + return err; + if ((val < 0) || (val > 0xff)) { + DBG_ERROR("please enter 0x00 ~ 0xff\n"); + return -1; + } + mutex_lock(&data->update_lock); + data->data[0] = (u8)val; + DBG_DEBUG("pos: 0x%02x count = %ld, data = 0x%02x\n", attr->index, count, data->data[0]); + i2c_smbus_write_byte_data(client, attr->index, data->data[0]); + mutex_unlock(&data->update_lock); + + return count; +} + +static ssize_t show_cpld_version(struct device *dev, struct device_attribute *da, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct cpld_data *data = i2c_get_clientdata(client); + s32 status; + + status = -1; + mutex_lock(&data->update_lock); + status = cpld_i2c_smbus_read_i2c_block_data(client, 0, 4, data->data); + if (status < 0) { + mutex_unlock(&data->update_lock); + return 0; + } + mutex_unlock(&data->update_lock); + return snprintf(buf, COMMON_STR_LEN, "%02x %02x %02x %02x \n", + data->data[0], data->data[1], data->data[2], data->data[3]); +} + +static ssize_t show_cpld_sysfs_value(struct device *dev, struct device_attribute *da, char *buf) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct cpld_data *data = i2c_get_clientdata(client); + s32 status; + + status = -1; + mutex_lock(&data->update_lock); + status = cpld_i2c_smbus_read_byte_data(client, attr->index); + if (status < 0) { + mutex_unlock(&data->update_lock); + return 0; + } + data->data[0] = status; + DBG_DEBUG("cpld reg pos:0x%x value:0x%02x\n", attr->index, data->data[0]); + mutex_unlock(&data->update_lock); + return snprintf(buf, COMMON_STR_LEN, "%02x\n", data->data[0]); +} + +/* common */ +static SENSOR_DEVICE_ATTR(cpld_version, S_IRUGO | S_IWUSR, show_cpld_version, NULL, 0); +/*0x37 hwmon*/ +static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO | S_IWUSR ,show_fan_rpm_value, NULL, 0x1B); +static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO | S_IWUSR ,show_fan_rpm_value, NULL, 0x1D); +static SENSOR_DEVICE_ATTR(fan3_input, S_IRUGO | S_IWUSR ,show_fan_rpm_value, NULL, 0x1F); +//static SENSOR_DEVICE_ATTR(fan4_input, S_IRUGO | S_IWUSR ,show_fan_rpm_value, NULL, 0x21); +/* 0x32 */ +static SENSOR_DEVICE_ATTR(fan_speed_set, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x15); +static SENSOR_DEVICE_ATTR(fan0_led, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x23); +static SENSOR_DEVICE_ATTR(fan1_led, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x24); +static SENSOR_DEVICE_ATTR(fan2_led, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x25); +static SENSOR_DEVICE_ATTR(fan3_led, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x26); +static SENSOR_DEVICE_ATTR(broad_back_lct, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x68); +static SENSOR_DEVICE_ATTR(broad_back_sys, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x72); +/* 0x37 */ +static SENSOR_DEVICE_ATTR(fan_present, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, NULL, 0x30); +static SENSOR_DEVICE_ATTR(fan_status, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, NULL, 0x31); +static SENSOR_DEVICE_ATTR(psu_status, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, NULL, 0x51); +/* 0x33 */ +static SENSOR_DEVICE_ATTR(mac_led, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa0); +static SENSOR_DEVICE_ATTR(broad_front_lct, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x2a); +static SENSOR_DEVICE_ATTR(broad_front_bmc, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xb1); +static SENSOR_DEVICE_ATTR(broad_front_cpu, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xb2); +static SENSOR_DEVICE_ATTR(broad_front_pwr, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xb3); +static SENSOR_DEVICE_ATTR(broad_front_fan, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xb4); +/* 0x34 */ +static SENSOR_DEVICE_ATTR(sfp_presence1, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, NULL, 0x30); +static SENSOR_DEVICE_ATTR(sfp_presence2, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, NULL, 0x31); +static SENSOR_DEVICE_ATTR(sfp_presence3, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, NULL, 0x32); +static SENSOR_DEVICE_ATTR(sfp_presence8, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, NULL, 0x33); +static SENSOR_DEVICE_ATTR(sfp_enable, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa1); +static SENSOR_DEVICE_ATTR(sfp_led1_red, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa2); +static SENSOR_DEVICE_ATTR(sfp_led2_red, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa3); +static SENSOR_DEVICE_ATTR(sfp_led3_red, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa4); +static SENSOR_DEVICE_ATTR(sfp_led8_red, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa5); +static SENSOR_DEVICE_ATTR(sfp_led1_yellow, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa6); +static SENSOR_DEVICE_ATTR(sfp_led2_yellow, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa7); +static SENSOR_DEVICE_ATTR(sfp_led3_yellow, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa8); +static SENSOR_DEVICE_ATTR(sfp_led8_yellow, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa9); +static SENSOR_DEVICE_ATTR(sfp_txdis1, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x60); +static SENSOR_DEVICE_ATTR(sfp_txdis2, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x61); +static SENSOR_DEVICE_ATTR(sfp_txdis3, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x62); +/* 0x35 */ +static SENSOR_DEVICE_ATTR(sfp_enable2, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa0); +/* 0x36 */ +static SENSOR_DEVICE_ATTR(sfp_presence4, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, NULL, 0x30); +static SENSOR_DEVICE_ATTR(sfp_presence5, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, NULL, 0x31); +static SENSOR_DEVICE_ATTR(sfp_presence6, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, NULL, 0x32); +static SENSOR_DEVICE_ATTR(sfp_presence7, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, NULL, 0x33); +static SENSOR_DEVICE_ATTR(sfp_led4_red, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa2); +static SENSOR_DEVICE_ATTR(sfp_led5_red, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa3); +static SENSOR_DEVICE_ATTR(sfp_led6_red, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa4); +static SENSOR_DEVICE_ATTR(sfp_led7_red, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa5); +static SENSOR_DEVICE_ATTR(sfp_led4_yellow, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa6); +static SENSOR_DEVICE_ATTR(sfp_led5_yellow, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa7); +static SENSOR_DEVICE_ATTR(sfp_led6_yellow, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa8); +static SENSOR_DEVICE_ATTR(sfp_led7_yellow, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa9); +static SENSOR_DEVICE_ATTR(sfp_txdis4, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0x60); +static SENSOR_DEVICE_ATTR(sfp_txdis5, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0x61); +static SENSOR_DEVICE_ATTR(sfp_txdis6, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0x62); + +static SENSOR_DEVICE_ATTR(sfp_reset1, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xb9); +static SENSOR_DEVICE_ATTR(sfp_reset2, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xba); +static SENSOR_DEVICE_ATTR(sfp_reset3, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xbb); +static SENSOR_DEVICE_ATTR(sfp_reset4, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xbc); + +static struct attribute *cpld32_sysfs_attrs[] = { + &sensor_dev_attr_fan_speed_set.dev_attr.attr, + &sensor_dev_attr_fan0_led.dev_attr.attr, + &sensor_dev_attr_fan1_led.dev_attr.attr, + &sensor_dev_attr_fan2_led.dev_attr.attr, + &sensor_dev_attr_fan3_led.dev_attr.attr, + &sensor_dev_attr_broad_back_lct.dev_attr.attr, + &sensor_dev_attr_broad_back_sys.dev_attr.attr, + NULL +}; + +static struct attribute *cpld37_sysfs_attrs[] = { + &sensor_dev_attr_fan_present.dev_attr.attr, + &sensor_dev_attr_fan_status.dev_attr.attr, + &sensor_dev_attr_psu_status.dev_attr.attr, + &sensor_dev_attr_cpld_version.dev_attr.attr, + NULL +}; + +static struct attribute *cpld33_sysfs_attrs[] = { + &sensor_dev_attr_mac_led.dev_attr.attr, + &sensor_dev_attr_broad_front_lct.dev_attr.attr, + &sensor_dev_attr_broad_front_bmc.dev_attr.attr, + &sensor_dev_attr_broad_front_cpu.dev_attr.attr, + &sensor_dev_attr_broad_front_pwr.dev_attr.attr, + &sensor_dev_attr_broad_front_fan.dev_attr.attr, + &sensor_dev_attr_cpld_version.dev_attr.attr, + NULL +}; + +static struct attribute *cpld34_sysfs_attrs[] = { + &sensor_dev_attr_sfp_presence1.dev_attr.attr, + &sensor_dev_attr_sfp_presence2.dev_attr.attr, + &sensor_dev_attr_sfp_presence3.dev_attr.attr, + &sensor_dev_attr_sfp_presence8.dev_attr.attr, + &sensor_dev_attr_sfp_enable.dev_attr.attr, + &sensor_dev_attr_sfp_led1_red.dev_attr.attr, + &sensor_dev_attr_sfp_led2_red.dev_attr.attr, + &sensor_dev_attr_sfp_led3_red.dev_attr.attr, + &sensor_dev_attr_sfp_led8_red.dev_attr.attr, + &sensor_dev_attr_sfp_led1_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led2_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led3_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led8_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_txdis1.dev_attr.attr, + &sensor_dev_attr_sfp_txdis2.dev_attr.attr, + &sensor_dev_attr_sfp_txdis3.dev_attr.attr, + NULL +}; + +static struct attribute *cpld36_sysfs_attrs[] = { + &sensor_dev_attr_sfp_presence4.dev_attr.attr, + &sensor_dev_attr_sfp_presence5.dev_attr.attr, + &sensor_dev_attr_sfp_presence6.dev_attr.attr, + &sensor_dev_attr_sfp_presence7.dev_attr.attr, + &sensor_dev_attr_sfp_led4_red.dev_attr.attr, + &sensor_dev_attr_sfp_led5_red.dev_attr.attr, + &sensor_dev_attr_sfp_led6_red.dev_attr.attr, + &sensor_dev_attr_sfp_led7_red.dev_attr.attr, + &sensor_dev_attr_sfp_led4_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led5_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led6_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led7_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_txdis4.dev_attr.attr, + &sensor_dev_attr_sfp_txdis5.dev_attr.attr, + &sensor_dev_attr_sfp_txdis6.dev_attr.attr, + &sensor_dev_attr_sfp_reset1.dev_attr.attr, + &sensor_dev_attr_sfp_reset2.dev_attr.attr, + &sensor_dev_attr_sfp_reset3.dev_attr.attr, + &sensor_dev_attr_sfp_reset4.dev_attr.attr, + NULL +}; + +static struct attribute *cpld35_sysfs_attrs[] = { + &sensor_dev_attr_sfp_enable2.dev_attr.attr, + &sensor_dev_attr_broad_front_lct.dev_attr.attr, + &sensor_dev_attr_broad_front_bmc.dev_attr.attr, + &sensor_dev_attr_broad_front_cpu.dev_attr.attr, + &sensor_dev_attr_broad_front_pwr.dev_attr.attr, + &sensor_dev_attr_broad_front_fan.dev_attr.attr, + &sensor_dev_attr_cpld_version.dev_attr.attr, + NULL +}; + +static const struct attribute_group cpld32_sysfs_group = { + .attrs = cpld32_sysfs_attrs, +}; + +static const struct attribute_group cpld37_sysfs_group = { + .attrs = cpld37_sysfs_attrs, +}; + +static const struct attribute_group cpld33_sysfs_group = { + .attrs = cpld33_sysfs_attrs, +}; + +static const struct attribute_group cpld34_sysfs_group = { + .attrs = cpld34_sysfs_attrs, +}; + +static const struct attribute_group cpld36_sysfs_group = { + .attrs = cpld36_sysfs_attrs, +}; + +static const struct attribute_group cpld35_sysfs_group = { + .attrs = cpld35_sysfs_attrs, +}; + +static struct attribute *cpld_hwmon_attrs[] = { + &sensor_dev_attr_fan1_input.dev_attr.attr, + &sensor_dev_attr_fan2_input.dev_attr.attr, + &sensor_dev_attr_fan3_input.dev_attr.attr, + NULL +}; +ATTRIBUTE_GROUPS(cpld_hwmon); + +#if 0 +static int cpld_detect(struct i2c_client *new_client, struct i2c_board_info *info) +{ + struct i2c_adapter *adapter = new_client->adapter; + int conf; + DBG_DEBUG("=========cpld_detect(0x%x)===========\n", new_client->addr); + if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA | + I2C_FUNC_SMBUS_WORD_DATA)) + return -ENODEV; + conf = i2c_smbus_read_byte_data(new_client, 0); + if (!conf) { + return -ENODEV; + } + strlcpy(info->type, "rg_cpld", I2C_NAME_SIZE); + return 0; +} +#endif +static int cpld_probe(struct i2c_client *client, const struct i2c_device_id *id) +{ + struct cpld_data *data; + int status; + + status = -1; + DBG_DEBUG("=========cpld_probe(0x%x)===========\n", client->addr); + data = devm_kzalloc(&client->dev, sizeof(struct cpld_data), GFP_KERNEL); + if (!data) { + return -ENOMEM; + } + + data->client = client; + i2c_set_clientdata(client, data); + mutex_init(&data->update_lock); + + switch (client->addr) { + case 0x32: + status = sysfs_create_group(&client->dev.kobj, &cpld32_sysfs_group); + break; + case 0x37: + status = sysfs_create_group(&client->dev.kobj, &cpld37_sysfs_group); + if (status != 0) { + break; + } + data->hwmon_dev = hwmon_device_register_with_groups(&client->dev, client->name, data, cpld_hwmon_groups); + if (IS_ERR(data->hwmon_dev)) { + sysfs_remove_group(&client->dev.kobj, &cpld37_sysfs_group); + return PTR_ERR(data->hwmon_dev); + } + break; + case 0x33: + status = sysfs_create_group(&client->dev.kobj, &cpld33_sysfs_group); + break; + case 0x34: + status = sysfs_create_group(&client->dev.kobj, &cpld34_sysfs_group); + break; + case 0x35: + status = sysfs_create_group(&client->dev.kobj, &cpld35_sysfs_group); + break; + case 0x36: + status = sysfs_create_group(&client->dev.kobj, &cpld36_sysfs_group); + break; + default: + break; + } + + if (status !=0) { + DBG_ERROR("%s %d sysfs_create_group err\n", __func__, __LINE__); + } + return status; +} + +static int cpld_remove(struct i2c_client *client) +{ + struct cpld_data *data = i2c_get_clientdata(client); + DBG_DEBUG("=========cpld_probe(0x%x)===========\n", client->addr); + switch (client->addr) { + case 0x32: + sysfs_remove_group(&client->dev.kobj, &cpld32_sysfs_group); + break; + case 0x37: + hwmon_device_unregister(data->hwmon_dev); + sysfs_remove_group(&client->dev.kobj, &cpld37_sysfs_group); + break; + case 0x33: + sysfs_remove_group(&client->dev.kobj, &cpld33_sysfs_group); + break; + case 0x34: + sysfs_remove_group(&client->dev.kobj, &cpld34_sysfs_group); + break; + case 0x35: + sysfs_remove_group(&client->dev.kobj, &cpld35_sysfs_group); + break; + case 0x36: + sysfs_remove_group(&client->dev.kobj, &cpld36_sysfs_group); + break; + default: + break; + } + + return 0; +} + +static const struct i2c_device_id cpld_id[] = { + { "rg_cpld", 0 }, + {} +}; +MODULE_DEVICE_TABLE(i2c, cpld_id); + +static struct i2c_driver rg_cpld_driver = { + .class = I2C_CLASS_HWMON, + .driver = { + .name = "rg_cpld", + }, + .probe = cpld_probe, + .remove = cpld_remove, + .id_table = cpld_id, + /* .detect = cpld_detect, */ + /* .address_list = rg_i2c_cpld, */ +}; + +module_i2c_driver(rg_cpld_driver); +MODULE_AUTHOR("support "); +MODULE_DESCRIPTION("ragile CPLD driver"); +MODULE_LICENSE("GPL"); diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/scripts/pddf_post_driver_install.sh b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/scripts/pddf_post_driver_install.sh new file mode 100755 index 000000000000..badbce25589d --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/scripts/pddf_post_driver_install.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +count=10 +while [ $count -gt 0 ] +do + lsmod | grep 9641 >/dev/null 2>&1 + if [ $? -eq 0 ] + then + break + fi + count=$(( count - 1 )) + sleep 1 +done + +if [ $count -eq 0 ] +then + # mod not loaded + exit 1 +fi + +if [ ! -d "/sys/bus/i2c/devices/i2c-2" ] +then + echo pca9541 0x10 > /sys/bus/i2c/devices/i2c-0/new_device + if [ $? -ne 0 ] + then + exit $? + fi +fi + +exit 0 + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/setup.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/setup.py new file mode 100644 index 000000000000..0ed22d770626 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/setup.py @@ -0,0 +1,32 @@ +from setuptools import setup + +setup( + name='sonic-platform', + version='1.0', + description='SONiC platform API implementation on RAGILE Platforms', + license='Apache 2.0', + author='SONiC Team', + author_email='support@ragile.com', + url='', + maintainer='RAGILE SUPPORT TEAM', + maintainer_email='', + packages=[ + 'sonic_platform', + 'rgutil', + 'eepromutil' + ], + 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/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/__init__.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/__init__.py new file mode 100644 index 000000000000..593867d31c9d --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/__init__.py @@ -0,0 +1,4 @@ +# All the derived classes for PDDF +__all__ = ["platform", "chassis", "sfp", "psu", "thermal", "fan"] +from . import platform + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/chassis.py new file mode 100644 index 000000000000..f4750f4abd5f --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/chassis.py @@ -0,0 +1,137 @@ +#!/usr/bin/env python + +############################################################################# +# PDDF +# Module contains an implementation of SONiC Chassis API +# +############################################################################# + +try: + import time + import subprocess + from sonic_platform_pddf_base.pddf_chassis import PddfChassis + from rgutil.logutil import Logger +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +PORT_START = 0 +PORT_END = 55 +PORTS_IN_BLOCK = 56 + +logger = Logger("CHASSIS", syslog=True) + +class Chassis(PddfChassis): + """ + PDDF Platform-specific Chassis class + """ + + SFP_STATUS_INSERTED = "1" + SFP_STATUS_REMOVED = "0" + port_dict = {} + + def __init__(self, pddf_data=None, pddf_plugin_data=None): + PddfChassis.__init__(self, pddf_data, pddf_plugin_data) + + self.enable_read = "i2cset -f -y 2 0x35 0x2a 0x01" + self.disable_read = "i2cset -f -y 2 0x35 0x2a 0x00" + self.enable_write = "i2cset -f -y 2 0x35 0x2b 0x00" + self.disable_write = "i2cset -f -y 2 0x35 0x2b 0x01" + self.enable_erase = "i2cset -f -y 2 0x35 0x2c 0x01" + self.disable_erase = "i2cset -f -y 2 0x35 0x2c 0x00" + self.read_value = "i2cget -f -y 2 0x35 0x25" + self.write_value = "i2cset -f -y 2 0x35 0x21 0x0a" + + 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. + """ + try: + is_power_loss = False + # enable read + subprocess.getstatusoutput(self.disable_write) + subprocess.getstatusoutput(self.enable_read) + ret, log = subprocess.getstatusoutput(self.read_value) + if ret == 0 and "0x0a" in log: + is_power_loss = True + + # erase i2c and e2 + subprocess.getstatusoutput(self.enable_erase) + time.sleep(1) + subprocess.getstatusoutput(self.disable_erase) + # clear data + subprocess.getstatusoutput(self.enable_write) + subprocess.getstatusoutput(self.disable_read) + subprocess.getstatusoutput(self.disable_write) + subprocess.getstatusoutput(self.enable_read) + # enable write and set data + subprocess.getstatusoutput(self.enable_write) + subprocess.getstatusoutput(self.disable_read) + subprocess.getstatusoutput(self.write_value) + if is_power_loss: + return(self.REBOOT_CAUSE_POWER_LOSS, None) + except Exception as e: + logger.error(str(e)) + + return (self.REBOOT_CAUSE_NON_HARDWARE, None) + + def get_change_event(self, timeout=0): + change_event_dict = {"fan": {}, "sfp": {}} + sfp_status, sfp_change_dict = self.get_transceiver_change_event(timeout) + change_event_dict["sfp"] = sfp_change_dict + if sfp_status is True: + return True, change_event_dict + + return False, {} + + def get_transceiver_change_event(self, timeout=0): + start_time = time.time() + currernt_port_dict = {} + forever = False + + if timeout == 0: + forever = True + elif timeout > 0: + timeout = timeout / float(1000) # Convert to secs + else: + print("get_transceiver_change_event:Invalid timeout value", timeout) + return False, {} + + end_time = start_time + timeout + if start_time > end_time: + print( + "get_transceiver_change_event:" "time wrap / invalid timeout value", + timeout, + ) + return False, {} # Time wrap or possibly incorrect timeout + + while timeout >= 0: + # Check for OIR events and return updated port_dict + for index in range(PORT_START, PORTS_IN_BLOCK): + if self._sfp_list[index].get_presence(): + currernt_port_dict[index] = self.SFP_STATUS_INSERTED + else: + currernt_port_dict[index] = self.SFP_STATUS_REMOVED + if currernt_port_dict == self.port_dict: + if forever: + time.sleep(1) + else: + timeout = end_time - time.time() + if timeout >= 1: + time.sleep(1) # We poll at 1 second granularity + else: + if timeout > 0: + time.sleep(timeout) + return True, {} + else: + # Update reg value + self.port_dict = currernt_port_dict + print(self.port_dict) + return True, self.port_dict + print("get_transceiver_change_event: Should not reach here.") + return False, {} diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/common.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/common.py new file mode 100644 index 000000000000..c1a85f618609 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/common.py @@ -0,0 +1,44 @@ +import os +import yaml + +from sonic_py_common import device_info + + +class Common: + + DEVICE_PATH = '/usr/share/sonic/device/' + PMON_PLATFORM_PATH = '/usr/share/sonic/platform/' + CONFIG_DIR = 'sonic_platform_config' + + HOST_CHK_CMD = "docker > /dev/null 2>&1" + + def __init__(self): + (self.platform, self.hwsku) = device_info.get_platform_and_hwsku() + + def is_host(self): + return os.system(self.HOST_CHK_CMD) == 0 + + def load_json_file(self, path): + """ + Retrieves the json object from json file path + + Returns: + A json object + """ + with open(path, 'r') as f: + json_data = yaml.safe_load(f) + + return json_data + + def get_config_path(self, config_name): + """ + Retrieves the path to platform api config directory + + Args: + config_name: A string containing the name of config file. + + Returns: + A string containing the path to json file + """ + return os.path.join(self.DEVICE_PATH, self.platform, self.CONFIG_DIR, config_name) if self.is_host() else os.path.join(self.PMON_PLATFORM_PATH, self.CONFIG_DIR, config_name) + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/eeprom.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/eeprom.py new file mode 100644 index 000000000000..a87ecc9f6feb --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/eeprom.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python + +try: + from sonic_platform_pddf_base.pddf_eeprom import PddfEeprom +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class Eeprom(PddfEeprom): + + def __init__(self, pddf_data=None, pddf_plugin_data=None): + PddfEeprom.__init__(self, pddf_data, pddf_plugin_data) + + # Provide the functions/variables below for which implementation is to be overwritten diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan.py new file mode 100644 index 000000000000..205676b15410 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python + + +try: + from sonic_platform_pddf_base.pddf_fan import PddfFan +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class Fan(PddfFan): + """PDDF Platform-Specific Fan class""" + + def __init__(self, tray_idx, fan_idx=0, pddf_data=None, pddf_plugin_data=None, is_psu_fan=False, psu_index=0): + # idx is 0-based + PddfFan.__init__(self, tray_idx, fan_idx, pddf_data, pddf_plugin_data, is_psu_fan, psu_index) + + # Provide the functions/variables below for which implementation is to be overwritten + # Since psu_fan airflow direction cant be read from sysfs, it is fixed as 'F2B' or 'intake' + def get_direction(self): + """ + Retrieves the direction of fan + + Returns: + A string, either FAN_DIRECTION_INTAKE or FAN_DIRECTION_EXHAUST + depending on fan direction + """ + return self.FAN_DIRECTION_EXHAUST + + def get_speed_rpm(self): + if self.is_psu_fan: + return super().get_speed_rpm() + else: + divisor = 15000000 + mask_low = 0xff + ret = super().get_speed_rpm() + # revert ret + ret = (ret >> 8) + ((ret & mask_low) << 8) + return int(divisor/ret) + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan_drawer.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan_drawer.py new file mode 100644 index 000000000000..4ff45cb81297 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan_drawer.py @@ -0,0 +1,71 @@ +# +# fan_drawer_base.py +# +# Abstract base class for implementing a platform-specific class with which +# to interact with a fan drawer module in SONiC +# + +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): + """ + Abstract base class for interfacing with a fan drawer + """ + # Device type definition. Note, this is a constant. + DEVICE_TYPE = "fan_drawer" + + def __init__(self, index, fan_list): + FanDrawerBase.__init__(self) + + self._fan_list = fan_list + self._index = index + + def get_name(self): + """ + Retrieves the name of the device + Returns: + string: The name of the device + """ + + return "fan {}".format(self._index) + + def get_num_fans(self): + """ + Retrieves the number of fans available on this fan drawer + Returns: + An integer, the number of fan modules available on this fan drawer + """ + return len(self._fan_list) + + def get_all_fans(self): + """ + Retrieves all fan modules available on this fan drawer + Returns: + A list of objects derived from FanBase representing all fan + modules available on this fan drawer + """ + return self._fan_list + + def set_status_led(self, color): + """ + Sets the state of the fan drawer status LED + Args: + color: A string representing the color with which to set the + fan drawer status LED + Returns: + bool: True if status LED state is set successfully, False if not + """ + return self._fan_list[self._index].set_status_led(color) + + def get_status_led(self, color): + """ + Gets the state of the fan drawer LED + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + return self._fan_list[self._index].get_status_led(color) + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/platform.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/platform.py new file mode 100644 index 000000000000..406b1179ae1b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/platform.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +############################################################################# +# PDDF +# Module contains an implementation of SONiC Platform Base API and +# provides the platform information +# +############################################################################# + + +try: + from sonic_platform_pddf_base.pddf_platform import PddfPlatform +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class Platform(PddfPlatform): + """ + PDDF Platform-Specific Platform Class + """ + + def __init__(self): + PddfPlatform.__init__(self) + + # Provide the functions/variables below for which implementation is to be overwritten diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/psu.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/psu.py new file mode 100644 index 000000000000..72a6d8f0825b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/psu.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# + + +try: + from sonic_platform_pddf_base.pddf_psu import PddfPsu +except ImportError as e: + raise ImportError (str(e) + "- required module not found") + + +class Psu(PddfPsu): + """PDDF Platform-Specific PSU class""" + + PLATFORM_PSU_CAPACITY = 1200 + + def __init__(self, index, pddf_data=None, pddf_plugin_data=None): + PddfPsu.__init__(self, index, pddf_data, pddf_plugin_data) + + # Provide the functions/variables below for which implementation is to be overwritten + def get_maximum_supplied_power(self): + """ + Retrieves the maximum supplied power by PSU (or PSU capacity) + Returns: + A float number, the maximum power output in Watts. + e.g. 1200.1 + """ + return float(self.PLATFORM_PSU_CAPACITY) + + def get_type(self): + """ + Gets the type of the PSU + Returns: + A string, the type of PSU (AC/DC) + """ + return "DC" + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/sfp.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/sfp.py new file mode 100644 index 000000000000..d9b6e491bef4 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/sfp.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python + +try: + from sonic_platform_pddf_base.pddf_sfp import PddfSfp +except ImportError as e: + raise ImportError (str(e) + "- required module not found") + + +class Sfp(PddfSfp): + """ + PDDF Platform-Specific Sfp class + """ + + def __init__(self, index, pddf_data=None, pddf_plugin_data=None): + PddfSfp.__init__(self, index, pddf_data, pddf_plugin_data) + + # Provide the functions/variables below for which implementation is to be overwritten diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/thermal.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/thermal.py new file mode 100644 index 000000000000..5b829fc26caa --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/thermal.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python + + +try: + from sonic_platform_pddf_base.pddf_thermal import PddfThermal +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + + +class Thermal(PddfThermal): + """PDDF Platform-Specific Thermal class""" + + def __init__(self, index, pddf_data=None, pddf_plugin_data=None): + PddfThermal.__init__(self, index, pddf_data, pddf_plugin_data) + + # Provide the functions/variables below for which implementation is to be overwritten diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/watchdog.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/watchdog.py new file mode 100644 index 000000000000..88660b1a1faa --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/watchdog.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python + +############################################################################# +# +# Module contains an implementation of platform specific watchdog API's +# +############################################################################# + +try: + from sonic_platform_pddf_base.pddf_watchdog import PddfWatchdog +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +class Watchdog(PddfWatchdog): + """ + PDDF Platform-specific Chassis class + """ + + def __init__(self): + PddfWatchdog.__init__(self) + self.timeout= 180 + + # Provide the functions/variables below for which implementation is to be overwritten diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/systemd/pddf-platform-init.service b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/systemd/pddf-platform-init.service new file mode 120000 index 000000000000..0fd9f25b6c5e --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/systemd/pddf-platform-init.service @@ -0,0 +1 @@ +../../../../pddf/i2c/service/pddf-platform-init.service \ No newline at end of file diff --git a/src/sonic-device-data/tests/permitted_list b/src/sonic-device-data/tests/permitted_list index 9ff0e5b6959f..46a82cce9248 100644 --- a/src/sonic-device-data/tests/permitted_list +++ b/src/sonic-device-data/tests/permitted_list @@ -257,3 +257,32 @@ appl_param_module_id serdes_lane_config_cl72_auto_polarity_en serdes_lane_config_cl72_restart_timeout_en bist_enable +mmu_config_override +buf.prigroup.guarantee +buf.prigroup.device_headroom_enable +buf.prigroup.pool_resume +buf.prigroup.pool_scale +buf.prigroup.port_guarantee_enable +buf.prigroup.port_max_enable +buf.prigroup.flow_control_enable +buf.queue.pool_scale +buf.mqueue.pool_scale +buf.queue.pool_scale +buf.mqueue.pool_scale +buf.mqueue.pool_scale_cpu +buf.queue.qgroup_guarantee_enable +profile_pg_1hdrm_8shared +buf.map.pri.prigroup +udp_port +multi_hash_recurse_depth_exact_match +robust_hash_seed_exact_match +my_udp_port_int +server_udp_port_int +probe_marker1_int +probe_marker2_int +hoplimit_int +lb_port_pipe0_int +lb_port_pipe1_int +ing_origin_id_device_id_mask +egr_origin_id_device_id_mask +port_count_in_pb_stream From 8171bfefc87bfa0ae4fd4bc80007debcf248493a Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Thu, 9 Sep 2021 11:03:22 -0700 Subject: [PATCH 151/186] Enhancing vs support to mock based on platform (#8685) --- platform/vs/docker-sonic-vs/start.sh | 4 ++++ src/sonic-device-data/Makefile | 1 + src/sonic-device-data/src/sai_mlnx.vs_profile | 5 +++++ 3 files changed, 10 insertions(+) create mode 100644 src/sonic-device-data/src/sai_mlnx.vs_profile diff --git a/platform/vs/docker-sonic-vs/start.sh b/platform/vs/docker-sonic-vs/start.sh index 2d771a3cc6fd..93c9cf479d69 100755 --- a/platform/vs/docker-sonic-vs/start.sh +++ b/platform/vs/docker-sonic-vs/start.sh @@ -53,6 +53,10 @@ else fi sonic-cfggen -t /usr/share/sonic/templates/copp_cfg.j2 > /etc/sonic/copp_cfg.json +if [ "$fake_platform" == "mellanox" ]; then + cp /usr/share/sonic/hwsku/sai_mlnx.profile /usr/share/sonic/hwsku/sai.profile +fi + mkdir -p /etc/swss/config.d/ rm -f /var/run/rsyslogd.pid diff --git a/src/sonic-device-data/Makefile b/src/sonic-device-data/Makefile index 3de98ef84b42..2077e98f3e98 100644 --- a/src/sonic-device-data/Makefile +++ b/src/sonic-device-data/Makefile @@ -18,6 +18,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : for d in `find -L ../../../device -maxdepth 3 -mindepth 3 -type d | grep -vE "(plugins|led-code)"`; do \ cp -Lr $$d device/x86_64-kvm_x86_64-r0/ ; \ cp ./sai.vs_profile device/x86_64-kvm_x86_64-r0/$$(basename $$d)/sai.profile; \ + cp ./sai_mlnx.vs_profile device/x86_64-kvm_x86_64-r0/$$(basename $$d)/sai_mlnx.profile; \ grep -v ^# device/x86_64-kvm_x86_64-r0/$$(basename $$d)/port_config.ini | awk '{i=i+1;print "eth"i":"$$2}' > device/x86_64-kvm_x86_64-r0/$$(basename $$d)/lanemap.ini cp ./pai.vs_profile device/x86_64-kvm_x86_64-r0/$$(basename $$d)/pai.profile; \ grep -v ^# device/x86_64-kvm_x86_64-r0/$$(basename $$d)/port_config.ini | awk '{i=i+1;print "eth"i":"$$2}' > device/x86_64-kvm_x86_64-r0/$$(basename $$d)/lanemap.ini diff --git a/src/sonic-device-data/src/sai_mlnx.vs_profile b/src/sonic-device-data/src/sai_mlnx.vs_profile new file mode 100644 index 000000000000..7b54438c4130 --- /dev/null +++ b/src/sonic-device-data/src/sai_mlnx.vs_profile @@ -0,0 +1,5 @@ +SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_MLNX2700 +SAI_VS_HOSTIF_USE_TAP_DEVICE=true +SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini +SAI_VS_CORE_PORT_INDEX_MAP_FILE=/usr/share/sonic/hwsku/coreportindexmap.ini +SAI_VS_INTERFACE_FABRIC_LANE_MAP_FILE=/usr/share/sonic/hwsku/fabriclanemap.ini From f899a828643ff2101d002a8370592876b286a078 Mon Sep 17 00:00:00 2001 From: Samuel Angebault Date: Thu, 9 Sep 2021 13:03:22 -0700 Subject: [PATCH 152/186] [Arista] Fix Clearwater2 phy initialization when no configuration is provided (#8271) Why I did it Fix an issue on the Clearwater2 linecard. When the linecard is started with a fresh image without configuration, phys would not be initialized. How I did it Added default_sku for Clearwater2 which prevents config-setup from failing to create a default config_db.json. Added some extra logic in the phy-credo-init script to run the phy_config.sh of the hwsku pointed by default_sku if the DEVICE_METADATA.localhost.hwsku information is not populated in CONFIG_DB. How to verify it Booting an image with this change and without configuration will lead to the phys being initialized using the phy_config.sh from default_sku. --- device/arista/x86_64-arista_7800r3_48cq2_lc/default_sku | 1 + device/arista/x86_64-arista_7800r3_48cqm2_lc/default_sku | 1 + rules/phy-credo.mk | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 device/arista/x86_64-arista_7800r3_48cq2_lc/default_sku create mode 100644 device/arista/x86_64-arista_7800r3_48cqm2_lc/default_sku diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/default_sku b/device/arista/x86_64-arista_7800r3_48cq2_lc/default_sku new file mode 100644 index 000000000000..47d37c0d9108 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/default_sku @@ -0,0 +1 @@ +Arista-7800R3-48CQ2-C48 t1 diff --git a/device/arista/x86_64-arista_7800r3_48cqm2_lc/default_sku b/device/arista/x86_64-arista_7800r3_48cqm2_lc/default_sku new file mode 100644 index 000000000000..055cc867926c --- /dev/null +++ b/device/arista/x86_64-arista_7800r3_48cqm2_lc/default_sku @@ -0,0 +1 @@ +Arista-7800R3-48CQM2-C48 t1 diff --git a/rules/phy-credo.mk b/rules/phy-credo.mk index ab6c45e0e9c5..7e9441619139 100644 --- a/rules/phy-credo.mk +++ b/rules/phy-credo.mk @@ -1,3 +1,3 @@ PHY_CREDO = phy-credo_1.0_amd64.deb -$(PHY_CREDO)_URL = "https://github.com/aristanetworks/sonic-firmware/raw/08cbc09437e942c1e3cd84a7595ca686193d311b/phy/phy-credo_1.0_amd64.deb" +$(PHY_CREDO)_URL = "https://github.com/aristanetworks/sonic-firmware/raw/0468f6c23a7219dfee6dd2819013e9f1e940c95d/phy/phy-credo_1.0_amd64.deb" SONIC_ONLINE_DEBS += $(PHY_CREDO) From e1a420c64192c9b5cb75037b329a87cb8726ff8a Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 9 Sep 2021 22:44:03 -0700 Subject: [PATCH 153/186] Update SAI modules for Nokia and Juniper for Bullseye and 5.10 kernel Also, start working on getting Dell SAI module compilable on 5.10 kernel. Signed-off-by: Saikrishna Arcot --- platform/broadcom/rules.mk | 4 +- .../debian/platform-modules-s5232f.install | 1 - .../debian/platform-modules-s6000.install | 1 - .../debian/platform-modules-s6100.install | 1 - .../debian/platform-modules-z9100.install | 1 - .../debian/platform-modules-z9264f.install | 1 - .../debian/platform-modules-z9332f.install | 1 - .../sonic-platform-modules-dell/debian/rules | 6 - .../s5232f/modules/dell_s5232f_fpga_ocores.c | 4 +- .../s5248f/modules/dell_s5248f_fpga_ocores.c | 4 +- .../s5248f/sonic_platform/ipmihelper.py | 269 ------------------ .../s5296f/modules/dell_s5296f_fpga_ocores.c | 4 +- .../s6000/modules/dell_s6000_platform.c | 4 +- .../z9264f/modules/dell_z9264f_fpga_ocores.c | 4 +- .../common/modules/gpio-tmc.c | 2 +- .../common/modules/i2c-tmc.c | 4 +- .../common/modules/jnx-refpga-tmc.c | 2 +- .../debian/rules | 2 +- .../qfx5200/modules/jnx-tmc-psu.c | 2 +- .../qfx5200/modules/leds-jnx-tmc.c | 2 +- .../sonic_platform/__init__.py | 2 +- .../sonic_platform/chassis.py | 20 +- .../broadcom/sonic-platform-modules-nokia | 2 +- 23 files changed, 32 insertions(+), 311 deletions(-) delete mode 100644 platform/broadcom/sonic-platform-modules-dell/s5248f/sonic_platform/ipmihelper.py diff --git a/platform/broadcom/rules.mk b/platform/broadcom/rules.mk index e7a830d41137..7af31c77ccbd 100644 --- a/platform/broadcom/rules.mk +++ b/platform/broadcom/rules.mk @@ -1,6 +1,6 @@ include $(PLATFORM_PATH)/sai-modules.mk include $(PLATFORM_PATH)/sai.mk -#include $(PLATFORM_PATH)/platform-modules-nokia.mk +include $(PLATFORM_PATH)/platform-modules-nokia.mk #include $(PLATFORM_PATH)/platform-modules-dell.mk #include $(PLATFORM_PATH)/platform-modules-arista.mk #include $(PLATFORM_PATH)/platform-modules-ingrasys.mk @@ -11,7 +11,7 @@ include $(PLATFORM_PATH)/sai.mk #include $(PLATFORM_PATH)/platform-modules-delta.mk #include $(PLATFORM_PATH)/platform-modules-quanta.mk ##include $(PLATFORM_PATH)/platform-modules-mitac.mk -#include $(PLATFORM_PATH)/platform-modules-juniper.mk +include $(PLATFORM_PATH)/platform-modules-juniper.mk #include $(PLATFORM_PATH)/platform-modules-brcm-xlr-gts.mk #include $(PLATFORM_PATH)/platform-modules-ruijie.mk #include $(PLATFORM_PATH)/platform-modules-ragile.mk diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s5232f.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s5232f.install index 25d2b84ad4ac..a6003d1273c1 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s5232f.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s5232f.install @@ -5,7 +5,6 @@ s5232f/scripts/sensors usr/bin s5232f/scripts/qsfp_irq_enable.py usr/bin s5232f/cfg/s5232f-modules.conf etc/modules-load.d s5232f/systemd/platform-modules-s5232f.service etc/systemd/system -s5232f/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dellemc_s5232f_c3538-r0 s5232f/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dellemc_s5232f_c3538-r0 common/platform_reboot usr/share/sonic/device/x86_64-dellemc_s5232f_c3538-r0 common/fw-updater usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6000.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6000.install index 2311ea0b578a..eb96a856c866 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6000.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6000.install @@ -10,5 +10,4 @@ common/actions.sh usr/share/sonic/device/x86_64-dell_s6000_s1220-r0 s6000/scripts/platform_reboot_override usr/share/sonic/device/x86_64-dell_s6000_s1220-r0 s6000/scripts/platform_update_reboot_cause usr/share/sonic/device/x86_64-dell_s6000_s1220-r0 s6000/scripts/override.conf /etc/systemd/system/systemd-reboot.service.d -s6000/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dell_s6000_s1220-r0 s6000/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dell_s6000_s1220-r0 diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install index 1f1b7609b760..3261292f61ae 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install @@ -17,7 +17,6 @@ common/dell_lpc_mon.sh usr/local/bin common/actions.sh usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/platform_sensors.py usr/local/bin s6100/scripts/hw-management-generate-dump.sh usr/bin -s6100/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/platform_watchdog_enable.sh usr/local/bin s6100/scripts/platform_watchdog_disable.sh usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install index 28d77243d639..a4176c3c12cb 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install @@ -7,7 +7,6 @@ z9100/scripts/platform_reboot_override usr/share/sonic/device/x86_64-dell_z9100_ z9100/scripts/override.conf /etc/systemd/system/systemd-reboot.service.d z9100/scripts/platform_sensors.py usr/local/bin z9100/scripts/sensors usr/bin -z9100/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dell_z9100_c2538-r0 z9100/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dell_z9100_c2538-r0 z9100/cfg/z9100-modules.conf etc/modules-load.d z9100/systemd/platform-modules-z9100.service etc/systemd/system diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9264f.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9264f.install index 9aa3793f5d29..4d08b3e98116 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9264f.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9264f.install @@ -5,7 +5,6 @@ z9264f/scripts/sensors usr/bin z9264f/scripts/port_irq_enable.py usr/bin z9264f/cfg/z9264f-modules.conf etc/modules-load.d z9264f/systemd/platform-modules-z9264f.service etc/systemd/system -z9264f/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9264f_c3538-r0 z9264f/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9264f_c3538-r0 common/platform_reboot usr/share/sonic/device/x86_64-dellemc_z9264f_c3538-r0 common/fw-updater usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install index 9915b08b72ee..91aa392e8602 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install @@ -3,7 +3,6 @@ z9332f/scripts/platform_sensors.py usr/local/bin z9332f/scripts/sensors usr/bin z9332f/cfg/z9332f-modules.conf etc/modules-load.d z9332f/systemd/platform-modules-z9332f.service etc/systemd/system -z9332f/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 z9332f/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 common/platform_reboot usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 common/pcisysfs.py usr/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/rules b/platform/broadcom/sonic-platform-modules-dell/debian/rules index 520331ed16d3..41e2f2e66b57 100755 --- a/platform/broadcom/sonic-platform-modules-dell/debian/rules +++ b/platform/broadcom/sonic-platform-modules-dell/debian/rules @@ -18,31 +18,26 @@ override_dh_auto_build: cp $(COMMON_DIR)/dell_pmc.c $(MOD_SRC_DIR)/$${mod}/modules/dell_s6100_lpc.c; \ cp $(COMMON_DIR)/dell_ich.c $(MOD_SRC_DIR)/$${mod}/modules/dell_ich.c; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ elif [ $$mod = "z9100" ]; then \ cp $(COMMON_DIR)/dell_pmc.c $(MOD_SRC_DIR)/$${mod}/modules/dell_mailbox.c; \ cp $(COMMON_DIR)/dell_ich.c $(MOD_SRC_DIR)/$${mod}/modules/dell_ich.c; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ elif [ $$mod = "s6000" ]; then \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ elif [ $$mod = "z9264f" ]; then \ cp $(COMMON_DIR)/ipmihelper.py $(MOD_SRC_DIR)/$${mod}/sonic_platform/ipmihelper.py; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ elif [ $$mod = "s5232f" ]; then \ cp $(COMMON_DIR)/ipmihelper.py $(MOD_SRC_DIR)/$${mod}/sonic_platform/ipmihelper.py; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ elif [ $$mod = "s5248f" ]; then \ @@ -53,7 +48,6 @@ override_dh_auto_build: elif [ $$mod = "z9332f" ]; then \ cp $(COMMON_DIR)/ipmihelper.py $(MOD_SRC_DIR)/$${mod}/sonic_platform/ipmihelper.py; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ fi; \ diff --git a/platform/broadcom/sonic-platform-modules-dell/s5232f/modules/dell_s5232f_fpga_ocores.c b/platform/broadcom/sonic-platform-modules-dell/s5232f/modules/dell_s5232f_fpga_ocores.c index 1565d4f5c645..7e1fb1ab4643 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s5232f/modules/dell_s5232f_fpga_ocores.c +++ b/platform/broadcom/sonic-platform-modules-dell/s5232f/modules/dell_s5232f_fpga_ocores.c @@ -971,7 +971,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) /* map the device memory or IO region into kernel virtual * address space */ - fpgapci->bar[i] = ioremap_nocache (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); + fpgapci->bar[i] = ioremap (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); if (!fpgapci->bar[i]) { PRINT ( "Could not map BAR #%d.\n", i); @@ -985,7 +985,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) { fpga_phys_addr = bar_start; - fpga_ctl_addr = ioremap_nocache (bar_start, FPGA_CTL_REG_SIZE); + fpga_ctl_addr = ioremap (bar_start, FPGA_CTL_REG_SIZE); fpga_base_addr = fpgapci->bar[i]; } diff --git a/platform/broadcom/sonic-platform-modules-dell/s5248f/modules/dell_s5248f_fpga_ocores.c b/platform/broadcom/sonic-platform-modules-dell/s5248f/modules/dell_s5248f_fpga_ocores.c index b9a50c69b225..0673d6e9d0ac 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s5248f/modules/dell_s5248f_fpga_ocores.c +++ b/platform/broadcom/sonic-platform-modules-dell/s5248f/modules/dell_s5248f_fpga_ocores.c @@ -1046,7 +1046,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) /* map the device memory or IO region into kernel virtual * address space */ - fpgapci->bar[i] = ioremap_nocache (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); + fpgapci->bar[i] = ioremap (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); if (!fpgapci->bar[i]) { PRINT ( "Could not map BAR #%d.\n", i); @@ -1060,7 +1060,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) { fpga_phys_addr = bar_start; - fpga_ctl_addr = ioremap_nocache (bar_start, FPGA_CTL_REG_SIZE); + fpga_ctl_addr = ioremap (bar_start, FPGA_CTL_REG_SIZE); fpga_base_addr = fpgapci->bar[i]; } diff --git a/platform/broadcom/sonic-platform-modules-dell/s5248f/sonic_platform/ipmihelper.py b/platform/broadcom/sonic-platform-modules-dell/s5248f/sonic_platform/ipmihelper.py deleted file mode 100644 index d95329c40de2..000000000000 --- a/platform/broadcom/sonic-platform-modules-dell/s5248f/sonic_platform/ipmihelper.py +++ /dev/null @@ -1,269 +0,0 @@ -#!/usr/bin/python3 - -######################################################################## -# DellEMC -# -# Module contains implementation of IpmiSensor and IpmiFru classes that -# provide Sensor's and FRU's information respectively. -# -######################################################################## - -import subprocess -import re - -# IPMI Request Network Function Codes -NetFn_SensorEvent = 0x04 -NetFn_Storage = 0x0A - -# IPMI Sensor Device Commands -Cmd_GetSensorReadingFactors = 0x23 -Cmd_GetSensorThreshold = 0x27 -Cmd_GetSensorReading = 0x2D - -# IPMI FRU Device Commands -Cmd_ReadFRUData = 0x11 - -def get_ipmitool_raw_output(args): - """ - Returns a list the elements of which are the individual bytes of - ipmitool raw command output. - """ - result_bytes = list() - result = "" - command = "ipmitool raw {}".format(args) - try: - proc = subprocess.Popen(command.split(), stdout=subprocess.PIPE, - universal_newlines=True, stderr=subprocess.STDOUT) - stdout = proc.communicate()[0] - proc.wait() - if not proc.returncode: - result = stdout.rstrip('\n') - except EnvironmentError: - pass - - for i in result.split(): - result_bytes.append(int(i, 16)) - - return result_bytes - -class IpmiSensor(object): - - # Sensor Threshold types and their respective bit masks - THRESHOLD_BIT_MASK = { - "LowerNonCritical" : 0, - "LowerCritical" : 1, - "LowerNonRecoverable" : 2, - "UpperNonCritical" : 3, - "UpperCritical" : 4, - "UpperNonRecoverable" : 5 - } - - def __init__(self, sensor_id, is_discrete=False): - self.id = sensor_id - self.is_discrete = is_discrete - - def _get_converted_sensor_reading(self, raw_value): - """ - Returns a 2 element tuple(bool, int) in which first element - provides the validity of the reading and the second element is - the converted sensor reading - """ - # Get Sensor Reading Factors - cmd_args = "{} {} {} {}".format(NetFn_SensorEvent, - Cmd_GetSensorReadingFactors, - self.id, raw_value) - factors = get_ipmitool_raw_output(cmd_args) - - if len(factors) != 7: - return False, 0 - - # Compute Twos complement - def get_twos_complement(val, bits): - if val & (1 << (bits - 1)): - val = val - (1 << bits) - return val - - # Calculate actual sensor value from the raw sensor value - # using the sensor reading factors. - M = get_twos_complement(((factors[2] & 0xC0) << 8) | factors[1], 10) - B = get_twos_complement(((factors[4] & 0xC0) << 8) | factors[3], 10) - R_exp = get_twos_complement((factors[6] & 0xF0) >> 4, 4) - B_exp = get_twos_complement(factors[6] & 0x0F, 4) - - converted_reading = ((M * raw_value) + (B * 10**B_exp)) * 10**R_exp - - return True, converted_reading - - def get_reading(self): - """ - For Threshold sensors, returns the sensor reading. - For Discrete sensors, returns the state value. - - Returns: - A tuple (bool, int) where the first element provides the - validity of the reading and the second element provides the - sensor reading/state value. - """ - # Get Sensor Reading - cmd_args = "{} {} {}".format(NetFn_SensorEvent, Cmd_GetSensorReading, - self.id) - output = get_ipmitool_raw_output(cmd_args) - if len(output) != 4: - return False, 0 - - # Check reading/state unavailable - if output[1] & 0x20: - return False, 0 - - if self.is_discrete: - state = ((output[3] & 0x7F) << 8) | output[2] - return True, state - else: - return self._get_converted_sensor_reading(output[0]) - - def get_threshold(self, threshold_type): - """ - Returns the sensor's threshold value for a given threshold type. - - Args: - threshold_type (str) - one of the below mentioned - threshold type strings - - "LowerNonCritical" - "LowerCritical" - "LowerNonRecoverable" - "UpperNonCritical" - "UpperCritical" - "UpperNonRecoverable" - Returns: - A tuple (bool, int) where the first element provides the - validity of that threshold and second element provides the - threshold value. - """ - # Thresholds are not valid for discrete sensors - if self.is_discrete: - raise TypeError("Threshold is not applicable for Discrete Sensor") - - if threshold_type not in list(self.THRESHOLD_BIT_MASK.keys()): - raise ValueError("Invalid threshold type {} provided. Valid types " - "are {}".format(threshold_type, - list(self.THRESHOLD_BIT_MASK.keys()))) - - bit_mask = self.THRESHOLD_BIT_MASK[threshold_type] - - # Get Sensor Threshold - cmd_args = "{} {} {}".format(NetFn_SensorEvent, Cmd_GetSensorThreshold, - self.id) - thresholds = get_ipmitool_raw_output(cmd_args) - if len(thresholds) != 7: - return False, 0 - - valid_thresholds = thresholds.pop(0) - # Check whether particular threshold is readable - if valid_thresholds & (1 << bit_mask): - return self._get_converted_sensor_reading(thresholds[bit_mask]) - else: - return False, 0 - -class IpmiFru(object): - - def __init__(self, fru_id): - self.id = fru_id - - def _get_ipmitool_fru_print(self): - result = "" - command = "ipmitool fru print {}".format(self.id) - try: - proc = subprocess.Popen(command.split(), stdout=subprocess.PIPE, - universal_newlines=True, stderr=subprocess.STDOUT) - stdout = proc.communicate()[0] - proc.wait() - if not proc.returncode: - result = stdout.rstrip('\n') - except EnvironmentError: - pass - - return result - - def _get_from_fru(self, info): - """ - Returns a string containing the info from FRU - """ - fru_output = self._get_ipmitool_fru_print() - if not fru_output: - return "NA" - - info_req = re.search(r"%s\s*:(.*)" % info, fru_output) - if not info_req: - return "NA" - - return info_req.group(1).strip() - - def get_board_serial(self): - """ - Returns a string containing the Serial Number of the device. - """ - return self._get_from_fru('Board Serial') - - def get_board_part_number(self): - """ - Returns a string containing the Part Number of the device. - """ - return self._get_from_fru('Board Part Number') - - def get_board_mfr_id(self): - """ - Returns a string containing the manufacturer id of the FRU. - """ - return self._get_from_fru('Board Mfg') - - def get_board_product(self): - """ - Returns a string containing the manufacturer id of the FRU. - """ - return self._get_from_fru('Board Product') - - def get_fru_data(self, offset, count=1): - """ - Reads and returns the FRU data at the provided offset. - - Args: - offset (int) - FRU offset to read - count (int) - Number of bytes to read [optional, default = 1] - Returns: - A tuple (bool, list(int)) where the first element provides - the validity of the data read and the second element is a - list, the elements of which are the individual bytes of the - FRU data read. - """ - result_bytes = list() - is_valid = True - result = "" - - offset_LSB = offset & 0xFF - offset_MSB = offset & 0xFF00 - command = "ipmitool raw {} {} {} {} {} {}".format(NetFn_Storage, - Cmd_ReadFRUData, - self.id, offset_LSB, - offset_MSB, count) - try: - proc = subprocess.Popen(command.split(), stdout=subprocess.PIPE, - universal_newlines=True, stderr=subprocess.STDOUT) - stdout = proc.communicate()[0] - proc.wait() - if not proc.returncode: - result = stdout.rstrip('\n') - except EnvironmentError: - is_valid = False - - if (not result) or (not is_valid): - return False, result_bytes - - for i in result.split(): - result_bytes.append(int(i, 16)) - - read_count = result_bytes.pop(0) - if read_count != count: - return False, result_bytes - else: - return True, result_bytes diff --git a/platform/broadcom/sonic-platform-modules-dell/s5296f/modules/dell_s5296f_fpga_ocores.c b/platform/broadcom/sonic-platform-modules-dell/s5296f/modules/dell_s5296f_fpga_ocores.c index b9a50c69b225..0673d6e9d0ac 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s5296f/modules/dell_s5296f_fpga_ocores.c +++ b/platform/broadcom/sonic-platform-modules-dell/s5296f/modules/dell_s5296f_fpga_ocores.c @@ -1046,7 +1046,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) /* map the device memory or IO region into kernel virtual * address space */ - fpgapci->bar[i] = ioremap_nocache (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); + fpgapci->bar[i] = ioremap (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); if (!fpgapci->bar[i]) { PRINT ( "Could not map BAR #%d.\n", i); @@ -1060,7 +1060,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) { fpga_phys_addr = bar_start; - fpga_ctl_addr = ioremap_nocache (bar_start, FPGA_CTL_REG_SIZE); + fpga_ctl_addr = ioremap (bar_start, FPGA_CTL_REG_SIZE); fpga_base_addr = fpgapci->bar[i]; } diff --git a/platform/broadcom/sonic-platform-modules-dell/s6000/modules/dell_s6000_platform.c b/platform/broadcom/sonic-platform-modules-dell/s6000/modules/dell_s6000_platform.c index cbf506940ac9..0f3247ab4727 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s6000/modules/dell_s6000_platform.c +++ b/platform/broadcom/sonic-platform-modules-dell/s6000/modules/dell_s6000_platform.c @@ -47,8 +47,10 @@ static struct i2c_mux_gpio_platform_data s6000_mux_platform_data = { .base_nr = S6000_MUX_BASE_NR, .values = s6000_mux_values, .n_values = ARRAY_SIZE(s6000_mux_values), +#if 0 .gpios = s6000_mux_gpios, .n_gpios = ARRAY_SIZE(s6000_mux_gpios), +#endif .idle = 0, }; @@ -1204,7 +1206,7 @@ static int __init cpld_probe(struct platform_device *pdev) } for (i = 0; i < CPLD_DEVICE_NUM; i++) { - pdata[i].client = i2c_new_dummy(parent, pdata[i].reg_addr); + pdata[i].client = i2c_new_dummy_device(parent, pdata[i].reg_addr); if (!pdata[i].client) { printk(KERN_WARNING "Fail to create dummy i2c client for addr %d\n", pdata[i].reg_addr); goto error; diff --git a/platform/broadcom/sonic-platform-modules-dell/z9264f/modules/dell_z9264f_fpga_ocores.c b/platform/broadcom/sonic-platform-modules-dell/z9264f/modules/dell_z9264f_fpga_ocores.c index c3bd78131e87..8287f67c34f0 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9264f/modules/dell_z9264f_fpga_ocores.c +++ b/platform/broadcom/sonic-platform-modules-dell/z9264f/modules/dell_z9264f_fpga_ocores.c @@ -1072,7 +1072,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) /* map the device memory or IO region into kernel virtual * address space */ - fpgapci->bar[i] = ioremap_nocache (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); + fpgapci->bar[i] = ioremap (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); if (!fpgapci->bar[i]) { PRINT ( "Could not map BAR #%d.\n", i); @@ -1086,7 +1086,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) { fpga_phys_addr = bar_start; - fpga_ctl_addr = ioremap_nocache (bar_start, FPGA_CTL_REG_SIZE); + fpga_ctl_addr = ioremap (bar_start, FPGA_CTL_REG_SIZE); fpga_base_addr = fpgapci->bar[i]; } diff --git a/platform/broadcom/sonic-platform-modules-juniper/common/modules/gpio-tmc.c b/platform/broadcom/sonic-platform-modules-juniper/common/modules/gpio-tmc.c index 7b02e8a5bc74..35de9e007b46 100644 --- a/platform/broadcom/sonic-platform-modules-juniper/common/modules/gpio-tmc.c +++ b/platform/broadcom/sonic-platform-modules-juniper/common/modules/gpio-tmc.c @@ -609,7 +609,7 @@ static int tmc_gpio_probe(struct platform_device *pdev) dev_info(dev, "TMC GPIO resource 0x%llx, %llu\n", res->start, resource_size(res)); - chip->base = devm_ioremap_nocache(dev, res->start, resource_size(res)); + chip->base = devm_ioremap(dev, res->start, resource_size(res)); if (!chip->base) return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-juniper/common/modules/i2c-tmc.c b/platform/broadcom/sonic-platform-modules-juniper/common/modules/i2c-tmc.c index afd0311dc130..15e7334434c6 100644 --- a/platform/broadcom/sonic-platform-modules-juniper/common/modules/i2c-tmc.c +++ b/platform/broadcom/sonic-platform-modules-juniper/common/modules/i2c-tmc.c @@ -1029,7 +1029,7 @@ static int tmc_i2c_probe(struct platform_device *pdev) dev_info(dev, "Tmc I2C Accel resource 0x%llx, %llu\n", res->start, resource_size(res)); - tmc->membase = devm_ioremap_nocache(dev, res->start, + tmc->membase = devm_ioremap(dev, res->start, resource_size(res)); if (!tmc->membase) return -ENOMEM; @@ -1041,7 +1041,7 @@ static int tmc_i2c_probe(struct platform_device *pdev) dev_info(dev, "Tmc I2C Mem resource 0x%llx, %llu\n", res->start, resource_size(res)); - tmc->dpmbase = devm_ioremap_nocache(dev, res->start, + tmc->dpmbase = devm_ioremap(dev, res->start, resource_size(res)); if (!tmc->dpmbase) return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-juniper/common/modules/jnx-refpga-tmc.c b/platform/broadcom/sonic-platform-modules-juniper/common/modules/jnx-refpga-tmc.c index ef36bca72e9d..f291a9c73e55 100644 --- a/platform/broadcom/sonic-platform-modules-juniper/common/modules/jnx-refpga-tmc.c +++ b/platform/broadcom/sonic-platform-modules-juniper/common/modules/jnx-refpga-tmc.c @@ -529,7 +529,7 @@ static int jnx_refpga_tmc_probe(struct platform_device *pdev) return -ENODEV; } - tmc_membase = devm_ioremap_nocache(dev, res->start, resource_size(res)); + tmc_membase = devm_ioremap(dev, res->start, resource_size(res)); if (!tmc_membase) { dev_err(dev, "ioremap failed\n"); return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-juniper/debian/rules b/platform/broadcom/sonic-platform-modules-juniper/debian/rules index 1a781912a544..d672bbdf220f 100755 --- a/platform/broadcom/sonic-platform-modules-juniper/debian/rules +++ b/platform/broadcom/sonic-platform-modules-juniper/debian/rules @@ -13,7 +13,7 @@ include /usr/share/dpkg/pkg-info.mk export INSTALL_MOD_DIR:=extra -PYTHON ?= python2 +PYTHON ?= python3 PACKAGE_PRE_NAME := sonic-platform-juniper KVERSION ?= $(shell uname -r) diff --git a/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/jnx-tmc-psu.c b/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/jnx-tmc-psu.c index 86eeb6f88e45..1b30327bd8f3 100644 --- a/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/jnx-tmc-psu.c +++ b/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/jnx-tmc-psu.c @@ -109,7 +109,7 @@ static int tmc_psu_probe(struct platform_device *pdev) return -ENODEV; } - addr = devm_ioremap_nocache(dev, res->start, resource_size(res)); + addr = devm_ioremap(dev, res->start, resource_size(res)); if (!addr) { dev_err(dev, "ioremap failed\n"); return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/leds-jnx-tmc.c b/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/leds-jnx-tmc.c index 134faefd70a3..9b1ea4d11ce1 100644 --- a/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/leds-jnx-tmc.c +++ b/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/leds-jnx-tmc.c @@ -121,7 +121,7 @@ static int jnx_tmc_leds_init(struct device *dev, struct tmc_led_data *ild, return -ENODEV; } - addr = devm_ioremap_nocache(dev, res->start, resource_size(res)); + addr = devm_ioremap(dev, res->start, resource_size(res)); if (!addr) { dev_err(dev, "ioremap failed\n"); return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/__init__.py b/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/__init__.py index 9e1b2e56b1c4..aafda353d2ce 100755 --- a/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/__init__.py +++ b/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/__init__.py @@ -1 +1 @@ -import platform +from . import platform diff --git a/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/chassis.py index 4f673ab086ba..9eb9b07a618f 100755 --- a/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/chassis.py @@ -36,7 +36,7 @@ try: import os - import commands + import subprocess import sys import time import syslog @@ -65,7 +65,7 @@ def get_parameter_value(self,parameter_name): return content[1:] return "False" except IOError: - print "Error: File not found" + print("Error: File not found") return "False" def get_product_name(self): @@ -242,7 +242,7 @@ def get_reboot_cause(self): log_info("Juniper Platform name: {} and {}".format(self.get_platform_name(), platform_name)) if str(platform_name) == "x86_64-juniper_networks_qfx5210-r0": log_info("Juniper Platform QFX5210 ") - status, last_reboot_reason = commands.getstatusoutput("i2cget -f -y 0 0x65 0x24") + status, last_reboot_reason = subprocess.getstatusoutput("i2cget -f -y 0 0x65 0x24") if (status == 0): if last_reboot_reason == "0x80": return (ChassisBase.REBOOT_CAUSE_NON_HARDWARE, None) @@ -256,7 +256,7 @@ def get_reboot_cause(self): return (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Unknown reason") else: time.sleep(3) - status, last_reboot_reason = commands.getstatusoutput("i2cget -f -y 0 0x65 0x24") + status, last_reboot_reason = subprocess.getstatusoutput("i2cget -f -y 0 0x65 0x24") if last_reboot_reason == "0x80": return (ChassisBase.REBOOT_CAUSE_NON_HARDWARE, None) elif last_reboot_reason == "0x40" or last_reboot_reason == "0x08": @@ -270,9 +270,9 @@ def get_reboot_cause(self): elif str(platform_name) == "x86_64-juniper_networks_qfx5200-r0" : log_info("Juniper Platform QFX5200 ") - status, major_version = commands.getstatusoutput("busybox devmem 0xFED50000 8") - status, minor_version = commands.getstatusoutput("busybox devmem 0xFED50001 8") - status, last_reboot_reason = commands.getstatusoutput("busybox devmem 0xFED50004 8") + status, major_version = subprocess.getstatusoutput("busybox devmem 0xFED50000 8") + status, minor_version = subprocess.getstatusoutput("busybox devmem 0xFED50001 8") + status, last_reboot_reason = subprocess.getstatusoutput("busybox devmem 0xFED50004 8") if (status == 0): if (major_version == "0x31") and (minor_version == "0x03") and (last_reboot_reason == "0x80"): return (ChassisBase.REBOOT_CAUSE_NON_HARDWARE, None) @@ -288,9 +288,9 @@ def get_reboot_cause(self): return (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Unknown reason") else: time.sleep(3) - status, major_version = commands.getstatusoutput("busybox devmem 0xFED50000 8") - status, minor_version = commands.getstatusoutput("busybox devmem 0xFED50001 8") - status, last_reboot_reason = commands.getstatusoutput("busybox devmem 0xFED50004 8") + status, major_version = subprocess.getstatusoutput("busybox devmem 0xFED50000 8") + status, minor_version = subprocess.getstatusoutput("busybox devmem 0xFED50001 8") + status, last_reboot_reason = subprocess.getstatusoutput("busybox devmem 0xFED50004 8") if (status == 0): if (major_version == "0x31") and (minor_version == "0x03") and (last_reboot_reason == "0x80"): return (ChassisBase.REBOOT_CAUSE_NON_HARDWARE, None) diff --git a/platform/broadcom/sonic-platform-modules-nokia b/platform/broadcom/sonic-platform-modules-nokia index 90afc22977b4..0253956b49da 160000 --- a/platform/broadcom/sonic-platform-modules-nokia +++ b/platform/broadcom/sonic-platform-modules-nokia @@ -1 +1 @@ -Subproject commit 90afc22977b481e4511953904e3d66c68d039537 +Subproject commit 0253956b49dae24ec25a114e44a0d6479c1daba0 From f8949547d7e4c8f6cb382746ae955d2a495a0cb2 Mon Sep 17 00:00:00 2001 From: Nazarii Hnydyn Date: Fri, 10 Sep 2021 12:29:37 +0300 Subject: [PATCH 154/186] [submodule]: Advance sonic-sairedis. (#8706) Signed-off-by: Nazarii Hnydyn --- src/sonic-sairedis | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-sairedis b/src/sonic-sairedis index f85322e139a9..696ad9929db2 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit f85322e139a9b10f0154b26efaed689791d135d5 +Subproject commit 696ad9929db26a446518dbcd22c8f742025f2b93 From f36952fea3af9cbd85424d1e3756e1b65e2560d7 Mon Sep 17 00:00:00 2001 From: Nazarii Hnydyn Date: Fri, 10 Sep 2021 17:30:00 +0300 Subject: [PATCH 155/186] [Mellanox]: Update SAI to v1.19.2 (#8618) - Why I did it Advance to Mellanox SAI ver 1.19.2 to pick up dynamic Policy Based Hashing support. For this version above the static Policy Based Hashing is no longer supported. For detailed release notes check https://github.com/Mellanox/SAI-Implementation/blob/sonic2111/release%20notes.txt - How I did it Updated SAI-Implementation submodule - How to verify it 1. make configure PLATFORM=mellanox 2. make target/sonic-mellanox.bin Run full regression as well as new dynamic PBH tests Signed-off-by: Nazarii Hnydyn --- platform/mellanox/mlnx-sai.mk | 2 +- platform/mellanox/mlnx-sai/SAI-Implementation | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/mellanox/mlnx-sai.mk b/platform/mellanox/mlnx-sai.mk index 7929b8c75181..2570a2d0fefe 100644 --- a/platform/mellanox/mlnx-sai.mk +++ b/platform/mellanox/mlnx-sai.mk @@ -1,6 +1,6 @@ # Mellanox SAI -MLNX_SAI_VERSION = SAIRel1.19.1 +MLNX_SAI_VERSION = SAIRel1.19.2 export MLNX_SAI_VERSION diff --git a/platform/mellanox/mlnx-sai/SAI-Implementation b/platform/mellanox/mlnx-sai/SAI-Implementation index be35fa45f163..971a8448dadf 160000 --- a/platform/mellanox/mlnx-sai/SAI-Implementation +++ b/platform/mellanox/mlnx-sai/SAI-Implementation @@ -1 +1 @@ -Subproject commit be35fa45f163f6e1a36368f1776dc5fc745fc845 +Subproject commit 971a8448dadff061a0d8af5d79e00a20ebaf769d From b171e56e01c60e38e6e4f019132ece1c70cc1e73 Mon Sep 17 00:00:00 2001 From: Arun Saravanan Balachandran <52521751+ArunSaravananBalachandran@users.noreply.github.com> Date: Sat, 11 Sep 2021 06:05:47 +0530 Subject: [PATCH 156/186] DellEMC Z9332f: Platform API - Remove EEPROM Vendor Extension decoding (#8716) --- .../z9332f/sonic_platform/eeprom.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py index eda04ae3bd8e..1dc66935508c 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py @@ -51,13 +51,7 @@ def __init__(self): 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) + name, value = self.decoder(None, tlv) self.eeprom_tlv_dict[code] = value if eeprom[tlv_index] == self._TLV_CODE_CRC_32: From 1652613ad78ce5c840abf573fd81ae728e4842ee Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Fri, 10 Sep 2021 20:17:15 -0700 Subject: [PATCH 157/186] [submodule]: retreat sonic-swss submodule (#8732) Fix #8722 retreat two commits which cause warm reboot regression * eb79ca4 2021-09-01 | [pbh]: Add PBH OA (#1782) [Nazarii Hnydyn] * 3d6b1f0 2021-08-31 | [buffer orch] Bugfix: Don't query counter SAI_BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES on a pool where it is not supported (#1857) [Stephen Sun] Signed-off-by: Guohan Lu --- src/sonic-swss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-swss b/src/sonic-swss index eb79ca4a5248..db9ca8306546 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit eb79ca4a524899f57995abd5ae5ec5f773ec85d0 +Subproject commit db9ca8306546eec0c1b1b703be688e2a8a7ae77a From b19d42ebb7c1ddcef59144ef907894331175bbac Mon Sep 17 00:00:00 2001 From: dflynn-Nokia <60479697+dflynn-Nokia@users.noreply.github.com> Date: Sat, 11 Sep 2021 04:18:24 -0400 Subject: [PATCH 158/186] [Nokia ixs7215] Miscellaneous platform API fixes (#8707) * [Nokia ixs7215] Miscellaneous platform API fixes This commit delivers the following fixes for the Nokia ixs7215 platform - Fix bug in a fan API error path - Add support for setting the fan drawer led - Add support for getting/setting the front panel PSU status led - Add support for getting the min/max observed temperature value * [Nokia ixs7215] code review changes: temperature min/max values --- .../7215/sonic_platform/fan.py | 12 ++++------- .../7215/sonic_platform/fan_drawer.py | 2 +- .../7215/sonic_platform/psu.py | 20 +++++++++++++++++++ .../7215/sonic_platform/thermal.py | 15 ++++++++++++++ 4 files changed, 40 insertions(+), 9 deletions(-) diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan.py index 14c00c763dde..b8fd335930d6 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan.py @@ -336,10 +336,10 @@ def get_status_led(self): """ if self.is_psu_fan: - return False + return None if smbus_present == 0: - return False + return None else: bus = smbus.SMBus(0) DEVICE_ADDRESS = 0x41 @@ -368,7 +368,7 @@ def get_target_speed(self): (off) to 100 (full speed) """ speed = 0 - + fan_duty = self._get_i2c_register(self.set_fan_speed_reg) if (fan_duty != 'ERR'): dutyspeed = int(fan_duty) @@ -380,9 +380,5 @@ def get_target_speed(self): speed = 50 elif dutyspeed == 255: speed = 100 - - return speed - - - + return speed diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py index 35b663cbb786..e42d80cdbd52 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py @@ -54,7 +54,7 @@ def get_direction(self): return 'intake' def set_status_led(self, color): - return True + return self._fan_list[0].set_status_led(color) def get_status_led(self, color): return self._fan_list[0].get_status_led() diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/psu.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/psu.py index 6a338f5a166e..90025db7ffbf 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/psu.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/psu.py @@ -234,3 +234,23 @@ def set_status_led(self, color): # The firmware running in the PSU controls the LED # and the PSU LED state cannot be changed from CPU. return False + + def get_status_master_led(self): + """ + Gets the state of the front panel PSU status LED + + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings. + """ + return self._psu_master_led_color + + def set_status_master_led(self, color): + """ + Sets the state of the front panel PSU status LED + + Returns: + bool: True if status LED state is set successfully, False if + not + """ + self._psu_master_led_color = color + return True diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/thermal.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/thermal.py index 528a6e49d924..20fdec61f38e 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/thermal.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/thermal.py @@ -33,9 +33,12 @@ class Thermal(ThermalBase): "CPU Core") def __init__(self, thermal_index): + ThermalBase.__init__(self) self.index = thermal_index + 1 self.is_psu_thermal = False self.dependency = None + self._minimum = None + self._maximum = None self.thermal_high_threshold_file = None # PCB temperature sensors if self.index < 3: @@ -163,6 +166,10 @@ def get_temperature(self): self.thermal_temperature_file) if (thermal_temperature != 'ERR'): thermal_temperature = float(thermal_temperature) / 1000 + if self._minimum is None or self._minimum > thermal_temperature: + self._minimum = thermal_temperature + if self._maximum is None or self._maximum < thermal_temperature: + self._maximum = thermal_temperature else: thermal_temperature = 0 @@ -226,6 +233,14 @@ def get_high_critical_threshold(self): return float("{:.3f}".format(thermal_high_crit_threshold)) + def get_minimum_recorded(self): + self.get_temperature() + return self._minimum + + def get_maximum_recorded(self): + self.get_temperature() + return self._maximum + def get_position_in_parent(self): """ Retrieves 1-based relative physical position in parent device From d20f0cb7ea2a2cf00de6876c1f744d4431b753f8 Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Mon, 13 Sep 2021 07:22:17 -0700 Subject: [PATCH 159/186] [Mellanox] Remove 2x40G from SN3800 hwsku (#8712) - Why I did it Removed 2x40G for SN3800. This mode is not supported by hardware. - How I did it Removing it from hwsku.json and platform.json - How to verify it Load it in the device and check supported modes --- .../Mellanox-SN3800-D100C12S2/hwsku.json | 200 +++++++++--------- .../x86_64-mlnx_msn3800-r0/platform.json | 128 +++++------ 2 files changed, 164 insertions(+), 164 deletions(-) diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json index 87724d4e4c00..2b1d5d322282 100644 --- a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json @@ -1,310 +1,310 @@ { "interfaces": { "Ethernet0": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet2": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet4": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet6": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet8": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet10": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet12": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet14": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet16": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet18": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet20": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet22": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet24": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet26": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet28": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet30": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet32": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet34": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet36": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet38": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet40": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet42": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet44": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet46": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet48": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet50": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet52": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet54": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet56": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet58": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet60": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet62": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet64": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet66": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet68": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet70": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet72": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet74": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet76": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet78": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet80": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet82": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet84": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet86": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet88": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet90": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet92": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet94": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet96": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet98": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet100": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet102": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet104": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet106": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet108": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet110": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet112": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet114": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet116": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet118": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet120": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet122": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet124": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet126": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet128": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet130": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet132": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet134": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet136": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet138": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet140": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet142": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet144": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet146": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet148": { "default_brkout_mode": "1x10G[100G,50G,40G,25G]" }, "Ethernet152": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet154": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet156": { "default_brkout_mode": "1x10G[100G,50G,40G,25G]" }, "Ethernet160": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet162": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet164": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet166": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet168": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet170": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet172": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet174": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet176": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet178": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet180": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet182": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet184": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet186": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet188": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet190": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet192": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet194": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet196": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet198": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet200": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet202": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet204": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet206": { - "default_brkout_mode": "2x50G[40G,25G,10G]" + "default_brkout_mode": "2x50G[25G,10G]" }, "Ethernet208": { "default_brkout_mode": "1x100G[50G,40G,25G,10G]" diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json b/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json index 2cd4a13c6cfd..92865e228ee5 100644 --- a/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json @@ -726,7 +726,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp1"], "1x10G[100G,50G,40G,25G]": ["etp1"], - "2x50G[40G,25G,10G]": ["etp1a", "etp1b"] + "2x50G[25G,10G]": ["etp1a", "etp1b"] } }, "Ethernet4": { @@ -735,7 +735,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp2"], "1x10G[100G,50G,40G,25G]": ["etp2"], - "2x50G[40G,25G,10G]": ["etp2a", "etp2b"] + "2x50G[25G,10G]": ["etp2a", "etp2b"] } }, "Ethernet8": { @@ -744,7 +744,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp3"], "1x10G[100G,50G,40G,25G]": ["etp3"], - "2x50G[40G,25G,10G]": ["etp3a", "etp3b"] + "2x50G[25G,10G]": ["etp3a", "etp3b"] } }, "Ethernet12": { @@ -753,7 +753,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp4"], "1x10G[100G,50G,40G,25G]": ["etp4"], - "2x50G[40G,25G,10G]": ["etp4a", "etp4b"] + "2x50G[25G,10G]": ["etp4a", "etp4b"] } }, "Ethernet16": { @@ -762,7 +762,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp5"], "1x10G[100G,50G,40G,25G]": ["etp5"], - "2x50G[40G,25G,10G]": ["etp5a", "etp5b"] + "2x50G[25G,10G]": ["etp5a", "etp5b"] } }, "Ethernet20": { @@ -771,7 +771,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp6"], "1x10G[100G,50G,40G,25G]": ["etp6"], - "2x50G[40G,25G,10G]": ["etp6a", "etp6b"] + "2x50G[25G,10G]": ["etp6a", "etp6b"] } }, "Ethernet24": { @@ -780,7 +780,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp7"], "1x10G[100G,50G,40G,25G]": ["etp7"], - "2x50G[40G,25G,10G]": ["etp7a", "etp7b"] + "2x50G[25G,10G]": ["etp7a", "etp7b"] } }, "Ethernet28": { @@ -789,7 +789,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp8"], "1x10G[100G,50G,40G,25G]": ["etp8"], - "2x50G[40G,25G,10G]": ["etp8a", "etp8b"] + "2x50G[25G,10G]": ["etp8a", "etp8b"] } }, "Ethernet32": { @@ -798,7 +798,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp9"], "1x10G[100G,50G,40G,25G]": ["etp9"], - "2x50G[40G,25G,10G]": ["etp9a", "etp9b"] + "2x50G[25G,10G]": ["etp9a", "etp9b"] } }, "Ethernet36": { @@ -807,7 +807,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp10"], "1x10G[100G,50G,40G,25G]": ["etp10"], - "2x50G[40G,25G,10G]": ["etp10a", "etp10b"] + "2x50G[25G,10G]": ["etp10a", "etp10b"] } }, "Ethernet40": { @@ -816,7 +816,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp11"], "1x10G[100G,50G,40G,25G]": ["etp11"], - "2x50G[40G,25G,10G]": ["etp11a", "etp11b"] + "2x50G[25G,10G]": ["etp11a", "etp11b"] } }, "Ethernet44": { @@ -825,7 +825,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp12"], "1x10G[100G,50G,40G,25G]": ["etp12"], - "2x50G[40G,25G,10G]": ["etp12a", "etp12b"] + "2x50G[25G,10G]": ["etp12a", "etp12b"] } }, "Ethernet48": { @@ -834,7 +834,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp13"], "1x10G[100G,50G,40G,25G]": ["etp13"], - "2x50G[40G,25G,10G]": ["etp13a", "etp13b"] + "2x50G[25G,10G]": ["etp13a", "etp13b"] } }, "Ethernet52": { @@ -843,7 +843,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp14"], "1x10G[100G,50G,40G,25G]": ["etp14"], - "2x50G[40G,25G,10G]": ["etp14a", "etp14b"] + "2x50G[25G,10G]": ["etp14a", "etp14b"] } }, "Ethernet56": { @@ -852,7 +852,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp15"], "1x10G[100G,50G,40G,25G]": ["etp15"], - "2x50G[40G,25G,10G]": ["etp15a", "etp15b"] + "2x50G[25G,10G]": ["etp15a", "etp15b"] } }, "Ethernet60": { @@ -861,7 +861,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp16"], "1x10G[100G,50G,40G,25G]": ["etp16"], - "2x50G[40G,25G,10G]": ["etp16a", "etp16b"] + "2x50G[25G,10G]": ["etp16a", "etp16b"] } }, "Ethernet64": { @@ -870,7 +870,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp17"], "1x10G[100G,50G,40G,25G]": ["etp17"], - "2x50G[40G,25G,10G]": ["etp17a", "etp17b"] + "2x50G[25G,10G]": ["etp17a", "etp17b"] } }, "Ethernet68": { @@ -879,7 +879,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp18"], "1x10G[100G,50G,40G,25G]": ["etp18"], - "2x50G[40G,25G,10G]": ["etp18a", "etp18b"] + "2x50G[25G,10G]": ["etp18a", "etp18b"] } }, "Ethernet72": { @@ -888,7 +888,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp19"], "1x10G[100G,50G,40G,25G]": ["etp19"], - "2x50G[40G,25G,10G]": ["etp19a", "etp19b"] + "2x50G[25G,10G]": ["etp19a", "etp19b"] } }, "Ethernet76": { @@ -897,7 +897,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp20"], "1x10G[100G,50G,40G,25G]": ["etp20"], - "2x50G[40G,25G,10G]": ["etp20a", "etp20b"] + "2x50G[25G,10G]": ["etp20a", "etp20b"] } }, "Ethernet80": { @@ -906,7 +906,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp21"], "1x10G[100G,50G,40G,25G]": ["etp21"], - "2x50G[40G,25G,10G]": ["etp21a", "etp21b"] + "2x50G[25G,10G]": ["etp21a", "etp21b"] } }, "Ethernet84": { @@ -915,7 +915,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp22"], "1x10G[100G,50G,40G,25G]": ["etp22"], - "2x50G[40G,25G,10G]": ["etp22a", "etp22b"] + "2x50G[25G,10G]": ["etp22a", "etp22b"] } }, "Ethernet88": { @@ -924,7 +924,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp23"], "1x10G[100G,50G,40G,25G]": ["etp23"], - "2x50G[40G,25G,10G]": ["etp23a", "etp23b"] + "2x50G[25G,10G]": ["etp23a", "etp23b"] } }, "Ethernet92": { @@ -933,7 +933,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp24"], "1x10G[100G,50G,40G,25G]": ["etp24"], - "2x50G[40G,25G,10G]": ["etp24a", "etp24b"] + "2x50G[25G,10G]": ["etp24a", "etp24b"] } }, "Ethernet96": { @@ -942,7 +942,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp25"], "1x10G[100G,50G,40G,25G]": ["etp25"], - "2x50G[40G,25G,10G]": ["etp25a", "etp25b"] + "2x50G[25G,10G]": ["etp25a", "etp25b"] } }, "Ethernet100": { @@ -951,7 +951,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp26"], "1x10G[100G,50G,40G,25G]": ["etp26"], - "2x50G[40G,25G,10G]": ["etp26a", "etp26b"] + "2x50G[25G,10G]": ["etp26a", "etp26b"] } }, "Ethernet104": { @@ -960,7 +960,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp27"], "1x10G[100G,50G,40G,25G]": ["etp27"], - "2x50G[40G,25G,10G]": ["etp27a", "etp27b"] + "2x50G[25G,10G]": ["etp27a", "etp27b"] } }, "Ethernet108": { @@ -969,7 +969,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp28"], "1x10G[100G,50G,40G,25G]": ["etp28"], - "2x50G[40G,25G,10G]": ["etp28a", "etp28b"] + "2x50G[25G,10G]": ["etp28a", "etp28b"] } }, "Ethernet112": { @@ -978,7 +978,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp29"], "1x10G[100G,50G,40G,25G]": ["etp29"], - "2x50G[40G,25G,10G]": ["etp29a", "etp29b"] + "2x50G[25G,10G]": ["etp29a", "etp29b"] } }, "Ethernet116": { @@ -987,7 +987,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp30"], "1x10G[100G,50G,40G,25G]": ["etp30"], - "2x50G[40G,25G,10G]": ["etp30a", "etp30b"] + "2x50G[25G,10G]": ["etp30a", "etp30b"] } }, "Ethernet120": { @@ -996,7 +996,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp31"], "1x10G[100G,50G,40G,25G]": ["etp31"], - "2x50G[40G,25G,10G]": ["etp31a", "etp31b"] + "2x50G[25G,10G]": ["etp31a", "etp31b"] } }, "Ethernet124": { @@ -1005,7 +1005,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp32"], "1x10G[100G,50G,40G,25G]": ["etp32"], - "2x50G[40G,25G,10G]": ["etp32a", "etp32b"] + "2x50G[25G,10G]": ["etp32a", "etp32b"] } }, "Ethernet128": { @@ -1014,7 +1014,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp33"], "1x10G[100G,50G,40G,25G]": ["etp33"], - "2x50G[40G,25G,10G]": ["etp33a", "etp33b"] + "2x50G[25G,10G]": ["etp33a", "etp33b"] } }, "Ethernet132": { @@ -1023,7 +1023,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp34"], "1x10G[100G,50G,40G,25G]": ["etp34"], - "2x50G[40G,25G,10G]": ["etp34a", "etp34b"] + "2x50G[25G,10G]": ["etp34a", "etp34b"] } }, "Ethernet136": { @@ -1032,7 +1032,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp35"], "1x10G[100G,50G,40G,25G]": ["etp35"], - "2x50G[40G,25G,10G]": ["etp35a", "etp35b"] + "2x50G[25G,10G]": ["etp35a", "etp35b"] } }, "Ethernet140": { @@ -1041,7 +1041,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp36"], "1x10G[100G,50G,40G,25G]": ["etp36"], - "2x50G[40G,25G,10G]": ["etp36a", "etp36b"] + "2x50G[25G,10G]": ["etp36a", "etp36b"] } }, "Ethernet144": { @@ -1050,7 +1050,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp37"], "1x10G[100G,50G,40G,25G]": ["etp37"], - "2x50G[40G,25G,10G]": ["etp37a", "etp37b"] + "2x50G[25G,10G]": ["etp37a", "etp37b"] } }, "Ethernet148": { @@ -1059,7 +1059,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp38"], "1x10G[100G,50G,40G,25G]": ["etp38"], - "2x50G[40G,25G,10G]": ["etp38a", "etp38b"] + "2x50G[25G,10G]": ["etp38a", "etp38b"] } }, "Ethernet152": { @@ -1068,7 +1068,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp39"], "1x10G[100G,50G,40G,25G]": ["etp39"], - "2x50G[40G,25G,10G]": ["etp39a", "etp39b"] + "2x50G[25G,10G]": ["etp39a", "etp39b"] } }, "Ethernet156": { @@ -1077,7 +1077,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp40"], "1x10G[100G,50G,40G,25G]": ["etp40"], - "2x50G[40G,25G,10G]": ["etp40a", "etp40b"] + "2x50G[25G,10G]": ["etp40a", "etp40b"] } }, "Ethernet160": { @@ -1086,7 +1086,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp41"], "1x10G[100G,50G,40G,25G]": ["etp41"], - "2x50G[40G,25G,10G]": ["etp41a", "etp41b"] + "2x50G[25G,10G]": ["etp41a", "etp41b"] } }, "Ethernet164": { @@ -1095,7 +1095,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp42"], "1x10G[100G,50G,40G,25G]": ["etp42"], - "2x50G[40G,25G,10G]": ["etp42a", "etp42b"] + "2x50G[25G,10G]": ["etp42a", "etp42b"] } }, "Ethernet168": { @@ -1104,7 +1104,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp43"], "1x10G[100G,50G,40G,25G]": ["etp43"], - "2x50G[40G,25G,10G]": ["etp43a", "etp43b"] + "2x50G[25G,10G]": ["etp43a", "etp43b"] } }, "Ethernet172": { @@ -1113,7 +1113,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp44"], "1x10G[100G,50G,40G,25G]": ["etp44"], - "2x50G[40G,25G,10G]": ["etp44a", "etp44b"] + "2x50G[25G,10G]": ["etp44a", "etp44b"] } }, "Ethernet176": { @@ -1122,7 +1122,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp45"], "1x10G[100G,50G,40G,25G]": ["etp45"], - "2x50G[40G,25G,10G]": ["etp45a", "etp45b"] + "2x50G[25G,10G]": ["etp45a", "etp45b"] } }, "Ethernet180": { @@ -1131,7 +1131,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp46"], "1x10G[100G,50G,40G,25G]": ["etp46"], - "2x50G[40G,25G,10G]": ["etp46a", "etp46b"] + "2x50G[25G,10G]": ["etp46a", "etp46b"] } }, "Ethernet184": { @@ -1140,7 +1140,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp47"], "1x10G[100G,50G,40G,25G]": ["etp47"], - "2x50G[40G,25G,10G]": ["etp47a", "etp47b"] + "2x50G[25G,10G]": ["etp47a", "etp47b"] } }, "Ethernet188": { @@ -1149,7 +1149,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp48"], "1x10G[100G,50G,40G,25G]": ["etp48"], - "2x50G[40G,25G,10G]": ["etp48a", "etp48b"] + "2x50G[25G,10G]": ["etp48a", "etp48b"] } }, "Ethernet192": { @@ -1158,7 +1158,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp49"], "1x10G[100G,50G,40G,25G]": ["etp49"], - "2x50G[40G,25G,10G]": ["etp49a", "etp49b"] + "2x50G[25G,10G]": ["etp49a", "etp49b"] } }, "Ethernet196": { @@ -1167,7 +1167,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp50"], "1x10G[100G,50G,40G,25G]": ["etp50"], - "2x50G[40G,25G,10G]": ["etp50a", "etp50b"] + "2x50G[25G,10G]": ["etp50a", "etp50b"] } }, "Ethernet200": { @@ -1176,7 +1176,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp51"], "1x10G[100G,50G,40G,25G]": ["etp51"], - "2x50G[40G,25G,10G]": ["etp51a", "etp51b"] + "2x50G[25G,10G]": ["etp51a", "etp51b"] } }, "Ethernet204": { @@ -1185,7 +1185,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp52"], "1x10G[100G,50G,40G,25G]": ["etp52"], - "2x50G[40G,25G,10G]": ["etp52a", "etp52b"] + "2x50G[25G,10G]": ["etp52a", "etp52b"] } }, "Ethernet208": { @@ -1194,7 +1194,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp53"], "1x10G[100G,50G,40G,25G]": ["etp53"], - "2x50G[40G,25G,10G]": ["etp53a", "etp53b"] + "2x50G[25G,10G]": ["etp53a", "etp53b"] } }, "Ethernet212": { @@ -1203,7 +1203,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp54"], "1x10G[100G,50G,40G,25G]": ["etp54"], - "2x50G[40G,25G,10G]": ["etp54a", "etp54b"] + "2x50G[25G,10G]": ["etp54a", "etp54b"] } }, "Ethernet216": { @@ -1212,7 +1212,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp55"], "1x10G[100G,50G,40G,25G]": ["etp55"], - "2x50G[40G,25G,10G]": ["etp55a", "etp55b"] + "2x50G[25G,10G]": ["etp55a", "etp55b"] } }, "Ethernet220": { @@ -1221,7 +1221,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp56"], "1x10G[100G,50G,40G,25G]": ["etp56"], - "2x50G[40G,25G,10G]": ["etp56a", "etp56b"] + "2x50G[25G,10G]": ["etp56a", "etp56b"] } }, "Ethernet224": { @@ -1230,7 +1230,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp57"], "1x10G[100G,50G,40G,25G]": ["etp57"], - "2x50G[40G,25G,10G]": ["etp57a", "etp57b"] + "2x50G[25G,10G]": ["etp57a", "etp57b"] } }, "Ethernet228": { @@ -1239,7 +1239,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp58"], "1x10G[100G,50G,40G,25G]": ["etp58"], - "2x50G[40G,25G,10G]": ["etp58a", "etp58b"] + "2x50G[25G,10G]": ["etp58a", "etp58b"] } }, "Ethernet232": { @@ -1248,7 +1248,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp59"], "1x10G[100G,50G,40G,25G]": ["etp59"], - "2x50G[40G,25G,10G]": ["etp59a", "etp59b"] + "2x50G[25G,10G]": ["etp59a", "etp59b"] } }, "Ethernet236": { @@ -1257,7 +1257,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp60"], "1x10G[100G,50G,40G,25G]": ["etp60"], - "2x50G[40G,25G,10G]": ["etp60a", "etp60b"] + "2x50G[25G,10G]": ["etp60a", "etp60b"] } }, "Ethernet240": { @@ -1266,7 +1266,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp61"], "1x10G[100G,50G,40G,25G]": ["etp61"], - "2x50G[40G,25G,10G]": ["etp61a", "etp61b"] + "2x50G[25G,10G]": ["etp61a", "etp61b"] } }, "Ethernet244": { @@ -1275,7 +1275,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp62"], "1x10G[100G,50G,40G,25G]": ["etp62"], - "2x50G[40G,25G,10G]": ["etp62a", "etp62b"] + "2x50G[25G,10G]": ["etp62a", "etp62b"] } }, "Ethernet248": { @@ -1284,7 +1284,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp63"], "1x10G[100G,50G,40G,25G]": ["etp63"], - "2x50G[40G,25G,10G]": ["etp63a", "etp63b"] + "2x50G[25G,10G]": ["etp63a", "etp63b"] } }, "Ethernet252": { @@ -1293,7 +1293,7 @@ "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp64"], "1x10G[100G,50G,40G,25G]": ["etp64"], - "2x50G[40G,25G,10G]": ["etp64a", "etp64b"] + "2x50G[25G,10G]": ["etp64a", "etp64b"] } } } From 41643a9729011fb41b44c1d74a4c17f0b9a7ed42 Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Mon, 13 Sep 2021 07:37:46 -0700 Subject: [PATCH 160/186] [202012][fstrim] delay fstrim timer after sonic.target (#8737) Why I did it fstrim has dependency on pmon docker. How I did it start fstrim timer after sonic.target. How to verify it local test and PR test. Signed-off-by: Ying Xie ying.xie@microsoft.com --- files/image_config/fstrim/fstrim.timer | 1 + 1 file changed, 1 insertion(+) diff --git a/files/image_config/fstrim/fstrim.timer b/files/image_config/fstrim/fstrim.timer index c6142dd94826..3ffb2332b7a6 100644 --- a/files/image_config/fstrim/fstrim.timer +++ b/files/image_config/fstrim/fstrim.timer @@ -1,6 +1,7 @@ [Unit] Description=Discard unused blocks once a week Documentation=man:fstrim +After=sonic.target [Timer] OnCalendar=weekly From b423b17221fb9a747eacf36bd44ec81232bb9b3f Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Mon, 13 Sep 2021 09:01:29 -0700 Subject: [PATCH 161/186] [DPB]Removing default admin status initialization in DPB flow while loading minigraph (#8711) To Fix #8697 . The config load_minigraph initializes 'admin_status' to up when platform.json has DPB configs. This doesn't happen when using port_config.ini The update minigraph has logic to initialize only the ports whose neighbors are defined or those belonging to portchannel However, a change was introduced to have default admin status to be 'up' in portconfig.py when the minigraph was using platform.json This will lead to sanity check failure in sonic-mgmt and thus no test cases could be run --- .../sample_output/sample_new_port_config.json | 32 ----- src/sonic-config-engine/portconfig.py | 1 - .../tests/platform-sample-graph.xml | 118 ++++++++++++++++++ .../tests/sample_output/platform_output.json | 79 +----------- .../tests/test_cfggen_platformJson.py | 22 ++-- 5 files changed, 133 insertions(+), 119 deletions(-) create mode 100644 src/sonic-config-engine/tests/platform-sample-graph.xml diff --git a/platform/vs/tests/breakout/sample_output/sample_new_port_config.json b/platform/vs/tests/breakout/sample_output/sample_new_port_config.json index 7c5c190a3330..442224ea6d6e 100644 --- a/platform/vs/tests/breakout/sample_output/sample_new_port_config.json +++ b/platform/vs/tests/breakout/sample_output/sample_new_port_config.json @@ -2,14 +2,12 @@ "Ethernet0_2x50G": { "Ethernet2": { "alias": "fortyGigE0/2", - "admin_status": "up", "lanes": "27,28", "speed": "50000", "index": "0" }, "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25,26", "speed": "50000", "index": "0" @@ -18,21 +16,18 @@ "Ethernet12_1x50G_2x25G": { "Ethernet12": { "alias": "fortyGigE0/12", - "admin_status": "up", "lanes": "37,38", "speed": "50000", "index": "3" }, "Ethernet14": { "alias": "fortyGigE0/14", - "admin_status": "up", "lanes": "39", "speed": "25000", "index": "3" }, "Ethernet15": { "alias": "fortyGigE0/15", - "admin_status": "up", "lanes": "40", "speed": "25000", "index": "3" @@ -41,14 +36,12 @@ "Ethernet0_2x50G": { "Ethernet2": { "alias": "fortyGigE0/2", - "admin_status": "up", "lanes": "27,28", "speed": "50000", "index": "0" }, "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25,26", "speed": "50000", "index": "0" @@ -57,7 +50,6 @@ "Ethernet0_1x100G": { "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25,26,27,28", "speed": "100000", "index": "0" @@ -66,28 +58,24 @@ "Ethernet0_4x25G": { "Ethernet2": { "alias": "fortyGigE0/2", - "admin_status": "up", "lanes": "27", "speed": "25000", "index": "0" }, "Ethernet3": { "alias": "fortyGigE0/3", - "admin_status": "up", "lanes": "28", "speed": "25000", "index": "0" }, "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25", "speed": "25000", "index": "0" }, "Ethernet1": { "alias": "fortyGigE0/1", - "admin_status": "up", "lanes": "26", "speed": "25000", "index": "0" @@ -96,21 +84,18 @@ "Ethernet0_2x25G_1x50G": { "Ethernet2": { "alias": "fortyGigE0/2", - "admin_status": "up", "lanes": "27,28", "speed": "50000", "index": "0" }, "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25", "speed": "25000", "index": "0" }, "Ethernet1": { "alias": "fortyGigE0/1", - "admin_status": "up", "lanes": "26", "speed": "25000", "index": "0" @@ -119,21 +104,18 @@ "Ethernet0_1x50G_2x25G": { "Ethernet2": { "alias": "fortyGigE0/2", - "admin_status": "up", "lanes": "27", "speed": "25000", "index": "0" }, "Ethernet3": { "alias": "fortyGigE0/3", - "admin_status": "up", "lanes": "28", "speed": "25000", "index": "0" }, "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25,26", "speed": "50000", "index": "0" @@ -142,28 +124,24 @@ "Ethernet4_4x25G": { "Ethernet6": { "alias": "fortyGigE0/6", - "admin_status": "up", "lanes": "31", "speed": "25000", "index": "1" }, "Ethernet7": { "alias": "fortyGigE0/7", - "admin_status": "up", "lanes": "32", "speed": "25000", "index": "1" }, "Ethernet4": { "alias": "fortyGigE0/4", - "admin_status": "up", "lanes": "29", "speed": "25000", "index": "1" }, "Ethernet5": { "alias": "fortyGigE0/5", - "admin_status": "up", "lanes": "30", "speed": "25000", "index": "1" @@ -172,14 +150,12 @@ "Ethernet4_2x50G": { "Ethernet6": { "alias": "fortyGigE0/6", - "admin_status": "up", "lanes": "31,32", "speed": "50000", "index": "1" }, "Ethernet4": { "alias": "fortyGigE0/4", - "admin_status": "up", "lanes": "29,30", "speed": "50000", "index": "1" @@ -188,14 +164,12 @@ "Ethernet8_2x50G": { "Ethernet8": { "alias": "fortyGigE0/8", - "admin_status": "up", "lanes": "33,34", "speed": "50000", "index": "2" }, "Ethernet10": { "alias": "fortyGigE0/10", - "admin_status": "up", "lanes": "35,36", "speed": "50000", "index": "2" @@ -204,14 +178,12 @@ "Ethernet8_1x50G_2x25G": { "Ethernet10": { "alias": "fortyGigE0/10", - "admin_status": "up", "lanes": "35", "speed": "25000", "index": "2" }, "Ethernet11": { "alias": "fortyGigE0/11", - "admin_status": "up", "lanes": "36", "speed": "25000", "index": "2" @@ -220,21 +192,18 @@ "Ethernet8_2x25G_1x50G": { "Ethernet8": { "alias": "fortyGigE0/8", - "admin_status": "up", "lanes": "33", "speed": "25000", "index": "2" }, "Ethernet9": { "alias": "fortyGigE0/9", - "admin_status": "up", "lanes": "34", "speed": "25000", "index": "2" }, "Ethernet10": { "alias": "fortyGigE0/10", - "admin_status": "up", "lanes": "35,36", "speed": "50000", "index": "2" @@ -243,7 +212,6 @@ "Ethernet8_1x100G": { "Ethernet8": { "alias": "fortyGigE0/8", - "admin_status": "up", "lanes": "33,34,35,36", "speed": "100000", "index": "2" diff --git a/src/sonic-config-engine/portconfig.py b/src/sonic-config-engine/portconfig.py index 260632b754f9..db486b1b7d8c 100644 --- a/src/sonic-config-engine/portconfig.py +++ b/src/sonic-config-engine/portconfig.py @@ -205,7 +205,6 @@ def gen_port_config(ports, parent_intf_id, index, alias_list, lanes, k, offset) raise Exception('Regex return for speed is None...') ports[intf_name]['index'] = index.split(",")[alias_position] - ports[intf_name]['admin_status'] = "up" parent_intf_id += step alias_position += 1 diff --git a/src/sonic-config-engine/tests/platform-sample-graph.xml b/src/sonic-config-engine/tests/platform-sample-graph.xml new file mode 100644 index 000000000000..690b05073c1a --- /dev/null +++ b/src/sonic-config-engine/tests/platform-sample-graph.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + switch-t0 + + + PortChannel01 + Ethernet20 + + + + PortChannel1001 + Ethernet4;Ethernet6 + + + + + + + + + + + + + + + DeviceInterfaceLink + 100000 + ARISTA01T1 + et1 + true + switch-t0 + Ethernet0 + true + + + + + switch-t0 + Force10-S6000 + AAA00PrdStr00 + + + ARISTA01T1 + Arista + + + + + + + + DeviceInterface + + true + 1 + Ethernet0 + + false + 0 + 0 + 100000 + + + DeviceInterface + + true + 1 + Ethernet4 + + false + 0 + 0 + 50000 + + + DeviceInterface + + true + 1 + Ethernet6 + + false + 0 + 0 + 50000 + + + DeviceInterface + + true + 1 + Ethernet20 + + false + 0 + 0 + 100000 + + + true + 0 + Force10-S6000 + + + + switch-t0 + Force10-S6000 + diff --git a/src/sonic-config-engine/tests/sample_output/platform_output.json b/src/sonic-config-engine/tests/sample_output/platform_output.json index 97b49997cf43..8276b19e18a3 100644 --- a/src/sonic-config-engine/tests/sample_output/platform_output.json +++ b/src/sonic-config-engine/tests/sample_output/platform_output.json @@ -3,7 +3,6 @@ "index": "3", "lanes": "8", "description": "Eth3/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth3/1", "pfc_asym": "off", @@ -14,7 +13,6 @@ "index": "3", "lanes": "9", "description": "Eth3/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth3/2", "pfc_asym": "off", @@ -25,7 +23,6 @@ "index": "10", "lanes": "36,37", "description": "Eth10/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth10/1", "pfc_asym": "off", @@ -36,7 +33,6 @@ "index": "25", "lanes": "98", "description": "Eth25/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth25/2", "pfc_asym": "off", @@ -47,7 +43,7 @@ "index": "1", "lanes": "0,1,2,3", "fec": "rs", - "description": "Eth1", + "description": "ARISTA01T1:et1", "admin_status": "up", "mtu": "9100", "alias": "Eth1", @@ -81,7 +77,6 @@ "index": "28", "lanes": "109", "description": "Eth28/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth28/2", "pfc_asym": "off", @@ -92,7 +87,6 @@ "index": "28", "lanes": "108", "description": "Eth28/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth28/1", "pfc_asym": "off", @@ -103,7 +97,6 @@ "index": "5", "lanes": "18", "description": "Eth5/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth5/2", "pfc_asym": "off", @@ -115,7 +108,6 @@ "lanes": "100,101,102,103", "fec": "rs", "description": "Eth26", - "admin_status": "up", "mtu": "9100", "alias": "Eth26", "pfc_asym": "off", @@ -126,7 +118,6 @@ "index": "9", "lanes": "34,35", "description": "Eth9/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth9/3", "pfc_asym": "off", @@ -137,7 +128,6 @@ "index": "27", "lanes": "104,105", "description": "Eth27/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth27/1", "pfc_asym": "off", @@ -148,7 +138,6 @@ "index": "27", "lanes": "106,107", "description": "Eth27/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth27/2", "pfc_asym": "off", @@ -159,7 +148,6 @@ "index": "24", "lanes": "94,95", "description": "Eth24/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth24/3", "pfc_asym": "off", @@ -170,7 +158,6 @@ "index": "32", "lanes": "126,127", "description": "Eth32/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth32/2", "pfc_asym": "off", @@ -181,7 +168,6 @@ "index": "25", "lanes": "96,97", "description": "Eth25/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth25/1", "pfc_asym": "off", @@ -192,7 +178,6 @@ "index": "32", "lanes": "124,125", "description": "Eth32/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth32/1", "pfc_asym": "off", @@ -203,7 +188,6 @@ "index": "23", "lanes": "90", "description": "Eth23/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth23/3", "pfc_asym": "off", @@ -214,7 +198,6 @@ "index": "23", "lanes": "91", "description": "Eth23/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth23/4", "pfc_asym": "off", @@ -225,7 +208,6 @@ "index": "24", "lanes": "92", "description": "Eth24/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth24/1", "pfc_asym": "off", @@ -236,7 +218,6 @@ "index": "24", "lanes": "93", "description": "Eth24/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth24/2", "pfc_asym": "off", @@ -247,7 +228,6 @@ "index": "13", "lanes": "50", "description": "Eth13/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth13/3", "pfc_asym": "off", @@ -258,7 +238,6 @@ "index": "13", "lanes": "51", "description": "Eth13/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth13/4", "pfc_asym": "off", @@ -269,7 +248,6 @@ "index": "14", "lanes": "52", "description": "Eth14/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth14/1", "pfc_asym": "off", @@ -280,7 +258,6 @@ "index": "14", "lanes": "53", "description": "Eth14/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth14/2", "pfc_asym": "off", @@ -291,7 +268,6 @@ "index": "14", "lanes": "54,55", "description": "Eth14/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth14/3", "pfc_asym": "off", @@ -302,7 +278,6 @@ "index": "25", "lanes": "99", "description": "Eth25/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth25/3", "pfc_asym": "off", @@ -313,7 +288,6 @@ "index": "15", "lanes": "56,57", "description": "Eth15/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth15/1", "pfc_asym": "off", @@ -324,7 +298,6 @@ "index": "29", "lanes": "113", "description": "Eth29/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth29/2", "pfc_asym": "off", @@ -335,7 +308,6 @@ "index": "20", "lanes": "76,77", "description": "Eth20/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth20/1", "pfc_asym": "off", @@ -346,7 +318,6 @@ "index": "19", "lanes": "74,75", "description": "Eth19/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth19/3", "pfc_asym": "off", @@ -357,7 +328,6 @@ "index": "10", "lanes": "39", "description": "Eth10/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth10/3", "pfc_asym": "off", @@ -368,7 +338,6 @@ "index": "19", "lanes": "72", "description": "Eth19/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth19/1", "pfc_asym": "off", @@ -379,7 +348,6 @@ "index": "19", "lanes": "73", "description": "Eth19/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth19/2", "pfc_asym": "off", @@ -390,7 +358,6 @@ "index": "18", "lanes": "70", "description": "Eth18/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth18/3", "pfc_asym": "off", @@ -401,7 +368,6 @@ "index": "18", "lanes": "71", "description": "Eth18/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth18/4", "pfc_asym": "off", @@ -412,7 +378,6 @@ "index": "9", "lanes": "32", "description": "Eth9/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth9/1", "pfc_asym": "off", @@ -423,7 +388,6 @@ "index": "9", "lanes": "33", "description": "Eth9/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth9/2", "pfc_asym": "off", @@ -434,7 +398,6 @@ "index": "5", "lanes": "16,17", "description": "Eth5/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth5/1", "pfc_asym": "off", @@ -445,7 +408,6 @@ "index": "28", "lanes": "111", "description": "Eth28/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth28/4", "pfc_asym": "off", @@ -456,7 +418,6 @@ "index": "3", "lanes": "10", "description": "Eth3/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth3/3", "pfc_asym": "off", @@ -467,7 +428,6 @@ "index": "3", "lanes": "11", "description": "Eth3/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth3/4", "pfc_asym": "off", @@ -478,7 +438,6 @@ "index": "4", "lanes": "12", "description": "Eth4/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth4/1", "pfc_asym": "off", @@ -489,7 +448,6 @@ "index": "4", "lanes": "13", "description": "Eth4/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth4/2", "pfc_asym": "off", @@ -500,7 +458,6 @@ "index": "15", "lanes": "58", "description": "Eth15/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth15/2", "pfc_asym": "off", @@ -511,7 +468,6 @@ "index": "5", "lanes": "19", "description": "Eth5/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth5/3", "pfc_asym": "off", @@ -522,7 +478,6 @@ "index": "15", "lanes": "59", "description": "Eth15/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth15/3", "pfc_asym": "off", @@ -533,7 +488,6 @@ "index": "10", "lanes": "38", "description": "Eth10/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth10/2", "pfc_asym": "off", @@ -544,7 +498,6 @@ "index": "20", "lanes": "78", "description": "Eth20/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth20/2", "pfc_asym": "off", @@ -555,7 +508,6 @@ "index": "18", "lanes": "68", "description": "Eth18/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth18/1", "pfc_asym": "off", @@ -566,7 +518,6 @@ "index": "4", "lanes": "14,15", "description": "Eth4/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth4/3", "pfc_asym": "off", @@ -577,7 +528,6 @@ "index": "23", "lanes": "89", "description": "Eth23/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth23/2", "pfc_asym": "off", @@ -588,7 +538,6 @@ "index": "23", "lanes": "88", "description": "Eth23/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth23/1", "pfc_asym": "off", @@ -599,7 +548,6 @@ "index": "30", "lanes": "118", "description": "Eth30/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth30/2", "pfc_asym": "off", @@ -610,7 +558,6 @@ "index": "30", "lanes": "119", "description": "Eth30/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth30/3", "pfc_asym": "off", @@ -621,7 +568,6 @@ "index": "30", "lanes": "116,117", "description": "Eth30/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth30/1", "pfc_asym": "off", @@ -632,7 +578,6 @@ "index": "29", "lanes": "114,115", "description": "Eth29/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth29/3", "pfc_asym": "off", @@ -644,7 +589,6 @@ "lanes": "80,81,82,83", "fec": "rs", "description": "Eth21", - "admin_status": "up", "mtu": "9100", "alias": "Eth21", "pfc_asym": "off", @@ -655,7 +599,6 @@ "index": "29", "lanes": "112", "description": "Eth29/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth29/1", "pfc_asym": "off", @@ -666,7 +609,6 @@ "index": "22", "lanes": "86,87", "description": "Eth22/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth22/2", "pfc_asym": "off", @@ -677,7 +619,6 @@ "index": "28", "lanes": "110", "description": "Eth28/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth28/3", "pfc_asym": "off", @@ -688,7 +629,6 @@ "index": "22", "lanes": "84,85", "description": "Eth22/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth22/1", "pfc_asym": "off", @@ -699,7 +639,6 @@ "index": "8", "lanes": "31", "description": "Eth8/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth8/4", "pfc_asym": "off", @@ -710,7 +649,6 @@ "index": "13", "lanes": "49", "description": "Eth13/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth13/2", "pfc_asym": "off", @@ -721,7 +659,6 @@ "index": "13", "lanes": "48", "description": "Eth13/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth13/1", "pfc_asym": "off", @@ -732,7 +669,6 @@ "index": "12", "lanes": "46,47", "description": "Eth12/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth12/2", "pfc_asym": "off", @@ -743,7 +679,6 @@ "index": "8", "lanes": "30", "description": "Eth8/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth8/3", "pfc_asym": "off", @@ -754,7 +689,6 @@ "index": "8", "lanes": "29", "description": "Eth8/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth8/2", "pfc_asym": "off", @@ -766,7 +700,6 @@ "lanes": "40,41,42,43", "fec": "rs", "description": "Eth11", - "admin_status": "up", "mtu": "9100", "alias": "Eth11", "pfc_asym": "off", @@ -778,7 +711,6 @@ "lanes": "120,121,122,123", "fec": "rs", "description": "Eth31", - "admin_status": "up", "mtu": "9100", "alias": "Eth31", "pfc_asym": "off", @@ -789,7 +721,6 @@ "index": "8", "lanes": "28", "description": "Eth8/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth8/1", "pfc_asym": "off", @@ -800,7 +731,6 @@ "index": "17", "lanes": "66,67", "description": "Eth17/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth17/2", "pfc_asym": "off", @@ -812,7 +742,6 @@ "lanes": "60,61,62,63", "fec": "rs", "description": "Eth16", - "admin_status": "up", "mtu": "9100", "alias": "Eth16", "pfc_asym": "off", @@ -823,7 +752,6 @@ "index": "17", "lanes": "64,65", "description": "Eth17/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth17/1", "pfc_asym": "off", @@ -834,7 +762,6 @@ "index": "12", "lanes": "44,45", "description": "Eth12/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth12/1", "pfc_asym": "off", @@ -857,7 +784,6 @@ "index": "20", "lanes": "79", "description": "Eth20/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth20/3", "pfc_asym": "off", @@ -868,7 +794,6 @@ "index": "18", "lanes": "69", "description": "Eth18/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth18/2", "pfc_asym": "off", @@ -879,7 +804,6 @@ "index": "7", "lanes": "24,25", "description": "Eth7/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth7/1", "pfc_asym": "off", @@ -890,7 +814,6 @@ "index": "7", "lanes": "26,27", "description": "Eth7/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth7/2", "pfc_asym": "off", diff --git a/src/sonic-config-engine/tests/test_cfggen_platformJson.py b/src/sonic-config-engine/tests/test_cfggen_platformJson.py index 1765fb4f3a2c..3307c3447c0c 100644 --- a/src/sonic-config-engine/tests/test_cfggen_platformJson.py +++ b/src/sonic-config-engine/tests/test_cfggen_platformJson.py @@ -22,7 +22,7 @@ class TestCfgGenPlatformJson(TestCase): def setUp(self): 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.sample_graph_simple = os.path.join(self.test_dir, 'simple-sample-graph.xml') + self.platform_sample_graph = os.path.join(self.test_dir, 'platform-sample-graph.xml') self.platform_json = os.path.join(self.test_dir, 'sample_platform.json') self.hwsku_json = os.path.join(self.test_dir, 'sample_hwsku.json') @@ -49,13 +49,13 @@ def test_dummy_run(self): self.assertEqual(output, '') def test_print_data(self): - argument = '-m "' + self.sample_graph_simple + '" --print-data' + argument = '-m "' + self.platform_sample_graph + '" --print-data' output = self.run_script(argument) self.assertTrue(len(output.strip()) > 0) # Check whether all interfaces present or not as per platform.json def test_platform_json_interfaces_keys(self): - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT.keys()|list"' + argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT.keys()|list"' output = self.run_script(argument) self.maxDiff = None expected = "['Ethernet8', 'Ethernet9', 'Ethernet36', 'Ethernet98', 'Ethernet0', 'Ethernet6', 'Ethernet4', 'Ethernet109', 'Ethernet108', 'Ethernet18', 'Ethernet100', 'Ethernet34', 'Ethernet104', 'Ethernet106', 'Ethernet94', 'Ethernet126', 'Ethernet96', 'Ethernet124', 'Ethernet90', 'Ethernet91', 'Ethernet92', 'Ethernet93', 'Ethernet50', 'Ethernet51', 'Ethernet52', 'Ethernet53', 'Ethernet54', 'Ethernet99', 'Ethernet56', 'Ethernet113', 'Ethernet76', 'Ethernet74', 'Ethernet39', 'Ethernet72', 'Ethernet73', 'Ethernet70', 'Ethernet71', 'Ethernet32', 'Ethernet33', 'Ethernet16', 'Ethernet111', 'Ethernet10', 'Ethernet11', 'Ethernet12', 'Ethernet13', 'Ethernet58', 'Ethernet19', 'Ethernet59', 'Ethernet38', 'Ethernet78', 'Ethernet68', 'Ethernet14', 'Ethernet89', 'Ethernet88', 'Ethernet118', 'Ethernet119', 'Ethernet116', 'Ethernet114', 'Ethernet80', 'Ethernet112', 'Ethernet86', 'Ethernet110', 'Ethernet84', 'Ethernet31', 'Ethernet49', 'Ethernet48', 'Ethernet46', 'Ethernet30', 'Ethernet29', 'Ethernet40', 'Ethernet120', 'Ethernet28', 'Ethernet66', 'Ethernet60', 'Ethernet64', 'Ethernet44', 'Ethernet20', 'Ethernet79', 'Ethernet69', 'Ethernet24', 'Ethernet26']" @@ -65,21 +65,27 @@ def test_platform_json_interfaces_keys(self): # Check specific Interface with it's proper configuration as per platform.json def test_platform_json_specific_ethernet_interfaces(self): - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet8\']"' + argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet8\']"' output = self.run_script(argument) self.maxDiff = None - expected = "{'index': '3', 'lanes': '8', 'description': 'Eth3/1', 'admin_status': 'up', 'mtu': '9100', 'alias': 'Eth3/1', 'pfc_asym': 'off', 'speed': '25000', 'tpid': '0x8100'}" + expected = "{'index': '3', 'lanes': '8', 'description': 'Eth3/1', 'mtu': '9100', 'alias': 'Eth3/1', 'pfc_asym': 'off', 'speed': '25000', 'tpid': '0x8100'}" self.assertEqual(utils.to_dict(output.strip()), utils.to_dict(expected)) - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet112\']"' + argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet112\']"' output = self.run_script(argument) self.maxDiff = None - expected = "{'index': '29', 'lanes': '112', 'description': 'Eth29/1', 'admin_status': 'up', 'mtu': '9100', 'alias': 'Eth29/1', 'pfc_asym': 'off', 'speed': '25000', 'tpid': '0x8100'}" + expected = "{'index': '29', 'lanes': '112', 'description': 'Eth29/1', 'mtu': '9100', 'alias': 'Eth29/1', 'pfc_asym': 'off', 'speed': '25000', 'tpid': '0x8100'}" self.assertEqual(utils.to_dict(output.strip()), utils.to_dict(expected)) + argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet4\']"' + output = self.run_script(argument) + self.maxDiff = None + expected = "{'index': '2', 'lanes': '4,5', 'description': 'Eth2/1', 'admin_status': 'up', 'mtu': '9100', 'alias': 'Eth2/1', 'pfc_asym': 'off', 'speed': '50000', 'tpid': '0x8100'}" + print(output.strip()) + self.assertEqual(utils.to_dict(output.strip()), utils.to_dict(expected)) # Check all Interface with it's proper configuration as per platform.json def test_platform_json_all_ethernet_interfaces(self): - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT"' + argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT"' output = self.run_script(argument) self.maxDiff = None From db529af20392eec9db69ce6d87de07e0f62a60cd Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Mon, 13 Sep 2021 09:10:21 -0700 Subject: [PATCH 162/186] Removing execute permission from copp config file (#8680) *Removed execute permissions from the systemd copp-config.service file. Without this we will get a warning: "Configuration file /lib/systemd/system/copp-config.service is marked executable. Please remove executable permission bits. Proceeding anyway." --- files/image_config/copp/copp-config.service | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 files/image_config/copp/copp-config.service diff --git a/files/image_config/copp/copp-config.service b/files/image_config/copp/copp-config.service old mode 100755 new mode 100644 From 3434fd6f1cbe77b0b9f1dd56281505d264abe578 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Mon, 13 Sep 2021 11:48:32 -0700 Subject: [PATCH 163/186] Upgrade to 5.10.46 kernel 5.10.46 is what is shipped with Bullseye. Signed-off-by: Saikrishna Arcot --- build_debian.sh | 2 +- installer/x86_64/install.sh | 4 ++-- platform/broadcom/saibcm-modules-dnx | 2 +- platform/broadcom/saibcm-modules/debian/control | 2 +- .../saibcm-modules/debian/opennsl-modules.dirs | 2 +- .../saibcm-modules/debian/opennsl-modules.install | 14 +++++++------- platform/broadcom/saibcm-modules/debian/rules | 4 ++-- rules/linux-kernel.mk | 6 +++--- src/sonic-linux-kernel | 2 +- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/build_debian.sh b/build_debian.sh index 97eeff31861a..f8217a0c162c 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -32,7 +32,7 @@ CONFIGURED_ARCH=$([ -f .arch ] && cat .arch || echo amd64) ## docker engine version (with platform) DOCKER_VERSION=5:20.10.7~3-0~debian-$IMAGE_DISTRO -LINUX_KERNEL_VERSION=5.10.0-7-2 +LINUX_KERNEL_VERSION=5.10.0-8-2 ## Working directory to prepare the file system FILESYSTEM_ROOT=./fsroot diff --git a/installer/x86_64/install.sh b/installer/x86_64/install.sh index 405a5040a3fe..8f1420cd6fa1 100755 --- a/installer/x86_64/install.sh +++ b/installer/x86_64/install.sh @@ -651,13 +651,13 @@ menuentry '$demo_grub_entry' { if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_msdos insmod ext2 - linux /$image_dir/boot/vmlinuz-5.10.0-7-2-amd64 root=$grub_cfg_root rw $GRUB_CMDLINE_LINUX \ + linux /$image_dir/boot/vmlinuz-5.10.0-8-2-amd64 root=$grub_cfg_root rw $GRUB_CMDLINE_LINUX \ net.ifnames=0 biosdevname=0 \ loop=$image_dir/$FILESYSTEM_SQUASHFS loopfstype=squashfs \ systemd.unified_cgroup_hierarchy=0 \ apparmor=1 security=apparmor varlog_size=$VAR_LOG_SIZE usbcore.autosuspend=-1 $ONIE_PLATFORM_EXTRA_CMDLINE_LINUX echo 'Loading $demo_volume_label $demo_type initial ramdisk ...' - initrd /$image_dir/boot/initrd.img-5.10.0-7-2-amd64 + initrd /$image_dir/boot/initrd.img-5.10.0-8-2-amd64 } EOF diff --git a/platform/broadcom/saibcm-modules-dnx b/platform/broadcom/saibcm-modules-dnx index d070b9cca3d1..a353f3fd45e4 160000 --- a/platform/broadcom/saibcm-modules-dnx +++ b/platform/broadcom/saibcm-modules-dnx @@ -1 +1 @@ -Subproject commit d070b9cca3d1233639589fc8b583cdc7e3638690 +Subproject commit a353f3fd45e441b8ce5dc21192c4a19600ad9a98 diff --git a/platform/broadcom/saibcm-modules/debian/control b/platform/broadcom/saibcm-modules/debian/control index 0d81efa96dea..37cf1213432e 100644 --- a/platform/broadcom/saibcm-modules/debian/control +++ b/platform/broadcom/saibcm-modules/debian/control @@ -10,5 +10,5 @@ Standards-Version: 3.9.3 Package: opennsl-modules Architecture: amd64 Section: main -Depends: linux-image-5.10.0-7-2-amd64-unsigned +Depends: linux-image-5.10.0-8-2-amd64-unsigned Description: kernel modules for broadcom SAI diff --git a/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs b/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs index 6274005e75d5..2b3124646272 100644 --- a/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs +++ b/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs @@ -1 +1 @@ -lib/modules/5.10.0-7-2-amd64/extra +lib/modules/5.10.0-8-2-amd64/extra diff --git a/platform/broadcom/saibcm-modules/debian/opennsl-modules.install b/platform/broadcom/saibcm-modules/debian/opennsl-modules.install index 138d1d238eeb..a755c77e2408 100644 --- a/platform/broadcom/saibcm-modules/debian/opennsl-modules.install +++ b/platform/broadcom/saibcm-modules/debian/opennsl-modules.install @@ -1,8 +1,8 @@ -systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-knet.ko lib/modules/5.10.0-7-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-kernel-bde.ko lib/modules/5.10.0-7-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-user-bde.ko lib/modules/5.10.0-7-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-knet-cb.ko lib/modules/5.10.0-7-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/psample.ko lib/modules/5.10.0-7-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-ptp-clock.ko lib/modules/5.10.0-7-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-knet.ko lib/modules/5.10.0-8-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-kernel-bde.ko lib/modules/5.10.0-8-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-user-bde.ko lib/modules/5.10.0-8-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-knet-cb.ko lib/modules/5.10.0-8-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/psample.ko lib/modules/5.10.0-8-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-ptp-clock.ko lib/modules/5.10.0-8-2-amd64/extra systemd/opennsl-modules.service lib/systemd/system -sdklt/linux/bde/linux_ngbde.ko lib/modules/5.10.0-7-2-amd64/extra +sdklt/linux/bde/linux_ngbde.ko lib/modules/5.10.0-8-2-amd64/extra diff --git a/platform/broadcom/saibcm-modules/debian/rules b/platform/broadcom/saibcm-modules/debian/rules index 69efb6b36008..c067b7e7dfd8 100755 --- a/platform/broadcom/saibcm-modules/debian/rules +++ b/platform/broadcom/saibcm-modules/debian/rules @@ -34,8 +34,8 @@ sname:=opennsl PACKAGE=opennsl-modules # modifieable for experiments or debugging m-a MA_DIR ?= /usr/share/modass -KVERSION ?= 5.10.0-7-2-amd64 -KERNVERSION ?= 5.10.0-7-2 +KVERSION ?= 5.10.0-8-2-amd64 +KERNVERSION ?= 5.10.0-8-2 # load generic variable handling -include $(MA_DIR)/include/generic.make diff --git a/rules/linux-kernel.mk b/rules/linux-kernel.mk index 5bc3d59c12b2..b8fb093dd318 100644 --- a/rules/linux-kernel.mk +++ b/rules/linux-kernel.mk @@ -1,9 +1,9 @@ # linux kernel package -KVERSION_SHORT = 5.10.0-7-2 +KVERSION_SHORT = 5.10.0-8-2 KVERSION = $(KVERSION_SHORT)-$(CONFIGURED_ARCH) -KERNEL_VERSION = 5.10.40 -KERNEL_SUBVERSION = 1 +KERNEL_VERSION = 5.10.46 +KERNEL_SUBVERSION = 4 ifeq ($(CONFIGURED_ARCH), armhf) # Override kernel version for ARMHF as it uses arm MP (multi-platform) for short version KVERSION = $(KVERSION_SHORT)-armmp diff --git a/src/sonic-linux-kernel b/src/sonic-linux-kernel index 403f0b4da031..d66e80bb17ba 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit 403f0b4da03114193e02243bbcfd9d7ab2c405e6 +Subproject commit d66e80bb17ba53b65f6c882ab73ea4d9e89a1e69 From 690f6ad88361bb9e9bdcbb73a5d92959701e4638 Mon Sep 17 00:00:00 2001 From: Kostiantyn Yarovyi Date: Tue, 14 Sep 2021 17:34:00 +0300 Subject: [PATCH 164/186] [show] add platform components in Newport, Montara, Mavericks for fix incomprehensible firmware Error print (#8690) What I did: add platform components How I did it: In platform_components.json add chassis and empty component How to verify it: Run show platform firmware updates --- .../x86_64-accton_as9516_32d-r0/platform_components.json | 8 ++++++++ .../platform_components.json | 8 ++++++++ .../platform_components.json | 8 ++++++++ 3 files changed, 24 insertions(+) create mode 100644 device/barefoot/x86_64-accton_as9516_32d-r0/platform_components.json create mode 100644 device/barefoot/x86_64-accton_wedge100bf_32x-r0/platform_components.json create mode 100644 device/barefoot/x86_64-accton_wedge100bf_65x-r0/platform_components.json diff --git a/device/barefoot/x86_64-accton_as9516_32d-r0/platform_components.json b/device/barefoot/x86_64-accton_as9516_32d-r0/platform_components.json new file mode 100644 index 000000000000..43874566a3ad --- /dev/null +++ b/device/barefoot/x86_64-accton_as9516_32d-r0/platform_components.json @@ -0,0 +1,8 @@ +{ + "chassis": { + "Newport": { + "component": { + } + } + } +} \ No newline at end of file diff --git a/device/barefoot/x86_64-accton_wedge100bf_32x-r0/platform_components.json b/device/barefoot/x86_64-accton_wedge100bf_32x-r0/platform_components.json new file mode 100644 index 000000000000..df77fa3e1bf9 --- /dev/null +++ b/device/barefoot/x86_64-accton_wedge100bf_32x-r0/platform_components.json @@ -0,0 +1,8 @@ +{ + "chassis": { + "Wedge100BF-32X-O-AC-F-BF": { + "component": { + } + } + } +} \ No newline at end of file diff --git a/device/barefoot/x86_64-accton_wedge100bf_65x-r0/platform_components.json b/device/barefoot/x86_64-accton_wedge100bf_65x-r0/platform_components.json new file mode 100644 index 000000000000..74e851a7c4b6 --- /dev/null +++ b/device/barefoot/x86_64-accton_wedge100bf_65x-r0/platform_components.json @@ -0,0 +1,8 @@ +{ + "chassis": { + "Wedge100BF-65X-O-AC-F-BF": { + "component": { + } + } + } +} \ No newline at end of file From 66ca6d33c7004cd97ce3a8e9b96634e725a1ae5c Mon Sep 17 00:00:00 2001 From: Ying Xie Date: Tue, 14 Sep 2021 07:57:43 -0700 Subject: [PATCH 165/186] Revert "Revert "[hostcfgd] Delay hostcfgd and aaastatsd for faster boot time (#7965)" (#8705)" (#8724) This reverts commit f4dea87cf97a78bd200a092da2193553c13a0494. --- .../debian/sonic-host-services-data.aaastatsd.service | 3 --- .../debian/sonic-host-services-data.aaastatsd.timer | 11 +++++++++++ .../debian/sonic-host-services-data.hostcfgd.service | 3 --- .../debian/sonic-host-services-data.hostcfgd.timer | 11 +++++++++++ 4 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer create mode 100644 src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service index b03c6a9551c0..b93fe92c04ed 100644 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service @@ -12,6 +12,3 @@ Restart=on-failure RestartSec=10 TimeoutStopSec=3 -[Install] -WantedBy=sonic.target - diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer new file mode 100644 index 000000000000..e0458ff326f5 --- /dev/null +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Delays aaastatsd daemon until SONiC has started +PartOf=aaastatsd.service + +[Timer] +OnActiveSec=1min 30 sec +Unit=aaastatsd.service + +[Install] +WantedBy=timers.target sonic.target + diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service index 4adf2aba77ad..5e2434527124 100644 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service @@ -9,6 +9,3 @@ After=sonic.target Type=simple ExecStart=/usr/local/bin/hostcfgd -[Install] -WantedBy=sonic.target - diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer new file mode 100644 index 000000000000..baf80f4b4cbd --- /dev/null +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Delays hostcfgd daemon until SONiC has started +PartOf=hostcfgd.service + +[Timer] +OnActiveSec=1min 30 sec +Unit=hostcfgd.service + +[Install] +WantedBy=timers.target sonic.target + From dc76879bdd46dd6fa2a61197231b0497d9aec1c3 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Tue, 14 Sep 2021 10:16:46 -0700 Subject: [PATCH 166/186] Update SAI module for Celestica for Bullseye and 5.10 kernel Signed-off-by: Saikrishna Arcot --- platform/broadcom/rules.mk | 2 +- .../sonic-platform-modules-cel/debian/control | 8 ++--- .../debian/platform-modules-dx010.install | 1 - .../platform-modules-haliburton.install | 3 +- .../debian/platform-modules-seastone2.install | 4 +-- .../platform-modules-silverstone.install | 2 +- .../sonic-platform-modules-cel/debian/rules | 2 -- .../dx010/modules/leds-dx010.c | 1 + .../dx010/modules/mc24lc64t.c | 2 +- .../haliburton/modules/mc24lc64t.c | 2 +- .../haliburton/modules/smc.c | 1 + .../seastone2/modules/switchboard_fpga.c | 30 +++++++++---------- .../silverstone/modules/switchboard.c | 30 +++++++++---------- 13 files changed, 43 insertions(+), 45 deletions(-) diff --git a/platform/broadcom/rules.mk b/platform/broadcom/rules.mk index 7af31c77ccbd..78b7358815c8 100644 --- a/platform/broadcom/rules.mk +++ b/platform/broadcom/rules.mk @@ -7,7 +7,7 @@ include $(PLATFORM_PATH)/platform-modules-nokia.mk #include $(PLATFORM_PATH)/platform-modules-accton.mk #include $(PLATFORM_PATH)/platform-modules-alphanetworks.mk #include $(PLATFORM_PATH)/platform-modules-inventec.mk -#include $(PLATFORM_PATH)/platform-modules-cel.mk +include $(PLATFORM_PATH)/platform-modules-cel.mk #include $(PLATFORM_PATH)/platform-modules-delta.mk #include $(PLATFORM_PATH)/platform-modules-quanta.mk ##include $(PLATFORM_PATH)/platform-modules-mitac.mk diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/control b/platform/broadcom/sonic-platform-modules-cel/debian/control index a41f92ab54e9..48ae0ed83735 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/control +++ b/platform/broadcom/sonic-platform-modules-cel/debian/control @@ -7,21 +7,21 @@ Standards-Version: 3.9.3 Package: platform-modules-dx010 Architecture: amd64 -Depends: linux-image-4.19.0-12-2-amd64-unsigned +Depends: linux-image-5.10.0-8-2-amd64-unsigned Description: kernel modules for platform devices such as fan, led, sfp Package: platform-modules-haliburton Architecture: amd64 -Depends: linux-image-4.19.0-12-2-amd64-unsigned +Depends: linux-image-5.10.0-8-2-amd64-unsigned Description: kernel modules for platform devices such as fan, led, sfp Package: platform-modules-seastone2 Architecture: amd64 -Depends: linux-image-4.19.0-12-2-amd64-unsigned +Depends: linux-image-5.10.0-8-2-amd64-unsigned Description: kernel modules for platform devices such as led, sfp Package: platform-modules-silverstone Architecture: amd64 -Depends: linux-image-4.19.0-12-2-amd64-unsigned +Depends: linux-image-5.10.0-8-2-amd64-unsigned Description: kernel modules for platform devices such as led, sfp. diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.install b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.install index 98c17e55a980..4698507c6b9d 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.install +++ b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.install @@ -4,6 +4,5 @@ dx010/systemd/platform-modules-dx010.service lib/systemd/system dx010/scripts/fancontrol.sh etc/init.d dx010/scripts/fancontrol.service lib/systemd/system services/fancontrol/fancontrol usr/local/bin -dx010/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-cel_seastone-r0 dx010/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-cel_seastone-r0 services/platform_api/platform_api_mgnt.sh usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-haliburton.install b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-haliburton.install index 8788480d9399..6c58afe6d55e 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-haliburton.install +++ b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-haliburton.install @@ -3,10 +3,9 @@ haliburton/systemd/platform-modules-haliburton.service lib/systemd/system haliburton/script/fancontrol.sh etc/init.d haliburton/script/fancontrol.service lib/systemd/system services/fancontrol/fancontrol usr/local/bin -haliburton/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-cel_e1031-r0 haliburton/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-cel_e1031-r0 services/platform_api/platform_api_mgnt.sh usr/local/bin haliburton/script/popmsg.sh usr/local/bin haliburton/script/udev_prefix.sh usr/local/bin haliburton/script/reload_udev.sh usr/local/bin -haliburton/script/50-ttyUSB-C0.rules etc/udev/rules.d \ No newline at end of file +haliburton/script/50-ttyUSB-C0.rules etc/udev/rules.d diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-seastone2.install b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-seastone2.install index 41a381eeb0ce..31fc4fd3bd6d 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-seastone2.install +++ b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-seastone2.install @@ -1,4 +1,4 @@ seastone2/cfg/seastone2-modules.conf etc/modules-load.d seastone2/systemd/platform-modules-seastone2.service lib/systemd/system -seastone2/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-cel_seastone_2-r0 -services/platform_api/platform_api_mgnt.sh usr/local/bin \ No newline at end of file +seastone2/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-cel_seastone_2-r0 +services/platform_api/platform_api_mgnt.sh usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-silverstone.install b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-silverstone.install index 67b433ced85f..73fa4b90a4fc 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-silverstone.install +++ b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-silverstone.install @@ -2,5 +2,5 @@ silverstone/scripts/sensors usr/bin silverstone/scripts/platform_sensors.py usr/local/bin silverstone/cfg/silverstone-modules.conf etc/modules-load.d silverstone/systemd/platform-modules-silverstone.service lib/systemd/system -silverstone/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-cel_silverstone-r0 +silverstone/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-cel_silverstone-r0 services/platform_api/platform_api_mgnt.sh usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/rules b/platform/broadcom/sonic-platform-modules-cel/debian/rules index efb5aa47b437..3a6ef1bfdbef 100755 --- a/platform/broadcom/sonic-platform-modules-cel/debian/rules +++ b/platform/broadcom/sonic-platform-modules-cel/debian/rules @@ -15,12 +15,10 @@ override_dh_auto_build: make -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules; \ if [ $$mod = "seastone2" ]; then \ cd services/platform_api; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ continue; \ fi; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ done) diff --git a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/leds-dx010.c b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/leds-dx010.c index fac8322f06b0..c1693a37e3c1 100644 --- a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/leds-dx010.c +++ b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/leds-dx010.c @@ -18,6 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/mc24lc64t.c b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/mc24lc64t.c index a391056d09a7..002172f587e8 100644 --- a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/mc24lc64t.c +++ b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/mc24lc64t.c @@ -94,7 +94,7 @@ static int mc24lc64t_probe(struct i2c_client *client, sizeof(struct mc24lc64t_data), GFP_KERNEL))) return -ENOMEM; - drvdata->fake_client = i2c_new_dummy(client->adapter, client->addr + 1); + drvdata->fake_client = i2c_new_dummy_device(client->adapter, client->addr + 1); if (!drvdata->fake_client) return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/mc24lc64t.c b/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/mc24lc64t.c index a391056d09a7..002172f587e8 100644 --- a/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/mc24lc64t.c +++ b/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/mc24lc64t.c @@ -94,7 +94,7 @@ static int mc24lc64t_probe(struct i2c_client *client, sizeof(struct mc24lc64t_data), GFP_KERNEL))) return -ENOMEM; - drvdata->fake_client = i2c_new_dummy(client->adapter, client->addr + 1); + drvdata->fake_client = i2c_new_dummy_device(client->adapter, client->addr + 1); if (!drvdata->fake_client) return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/smc.c b/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/smc.c index 7ec9753066b3..b38b8ea68f1e 100644 --- a/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/smc.c +++ b/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/smc.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include diff --git a/platform/broadcom/sonic-platform-modules-cel/seastone2/modules/switchboard_fpga.c b/platform/broadcom/sonic-platform-modules-cel/seastone2/modules/switchboard_fpga.c index 5918d27f3911..a30265616e6e 100644 --- a/platform/broadcom/sonic-platform-modules-cel/seastone2/modules/switchboard_fpga.c +++ b/platform/broadcom/sonic-platform-modules-cel/seastone2/modules/switchboard_fpga.c @@ -1870,7 +1870,7 @@ static struct i2c_adapter * seastone2_i2c_init(struct platform_device *pdev, if (!new_data) { printk(KERN_ALERT "Cannot alloc i2c data for %s", fpga_i2c_bus_dev[portid].calling_name); - kzfree(new_adapter); + kfree_sensitive(new_adapter); return NULL; } @@ -1889,8 +1889,8 @@ static struct i2c_adapter * seastone2_i2c_init(struct platform_device *pdev, error = i2c_add_numbered_adapter(new_adapter); if (error < 0) { printk(KERN_ALERT "Cannot add i2c adapter %s", new_data->pca9548.calling_name); - kzfree(new_adapter); - kzfree(new_data); + kfree_sensitive(new_adapter); + kfree_sensitive(new_data); return NULL; } @@ -1936,7 +1936,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) fpga = kobject_create_and_add("FPGA", &pdev->dev.kobj); if (!fpga) { - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } @@ -1944,7 +1944,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) if (ret != 0) { printk(KERN_ERR "Cannot create FPGA sysfs attributes\n"); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1952,7 +1952,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) if (!cpld1) { sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } ret = sysfs_create_group(cpld1, &cpld1_attr_grp); @@ -1961,7 +1961,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1971,7 +1971,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } ret = sysfs_create_group(cpld2, &cpld2_attr_grp); @@ -1982,7 +1982,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1995,7 +1995,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return PTR_ERR(sff_dev); } @@ -2009,7 +2009,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -2023,7 +2023,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -2040,9 +2040,9 @@ static int seastone2_drv_probe(struct platform_device *pdev) sff_data = dev_get_drvdata(fpga_data->sff_devices[portid_count]); BUG_ON(sff_data == NULL); if ( sff_data->port_type == QSFP ) { - fpga_data->sff_i2c_clients[portid_count] = i2c_new_device(i2c_adap, &sff8436_eeprom_info[0]); + fpga_data->sff_i2c_clients[portid_count] = i2c_new_client_device(i2c_adap, &sff8436_eeprom_info[0]); } else { - fpga_data->sff_i2c_clients[portid_count] = i2c_new_device(i2c_adap, &sff8436_eeprom_info[1]); + fpga_data->sff_i2c_clients[portid_count] = i2c_new_client_device(i2c_adap, &sff8436_eeprom_info[1]); } sff_data = NULL; sysfs_create_link(&fpga_data->sff_devices[portid_count]->kobj, @@ -2362,4 +2362,4 @@ module_exit(seastone2_exit); MODULE_AUTHOR("Pradchaya P. "); MODULE_DESCRIPTION("Celestica Seastone2 switchboard driver"); MODULE_VERSION(MOD_VERSION); -MODULE_LICENSE("GPL"); \ No newline at end of file +MODULE_LICENSE("GPL"); diff --git a/platform/broadcom/sonic-platform-modules-cel/silverstone/modules/switchboard.c b/platform/broadcom/sonic-platform-modules-cel/silverstone/modules/switchboard.c index 2ee6c858a8b6..e41b64badefc 100644 --- a/platform/broadcom/sonic-platform-modules-cel/silverstone/modules/switchboard.c +++ b/platform/broadcom/sonic-platform-modules-cel/silverstone/modules/switchboard.c @@ -1604,7 +1604,7 @@ static struct i2c_adapter * silverstone_i2c_init(struct platform_device *pdev, i new_data = kzalloc(sizeof(*new_data), GFP_KERNEL); if (!new_data) { printk(KERN_ALERT "Cannot alloc i2c data for %s", fpga_i2c_bus_dev[portid].calling_name); - kzfree(new_adapter); + kfree_sensitive(new_adapter); return NULL; } @@ -1623,8 +1623,8 @@ static struct i2c_adapter * silverstone_i2c_init(struct platform_device *pdev, i error = i2c_add_numbered_adapter(new_adapter); if (error < 0) { printk(KERN_ALERT "Cannot add i2c adapter %s", new_data->pca9548.calling_name); - kzfree(new_adapter); - kzfree(new_data); + kfree_sensitive(new_adapter); + kfree_sensitive(new_data); return NULL; } @@ -1685,7 +1685,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) fpga = kobject_create_and_add("FPGA", &pdev->dev.kobj); if (!fpga) { - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } @@ -1693,7 +1693,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) if (ret != 0) { printk(KERN_ERR "Cannot create FPGA sysfs attributes\n"); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1701,7 +1701,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) if (!cpld1) { sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } ret = sysfs_create_group(cpld1, &cpld1_attr_grp); @@ -1710,7 +1710,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1720,7 +1720,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } ret = sysfs_create_group(cpld2, &cpld2_attr_grp); @@ -1731,7 +1731,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1744,7 +1744,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return PTR_ERR(sff_dev); } @@ -1758,7 +1758,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1772,7 +1772,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1788,9 +1788,9 @@ static int silverstone_drv_probe(struct platform_device *pdev) sff_data = dev_get_drvdata(fpga_data->sff_devices[portid_count]); BUG_ON(sff_data == NULL); if ( sff_data->port_type == QSFP ) { - fpga_data->sff_i2c_clients[portid_count] = i2c_new_device(i2c_adap, &sff8436_eeprom_info[0]); + fpga_data->sff_i2c_clients[portid_count] = i2c_new_client_device(i2c_adap, &sff8436_eeprom_info[0]); } else { - fpga_data->sff_i2c_clients[portid_count] = i2c_new_device(i2c_adap, &sff8436_eeprom_info[1]); + fpga_data->sff_i2c_clients[portid_count] = i2c_new_client_device(i2c_adap, &sff8436_eeprom_info[1]); } sff_data = NULL; sysfs_create_link(&fpga_data->sff_devices[portid_count]->kobj, @@ -2103,4 +2103,4 @@ module_exit(silverstone_exit); MODULE_AUTHOR("Celestica Inc."); MODULE_DESCRIPTION("Celestica Silverstone platform driver"); MODULE_VERSION(MOD_VERSION); -MODULE_LICENSE("GPL"); \ No newline at end of file +MODULE_LICENSE("GPL"); From 1863e1fa26649b16b03a2e47a8493cbcb99ab052 Mon Sep 17 00:00:00 2001 From: vganesan-nokia <67648637+vganesan-nokia@users.noreply.github.com> Date: Tue, 14 Sep 2021 14:04:19 -0400 Subject: [PATCH 167/186] [multi-asic][cli][chassis-db] Avoid connecting to chassis db when cli commands are executed from linecards (#8065) * [multi-asic][cli][chassis-db] Avoiding connecting to chassis db Currently, for all the cli commands, we connect to all databases mentioned in the database_config.json. The database_config.json also includes the databases from chassis redis server from supervisor card. It is unneccessary to connect to databases from chassis redis server when cli commands are executed form linecard. But we need to allow connection to chassis databases when the cli commands are executed from supervisor card. The changes in this PR fixes this problem. This PR requires that asic.conf in supervisor card includes VOQ_SUPERVISOR with value 1 to indentify the supervisor card. The connect_to_all_dbs_for_ns() is changed to skip chassis databases form the list of collected databases if the card is not supervisor card. --- .../sonic_py_common/device_info.py | 40 +++++++++++++++++++ .../sonic_py_common/multi_asic.py | 17 +++++++- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/src/sonic-py-common/sonic_py_common/device_info.py b/src/sonic-py-common/sonic_py_common/device_info.py index 4d1df6352284..0b58a4231a65 100644 --- a/src/sonic-py-common/sonic_py_common/device_info.py +++ b/src/sonic-py-common/sonic_py_common/device_info.py @@ -29,6 +29,7 @@ NPU_NAME_PREFIX = "asic" NAMESPACE_PATH_GLOB = "/run/netns/*" ASIC_CONF_FILENAME = "asic.conf" +PLATFORM_ENV_CONF_FILENAME = "platform_env.conf" FRONTEND_ASIC_SUB_ROLE = "FrontEnd" BACKEND_ASIC_SUB_ROLE = "BackEnd" @@ -164,6 +165,29 @@ def get_asic_conf_file_path(): return None +def get_platform_env_conf_file_path(): + """ + Retrieves the path to the PLATFORM ENV conguration file on the device + + Returns: + A string containing the path to the PLATFORM ENV conguration file on success, + None on failure + """ + platform_env_conf_path_candidates = [] + + platform_env_conf_path_candidates.append(os.path.join(CONTAINER_PLATFORM_PATH, PLATFORM_ENV_CONF_FILENAME)) + + platform = get_platform() + if platform: + platform_env_conf_path_candidates.append(os.path.join(HOST_DEVICE_PATH, platform, PLATFORM_ENV_CONF_FILENAME)) + + for platform_env_conf_file_path in platform_env_conf_path_candidates: + if os.path.isfile(platform_env_conf_file_path): + return platform_env_conf_file_path + + return None + + def get_path_to_platform_dir(): """ Retreives the paths to the device's platform directory @@ -374,6 +398,22 @@ def is_multi_npu(): return (num_npus > 1) +def is_supervisor(): + platform_env_conf_file_path = get_platform_env_conf_file_path() + if platform_env_conf_file_path is None: + return False + with open(platform_env_conf_file_path) as platform_env_conf_file: + for line in platform_env_conf_file: + tokens = line.split('=') + if len(tokens) < 2: + continue + if tokens[0].lower() == 'supervisor': + val = tokens[1].strip() + if val == '1': + return True + return False + + def get_npu_id_from_name(npu_name): if npu_name.startswith(NPU_NAME_PREFIX): return npu_name[len(NPU_NAME_PREFIX):] diff --git a/src/sonic-py-common/sonic_py_common/multi_asic.py b/src/sonic-py-common/sonic_py_common/multi_asic.py index f6daba8e84a2..a5b5d48bab21 100644 --- a/src/sonic-py-common/sonic_py_common/multi_asic.py +++ b/src/sonic-py-common/sonic_py_common/multi_asic.py @@ -8,6 +8,7 @@ from .device_info import CONTAINER_PLATFORM_PATH from .device_info import HOST_DEVICE_PATH from .device_info import get_platform +from .device_info import is_supervisor ASIC_NAME_PREFIX = 'asic' NAMESPACE_PATH_GLOB = '/run/netns/*' @@ -45,7 +46,11 @@ def connect_config_db_for_ns(namespace=DEFAULT_NAMESPACE): def connect_to_all_dbs_for_ns(namespace=DEFAULT_NAMESPACE): """ The function connects to the DBs for a given namespace and - returns the handle + returns the handle + + For voq chassis systems, the db list includes databases from + supervisor card. Avoid connecting to these databases from linecards + If no namespace is provided, it will connect to the db in the default namespace. In case of multi ASIC, the default namespace is the @@ -56,7 +61,15 @@ def connect_to_all_dbs_for_ns(namespace=DEFAULT_NAMESPACE): handle to all the dbs for a namespaces """ db = swsscommon.SonicV2Connector(namespace=namespace) - for db_id in db.get_db_list(): + db_list = list(db.get_db_list()) + if not is_supervisor(): + try: + db_list.remove('CHASSIS_APP_DB') + db_list.remove('CHASSIS_STATE_DB') + except Exception: + pass + + for db_id in db_list: db.connect(db_id) return db From 375fda21fd6df2f634a567605530857833e48cf2 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Wed, 15 Sep 2021 09:52:15 -0700 Subject: [PATCH 168/186] Update src/sonic-linux-kernel to bring in UDP sockets patch Signed-off-by: Saikrishna Arcot --- 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 d66e80bb17ba..73413db57026 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit d66e80bb17ba53b65f6c882ab73ea4d9e89a1e69 +Subproject commit 73413db570261cee72cb6add39da6410fb929586 From 2662a19eecbc1b87b2845af6b9ebcf3c38d1ffb4 Mon Sep 17 00:00:00 2001 From: Lior Avramov <73036155+liorghub@users.noreply.github.com> Date: Thu, 16 Sep 2021 00:00:43 +0300 Subject: [PATCH 169/186] [sonic-py-swsssdk]: submodule update (#8757) 2cd6236 [voq][chassis] Fix for issue in chassis redis server connection check (#110) 9da577d [port_util] Fix issue in function get_interface_oid_map (#114) 740a44c [port_util] Allow system without ports in config db run without errors (#109) d07682e Merge pull request #111 from xumia/azp-coverage 482cac2 [Ethernet-IB][index] Modifed the port_util to support the VoQ Inband Port (#113) 69eac92 Support azp diff coverage Signed-off-by: liora --- src/sonic-py-swsssdk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-py-swsssdk b/src/sonic-py-swsssdk index 6be76f45705f..2cd6236849d1 160000 --- a/src/sonic-py-swsssdk +++ b/src/sonic-py-swsssdk @@ -1 +1 @@ -Subproject commit 6be76f45705f35ae7a8baefea801558511cd68e7 +Subproject commit 2cd6236849d194625c014d1c2c370f6d2513eb76 From 8a00ad73fd071e6e5f13319587f7f2432acd4acf Mon Sep 17 00:00:00 2001 From: Junhua Zhai Date: Thu, 16 Sep 2021 05:02:03 +0800 Subject: [PATCH 170/186] [gearbox] support gearbox feature on docker-sonic-vs (#8765) --- .../brcm_gearbox_vs/context_config.json | 8 +++++++- platform/vs/docker-sonic-vs/Dockerfile.j2 | 1 + platform/vs/docker-sonic-vs/start.sh | 5 +++++ platform/vs/docker-sonic-vs/supervisord.conf | 17 +++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/context_config.json b/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/context_config.json index 9f9f80ba0d36..106087f7275c 100644 --- a/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/context_config.json +++ b/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/context_config.json @@ -7,6 +7,9 @@ "dbCounters" : "COUNTERS_DB", "dbFlex": "FLEX_COUNTER_DB", "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", "switches": [ { "index" : 0, @@ -21,10 +24,13 @@ "dbCounters" : "GB_COUNTERS_DB", "dbFlex": "GB_FLEX_COUNTER_DB", "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5565", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5566", "switches": [ { "index" : 1, - "hwinfo" : "" + "hwinfo": "mdio0_0_0/0" } ] } diff --git a/platform/vs/docker-sonic-vs/Dockerfile.j2 b/platform/vs/docker-sonic-vs/Dockerfile.j2 index 2e11cdaea3db..ab686d3a13de 100644 --- a/platform/vs/docker-sonic-vs/Dockerfile.j2 +++ b/platform/vs/docker-sonic-vs/Dockerfile.j2 @@ -175,6 +175,7 @@ COPY ["buffermgrd.sh", "/usr/bin/"] COPY ["platform.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/"] COPY ["hwsku.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/Force10-S6000/"] +COPY ["hwsku.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/"] # Workaround the tcpdump issue RUN mv /usr/sbin/tcpdump /usr/bin/tcpdump diff --git a/platform/vs/docker-sonic-vs/start.sh b/platform/vs/docker-sonic-vs/start.sh index 93c9cf479d69..047918d2e518 100755 --- a/platform/vs/docker-sonic-vs/start.sh +++ b/platform/vs/docker-sonic-vs/start.sh @@ -109,6 +109,11 @@ fi /usr/bin/configdb-load.sh +if [ "$HWSKU" = "brcm_gearbox_vs" ]; then + supervisorctl start gbsyncd + supervisorctl start gearsyncd +fi + supervisorctl start syncd supervisorctl start portsyncd diff --git a/platform/vs/docker-sonic-vs/supervisord.conf b/platform/vs/docker-sonic-vs/supervisord.conf index 977b84117e3e..96f027131520 100644 --- a/platform/vs/docker-sonic-vs/supervisord.conf +++ b/platform/vs/docker-sonic-vs/supervisord.conf @@ -43,6 +43,23 @@ autorestart=false stdout_logfile=syslog stderr_logfile=syslog +[program:gbsyncd] +command=/usr/bin/syncd -s -p /usr/share/sonic/hwsku/pai.profile -x /usr/share/sonic/hwsku/context_config.json -g 1 +priority=4 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:gearsyncd] +command=/usr/bin/gearsyncd -p /usr/share/sonic/hwsku/gearbox_config.json +startsecs=0 +priority=5 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + [program:portsyncd] command=/usr/bin/portsyncd priority=5 From 13ec43bc68416e382fe9f44ad3be94310a94a11e Mon Sep 17 00:00:00 2001 From: abdosi <58047199+abdosi@users.noreply.github.com> Date: Wed, 15 Sep 2021 23:28:27 -0700 Subject: [PATCH 171/186] [baseimage]: Logrotate for wtmp and btmp files. (#8743) Added logrotate file for wtmp and btmp to override default conf and set size cap as 100K as done in PR: #865. For buster this is control by separate file wtmp and btmp. Signed-off-by: Abhishek Dosi --- files/image_config/logrotate/logrotate.d/btmp | 7 +++++++ files/image_config/logrotate/logrotate.d/wtmp | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 files/image_config/logrotate/logrotate.d/btmp create mode 100644 files/image_config/logrotate/logrotate.d/wtmp diff --git a/files/image_config/logrotate/logrotate.d/btmp b/files/image_config/logrotate/logrotate.d/btmp new file mode 100644 index 000000000000..e3554d3e6773 --- /dev/null +++ b/files/image_config/logrotate/logrotate.d/btmp @@ -0,0 +1,7 @@ +# no packages own btmp -- we'll rotate it here +/var/log/btmp { + missingok + size 100k + create 0660 root utmp + rotate 1 +} diff --git a/files/image_config/logrotate/logrotate.d/wtmp b/files/image_config/logrotate/logrotate.d/wtmp new file mode 100644 index 000000000000..8eb2663e6b66 --- /dev/null +++ b/files/image_config/logrotate/logrotate.d/wtmp @@ -0,0 +1,7 @@ +# no packages own wtmp -- we'll rotate it here +/var/log/wtmp { + missingok + size 100k + create 0664 root utmp + rotate 1 +} From 83e78761e615d5419eff120de9ace45455b86d48 Mon Sep 17 00:00:00 2001 From: dflynn-Nokia <60479697+dflynn-Nokia@users.noreply.github.com> Date: Thu, 16 Sep 2021 05:07:06 -0400 Subject: [PATCH 172/186] [Nokia ixs7215] Add support for SFP eeprom type_abbrv_name attribute (#8772) --- .../7215/sonic_platform/fan_drawer.py | 18 +++++- .../7215/sonic_platform/sfp.py | 55 ++++++++++++------- 2 files changed, 52 insertions(+), 21 deletions(-) diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py index e42d80cdbd52..6c6218f0a794 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py @@ -54,9 +54,25 @@ def get_direction(self): return 'intake' def set_status_led(self, color): + """ + Sets the state of the fan drawer status LED + + Args: + color: A string representing the color with which to set the + fan drawer status LED + + Returns: + bool: True if status LED state is set successfully, False if not + """ return self._fan_list[0].set_status_led(color) - def get_status_led(self, color): + def get_status_led(self): + """ + Gets the state of the fan drawer LED + + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings + """ return self._fan_list[0].get_status_led() def is_replaceable(self): diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py index 308e8b29a60b..244e48e1e639 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py @@ -143,7 +143,7 @@ def __init__(self, index, sfp_type, eeprom_path, port_i2c_map): 'model', 'connector', 'encoding', 'ext_identifier', 'ext_rateselect_compliance', 'cable_type', 'cable_length', 'nominal_bit_rate', 'specification_compliance', - 'vendor_date', 'vendor_oui'] + 'type_abbrv_name', 'vendor_date', 'vendor_oui'] self.dom_dict_keys = ['rx_los', 'tx_fault', 'reset_status', 'power_lpmode', 'tx_disable', 'tx_disable_channel', 'temperature', @@ -274,6 +274,7 @@ def get_transceiver_info(self): cable_length |INT |cable length in m nominal_bit_rate |INT |nominal bit rate by 100Mbs specification_compliance |1*255VCHAR |specification compliance + type_abbrv_name |1*255VCHAR |type of SFP (abbreviated) vendor_date |1*255VCHAR |vendor date vendor_oui |1*255VCHAR |vendor OUI application_advertisement |1*255VCHAR |supported applications advertisement @@ -338,33 +339,47 @@ def get_transceiver_info(self): end = start + XCVR_VENDOR_DATE_WIDTH sfp_vendor_date_data = sfpi_obj.parse_vendor_date( sfp_interface_bulk_raw[start: end], 0) - transceiver_info_dict['type'] = sfp_interface_bulk_data['data']['type']['value'] - transceiver_info_dict['manufacturer'] = sfp_vendor_name_data['data']['Vendor Name']['value'] - transceiver_info_dict['model'] = sfp_vendor_pn_data['data']['Vendor PN']['value'] - transceiver_info_dict['hardware_rev'] = sfp_vendor_rev_data['data']['Vendor Rev']['value'] - transceiver_info_dict['serial'] = sfp_vendor_sn_data['data']['Vendor SN']['value'] - transceiver_info_dict['vendor_oui'] = sfp_vendor_oui_data['data']['Vendor OUI']['value'] - transceiver_info_dict['vendor_date'] = sfp_vendor_date_data[ - 'data']['VendorDataCode(YYYY-MM-DD Lot)']['value'] - transceiver_info_dict['connector'] = sfp_interface_bulk_data['data']['Connector']['value'] - transceiver_info_dict['encoding'] = sfp_interface_bulk_data['data']['EncodingCodes']['value'] - transceiver_info_dict['ext_identifier'] = sfp_interface_bulk_data['data']['Extended Identifier']['value'] - transceiver_info_dict['ext_rateselect_compliance'] = sfp_interface_bulk_data['data']['RateIdentifier']['value'] + + transceiver_info_dict['type'] = sfp_interface_bulk_data \ + ['data']['type']['value'] + transceiver_info_dict['manufacturer'] = sfp_vendor_name_data \ + ['data']['Vendor Name']['value'] + transceiver_info_dict['model'] = sfp_vendor_pn_data \ + ['data']['Vendor PN']['value'] + transceiver_info_dict['hardware_rev'] = sfp_vendor_rev_data \ + ['data']['Vendor Rev']['value'] + transceiver_info_dict['serial'] = sfp_vendor_sn_data \ + ['data']['Vendor SN']['value'] + transceiver_info_dict['vendor_oui'] = sfp_vendor_oui_data \ + ['data']['Vendor OUI']['value'] + transceiver_info_dict['vendor_date'] = sfp_vendor_date_data \ + ['data']['VendorDataCode(YYYY-MM-DD Lot)']['value'] + transceiver_info_dict['connector'] = sfp_interface_bulk_data \ + ['data']['Connector']['value'] + transceiver_info_dict['encoding'] = sfp_interface_bulk_data \ + ['data']['EncodingCodes']['value'] + transceiver_info_dict['ext_identifier'] = sfp_interface_bulk_data \ + ['data']['Extended Identifier']['value'] + transceiver_info_dict['ext_rateselect_compliance'] = sfp_interface_bulk_data \ + ['data']['RateIdentifier']['value'] + transceiver_info_dict['type_abbrv_name'] = sfp_interface_bulk_data \ + ['data']['type_abbrv_name']['value'] for key in sfp_cable_length_tup: if key in sfp_interface_bulk_data['data']: transceiver_info_dict['cable_type'] = key - transceiver_info_dict['cable_length'] = str( - sfp_interface_bulk_data['data'][key]['value']) + transceiver_info_dict['cable_length'] = \ + str(sfp_interface_bulk_data['data'][key]['value']) for key in sfp_compliance_code_tup: if key in sfp_interface_bulk_data['data']['Specification compliance']['value']: - compliance_code_dict[key] = sfp_interface_bulk_data['data']['Specification compliance']['value'][key]['value'] - transceiver_info_dict['specification_compliance'] = str( - compliance_code_dict) + compliance_code_dict[key] = sfp_interface_bulk_data \ + ['data']['Specification compliance']['value'][key]['value'] - transceiver_info_dict['nominal_bit_rate'] = str( - sfp_interface_bulk_data['data']['NominalSignallingRate(UnitsOf100Mbd)']['value']) + transceiver_info_dict['specification_compliance'] = \ + str(compliance_code_dict) + transceiver_info_dict['nominal_bit_rate'] = \ + str(sfp_interface_bulk_data['data']['NominalSignallingRate(UnitsOf100Mbd)']['value']) transceiver_info_dict['application_advertisement'] = 'N/A' return transceiver_info_dict From 5c2d4dd15c863289f755261e7e765ed43095d426 Mon Sep 17 00:00:00 2001 From: Aravind Mani <53524901+aravindmani-1@users.noreply.github.com> Date: Thu, 16 Sep 2021 07:25:43 -0700 Subject: [PATCH 173/186] DellEMC: Z9332f fix platform bugs (#8777) * DellEMC: Z9332f fix platform bugs * update sfp.py --- .../buffers_defaults_t0.j2 | 12 +++++------ .../buffers_defaults_t1.j2 | 12 +++++------ .../sai_postinit_cmd.soc | 7 +++---- .../z9332f/sonic_platform/sfp.py | 21 ++++++++++--------- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t0.j2 b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t0.j2 index 5ecbe788e3ab..33aaea75935d 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t0.j2 +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t0.j2 @@ -4,18 +4,18 @@ {# Generate list of ports #} {%- for port_idx in range(0,12) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 2) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 4) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 6) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 2) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 4) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 6) %}{%- endif %} {%- endfor %} {%- for port_idx in range(12,16) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} {%- endfor %} {%- for port_idx in range(16,20) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 2) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 4) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 6) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 2) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 4) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 6) %}{%- endif %} {%- endfor %} {%- for port_idx in range(20,32) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t1.j2 b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t1.j2 index 5ecbe788e3ab..33aaea75935d 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t1.j2 +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t1.j2 @@ -4,18 +4,18 @@ {# Generate list of ports #} {%- for port_idx in range(0,12) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 2) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 4) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 6) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 2) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 4) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 6) %}{%- endif %} {%- endfor %} {%- for port_idx in range(12,16) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} {%- endfor %} {%- for port_idx in range(16,20) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 2) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 4) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 6) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 2) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 4) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 6) %}{%- endif %} {%- endfor %} {%- for port_idx in range(20,32) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/sai_postinit_cmd.soc b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/sai_postinit_cmd.soc index 4a5b5ffcad9a..3222a4906bdf 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/sai_postinit_cmd.soc +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/sai_postinit_cmd.soc @@ -373,6 +373,7 @@ phy $port TXFIR_TAP_CTL4r.3 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.3 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.3 TXFIR_TAP_LOAD=0x1 +local port ce18 #*** lane 4 *** phy $port TXFIR_TAP_CTL0r.4 TXFIR_TAP0_COEFF=0 phy $port TXFIR_TAP_CTL1r.4 TXFIR_TAP1_COEFF=0x1E8 @@ -382,8 +383,6 @@ phy $port TXFIR_TAP_CTL4r.4 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.4 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.4 TXFIR_TAP_LOAD=0x1 - -local port ce18 #*** lane 5 *** phy $port TXFIR_TAP_CTL0r.5 TXFIR_TAP0_COEFF=0 phy $port TXFIR_TAP_CTL1r.5 TXFIR_TAP1_COEFF=0x1E8 @@ -393,6 +392,7 @@ phy $port TXFIR_TAP_CTL4r.5 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.5 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.5 TXFIR_TAP_LOAD=0x1 +local port ce19 #*** lane 6 *** phy $port TXFIR_TAP_CTL0r.6 TXFIR_TAP0_COEFF=0 phy $port TXFIR_TAP_CTL1r.6 TXFIR_TAP1_COEFF=0x1E8 @@ -402,7 +402,6 @@ phy $port TXFIR_TAP_CTL4r.6 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.6 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.6 TXFIR_TAP_LOAD=0x1 -local port ce19 #*** lane 7 *** phy $port TXFIR_TAP_CTL0r.7 TXFIR_TAP0_COEFF=4 phy $port TXFIR_TAP_CTL1r.7 TXFIR_TAP1_COEFF=0x1E4 @@ -974,6 +973,7 @@ phy $port TXFIR_TAP_CTL4r.5 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.5 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.5 TXFIR_TAP_LOAD=0x1 +local port ce47 #*** lane 6 *** phy $port TXFIR_TAP_CTL0r.6 TXFIR_TAP0_COEFF=0 phy $port TXFIR_TAP_CTL1r.6 TXFIR_TAP1_COEFF=0x1E8 @@ -983,7 +983,6 @@ phy $port TXFIR_TAP_CTL4r.6 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.6 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.6 TXFIR_TAP_LOAD=0x1 -local port ce47 #*** lane 7 *** phy $port TXFIR_TAP_CTL0r.7 TXFIR_TAP0_COEFF=4 phy $port TXFIR_TAP_CTL1r.7 TXFIR_TAP1_COEFF=0x1E4 diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/sfp.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/sfp.py index 4fe4b261cad0..744f47236208 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/sfp.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/sfp.py @@ -713,6 +713,7 @@ def get_transceiver_bulk_status(self): Retrieves transceiver bulk status of this SFP """ tx_bias_list = [] + tx_power_list = [] rx_power_list = [] transceiver_dom_dict = {} transceiver_dom_dict = dict.fromkeys(dom_dict_keys, 'N/A') @@ -751,7 +752,7 @@ def get_transceiver_bulk_status(self): rx_power_list = self.get_rx_power() if self.sfp_type == 'QSFP_DD': - if tx_bias_list is not None: + if tx_bias_list: transceiver_dom_dict['tx1bias'] = tx_bias_list[0] transceiver_dom_dict['tx2bias'] = tx_bias_list[1] transceiver_dom_dict['tx3bias'] = tx_bias_list[2] @@ -762,17 +763,17 @@ def get_transceiver_bulk_status(self): transceiver_dom_dict['tx8bias'] = tx_bias_list[7] elif self.sfp_type == 'QSFP': - if tx_bias_list is not None: + if tx_bias_list: transceiver_dom_dict['tx1bias'] = tx_bias_list[0] transceiver_dom_dict['tx2bias'] = tx_bias_list[1] transceiver_dom_dict['tx3bias'] = tx_bias_list[2] transceiver_dom_dict['tx4bias'] = tx_bias_list[3] else: - if tx_bias_list is not None: + if tx_bias_list: transceiver_dom_dict['tx1bias'] = tx_bias_list[0] if self.sfp_type == 'QSFP_DD': - if rx_power_list is not None: + if rx_power_list: transceiver_dom_dict['rx1power'] = rx_power_list[0] transceiver_dom_dict['rx2power'] = rx_power_list[1] transceiver_dom_dict['rx3power'] = rx_power_list[2] @@ -783,17 +784,17 @@ def get_transceiver_bulk_status(self): transceiver_dom_dict['rx8power'] = rx_power_list[7] elif self.sfp_type == 'QSFP': - if rx_power_list is not None: + if rx_power_list: transceiver_dom_dict['rx1power'] = rx_power_list[0] transceiver_dom_dict['rx2power'] = rx_power_list[1] transceiver_dom_dict['rx3power'] = rx_power_list[2] transceiver_dom_dict['rx4power'] = rx_power_list[3] else: - if rx_power_list is not None: + if rx_power_list: transceiver_dom_dict['rx1power'] = rx_power_list[0] if self.sfp_type == 'QSFP_DD': - if tx_power_list is not None: + if tx_power_list: transceiver_dom_dict['tx1power'] = tx_power_list[0] transceiver_dom_dict['tx2power'] = tx_power_list[1] transceiver_dom_dict['tx3power'] = tx_power_list[2] @@ -803,14 +804,14 @@ def get_transceiver_bulk_status(self): transceiver_dom_dict['tx7power'] = tx_power_list[6] transceiver_dom_dict['tx8power'] = tx_power_list[7] elif self.sfp_type == 'QSFP': - if tx_power_list is not None: + if tx_power_list: transceiver_dom_dict['tx1power'] = tx_power_list[0] transceiver_dom_dict['tx2power'] = tx_power_list[1] transceiver_dom_dict['tx3power'] = tx_power_list[2] transceiver_dom_dict['tx4power'] = tx_power_list[3] else: - if tx_power_list is not None: - transceiver_dom_dict['tx1power'] = tx_power_list[0] + if tx_power_list: + transceiver_dom_dict['tx1power'] = tx_power_list[0] transceiver_dom_dict['rx_los'] = rx_los transceiver_dom_dict['tx_fault'] = tx_fault transceiver_dom_dict['reset_status'] = reset_state From 508b6497a1108c38b89bd6f9fadce95a2241d511 Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Thu, 16 Sep 2021 11:04:46 -0700 Subject: [PATCH 174/186] Advancing sonic-sairedis submodule pointer (#8775) --- src/sonic-sairedis | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-sairedis b/src/sonic-sairedis index 696ad9929db2..78f36138e14e 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit 696ad9929db26a446518dbcd22c8f742025f2b93 +Subproject commit 78f36138e14e1ed0f0f772950f03420327ef1b1c From f6ec932b3cb1a78f79bf0af9c72c1f9ae060332c Mon Sep 17 00:00:00 2001 From: Arun Saravanan Balachandran <52521751+ArunSaravananBalachandran@users.noreply.github.com> Date: Fri, 17 Sep 2021 06:25:50 +0530 Subject: [PATCH 175/186] DellEMC Z9332f: Platform API - Update maximum fan speed (#8766) --- .../z9332f/sonic_platform/fan.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan.py index 6ffadb2a1e5f..4fce691c02f1 100755 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan.py @@ -48,6 +48,10 @@ def __init__(self, fantray_index=1, fan_index=1, psu_fan=False, dependency=None) is_discrete=True) self.speed_sensor = IpmiSensor(self.FAN_SENSOR_MAPPING[self.index]["Speed"]) self.fan_dir_raw_cmd = "0x3a 0x0a {}".format(fantray_index) + if self.fanindex == 1: + self.max_speed = 24700 + else: + self.max_speed = 29700 else: self.dependency = dependency self.fanindex = fan_index @@ -55,7 +59,7 @@ def __init__(self, fantray_index=1, fan_index=1, psu_fan=False, dependency=None) is_discrete=True) self.speed_sensor = IpmiSensor(self.PSU_FAN_SENSOR_MAPPING[self.fanindex]["Speed"]) self.fan_dir_raw_cmd = "0x3a 0x0a {}".format(7+(fan_index-1)) - self.max_speed = 23500 + self.max_speed = 26500 def get_name(self): """ From 1a2e85248309faf3c4b7d3decb34ec4377df0284 Mon Sep 17 00:00:00 2001 From: dflynn-Nokia <60479697+dflynn-Nokia@users.noreply.github.com> Date: Fri, 17 Sep 2021 00:01:12 -0400 Subject: [PATCH 176/186] [Nokia ixs7215] Support show system-health (#8771) * [Nokia ixs7215] Support show system-health * [Nokia ixs7215] Fix LGTM alert --- .../system_health_monitoring_config.json | 14 +++++ .../7215/sonic_platform/chassis.py | 51 +++++++++++-------- 2 files changed, 44 insertions(+), 21 deletions(-) create mode 100644 device/nokia/armhf-nokia_ixs7215_52x-r0/system_health_monitoring_config.json diff --git a/device/nokia/armhf-nokia_ixs7215_52x-r0/system_health_monitoring_config.json b/device/nokia/armhf-nokia_ixs7215_52x-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..fb16658c840c --- /dev/null +++ b/device/nokia/armhf-nokia_ixs7215_52x-r0/system_health_monitoring_config.json @@ -0,0 +1,14 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": [ + "asic", + "psu" + ], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "amber", + "normal": "green", + "booting": "blinking green" + } +} diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/chassis.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/chassis.py index a01aca24b684..cf67a7bb30ac 100755 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/chassis.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/chassis.py @@ -27,6 +27,11 @@ except ImportError as e: smbus_present = 0 +if sys.version_info[0] < 3: + import commands as cmd +else: + import subprocess as cmd + MAX_SELECT_DELAY = 3600 COPPER_PORT_START = 1 COPPER_PORT_END = 48 @@ -278,6 +283,9 @@ def get_thermal_manager(self): from .thermal_manager import ThermalManager return ThermalManager + def initizalize_system_led(self): + return True + def set_status_led(self, color): """ Sets the state of the system LED @@ -306,17 +314,18 @@ def set_status_led(self, color): return False # Write sys led - if smbus_present == 0: - sonic_logger.log_warning("PMON LED SET -> smbus present = 0") + if smbus_present == 0: # called from host (e.g. 'show system-health') + cmdstatus, value = cmd.getstatusoutput('sudo i2cset -y 0 0x41 0x7 %d' % value) + if cmdstatus: + sonic_logger.log_warning(" System LED set %s failed" % value) + return False else: bus = smbus.SMBus(0) DEVICE_ADDRESS = 0x41 DEVICEREG = 0x7 bus.write_byte_data(DEVICE_ADDRESS, DEVICEREG, value) - sonic_logger.log_info(" System LED set O.K. ") - return True - return False + return True def get_status_led(self): """ @@ -327,29 +336,29 @@ def get_status_led(self): specified. """ # Read sys led - if smbus_present == 0: - sonic_logger.log_warning("PMON LED GET -> smbus present = 0") - return False + if smbus_present == 0: # called from host + cmdstatus, value = cmd.getstatusoutput('sudo i2cget -y 0 0x41 0x7') + value = int(value, 16) else: bus = smbus.SMBus(0) DEVICE_ADDRESS = 0x41 DEVICE_REG = 0x7 value = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - if value == 0x00: - color = 'off' - elif value == 0x01: - color = 'amber' - elif value == 0x02: - color = 'green' - elif value == 0x03: - color = 'amber_blink' - elif value == 0x04: - color = 'green_blink' - else: - return False + if value == 0x00: + color = 'off' + elif value == 0x01: + color = 'amber' + elif value == 0x02: + color = 'green' + elif value == 0x03: + color = 'amber_blink' + elif value == 0x04: + color = 'green_blink' + else: + return None - return color + return color def get_watchdog(self): """ From e6699a0132c141b000af99521eab1fabf6942921 Mon Sep 17 00:00:00 2001 From: Shilong Liu Date: Fri, 17 Sep 2021 16:18:36 +0800 Subject: [PATCH 177/186] Add pipeline to build vhdx image. (#8665) * Add pipeline to build vhdx image --- .azure-pipelines/azure-pipelines-build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.azure-pipelines/azure-pipelines-build.yml b/.azure-pipelines/azure-pipelines-build.yml index eb3c3aa21bb8..2b90f6bf3cd4 100644 --- a/.azure-pipelines/azure-pipelines-build.yml +++ b/.azure-pipelines/azure-pipelines-build.yml @@ -104,6 +104,11 @@ jobs: make $BUILD_OPTIONS INSTALL_DEBUG_TOOLS=y target/sonic-vs.img.gz && mv target/sonic-vs.img.gz target/sonic-vs-dbg.img.gz fi make $BUILD_OPTIONS target/docker-sonic-vs.gz target/sonic-vs.img.gz target/docker-ptf.gz + if [ $(Build.Reason) != 'PullRequest' ];then + gzip -kd target/sonic-vs.img.gz + SONIC_RUN_CMDS="qemu-img convert target/sonic-vs.img -O vhdx -o subformat=dynamic target/sonic-vs.vhdx" make sonic-slave-run + rm target/sonic-vs.img + fi else if [ $(dbg_image) == yes ]; then make $BUILD_OPTIONS INSTALL_DEBUG_TOOLS=y target/sonic-$(GROUP_NAME).bin && \ From f1dac178f05a635bb597cbd2f4bbc47f91ee243a Mon Sep 17 00:00:00 2001 From: Prince George <45705344+prgeor@users.noreply.github.com> Date: Sat, 18 Sep 2021 12:31:05 +0530 Subject: [PATCH 178/186] Update sonic-platform-daemon submodule (#8788) Signed-off-by: Prince George --- 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 e038bc2997ab..84386e6a1c46 160000 --- a/src/sonic-platform-daemons +++ b/src/sonic-platform-daemons @@ -1 +1 @@ -Subproject commit e038bc2997ab7504b544c087bb88bb01b3bd620c +Subproject commit 84386e6a1c46e96bacb6c449c7611904227f58fb From e46dd633d85ae57ce34c7130854dbfe048b8a51c Mon Sep 17 00:00:00 2001 From: yozhao101 <56170650+yozhao101@users.noreply.github.com> Date: Sat, 18 Sep 2021 10:31:36 -0700 Subject: [PATCH 179/186] [healthd] Add system health configuration for platform Celestica E1031 (#8783) This PR aims to fix the healthd crash issue by adding system health monitoring configuration file for platform Celestica E1031 by adding a new configuration file under the path device/celestica/x86_64-cel_e1031-r0/. How to verify it I manually restart the system-health.service and confirmed that healthd is running. Signed-off-by: Yong Zhao --- .../system_health_monitoring_config.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 device/celestica/x86_64-cel_e1031-r0/system_health_monitoring_config.json diff --git a/device/celestica/x86_64-cel_e1031-r0/system_health_monitoring_config.json b/device/celestica/x86_64-cel_e1031-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..1733fcffdba3 --- /dev/null +++ b/device/celestica/x86_64-cel_e1031-r0/system_health_monitoring_config.json @@ -0,0 +1,16 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": [ + "asic", + "psu.temperature", + "PSU2 Fan", + "PSU1 Fan" + ], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "orange", + "normal": "green", + "booting": "orange_blink" + } +} From d588b3bc8c417fd89ec77caaf595830022897701 Mon Sep 17 00:00:00 2001 From: Arun Saravanan Balachandran <52521751+ArunSaravananBalachandran@users.noreply.github.com> Date: Mon, 20 Sep 2021 00:45:22 +0530 Subject: [PATCH 180/186] DellEMC: Z9332f - Platform API implementation (#8787) --- .../z9332f/sonic_platform/chassis.py | 9 +++++++ .../z9332f/sonic_platform/eeprom.py | 2 +- .../z9332f/sonic_platform/fan_drawer.py | 10 +++++++ .../z9332f/sonic_platform/psu.py | 27 +++++++++++++++++++ 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py index aba6160d1938..fac058f45207 100755 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py @@ -270,6 +270,15 @@ def get_serial_number(self): """ return self._eeprom.serial_number_str() + def get_revision(self): + """ + Retrieves the hardware revision of the device + + Returns: + string: Revision value of device + """ + return self._eeprom.revision_str() + def get_system_eeprom_info(self): """ Retrieves the full content of system EEPROM information for the chassis diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py index 1dc66935508c..fe7da80d012f 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py @@ -118,7 +118,7 @@ def revision_str(self): Returns the device revision """ (is_valid, results) = self.get_tlv_field( - self.eeprom_data, self._TLV_CODE_DEVICE_VERSION) + self.eeprom_data, self._TLV_CODE_LABEL_REVISION) if not is_valid: return "N/A" diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan_drawer.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan_drawer.py index f7ea8a4cbf6c..98d9f95c53fb 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan_drawer.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan_drawer.py @@ -103,3 +103,13 @@ def set_status_led(self, color): # Fan tray status LED controlled by BMC # Return True to avoid thermalctld alarm return True + + def get_maximum_consumed_power(self): + """ + Retrives the maximum power drawn by Fan Drawer + + Returns: + A float, with value of the maximum consumable power of the + component. + """ + return 36.0 diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/psu.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/psu.py index 28d62aa0152b..5aeebd4144b2 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/psu.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/psu.py @@ -87,6 +87,19 @@ def get_serial(self): """ return self.fru.get_board_serial() + def get_revision(self): + """ + Retrieves the hardware revision of the device + + Returns: + string: Revision value of device + """ + serial = self.fru.get_board_serial() + if serial != "NA" and len(serial) == 23: + return serial[-3:] + else: + return "NA" + def get_status(self): """ Retrieves the operational status of the PSU @@ -193,6 +206,20 @@ def get_power(self): return float(power) + def get_maximum_supplied_power(self): + """ + Retrieves the maximum supplied power by PSU + + Returns: + A float number, the maximum power output in Watts. + e.g. 1200.1 + """ + is_valid, power = self.power_sensor.get_threshold("UpperCritical") + if not is_valid: + return None + + return float(power) + def get_powergood_status(self): """ Retrieves the powergood status of PSU From 49a264a39401e74f8a4fa9ad1425ff1ae3a2601b Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Mon, 20 Sep 2021 13:46:01 -0700 Subject: [PATCH 181/186] Don't build and package the psample module The kernel already provides psample, and with module versioning being done in modpost, having the SDK compile its own copy of psample breaks loading dependent modules. Signed-off-by: Saikrishna Arcot --- platform/broadcom/saibcm-modules-dnx | 2 +- .../saibcm-modules/debian/opennsl-modules.install | 1 - platform/broadcom/saibcm-modules/debian/rules | 12 ++++++------ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/platform/broadcom/saibcm-modules-dnx b/platform/broadcom/saibcm-modules-dnx index a353f3fd45e4..e18b25e5f3e9 160000 --- a/platform/broadcom/saibcm-modules-dnx +++ b/platform/broadcom/saibcm-modules-dnx @@ -1 +1 @@ -Subproject commit a353f3fd45e441b8ce5dc21192c4a19600ad9a98 +Subproject commit e18b25e5f3e9b48f997b37430c7487da2ee81a30 diff --git a/platform/broadcom/saibcm-modules/debian/opennsl-modules.install b/platform/broadcom/saibcm-modules/debian/opennsl-modules.install index a755c77e2408..2d773b896116 100644 --- a/platform/broadcom/saibcm-modules/debian/opennsl-modules.install +++ b/platform/broadcom/saibcm-modules/debian/opennsl-modules.install @@ -2,7 +2,6 @@ systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-knet.ko lib/modules/5.10.0-8 systems/linux/user/x86-smp_generic_64-2_6/linux-kernel-bde.ko lib/modules/5.10.0-8-2-amd64/extra systems/linux/user/x86-smp_generic_64-2_6/linux-user-bde.ko lib/modules/5.10.0-8-2-amd64/extra systems/linux/user/x86-smp_generic_64-2_6/linux-knet-cb.ko lib/modules/5.10.0-8-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/psample.ko lib/modules/5.10.0-8-2-amd64/extra systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-ptp-clock.ko lib/modules/5.10.0-8-2-amd64/extra systemd/opennsl-modules.service lib/systemd/system sdklt/linux/bde/linux_ngbde.ko lib/modules/5.10.0-8-2-amd64/extra diff --git a/platform/broadcom/saibcm-modules/debian/rules b/platform/broadcom/saibcm-modules/debian/rules index c067b7e7dfd8..b092d3d0c635 100755 --- a/platform/broadcom/saibcm-modules/debian/rules +++ b/platform/broadcom/saibcm-modules/debian/rules @@ -63,11 +63,11 @@ kdist_config: prep-deb-files kdist_clean: clean dh_testdir dh_clean - SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 \ KERNDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ KERNEL_SRC=/usr/src/linux-headers-$(KERNVERSION)-amd64 \ $(MAKE) -C systems/linux/user/x86-smp_generic_64-2_6 clean - SDK=$(realpath .) BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) BUILD_KNET_CB=1 \ KDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ $(MAKE) -C sdklt/ clean # rm -f driver/*.o driver/*.ko @@ -99,12 +99,12 @@ build-arch-stamp: cd /; sudo cp /usr/src/linux-headers-$(KERNVERSION)-amd64/Module.symvers /usr/src/linux-headers-$(KERNVERSION)-common/Module.symvers # Add here command to compile/build the package. - SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 \ KERNDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ KERNEL_SRC=/usr/src/linux-headers-$(KERNVERSION)-amd64 \ $(MAKE) -C systems/linux/user/x86-smp_generic_64-2_6 - SDK=$(realpath .) BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) BUILD_KNET_CB=1 \ KDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ $(MAKE) -C sdklt/ kmod @@ -131,12 +131,12 @@ clean: rm -f build-arch-stamp build-indep-stamp configure-stamp # Add here commands to clean up after the build process. - SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 \ KERNDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ KERNEL_SRC=/usr/src/linux-headers-$(KERNVERSION)-amd64 \ $(MAKE) -C systems/linux/user/x86-smp_generic_64-2_6 clean - SDK=$(realpath .) BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) BUILD_KNET_CB=1 \ KDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ $(MAKE) -C sdklt/ clean From e10f0466f39e8f2f35bc30f1909d3c60a01d7850 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 23 Sep 2021 09:15:38 -0700 Subject: [PATCH 182/186] For Buster docker containers, use iproute2 from the backports repo There is an issue discovered by Alexander Allen where manually removing an interface from a vlan doesn't appear to fully remove it from the vlan. If the `bridge vlan del` command (from iproute2 version 4.20) is used to manually remove an interface from a vlan, then running `bridge vlan show` afterwards still lists that interface, but with no vlan ID, suggesting it's not fully removed from that vlan. Using the `bridge` command from iproute version 5.10 removes it cleanly, suggesting that it's some issue between the iproute2 4.20 package and the 5.10 kernel. To fix this issue, in all Buster-based docker containers, use iproute2 5.10 from the backports section of Buster. This ensures that all of the containers have a fully functional version of iproute2 available. Working test case: ``` admin@vlab-01:~$ sudo config vlan add 50 admin@vlab-01:~$ sudo config vlan member add 50 Ethernet4 admin@vlab-01:~$ sudo bridge vlan show dev Ethernet4 port vlan-id Ethernet4 50 admin@vlab-01:~$ docker exec -it swss bash root@vlab-01:/# apt-cache policy iproute2 iproute2: Installed: 5.10.0-4~bpo10+1 Candidate: 5.10.0-4~bpo10+1 Version table: *** 5.10.0-4~bpo10+1 100 100 http://debian-archive.trafficmanager.net/debian buster-backports/main amd64 Packages 100 http://packages.trafficmanager.net/debian/debian buster-backports/main amd64 Packages 100 /var/lib/dpkg/status 5.9.0-1~bpo10+1 100 100 http://packages.trafficmanager.net/debian/debian buster-backports/main amd64 Packages 4.20.0-2+deb10u1 500 500 http://debian-archive.trafficmanager.net/debian buster/main amd64 Packages 500 http://packages.trafficmanager.net/debian/debian buster/main amd64 Packages 4.20.0-2 500 500 http://packages.trafficmanager.net/debian/debian buster/main amd64 Packages root@vlab-01:/# bridge vlan del vid 50 dev Ethernet4 root@vlab-01:/# bridge vlan show dev Ethernet4 port vlan-id root@vlab-01:/# ``` Signed-off-by: Saikrishna Arcot --- dockers/docker-base-buster/Dockerfile.j2 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dockers/docker-base-buster/Dockerfile.j2 b/dockers/docker-base-buster/Dockerfile.j2 index ac3fd7743e77..cbd7b999e6ce 100644 --- a/dockers/docker-base-buster/Dockerfile.j2 +++ b/dockers/docker-base-buster/Dockerfile.j2 @@ -59,14 +59,16 @@ RUN apt-get update && \ libdaemon0 \ libdbus-1-3 \ libjansson4 \ -# ip and ifconfig utility missing in docker for arm arch - iproute2 \ +# ifconfig utility missing in docker for arm arch net-tools \ # for processing/handling json files in bash environment jq \ # for sairedis zmq rpc channel libzmq5 +# Install 5.10 version of iproute2 from backports +RUN apt-get -y -t buster-backports install iproute2 + # Install redis-tools {% if CONFIGURED_ARCH == "armhf" %} RUN curl -k -o redis-tools_6.0.6-1~bpo10+1_armhf.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1_bpo10+1_armhf.deb?sv=2015-04-05&sr=b&sig=67vHAMxsl%2BS3X1KsqhdYhakJkGdg5FKSPgU8kUiw4as%3D&se=2030-10-24T04%3A22%3A40Z&sp=r" From fff4f55da261892057b4f8229b3d11a77e8df100 Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Tue, 28 Sep 2021 11:26:50 -0700 Subject: [PATCH 183/186] Update Accton platform module for Bullseye and 5.10 kernel Signed-off-by: Saikrishna Arcot --- platform/broadcom/rules.mk | 2 +- .../as4630-54pe/classes/fanutil.py | 40 +++--- .../as4630-54pe/classes/thermalutil.py | 2 +- .../utils/accton_as4630_54pe_monitor.py | 14 +-- .../utils/accton_as4630_54pe_monitor_fan.py | 8 +- .../utils/accton_as4630_54pe_monitor_psu.py | 8 +- .../utils/accton_as4630_54pe_util.py | 20 +-- .../as4630-54te/classes/fanutil.py | 4 +- .../utils/accton_as4630_54te_monitor.py | 10 +- .../utils/accton_as4630_54te_monitor_fan.py | 8 +- .../utils/accton_as4630_54te_monitor_psu.py | 8 +- .../utils/accton_as4630_54te_util.py | 106 ++++++++-------- .../as5712-54x/utils/accton_as5712_monitor.py | 4 +- .../as5712-54x/utils/accton_as5712_util.py | 98 +++++++-------- .../as5812-54t/utils/accton_as5812_monitor.py | 4 +- .../as5812-54t/utils/accton_as5812_util.py | 92 +++++++------- .../as5812-54x/utils/accton_as5812_monitor.py | 4 +- .../as5812-54x/utils/accton_as5812_util.py | 98 +++++++-------- .../as5835-54t/classes/fanutil.py | 4 +- .../as5835-54t/classes/thermalutil.py | 12 +- .../utils/accton_as5835_54t_monitor.py | 4 +- .../utils/accton_as5835_54t_monitor_fan.py | 8 +- .../utils/accton_as5835_54t_monitor_psu.py | 8 +- .../utils/accton_as5835_54t_util.py | 94 +++++++------- .../as5835-54x/classes/fanutil.py | 4 +- .../as5835-54x/classes/thermalutil.py | 12 +- .../utils/accton_as5835_54x_monitor.py | 4 +- .../utils/accton_as5835_54x_monitor_fan.py | 8 +- .../utils/accton_as5835_54x_monitor_psu.py | 8 +- .../utils/accton_as5835_54x_util.py | 34 ++--- .../as6712-32x/classes/fanutil.py | 4 +- .../as6712-32x/utils/accton_as6712_monitor.py | 4 +- .../as6712-32x/utils/accton_as6712_util.py | 94 +++++++------- .../as7312-54x/classes/fanutil.py | 4 +- .../as7312-54x/utils/accton_as7312_monitor.py | 4 +- .../as7312-54x/utils/accton_as7312_util.py | 114 ++++++++--------- .../as7312-54xs/classes/fanutil.py | 4 +- .../utils/accton_as7312_monitor.py | 4 +- .../as7312-54xs/utils/accton_as7312_util.py | 92 +++++++------- .../as7315-27xb/classes/fanutil.py | 4 +- .../utils/accton_as7315_monitor.py | 4 +- .../as7315-27xb/utils/accton_as7315_util.py | 90 ++++++------- .../as7326-56x/classes/fanutil.py | 4 +- .../as7326-56x/classes/thermalutil.py | 10 +- .../as7326-56x/utils/accton_as7326_monitor.py | 10 +- .../utils/accton_as7326_monitor_fan.py | 8 +- .../utils/accton_as7326_monitor_psu.py | 8 +- .../utils/accton_as7326_pddf_monitor.py | 4 +- .../as7326-56x/utils/accton_as7326_util.py | 100 +++++++-------- .../as7326-56x/utils/pddf_switch_svc.py | 54 ++++---- .../as7712-32x/utils/accton_as7712_util.py | 92 +++++++------- .../as7716-32x/classes/fanutil.py | 4 +- .../as7716-32x/utils/accton_as7716_monitor.py | 4 +- .../as7716-32x/utils/accton_as7716_util.py | 94 +++++++------- .../as7716-32xb/classes/fanutil.py | 6 +- .../utils/accton_as7716_32xb_drv_handler.py | 32 ++--- .../utils/accton_as7716_32xb_monitor.py | 4 +- .../utils/accton_as7716_32xb_util.py | 118 +++++++++--------- .../as7726-32x/classes/fanutil.py | 4 +- .../as7726-32x/classes/thermalutil.py | 2 +- .../utils/accton_as7726_32x_monitor.py | 10 +- .../utils/accton_as7726_32x_monitor_fan.py | 8 +- .../utils/accton_as7726_32x_monitor_psu.py | 8 +- .../utils/accton_as7726_32x_pddf_monitor.py | 4 +- .../utils/accton_as7726_32x_util.py | 22 ++-- .../as7726-32x/utils/pddf_switch_svc.py | 70 +++++------ .../as7816-64x/classes/fanutil.py | 4 +- .../as7816-64x/utils/accton_as7816_monitor.py | 4 +- .../utils/accton_as7816_pddf_monitor.py | 4 +- .../as7816-64x/utils/accton_as7816_util.py | 22 ++-- .../as7816-64x/utils/pddf_switch_svc.py | 34 ++--- .../as9716-32d/classes/fanutil.py | 4 +- .../as9716-32d/classes/thermalutil.py | 2 +- .../utils/accton_as9716_32d_monitor.py | 12 +- .../utils/accton_as9716_32d_monitor_fan.py | 8 +- .../utils/accton_as9716_32d_monitor_psu.py | 8 +- .../utils/accton_as9716_32d_pddf_monitor.py | 6 +- .../utils/accton_as9716_32d_util.py | 22 ++-- .../as9716-32d/utils/pddf_switch_svc.py | 50 ++++---- .../as9726-32d/classes/fanutil.py | 4 +- .../utils/accton_as9726_32d_monitor.py | 12 +- .../utils/accton_as9726_32d_monitor_fan.py | 8 +- .../utils/accton_as9726_32d_monitor_psu.py | 8 +- .../utils/accton_as9726_32d_util.py | 100 +++++++-------- .../debian/rules | 7 +- .../minipack/classes/pimutil.py | 38 +++--- .../minipack/utils/accton_minipack_util.py | 80 ++++++------ .../minipack/utils/setup_qsfp_eeprom.py | 30 ++--- 88 files changed, 1149 insertions(+), 1150 deletions(-) diff --git a/platform/broadcom/rules.mk b/platform/broadcom/rules.mk index 78b7358815c8..d6a12e49e142 100644 --- a/platform/broadcom/rules.mk +++ b/platform/broadcom/rules.mk @@ -4,7 +4,7 @@ include $(PLATFORM_PATH)/platform-modules-nokia.mk #include $(PLATFORM_PATH)/platform-modules-dell.mk #include $(PLATFORM_PATH)/platform-modules-arista.mk #include $(PLATFORM_PATH)/platform-modules-ingrasys.mk -#include $(PLATFORM_PATH)/platform-modules-accton.mk +include $(PLATFORM_PATH)/platform-modules-accton.mk #include $(PLATFORM_PATH)/platform-modules-alphanetworks.mk #include $(PLATFORM_PATH)/platform-modules-inventec.mk include $(PLATFORM_PATH)/platform-modules-cel.mk diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/fanutil.py index d046834ecf33..75ee8339b60e 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/fanutil.py @@ -82,24 +82,24 @@ def _get_fan_node_val(self, fan_num, node_num): device_path = self.get_fan_device_path(fan_num, node_num) - try: - val_file = open(device_path, 'r') - except IOError as e: - logging.error('GET. unable to open file: %s', str(e)) - return None - - content = val_file.readline().rstrip() - if content == '': - logging.debug('GET. content is NULL. device_path:%s', device_path) - return None - - try: - val_file.close() - except: - logging.debug('GET. unable to close file. device_path:%s', device_path) - return None - - return int(content) + try: + val_file = open(device_path, 'r') + except IOError as e: + logging.error('GET. unable to open file: %s', str(e)) + return None + + content = val_file.readline().rstrip() + if content == '': + logging.debug('GET. content is NULL. device_path:%s', device_path) + return None + + try: + val_file.close() + except: + logging.debug('GET. unable to close file. device_path:%s', device_path) + return None + + return int(content) def _set_fan_node_val(self, fan_num, node_num, val): if fan_num < self.FAN_NUM_1_IDX or fan_num > self.FAN_NUM_ON_MAIN_BROAD: @@ -158,7 +158,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -170,7 +170,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/thermalutil.py index bd5530fd9035..182b95f8eaeb 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/thermalutil.py @@ -24,7 +24,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor.py index 8913233366e2..b074177133aa 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor.py @@ -26,7 +26,7 @@ import logging.config import logging.handlers import time - import commands + import subprocess from as4630_54pe.fanutil import FanUtil from as4630_54pe.thermalutil import ThermalUtil except ImportError as e: @@ -200,7 +200,7 @@ def manage_fans(self): logging.critical('Alarm-Critical for temperature critical is detected, reset DUT') cmd_str="i2cset -y -f 3 0x60 0x4 0xE4" time.sleep(2); - status, output = commands.getstatusoutput(cmd_str) + status, output = subprocess.getstatusoutput(cmd_str) #logging.debug('ori_state=%d, current_state=%d, temp_val=%d\n\n',ori_state, fan_policy_state, temp_val) @@ -225,11 +225,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -238,7 +238,7 @@ def main(argv): if sys.argv[1]== '-t': if len(sys.argv)!=5: - print "temp test, need input three temp" + print("temp test, need input three temp") return 0 i=0 @@ -247,11 +247,11 @@ def main(argv): i=i+1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(50) - print "set default fan speed to 50%" + print("set default fan speed to 50%") monitor = device_monitor(log_file, log_level) # Loop forever, doing something useful hopefully: while True: diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_fan.py index c775e86874b8..9e9645485bba 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_fan.py @@ -124,7 +124,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -143,7 +143,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -165,11 +165,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_psu.py index 02f4541127a7..8a5993f58240 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_psu.py @@ -96,7 +96,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -143,11 +143,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_util.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_util.py index 80dfd497c2d9..f0081b33b2c3 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_util.py @@ -88,8 +88,8 @@ if DEBUG == True: - print(sys.argv[0]) - print('ARGV :', sys.argv[1:]) + print((sys.argv[0])) + print(('ARGV :', sys.argv[1:])) def main(): @@ -107,7 +107,7 @@ def main(): if DEBUG == True: print(options) print(args) - print(len(sys.argv)) + print((len(sys.argv))) for opt, arg in options: if opt in ('-h', '--help'): @@ -132,12 +132,12 @@ def main(): return 0 def show_help(): - print( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) + print(( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]})) sys.exit(0) def my_log(txt): if DEBUG == True: - print("[ACCTON DBG]: ",txt) + print(("[ACCTON DBG]: ",txt)) return def log_os_system(cmd, show): @@ -151,7 +151,7 @@ def log_os_system(cmd, show): if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -294,14 +294,14 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" drivers detected....") + print((PROJECT_NAME.upper()+" drivers detected....")) if not device_exist(): status = device_install() if status: if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" devices detected....") + print((PROJECT_NAME.upper()+" devices detected....")) for i in range(len(cpld_set)): status, output = log_os_system(cpld_set[i], 1) @@ -312,7 +312,7 @@ def do_install(): def do_uninstall(): if not device_exist(): - print(PROJECT_NAME.upper()+" has no device installed....") + print((PROJECT_NAME.upper()+" has no device installed....")) else: print("Removing device....") status = device_uninstall() @@ -321,7 +321,7 @@ def do_uninstall(): return status if driver_inserted()== False : - print(PROJECT_NAME.upper()+" has no driver installed....") + print((PROJECT_NAME.upper()+" has no driver installed....")) else: print("Removing installed driver....") status = driver_uninstall() diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/classes/fanutil.py index 121b8409a585..ced84e191a75 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/classes/fanutil.py @@ -165,7 +165,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -177,7 +177,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor.py index 8c704ac60e86..d3c2b2c86094 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor.py @@ -223,11 +223,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdlt:', ['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -236,7 +236,7 @@ def main(argv): if sys.argv[1] == '-t': if len(sys.argv) != 5: - print "temp test, need input three temp" + print("temp test, need input three temp") return 0 i = 0 @@ -245,11 +245,11 @@ def main(argv): i = i + 1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(50) - print "set default fan speed to 50%" + print("set default fan speed to 50%") monitor = device_monitor(log_file, log_level) # Loop forever, doing something useful hopefully: while True: diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_fan.py index 6d8ab0ea3c95..635e27ecbe38 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_fan.py @@ -122,7 +122,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -142,7 +142,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -166,11 +166,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdl:', ['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_psu.py index 9bff640434bf..98b26ee10b72 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_psu.py @@ -96,7 +96,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -120,7 +120,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -147,11 +147,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdl:', ['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_util.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_util.py index 172a9842a8bf..21e8ecb30c95 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_util.py @@ -29,7 +29,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -165,8 +165,8 @@ def main(): global FORCE if DEBUG: - print(sys.argv[0]) - print('ARGV : %s' % sys.argv[1:]) + print((sys.argv[0])) + print(('ARGV : %s' % sys.argv[1:])) if len(sys.argv) < 2: show_help() @@ -176,9 +176,9 @@ def main(): 'force', ]) if DEBUG: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -189,7 +189,7 @@ def main(): elif opt in ('-f', '--force'): FORCE = 1 else: - print "TEST" + print("TEST") logging.info('no option') for arg in args: if arg == 'install': @@ -223,42 +223,42 @@ def main(): def show_help(): - print __doc__ % {'scriptName': sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName': sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1] + " " + args[0] - print cmd + " [led|sfp|fan]" - print " use \"" + cmd + " led 0-4 \" to set led color" - print " use \"" + cmd + " fan 0-100\" to set fan duty percetage" - print " use \"" + cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd + " [led|sfp|fan]") + print(" use \"" + cmd + " led 0-4 \" to set led color") + print(" use \"" + cmd + " fan 0-100\" to set fan duty percetage") + print(" use \"" + cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1] + " " + args[0] - print " use \"" + cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \"" + cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG: - print "[ACCTON DBG]: " + txt + print("[ACCTON DBG]: " + txt) return def log_os_system(cmd, show): logging.info('Run :' + cmd) output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log(cmd + "with result:" + str(status)) my_log("cmd:" + cmd) my_log(" output:" + output) if status: logging.info('Failed :' + cmd) if show: - print('Failed :' + cmd) + print(('Failed :' + cmd)) return status, output @@ -306,7 +306,7 @@ def driver_uninstall(): for i in range(0, len(kos)): rm = kos[-(i + 1)].replace("modprobe", "modprobe -rq") lst = rm.split(" ") - print "lst=%s" % lst + print("lst=%s" % lst) if len(lst) > 3: del(lst[3]) rm = " ".join(lst) @@ -327,7 +327,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status print("Check SFP") @@ -342,7 +342,7 @@ def device_install(): str(sfp_map[i]) + "/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -353,7 +353,7 @@ def device_install(): str(sfp_map[i]) + "-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -368,7 +368,7 @@ def device_uninstall(): str(sfp_map[i]) + "/delete_device" status, output = log_os_system("echo 0x50 > " + target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -381,7 +381,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -392,7 +392,7 @@ def system_ready(): if driver_inserted() == False: return False if not device_exist(): - print "not device_exist()" + print("not device_exist()") return False return True @@ -408,29 +408,29 @@ def do_sonic_platform_install(): if os.path.exists(SONIC_PLATFORM_BSP_WHL_PKG_PY3): status, output = log_os_system("pip3 install "+ SONIC_PLATFORM_BSP_WHL_PKG_PY3, 1) if status: - print "Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) + print("Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3)) return status else: - print "Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) + print("Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3)) else: - print('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3))) else: - print('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_sonic_platform_clean(): status, output = log_os_system("pip3 show sonic-platform > /dev/null 2>&1", 0) if status: - print('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3))) else: status, output = log_os_system("pip3 uninstall sonic-platform -y", 0) if status: - print('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3))) return status else: - print('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3))) return @@ -442,14 +442,14 @@ def do_install(): if FORCE == 0: return status else: - print PROJECT_NAME.upper() + " drivers detected...." + print(PROJECT_NAME.upper() + " drivers detected....") if not device_exist(): status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper() + " devices detected...." + print(PROJECT_NAME.upper() + " devices detected....") for i in range(len(cpld_set)): status, output = log_os_system(cpld_set[i], 1) @@ -464,18 +464,18 @@ def do_install(): def do_uninstall(): if not device_exist(): - print PROJECT_NAME.upper() + " has no device installed...." + print(PROJECT_NAME.upper() + " has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted() == False: - print PROJECT_NAME.upper() + " has no driver installed...." + print(PROJECT_NAME.upper() + " has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -533,11 +533,11 @@ def devices_info(): # show dict all in the order if DEBUG: for i in sorted(ALL_DEVICE.keys()): - print(i + ": ") + print((i + ": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" " + j) + print((" " + j)) for k in (ALL_DEVICE[i][j]): - print(" " + " " + k) + print((" " + " " + k)) return @@ -561,15 +561,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print "node=%s" % node - print node + ":" + print("node=%s" % node) + print(node + ":") ret, log = log_os_system("cat " + node + "| " + hex_cmd + " -C", 1) if ret == 0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return @@ -604,10 +604,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat " + node, 1) if ret == 0: - print ("Previous fan duty: " + log.strip() + "%") + print(("Previous fan duty: " + log.strip() + "%")) ret, log = log_os_system("echo " + args[1] + " >" + node, 1) if ret == 0: - print ("Current fan duty: " + args[1] + "%") + print(("Current fan duty: " + args[1] + "%")) return ret elif args[0] == 'sfp': if int(args[1]) > DEVICE_NO[args[0]] or int(args[1]) == 0: @@ -650,24 +650,24 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper() + ": ") + print((i.upper() + ": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " " + j + ":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" " + j + ":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat " + k, 0) func = k.split("/")[-1].strip() func = re.sub(j + '_', '', func, 1) func = re.sub(i.lower() + '_', '', func, 1) if ret == 0: - print func + "=" + log + " ", + print(func + "=" + log + " ", end=' ') else: - print func + "=" + "X" + " ", - print + print(func + "=" + "X" + " ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return diff --git a/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_monitor.py index f032088dc525..cd35e9af9018 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_monitor.py @@ -173,11 +173,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_util.py b/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_util.py index ed9667da8c99..cfdd5acadccb 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_util.py @@ -30,7 +30,7 @@ """ import os -import commands +import subprocess import getopt import sys import logging @@ -145,8 +145,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -162,9 +162,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -204,39 +204,39 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-48 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-48 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -318,7 +318,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -329,7 +329,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status @@ -339,12 +339,12 @@ def device_install(): else: status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status status, output =log_os_system("echo port"+str(i)+" > /sys/bus/i2c/devices/"+str(sfp_map[i])+"-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -357,7 +357,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -374,7 +374,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -388,40 +388,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_inserted() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -474,11 +474,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -501,15 +501,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return @@ -576,10 +576,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': #if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -630,36 +630,36 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') if i == 'sfp': - port_index = int(filter(str.isdigit, j)) + port_index = int(list(filter(str.isdigit, j))) for k in (ALL_DEVICE[i][j]): if k.find('tx_disable')!= -1: ret, k = get_path_sfp_tx_dis(port_index) if ret == False: continue log = print_1_device_traversal(i, j, k) - print log, + print(log, end=' ') if k.find('present')!= -1: ret, k = get_path_sfp_presence(port_index) if ret == False: continue log = print_1_device_traversal(i, j, k) - print log, + print(log, end=' ') else: for k in (ALL_DEVICE[i][j]): log = print_1_device_traversal(i, j, k) - print log, - print + print(log, end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_monitor.py index 6f55e703d7d1..d241ad777521 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_monitor.py @@ -181,11 +181,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl') except getopt.GetoptError: - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 elif opt in ('-d'): log_console = 1 diff --git a/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_util.py b/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_util.py index 3859c3279c45..3a6e7c5d9acc 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -53,8 +53,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -70,9 +70,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -112,36 +112,36 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-6 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-6 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ROY]"+txt + print("[ROY]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -270,7 +270,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -281,13 +281,13 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -305,7 +305,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -321,7 +321,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -335,40 +335,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -421,11 +421,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -448,15 +448,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -490,10 +490,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -533,25 +533,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_monitor.py index 5e3b368659cc..f0fada64563a 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_monitor.py @@ -181,11 +181,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl') except getopt.GetoptError: - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 elif opt in ('-d'): log_console = 1 diff --git a/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_util.py b/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_util.py index 464c85745f90..05ebcb420698 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_util.py @@ -30,7 +30,7 @@ """ import os -import commands +import subprocess import getopt import sys import logging @@ -145,8 +145,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -162,9 +162,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -204,39 +204,39 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-48 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-48 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -320,7 +320,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -331,7 +331,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status @@ -341,12 +341,12 @@ def device_install(): else: status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status status, output =log_os_system("echo port"+str(i)+" > /sys/bus/i2c/devices/"+str(sfp_map[i])+"-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -359,7 +359,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -376,7 +376,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -390,40 +390,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_inserted() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -476,11 +476,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -503,15 +503,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return @@ -578,10 +578,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': #if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -632,36 +632,36 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') if i == 'sfp': - port_index = int(filter(str.isdigit, j)) + port_index = int(list(filter(str.isdigit, j))) for k in (ALL_DEVICE[i][j]): if k.find('tx_disable')!= -1: ret, k = get_path_sfp_tx_dis(port_index) if ret == False: continue log = print_1_device_traversal(i, j, k) - print log, + print(log, end=' ') if k.find('present')!= -1: ret, k = get_path_sfp_presence(port_index) if ret == False: continue log = print_1_device_traversal(i, j, k) - print log, + print(log, end=' ') else: for k in (ALL_DEVICE[i][j]): log = print_1_device_traversal(i, j, k) - print log, - print + print(log, end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/fanutil.py index c741ebfd7246..e60236c9c781 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/fanutil.py @@ -185,7 +185,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -197,7 +197,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) fan_file.close() diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/thermalutil.py index 1dc97cfe276d..00e5bfa25683 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/thermalutil.py @@ -26,7 +26,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) @@ -83,7 +83,7 @@ def _get_thermal_val(self, thermal_num): return int(content) else: - print "No such device_path=%s"%device_path + print("No such device_path=%s"%device_path) return 0 def get_num_thermals(self): @@ -115,10 +115,10 @@ def get_thermal_temp(self): def main(): thermal = ThermalUtil() - print "termal1=%d" %thermal._get_thermal_val(1) - print "termal2=%d" %thermal._get_thermal_val(2) - print "termal3=%d" %thermal._get_thermal_val(3) - print "termal4=%d" %thermal._get_thermal_val(4) + print("termal1=%d" %thermal._get_thermal_val(1)) + print("termal2=%d" %thermal._get_thermal_val(2)) + print("termal3=%d" %thermal._get_thermal_val(3)) + print("termal4=%d" %thermal._get_thermal_val(4)) # # print 'get_size_node_map : %d' % thermal.get_size_node_map() # print 'get_size_path_map : %d' % thermal.get_size_path_map() diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor.py index ceea8e12f852..397a816c9ea7 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor.py @@ -176,11 +176,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_fan.py index 7978012b0da0..30f9ccd9e8ba 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_fan.py @@ -132,7 +132,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -151,7 +151,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -173,11 +173,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_psu.py index 9be72fda9993..40483e064dfc 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_psu.py @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -138,7 +138,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -164,11 +164,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py index 48e49cbaba13..7e51658e9fb6 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -53,8 +53,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -70,9 +70,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -112,36 +112,36 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 49-54 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 49-54 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[Debug]"+txt + print("[Debug]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -277,7 +277,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) time.sleep(0.01) if status: - print output + print(output) if FORCE == 0: return status else: @@ -288,7 +288,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(49, 55): #Set qsfp port to normal state @@ -297,13 +297,13 @@ def device_install(): for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status path = "/sys/bus/i2c/devices/{0}-0050/port_name" status, output =log_os_system("echo port{0} > ".format(i+49)+path.format(sfp_map[i]), 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -321,7 +321,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -337,7 +337,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -351,40 +351,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -437,11 +437,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -464,15 +464,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -506,10 +506,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -549,25 +549,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/fanutil.py index c741ebfd7246..e60236c9c781 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/fanutil.py @@ -185,7 +185,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -197,7 +197,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) fan_file.close() diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/thermalutil.py index ce903db35487..ceb9ab464026 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/thermalutil.py @@ -26,7 +26,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) @@ -83,7 +83,7 @@ def _get_thermal_val(self, thermal_num): return int(content) else: - print "No such device_path=%s"%device_path + print("No such device_path=%s"%device_path) return 0 def get_num_thermals(self): @@ -115,10 +115,10 @@ def get_thermal_temp(self): def main(): thermal = ThermalUtil() - print "termal1=%d" %thermal._get_thermal_val(1) - print "termal2=%d" %thermal._get_thermal_val(2) - print "termal3=%d" %thermal._get_thermal_val(3) - print "termal4=%d" %thermal._get_thermal_val(4) + print("termal1=%d" %thermal._get_thermal_val(1)) + print("termal2=%d" %thermal._get_thermal_val(2)) + print("termal3=%d" %thermal._get_thermal_val(3)) + print("termal4=%d" %thermal._get_thermal_val(4)) # # print 'get_size_node_map : %d' % thermal.get_size_node_map() # print 'get_size_path_map : %d' % thermal.get_size_path_map() diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor.py index 9c5e955ce17d..e3b3fe742db9 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor.py @@ -175,11 +175,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_fan.py index dec1e036142d..842e76ce3748 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_fan.py @@ -132,7 +132,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -151,7 +151,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -173,11 +173,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_psu.py index f994d635239a..1dbd85cb6487 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_psu.py @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -138,7 +138,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -164,11 +164,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py index d2573b6f5aec..dc26ae1c8192 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py @@ -48,8 +48,8 @@ if DEBUG == True: - print(sys.argv[0]) - print("ARGV :", sys.argv[1:]) + print((sys.argv[0])) + print(("ARGV :", sys.argv[1:])) def main(): @@ -67,7 +67,7 @@ def main(): if DEBUG == True: print(options) print(args) - print(len(sys.argv)) + print((len(sys.argv))) for opt, arg in options: if opt in ('-h', '--help'): @@ -96,13 +96,13 @@ def main(): return 0 def show_help(): - print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) + print((__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]})) sys.exit(0) def my_log(txt): if DEBUG == True: - print("[Debug]"+txt) + print(("[Debug]"+txt)) return def log_os_system(cmd, show): @@ -113,7 +113,7 @@ def log_os_system(cmd, show): if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -348,29 +348,29 @@ def do_sonic_platform_install(): if os.path.exists(SONIC_PLATFORM_BSP_WHL_PKG_PY3): status, output = log_os_system("pip3 install "+ SONIC_PLATFORM_BSP_WHL_PKG_PY3, 1) if status: - print("Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) ) + print(("Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) )) return status else: - print("Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) ) + print(("Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) )) else: - print('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3))) else: - print('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_sonic_platform_clean(): status, output = log_os_system("pip3 show sonic-platform > /dev/null 2>&1", 0) if status: - print('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3))) else: status, output = log_os_system("pip3 uninstall sonic-platform -y", 0) if status: - print('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3))) return status else: - print('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3))) return @@ -383,7 +383,7 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" drivers detected....") + print((PROJECT_NAME.upper()+" drivers detected....")) if not device_exist(): print("No device, installing....") status = device_install() @@ -391,7 +391,7 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" devices detected....") + print((PROJECT_NAME.upper()+" devices detected....")) do_sonic_platform_install() @@ -400,7 +400,7 @@ def do_install(): def do_uninstall(): print("Checking system....") if not device_exist(): - print(PROJECT_NAME.upper() +" has no device installed....") + print((PROJECT_NAME.upper() +" has no device installed....")) else: print("Removing device....") status = device_uninstall() @@ -409,7 +409,7 @@ def do_uninstall(): return status if driver_check()== False : - print(PROJECT_NAME.upper() +" has no driver installed....") + print((PROJECT_NAME.upper() +" has no driver installed....")) else: print("Removing installed driver....") status = driver_uninstall() diff --git a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/classes/fanutil.py index 73d020acccce..20d604ab4a3a 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/classes/fanutil.py @@ -193,7 +193,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -212,7 +212,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False #val = ((val + 1 ) * 625 +75 ) / 100 fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_monitor.py index 07e40f6b7fb4..1bc78f8184de 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_monitor.py @@ -180,11 +180,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_util.py b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_util.py index 10cdac787309..fdaf22689639 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_util.py @@ -37,7 +37,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -153,8 +153,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -170,9 +170,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -213,39 +213,39 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -332,7 +332,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -343,19 +343,19 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status status, output =log_os_system("echo port"+str(i)+" > /sys/bus/i2c/devices/"+str(sfp_map[i])+"-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -374,7 +374,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -390,7 +390,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -404,40 +404,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_inserted() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -494,11 +494,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -521,15 +521,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -563,10 +563,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -606,25 +606,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/classes/fanutil.py index 92e79da72746..9b34ce560821 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/classes/fanutil.py @@ -179,7 +179,7 @@ def get_fan_duty_cycle(self): with open(self.FAN_DUTY_PATH) as val_file: content = val_file.readline().rstrip() except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False return int(content) @@ -188,7 +188,7 @@ def set_fan_duty_cycle(self, val): with open(self.FAN_DUTY_PATH, 'r+') as val_file: val_file.write(str(val)) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False return True diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_monitor.py index 2f87c3f58736..c63bdab2fa0a 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_monitor.py @@ -192,11 +192,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_util.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_util.py index e2f058b4e37a..b79a1c1088dc 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_util.py @@ -29,7 +29,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -56,8 +56,8 @@ # logging.basicConfig(level=logging.INFO) if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -71,9 +71,9 @@ def main(): (options, ARGS) = getopt.getopt(sys.argv[1:], 'hdf', ['help','debug', 'force']) if DEBUG == True: - print options - print ARGS - print len(sys.argv) + print(options) + print(ARGS) + print(len(sys.argv)) for (opt, arg) in options: if opt in ('-h', '--help'): @@ -116,40 +116,40 @@ def main(): def show_help(): - print __doc__ % {'scriptName': sys.argv[0].split('/')[-1]} + print(__doc__ % {'scriptName': sys.argv[0].split('/')[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split('/')[-1] + ' ' + ARGS[0] - print cmd + ' [led|sfp|fan]' - print ' use "' + cmd + ' led 0-4 " to set led color' - print ' use "' + cmd + ' fan 0-100" to set fan duty percetage' - print ' use "' + cmd + ' sfp 1-48 {0|1}" to set sfp# tx_disable' + print(cmd + ' [led|sfp|fan]') + print(' use "' + cmd + ' led 0-4 " to set led color') + print(' use "' + cmd + ' fan 0-100" to set fan duty percetage') + print(' use "' + cmd + ' sfp 1-48 {0|1}" to set sfp# tx_disable') sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split('/')[-1] + ' ' + ARGS[0] - print ' use "' + cmd + ' 1-54 " to dump sfp# eeprom' + print(' use "' + cmd + ' 1-54 " to dump sfp# eeprom') sys.exit(0) def my_log(txt): if DEBUG == True: - print '[DBG]' + txt + print('[DBG]' + txt) return def log_os_system(cmd, show): logging.info('Run :' + cmd) - (status, output) = commands.getstatusoutput(cmd) + (status, output) = subprocess.getstatusoutput(cmd) my_log(cmd + 'with result:' + str(status)) my_log(' output:' + output) if status: logging.info('Failed :' + cmd) if show: - print 'Failed :' + cmd + print('Failed :' + cmd) return (status, output) @@ -294,7 +294,7 @@ def device_install(): (status, output) = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -305,7 +305,7 @@ def device_install(): (status, output) = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0, len(sfp_map)): @@ -318,7 +318,7 @@ def device_install(): log_os_system('echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-' + str(sfp_map[i]) + '/new_device', 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -331,7 +331,7 @@ def device_uninstall(): + '/delete_device' (status, output) = log_os_system('echo 0x50 > ' + target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -348,7 +348,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') (status, output) = log_os_system(' '.join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -374,69 +374,69 @@ def do_sonic_platform_install(): if os.path.exists(SONIC_PLATFORM_BSP_WHL_PKG_PY3): status, output = log_os_system("pip3 install "+ SONIC_PLATFORM_BSP_WHL_PKG_PY3, 1) if status: - print "Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) + print("Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3)) return status else: - print "Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) + print("Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3)) else: - print('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3))) else: - print('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_sonic_platform_clean(): status, output = log_os_system("pip3 show sonic-platform > /dev/null 2>&1", 0) if status: - print('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3))) else: status, output = log_os_system("pip3 uninstall sonic-platform -y", 0) if status: - print('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3))) return status else: - print('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_install(): - print 'Checking system....' + print('Checking system....') if driver_check() is False: - print 'No driver, installing....' + print('No driver, installing....') status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper() + ' drivers detected....' + print(PROJECT_NAME.upper() + ' drivers detected....') if not device_exist(): - print 'No device, installing....' + print('No device, installing....') status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper() + ' devices detected....' + print(PROJECT_NAME.upper() + ' devices detected....') do_sonic_platform_install() return def do_uninstall(): - print 'Checking system....' + print('Checking system....') if not device_exist(): - print PROJECT_NAME.upper() + ' has no device installed....' + print(PROJECT_NAME.upper() + ' has no device installed....') else: - print 'Removing device....' + print('Removing device....') status = device_uninstall() if status and FORCE == 0: return status if driver_check() is False: - print PROJECT_NAME.upper() + ' has no driver installed....' + print(PROJECT_NAME.upper() + ' has no driver installed....') else: - print 'Removing installed driver....' + print('Removing installed driver....') status = driver_uninstall() if status and FORCE == 0: return status @@ -496,11 +496,11 @@ def devices_info(): # show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print i + ': ' + print(i + ': ') for j in sorted(ALL_DEVICE[i].keys()): - print ' ' + j + print(' ' + j) for k in ALL_DEVICE[i][j]: - print ' ' + ' ' + k + print(' ' + ' ' + k) return @@ -525,14 +525,14 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ':' + print(node + ':') (ret, log) = log_os_system('cat ' + node + '| ' + hex_cmd + ' -C', 1) if ret == 0: - print log + print(log) else: print( '**********device no found**********') return @@ -573,10 +573,10 @@ def set_device(args): 'fan_duty_cycle_percentage') (ret, log) = log_os_system('cat ' + node, 1) if ret == 0: - print 'Previous fan duty: ' + log.strip() + '%' + print('Previous fan duty: ' + log.strip() + '%') ret = log_os_system('echo ' + args[1] + ' >' + node, 1) if ret[0] == 0: - print 'Current fan duty: ' + args[1] + '%' + print('Current fan duty: ' + args[1] + '%') return ret elif args[0] == 'sfp': if int(args[1]) > qsfp_start or int(args[1]) == 0: @@ -611,30 +611,30 @@ def get_value(i): def device_traversal(): if system_ready() is False: - print "System is not ready." - print 'Please install first!' + print("System is not ready.") + print('Please install first!') return if not ALL_DEVICE: devices_info() for i in sorted(ALL_DEVICE.keys()): - print '============================================' - print i.upper() + ': ' - print '============================================' - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print ' ' + j + ':', + print('============================================') + print(i.upper() + ': ') + print('============================================') + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(' ' + j + ':', end=' ') for k in ALL_DEVICE[i][j]: (ret, log) = log_os_system('cat ' + k, 0) func = k.split('/')[-1].strip() func = re.sub(j + '_', '', func, 1) func = re.sub(i.lower() + '_', '', func, 1) if ret == 0: - print func + '=' + log + ' ', + print(func + '=' + log + ' ', end=' ') else: - print func + '=' + 'X' + ' ', - print - print '----------------------------------------------------------------' - print + print(func + '=' + 'X' + ' ', end=' ') + print() + print('----------------------------------------------------------------') + print() return diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/classes/fanutil.py index 18802c803638..22424c74c5c6 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/classes/fanutil.py @@ -200,7 +200,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -219,7 +219,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False #val = ((val + 1 ) * 625 +75 ) / 100 fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_monitor.py index 58ffe1923a85..58940c6636ec 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_monitor.py @@ -193,11 +193,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl') except getopt.GetoptError: - print 'Usage: %s [-d]' % sys.argv[0] + print('Usage: %s [-d]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 elif opt in ('-d'): log_console = 1 diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_util.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_util.py index f6a21bdd3df9..88d40521ebf0 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -53,8 +53,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -70,9 +70,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -112,36 +112,36 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-54 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-54 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ROY]"+txt + print("[ROY]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -292,7 +292,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -303,7 +303,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): @@ -312,7 +312,7 @@ def device_install(): else: status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -330,7 +330,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -346,7 +346,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -360,40 +360,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -446,11 +446,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -473,15 +473,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -515,10 +515,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -558,25 +558,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/classes/fanutil.py index 0e7b06bbd287..6254e1a0b2aa 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/classes/fanutil.py @@ -168,7 +168,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH.format(1)) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -180,7 +180,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH.format(fan_num), 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) fan_file.close() diff --git a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_monitor.py index d5b868255f4a..26ebec649ea7 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_monitor.py @@ -138,11 +138,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl') except getopt.GetoptError: - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 elif opt in ('-d'): log_console = 1 diff --git a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_util.py b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_util.py index e3810e42102e..867f5ce1aee6 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -55,8 +55,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -72,9 +72,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -114,36 +114,36 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-1 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-27 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-1 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-27 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-27 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-27 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ROY]"+txt + print("[ROY]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -251,7 +251,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status @@ -262,7 +262,7 @@ def device_install(): else: status, output =log_os_system("echo optoe2 0x50 > " + path, 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -276,7 +276,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -289,7 +289,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -303,41 +303,41 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -395,11 +395,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -420,15 +420,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system(hex_cmd +" -C "+node, 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -462,10 +462,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -505,25 +505,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/fanutil.py index 91ca21aa528e..affed9ad804d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/fanutil.py @@ -193,7 +193,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -212,7 +212,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) fan_file.close() diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/thermalutil.py index 9087ff1c38f4..5cf9c6fdd3f5 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/thermalutil.py @@ -27,7 +27,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) @@ -37,14 +37,14 @@ def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) if show: - print "ACC: " + str(cmd) + " , result:"+ str(status) + print("ACC: " + str(cmd) + " , result:"+ str(status)) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output @@ -116,7 +116,7 @@ def _get_thermal_val(self, thermal_num): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return 0 file_str = check_file.read() search_str="average current temperature is" diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor.py index 07ec446ab88e..56f1bd585428 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor.py @@ -282,11 +282,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -295,7 +295,7 @@ def main(argv): if sys.argv[1]== '-t': if len(sys.argv)!=8: - print "temp test, need input six temp" + print("temp test, need input six temp") return 0 i=0 @@ -304,11 +304,11 @@ def main(argv): i=i+1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(38) - print "set default fan speed to 37.5%" + print("set default fan speed to 37.5%") monitor = device_monitor(log_file, log_level) # Loop forever, doing something useful hopefully: while True: diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_fan.py index b52ada307698..905bd837d393 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_fan.py @@ -133,7 +133,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -152,7 +152,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -174,11 +174,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_psu.py index cb897b942aeb..56b7ee30c41d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_psu.py @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -138,7 +138,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -164,11 +164,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_pddf_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_pddf_monitor.py index 1e9b2c7d35e5..faa4f7d48b15 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_pddf_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_pddf_monitor.py @@ -268,11 +268,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdlt:', ['lfile=']) except getopt.GetoptError: - print('Usage: %s [-d] [-l ]' % sys.argv[0]) + print(('Usage: %s [-d] [-l ]' % sys.argv[0])) return 0 for opt, arg in opts: if opt == '-h': - print('Usage: %s [-d] [-l ]' % sys.argv[0]) + print(('Usage: %s [-d] [-l ]' % sys.argv[0])) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_util.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_util.py index c5d047e9d4e0..997f8a64359d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_util.py @@ -39,7 +39,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -62,8 +62,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -79,9 +79,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -121,28 +121,28 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-56 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-56 {0|1}\" to set sfp# tx_disable") sys.exit(0) def dis_i2c_ir3570a(addr): cmd = "i2cset -y 0 0x%x 0xE5 0x01" % addr - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) cmd = "i2cset -y 0 0x%x 0x12 0x02" % addr - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) return status def ir3570_check(): cmd = "i2cdump -y 0 0x42 s 0x9a" try: - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) lines = output.split('\n') hn = re.findall(r'\w+', lines[-1]) version = int(hn[1], 16) @@ -151,30 +151,30 @@ def ir3570_check(): else: ret = 0 except Exception as e: - print "Error on ir3570_check() e:" + str(e) + print("Error on ir3570_check() e:" + str(e)) return -1 return ret def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-56 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-56 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ROY]"+txt + print("[ROY]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -306,7 +306,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -317,7 +317,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): @@ -326,7 +326,7 @@ def device_install(): else: status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -344,7 +344,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -360,7 +360,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -374,43 +374,43 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") ir3570_check() if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -466,11 +466,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -493,15 +493,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -535,10 +535,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -577,24 +577,24 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/pddf_switch_svc.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/pddf_switch_svc.py index ad492cfaf56f..1b5f46ef0e1d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/pddf_switch_svc.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/pddf_switch_svc.py @@ -2,91 +2,91 @@ # Script to stop and start the respective platforms default services. # This will be used while switching the pddf->non-pddf mode and vice versa -import commands +import subprocess def check_pddf_support(): return True def stop_platform_svc(): - status, output = commands.getstatusoutput("systemctl stop as7326-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl stop as7326-platform-monitor-fan.service") if status: - print "Stop as7326-platform-fan.service failed %d"%status + print("Stop as7326-platform-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as7326-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl stop as7326-platform-monitor-psu.service") if status: - print "Stop as7326-platform-psu.service failed %d"%status + print("Stop as7326-platform-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as7326-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl stop as7326-platform-monitor.service") if status: - print "Stop as7326-platform-init.service failed %d"%status + print("Stop as7326-platform-init.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl disable as7326-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl disable as7326-platform-monitor.service") if status: - print "Disable as7326-platform-monitor.service failed %d"%status + print("Disable as7326-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7326_util.py clean") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7326_util.py clean") if status: - print "accton_as7326_util.py clean command failed %d"%status + print("accton_as7326_util.py clean command failed %d"%status) return False # HACK , stop the pddf-platform-init service if it is active - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service along with other platform serives failed %d"%status + print("Stop pddf-platform-init.service along with other platform serives failed %d"%status) return False return True def start_platform_svc(): - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7326_util.py install") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7326_util.py install") if status: - print "accton_as7326_util.py install command failed %d"%status + print("accton_as7326_util.py install command failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl enable as7326-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl enable as7326-platform-monitor.service") if status: - print "Enable as7326-platform-monitor.service failed %d"%status + print("Enable as7326-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as7326-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl start as7326-platform-monitor-fan.service") if status: - print "Start as7326-platform-monitor-fan.service failed %d"%status + print("Start as7326-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as7326-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl start as7326-platform-monitor-psu.service") if status: - print "Start as7326-platform-monitor-psu.service failed %d"%status + print("Start as7326-platform-monitor-psu.service failed %d"%status) return False return True def start_platform_pddf(): - status, output = commands.getstatusoutput("systemctl start pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl start pddf-platform-init.service") if status: - print "Start pddf-platform-init.service failed %d"%status + print("Start pddf-platform-init.service failed %d"%status) return False return True def stop_platform_pddf(): - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service failed %d"%status + print("Stop pddf-platform-init.service failed %d"%status) return False return True def main(): - print"stop_platform_svc" + print("stop_platform_svc") stop_platform_svc() #print"start_platform_svc" #start_platform_svc() #print"start_platform_pddf" #start_platform_pddf() - print"stop_platform_pddf" + print("stop_platform_pddf") stop_platform_pddf() #pass diff --git a/platform/broadcom/sonic-platform-modules-accton/as7712-32x/utils/accton_as7712_util.py b/platform/broadcom/sonic-platform-modules-accton/as7712-32x/utils/accton_as7712_util.py index 8ebc39e6c9c1..c519525d6dd1 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7712-32x/utils/accton_as7712_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7712-32x/utils/accton_as7712_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -53,8 +53,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -70,9 +70,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -112,36 +112,36 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ROY]"+txt + print("[ROY]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -276,7 +276,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -287,13 +287,13 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -311,7 +311,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -327,7 +327,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -341,40 +341,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -427,11 +427,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -454,15 +454,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -496,10 +496,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -539,25 +539,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/classes/fanutil.py index 9a69f6e1d537..469b2fbfb4c3 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/classes/fanutil.py @@ -194,7 +194,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -213,7 +213,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False #val = ((val + 1 ) * 625 +75 ) / 100 fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_monitor.py index c423cc441d92..f9686f846efb 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_monitor.py @@ -179,11 +179,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_util.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_util.py index 142ce754a5c7..6322aac6bbd7 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -149,8 +149,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -166,9 +166,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -208,28 +208,28 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def dis_i2c_ir3570a(addr): cmd = "i2cset -y 0 0x%x 0xE5 0x01" % addr - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) cmd = "i2cset -y 0 0x%x 0x12 0x02" % addr - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) return status def ir3570_check(): cmd = "i2cdump -y 0 0x42 s 0x9a" try: - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) lines = output.split('\n') hn = re.findall(r'\w+', lines[-1]) version = int(hn[1], 16) @@ -238,32 +238,32 @@ def ir3570_check(): else: ret = 0 except Exception as e: - print "Error on ir3570_check() e:" + str(e) + print("Error on ir3570_check() e:" + str(e)) return -1 return ret def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -341,19 +341,19 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status status, output =log_os_system("echo port"+str(i)+" > /sys/bus/i2c/devices/"+str(sfp_map[i])+"-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -371,7 +371,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -387,7 +387,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -397,7 +397,7 @@ def system_ready(): if driver_inserted() == False: return False if not device_exist(): - print "not device_exist()" + print("not device_exist()") return False return True @@ -408,7 +408,7 @@ def do_install(): if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") ir3570_check() @@ -418,23 +418,23 @@ def do_install(): if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -487,11 +487,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -514,15 +514,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -556,10 +556,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -599,25 +599,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/classes/fanutil.py index e001e94092c7..381b787e0d80 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/classes/fanutil.py @@ -202,7 +202,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -221,7 +221,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False #val = ((val + 1 ) * 625 +75 ) / 100 fan_file.write(str(val)) @@ -237,7 +237,7 @@ def get_fanr_speed(self, fan_num): def get_fan_status(self, fan_num): if fan_num < self.FAN_NUM_1_IDX or fan_num > self.FAN_NUM_ON_MAIN_BROAD: logging.debug('GET. Parameter error. fan_num, %d', fan_num) - print "fan %d return none" %fan_num + print("fan %d return none" %fan_num) return None if self.get_fan_fault(fan_num) is not None and self.get_fan_fault(fan_num) > 0: diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_drv_handler.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_drv_handler.py index ed5af4818de3..83e26c03a4e5 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_drv_handler.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_drv_handler.py @@ -27,7 +27,7 @@ import logging import logging.config import time # this is only being used as part of the example - import commands + import subprocess except ImportError as e: raise ImportError('%s - required module not found' % str(e)) @@ -41,25 +41,25 @@ def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) if DEBUG == True: my_log (cmd +" , result:" + str(status)) else: if show: - print "ACC: " + str(cmd) + " , result:"+ str(status) + print("ACC: " + str(cmd) + " , result:"+ str(status)) #my_log ("cmd:" + cmd) #my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output @@ -120,7 +120,7 @@ def __init__(self, log_file, log_level): def manage_ipmi_qsfp(self): logging.debug ("drv hanlder-manage_ipmi_qsfp") - print "drv hanlder" + print("drv hanlder") #Handle QSFP case ipmi_cmd = self.IPMI_CMD_QSFP + " 0x10 > " +self.QSFP_PRESENT_FILE log_os_system(ipmi_cmd, 0) @@ -129,7 +129,7 @@ def manage_ipmi_qsfp(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() pres_line= line.rstrip().replace(" ","") while line: @@ -158,7 +158,7 @@ def manage_ipmi_qsfp(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line= line.rstrip().replace(" ","") while line: @@ -170,7 +170,7 @@ def manage_ipmi_qsfp(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line+= line.rstrip().replace(" ","") @@ -209,7 +209,7 @@ def manage_ipmi_thermal(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line= line.rstrip().replace(" ","") while line: @@ -244,7 +244,7 @@ def manage_ipmi_fan(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line= line.rstrip().replace(" ","") while line: @@ -293,7 +293,7 @@ def manage_ipmi_psu(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line= line.rstrip().replace(" ","") while line: @@ -366,7 +366,7 @@ def manage_ipmi_sys(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line= line.rstrip().replace(" ","") while line: @@ -379,7 +379,7 @@ def manage_ipmi_sys(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line+= line.rstrip().replace(" ","") while line: @@ -401,11 +401,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_monitor.py index 86b4f1852066..ccaa6e574141 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_monitor.py @@ -199,11 +199,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_util.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_util.py index 3a31d253f633..bb1343f68433 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -145,8 +145,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -162,9 +162,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -204,39 +204,39 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -316,22 +316,22 @@ def device_install(): # if FORCE == 0: # return status #else: - print "Prepar to create instance.............." + print("Prepar to create instance..............") for i in range(0,len(mknod_xb)): - print "Beginn to create instance.............." + print("Beginn to create instance..............") status, output = log_os_system(mknod_xb[i], 1) - print "status=%s" %status - print "output=%s" %output + print("status=%s" %status) + print("output=%s" %output) if status: - print output + print(output) if FORCE == 0: return status #time.sleep (50.0 / 1000.0) - print "Create sfp instance.............." + print("Create sfp instance..............") for i in range(0,len(sfp_map)): status, output =log_os_system("echo as7716_32xb_oom 0x"+str(sfp_map[i])+ " > /sys/bus/i2c/devices/i2c-0/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status #status, output =log_os_system("echo port"+str(i)+" > /sys/bus/i2c/devices/0-000"+str(sfp_map[i])+"/port_name", 1) @@ -349,7 +349,7 @@ def device_uninstall(): print(target) status, output =log_os_system(target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -362,7 +362,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -370,48 +370,48 @@ def device_uninstall(): def system_ready(): if driver_inserted() == False: - print "driver_inserted() == False" + print("driver_inserted() == False") return False if not device_exist(): - print "not device_exist()" + print("not device_exist()") return False return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_inserted() == False: - print "No driver, installing.1..." + print("No driver, installing.1...") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing..2.." + print("No device, installing..2..") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking systemm...." + print("Checking systemm....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -443,13 +443,13 @@ def devices_info(): for k in range(0,DEVICE_NO[key]): node = key+str(k+1) path = i2c_prefix+ str(sfp_map[k])+ buses[i]+"/"+ nodes[j] - print "path= %s" %path - print "i=%d" %i - print "k=%d" %k - print "j= %d" %j - print "sfp_map[k]=%s" %sfp_map[k] - print " buses[i]=%s" %buses[i] - print "nodes[j]=%s" %nodes[j] + print("path= %s" %path) + print("i=%d" %i) + print("k=%d" %k) + print("j= %d" %j) + print("sfp_map[k]=%s" %sfp_map[k]) + print(" buses[i]=%s" %buses[i]) + print("nodes[j]=%s" %nodes[j]) my_log(node+": "+ path) ALL_DEVICE[key][node].append(path) else: @@ -471,11 +471,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -498,15 +498,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -540,10 +540,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -583,25 +583,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/fanutil.py index ca0f3f9da1e3..164bdc22b81d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/fanutil.py @@ -191,7 +191,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -210,7 +210,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False #val = ((val + 1 ) * 625 +75 ) / 100 fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/thermalutil.py index 35ccf7efdd1e..66f5455e11ba 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/thermalutil.py @@ -28,7 +28,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor.py index aada6ba5c507..f506b72f83ab 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor.py @@ -291,11 +291,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -304,7 +304,7 @@ def main(argv): if sys.argv[1]== '-t': if len(sys.argv)!=7: - print "temp test, need input six temp" + print("temp test, need input six temp") return 0 i=0 @@ -313,11 +313,11 @@ def main(argv): i=i+1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(38) - print "set default fan speed to 37.5%" + print("set default fan speed to 37.5%") monitor = device_monitor(log_file, log_level) # Loop forever, doing something useful hopefully: while True: diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_fan.py index a2139341150c..cf86a14adc3d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_fan.py @@ -130,7 +130,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -149,7 +149,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -171,11 +171,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_psu.py index d139e3f3f1c8..8527df743dae 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_psu.py @@ -96,7 +96,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -143,11 +143,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_pddf_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_pddf_monitor.py index fd3f55995878..fd283cd6cc2b 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_pddf_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_pddf_monitor.py @@ -279,11 +279,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print('Usage: %s [-d] [-l ]' % sys.argv[0]) + print(('Usage: %s [-d] [-l ]' % sys.argv[0])) return 0 for opt, arg in opts: if opt == '-h': - print('Usage: %s [-d] [-l ]' % sys.argv[0]) + print(('Usage: %s [-d] [-l ]' % sys.argv[0])) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_util.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_util.py index b6d3c02935e0..bee413fe0655 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_util.py @@ -100,8 +100,8 @@ if DEBUG == True: - print(sys.argv[0]) - print('ARGV :', sys.argv[1:]) + print((sys.argv[0])) + print(('ARGV :', sys.argv[1:])) def main(): @@ -119,7 +119,7 @@ def main(): if DEBUG == True: print(options) print(args) - print(len(sys.argv)) + print((len(sys.argv))) for opt, arg in options: if opt in ('-h', '--help'): @@ -143,7 +143,7 @@ def main(): return 0 def show_help(): - print( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) + print(( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]})) sys.exit(0) def dis_i2c_ir3570a(addr): @@ -165,14 +165,14 @@ def ir3570_check(): else: ret = 0 except Exception as e: - print( "Error on ir3570_check() e:" + str(e)) + print(( "Error on ir3570_check() e:" + str(e))) return -1 return ret def my_log(txt): if DEBUG == True: - print("[ACCTON DBG]: ",txt) + print(("[ACCTON DBG]: ",txt)) return def log_os_system(cmd, show): @@ -186,7 +186,7 @@ def log_os_system(cmd, show): if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -325,7 +325,7 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" drivers detected....") + print((PROJECT_NAME.upper()+" drivers detected....")) ir3570_check() @@ -335,12 +335,12 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" devices detected....") + print((PROJECT_NAME.upper()+" devices detected....")) return def do_uninstall(): if not device_exist(): - print(PROJECT_NAME.upper()+" has no device installed....") + print((PROJECT_NAME.upper()+" has no device installed....")) else: print("Removing device....") status = device_uninstall() @@ -349,7 +349,7 @@ def do_uninstall(): return status if driver_inserted()== False : - print(PROJECT_NAME.upper()+" has no driver installed....") + print((PROJECT_NAME.upper()+" has no driver installed....")) else: print("Removing installed driver....") status = driver_uninstall() diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/pddf_switch_svc.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/pddf_switch_svc.py index 9022132859f3..9664d21b6c36 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/pddf_switch_svc.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/pddf_switch_svc.py @@ -2,95 +2,95 @@ # Script to stop and start the respective platforms default services. # This will be used while switching the pddf->non-pddf mode and vice versa -import commands +import subprocess def check_pddf_support(): return True def stop_platform_svc(): - status, output = commands.getstatusoutput("systemctl stop as7726-32x-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl stop as7726-32x-platform-monitor-fan.service") if status: - print "Stop as7726-32x-platform-monitor-fan.service failed %d"%status + print("Stop as7726-32x-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl disable as7726-32x-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl disable as7726-32x-platform-monitor-fan.service") if status: - print "Disable as7726-32x-platform-monitor-fan.service failed %d"%status + print("Disable as7726-32x-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as7726-32x-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl stop as7726-32x-platform-monitor-psu.service") if status: - print "Stop as7726-32x-platform-monitor-psu.service failed %d"%status + print("Stop as7726-32x-platform-monitor-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl disable as7726-32x-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl disable as7726-32x-platform-monitor-psu.service") if status: - print "Disable as7726-32x-platform-monitor-psu.service failed %d"%status + print("Disable as7726-32x-platform-monitor-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as7726-32x-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl stop as7726-32x-platform-monitor.service") if status: - print "Stop as7726-32x-platform-monitor.service failed %d"%status + print("Stop as7726-32x-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl disable as7726-32x-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl disable as7726-32x-platform-monitor.service") if status: - print "Disable as7726-32x-platform-monitor.service failed %d"%status + print("Disable as7726-32x-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7726_32x_util.py clean") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7726_32x_util.py clean") if status: - print "accton_as7726_32x_util.py clean command failed %d"%status + print("accton_as7726_32x_util.py clean command failed %d"%status) return False # HACK , stop the pddf-platform-init service if it is active - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service along with other platform serives failed %d"%status + print("Stop pddf-platform-init.service along with other platform serives failed %d"%status) return False return True def start_platform_svc(): - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7726_32x_util.py install") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7726_32x_util.py install") if status: - print "accton_as7726_32x_util.py install command failed %d"%status + print("accton_as7726_32x_util.py install command failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl enable as7726-32x-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl enable as7726-32x-platform-monitor-fan.service") if status: - print "Enable as7726-32x-platform-monitor-fan.service failed %d"%status + print("Enable as7726-32x-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as7726-32x-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl start as7726-32x-platform-monitor-fan.service") if status: - print "Start as7726-32x-platform-monitor-fan.service failed %d"%status + print("Start as7726-32x-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl enable as7726-32x-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl enable as7726-32x-platform-monitor-psu.service") if status: - print "Enable as7726-32x-platform-monitor-psu.service failed %d"%status + print("Enable as7726-32x-platform-monitor-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as7726-32x-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl start as7726-32x-platform-monitor-psu.service") if status: - print "Start as7726-32x-platform-monitor-psu.service failed %d"%status + print("Start as7726-32x-platform-monitor-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl enable as7726-32x-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl enable as7726-32x-platform-monitor.service") if status: - print "Enable as7726-32x-platform-monitor.service failed %d"%status + print("Enable as7726-32x-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as7726-32x-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl start as7726-32x-platform-monitor.service") if status: - print "Start as7726-32x-platform-monitor.service failed %d"%status + print("Start as7726-32x-platform-monitor.service failed %d"%status) return False return True def start_platform_pddf(): - status, output = commands.getstatusoutput("systemctl start pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl start pddf-platform-init.service") if status: - print "Start pddf-platform-init.service failed %d"%status + print("Start pddf-platform-init.service failed %d"%status) return False return True def stop_platform_pddf(): - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service failed %d"%status + print("Stop pddf-platform-init.service failed %d"%status) return False return True diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/classes/fanutil.py index 42ccb17eaa06..f4807487bf38 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/classes/fanutil.py @@ -185,7 +185,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -204,7 +204,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) fan_file.close() diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_monitor.py index 217351ad2a3c..d98cec58d2e5 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_monitor.py @@ -136,11 +136,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_pddf_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_pddf_monitor.py index a7fc6df09966..8d64cc961706 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_pddf_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_pddf_monitor.py @@ -167,11 +167,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdlt:', ['lfile=']) except getopt.GetoptError: - print("Usage: %s [-d] [-l ]" % sys.argv[0]) + print(("Usage: %s [-d] [-l ]" % sys.argv[0])) return 0 for opt, arg in opts: if opt == '-h': - print("Usage: %s [-d] [-l ]" % sys.argv[0]) + print(("Usage: %s [-d] [-l ]" % sys.argv[0])) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_util.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_util.py index 0d3a47b8ba76..525f2786647e 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_util.py @@ -48,8 +48,8 @@ if DEBUG == True: - print(sys.argv[0]) - print('ARGV :', sys.argv[1:] ) + print((sys.argv[0])) + print(('ARGV :', sys.argv[1:] )) def main(): @@ -67,7 +67,7 @@ def main(): if DEBUG == True: print(options) print(args) - print(len(sys.argv)) + print((len(sys.argv))) for opt, arg in options: if opt in ('-h', '--help'): @@ -91,7 +91,7 @@ def main(): return 0 def show_help(): - print( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) + print(( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]})) sys.exit(0) @@ -114,13 +114,13 @@ def ir3570_check(): else: ret = 0 except Exception as e: - print("Error on ir3570_check() e:" + str(e)) + print(("Error on ir3570_check() e:" + str(e))) return -1 return ret def my_log(txt): if DEBUG == True: - print("[ROY]"+txt) + print(("[ROY]"+txt)) return def log_os_system(cmd, show): @@ -131,7 +131,7 @@ def log_os_system(cmd, show): if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -308,7 +308,7 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" drivers detected....") + print((PROJECT_NAME.upper()+" drivers detected....")) ir3570_check() @@ -319,13 +319,13 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" devices detected....") + print((PROJECT_NAME.upper()+" devices detected....")) return def do_uninstall(): print("Checking system....") if not device_exist(): - print(PROJECT_NAME.upper() +" has no device installed....") + print((PROJECT_NAME.upper() +" has no device installed....")) else: print("Removing device....") status = device_uninstall() @@ -334,7 +334,7 @@ def do_uninstall(): return status if driver_check()== False : - print(PROJECT_NAME.upper() +" has no driver installed....") + print((PROJECT_NAME.upper() +" has no driver installed....")) else: print("Removing installed driver....") status = driver_uninstall() diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/pddf_switch_svc.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/pddf_switch_svc.py index 0c9508f76104..98bf05eca115 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/pddf_switch_svc.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/pddf_switch_svc.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # Script to stop and start the respective platforms default services. # This will be used while switching the pddf->non-pddf mode and vice versa -import commands +import subprocess def check_pddf_support(): @@ -10,56 +10,56 @@ def check_pddf_support(): def stop_platform_svc(): - status, output = commands.getstatusoutput("systemctl stop as7816-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop as7816-platform-init.service") if status: - print("Stop as7816-platform-init.service failed %d" % status) + print(("Stop as7816-platform-init.service failed %d" % status)) return False - status, output = commands.getstatusoutput("systemctl disable as7816-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl disable as7816-platform-init.service") if status: - print("Disable as7816-platform-init.service failed %d" % status) + print(("Disable as7816-platform-init.service failed %d" % status)) return False - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7816_util.py clean") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7816_util.py clean") if status: - print("accton_as7816_util.py clean command failed %d" % status) + print(("accton_as7816_util.py clean command failed %d" % status)) return False # HACK , stop the pddf-platform-init service if it is active - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print("Stop pddf-platform-init.service along with other platform serives failed %d" % status) + print(("Stop pddf-platform-init.service along with other platform serives failed %d" % status)) return False return True def start_platform_svc(): - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7816_util.py install") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7816_util.py install") if status: - print("accton_as7816_util.py install command failed %d" % status) + print(("accton_as7816_util.py install command failed %d" % status)) return False - status, output = commands.getstatusoutput("systemctl enable as7816-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl enable as7816-platform-init.service") if status: - print("Enable as7816-platform-init.service failed %d" % status) + print(("Enable as7816-platform-init.service failed %d" % status)) return False return True def start_platform_pddf(): - status, output = commands.getstatusoutput("systemctl start pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl start pddf-platform-init.service") if status: - print("Start pddf-platform-init.service failed %d" % status) + print(("Start pddf-platform-init.service failed %d" % status)) return False return True def stop_platform_pddf(): - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print("Stop pddf-platform-init.service failed %d" % status) + print(("Stop pddf-platform-init.service failed %d" % status)) return False return True diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/fanutil.py index 52889cd5895d..2afbf905a390 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/fanutil.py @@ -184,7 +184,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -196,7 +196,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/thermalutil.py index abbc5e819a8a..5f6af3811f01 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/thermalutil.py @@ -24,7 +24,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor.py index 1cc35e577b8d..f0eb95d97f88 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor.py @@ -20,7 +20,7 @@ # ------------------------------------------------------------------ try: - import commands + import subprocess import getopt, sys import logging import logging.config @@ -184,7 +184,7 @@ def match(self, *args): def power_off_dut(): cmd_str="i2cset -y -f 19 0x60 0x60 0x10" - status, output = commands.getstatusoutput(cmd_str) + status, output = subprocess.getstatusoutput(cmd_str) return status #If only one PSU insert(or one of PSU pwoer fail), and watt >800w. Must let DUT fan pwm >= 75% in AFO. @@ -493,11 +493,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -506,7 +506,7 @@ def main(argv): if sys.argv[1]== '-t': if len(sys.argv)!=10: - print "temp test, need input 8 temp" + print("temp test, need input 8 temp") return 0 i=0 for x in range(2, 10): @@ -514,7 +514,7 @@ def main(argv): i=i+1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(100) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_fan.py index b22dd5d7984d..8c2b79ac3d6d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_fan.py @@ -130,7 +130,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -149,7 +149,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -171,11 +171,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_psu.py index a3c8a0be65b3..d8327d9a97eb 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_psu.py @@ -96,7 +96,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -143,11 +143,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_pddf_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_pddf_monitor.py index dff2d5ffe812..fa08071045f5 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_pddf_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_pddf_monitor.py @@ -178,7 +178,7 @@ def match(self, *args): def as9716_32d_set_fan_speed(pwm): if pwm < 0 or pwm > 100: - print("Error: Wrong duty cycle value %d" % (pwm)) + print(("Error: Wrong duty cycle value %d" % (pwm))) return -1 platform_chassis.get_fan(0).set_speed(pwm) time.sleep(1) @@ -477,11 +477,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdlt:', ['lfile=']) except getopt.GetoptError: - print("Usage: %s [-d] [-l ]" % sys.argv[0]) + print(("Usage: %s [-d] [-l ]" % sys.argv[0])) return 0 for opt, arg in opts: if opt == '-h': - print("Usage: %s [-d] [-l ]" % sys.argv[0]) + print(("Usage: %s [-d] [-l ]" % sys.argv[0])) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_util.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_util.py index 8eabc233fb2d..647e26e07d2c 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_util.py @@ -106,8 +106,8 @@ if DEBUG == True: - print(sys.argv[0]) - print('ARGV :', sys.argv[1:]) + print((sys.argv[0])) + print(('ARGV :', sys.argv[1:])) def main(): @@ -125,7 +125,7 @@ def main(): if DEBUG == True: print(options) print(args) - print(len(sys.argv)) + print((len(sys.argv))) for opt, arg in options: if opt in ('-h', '--help'): @@ -149,7 +149,7 @@ def main(): return 0 def show_help(): - print( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) + print(( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]})) sys.exit(0) def dis_i2c_ir3570a(addr): @@ -171,14 +171,14 @@ def ir3570_check(): else: ret = 0 except Exception as e: - print( "Error on ir3570_check() e:" + str(e)) + print(( "Error on ir3570_check() e:" + str(e))) return -1 return ret def my_log(txt): if DEBUG == True: - print("[ACCTON DBG]: "+txt) + print(("[ACCTON DBG]: "+txt)) return def log_os_system(cmd, show): @@ -192,7 +192,7 @@ def log_os_system(cmd, show): if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -345,7 +345,7 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" drivers detected....") + print((PROJECT_NAME.upper()+" drivers detected....")) ir3570_check() @@ -355,12 +355,12 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" devices detected....") + print((PROJECT_NAME.upper()+" devices detected....")) return def do_uninstall(): if not device_exist(): - print(PROJECT_NAME.upper()+" has no device installed....") + print((PROJECT_NAME.upper()+" has no device installed....")) else: print("Removing device....") status = device_uninstall() @@ -369,7 +369,7 @@ def do_uninstall(): return status if driver_inserted()== False : - print(PROJECT_NAME.upper()+" has no driver installed....") + print((PROJECT_NAME.upper()+" has no driver installed....")) else: print("Removing installed driver....") status = driver_uninstall() diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/pddf_switch_svc.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/pddf_switch_svc.py index 3e684a42daca..95e42b5c8971 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/pddf_switch_svc.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/pddf_switch_svc.py @@ -1,81 +1,81 @@ #!/usr/bin/env python # Script to stop and start the respective platforms default services. # This will be used while switching the pddf->non-pddf mode and vice versa -import commands +import subprocess def check_pddf_support(): return True def stop_platform_svc(): - status, output = commands.getstatusoutput("systemctl stop as9716-32d-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl stop as9716-32d-platform-monitor-fan.service") if status: - print "Stop as9716-32d-platform-fan.service failed %d"%status + print("Stop as9716-32d-platform-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as9716-32d-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl stop as9716-32d-platform-monitor-psu.service") if status: - print "Stop as9716-32d-platform-psu.service failed %d"%status + print("Stop as9716-32d-platform-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as9716-32d-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl stop as9716-32d-platform-monitor.service") if status: - print "Stop as9716-32d-platform-init.service failed %d"%status + print("Stop as9716-32d-platform-init.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl disable as9716-32d-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl disable as9716-32d-platform-monitor.service") if status: - print "Disable as9716-32d-platform-monitor.service failed %d"%status + print("Disable as9716-32d-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("/usr/local/bin/accton_as9716_32d_util.py clean") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as9716_32d_util.py clean") if status: - print "accton_as9716_32d_util.py clean command failed %d"%status + print("accton_as9716_32d_util.py clean command failed %d"%status) return False # HACK , stop the pddf-platform-init service if it is active - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service along with other platform serives failed %d"%status + print("Stop pddf-platform-init.service along with other platform serives failed %d"%status) return False return True def start_platform_svc(): - status, output = commands.getstatusoutput("/usr/local/bin/accton_as9716_32d_util.py install") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as9716_32d_util.py install") if status: - print "accton_as9716_32d_util.py install command failed %d"%status + print("accton_as9716_32d_util.py install command failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl enable as9716-32d-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl enable as9716-32d-platform-monitor.service") if status: - print "Enable as9716-32d-platform-monitor.service failed %d"%status + print("Enable as9716-32d-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as9716-32d-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl start as9716-32d-platform-monitor-fan.service") if status: - print "Start as9716-32d-platform-monitor-fan.service failed %d"%status + print("Start as9716-32d-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as9716-32d-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl start as9716-32d-platform-monitor-psu.service") if status: - print "Start as9716-32d-platform-monitor-psu.service failed %d"%status + print("Start as9716-32d-platform-monitor-psu.service failed %d"%status) return False return True def start_platform_pddf(): - status, output = commands.getstatusoutput("systemctl start pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl start pddf-platform-init.service") if status: - print "Start pddf-platform-init.service failed %d"%status + print("Start pddf-platform-init.service failed %d"%status) return False return True def stop_platform_pddf(): - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service failed %d"%status + print("Stop pddf-platform-init.service failed %d"%status) return False return True diff --git a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/classes/fanutil.py index 1231b458801e..4d6e177edc83 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/classes/fanutil.py @@ -182,7 +182,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -194,7 +194,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor.py index 9d91e942baa2..da399becbafb 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor.py @@ -20,7 +20,7 @@ # ------------------------------------------------------------------ try: - import commands + import subprocess import getopt import sys import logging @@ -205,7 +205,7 @@ def match(self, *args): def power_off_dut(): cmd_str="i2cset -y -f 1 0x60 0x60 0x10" - status, output = commands.getstatusoutput(cmd_str) + status, output = subprocess.getstatusoutput(cmd_str) return status #If only one PSU insert(or one of PSU pwoer fail), and watt >800w. Must let DUT fan pwm >= 75% in AFO. @@ -530,11 +530,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -543,7 +543,7 @@ def main(argv): if sys.argv[1]== '-t': if len(sys.argv)!=9: - print "temp test, need input 7 temp" + print("temp test, need input 7 temp") return 0 i=0 for x in range(2, 9): @@ -551,7 +551,7 @@ def main(argv): i=i+1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(100) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_fan.py index 0e3d8ee08a63..7f49be002f0d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_fan.py @@ -126,7 +126,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -145,7 +145,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -167,11 +167,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_psu.py index d9159c38bcf1..aa32d64bcb32 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_psu.py @@ -92,7 +92,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -113,7 +113,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -139,11 +139,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_util.py b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_util.py index d686a77b91c5..5ba732cb73b2 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_util.py @@ -29,7 +29,7 @@ set : change board setting with fan|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -180,9 +180,9 @@ def main(): 'force', ]) if DEBUG: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -193,7 +193,7 @@ def main(): elif opt in ('-f', '--force'): FORCE = 1 else: - print "TEST" + print("TEST") logging.info('no option') for arg in args: if arg == 'install': @@ -227,41 +227,41 @@ def main(): def show_help(): - print __doc__ % {'scriptName': sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName': sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1] + " " + args[0] - print cmd + " [sfp|fan]" - print " use \"" + cmd + " fan 0-100\" to set fan duty percetage" - print " use \"" + cmd + " sfp 33-34 {0|1}\" to set sfp# tx_disable" + print(cmd + " [sfp|fan]") + print(" use \"" + cmd + " fan 0-100\" to set fan duty percetage") + print(" use \"" + cmd + " sfp 33-34 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1] + " " + args[0] - print " use \"" + cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \"" + cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG: - print "[ACCTON DBG]: " + txt + print("[ACCTON DBG]: " + txt) return def log_os_system(cmd, show): logging.info('Run :' + cmd) output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log(cmd + "with result:" + str(status)) my_log("cmd:" + cmd) my_log(" output:" + output) if status: logging.info('Failed :' + cmd) if show: - print('Failed :' + cmd) + print(('Failed :' + cmd)) return status, output @@ -302,7 +302,7 @@ def driver_uninstall(): for i in range(0, len(kos)): rm = kos[-(i + 1)].replace("modprobe", "modprobe -rq") lst = rm.split(" ") - print "lst=%s" % lst + print("lst=%s" % lst) if len(lst) > 3: del(lst[3]) rm = " ".join(lst) @@ -323,7 +323,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status print("Check SFP") @@ -338,7 +338,7 @@ def device_install(): str(sfp_map[i]) + "/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -348,7 +348,7 @@ def device_install(): str(sfp_map[i]) + "-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -363,7 +363,7 @@ def device_uninstall(): str(sfp_map[i]) + "/delete_device" status, output = log_os_system("echo 0x50 > " + target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -376,7 +376,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -387,7 +387,7 @@ def system_ready(): if driver_inserted() == False: return False if not device_exist(): - print "not device_exist()" + print("not device_exist()") return False return True @@ -403,29 +403,29 @@ def do_sonic_platform_install(): if os.path.exists(SONIC_PLATFORM_BSP_WHL_PKG_PY3): status, output = log_os_system("pip3 install "+ SONIC_PLATFORM_BSP_WHL_PKG_PY3, 1) if status: - print "Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) + print("Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3)) return status else: - print "Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) + print("Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3)) else: - print('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3))) else: - print('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_sonic_platform_clean(): status, output = log_os_system("pip3 show sonic-platform > /dev/null 2>&1", 0) if status: - print('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3))) else: status, output = log_os_system("pip3 uninstall sonic-platform -y", 0) if status: - print('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3))) return status else: - print('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3))) return @@ -437,14 +437,14 @@ def do_install(): if FORCE == 0: return status else: - print PROJECT_NAME.upper() + " drivers detected...." + print(PROJECT_NAME.upper() + " drivers detected....") if not device_exist(): status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper() + " devices detected...." + print(PROJECT_NAME.upper() + " devices detected....") # for i in range(len(cpld_set)): # status, output = log_os_system(cpld_set[i], 1) @@ -459,18 +459,18 @@ def do_install(): def do_uninstall(): if not device_exist(): - print PROJECT_NAME.upper() + " has no device installed...." + print(PROJECT_NAME.upper() + " has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted() == False: - print PROJECT_NAME.upper() + " has no driver installed...." + print(PROJECT_NAME.upper() + " has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -539,11 +539,11 @@ def devices_info(): # show dict all in the order if DEBUG: for i in sorted(ALL_DEVICE.keys()): - print(i + ": ") + print((i + ": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" " + j) + print((" " + j)) for k in (ALL_DEVICE[i][j]): - print(" " + " " + k) + print((" " + " " + k)) return @@ -569,15 +569,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print "node=%s" % node - print node + ":" + print("node=%s" % node) + print(node + ":") ret, log = log_os_system("cat " + node + "| " + hex_cmd + " -C", 1) if ret == 0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return @@ -602,10 +602,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat " + node, 1) if ret == 0: - print ("Previous fan duty: " + log.strip() + "%") + print(("Previous fan duty: " + log.strip() + "%")) ret, log = log_os_system("echo " + args[1] + " >" + node, 1) if ret == 0: - print ("Current fan duty: " + args[1] + "%") + print(("Current fan duty: " + args[1] + "%")) return ret elif args[0] == 'sfp': if int(args[1]) > DEVICE_NO[args[0]] or int(args[1]) < DEVICE_NO[args[0]]-1: #33-34 @@ -649,24 +649,24 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper() + ": ") + print((i.upper() + ": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " " + j + ":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" " + j + ":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat " + k, 0) func = k.split("/")[-1].strip() func = re.sub(j + '_', '', func, 1) func = re.sub(i.lower() + '_', '', func, 1) if ret == 0: - print func + "=" + log + " ", + print(func + "=" + log + " ", end=' ') else: - print func + "=" + "X" + " ", - print + print(func + "=" + "X" + " ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return diff --git a/platform/broadcom/sonic-platform-modules-accton/debian/rules b/platform/broadcom/sonic-platform-modules-accton/debian/rules index 826a3217dc86..8cd7611bb6e3 100755 --- a/platform/broadcom/sonic-platform-modules-accton/debian/rules +++ b/platform/broadcom/sonic-platform-modules-accton/debian/rules @@ -13,7 +13,6 @@ include /usr/share/dpkg/pkg-info.mk export INSTALL_MOD_DIR:=extra -PYTHON ?= python2 PYTHON3 ?= python3 PACKAGE_PRE_NAME := sonic-platform-accton @@ -29,7 +28,7 @@ SERVICE_DIR := service CONF_DIR := conf %: - dh $@ --with systemd,python2,python3 --buildsystem=pybuild + dh $@ --with systemd,python3 --buildsystem=pybuild clean: dh_testdir @@ -40,7 +39,7 @@ build: #make modules -C $(KERNEL_SRC)/build M=$(MODULE_SRC) (for mod in $(MODULE_DIRS); do \ make modules -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules; \ - $(PYTHON) $${mod}/setup.py build; \ + $(PYTHON3) $${mod}/setup.py build; \ cd $(MOD_SRC_DIR)/$${mod}; \ if [ -f sonic_platform_setup.py ]; then \ $(PYTHON3) sonic_platform_setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}; \ @@ -73,7 +72,7 @@ binary-indep: cp $(MOD_SRC_DIR)/$${mod}/$(MODULE_DIR)/*.ko debian/$(PACKAGE_PRE_NAME)-$${mod}/$(KERNEL_SRC)/$(INSTALL_MOD_DIR); \ cp $(MOD_SRC_DIR)/$${mod}/$(UTILS_DIR)/* debian/$(PACKAGE_PRE_NAME)-$${mod}/usr/local/bin/; \ cp $(MOD_SRC_DIR)/$${mod}/$(SERVICE_DIR)/*.service debian/$(PACKAGE_PRE_NAME)-$${mod}/lib/systemd/system/; \ - $(PYTHON) $${mod}/setup.py install --root=$(MOD_SRC_DIR)/debian/$(PACKAGE_PRE_NAME)-$${mod} --install-layout=deb; \ + $(PYTHON3) $${mod}/setup.py install --root=$(MOD_SRC_DIR)/debian/$(PACKAGE_PRE_NAME)-$${mod} --install-layout=deb; \ done) # Resuming debhelper scripts dh_testroot diff --git a/platform/broadcom/sonic-platform-modules-accton/minipack/classes/pimutil.py b/platform/broadcom/sonic-platform-modules-accton/minipack/classes/pimutil.py index 778ff76afd19..05b68202be3c 100755 --- a/platform/broadcom/sonic-platform-modules-accton/minipack/classes/pimutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/minipack/classes/pimutil.py @@ -176,9 +176,9 @@ def show_qsfp_present_status(pim_num): interrupt = fpga_io(dom_base[pim_num]+dom["qsfp_present_intr"]) mask = fpga_io(dom_base[pim_num]+dom["qsfp_present_intr_mask"]) - print + print() print(" (0x48) (0x50) (0x58)") - print(" 0x%08X 0x%08X 0x%08X" %(status, interrupt, mask)) + print((" 0x%08X 0x%08X 0x%08X" %(status, interrupt, mask))) print(" Status Interrupt Mask") for row in range(8): output_str = str() @@ -188,11 +188,11 @@ def show_qsfp_present_status(pim_num): interrupt_right = bool(interrupt & (0x2 << row*2)) mask_left = bool(mask & (0x1 << row*2)) mask_right = bool(mask & (0x2 << row*2)) - print("%2d: %d %d %d %d %d %d" % \ + print(("%2d: %d %d %d %d %d %d" % \ (row*2+1, status_left, status_right, \ interrupt_left, interrupt_right, \ - mask_left, mask_right)) - print + mask_left, mask_right))) + print() @@ -319,13 +319,13 @@ def get_pim_change_event(self, timeout=0): elif timeout > 0: timeout = timeout / float(1000) # Convert to secs else: - print "get_transceiver_change_event:Invalid timeout value", timeout + print("get_transceiver_change_event:Invalid timeout value", timeout) return False, {} end_time = start_time + timeout if start_time > end_time: - print 'get_transceiver_change_event:' \ - 'time wrap / invalid timeout value', timeout + print('get_transceiver_change_event:' \ + 'time wrap / invalid timeout value', timeout) return False, {} # Time wrap or possibly incorrect timeout @@ -361,7 +361,7 @@ def get_pim_change_event(self, timeout=0): if timeout > 0: time.sleep(timeout) return True, {} - print "get_evt_change_event: Should not reach here." + print("get_evt_change_event: Should not reach here.") return False, {} @@ -382,7 +382,7 @@ def set_pim_led(self, pim_num, color, control): elif color==0: led_val = (led_val & ( ~ 0x8000)) | 0x4000 #amber else: - print "Set RGB control to Green1" + print("Set RGB control to Green1") led_val = led_val & (~ 0x4000) led_val = led_val & (~ 0xfff) led_val = led_val | 0x0f0 #B.G.R Birghtness, set to Green @@ -547,30 +547,30 @@ def get_port_led(self, port_num): elif color==0x1C: color=4 #green - print "color=%d, control=%d"%(color, control) + print("color=%d, control=%d"%(color, control)) return color, control def main(argv): init_resources() pim=PimUtil() - print "Test Board ID" + print("Test Board ID") for x in range(0,8): val=pim.get_pim_board_id(x) - print "pim=%d"%x + print("pim=%d"%x) if val==0: - print "100G board" + print("100G board") else: - print "400G board" + print("400G board") - print "Test pim presence" + print("Test pim presence") for x in range(0,8): pres=pim.get_pim_presence(x) - print "pim=%d, presence=%d"%(x, pres) + print("pim=%d, presence=%d"%(x, pres)) - print "Test pim status" + print("Test pim status") for x in range(0,8): power_status=pim.get_pim_status(x) - print "pim=%d power_status=0x%x"%(x, power_status) + print("pim=%d power_status=0x%x"%(x, power_status)) release_resources() diff --git a/platform/broadcom/sonic-platform-modules-accton/minipack/utils/accton_minipack_util.py b/platform/broadcom/sonic-platform-modules-accton/minipack/utils/accton_minipack_util.py index 25979963bb30..7e512ac4c60b 100755 --- a/platform/broadcom/sonic-platform-modules-accton/minipack/utils/accton_minipack_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/minipack/utils/accton_minipack_util.py @@ -37,7 +37,7 @@ set : change board setting with led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -86,8 +86,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -103,9 +103,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -146,38 +146,38 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -243,7 +243,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status @@ -263,7 +263,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -277,40 +277,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_inserted() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -358,11 +358,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -385,15 +385,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -455,25 +455,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/minipack/utils/setup_qsfp_eeprom.py b/platform/broadcom/sonic-platform-modules-accton/minipack/utils/setup_qsfp_eeprom.py index 257bc1cd90e6..286d6a2f4c54 100755 --- a/platform/broadcom/sonic-platform-modules-accton/minipack/utils/setup_qsfp_eeprom.py +++ b/platform/broadcom/sonic-platform-modules-accton/minipack/utils/setup_qsfp_eeprom.py @@ -27,7 +27,7 @@ import subprocess import click import imp - import commands + import subprocess import logging import logging.config import logging.handlers @@ -72,14 +72,14 @@ def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) if status: logging.info('Failed :'+cmd) return status, output @@ -123,7 +123,7 @@ def qsfp_eeprom_sys(pim_idx, i2c_bus_order, create): status, output =log_os_system( "echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(bus)+"/new_device") if status: - print output + print(output) return 1 status, output =log_os_system( "echo port"+str(k+1)+" > /sys/bus/i2c/devices/"+str(bus)+"-0050/port_name") @@ -131,13 +131,13 @@ def qsfp_eeprom_sys(pim_idx, i2c_bus_order, create): status, output =log_os_system( "ln -s -f /sys/bus/i2c/devices/"+str(bus)+"-0050/eeprom" + " /usr/local/bin/minipack_qsfp/port" + str(k) + "_eeprom") if status: - print output + print(output) return 1 else: status, output =log_os_system( "echo 0x50 > /sys/bus/i2c/devices/i2c-"+str(bus)+"/delete_device") if status: - print output + print(output) k=k+1 @@ -146,7 +146,7 @@ def qsfp_eeprom_sys(pim_idx, i2c_bus_order, create): def check_pca_active( i2c_addr, bus): cmd = "i2cget -y -f %d 0x%x 0x0" cmd = cmd %(bus, i2c_addr) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) return status def set_pim_port_use_bus(pim_idx): @@ -178,11 +178,11 @@ def device_remove(): #if ret==0: cmdm= cmd1 % (0x72, bus) - status, output = commands.getstatusoutput(cmdm) - print "Remove %d-0072 i2c device"%bus + status, output = subprocess.getstatusoutput(cmdm) + print("Remove %d-0072 i2c device"%bus) cmdm= cmd1 % (0x71, bus) - status, output = commands.getstatusoutput(cmdm) - print "Remove %d-0071 i2c device"%bus + status, output = subprocess.getstatusoutput(cmdm) + print("Remove %d-0071 i2c device"%bus) cmd="rm -f /usr/local/bin/minipack_qsfp/port*" status, output=log_os_system(cmd) @@ -262,7 +262,7 @@ def manage_pim(self): pim_state[pim_idx]=self.PIM_STATE_INSERT logging.info("pim_state[%d] PIM_STATE_INSERT", pim_idx); else: - print "retry check 100 times for check pca addr" + print("retry check 100 times for check pca addr") del_pim_port_use_bus(pim_idx) else: if pim_state[pim_idx]==self.PIM_STATE_INSERT: @@ -280,11 +280,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlr',['lfile=']) except getopt.GetoptError: - print 'A:Usage: %s [-d] [-l ]' % sys.argv[0] + print('A:Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'B:Usage: %s [-d] [-l ]' % sys.argv[0] + print('B:Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -305,7 +305,7 @@ def main(argv): time.sleep(0.5) if status==0: cpu_pca_i2c_ready=1 - print "Make sure CPU pca i2c device is ready" + print("Make sure CPU pca i2c device is ready") break while True: From b8447ce92e737414d6ef9b73c0674d47d371ac8f Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Tue, 28 Sep 2021 11:47:35 -0700 Subject: [PATCH 184/186] Add support for building Mellanox image ISSU will likely be broken. As of right now, the issu-version file is not being generated during build. Signed-off-by: Saikrishna Arcot --- azure-pipelines.yml | 1 + files/build_templates/sonic_debian_extension.j2 | 2 +- platform/mellanox/docker-saiserver-mlnx.mk | 2 ++ platform/mellanox/docker-syncd-mlnx-rpc.mk | 2 ++ platform/mellanox/issu-version.mk | 5 ++++- platform/mellanox/mft.mk | 4 ++++ platform/mellanox/mft/Makefile | 2 ++ 7 files changed, 16 insertions(+), 2 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e3638e3bde77..53cee38e797a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -47,6 +47,7 @@ stages: - name: broadcom variables: swi_image: yes + - name: mellanox - stage: Test variables: diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index ef277dc84558..214896516d0d 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -802,7 +802,7 @@ sudo mkdir -p $FILESYSTEM_ROOT/etc/mlnx/ sudo cp $files_path/$MLNX_SPC_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC.mfa sudo cp $files_path/$MLNX_SPC2_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC2.mfa sudo cp $files_path/$MLNX_SPC3_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC3.mfa -sudo cp $files_path/$ISSU_VERSION_FILE $FILESYSTEM_ROOT/etc/mlnx/issu-version +#sudo cp $files_path/$ISSU_VERSION_FILE $FILESYSTEM_ROOT/etc/mlnx/issu-version sudo cp $files_path/$MLNX_FFB_SCRIPT $FILESYSTEM_ROOT/usr/bin/mlnx-ffb.sh sudo cp $files_path/$MLNX_ONIE_FW_UPDATE $FILESYSTEM_ROOT/usr/bin/$MLNX_ONIE_FW_UPDATE sudo cp $files_path/$MLNX_SSD_FW_UPDATE $FILESYSTEM_ROOT/usr/bin/$MLNX_SSD_FW_UPDATE diff --git a/platform/mellanox/docker-saiserver-mlnx.mk b/platform/mellanox/docker-saiserver-mlnx.mk index 4f15ed82e6c8..dd380a634c65 100644 --- a/platform/mellanox/docker-saiserver-mlnx.mk +++ b/platform/mellanox/docker-saiserver-mlnx.mk @@ -13,3 +13,5 @@ $(DOCKER_SAISERVER_MLNX)_RUN_OPT += --privileged -t $(DOCKER_SAISERVER_MLNX)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SAISERVER_MLNX)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_BASE)_RUN_OPT += --tmpfs /run/criu + +SONIC_BUSTER_DOCKERS += $(DOCKER_SAISERVER_MLNX) diff --git a/platform/mellanox/docker-syncd-mlnx-rpc.mk b/platform/mellanox/docker-syncd-mlnx-rpc.mk index fe2ff5916493..0b8c775f6b47 100644 --- a/platform/mellanox/docker-syncd-mlnx-rpc.mk +++ b/platform/mellanox/docker-syncd-mlnx-rpc.mk @@ -26,3 +26,5 @@ $(DOCKER_SYNCD_MLNX_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_MLNX_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_MLNX_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_MLNX_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot + +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_MLNX_RPC) diff --git a/platform/mellanox/issu-version.mk b/platform/mellanox/issu-version.mk index db368ffd8c10..574c3324076c 100644 --- a/platform/mellanox/issu-version.mk +++ b/platform/mellanox/issu-version.mk @@ -5,6 +5,9 @@ $(ISSU_VERSION_FILE)_SRC_PATH = $(PLATFORM_PATH)/issu-version $(ISSU_VERSION_FILE)_DEPENDS += $(APPLIBS) SONIC_MAKE_FILES += $(ISSU_VERSION_FILE) -MLNX_FILES += $(ISSU_VERSION_FILE) +# TODO: Disable because the base OS version (bullseye) doesn't match what the +# SDK app packages are built for (buster), and this target assumes that they +# are available. +#MLNX_FILES += $(ISSU_VERSION_FILE) export ISSU_VERSION_FILE diff --git a/platform/mellanox/mft.mk b/platform/mellanox/mft.mk index 5e9644b5703c..eb6143db7f78 100644 --- a/platform/mellanox/mft.mk +++ b/platform/mellanox/mft.mk @@ -7,11 +7,15 @@ export MFT_VERSION MFT_REVISION MFT = mft_$(MFT_VERSION)-$(MFT_REVISION)_amd64.deb $(MFT)_SRC_PATH = $(PLATFORM_PATH)/mft +ifeq ($(DISTRO), bullseye) $(MFT)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON) +endif SONIC_MAKE_DEBS += $(MFT) +ifeq ($(DISTRO), bullseye) KERNEL_MFT = kernel-mft-dkms-modules-$(KVERSION)_$(MFT_VERSION)_amd64.deb $(eval $(call add_derived_package,$(MFT),$(KERNEL_MFT))) +endif MFT_OEM = mft-oem_$(MFT_VERSION)-$(MFT_REVISION)_amd64.deb $(eval $(call add_derived_package,$(MFT),$(MFT_OEM))) diff --git a/platform/mellanox/mft/Makefile b/platform/mellanox/mft/Makefile index 84a587730386..cb5e7e6e4c49 100644 --- a/platform/mellanox/mft/Makefile +++ b/platform/mellanox/mft/Makefile @@ -19,6 +19,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : wget -O $(MFT_TGZ) http://www.mellanox.com/downloads/MFT/$(MFT_TGZ) tar xzf $(MFT_TGZ) +ifeq ($(DISTRO), bullseye) pushd $(MFT_NAME)/SDEBS # put a lock here because dpkg does not allow installing packages in parallel @@ -46,6 +47,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : popd rm -rf $(DKMS_TMP) +endif # fix timestamp because we do not actually build tools, only kernel touch $(MFT_NAME)/DEBS/*.deb From c1a0657e5c8f2c3c3dac375e67b5a0be18b2405c Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Tue, 28 Sep 2021 11:51:33 -0700 Subject: [PATCH 185/186] For syncd, specify that they're Buster-based containers in the template file instead of the individual container definitions Signed-off-by: Saikrishna Arcot --- platform/broadcom/docker-syncd-brcm-dnx.mk | 2 -- platform/broadcom/docker-syncd-brcm.mk | 2 -- platform/template/docker-syncd-base.mk | 2 ++ 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/platform/broadcom/docker-syncd-brcm-dnx.mk b/platform/broadcom/docker-syncd-brcm-dnx.mk index 2d4b1af07fe2..e08a38d93862 100644 --- a/platform/broadcom/docker-syncd-brcm-dnx.mk +++ b/platform/broadcom/docker-syncd-brcm-dnx.mk @@ -46,5 +46,3 @@ $(DOCKER_SYNCD_DNX_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_SYNCD_DNX_BASE)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_DNX_BASE)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh $(DOCKER_SYNCD_DNX_BASE)_BASE_IMAGE_FILES += bcm_common:/usr/bin/bcm_common - -SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_DNX_BASE) diff --git a/platform/broadcom/docker-syncd-brcm.mk b/platform/broadcom/docker-syncd-brcm.mk index 9ded6bccdf79..1129c7681c34 100644 --- a/platform/broadcom/docker-syncd-brcm.mk +++ b/platform/broadcom/docker-syncd-brcm.mk @@ -22,5 +22,3 @@ $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /usr/share/sonic/device/x86_64-broadcom_commo $(DOCKER_SYNCD_BASE)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_BASE)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh $(DOCKER_SYNCD_BASE)_BASE_IMAGE_FILES += bcm_common:/usr/bin/bcm_common - -SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BASE) diff --git a/platform/template/docker-syncd-base.mk b/platform/template/docker-syncd-base.mk index d95d7a141920..a6a027f94aac 100644 --- a/platform/template/docker-syncd-base.mk +++ b/platform/template/docker-syncd-base.mk @@ -38,3 +38,5 @@ $(DOCKER_SYNCD_BASE)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BASE) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SYNCD_BASE_DBG) From d4c4571e0a37ab00956f471693d0a2109c55cbbd Mon Sep 17 00:00:00 2001 From: Kiran Kella Date: Fri, 8 Oct 2021 02:36:30 -0700 Subject: [PATCH 186/186] Ported iptables patch to 5.10 kernel Signed-off-by: Kiran Kella --- ...ng-fullcone-option-for-SNAT-and-DNAT.patch | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/iptables/patch/0001-Passing-fullcone-option-for-SNAT-and-DNAT.patch b/src/iptables/patch/0001-Passing-fullcone-option-for-SNAT-and-DNAT.patch index 9ed886bb5dbd..4e06adf9deb4 100644 --- a/src/iptables/patch/0001-Passing-fullcone-option-for-SNAT-and-DNAT.patch +++ b/src/iptables/patch/0001-Passing-fullcone-option-for-SNAT-and-DNAT.patch @@ -1,16 +1,17 @@ -From 92f5aee7372748845f11b7a10d880f968769e860 Mon Sep 17 00:00:00 2001 +From 386bb8378bc67b7dfc3db5d5f28a01620b4231cf Mon Sep 17 00:00:00 2001 From: Kiran Kella Date: Wed, 7 Aug 2019 07:22:42 -0700 -Subject: [PATCH] Passing fullcone option for SNAT and DNAT +Subject: [PATCH] From 92f5aee7372748845f11b7a10d880f968769e860 Mon Sep 17 + 00:00:00 2001 Subject: [PATCH] Passing fullcone option for SNAT and DNAT --- - extensions/libipt_DNAT.c | 22 +++++++++++++++++++++- - extensions/libipt_MASQUERADE.c | 21 ++++++++++++++++++++- - extensions/libipt_SNAT.c | 22 +++++++++++++++++++++- - 3 files changed, 62 insertions(+), 3 deletions(-) + extensions/libipt_DNAT.c | 37 ++++++++++++++++++++++++++++++++-- + extensions/libipt_MASQUERADE.c | 22 +++++++++++++++++++- + extensions/libipt_SNAT.c | 22 +++++++++++++++++++- + 3 files changed, 77 insertions(+), 4 deletions(-) diff --git a/extensions/libipt_DNAT.c b/extensions/libipt_DNAT.c -index 4907a2e..543421c 100644 +index 4907a2e..95e3446 100644 --- a/extensions/libipt_DNAT.c +++ b/extensions/libipt_DNAT.c @@ -8,14 +8,20 @@ @@ -19,7 +20,7 @@ index 4907a2e..543421c 100644 +/* Temporarily defining here, need to be picked up from the + * new kernel header linux/netfilter/nf_nat.h */ -+#define NF_NAT_RANGE_FULLCONE (1 << 6) ++#define NF_NAT_RANGE_FULLCONE (1 << 10) + enum { O_TO_DEST = 0, @@ -151,7 +152,7 @@ index 4907a2e..543421c 100644 return 1; } diff --git a/extensions/libipt_MASQUERADE.c b/extensions/libipt_MASQUERADE.c -index 90bf606..169457d 100644 +index 90bf606..b3ed1e6 100644 --- a/extensions/libipt_MASQUERADE.c +++ b/extensions/libipt_MASQUERADE.c @@ -8,10 +8,15 @@ @@ -160,7 +161,7 @@ index 90bf606..169457d 100644 +/* Temporarily defining here, need to be picked up from the + * new kernel header linux/netfilter/nf_nat.h */ -+#define NF_NAT_RANGE_FULLCONE (1 << 6) ++#define NF_NAT_RANGE_FULLCONE (1 << 10) + enum { O_TO_PORTS = 0, @@ -229,7 +230,7 @@ index 90bf606..169457d 100644 } diff --git a/extensions/libipt_SNAT.c b/extensions/libipt_SNAT.c -index e92d811..ad42b8c 100644 +index e92d811..8704004 100644 --- a/extensions/libipt_SNAT.c +++ b/extensions/libipt_SNAT.c @@ -8,16 +8,22 @@ @@ -238,7 +239,7 @@ index e92d811..ad42b8c 100644 +/* Temporarily defining here, need to be picked up from the + * new kernel header linux/netfilter/nf_nat.h */ -+#define NF_NAT_RANGE_FULLCONE (1 << 6) ++#define NF_NAT_RANGE_FULLCONE (1 << 10) + enum { O_TO_SRC = 0, @@ -319,3 +320,6 @@ index e92d811..ad42b8c 100644 } return 1; +-- +2.27.0 +