From 5ad78abea0302585e646081898e1c3fa4ecd1aee Mon Sep 17 00:00:00 2001 From: Andriy Yurkiv <70649192+ayurkiv-nvda@users.noreply.github.com> Date: Wed, 22 Feb 2023 20:25:54 +0200 Subject: [PATCH 01/46] [Dual-ToR] add default value for ACL rule for mellanox platform (#13547) - Why I did it Need to add the possibility to choose between dropping packets (using ACL) on ingress or egress in Dual ToR scenario - How I did it Add new attribute "mux_tunnel_ingress_acl" to SYSTEM_DEFAULTS table - How to verify it check that new attribute exists in redis: admin@sonic:~$ redis-cli -n 4 127.0.0.1:6379[4]> HGETALL SYSTEM_DEFAULTS|mux_tunnel_ingress_acl 1."state" 2."false" Signed-off-by: Andriy Yurkiv --- files/build_templates/init_cfg.json.j2 | 11 +++++++++++ .../tests/files/sample_config_db.json | 4 ++++ .../tests_config/system_defaults.json | 8 ++++++++ 3 files changed, 23 insertions(+) diff --git a/files/build_templates/init_cfg.json.j2 b/files/build_templates/init_cfg.json.j2 index b490dc424b0a..39e180a1179d 100644 --- a/files/build_templates/init_cfg.json.j2 +++ b/files/build_templates/init_cfg.json.j2 @@ -133,5 +133,16 @@ "digits_class": "true", "special_class": "true" } + }, + "SYSTEM_DEFAULTS" : { +{%- if include_mux == "y" %} + "mux_tunnel_egress_acl": { +{%- if sonic_asic_platform == "mellanox" %} + "status": "enabled" +{% else %} + "status": "disabled" +{% endif %} + } +{% endif %} } } 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 1d0d04b3f9b5..a05b35c48295 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -2227,6 +2227,10 @@ "SYSTEM_DEFAULTS": { "tunnel_qos_remap": { "status": "enabled" + }, + "mux_tunnel_egress_acl": + { + "status": "enabled" } }, "LOSSLESS_TRAFFIC_PATTERN": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/system_defaults.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/system_defaults.json index a8ccc13c099d..da9a3e752bf7 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/system_defaults.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/system_defaults.json @@ -6,6 +6,10 @@ { "name": "tunnel_qos_remap", "status": "enabled" + }, + { + "name": "mux_tunnel_egress_acl", + "status": "enabled" } ] } @@ -18,6 +22,10 @@ { "name": "tunnel_qos_remap", "status": "invalid_status" + }, + { + "name": "mux_tunnel_egress_acl", + "status": "invalid_status" } ] } From f8a393c3a176d120bc6472f3b56936ef85916d4a Mon Sep 17 00:00:00 2001 From: Ikki Zhu <79439153+qnos@users.noreply.github.com> Date: Thu, 23 Feb 2023 02:55:55 +0800 Subject: [PATCH 02/46] add psu fans status led available config (#13926) Why I did it Seastone does not have the psu fans' status led, need to reflect it in platform.json. How I did it Set the psu fans status led available to false. How to verify it Verify it with platform_tests/api/test_psu_fans.py::TestPsuFans::test_set_fans_led case. --- device/celestica/x86_64-cel_seastone-r0/platform.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/device/celestica/x86_64-cel_seastone-r0/platform.json b/device/celestica/x86_64-cel_seastone-r0/platform.json index a3778ae81aef..e72c00fea5bd 100644 --- a/device/celestica/x86_64-cel_seastone-r0/platform.json +++ b/device/celestica/x86_64-cel_seastone-r0/platform.json @@ -266,6 +266,9 @@ "name": "PSU-1 FAN-1", "speed": { "controllable": false + }, + "status_led": { + "available": false } } ] @@ -281,6 +284,9 @@ "name": "PSU-2 FAN-1", "speed": { "controllable": false + }, + "status_led": { + "available": false } } ] From d15f5201e9262c59d0fddeb5fadeaea2c2368b21 Mon Sep 17 00:00:00 2001 From: Nazarii Hnydyn Date: Thu, 23 Feb 2023 08:18:01 +0200 Subject: [PATCH 03/46] [buildsystem]: Fix error 'chown: missing operand after'. (#13569) Fixes: #13395 This fix resolves ownership configuration for vcache: Step 24/40 : RUN pip3 install j2cli ---> Running in fcc39df62a98 chown: missing operand after '/sonic/target/vcache/docker-base-bullseye' Try 'chown --help' for more information. Originally the issue was introduced here: #13287 - Why I did it To fix ownership configuration - How I did it Removed redundant stuff Signed-off-by: Nazarii Hnydyn --- src/sonic-build-hooks/scripts/buildinfo_base.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/sonic-build-hooks/scripts/buildinfo_base.sh b/src/sonic-build-hooks/scripts/buildinfo_base.sh index e10a32303423..a04dbc150df5 100755 --- a/src/sonic-build-hooks/scripts/buildinfo_base.sh +++ b/src/sonic-build-hooks/scripts/buildinfo_base.sh @@ -28,8 +28,7 @@ else PKG_CACHE_PATH=/sonic/target/vcache/${IMAGENAME} fi PKG_CACHE_FILE_NAME=${PKG_CACHE_PATH}/cache.tgz -$SUDO mkdir -p ${PKG_CACHE_PATH} -$SUDO chown $USER $PKG_CACHE_PATH +mkdir -p ${PKG_CACHE_PATH} . ${BUILDINFO_PATH}/scripts/utils.sh From 729eb07d5f92288e51e397c0b254ec5f9534d72b Mon Sep 17 00:00:00 2001 From: Oren Reiss <59409845+orenreiss@users.noreply.github.com> Date: Thu, 23 Feb 2023 08:18:42 +0200 Subject: [PATCH 04/46] Add script to upload packages to web server (#13545) - Why I did it The flow of SONiC reproducible build assumes that web packages (retrieved by curl and wget) are located in a single web file. server. Currently there is no way to easily download the packages from the various file servers where they are currently deployed. In this change we offer a utility to download all relevant packages and upload them to a specific file server. - How I did it We implemented python script that parse the various version files (generated by SONIC reproducible build compilation) and identify all relevant packages. Later the script downloads the file and then upload them to the destination server pointed by the user. - How to verify it Script is running and was verified manually Which release branch to backport (provide reason below if selected) Feature will be added to master only Signed-off-by: oreiss --- scripts/populate_file_web_server.py | 295 ++++++++++++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100644 scripts/populate_file_web_server.py diff --git a/scripts/populate_file_web_server.py b/scripts/populate_file_web_server.py new file mode 100644 index 000000000000..955ad9c8a7f9 --- /dev/null +++ b/scripts/populate_file_web_server.py @@ -0,0 +1,295 @@ +#!/usr/bin/env python3 + +import sys +import os +import time +import argparse +from http import HTTPStatus +try: + import requests +except ImportError: + print("requests module is not installed. script will fail to execute") + +#debug print level +PRINT_LEVEL_ERROR = "err" +PRINT_LEVEL_WARN = "warn" +PRINT_LEVEL_INFO = "info" +PRINT_LEVEL_VERBOSE = "verbose" + +PRINT_LEVEL_LUT = {PRINT_LEVEL_ERROR : 1, + PRINT_LEVEL_WARN : 2, + PRINT_LEVEL_INFO : 3, + PRINT_LEVEL_VERBOSE : 4 } + +#return code +RET_CODE_SUCCESS = 0 +RET_CODE_CANNOT_CREATE_FILE = -1 +RET_CODE_CANNOT_OPEN_FILE = -2 +RET_CODE_HTTP_SERVER_ERROR = -3 +RET_CODE_CANNOT_WRITE_FILE = -4 + +#constants +RESOURCES_FILE_NAME = 'versions-web' +EXCLUDE_DIRECTORES = ['fsroot', 'target'] +HASH_SEPARATOR = '-' +DEFAULT_INVALID_INPUT = 'none' + +# global variables +g_current_print_level = PRINT_LEVEL_INFO + +#Script debug features (disabled by default) +g_delete_resources_in_cache = True + + +# global Classes +class Resource: + def __init__(self, line, file): + self.file = file + temp=line.split("==") + assert(2==len(temp)) + self.url=temp[0].strip() + self.hash=temp[1].strip() + temp=self.url.split("/") + assert(len(temp)>0) + self.name=temp[len(temp)-1] + #handle special scenarios + if 0 != self.name.count('?') == True: + temp = self.name.split("?") + self.name = temp[0] + + def get_unique_name(self): + return self.name + HASH_SEPARATOR + self.hash + + def get_url(self): + return self.url + + def __str__(self): + ret_val = "Resource name: " + self.name + "\n" + ret_val += "File: " + self.file + "\n" + ret_val += "Hash: " + self.hash + "\n" + ret_val += "Full URL: " + self.url + return ret_val + +# Helper functions + +def print_msg(print_level, msg, print_in_place=False): + if PRINT_LEVEL_LUT[g_current_print_level] >= PRINT_LEVEL_LUT[print_level]: + if True == print_in_place: + print(msg, end='\r') + else: + print(msg) + +def create_dir_if_not_exist(dir): + if not os.path.exists(dir): + try: + os.makedirs(dir) + except: + print_msg(PRINT_LEVEL_WARN, "Cannot create directory " + dir) + +def delete_file_if_exist(file): + if os.path.exists(file): + try: + os.remove(file) + except: + print_msg(PRINT_LEVEL_WARN, "Cannot delete " + file) + +# Logic functions + +def generate_output_file(resources, dest_url_valid, dest_url, output_file_name): + try: + with open(output_file_name, 'w') as f: + for unique_name in resources.keys(): + resource = resources[unique_name] + if True == dest_url_valid: + line = dest_url + else: + line = resource.get_url() + if line[-1] != '/': + line += '/' + line += resource.name + "==" + resource.hash + f.write(line + '\n') + except: + print_msg(PRINT_LEVEL_WARN, output_file_name + " cannot be created") + return RET_CODE_CANNOT_CREATE_FILE + + return RET_CODE_SUCCESS + +def upload_resource_to_server(resource_path, resource_name, user, key, server_url): + url_full_path = server_url + "/" + resource_name + + try: + f = open(resource_path, 'rb') + except: + err_print("Cannot open " + resource_path) + return RET_CODE_CANNOT_OPEN_FILE + + headers = {'Content-type': 'application', 'Slug': resource_name} + response = requests.put(url_full_path, data=f, + headers=headers, auth=(user, key)) + + f.close() + + if response.status_code != HTTPStatus.CREATED.value: + err_print(f"HTTP request returned status code {response.status_code}, expected {HTTPStatus.CREATED.value}") + return RET_CODE_HTTP_SERVER_ERROR + + # JSON response empty only when status code is 204 + reported_md5 = response.json().get('checksums', {}).get('md5') + file_md5 = resource_name.split(HASH_SEPARATOR)[-1] + + # Check if server reports checksum, if so compare reported sum and the one + # specified in filename + if reported_md5 != None and reported_md5 != file_md5: + print_msg(PRINT_LEVEL_WARN, f"Server reported file's chsum {reported_md5}, expected {file_md5}") + + + return RET_CODE_SUCCESS + +def download_external_resouce(resource, cache_path): + resource_path_in_cache = cache_path + os.sep + resource.get_unique_name() + + r = requests.get(resource.get_url(), allow_redirects=True) + + try: + f = open(resource_path_in_cache, 'wb') + f.write(r.content) + f.close() + except: + print_msg(PRINT_LEVEL_ERROR, "Cannot write " + resource_path_in_cache + " to cache") + resource_path_in_cache = "" #report error + + return resource_path_in_cache + +def get_resources_list(resource_files_list): + resource_list = list() + + for file_name in resource_files_list: + try: + with open(file_name, 'r') as f: + for line in f: + resource_list.append(Resource(line, file_name)) + except: + print_msg(PRINT_LEVEL_WARN, file_name + " cannot be opened") + + return resource_list + +def filter_out_dir(subdir): + ret_val = False + + for exclude in EXCLUDE_DIRECTORES: + if exclude in subdir.split(os.sep): + ret_val = True + break + + return ret_val + +def get_resource_files_list(serach_path): + resource_files_list = list() + + for subdir, dirs, files in os.walk(serach_path): + for file in files: + if False == filter_out_dir(subdir) and RESOURCES_FILE_NAME == file: + file_full_path = os.path.join(subdir, file) + print_msg(PRINT_LEVEL_VERBOSE, "Found resource file :" + file_full_path) + resource_files_list.append(file_full_path) + + return resource_files_list + +def parse_args(): + parser = argparse.ArgumentParser(description='Various pre-steps for build compilation') + + parser.add_argument('-s', '--source', default=".", + help='Search path for ' + RESOURCES_FILE_NAME + ' files') + + parser.add_argument('-c', '--cache', default="." + os.sep + "tmp", + help='Path to cache for storing content before uploading to server') + + parser.add_argument('-p', '--print', default=PRINT_LEVEL_INFO, + choices=[PRINT_LEVEL_ERROR, PRINT_LEVEL_WARN, PRINT_LEVEL_INFO, PRINT_LEVEL_VERBOSE], + help='Print level verbosity') + + parser.add_argument('-o', '--output', default=DEFAULT_INVALID_INPUT, + help='Output file name to hold the list of packages') + + parser.add_argument('-u', '--user', default=DEFAULT_INVALID_INPUT, + help='User for server authentication') + + parser.add_argument('-k', '--key', default=DEFAULT_INVALID_INPUT, + help='API key server authentication') + + parser.add_argument('-d', '--dest', default=DEFAULT_INVALID_INPUT, + help='URL for destination web file server') + + return parser.parse_args() + +def main(): + global g_current_print_level + ret_val = RET_CODE_SUCCESS + resource_counter = 0.0 + resource_dict = dict() + + args = parse_args() + + g_current_print_level = args.print + + resource_files_list = get_resource_files_list(args.source) + + resource_list = get_resources_list(resource_files_list) + + #remove duplications + for resource in resource_list: + unique_name = resource.get_unique_name() + if not unique_name in resource_dict.keys(): + resource_dict[unique_name] = resource + + print_msg(PRINT_LEVEL_INFO, "Found " + str(len(resource_files_list)) + " version files and " + str(len(resource_dict.keys())) + " unique resources") + + if args.dest != DEFAULT_INVALID_INPUT: + upload_files_to_server = True + print_msg(PRINT_LEVEL_INFO, "Upload files to URL - " + args.dest) + else: + upload_files_to_server = False + print_msg(PRINT_LEVEL_INFO, "Skipping files upload to server") + + #create cache directory if not exist + create_dir_if_not_exist(args.cache) + + #download content to cache and then upload to web server + for unique_name in resource_dict.keys(): + + resource = resource_dict[unique_name] + + print_msg(PRINT_LEVEL_VERBOSE, resource) + + resource_counter += 1.0 + + #download content to cache + file_in_cache = download_external_resouce(resource, args.cache) + + if "" == file_in_cache: + return RET_CODE_CANNOT_WRITE_FILE + + if True == upload_files_to_server: + #upload content to web server + ret_val = upload_resource_to_server(file_in_cache, unique_name, args.user, args.key, args.dest) + if ret_val != RET_CODE_SUCCESS: + return ret_val + + if True == g_delete_resources_in_cache: + delete_file_if_exist(file_in_cache) + + print_msg(PRINT_LEVEL_INFO, "Downloading Data. Progress " + str(int(100.0*resource_counter/len(resource_dict.keys()))) + "%", True) #print progress bar + + # generate version output file as needed + if args.output != DEFAULT_INVALID_INPUT: + ret_val = generate_output_file(resource_dict, upload_files_to_server, args.dest, args.output) + print_msg(PRINT_LEVEL_INFO, "Generate output file " + args.output) + + return ret_val + +# Entry function +if __name__ == '__main__': + + ret_val = main() + + sys.exit(ret_val) From 3e0df173ff33261e8e754c7b4b41223f27cc8084 Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Thu, 23 Feb 2023 14:21:30 +0800 Subject: [PATCH 05/46] Remove deprecated LGTM badge in README.md. (#13895) Why I did it LGTM is deprecated. LGTM's badge doesn't work now. Github code scanning shows alerts in Security tab. It doesn't have a badge. How I did it Remove LGTM badge. How to verify it --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 0aa24bebfb67..05c9f5102c98 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,3 @@ -*static analysis*: - -[![Total alerts](https://img.shields.io/lgtm/alerts/g/Azure/sonic-buildimage.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/Azure/sonic-buildimage/alerts/) -[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/Azure/sonic-buildimage.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/Azure/sonic-buildimage/context:python) - *master builds*: [![Barefoot](https://dev.azure.com/mssonic/build/_apis/build/status/barefoot/Azure.sonic-buildimage.official.barefoot?branchName=master&label=Barefoot)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=146&branchName=master) From ee1b6b37513d6cca8aebc6cf528d49c70f0971e9 Mon Sep 17 00:00:00 2001 From: DavidZagury <32644413+DavidZagury@users.noreply.github.com> Date: Thu, 23 Feb 2023 08:25:34 +0200 Subject: [PATCH 06/46] Remove support to Mellanox SPC4 ASIC (#13932) - Why I did it FW for Spectrum-4 ASIC not yet available - How I did it Remove in Mellanox fw make files to Spectrum-4 ASIC firmware binaries. Remove from firmware upgrade scripts to be able Spectrum-4 ASIC. - How to verify it Run regression test --- files/build_templates/sonic_debian_extension.j2 | 1 - platform/mellanox/fw.dep | 4 ---- platform/mellanox/fw.mk | 8 +------- platform/mellanox/mlnx-fw-upgrade.j2 | 6 ------ 4 files changed, 1 insertion(+), 18 deletions(-) diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 8edf79553d7e..1dc8bfe1e69e 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -932,7 +932,6 @@ 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/$MLNX_SPC4_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC4.mfa 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 diff --git a/platform/mellanox/fw.dep b/platform/mellanox/fw.dep index f57bad8eb9b0..228f6dc87e36 100644 --- a/platform/mellanox/fw.dep +++ b/platform/mellanox/fw.dep @@ -14,7 +14,3 @@ $(MLNX_SPC2_FW_FILE)_DEP_FILES := $(DEP_FILES) $(MLNX_SPC3_FW_FILE)_CACHE_MODE := GIT_CONTENT_SHA $(MLNX_SPC3_FW_FILE)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(MLNX_SPC3_FW_FILE)_DEP_FILES := $(DEP_FILES) - -$(MLNX_SPC4_FW_FILE)_CACHE_MODE := GIT_CONTENT_SHA -$(MLNX_SPC4_FW_FILE)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(MLNX_SPC4_FW_FILE)_DEP_FILES := $(DEP_FILES) diff --git a/platform/mellanox/fw.mk b/platform/mellanox/fw.mk index 6ce3c8faabca..77e4daf589b6 100644 --- a/platform/mellanox/fw.mk +++ b/platform/mellanox/fw.mk @@ -44,12 +44,7 @@ MLNX_SPC3_FW_FILE = fw-SPC3-rel-$(subst .,_,$(MLNX_SPC3_FW_VERSION))-EVB.mfa $(MLNX_SPC3_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC3_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC3_FW_FILE) -MLNX_SPC4_FW_VERSION = 34.2010.4150 -MLNX_SPC4_FW_FILE = fw-SPC4-rel-$(subst .,_,$(MLNX_SPC4_FW_VERSION))-EVB.mfa -$(MLNX_SPC4_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) -$(MLNX_SPC4_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC4_FW_FILE) - -MLNX_FW_FILES = $(MLNX_SPC_FW_FILE) $(MLNX_SPC2_FW_FILE) $(MLNX_SPC3_FW_FILE) $(MLNX_SPC4_FW_FILE) +MLNX_FW_FILES = $(MLNX_SPC_FW_FILE) $(MLNX_SPC2_FW_FILE) $(MLNX_SPC3_FW_FILE) ifeq ($(FW_FROM_URL),n) SONIC_COPY_FILES += $(MLNX_FW_FILES) @@ -62,4 +57,3 @@ MLNX_FILES += $(MLNX_FW_FILES) export MLNX_SPC_FW_FILE export MLNX_SPC2_FW_FILE export MLNX_SPC3_FW_FILE -export MLNX_SPC4_FW_FILE diff --git a/platform/mellanox/mlnx-fw-upgrade.j2 b/platform/mellanox/mlnx-fw-upgrade.j2 index 86fd32e6a89a..1c650fd5ce63 100755 --- a/platform/mellanox/mlnx-fw-upgrade.j2 +++ b/platform/mellanox/mlnx-fw-upgrade.j2 @@ -28,7 +28,6 @@ declare -r LIST_CONTENT_FILE="/tmp/mlxfwmanager-list-content.log" declare -r SPC1_ASIC="spc1" declare -r SPC2_ASIC="spc2" declare -r SPC3_ASIC="spc3" -declare -r SPC4_ASIC="spc4" declare -r UNKN_ASIC="unknown" declare -r UNKN_MST="unknown" @@ -36,7 +35,6 @@ declare -rA FW_FILE_MAP=( \ [$SPC1_ASIC]="/etc/mlnx/fw-SPC.mfa" \ [$SPC2_ASIC]="/etc/mlnx/fw-SPC2.mfa" \ [$SPC3_ASIC]="/etc/mlnx/fw-SPC3.mfa" \ - [$SPC4_ASIC]="/etc/mlnx/fw-SPC4.mfa" \ ) IMAGE_UPGRADE="${NO_PARAM}" @@ -162,7 +160,6 @@ function GetAsicType() { local -r SPC1_PRODUCT_ID="cb84" local -r SPC2_PRODUCT_ID="cf6c" local -r SPC3_PRODUCT_ID="cf70" - local -r SPC4_PRODUCT_ID="cf80" if lspci -n | grep "${VENDOR_ID}:${SPC1_PRODUCT_ID}" &>/dev/null; then echo "${SPC1_ASIC}" @@ -173,9 +170,6 @@ function GetAsicType() { elif lspci -n | grep "${VENDOR_ID}:${SPC3_PRODUCT_ID}" &>/dev/null; then echo "${SPC3_ASIC}" exit "${EXIT_SUCCESS}" - elif lspci -n | grep "${VENDOR_ID}:${SPC4_PRODUCT_ID}" &>/dev/null; then - echo "${SPC4_ASIC}" - exit "${EXIT_SUCCESS}" fi echo "${UNKN_ASIC}" From 95ce31971cecd3d02107b83e4acfb7010e05b50f Mon Sep 17 00:00:00 2001 From: Tapash Das <48195098+tapashdas@users.noreply.github.com> Date: Thu, 23 Feb 2023 12:19:16 +0530 Subject: [PATCH 07/46] Added vni field in VRF Yang for VxLAN L3 VNI Support #13456 (#13735) Why I did it Added vni field in VRF Yang for VxLAN L3 VNI Support. The VRF table schema as per EVPN HLD is below https://github.com/sonic-net/SONiC/blob/master/doc/vxlan/EVPN/EVPN_VXLAN_HLD.md Addresses Issue #13456 --- src/sonic-yang-models/doc/Configuration.md | 4 +++- .../tests/files/sample_config_db.json | 1 + .../tests/yang_model_tests/tests/vrf.json | 7 ++++++ .../yang_model_tests/tests_config/vrf.json | 22 +++++++++++++++++++ .../yang-models/sonic-vrf.yang | 8 +++++++ 5 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index 69635053245b..a7726d8b5695 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -1883,6 +1883,7 @@ table allow to change properties of a virtual router. Attributes: packets with IP options - 'l3_mc_action' contains packet action. Defines the action for unknown L3 multicast packets +- 'vni' contains L3 VNI value. VNI associated Virtual router instance. The packet action could be: @@ -1904,7 +1905,8 @@ The packet action could be: 'src_mac': '02:04:05:06:07:08', 'ttl_action': 'copy', 'ip_opt_action': 'deny', - 'l3_mc_action': 'drop' + 'l3_mc_action': 'drop', + 'vni': '100' } ``` 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 a05b35c48295..375f7d24e4b5 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -2,6 +2,7 @@ "SAMPLE_CONFIG_DB_JSON": { "VRF": { "Vrf_blue": { + "vni" : "100" } }, "DHCP_SERVER": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/vrf.json b/src/sonic-yang-models/tests/yang_model_tests/tests/vrf.json index a9d9bb0f9d9c..73e31ee109cc 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/vrf.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/vrf.json @@ -8,5 +8,12 @@ }, "VRF_TEST_WITH_FALLBACK": { "desc": "Configure VRF with fallback in VRF table." + }, + "VRF_TEST_WITH_VNI": { + "desc": "Configure VRF with VNI in VRF table." + }, + "VRF_TEST_WITH_VNI_OOR": { + "desc": "Configure VRF with out of range VNI in VRF table.", + "eStrKey": "Range" } } diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vrf.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vrf.json index f34d3fbdd52d..082ec022f81b 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vrf.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vrf.json @@ -28,5 +28,27 @@ }] } } + }, + + "VRF_TEST_WITH_VNI": { + "sonic-vrf:sonic-vrf": { + "sonic-vrf:VRF": { + "VRF_LIST": [{ + "name": "Vrf_blue", + "vni": "100" + }] + } + } + }, + + "VRF_TEST_WITH_VNI_OOR": { + "sonic-vrf:sonic-vrf": { + "sonic-vrf:VRF": { + "VRF_LIST": [{ + "name": "Vrf_blue", + "vni": "16777216" + }] + } + } } } diff --git a/src/sonic-yang-models/yang-models/sonic-vrf.yang b/src/sonic-yang-models/yang-models/sonic-vrf.yang index ff9fc5b5a4cc..5387aad2cc80 100644 --- a/src/sonic-yang-models/yang-models/sonic-vrf.yang +++ b/src/sonic-yang-models/yang-models/sonic-vrf.yang @@ -43,6 +43,14 @@ module sonic-vrf { "Enable/disable fallback feature which is useful for specified VRF user to access internet through global/main route."; } + leaf vni { + type uint32 { + range "0..16777215"; + } + default 0; + description + "VNI mapped to VRF"; + } } /* end of list VRF_LISt */ } /* end of container VRf */ } /* end of container sonic-vrf */ From 690fa2e93684dd6db33ef9a8a12fbcf06209cbb8 Mon Sep 17 00:00:00 2001 From: Dror Prital <76714716+dprital@users.noreply.github.com> Date: Thu, 23 Feb 2023 15:02:53 +0200 Subject: [PATCH 08/46] [submodule] Advance sonic-platform-daemons pointer (#13951) Update sonic-platform-daemons submodule pointer to include the following: * 05dd3bd Update CMIS module types for 2x100G AOC support ([#339](https://github.com/sonic-net/sonic-platform-daemons/pull/339)) * f132d12 [ycabled] add more coverage to ycabled; add minor name change for vendor API CLI return key-values pairs ([#338](https://github.com/sonic-net/sonic-platform-daemons/pull/338)) Signed-off-by: dprital --- 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 906d198dea3c..05dd3bd3e6b3 160000 --- a/src/sonic-platform-daemons +++ b/src/sonic-platform-daemons @@ -1 +1 @@ -Subproject commit 906d198dea3cddc2d9b864a89028b590bd5c1ff8 +Subproject commit 05dd3bd3e6b3c94cf64e36302f735a101a60ea53 From 33db298d70081efd7d815ec860b0b9856b32a693 Mon Sep 17 00:00:00 2001 From: RogerX87 Date: Fri, 24 Feb 2023 01:08:13 +0800 Subject: [PATCH 09/46] [devices]: Update the Wistron platform support in master branch (#12110) * Update the Wistron platform support in master branch Signed-off-by: RogerX87 --- .../CSV/TL7_DAC_1M.csv | 342 +++++++ .../CSV/TL7_DAC_3M.csv | 342 +++++++ .../CSV/TL7_Optics.csv | 261 ++++++ .../x86_64-wistron_6512_32r-r0/installer.conf | 2 +- .../x86_64-wistron_6512_32r-r0/pcie.yaml | 495 ++++++++++ .../x86_64-wistron_6512_32r-r0/platform.json | 848 ++++++++++++++++++ .../plugins/sfputil.py | 29 +- .../sonic_platform/fan.py | 182 ---- .../sonic_platform/psu.py | 248 ----- .../sonic_platform/watchdog.py | 73 -- .../system_health_monitoring_config.json | 11 + .../6512-32_32x400G.config.yaml | 39 +- .../wistron_6512_32r/buffers.json.j2 | 144 ++- .../buffers_defaults_def_lossy.j2 | 24 +- .../wistron_6512_32r/buffers_defaults_t1.j2 | 77 +- .../wistron_6512_32r/hwsku.json | 132 +++ .../wistron_6512_32r/innovium.77700_A | 1 + .../wistron_6512_32r/innovium.77700_B | 1 + .../wistron_6512_32r/ivm.sai.config.yaml | 3 +- .../ivm.sai.datapath.config.yaml | 12 +- .../wistron_6512_32r/pg_profile_lookup.ini | 36 +- .../wistron_6512_32r/qos.json.j2 | 165 ++-- .../qos_defaults_def_lossy.j2 | 17 +- .../wistron_6512_32r/qos_defaults_t1.j2 | 155 ++-- .../6512-32_32x100G.config.yaml | 419 +++++++++ .../wistron_6512_32r_32x100/buffers.json.j2 | 162 ++++ .../buffers_defaults_def_lossy.j2 | 42 + .../buffers_defaults_t1.j2 | 162 ++++ .../wistron_6512_32r_32x100/hwsku.json | 132 +++ .../wistron_6512_32r_32x100/innovium.77700_A | 60 ++ .../wistron_6512_32r_32x100/innovium.77700_B | 60 ++ .../ivm.sai.config.yaml | 9 + .../ivm.sai.datapath.config.yaml | 9 + .../pg_profile_lookup.ini | 22 + .../wistron_6512_32r_32x100/port_config.ini | 33 + .../wistron_6512_32r_32x100/qos.json.j2 | 129 +++ .../qos_defaults_def_lossy.j2 | 121 +++ .../qos_defaults_t1.j2 | 129 +++ .../wistron_6512_32r_32x100/sai.profile | 1 + .../Wistron_sw_to3200k/buffers.json.j2 | 144 ++- .../buffers_defaults_def_lossy.j2 | 24 +- .../Wistron_sw_to3200k/buffers_defaults_t1.j2 | 77 +- .../config_32x400G_wistron_sw_to3200k.yaml | 6 +- .../Wistron_sw_to3200k/hwsku.json | 132 +++ .../Wistron_sw_to3200k/innovium.77700_A | 1 + .../Wistron_sw_to3200k/innovium.77700_B | 1 + .../Wistron_sw_to3200k/ivm.sai.config.yaml | 2 +- .../ivm.sai.datapath.config.yaml | 12 +- .../Wistron_sw_to3200k/pg_profile_lookup.ini | 36 +- .../Wistron_sw_to3200k/qos.json.j2 | 224 +++-- .../qos_defaults_def_lossy.j2 | 17 +- .../Wistron_sw_to3200k/qos_defaults_t1.j2 | 218 +++-- .../buffers.json.j2 | 142 ++- .../buffers_defaults_def_lossy.j2 | 20 +- .../buffers_defaults_t1.j2 | 67 +- .../hwsku.json | 132 +++ .../innovium.77700_A | 1 + .../innovium.77700_B | 1 + .../ivm.sai.config.yaml | 2 +- .../pg_profile_lookup.ini | 36 +- .../qos.json.j2 | 165 ++-- .../qos_defaults_def_lossy.j2 | 17 +- .../qos_defaults_t1.j2 | 155 ++-- .../buffers.json.j2 | 142 ++- .../buffers_defaults_def_lossy.j2 | 20 +- .../buffers_defaults_t1.j2 | 66 +- .../hwsku.json | 132 +++ .../innovium.77700_A | 1 + .../innovium.77700_B | 1 + .../ivm.sai.config.yaml | 2 +- .../pg_profile_lookup.ini | 36 +- .../qos.json.j2 | 165 ++-- .../qos_defaults_def_lossy.j2 | 17 +- .../qos_defaults_t1.j2 | 155 ++-- .../buffers.json.j2 | 142 ++- .../buffers_defaults_def_lossy.j2 | 20 +- .../buffers_defaults_t1.j2 | 67 +- .../hwsku.json | 132 +++ .../innovium.77700_A | 1 + .../innovium.77700_B | 1 + .../ivm.sai.config.yaml | 2 +- .../pg_profile_lookup.ini | 36 +- .../qos.json.j2 | 165 ++-- .../qos_defaults_def_lossy.j2 | 17 +- .../qos_defaults_t1.j2 | 155 ++-- .../Wistron_sw_to3200k_32x100/buffers.json.j2 | 73 +- .../buffers_defaults_def_lossy.j2 | 24 +- .../buffers_defaults_t1.j2 | 73 +- .../config_32x100G_wistron_sw_to3200k.yaml | 5 +- .../Wistron_sw_to3200k_32x100/hwsku.json | 132 +++ .../innovium.77700_B | 1 + .../ivm.sai.config.yaml | 2 +- .../pg_profile_lookup.ini | 36 +- .../Wistron_sw_to3200k_32x100/qos.json.j2 | 155 ++-- .../qos_defaults_def_lossy.j2 | 17 +- .../qos_defaults_t1.j2 | 155 ++-- .../buffers.json.j2 | 142 ++- .../buffers_defaults_def_lossy.j2 | 20 +- .../buffers_defaults_t1.j2 | 67 +- .../Wistron_sw_to3200k_72x25_6x400/hwsku.json | 132 +++ .../innovium.77700_A | 1 + .../innovium.77700_B | 1 + .../ivm.sai.config.yaml | 2 +- .../pg_profile_lookup.ini | 36 +- .../qos.json.j2 | 165 ++-- .../qos_defaults_def_lossy.j2 | 17 +- .../qos_defaults_t1.j2 | 155 ++-- .../installer.conf | 2 +- .../libplatform.so | Bin 0 -> 26640 bytes .../x86_64-wistron_sw_to3200k-r0/pcie.yaml | 375 ++++++++ .../platform.json | 844 +++++++++++++++++ .../platform_components.json | 14 + .../plugins/eeprom.py | 6 +- .../plugins/sfputil.py | 10 +- .../x86_64-wistron_sw_to3200k-r0/smartd.conf | 150 ++++ .../system_health_monitoring_config.json | 11 + .../watchdog-control.service | 10 + .../6512-32r/modules/Makefile | 2 +- .../6512-32r/modules/i2c-imc.c | 515 +++++++++++ .../6512-32r/modules/wistron_6512_32r_cpld.c | 141 +++ .../6512-32r/modules/wistron_6512_32r_oom.c | 376 +++++++- .../6512-32r/modules/wistron_6512_32r_psu.c | 42 +- .../modules/wistron_6512_32r_syseeprom.c | 4 +- .../service/6512-32r-firmware_ver.service | 12 + .../service/6512-32r-platform.service | 3 +- .../6512-32r/setup.py | 7 +- .../6512-32r}/sonic_platform/__init__.py | 2 +- .../6512-32r}/sonic_platform/chassis.py | 167 +++- .../6512-32r/sonic_platform/component.py | 269 ++++++ .../6512-32r}/sonic_platform/eeprom.py | 21 +- .../6512-32r/sonic_platform/fan.py | 263 ++++++ .../6512-32r/sonic_platform/fan_drawer.py | 120 +++ .../6512-32r}/sonic_platform/platform.py | 0 .../6512-32r/sonic_platform/psu.py | 324 +++++++ .../6512-32r}/sonic_platform/sfp.py | 607 ++++++++++--- .../6512-32r}/sonic_platform/thermal.py | 88 +- .../6512-32r/sonic_platform/watchdog.py | 184 ++++ .../6512-32r/utils/platform_firmware_version | 17 + .../6512-32r/utils/platform_sync | 2 + .../6512-32r/utils/platform_syseeprom | 19 +- .../6512-32r/utils/sonic-fanthrml-monitor | 0 .../6512-32r/utils/sonic-led-monitor | 0 .../6512-32r/utils/sonic-psu-monitor | 45 +- .../6512-32r/utils/sonic-qsfp-eeprom-monitor | 596 ++++++++++++ .../6512-32r/utils/sonic-qsfp-monitor | 798 +++++++++------- .../6512-32r/utils/sonic-send-temp-to-bmc | 51 ++ .../6512-32r/utils/wistron_6512_32r_util.py | 23 +- .../debian/changelog | 5 + .../debian/compat | 1 + .../debian/control | 14 + .../debian/rules | 143 +++ .../sonic-platform-wistron-6512-32r.install | 3 + .../sonic-platform-wistron-6512-32r.postinst | 41 + .../sonic-platform-wistron-sw-to3200k.install | 4 + ...sonic-platform-wistron-sw-to3200k.postinst | 43 + .../sw-to3200k/modules/wistron_i2c_psu.c | 10 +- .../modules/wistron_sw_to3200k_fan.c | 42 +- .../modules/wistron_sw_to3200k_oom.c | 12 +- .../modules/wistron_sw_to3200k_psu.c | 4 +- .../modules/wistron_sw_to3200k_thermal.c | 2 +- .../service/sw-to3200k-firmware_ver.service | 12 + .../sw-to3200k/sonic_platform/__init__.py | 2 +- .../sw-to3200k/sonic_platform/chassis.py | 122 ++- .../sw-to3200k/sonic_platform/component.py | 240 +++++ .../sw-to3200k/sonic_platform/eeprom.py | 17 +- .../sw-to3200k/sonic_platform/fan.py | 266 ++++-- .../sw-to3200k/sonic_platform/fan_drawer.py | 119 +++ .../sw-to3200k/sonic_platform/psu.py | 98 +- .../sw-to3200k/sonic_platform/sfp.py | 86 +- .../sw-to3200k/sonic_platform/thermal.py | 127 ++- .../utils/platform_firmware_version | 24 + .../sw-to3200k/utils/platform_led | 0 .../sw-to3200k/utils/platform_pld | 0 .../sw-to3200k/utils/platform_sync | 0 .../sw-to3200k/utils/sonic-fanthrml-monitor | 0 .../sw-to3200k/utils/sonic-led-monitor | 40 +- .../sw-to3200k/utils/sonic-psu-monitor | 18 +- .../sw-to3200k/utils/sonic-qsfp-monitor | 0 .../sw-to3200k/utils/sw_to3200k_watchdog.sh | 5 + .../utils/wistron_sw_to3200k_util.py | 18 +- 180 files changed, 14449 insertions(+), 2836 deletions(-) create mode 100755 device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_1M.csv create mode 100755 device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_3M.csv create mode 100755 device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_Optics.csv create mode 100755 device/wistron/x86_64-wistron_6512_32r-r0/pcie.yaml create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/platform.json delete mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/fan.py delete mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/psu.py delete mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/watchdog.py create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/system_health_monitoring_config.json create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/hwsku.json create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/6512-32_32x100G.config.yaml create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers.json.j2 create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_def_lossy.j2 create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_t1.j2 create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/hwsku.json create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_A create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_B create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.config.yaml create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.datapath.config.yaml create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/pg_profile_lookup.ini create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/port_config.ini create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos.json.j2 create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_def_lossy.j2 create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_t1.j2 create mode 100644 device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/sai.profile create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/hwsku.json mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.config.yaml mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos.json.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_def_lossy.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_t1.j2 create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/hwsku.json mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/ivm.sai.config.yaml mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos.json.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_def_lossy.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_t1.j2 create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/hwsku.json mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/ivm.sai.config.yaml mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos.json.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_def_lossy.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_t1.j2 create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/hwsku.json mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/ivm.sai.config.yaml mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos.json.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_def_lossy.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_t1.j2 create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/hwsku.json mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/ivm.sai.config.yaml mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos.json.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_def_lossy.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_t1.j2 create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/hwsku.json mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/ivm.sai.config.yaml mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos.json.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_def_lossy.j2 mode change 100644 => 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_t1.j2 create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/libplatform.so create mode 100755 device/wistron/x86_64-wistron_sw_to3200k-r0/pcie.yaml create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/platform.json create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/platform_components.json create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/smartd.conf create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/system_health_monitoring_config.json create mode 100644 device/wistron/x86_64-wistron_sw_to3200k-r0/watchdog-control.service create mode 100644 platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/i2c-imc.c create mode 100644 platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-firmware_ver.service rename {device/wistron/x86_64-wistron_6512_32r-r0 => platform/innovium/sonic-platform-modules-wistron/6512-32r}/sonic_platform/__init__.py (70%) mode change 100644 => 100755 rename {device/wistron/x86_64-wistron_6512_32r-r0 => platform/innovium/sonic-platform-modules-wistron/6512-32r}/sonic_platform/chassis.py (55%) mode change 100644 => 100755 create mode 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/component.py rename {device/wistron/x86_64-wistron_6512_32r-r0 => platform/innovium/sonic-platform-modules-wistron/6512-32r}/sonic_platform/eeprom.py (81%) mode change 100644 => 100755 create mode 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan.py create mode 100644 platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan_drawer.py rename {device/wistron/x86_64-wistron_6512_32r-r0 => platform/innovium/sonic-platform-modules-wistron/6512-32r}/sonic_platform/platform.py (100%) mode change 100644 => 100755 create mode 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/psu.py rename {device/wistron/x86_64-wistron_6512_32r-r0 => platform/innovium/sonic-platform-modules-wistron/6512-32r}/sonic_platform/sfp.py (72%) mode change 100644 => 100755 rename {device/wistron/x86_64-wistron_6512_32r-r0 => platform/innovium/sonic-platform-modules-wistron/6512-32r}/sonic_platform/thermal.py (61%) mode change 100644 => 100755 create mode 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/watchdog.py create mode 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_firmware_version mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_sync mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_syseeprom mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-fanthrml-monitor mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-led-monitor mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-psu-monitor create mode 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-eeprom-monitor mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-monitor create mode 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-send-temp-to-bmc mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/wistron_6512_32r_util.py create mode 100644 platform/innovium/sonic-platform-modules-wistron/debian/changelog create mode 100644 platform/innovium/sonic-platform-modules-wistron/debian/compat create mode 100644 platform/innovium/sonic-platform-modules-wistron/debian/control create mode 100755 platform/innovium/sonic-platform-modules-wistron/debian/rules create mode 100644 platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.install create mode 100644 platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.postinst create mode 100644 platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.install create mode 100644 platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.postinst create mode 100644 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/service/sw-to3200k-firmware_ver.service create mode 100644 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/component.py create mode 100644 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan_drawer.py create mode 100755 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_firmware_version mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_led mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_pld mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_sync mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-fanthrml-monitor mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-led-monitor mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-psu-monitor mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-qsfp-monitor create mode 100755 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sw_to3200k_watchdog.sh mode change 100644 => 100755 platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/wistron_sw_to3200k_util.py diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_1M.csv b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_1M.csv new file mode 100755 index 000000000000..b9f4e750a8df --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_1M.csv @@ -0,0 +1,342 @@ +VERSION,CABLE TYPE,VENDOR,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.2,DAC_1M,GENERIC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,SPEED,ENCODING,,,,,,,,,SPEED,ENCODING,,,,,,,,,,,,,SPEED,ENCODING,,,,,,,SPEED,ENCODING,,,,,,,SPEED,ENCODING,,,,,,,,,, +,,,50G/400G,PAM4,,,,,,,,,25G/100G,NRZ,,,,,,,,,,,,,10G/40G,NRZ,,,,,,,LT 50G/400G ,PAM4,,,,,,,ANLT 25G/100G ,NRZ,,,,,,,,,, +index,Front Port,lane,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_EQ_COARSE_TUNE_EFFORT_50G,RX_EQ_FINE_TUNE_EFFORT_50G,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_AGC_TARGET,RX_EYE_DISQUALIFY_THRESHOLD_25G,RX_EQ_COARSE_TUNE_EFFORT_25G,RX_EQ_FINE_TUNE_EFFORT_25G,SD_RESET_THRESHOLD,SD_RESET_25G,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_EQ_COARSE_TUNE_EFFORT_50G,RX_EQ_FINE_TUNE_EFFORT_50G,RX_CTLE_LF,RX_CTLE_HF,RX_CTLE_BW,LINK_TRAINING,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_AGC_TARGET,RX_EYE_DISQUALIFY_THRESHOLD_25G,RX_EQ_COARSE_TUNE_EFFORT_25G,RX_EQ_FINE_TUNE_EFFORT_25G,SD_RESET_25G,SD_RESET_THRESHOLD_25G,LINK_TRAINING,AN,AN_ABILITY,FEC +0,0,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +1,0,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +2,0,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +3,0,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +4,0,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +5,0,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +6,0,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +7,0,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +8,1,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +9,1,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +10,1,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +11,1,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +12,1,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +13,1,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +14,1,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +15,1,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +16,2,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +17,2,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +18,2,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +19,2,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +20,2,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +21,2,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +22,2,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +23,2,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +24,3,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +25,3,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +26,3,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +27,3,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +28,3,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +29,3,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +30,3,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +31,3,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +32,4,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +33,4,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +34,4,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +35,4,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +36,4,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +37,4,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +38,4,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +39,4,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +40,5,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +41,5,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +42,5,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +43,5,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +44,5,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +45,5,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +46,5,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +47,5,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +48,6,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +49,6,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +50,6,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +51,6,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +52,6,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +53,6,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +54,6,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +55,6,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +56,7,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +57,7,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +58,7,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +59,7,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +60,7,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +61,7,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +62,7,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +63,7,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +64,8,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +65,8,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +66,8,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +67,8,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +68,8,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +69,8,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +70,8,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +71,8,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +72,9,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +73,9,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +74,9,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +75,9,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +76,9,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +77,9,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +78,9,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +79,9,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +80,10,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +81,10,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +82,10,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +83,10,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +84,10,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +85,10,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +86,10,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +87,10,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +88,11,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +89,11,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +90,11,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +91,11,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +92,11,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +93,11,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +94,11,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +95,11,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +96,12,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +97,12,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +98,12,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +99,12,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +100,12,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +101,12,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +102,12,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +103,12,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +104,13,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +105,13,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +106,13,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +107,13,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +108,13,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +109,13,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +110,13,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +111,13,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +112,14,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +113,14,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +114,14,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +115,14,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +116,14,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +117,14,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +118,14,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +119,14,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +120,15,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +121,15,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +122,15,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +123,15,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +124,15,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +125,15,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +126,15,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +127,15,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +128,16,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +129,16,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +130,16,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +131,16,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +132,16,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +133,16,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +134,16,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +135,16,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +136,17,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +137,17,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +138,17,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +139,17,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +140,17,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +141,17,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +142,17,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +143,17,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +144,18,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +145,18,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +146,18,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +147,18,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +148,18,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +149,18,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +150,18,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +151,18,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +152,19,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +153,19,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +154,19,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +155,19,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +156,19,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +157,19,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +158,19,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +159,19,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +160,20,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +161,20,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +162,20,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +163,20,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +164,20,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +165,20,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +166,20,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +167,20,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +168,21,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +169,21,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +170,21,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +171,21,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +172,21,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +173,21,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +174,21,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +175,21,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +176,22,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +177,22,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +178,22,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +179,22,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +180,22,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +181,22,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +182,22,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +183,22,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +184,23,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +185,23,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +186,23,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +187,23,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +188,23,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +189,23,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +190,23,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +191,23,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +192,24,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +193,24,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +194,24,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +195,24,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +196,24,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +197,24,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +198,24,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +199,24,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +200,25,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +201,25,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +202,25,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +203,25,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +204,25,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +205,25,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +206,25,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +207,25,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +208,26,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +209,26,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +210,26,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +211,26,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +212,26,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +213,26,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +214,26,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +215,26,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +216,27,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +217,27,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +218,27,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +219,27,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +220,27,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +221,27,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +222,27,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +223,27,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +224,28,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +225,28,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +226,28,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +227,28,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +228,28,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +229,28,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +230,28,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +231,28,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +232,29,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +233,29,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +234,29,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +235,29,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +236,29,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +237,29,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +238,29,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +239,29,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +240,30,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +241,30,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +242,30,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +243,30,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +244,30,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +245,30,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +246,30,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +247,30,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +248,31,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +249,31,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +250,31,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +251,31,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +252,31,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +253,31,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +254,31,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +255,31,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_3M.csv b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_3M.csv new file mode 100755 index 000000000000..b6bbd017e483 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_3M.csv @@ -0,0 +1,342 @@ +VERSION,CABLE TYPE,VENDOR,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.2,DAC_3M,GENERIC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,SPEED,ENCODING,,,,,,,,,SPEED,ENCODING,,,,,,,,,,,,,SPEED,ENCODING,,,,,,,SPEED,ENCODING,,,,,,,SPEED,ENCODING,,,,,,,,,, +,,,50G/400G,PAM4,,,,,,,,,25G/100G,NRZ,,,,,,,,,,,,,10G/40G,NRZ,,,,,,,LT 50G/400G,PAM4,,,,,,,ANLT 25G/100G,NRZ,,,,,,,,,, +index,Front Port,lane,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_EQ_COARSE_TUNE_EFFORT_50G,RX_EQ_FINE_TUNE_EFFORT_50G,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_AGC_TARGET,RX_EYE_DISQUALIFY_THRESHOLD_25G,RX_EQ_COARSE_TUNE_EFFORT_25G,RX_EQ_FINE_TUNE_EFFORT_25G,SD_RESET_THRESHOLD,SD_RESET_25G,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_EQ_COARSE_TUNE_EFFORT_50G,RX_EQ_FINE_TUNE_EFFORT_50G,RX_CTLE_LF,RX_CTLE_HF,RX_CTLE_BW,LINK_TRAINING,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_AGC_TARGET,RX_EYE_DISQUALIFY_THRESHOLD_25G,RX_EQ_COARSE_TUNE_EFFORT_25G,RX_EQ_FINE_TUNE_EFFORT_25G,SD_RESET_25G,SD_RESET_THRESHOLD_25G,LINK_TRAINING,AN,AN_ABILITY,FEC +0,0,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +1,0,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +2,0,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +3,0,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +4,0,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +5,0,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +6,0,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +7,0,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +8,1,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +9,1,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +10,1,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +11,1,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +12,1,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +13,1,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +14,1,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +15,1,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +16,2,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +17,2,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +18,2,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +19,2,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +20,2,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +21,2,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +22,2,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +23,2,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +24,3,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +25,3,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +26,3,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +27,3,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +28,3,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +29,3,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +30,3,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +31,3,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +32,4,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +33,4,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +34,4,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +35,4,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +36,4,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +37,4,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +38,4,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +39,4,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +40,5,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +41,5,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +42,5,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +43,5,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +44,5,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +45,5,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +46,5,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +47,5,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +48,6,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +49,6,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +50,6,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +51,6,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +52,6,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +53,6,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +54,6,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +55,6,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +56,7,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +57,7,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +58,7,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +59,7,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +60,7,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +61,7,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +62,7,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +63,7,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +64,8,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +65,8,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +66,8,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +67,8,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +68,8,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +69,8,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +70,8,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +71,8,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +72,9,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +73,9,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +74,9,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +75,9,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +76,9,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +77,9,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +78,9,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +79,9,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +80,10,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +81,10,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +82,10,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +83,10,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +84,10,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +85,10,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +86,10,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +87,10,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +88,11,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +89,11,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +90,11,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +91,11,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +92,11,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +93,11,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +94,11,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +95,11,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +96,12,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +97,12,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +98,12,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +99,12,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +100,12,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +101,12,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +102,12,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +103,12,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +104,13,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +105,13,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +106,13,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +107,13,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +108,13,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +109,13,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +110,13,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +111,13,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +112,14,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +113,14,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +114,14,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +115,14,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +116,14,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +117,14,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +118,14,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +119,14,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +120,15,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +121,15,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +122,15,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +123,15,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +124,15,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +125,15,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +126,15,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +127,15,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +128,16,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +129,16,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +130,16,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +131,16,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +132,16,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +133,16,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +134,16,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +135,16,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +136,17,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +137,17,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +138,17,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +139,17,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +140,17,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +141,17,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +142,17,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +143,17,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +144,18,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +145,18,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +146,18,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +147,18,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +148,18,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +149,18,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +150,18,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +151,18,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +152,19,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +153,19,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +154,19,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +155,19,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +156,19,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +157,19,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +158,19,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +159,19,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +160,20,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +161,20,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +162,20,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +163,20,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +164,20,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +165,20,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +166,20,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +167,20,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +168,21,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +169,21,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +170,21,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +171,21,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +172,21,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +173,21,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +174,21,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +175,21,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +176,22,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +177,22,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +178,22,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +179,22,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +180,22,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +181,22,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +182,22,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +183,22,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +184,23,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +185,23,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +186,23,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +187,23,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +188,23,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +189,23,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +190,23,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +191,23,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +192,24,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +193,24,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +194,24,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +195,24,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +196,24,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +197,24,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +198,24,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +199,24,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +200,25,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +201,25,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +202,25,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +203,25,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +204,25,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +205,25,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +206,25,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +207,25,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +208,26,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +209,26,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +210,26,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +211,26,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +212,26,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +213,26,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +214,26,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +215,26,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +216,27,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +217,27,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +218,27,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +219,27,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +220,27,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +221,27,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +222,27,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +223,27,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +224,28,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +225,28,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +226,28,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +227,28,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +228,28,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +229,28,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +230,28,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +231,28,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +232,29,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +233,29,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +234,29,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +235,29,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +236,29,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +237,29,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +238,29,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +239,29,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +240,30,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +241,30,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +242,30,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +243,30,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +244,30,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +245,30,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +246,30,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +247,30,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +248,31,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +249,31,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +250,31,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +251,31,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +252,31,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +253,31,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +254,31,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +255,31,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_Optics.csv b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_Optics.csv new file mode 100755 index 000000000000..a652f33e78b9 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_Optics.csv @@ -0,0 +1,261 @@ +VERSION,CABLE TYPE,VENDOR,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.2,OPTICS,GENERIC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,SPEED,ENCODING,,,,,,,,,,SPEED,ENCODING,,,,,,,,,,,,,,SPEED,ENCODING,,,,,, +,,,50G/400G,PAM4,,,,,,,,,,25G/100G,NRZ,,,,,,,,,,,,,,10G/40G,NRZ,,,,,, +index,Front Port,lane,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,Optical Module CTLE,RX_EQ_COARSE_TUNE_EFFORT_50G,RX_EQ_FINE_TUNE_EFFORT_50G,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,Optical Module CTLE,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_AGC_TARGET,RX_EYE_DISQUALIFY_THRESHOLD_25G,RX_EQ_COARSE_TUNE_EFFORT_25G,RX_EQ_FINE_TUNE_EFFORT_25G,SD_RESET_THRESHOLD,SD_RESET_25G,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING +0,0,0,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +1,0,1,0,4,0,0,8,5,Medium,High,0,2,0,0,2,0,0,8,4,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +2,0,2,0,4,0,0,8,3.5,Medium,High,0,2,0,0,2,0,0,4,5,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +3,0,3,0,4,0,0,6,6.5,Medium,High,0,2,0,0,6,0,0,6,4,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +4,0,4,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +5,0,5,0,2,0,0,10,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +6,0,6,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +7,0,7,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +8,1,0,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +9,1,1,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +10,1,2,0,4,0,0,6,4.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +11,1,3,0,4,0,0,8,3.5,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +12,1,4,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +13,1,5,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +14,1,6,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +15,1,7,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +16,2,0,0,2,0,0,6,5,Medium,High,0,2,0,0,2,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +17,2,1,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +18,2,2,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,5,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +19,2,3,0,4,0,0,6,5.5,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +20,2,4,0,6,0,0,6,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +21,2,5,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +22,2,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +23,2,7,0,6,0,0,6,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +24,3,0,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +25,3,1,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +26,3,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +27,3,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +28,3,4,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +29,3,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +30,3,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +31,3,7,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +32,4,0,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +33,4,1,0,4,0,0,6,5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +34,4,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +35,4,3,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +36,4,4,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +37,4,5,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +38,4,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +39,4,7,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +40,5,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +41,5,1,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +42,5,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +43,5,3,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +44,5,4,0,4,0,0,6,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +45,5,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +46,5,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +47,5,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +48,6,0,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +49,6,1,0,6,0,0,6,4,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +50,6,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +51,6,3,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +52,6,4,0,6,0,0,6,3.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +53,6,5,0,6,0,0,6,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +54,6,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +55,6,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +56,7,0,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +57,7,1,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +58,7,2,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +59,7,3,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +60,7,4,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +61,7,5,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +62,7,6,0,4,0,0,4,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +63,7,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +64,8,0,0,4,0,0,6,5,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +65,8,1,0,4,0,0,6,6.5,Medium,High,0,2,0,0,4,0,0,8,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +66,8,2,0,4,0,0,6,5.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +67,8,3,0,4,0,0,10,4,Medium,High,0,2,0,0,4,0,0,10,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +68,8,4,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +69,8,5,0,4,0,0,10,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +70,8,6,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +71,8,7,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +72,9,0,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +73,9,1,0,4,0,0,4,7,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +74,9,2,0,4,0,0,8,4.5,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +75,9,3,0,4,0,0,8,5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +76,9,4,0,4,0,0,6,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +77,9,5,0,4,0,0,4,7,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +78,9,6,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +79,9,7,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +80,10,0,0,4,0,0,6,5,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +81,10,1,0,4,0,0,8,5,Medium,High,0,2,0,0,4,0,0,6,5,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +82,10,2,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +83,10,3,0,4,0,0,6,6,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +84,10,4,0,4,0,0,4,7,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +85,10,5,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +86,10,6,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +87,10,7,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +88,11,0,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +89,11,1,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +90,11,2,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +91,11,3,0,6,0,0,6,4.5,Medium,High,0,2,0,0,6,0,0,8,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +92,11,4,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +93,11,5,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +94,11,6,0,4,0,0,4,7.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +95,11,7,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +96,12,0,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +97,12,1,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +98,12,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +99,12,3,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +100,12,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +101,12,5,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +102,12,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +103,12,7,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +104,13,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +105,13,1,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +106,13,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +107,13,3,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +108,13,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +109,13,5,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +110,13,6,0,4,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +111,13,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +112,14,0,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +113,14,1,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +114,14,2,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +115,14,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +116,14,4,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +117,14,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +118,14,6,0,4,0,0,4,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +119,14,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +120,15,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +121,15,1,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +122,15,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +123,15,3,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +124,15,4,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +125,15,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +126,15,6,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +127,15,7,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +128,16,0,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +129,16,1,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +130,16,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +131,16,3,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +132,16,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +133,16,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +134,16,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +135,16,7,0,4,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +136,17,0,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +137,17,1,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +138,17,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +139,17,3,0,6,0,0,6,3.5,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +140,17,4,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +141,17,5,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +142,17,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +143,17,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +144,18,0,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +145,18,1,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +146,18,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +147,18,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +148,18,4,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +149,18,5,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +150,18,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +151,18,7,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +152,19,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +153,19,1,0,6,0,0,6,4,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +154,19,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +155,19,3,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +156,19,4,0,4,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +157,19,5,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +158,19,6,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +159,19,7,0,6,0,0,6,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +160,20,0,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +161,20,1,0,4,0,0,6,5.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +162,20,2,0,4,0,0,6,5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +163,20,3,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +164,20,4,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +165,20,5,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +166,20,6,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +167,20,7,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +168,21,0,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +169,21,1,0,4,0,0,6,5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +170,21,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +171,21,3,0,6,0,0,6,4,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +172,21,4,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +173,21,5,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +174,21,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +175,21,7,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +176,22,0,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +177,22,1,0,4,0,0,8,4.5,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +178,22,2,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +179,22,3,0,4,0,0,10,3,Medium,High,0,2,0,0,4,0,0,10,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +180,22,4,0,4,0,0,10,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +181,22,5,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +182,22,6,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +183,22,7,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +184,23,0,0,6,0,0,6,4,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +185,23,1,0,4,0,0,4,7,Medium,High,0,2,0,0,4,0,0,8,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +186,23,2,0,4,0,0,6,4.5,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +187,23,3,0,4,0,0,6,5.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +188,23,4,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +189,23,5,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +190,23,6,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +191,23,7,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +192,24,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +193,24,1,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +194,24,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +195,24,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +196,24,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +197,24,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +198,24,6,0,4,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +199,24,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +200,25,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +201,25,1,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +202,25,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +203,25,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +204,25,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +205,25,5,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +206,25,6,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +207,25,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +208,26,0,0,4,0,0,6,3.5,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +209,26,1,0,4,0,0,6,4.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +210,26,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +211,26,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +212,26,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +213,26,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +214,26,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +215,26,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +216,27,0,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +217,27,1,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +218,27,2,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +219,27,3,0,6,0,0,6,4.5,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +220,27,4,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +221,27,5,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +222,27,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +223,27,7,0,6,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +224,28,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +225,28,1,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +226,28,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +227,28,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +228,28,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +229,28,5,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +230,28,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +231,28,7,0,4,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +232,29,0,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +233,29,1,0,6,0,0,6,4,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +234,29,2,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +235,29,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +236,29,4,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +237,29,5,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +238,29,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +239,29,7,0,6,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +240,30,0,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +241,30,1,0,4,0,0,6,6,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +242,30,2,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +243,30,3,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +244,30,4,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +245,30,5,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +246,30,6,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +247,30,7,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +248,31,0,0,6,-1,0,4,4.5,Medium,High,0,2,0,0,6,0,0,6,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +249,31,1,0,4,0,0,6,5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +250,31,2,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +251,31,3,0,4,0,0,4,6.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +252,31,4,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +253,31,5,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +254,31,6,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +255,31,7,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/installer.conf b/device/wistron/x86_64-wistron_6512_32r-r0/installer.conf index d5f9419d77ff..0bd1a8bae86f 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/installer.conf +++ b/device/wistron/x86_64-wistron_6512_32r-r0/installer.conf @@ -1,4 +1,4 @@ CONSOLE_PORT=0x3f8 CONSOLE_DEV=0 CONSOLE_SPEED=115200 -ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="pcie_aspm=off" +ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="pcie_aspm=off intel_iommu=off" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/pcie.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/pcie.yaml new file mode 100755 index 000000000000..227f7cb249bf --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/pcie.yaml @@ -0,0 +1,495 @@ +- bus: '00' + dev: '00' + fn: '0' + id: 6f00 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2 (rev 05)' +- bus: '00' + dev: '01' + fn: '0' + id: 6f02 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 (rev 05)' +- bus: '00' + dev: '01' + fn: '1' + id: 6f03 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 (rev 05)' +- bus: '00' + dev: '02' + fn: '0' + id: 6f04 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 (rev 05)' +- bus: '00' + dev: '02' + fn: '2' + id: 6f06 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 (rev 05)' +- bus: '00' + dev: '02' + fn: '3' + id: 6f07 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 (rev 05)' +- bus: '00' + dev: '03' + fn: '0' + id: 6f08 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 05)' +- bus: '00' + dev: '03' + fn: '1' + id: 6f09 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 05)' +- bus: '00' + dev: '03' + fn: '2' + id: 6f0a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 05)' +- bus: '00' + dev: '03' + fn: '3' + id: 6f0b + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 05)' +- bus: '00' + dev: '04' + fn: '0' + id: 6f20 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 0 (rev 05)' +- bus: '00' + dev: '04' + fn: '1' + id: 6f21 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 1 (rev 05)' +- bus: '00' + dev: '04' + fn: '2' + id: 6f22 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 2 (rev 05)' +- bus: '00' + dev: '04' + fn: '3' + id: 6f23 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 3 (rev 05)' +- bus: '00' + dev: '04' + fn: '4' + id: 6f24 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 4 (rev 05)' +- bus: '00' + dev: '04' + fn: '5' + id: 6f25 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 5 (rev 05)' +- bus: '00' + dev: '04' + fn: '6' + id: 6f26 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 6 (rev 05)' +- bus: '00' + dev: '04' + fn: '7' + id: 6f27 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 7 (rev 05)' +- bus: '00' + dev: '05' + fn: '0' + id: 6f28 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Map/VTd_Misc/System Management (rev 05)' +- bus: '00' + dev: '05' + fn: '1' + id: 6f29 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Hot Plug (rev 05)' +- bus: '00' + dev: '05' + fn: '2' + id: 6f2a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO RAS/Control Status/Global Errors (rev 05)' +- bus: '00' + dev: '05' + fn: '4' + id: 6f2c + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D I/O APIC (rev 05)' +- bus: '00' + dev: '05' + fn: '6' + id: 6f39 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IO Performance Monitoring (rev 05)' +- bus: '00' + dev: '06' + fn: '0' + id: 6f10 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '1' + id: 6f11 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '2' + id: 6f12 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '3' + id: 6f13 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '4' + id: 6f14 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '5' + id: 6f15 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '6' + id: 6f16 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '7' + id: 6f17 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '07' + fn: '0' + id: 6f18 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '07' + fn: '1' + id: 6f19 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '07' + fn: '2' + id: 6f1a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '07' + fn: '3' + id: 6f1b + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '07' + fn: '4' + id: 6f1c + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '14' + fn: '0' + id: 8c31 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)' +- bus: '00' + dev: '16' + fn: '0' + id: 8c3a + name: 'Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)' +- bus: '00' + dev: '16' + fn: '1' + id: 8c3b + name: 'Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #2 (rev 04)' +- bus: '00' + dev: '1c' + fn: '0' + id: 8c10 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)' +- bus: '00' + dev: '1c' + fn: '7' + id: 8c1e + name: 'Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #8 (rev d5)' +- bus: '00' + dev: '1d' + fn: '0' + id: 8c26 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)' +- bus: '00' + dev: '1f' + fn: '0' + id: 8c54 + name: 'Intel Corporation C224 Series Chipset Family Server Standard SKU LPC Controller (rev 05)' +- bus: '00' + dev: '1f' + fn: '2' + id: 8c02 + name: '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: 'Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)' +- bus: '02' + dev: '00' + fn: '0' + id: 1b58 + name: 'Device 1d98:1b58 (rev 10)' +- bus: '04' + dev: '00' + fn: '0' + id: 15a7 + name: 'Intel Corporation Device 15a7' +- bus: '04' + dev: '00' + fn: '1' + id: 15a7 + name: 'Intel Corporation Device 15a7' +- bus: '05' + dev: '00' + fn: '0' + id: 15a7 + name: 'Intel Corporation Device 15a7' +- bus: '05' + dev: '00' + fn: '1' + id: 15a7 + name: 'Intel Corporation Device 15a7' +- bus: '0b' + dev: '00' + fn: '0' + id: 1533 + name: 'Intel Corporation I210 Gigabit Network Connection (rev 03)' +- bus: 'ff' + dev: '0b' + fn: '0' + id: 6f81 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 05)' +- bus: 'ff' + dev: '0b' + fn: '1' + id: 6f36 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 05)' +- bus: 'ff' + dev: '0b' + fn: '2' + id: 6f37 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 05)' +- bus: 'ff' + dev: '0b' + fn: '3' + id: 6f76 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug (rev 05)' +- bus: 'ff' + dev: '0c' + fn: '0' + id: 6fe0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0c' + fn: '1' + id: 6fe1 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0c' + fn: '2' + id: 6fe2 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0c' + fn: '3' + id: 6fe3 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0f' + fn: '0' + id: 6ff8 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0f' + fn: '4' + id: 6ffc + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0f' + fn: '5' + id: 6ffd + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0f' + fn: '6' + id: 6ffe + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '10' + fn: '0' + id: 6f1d + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent (rev 05)' +- bus: 'ff' + dev: '10' + fn: '1' + id: 6f34 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent (rev 05)' +- bus: 'ff' + dev: '10' + fn: '5' + id: 6f1e + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 05)' +- bus: 'ff' + dev: '10' + fn: '6' + id: 6f7d + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 05)' +- bus: 'ff' + dev: '10' + fn: '7' + id: 6f1f + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 05)' +- bus: 'ff' + dev: '12' + fn: '0' + id: 6fa0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 (rev 05)' +- bus: 'ff' + dev: '12' + fn: '1' + id: 6f30 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 (rev 05)' +- bus: 'ff' + dev: '12' + fn: '2' + id: 6f70 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 Debug (rev 05)' +- bus: 'ff' + dev: '13' + fn: '0' + id: 6fa8 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS (rev 05)' +- bus: 'ff' + dev: '13' + fn: '1' + id: 6f71 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS (rev 05)' +- bus: 'ff' + dev: '13' + fn: '2' + id: 6faa + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: 'ff' + dev: '13' + fn: '3' + id: 6fab + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: 'ff' + dev: '13' + fn: '4' + id: 6fac + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: 'ff' + dev: '13' + fn: '5' + id: 6fad + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: 'ff' + dev: '13' + fn: '6' + id: 6fae + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Broadcast (rev 05)' +- bus: 'ff' + dev: '13' + fn: '7' + id: 6faf + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast (rev 05)' +- bus: 'ff' + dev: '14' + fn: '0' + id: 6fb0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Thermal Control (rev 05)' +- bus: 'ff' + dev: '14' + fn: '1' + id: 6fb1 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Thermal Control (rev 05)' +- bus: 'ff' + dev: '14' + fn: '2' + id: 6fb2 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Error (rev 05)' +- bus: 'ff' + dev: '14' + fn: '3' + id: 6fb3 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Error (rev 05)' +- bus: 'ff' + dev: '14' + fn: '4' + id: 6fbc + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 05)' +- bus: 'ff' + dev: '14' + fn: '5' + id: 6fbd + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 05)' +- bus: 'ff' + dev: '14' + fn: '6' + id: 6fbe + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 05)' +- bus: 'ff' + dev: '14' + fn: '7' + id: 6fbf + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 05)' +- bus: 'ff' + dev: '15' + fn: '0' + id: 6fb4 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Thermal Control (rev 05)' +- bus: 'ff' + dev: '15' + fn: '1' + id: 6fb5 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Thermal Control (rev 05)' +- bus: 'ff' + dev: '15' + fn: '2' + id: 6fb6 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Error (rev 05)' +- bus: 'ff' + dev: '15' + fn: '3' + id: 6fb7 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Error (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '0' + id: 6f98 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '1' + id: 6f99 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '2' + id: 6f9a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '3' + id: 6fc0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '4' + id: 6f9c + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '7' + id: 6f9f + name: 'Intel Corporation Device 6f9f (rev 05)' +- bus: 'ff' + dev: '1f' + fn: '0' + id: 6f88 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1f' + fn: '2' + id: 6f8a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/platform.json b/device/wistron/x86_64-wistron_6512_32r-r0/platform.json new file mode 100644 index 000000000000..f978e6190513 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/platform.json @@ -0,0 +1,848 @@ +{ + "chassis": { + "name": "wistron_6512_32r", + "components": [ + { + "name": "BIOS" + }, + { + "name": "CPLD1" + }, + { + "name": "CPLD2" + }, + { + "name": "MB_FPGA" + }, + { + "name": "CPU_FPGA" + }, + { + "name": "BMC" + } + ], + "fans": [ + { + "name": "FAN-1F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-1R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "fan_drawers": [ + { + "name": "FanTray1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-1F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-1R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray2", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-2F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray3", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-3F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray4", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-4F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray5", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-5F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray6", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-6F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray7", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-7F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + } + ], + "psus": [ + { + "name": "PSU-1", + "fans": [ + { + "name": "PSU-1 FAN-1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "status_led": { + "controllable": false + } + }, + { + "name": "PSU-2", + "fans": [ + { + "name": "PSU-2 FAN-1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "status_led": { + "controllable": false + } + } + ], + "thermals": [ + { + "name": "Switch", + "controllable": false + }, + { + "name": "UCPUB", + "controllable": false + }, + { + "name": "UFANB", + "controllable": false + }, + { + "name": "UFRNT1", + "controllable": false + }, + { + "name": "UFRNT2", + "controllable": false + }, + { + "name": "UFRNT3", + "controllable": false + }, + { + "name": "UFRNT4", + "controllable": false + }, + { + "name": "UREAR1", + "controllable": false + } + ], + "sfps": [ + { + "name": "port1" + }, + { + "name": "port2" + }, + { + "name": "port3" + }, + { + "name": "port4" + }, + { + "name": "port5" + }, + { + "name": "port6" + }, + { + "name": "port7" + }, + { + "name": "port8" + }, + { + "name": "port9" + }, + { + "name": "port10" + }, + { + "name": "port11" + }, + { + "name": "port12" + }, + { + "name": "port13" + }, + { + "name": "port14" + }, + { + "name": "port15" + }, + { + "name": "port16" + }, + { + "name": "port17" + }, + { + "name": "port18" + }, + { + "name": "port19" + }, + { + "name": "port20" + }, + { + "name": "port21" + }, + { + "name": "port22" + }, + { + "name": "port23" + }, + { + "name": "port24" + }, + { + "name": "port25" + }, + { + "name": "port26" + }, + { + "name": "port27" + }, + { + "name": "port28" + }, + { + "name": "port29" + }, + { + "name": "port30" + }, + { + "name": "port31" + }, + { + "name": "port32" + } + ] + }, + "interfaces": { + "Ethernet0": { + "index": "0,0,0,0,0,0,0,0", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x400G[100G]": ["Eth1"], + "1x100G(4)": ["Eth1"], + "4x25G[10G](4)": ["Eth1-1", "Eth1-2", "Eth1-3", "Eth1-4"], + "4x10G[25G](4)": ["Eth1-1", "Eth1-2", "Eth1-3", "Eth1-4"] + } + }, + "Ethernet8": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x400G[100G]": ["Eth2"], + "1x100G(4)": ["Eth2"], + "4x25G[10G](4)": ["Eth2-1", "Eth2-2", "Eth2-3", "Eth2-4"], + "4x10G[25G](4)": ["Eth2-1", "Eth2-2", "Eth2-3", "Eth2-4"] + } + }, + "Ethernet16": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x400G[100G]": ["Eth3"], + "1x100G(4)": ["Eth3"], + "4x25G[10G](4)": ["Eth3-1", "Eth3-2", "Eth3-3", "Eth3-4"], + "4x10G[25G](4)": ["Eth3-1", "Eth3-2", "Eth3-3", "Eth3-4"] + } + }, + "Ethernet24": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x400G[100G]": ["Eth4"], + "1x100G(4)": ["Eth4"], + "4x25G[10G](4)": ["Eth4-1", "Eth4-2", "Eth4-3", "Eth4-4"], + "4x10G[25G](4)": ["Eth4-1", "Eth4-2", "Eth4-3", "Eth4-4"] + } + }, + "Ethernet32": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x400G[100G]": ["Eth5"], + "1x100G(4)": ["Eth5"], + "4x25G[10G](4)": ["Eth5-1", "Eth5-2", "Eth5-3", "Eth5-4"], + "4x10G[25G](4)": ["Eth5-1", "Eth5-2", "Eth5-3", "Eth5-4"] + } + }, + "Ethernet40": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x400G[100G]": ["Eth6"], + "1x100G(4)": ["Eth6"], + "4x25G[10G](4)": ["Eth6-1", "Eth6-2", "Eth6-3", "Eth6-4"], + "4x10G[25G](4)": ["Eth6-1", "Eth6-2", "Eth6-3", "Eth6-4"] + } + }, + "Ethernet48": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x400G[100G]": ["Eth7"], + "1x100G(4)": ["Eth7"], + "4x25G[10G](4)": ["Eth7-1", "Eth7-2", "Eth7-3", "Eth7-4"], + "4x10G[25G](4)": ["Eth7-1", "Eth7-2", "Eth7-3", "Eth7-4"] + } + }, + "Ethernet56": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x400G[100G]": ["Eth8"], + "1x100G(4)": ["Eth8"], + "4x25G[10G](4)": ["Eth8-1", "Eth8-2", "Eth8-3", "Eth8-4"], + "4x10G[25G](4)": ["Eth8-1", "Eth8-2", "Eth8-3", "Eth8-4"] + } + }, + "Ethernet64": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "153,154,155,156,157,158,159,160", + "breakout_modes": { + "1x400G[100G]": ["Eth9"], + "1x100G(4)": ["Eth9"], + "4x25G[10G](4)": ["Eth9-1", "Eth9-2", "Eth9-3", "Eth9-4"], + "4x10G[25G](4)": ["Eth9-1", "Eth9-2", "Eth9-3", "Eth9-4"] + } + }, + "Ethernet72": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "145,146,147,148,149,150,151,152", + "breakout_modes": { + "1x400G[100G]": ["Eth10"], + "1x100G(4)": ["Eth10"], + "4x25G[10G](4)": ["Eth10-1", "Eth10-2", "Eth10-3", "Eth10-4"], + "4x10G[25G](4)": ["Eth10-1", "Eth10-2", "Eth10-3", "Eth10-4"] + } + }, + "Ethernet80": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "137,138,139,140,141,142,143,144", + "breakout_modes": { + "1x400G[100G]": ["Eth11"], + "1x100G(4)": ["Eth11"], + "4x25G[10G](4)": ["Eth11-1", "Eth11-2", "Eth11-3", "Eth11-4"], + "4x10G[25G](4)": ["Eth11-1", "Eth11-2", "Eth11-3", "Eth11-4"] + } + }, + "Ethernet88": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x400G[100G]": ["Eth12"], + "1x100G(4)": ["Eth12"], + "4x25G[10G](4)": ["Eth12-1", "Eth12-2", "Eth12-3", "Eth12-4"], + "4x10G[25G](4)": ["Eth12-1", "Eth12-2", "Eth12-3", "Eth12-4"] + } + }, + "Ethernet96": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G[100G]": ["Eth13"], + "1x100G(4)": ["Eth13"], + "4x25G[10G](4)": ["Eth13-1", "Eth13-2", "Eth13-3", "Eth13-4"], + "4x10G[25G](4)": ["Eth13-1", "Eth13-2", "Eth13-3", "Eth13-4"] + } + }, + "Ethernet104": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G[100G]": ["Eth14"], + "1x100G(4)": ["Eth14"], + "4x25G[10G](4)": ["Eth14-1", "Eth14-2", "Eth14-3", "Eth14-4"], + "4x10G[25G](4)": ["Eth14-1", "Eth14-2", "Eth14-3", "Eth14-4"] + } + }, + "Ethernet112": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x400G[100G]": ["Eth15"], + "1x100G(4)": ["Eth15"], + "4x25G[10G](4)": ["Eth15-1", "Eth15-2", "Eth15-3", "Eth15-4"], + "4x10G[25G](4)": ["Eth15-1", "Eth15-2", "Eth15-3", "Eth15-4"] + } + }, + "Ethernet120": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x400G[100G]": ["Eth16"], + "1x100G(4)": ["Eth16"], + "4x25G[10G](4)": ["Eth16-1", "Eth16-2", "Eth16-3", "Eth16-4"], + "4x10G[25G](4)": ["Eth16-1", "Eth16-2", "Eth16-3", "Eth16-4"] + } + }, + "Ethernet128": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "209,210,211,212,213,214,215,216", + "breakout_modes": { + "1x400G[100G]": ["Eth17"], + "1x100G(4)": ["Eth17"], + "4x25G[10G](4)": ["Eth17-1", "Eth17-2", "Eth17-3", "Eth17-4"], + "4x10G[25G](4)": ["Eth17-1", "Eth17-2", "Eth17-3", "Eth17-4"] + } + }, + "Ethernet136": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "217,218,219,220,221,222,223,224", + "breakout_modes": { + "1x400G[100G]": ["Eth18"], + "1x100G(4)": ["Eth18"], + "4x25G[10G](4)": ["Eth18-1", "Eth18-2", "Eth18-3", "Eth18-4"], + "4x10G[25G](4)": ["Eth18-1", "Eth18-2", "Eth18-3", "Eth18-4"] + } + }, + "Ethernet144": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "193,194,195,196,197,198,199,200", + "breakout_modes": { + "1x400G[100G]": ["Eth19"], + "1x100G(4)": ["Eth19"], + "4x25G[10G](4)": ["Eth19-1", "Eth19-2", "Eth19-3", "Eth19-4"], + "4x10G[25G](4)": ["Eth19-1", "Eth19-2", "Eth19-3", "Eth19-4"] + } + }, + "Ethernet152": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "201,202,203,204,205,206,207,208", + "breakout_modes": { + "1x400G[100G]": ["Eth20"], + "1x100G(4)": ["Eth20"], + "4x25G[10G](4)": ["Eth20-1", "Eth20-2", "Eth20-3", "Eth20-4"], + "4x10G[25G](4)": ["Eth20-1", "Eth20-2", "Eth20-3", "Eth20-4"] + } + }, + "Ethernet160": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "177,178,179,180,181,182,183,184", + "breakout_modes": { + "1x400G[100G]": ["Eth21"], + "1x100G(4)": ["Eth21"], + "4x25G[10G](4)": ["Eth21-1", "Eth21-2", "Eth21-3", "Eth21-4"], + "4x10G[25G](4)": ["Eth21-1", "Eth21-2", "Eth21-3", "Eth21-4"] + } + }, + "Ethernet168": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "185,186,187,188,189,190,191,192", + "breakout_modes": { + "1x400G[100G]": ["Eth22"], + "1x100G(4)": ["Eth22"], + "4x25G[10G](4)": ["Eth22-1", "Eth22-2", "Eth22-3", "Eth22-4"], + "4x10G[25G](4)": ["Eth22-1", "Eth22-2", "Eth22-3", "Eth22-4"] + } + }, + "Ethernet176": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "161,162,163,164,165,166,167,168", + "breakout_modes": { + "1x400G[100G]": ["Eth23"], + "1x100G(4)": ["Eth23"], + "4x25G[10G](4)": ["Eth23-1", "Eth23-2", "Eth23-3", "Eth23-4"], + "4x10G[25G](4)": ["Eth23-1", "Eth23-2", "Eth23-3", "Eth23-4"] + } + }, + "Ethernet184": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "169,170,171,172,173,174,175,176", + "breakout_modes": { + "1x400G[100G]": ["Eth24"], + "1x100G(4)": ["Eth24"], + "4x25G[10G](4)": ["Eth24-1", "Eth24-2", "Eth24-3", "Eth24-4"], + "4x10G[25G](4)": ["Eth24-1", "Eth24-2", "Eth24-3", "Eth24-4"] + } + }, + "Ethernet192": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x400G[100G]": ["Eth25"], + "1x100G(4)": ["Eth25"], + "4x25G[10G](4)": ["Eth25-1", "Eth25-2", "Eth25-3", "Eth25-4"], + "4x10G[25G](4)": ["Eth25-1", "Eth25-2", "Eth25-3", "Eth25-4"] + } + }, + "Ethernet200": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x400G[100G]": ["Eth26"], + "1x100G(4)": ["Eth26"], + "4x25G[10G](4)": ["Eth26-1", "Eth26-2", "Eth26-3", "Eth26-4"], + "4x10G[25G](4)": ["Eth26-1", "Eth26-2", "Eth26-3", "Eth26-4"] + } + }, + "Ethernet208": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x400G[100G]": ["Eth27"], + "1x100G(4)": ["Eth27"], + "4x25G[10G](4)": ["Eth27-1", "Eth27-2", "Eth27-3", "Eth27-4"], + "4x10G[25G](4)": ["Eth27-1", "Eth27-2", "Eth27-3", "Eth27-4"] + } + }, + "Ethernet216": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x400G[100G]": ["Eth28"], + "1x100G(4)": ["Eth28"], + "4x25G[10G](4)": ["Eth28-1", "Eth28-2", "Eth28-3", "Eth28-4"], + "4x10G[25G](4)": ["Eth28-1", "Eth28-2", "Eth28-3", "Eth28-4"] + } + }, + "Ethernet224": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "241,242,243,244,245,246,247,248", + "breakout_modes": { + "1x400G[100G]": ["Eth29"], + "1x100G(4)": ["Eth29"], + "4x25G[10G](4)": ["Eth29-1", "Eth29-2", "Eth29-3", "Eth29-4"], + "4x10G[25G](4)": ["Eth29-1", "Eth29-2", "Eth29-3", "Eth29-4"] + } + }, + "Ethernet232": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "249,250,251,252,253,254,255,256", + "breakout_modes": { + "1x400G[100G]": ["Eth30"], + "1x100G(4)": ["Eth30"], + "4x25G[10G](4)": ["Eth30-1", "Eth30-2", "Eth30-3", "Eth30-4"], + "4x10G[25G](4)": ["Eth30-1", "Eth30-2", "Eth30-3", "Eth30-4"] + } + }, + "Ethernet240": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "225,226,227,228,229,230,231,232", + "breakout_modes": { + "1x400G[100G]": ["Eth31"], + "1x100G(4)": ["Eth31"], + "4x25G[10G](4)": ["Eth31-1", "Eth31-2", "Eth31-3", "Eth31-4"], + "4x10G[25G](4)": ["Eth31-1", "Eth31-2", "Eth31-3", "Eth31-4"] + } + }, + "Ethernet248": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "233,234,235,236,237,238,239,240", + "breakout_modes": { + "1x400G[100G]": ["Eth32"], + "1x100G(4)": ["Eth32"], + "4x25G[10G](4)": ["Eth32-1", "Eth32-2", "Eth32-3", "Eth32-4"], + "4x10G[25G](4)": ["Eth32-1", "Eth32-2", "Eth32-3", "Eth32-4"] + } + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/plugins/sfputil.py b/device/wistron/x86_64-wistron_6512_32r-r0/plugins/sfputil.py index 8dbc6ba8519a..c38b792bb9ca 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/plugins/sfputil.py +++ b/device/wistron/x86_64-wistron_6512_32r-r0/plugins/sfputil.py @@ -111,6 +111,7 @@ def get_presence(self, port_num): val_file.close() except IOError as e: print("Error: unable to access file: %s" % str(e)) + val_file.close() return False if content == "1": @@ -134,6 +135,7 @@ def get_low_power_mode(self, port_num): val_file.close() except IOError as e: print("Error: unable to access file: %s" % str(e)) + val_file.close() return False if content == "1": @@ -158,10 +160,35 @@ def set_low_power_mode(self, port_num, lpmode): return True except IOError as e: print("Error: unable to open file: %s" % str(e)) + val_file.close() return False def reset(self, port_num): - raise NotImplementedError + 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 reset + + if port_num < 16: + reset_path = self.BASE_CPLD1_PATH + "port" + str(port_num+1) + "_reset" + else: + reset_path = self.BASE_CPLD2_PATH + "port" + str(port_num+1) + "_reset" + + self.__port_to_mod_rst = reset_path + + try: + val_file = open(self.__port_to_mod_rst, 'w') + val_file.write('1') + time.sleep(1) + val_file.write('0') + time.sleep(1) + val_file.close() + return True + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + val_file.close() + return False + def _get_sfp_presence(self): port_pres = {} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/fan.py b/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/fan.py deleted file mode 100644 index aec7e23be5c0..000000000000 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/fan.py +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/env python - -############################################################################# -# -# Module contains an implementation of SONiC Platform Base API and -# provides the fan status which are available in the platform -# -############################################################################# - -import os.path - -try: - from sonic_platform_base.fan_base import FanBase -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - -FAN_PATH = "/sys/bus/i2c/devices/0-0044/" -FANTRAY_NAME_LIST = ["FANTRAY-1", "FANTRAY-2", - "FANTRAY-3", "FANTRAY-4", - "FANTRAY-5", "FANTRAY-6", "FANTRAY-7"] -FAN_NAME_LIST = ["fan1_front","fan2_front","fan3_front","fan4_front","fan5_front","fan6_front", "fan7_front",\ -"fan1_rear","fan2_rear","fan3_rear","fan4_rear", "fan5_rear", "fan6_rear", "fan7_rear",] - -class Fan(FanBase): - """Platform-specific Fan class""" - - def __init__(self, fan_index): - self.fan_tray_index = fan_index - self.fan_presence = "fan{}_present" - self.fan_direction = "fan{}_direction" - self.fan_speed_rpm = "fan{}_input" - FanBase.__init__(self) - - def __read_txt_file(self, file_path): - try: - with open(file_path, 'r') as fd: - data = fd.read() - return data.strip() - except IOError: - pass - return "" - - def __write_txt_file(self, file_path, value): - try: - with open(file_path, 'w') as fd: - fd.write(str(value)) - except BaseException: - return False - return True - - def __search_file_by_name(self, directory, file_name): - for dirpath, dirnames, files in os.walk(directory): - for name in files: - file_path = os.path.join(dirpath, name) - if name in file_name: - return file_path - return None - - def get_direction(self): - """ - Retrieves the direction of fan - Returns: - A string, either FAN_DIRECTION_INTAKE or FAN_DIRECTION_EXHAUST - depending on fan direction - """ - index1=self.fan_tray_index - if self.fan_tray_index>6: - index1=self.fan_tray_index%7 - fan_direction_file = (FAN_PATH + - self.fan_direction.format(index1+1)) - raw = self.__read_txt_file(fan_direction_file).strip('\r\n') - direction = self.FAN_DIRECTION_INTAKE if str( - raw).upper() == "1" else self.FAN_DIRECTION_EXHAUST - - return direction - - def get_speed(self): - """ - Retrieves the speed of fan as a percentage of full speed - Returns: - An integer, the percentage of full fan speed, in the range 0 (off) - to 12000 (full speed) - """ - - speed = 0 - if self.fan_tray_index<=13: - index1=self.fan_tray_index - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1)) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - - return int(speed) - - def get_target_speed(self): - """ - Retrieves the target (expected) speed of the fan - Returns: - An integer, the percentage of full fan speed, in the range 0 (off) - to 100 (full speed) - """ - - speed = 0 - if self.fan_tray_index<=13: - index1=self.fan_tray_index - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1)) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - - return int(speed) - - def get_speed_tolerance(self): - """ - Retrieves the speed tolerance of the fan - Returns: - An integer, the percentage of variance from target speed which is - considered tolerable - """ - return 10 - - def set_speed(self, speed): - """ - Sets the fan speed - Args: - speed: An integer, the percentage of full fan speed to set fan to, - in the range 0 (off) to 100 (full speed) - Returns: - A boolean, True if speed is set successfully, False if not - - Note: - Depends on pwm or target mode is selected: - 1) pwm = speed_pc * 255 <-- Currently use this mode. - 2) target_pwm = speed_pc * 100 / 255 - 2.1) set pwm{}_enable to 3 - - """ - return False - - def set_status_led(self, color): - """ - Sets the state of the fan module status LED - Args: - color: A string representing the color with which to set the - fan module status LED - Returns: - bool: True if status LED state is set successfully, False if not - """ - return False - - def get_name(self): - """ - Retrieves the name of the device - Returns: - string: The name of the device - """ - fan_name = FAN_NAME_LIST[self.fan_tray_index] - - return fan_name - - def get_presence(self): - """ - Retrieves the presence of the PSU - Returns: - bool: True if PSU is present, False if not - """ - index1=self.fan_tray_index - if self.fan_tray_index>6: - index1=self.fan_tray_index%7 - fan_direction_file = (FAN_PATH + - self.fan_presence.format(index1+1)) - present_str = self.__read_txt_file(fan_direction_file) or '1' - - return int(present_str) == 1 - - def get_status(self): - """ - Retrieves the operational status of the device - Returns: - A boolean value, True if device is operating properly, False if not - """ - return self.get_presence() and self.get_speed() > 0 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/psu.py b/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/psu.py deleted file mode 100644 index dc13cc1ed824..000000000000 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/psu.py +++ /dev/null @@ -1,248 +0,0 @@ -#!/usr/bin/env python - -############################################################################# -# psuutil.py -# Platform-specific PSU status interface for SONiC -############################################################################# - -try: - from sonic_platform_base.psu_base import PsuBase -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - -PSU_NAME_LIST = ["PSU-1", "PSU-2"] - -class Psu(PsuBase): - """Platform-specific Psu class""" - - SYSFS_PSU_DIR = ["/sys/bus/i2c/devices/0-005a", - "/sys/bus/i2c/devices/0-0059"] - - def __init__(self, psu_index): - self.index = psu_index - PsuBase.__init__(self) - - - def get_fan(self): - """ - Retrieves object representing the fan module contained in this PSU - Returns: - An object dervied from FanBase representing the fan module - contained in this PSU - """ - # Hardware not supported - return False - - def get_powergood_status(self): - """ - Retrieves the powergood status of PSU - Returns: - A boolean, True if PSU has stablized its output voltages and passed all - its internal self-tests, False if not. - """ - return self.get_status() - - def set_status_led(self, color): - """ - Sets the state of the PSU status LED - Args: - color: A string representing the color with which to set the PSU status LED - Note: Only support green and off - Returns: - bool: True if status LED state is set successfully, False if not - """ - # Hardware not supported - return False - - def get_name(self): - """ - Retrieves the name of the device - Returns: - string: The name of the device - """ - return PSU_NAME_LIST[self.index] - - def get_presence(self): - """ - Retrieves the presence of the PSU - Returns: - bool: True if PSU is present, False if not - """ - attr_file ='present' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - status = 0 - try: - with open(attr_path, 'r') as psu_prs: - status = int(psu_prs.read()) - except IOError: - return False - - return status == 1 - - def get_status(self): - """ - Retrieves the operational status of the device - Returns: - A boolean value, True if device is operating properly, False if not - """ - attr_file = 'power_good' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - status = 0 - try: - with open(attr_path, 'r') as power_status: - status = int(power_status.read()) - except IOError: - return False - - return status == 1 - - def get_model(self): - """ - Retrieves the model number/name of a power supply unit (PSU) defined - by 1-based index - :param idx: An integer, 1-based index of the PSU of which to query model number - :return: String, denoting model number/name - """ - attr_file ='model' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - model = "" - try: - with open(attr_path, 'r') as psu_model: - model = psu_model.read() - except IOError: - return model - - return model - - def get_mfr_id(self): - """ - Retrieves the manufacturing id of a power supply unit (PSU) defined - by 1-based index - :param idx: An integer, 1-based index of the PSU of which to query mfr id - :return: String, denoting manufacturing id - """ - attr_file ='vendor' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - vendor = "" - try: - with open(attr_path, 'r') as psu_vendor: - vendor = psu_vendor.read() - except IOError: - return vendor - - return vendor - - def get_serial(self): - """ - Retrieves the serial number of a power supply unit (PSU) defined - by 1-based index - :param idx: An integer, 1-based index of the PSU of which to query serial number - :return: String, denoting serial number of the PSU unit - """ - attr_file ='sn' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - sn = "" - try: - with open(attr_path, 'r') as psu_sn: - sn = psu_sn.read() - except IOError: - return sn - - return sn - - def get_temperature(self): - """ - Retrieves current temperature reading from PSU - Returns: - A float number of current temperature in Celsius up to nearest thousandth - of one degree Celsius, e.g. 30.125 - """ - attr_file ='temp1_input' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - temp = 0.0 - try: - with open(attr_path, 'r') as psu_temp: - temp = float(psu_temp.read()) / 1000 - except IOError: - return temp - - return temp - - def get_temperature_high_threshold(self): - """ - Retrieves the high threshold temperature of PSU - Returns: - A float number, the high threshold temperature of PSU in Celsius - up to nearest thousandth of one degree Celsius, e.g. 30.125 - """ - return False #Not supported - - def get_voltage_high_threshold(self): - """ - Retrieves the high threshold PSU voltage output - Returns: - A float number, the high threshold output voltage in volts, - e.g. 12.1 - """ - return False #Not supported - - def get_voltage_low_threshold(self): - """ - Retrieves the low threshold PSU voltage output - Returns: - A float number, the low threshold output voltage in volts, - e.g. 12.1 - """ - return False #Not supported - - def get_voltage(self): - """ - Retrieves current PSU voltage output - Returns: - A float number, the output voltage in volts, - e.g. 12.1 - """ - attr_file ='in2_input' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - volt = 0.0 - try: - with open(attr_path, 'r') as psu_volt: - volt = float(psu_volt.read()) / 1000 - except IOError: - return volt - - return volt - - def get_current(self): - """ - Retrieves present electric current supplied by PSU - Returns: - A float number, the electric current in amperes, e.g 15.4 - """ - attr_file ='curr2_input' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - curr = 0.0 - try: - with open(attr_path, 'r') as psu_curr: - curr = float(psu_curr.read()) / 1000 - except IOError: - return curr - - return curr - - def get_power(self): - """ - Retrieves current energy supplied by PSU - Returns: - A float number, the power in watts, e.g. 302.6 - """ - attr_file ='power2_input' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - power = 0.0 - try: - with open(attr_path, 'r') as psu_power: - power = float(psu_power.read()) / 1000000 - except IOError: - return power - - return power diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/watchdog.py b/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/watchdog.py deleted file mode 100644 index 820dd54f954a..000000000000 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/watchdog.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python - -######################################################################## -# -# Abstract base class for implementing a platform-specific class with -# which to interact with a hardware watchdog module in SONiC -# -######################################################################## - -try: - from sonic_platform_base.watchdog_base import WatchdogBase -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - -class Watchdog(WatchdogBase): - """ - Abstract base class for interfacing with a hardware watchdog module - """ - - def __init__(self): - print("INFO: Watchdog __init__") - - def arm(self, seconds): - """ - Arm the hardware watchdog with a timeout of seconds. - If the watchdog is currently armed, calling this function will - simply reset the timer to the provided value. If the underlying - hardware does not support the value provided in , this - method should arm the watchdog with the *next greater* - available value. - Returns: - An integer specifying the *actual* number of seconds the - watchdog was armed with. On failure returns -1. - """ - print("ERROR: Platform did not implement arm()") - raise NotImplementedError - - def disarm(self): - """ - Disarm the hardware watchdog - Returns: - A boolean, True if watchdog is disarmed successfully, False - if not - """ - print("ERROR: Platform did not implement disarm()") - raise NotImplementedError - - def is_armed(self): - """ - Retrieves the armed state of the hardware watchdog. - Returns: - A boolean, True if watchdog is armed, False if not - """ - print("ERROR: Platform did not implement is_armed()") - raise NotImplementedError - - def get_remaining_time(self): - """ - If the watchdog is armed, retrieve the number of seconds - remaining on the watchdog timer - Returns: - An integer specifying the number of seconds remaining on - their watchdog timer. If the watchdog is not armed, returns - -1. - S5232 doesnot have hardware support to show remaining time. - Due to this limitation, this API is implemented in software. - This API would return correct software time difference if it - is called from the process which armed the watchdog timer. - If this API called from any other process, it would return - 0. If the watchdog is not armed, this API would return -1. - """ - print("ERROR: Platform did not implement get_remaining_time()") - raise NotImplementedError diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/system_health_monitoring_config.json b/device/wistron/x86_64-wistron_6512_32r-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..0e0eec971cac --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/system_health_monitoring_config.json @@ -0,0 +1,11 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": ["asic"], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "red", + "normal": "green", + "booting": "green_blinking" + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/6512-32_32x400G.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/6512-32_32x400G.config.yaml index 17ed53abb1d0..cc5bebd7f719 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/6512-32_32x400G.config.yaml +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/6512-32_32x400G.config.yaml @@ -9,16 +9,17 @@ nodes: netdev: - auto_create: "no" multi_interface: "yes" - mac_clk: "1340" - skip_pll_check: "false" - sys_clk: "1720" - mbist_on_init: "true" - ifc_clk: "1200" buffer_management_mode: "api_driven" + wred_cr_ip_proto_list: "17" + cr_assignment_mode: "1" max_lossless_tc: "2" ilpm_enable: "1" forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E" - ecn_stats_enable: "1" + led_cfg_sck_rate: "0x5" + led_refresh_precliff_timer: "0x18eec2" + led_refresh_cliff_timer: "0x15e" + led_cfg_pic_stream_mode: "1" + led_refresh_tmr_ctl_enable: "1" txring: - txring_id: "0" desc_count: "1024" @@ -41,22 +42,24 @@ nodes: desc_count: "1024" prio: "1" netdev: "true" - queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44" + queues: "0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39" - rxring_id: "1" desc_count: "1024" prio: "1" netdev: "true" - queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45" + queues: "1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40" - rxring_id: "2" desc_count: "1024" prio: "1" netdev: "true" - queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46" + queues: "2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 47" - rxring_id: "3" desc_count: "1024" prio: "1" - netdev: "true" - queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47" + queues: "42, 43, 44, 45, 46" + sys_clk: "1720" + ifc_clk: "1200" + mac_clk: "1340" devports: - id: "0" sysport: "1000" @@ -285,20 +288,6 @@ nodes: speed: "400G" sysport: "233" type: "eth" - - id: "257" - fec: "NONE" - lanes: "0:1" - serdes_group: "32" - speed: "10G" - sysport: "257" - type: "mgmt 0" - - id: "258" - fec: "NONE" - lanes: "1:1" - serdes_group: "32" - speed: "10G" - sysport: "258" - type: "mgmt 1" isg: - id: "11" lane_swap: "27163504" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers.json.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers.json.j2 index 1a31812c26b1..b9265c62eb8f 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configuration available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "51691264", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"135520", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"10243072" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_def_lossy.j2 index 1a31812c26b1..79dbf9b2864b 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_def_lossy.j2 @@ -7,7 +7,7 @@ { "BUFFER_POOL": { "lossy_pool": { - "size": "56985600", + "size": "61458432", "type": "egress", "mode": "dynamic", "xoff": "0" @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_t1.j2 index 93dac6b1992a..b9265c62eb8f 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_t1.j2 @@ -1,4 +1,4 @@ -{# Default values which will be used if no actual configura available #} +{# Default values which will be used if no actual configuration available #} {% set default_cable = '40m' %} {# Port configuration to cable length look-up table #} @@ -76,7 +76,7 @@ }, "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "47218432", + "size": "51691264", "type": "ingress", "mode": "dynamic", "xoff": "17708800" @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "xoff":"38816", + "pool":"ingress_lossless_pool", + "xoff":"135520", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/hwsku.json b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/hwsku.json new file mode 100644 index 000000000000..7157f361663e --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_A b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_A +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_B b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_B +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.config.yaml index cf505b299dd8..e3db67a5ccc5 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.config.yaml @@ -3,6 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.datapath.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.datapath.config.yaml index 891b0b3e2834..a539d6c70040 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.datapath.config.yaml +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.datapath.config.yaml @@ -1,9 +1,9 @@ -ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880" -ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218" +ISAI_PARAM_P0_0_LS : "864 864 720 720 720 720" +ISAI_PARAM_P0_1_LS : "770 490 434 378 378 378" ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98" -ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960" -ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920" -ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938" -ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478" +ISAI_PARAM_P1_0_LS : "288 288 240 240 240 240" +ISAI_PARAM_P1_0_LL : "576 576 480 480 480 480" +ISAI_PARAM_P1_1_LS : "686 406 364 308 308 308" +ISAI_PARAM_P1_1_LL : "574 574 574 574 574 574" ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98" ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos.json.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos.json.j2 index 104d2d78de87..b03078465730 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos.json.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos.json.j2 @@ -32,87 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } - }, - "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, - "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_def_lossy.j2 index 104d2d78de87..c1170619bc6c 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_t1.j2 index 4b9748c7b594..b03078465730 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/6512-32_32x100G.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/6512-32_32x100G.config.yaml new file mode 100644 index 000000000000..f22016d7be80 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/6512-32_32x100G.config.yaml @@ -0,0 +1,419 @@ +ifcs: + options: + log_level: "info" +nodes: +- node_id: "0" + options: + sd_low_power_mode_global_default: "true" + sku: "configs/sku/innovium.77700_A" + netdev: + - auto_create: "no" + multi_interface: "yes" + buffer_management_mode: "api_driven" + wred_cr_ip_proto_list: "17" + cr_assignment_mode: "1" + max_lossless_tc: "2" + ilpm_enable: "1" + forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E" + led_cfg_sck_rate: "0x5" + led_refresh_precliff_timer: "0x18eec2" + led_refresh_cliff_timer: "0x15e" + led_cfg_pic_stream_mode: "1" + led_refresh_tmr_ctl_enable: "1" + txring: + - txring_id: "0" + desc_count: "1024" + prio: "1" + netdev: "true" + - txring_id: "1" + desc_count: "1024" + prio: "1" + netdev: "true" + - txring_id: "2" + desc_count: "1024" + prio: "1" + netdev: "true" + - txring_id: "3" + desc_count: "1024" + prio: "1" + netdev: "true" + rxring: + - rxring_id: "0" + desc_count: "1024" + prio: "1" + netdev: "true" + queues: "0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39" + - rxring_id: "1" + desc_count: "1024" + prio: "1" + netdev: "true" + queues: "1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40" + - rxring_id: "2" + desc_count: "1024" + prio: "1" + netdev: "true" + queues: "2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 47" + - rxring_id: "3" + desc_count: "1024" + prio: "1" + queues: "42, 43, 44, 45, 46" + sys_clk: "1720" + ifc_clk: "1200" + mac_clk: "1340" + devports: + - id: "0" + sysport: "1000" + type: "cpu" + - id: "89" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "11" + speed: "100G" + sysport: "89" + type: "eth" + - id: "81" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "10" + speed: "100G" + sysport: "81" + type: "eth" + - id: "73" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "9" + speed: "100G" + sysport: "73" + type: "eth" + - id: "65" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "8" + speed: "100G" + sysport: "65" + type: "eth" + - id: "57" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "7" + speed: "100G" + sysport: "57" + type: "eth" + - id: "49" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "6" + speed: "100G" + sysport: "49" + type: "eth" + - id: "41" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "5" + speed: "100G" + sysport: "41" + type: "eth" + - id: "33" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "4" + speed: "100G" + sysport: "33" + type: "eth" + - id: "153" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "19" + speed: "100G" + sysport: "153" + type: "eth" + - id: "145" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "18" + speed: "100G" + sysport: "145" + type: "eth" + - id: "137" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "17" + speed: "100G" + sysport: "137" + type: "eth" + - id: "129" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "16" + speed: "100G" + sysport: "129" + type: "eth" + - id: "121" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "15" + speed: "100G" + sysport: "121" + type: "eth" + - id: "113" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "14" + speed: "100G" + sysport: "113" + type: "eth" + - id: "105" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "13" + speed: "100G" + sysport: "105" + type: "eth" + - id: "97" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "12" + speed: "100G" + sysport: "97" + type: "eth" + - id: "209" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "26" + speed: "100G" + sysport: "209" + type: "eth" + - id: "217" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "27" + speed: "100G" + sysport: "217" + type: "eth" + - id: "193" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "24" + speed: "100G" + sysport: "193" + type: "eth" + - id: "201" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "25" + speed: "100G" + sysport: "201" + type: "eth" + - id: "177" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "22" + speed: "100G" + sysport: "177" + type: "eth" + - id: "185" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "23" + speed: "100G" + sysport: "185" + type: "eth" + - id: "161" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "20" + speed: "100G" + sysport: "161" + type: "eth" + - id: "169" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "21" + speed: "100G" + sysport: "169" + type: "eth" + - id: "17" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "2" + speed: "100G" + sysport: "17" + type: "eth" + - id: "25" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "3" + speed: "100G" + sysport: "25" + type: "eth" + - id: "1" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "0" + speed: "100G" + sysport: "1" + type: "eth" + - id: "9" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "1" + speed: "100G" + sysport: "9" + type: "eth" + - id: "241" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "30" + speed: "100G" + sysport: "241" + type: "eth" + - id: "249" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "31" + speed: "100G" + sysport: "249" + type: "eth" + - id: "225" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "28" + speed: "100G" + sysport: "225" + type: "eth" + - id: "233" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "29" + speed: "100G" + sysport: "233" + type: "eth" + isg: + - id: "11" + lane_swap: "27163504" + rx_polarity: "01010000" + tx_polarity: "01100000" + - id: "10" + lane_swap: "51604372" + rx_polarity: "11001000" + tx_polarity: "11110000" + - id: "9" + lane_swap: "17032546" + rx_polarity: "10001000" + tx_polarity: "00000100" + - id: "8" + lane_swap: "70435162" + rx_polarity: "11000100" + tx_polarity: "00100101" + - id: "7" + lane_swap: "27053416" + rx_polarity: "00011001" + tx_polarity: "10001000" + - id: "6" + lane_swap: "70635142" + rx_polarity: "10001000" + tx_polarity: "01100001" + - id: "5" + lane_swap: "27053416" + rx_polarity: "00001001" + tx_polarity: "00001000" + - id: "4" + lane_swap: "62405173" + rx_polarity: "11000101" + tx_polarity: "10110000" + - id: "19" + lane_swap: "06152347" + rx_polarity: "11010110" + tx_polarity: "10001110" + - id: "18" + lane_swap: "73614052" + rx_polarity: "11001100" + tx_polarity: "11100001" + - id: "17" + lane_swap: "17053426" + rx_polarity: "10001001" + tx_polarity: "00001000" + - id: "16" + lane_swap: "54216073" + rx_polarity: "10000011" + tx_polarity: "01001010" + - id: "15" + lane_swap: "36072514" + rx_polarity: "10100000" + tx_polarity: "10100001" + - id: "14" + lane_swap: "50763241" + rx_polarity: "00010001" + tx_polarity: "01110001" + - id: "13" + lane_swap: "26071435" + rx_polarity: "00000011" + tx_polarity: "00101001" + - id: "12" + lane_swap: "43510627" + rx_polarity: "11100100" + tx_polarity: "00011101" + - id: "26" + lane_swap: "31427506" + rx_polarity: "10011000" + tx_polarity: "11110001" + - id: "27" + lane_swap: "21735406" + rx_polarity: "01011110" + tx_polarity: "10011100" + - id: "24" + lane_swap: "07162435" + rx_polarity: "10010000" + tx_polarity: "10001010" + - id: "25" + lane_swap: "64501372" + rx_polarity: "11010001" + tx_polarity: "10001010" + - id: "22" + lane_swap: "35071624" + rx_polarity: "00100011" + tx_polarity: "11001011" + - id: "23" + lane_swap: "64705132" + rx_polarity: "11010100" + tx_polarity: "11101000" + - id: "20" + lane_swap: "16270453" + rx_polarity: "00101100" + tx_polarity: "00001001" + - id: "21" + lane_swap: "71356204" + rx_polarity: "01100010" + tx_polarity: "00001011" + - id: "2" + lane_swap: "37260145" + rx_polarity: "10011010" + tx_polarity: "11000000" + - id: "3" + lane_swap: "47512630" + rx_polarity: "10010100" + tx_polarity: "10101101" + - id: "0" + lane_swap: "05462713" + rx_polarity: "01000000" + tx_polarity: "10010010" + - id: "1" + lane_swap: "71605432" + rx_polarity: "00000000" + tx_polarity: "11000101" + - id: "30" + lane_swap: "37251604" + rx_polarity: "11000010" + tx_polarity: "11001000" + - id: "31" + lane_swap: "42736051" + rx_polarity: "10000110" + tx_polarity: "01000010" + - id: "28" + lane_swap: "01245736" + rx_polarity: "10110101" + tx_polarity: "10000001" + - id: "29" + lane_swap: "52706134" + rx_polarity: "00010010" + tx_polarity: "10101010" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers.json.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers.json.j2 new file mode 100644 index 000000000000..020656fdb8f5 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers.json.j2 @@ -0,0 +1,162 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "51691264", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, + "lossy_pool": { + "size": "18874368", + "type": "egress", + "mode": "dynamic", + "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"10243072" + }, + "ingress_lossy_profile": { + "pool":"lossy_pool", + "size":"0", + "static_th":"10243072" + }, + "egress_lossy_profile": { + "pool":"lossy_pool", + "size":"1518", + "dynamic_th":"2" + } + }, + "BUFFER_PG": { +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + + "BUFFER_QUEUE": { +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_def_lossy.j2 new file mode 100644 index 000000000000..79dbf9b2864b --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_def_lossy.j2 @@ -0,0 +1,42 @@ +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "BUFFER_POOL": { + "lossy_pool": { + "size": "61458432", + "type": "egress", + "mode": "dynamic", + "xoff": "0" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"lossy_pool", + "size":"0", + "static_th":"10243072" + }, + "egress_lossy_profile": { + "pool":"lossy_pool", + "size":"1518", + "dynamic_th":"2" + } + }, + "BUFFER_PG": { +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} + }, + "BUFFER_QUEUE": { +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..020656fdb8f5 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_t1.j2 @@ -0,0 +1,162 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "51691264", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, + "lossy_pool": { + "size": "18874368", + "type": "egress", + "mode": "dynamic", + "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"10243072" + }, + "ingress_lossy_profile": { + "pool":"lossy_pool", + "size":"0", + "static_th":"10243072" + }, + "egress_lossy_profile": { + "pool":"lossy_pool", + "size":"1518", + "dynamic_th":"2" + } + }, + "BUFFER_PG": { +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + + "BUFFER_QUEUE": { +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/hwsku.json b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/hwsku.json new file mode 100644 index 000000000000..4116ae2ba5f1 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_A b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_A new file mode 100644 index 000000000000..ec13307805e1 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_A @@ -0,0 +1,60 @@ +sku: innovium.77700_A + +device_id: 0x1b58 + +# Hardware constraint information +hardware: + num_ibs: 6 + ib_active: 0,1,2,3,4,5 + + ports_per_ib: 32, 32, 32, 32, 20, 20 + recirc_port_num: 32, 32, 32, 32, 32, 32 + cpu_port_num: 33 + cpu_port_ib: 0 + mgmt_port_num: 33 + mgmt_port_ibs: 1,2 + + pics_per_ib: 6, 7, 6, 5, 5, 5 + pic_ports_per_pic: 8 + max_serdes_speed: 50 + + num_shared_pics: 2 + + isg [0-4]: + ib: 0 + pic_id: [0-4] + + isg [5-9]: + ib: 5 + pic_id: [0-4] + + isg [10-14]: + ib: 1 + pic_id: [0-4] + + isg [16-20]: + ib: 3 + pic_id: [0-4] + + isg [21-25]: + ib: 4 + pic_id: [0-4] + + isg [26-30]: + ib: 2 + pic_id: [0-4] + + isg 15: + mode: 8:0 + ib: 1 + pic_id: 5 + + isg 31: + mode: 8:0 + ib: 0 + pic_id: 5 + + isg 32: + mode: 1:1 + ib: 1, 2 + pic_id: 6 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_B b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_B new file mode 100644 index 000000000000..57ba52cbc3bc --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_B @@ -0,0 +1,60 @@ +sku: innovium.77700_B + +device_id: 0x1b58 + +# Hardware constraint information +hardware: + num_ibs: 6 + ib_active: 0,1,2,3,4,5 + + ports_per_ib: 32, 32, 32, 32, 20, 20 + recirc_port_num: 32, 32, 32, 32, 32, 32 + cpu_port_num: 33 + cpu_port_ib: 0 + mgmt_port_num: 33 + mgmt_port_ibs: 1,2 + + pics_per_ib: 6, 7, 7, 6, 5, 5 + pic_ports_per_pic: 8 + max_serdes_speed: 50 + + num_shared_pics: 2 + + isg [0-4]: + ib: 0 + pic_id: [0-4] + + isg [5-9]: + ib: 5 + pic_id: [0-4] + + isg [10-14]: + ib: 1 + pic_id: [0-4] + + isg [16-20]: + ib: 3 + pic_id: [0-4] + + isg [21-25]: + ib: 4 + pic_id: [0-4] + + isg [26-30]: + ib: 2 + pic_id: [0-4] + + isg 15: + mode: 4:4 + ib: 1, 3 + pic_id: 5 + + isg 31: + mode: 4:4 + ib: 0, 2 + pic_id: 5 + + isg 32: + mode: 1:1 + ib: 1, 2 + pic_id: 6 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.config.yaml new file mode 100644 index 000000000000..1f90f4de88dd --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.config.yaml @@ -0,0 +1,9 @@ +IFCS_INIT_FILE : "/usr/share/sonic/hwsku/6512-32_32x100G.config.yaml" +IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" +IFCS_INNO_CLI_PORT : "9999" +IFCS_TARGET : "device" +INNOVIUM_DIR : "/innovium" +PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" +IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" +IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.datapath.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.datapath.config.yaml new file mode 100644 index 000000000000..891b0b3e2834 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.datapath.config.yaml @@ -0,0 +1,9 @@ +ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880" +ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218" +ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98" +ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960" +ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920" +ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938" +ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478" +ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98" +ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/pg_profile_lookup.ini new file mode 100644 index 000000000000..0d881737cfa1 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/pg_profile_lookup.ini @@ -0,0 +1,22 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/port_config.ini b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/port_config.ini new file mode 100644 index 000000000000..9507616bd5c2 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/port_config.ini @@ -0,0 +1,33 @@ +# name lanes alias speed index mtu fec +Ethernet0 89,90,91,92 Eth1 100000 0 9126 rs +Ethernet8 81,82,83,84 Eth2 100000 1 9126 rs +Ethernet16 73,74,75,76 Eth3 100000 2 9126 rs +Ethernet24 65,66,67,68 Eth4 100000 3 9126 rs +Ethernet32 57,58,59,60 Eth5 100000 4 9126 rs +Ethernet40 49,50,51,52 Eth6 100000 5 9126 rs +Ethernet48 41,42,43,44 Eth7 100000 6 9126 rs +Ethernet56 33,34,35,36 Eth8 100000 7 9126 rs +Ethernet64 153,154,155,156 Eth9 100000 8 9126 rs +Ethernet72 145,146,147,148 Eth10 100000 9 9126 rs +Ethernet80 137,138,139,140 Eth11 100000 10 9126 rs +Ethernet88 129,130,131,132 Eth12 100000 11 9126 rs +Ethernet96 121,122,123,124 Eth13 100000 12 9126 rs +Ethernet104 113,114,115,116 Eth14 100000 13 9126 rs +Ethernet112 105,106,107,108 Eth15 100000 14 9126 rs +Ethernet120 97,98,99,100 Eth16 100000 15 9126 rs +Ethernet128 209,210,211,212 Eth17 100000 16 9126 rs +Ethernet136 217,218,219,220 Eth18 100000 17 9126 rs +Ethernet144 193,194,195,196 Eth19 100000 18 9126 rs +Ethernet152 201,202,203,204 Eth20 100000 19 9126 rs +Ethernet160 177,178,179,180 Eth21 100000 20 9126 rs +Ethernet168 185,186,187,188 Eth22 100000 21 9126 rs +Ethernet176 161,162,163,164 Eth23 100000 22 9126 rs +Ethernet184 169,170,171,172 Eth24 100000 23 9126 rs +Ethernet192 17,18,19,20 Eth25 100000 24 9126 rs +Ethernet200 25,26,27,28 Eth26 100000 25 9126 rs +Ethernet208 1,2,3,4 Eth27 100000 26 9126 rs +Ethernet216 9,10,11,12 Eth28 100000 27 9126 rs +Ethernet224 241,242,243,244 Eth29 100000 28 9126 rs +Ethernet232 249,250,251,252 Eth30 100000 29 9126 rs +Ethernet240 225,226,227,228 Eth31 100000 30 9126 rs +Ethernet248 233,234,235,236 Eth32 100000 31 9126 rs diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos.json.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos.json.j2 new file mode 100644 index 000000000000..b03078465730 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos.json.j2 @@ -0,0 +1,129 @@ +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + + +{ + "TC_TO_QUEUE_MAP":{ + "AZURE":{ + "0":"0", + "1":"1", + "2":"2", + "3":"3", + "4":"4", + "5":"5", + "6":"6", + "7":"7" + } + }, + "TC_TO_PRIORITY_GROUP_MAP": { + "AZURE": { + "0": "0", + "1": "0", + "2": "0", + "3": "3", + "4": "4", + "5": "0", + "6": "0", + "7": "0" + } + }, + "DSCP_TO_TC_MAP": { + "AZURE": { + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" + } + }, + "PORT_QOS_MAP": { +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_def_lossy.j2 new file mode 100644 index 000000000000..c1170619bc6c --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_def_lossy.j2 @@ -0,0 +1,121 @@ +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + + +{ + "TC_TO_QUEUE_MAP":{ + "AZURE":{ + "0":"0", + "1":"1", + "2":"2", + "3":"3", + "4":"4", + "5":"5", + "6":"6", + "7":"7" + } + }, + "TC_TO_PRIORITY_GROUP_MAP": { + "AZURE": { + "0": "0", + "1": "0", + "2": "0", + "3": "1", + "4": "2", + "5": "0", + "6": "0", + "7": "0" + } + }, + "DSCP_TO_TC_MAP": { + "AZURE": { + "0":"0", + "1":"0", + "2":"0", + "3":"0", + "4":"0", + "5":"0", + "6":"0", + "7":"0", + "8":"0", + "9":"0", + "10":"0", + "11":"0", + "12":"0", + "13":"0", + "14":"0", + "15":"0", + "16":"0", + "17":"0", + "18":"0", + "19":"0", + "20":"0", + "21":"0", + "22":"0", + "23":"0", + "24":"0", + "25":"0", + "26":"0", + "27":"0", + "28":"0", + "29":"0", + "30":"0", + "31":"0", + "32":"0", + "33":"0", + "34":"0", + "35":"0", + "36":"0", + "37":"0", + "38":"0", + "39":"0", + "40":"0", + "41":"0", + "42":"0", + "43":"0", + "44":"0", + "45":"0", + "46":"0", + "47":"0", + "48":"0", + "49":"0", + "50":"0", + "51":"0", + "52":"0", + "53":"0", + "54":"0", + "55":"0", + "56":"0", + "57":"0", + "58":"0", + "59":"0", + "60":"0", + "61":"0", + "62":"0", + "63":"0" + } + }, + "PORT_QOS_MAP": { +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "SCHEDULER": { + "scheduler.7": { + "type": "STRICT" + } + }, + "QUEUE": { + "{{ port_names }}|7": { + "scheduler": "[SCHEDULER|scheduler.7]" + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_t1.j2 new file mode 100644 index 000000000000..b03078465730 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_t1.j2 @@ -0,0 +1,129 @@ +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + + +{ + "TC_TO_QUEUE_MAP":{ + "AZURE":{ + "0":"0", + "1":"1", + "2":"2", + "3":"3", + "4":"4", + "5":"5", + "6":"6", + "7":"7" + } + }, + "TC_TO_PRIORITY_GROUP_MAP": { + "AZURE": { + "0": "0", + "1": "0", + "2": "0", + "3": "3", + "4": "4", + "5": "0", + "6": "0", + "7": "0" + } + }, + "DSCP_TO_TC_MAP": { + "AZURE": { + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" + } + }, + "PORT_QOS_MAP": { +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/sai.profile b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/sai.profile new file mode 100644 index 000000000000..aba4fc81fb17 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers.json.j2 index 1a31812c26b1..b9265c62eb8f 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configuration available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "51691264", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"135520", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"10243072" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_def_lossy.j2 index 1a31812c26b1..79dbf9b2864b 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_def_lossy.j2 @@ -7,7 +7,7 @@ { "BUFFER_POOL": { "lossy_pool": { - "size": "56985600", + "size": "61458432", "type": "egress", "mode": "dynamic", "xoff": "0" @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_t1.j2 index 93dac6b1992a..b9265c62eb8f 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_t1.j2 @@ -1,4 +1,4 @@ -{# Default values which will be used if no actual configura available #} +{# Default values which will be used if no actual configuration available #} {% set default_cable = '40m' %} {# Port configuration to cable length look-up table #} @@ -76,7 +76,7 @@ }, "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "47218432", + "size": "51691264", "type": "ingress", "mode": "dynamic", "xoff": "17708800" @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "xoff":"38816", + "pool":"ingress_lossless_pool", + "xoff":"135520", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/config_32x400G_wistron_sw_to3200k.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/config_32x400G_wistron_sw_to3200k.yaml index 23445c6dede5..b96146517adb 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/config_32x400G_wistron_sw_to3200k.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/config_32x400G_wistron_sw_to3200k.yaml @@ -10,13 +10,11 @@ nodes: - auto_create: "no" multi_interface: "yes" buffer_management_mode: "api_driven" + wred_cr_ip_proto_list: "17" + cr_assignment_mode: "1" max_lossless_tc: "2" ilpm_enable: "1" forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E" - ecn_stats_enable: "1" - pcie_attn: "10, 0, 0, 0" - pcie_post: "10, 18, 18, 18" - pcie_pre1: "0, 0, 0, 0" led_cfg_sck_rate: "0x5" led_refresh_precliff_timer: "0x18eec2" led_refresh_cliff_timer: "0x15e" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/hwsku.json new file mode 100644 index 000000000000..7157f361663e --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_A b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_A +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.config.yaml old mode 100644 new mode 100755 index 0c1644ab7d72..ed98d89bfac6 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.datapath.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.datapath.config.yaml index 891b0b3e2834..a539d6c70040 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.datapath.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.datapath.config.yaml @@ -1,9 +1,9 @@ -ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880" -ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218" +ISAI_PARAM_P0_0_LS : "864 864 720 720 720 720" +ISAI_PARAM_P0_1_LS : "770 490 434 378 378 378" ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98" -ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960" -ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920" -ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938" -ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478" +ISAI_PARAM_P1_0_LS : "288 288 240 240 240 240" +ISAI_PARAM_P1_0_LL : "576 576 480 480 480 480" +ISAI_PARAM_P1_1_LS : "686 406 364 308 308 308" +ISAI_PARAM_P1_1_LL : "574 574 574 574 574 574" ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98" ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos.json.j2 old mode 100644 new mode 100755 index 104d2d78de87..0f1ecd1106d0 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos.json.j2 @@ -18,6 +18,18 @@ "7":"7" } }, + "MAP_PFC_PRIORITY_TO_QUEUE": { + "AZURE": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7" + } + }, "TC_TO_PRIORITY_GROUP_MAP": { "AZURE": { "0": "0", @@ -32,87 +44,149 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" - } - }, - "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" + "scheduler.0": { + "type" : "DWRR", + "weight": "1" + }, + "scheduler.1": { + "type" : "DWRR", + "weight": "1" } }, "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" +{% for port in port_names_list %} + "{{ port }}|3": { + "scheduler" : "scheduler.1", + "wred_profile" : "AZURE_LOSSLESS" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|4": { + "scheduler" : "scheduler.1", + "wred_profile" : "AZURE_LOSSLESS" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|2": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|6": { + "scheduler": "scheduler.0" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "PORT_QOS_MAP": { +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_to_queue_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..0f1ecd1106d0 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_t1.j2 @@ -18,6 +18,18 @@ "7":"7" } }, + "MAP_PFC_PRIORITY_TO_QUEUE": { + "AZURE": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7" + } + }, "TC_TO_PRIORITY_GROUP_MAP": { "AZURE": { "0": "0", @@ -32,83 +44,149 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" + } + }, + "SCHEDULER": { + "scheduler.0": { + "type" : "DWRR", + "weight": "1" + }, + "scheduler.1": { + "type" : "DWRR", + "weight": "1" } }, + "QUEUE": { +{% for port in port_names_list %} + "{{ port }}|3": { + "scheduler" : "scheduler.1", + "wred_profile" : "AZURE_LOSSLESS" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|4": { + "scheduler" : "scheduler.1", + "wred_profile" : "AZURE_LOSSLESS" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|2": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|6": { + "scheduler": "scheduler.0" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_to_queue_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers.json.j2 index 1a31812c26b1..794b5c854689 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "47218432", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"9497600" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_def_lossy.j2 index 1a31812c26b1..abb756c7d4ef 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_def_lossy.j2 @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_t1.j2 index 93dac6b1992a..17b85f08443a 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_t1.j2 @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", "static_th":"9497600" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/hwsku.json new file mode 100644 index 000000000000..c874d4d0b9ba --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet152": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet160": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet168": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet176": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet184": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet192": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet200": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_A b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_A +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/ivm.sai.config.yaml old mode 100644 new mode 100755 index 5e5d2fe66861..b9f2cc4061d1 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos.json.j2 old mode 100644 new mode 100755 index 104d2d78de87..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos.json.j2 @@ -32,87 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } - }, - "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, - "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers.json.j2 index 1a31812c26b1..794b5c854689 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "47218432", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"9497600" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_def_lossy.j2 index 1a31812c26b1..abb756c7d4ef 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_def_lossy.j2 @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_t1.j2 index 93dac6b1992a..1479f78fed9e 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_t1.j2 @@ -86,52 +86,76 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "type": "egress" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", "static_th":"9497600" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/hwsku.json new file mode 100644 index 000000000000..c597c7248c87 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet200": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_A b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_A +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/ivm.sai.config.yaml old mode 100644 new mode 100755 index 8014caa1da4d..3a18ade8f2b2 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos.json.j2 old mode 100644 new mode 100755 index 104d2d78de87..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos.json.j2 @@ -32,87 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } - }, - "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, - "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers.json.j2 index 1a31812c26b1..794b5c854689 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "47218432", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"9497600" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_def_lossy.j2 index 1a31812c26b1..abb756c7d4ef 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_def_lossy.j2 @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_t1.j2 index 93dac6b1992a..17b85f08443a 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_t1.j2 @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", "static_th":"9497600" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/hwsku.json new file mode 100644 index 000000000000..ac524d6920ce --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_A b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_A +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/ivm.sai.config.yaml old mode 100644 new mode 100755 index e17792d88daa..36fd34a546c4 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos.json.j2 old mode 100644 new mode 100755 index 104d2d78de87..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos.json.j2 @@ -32,87 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } - }, - "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, - "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers.json.j2 index 93dac6b1992a..020656fdb8f5 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers.json.j2 @@ -76,7 +76,7 @@ }, "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "47218432", + "size": "51691264", "type": "ingress", "mode": "dynamic", "xoff": "17708800" @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_def_lossy.j2 index 1a31812c26b1..79dbf9b2864b 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_def_lossy.j2 @@ -7,7 +7,7 @@ { "BUFFER_POOL": { "lossy_pool": { - "size": "56985600", + "size": "61458432", "type": "egress", "mode": "dynamic", "xoff": "0" @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_t1.j2 index 93dac6b1992a..020656fdb8f5 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_t1.j2 @@ -76,7 +76,7 @@ }, "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "47218432", + "size": "51691264", "type": "ingress", "mode": "dynamic", "xoff": "17708800" @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/config_32x100G_wistron_sw_to3200k.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/config_32x100G_wistron_sw_to3200k.yaml index a6f5d00d8b34..a0faac84625e 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/config_32x100G_wistron_sw_to3200k.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/config_32x100G_wistron_sw_to3200k.yaml @@ -10,12 +10,11 @@ nodes: - auto_create: "no" multi_interface: "yes" buffer_management_mode: "api_driven" + wred_cr_ip_proto_list: "17" + cr_assignment_mode: "1" max_lossless_tc: "2" ilpm_enable: "1" forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E" - pcie_attn: "10, 0, 0, 0" - pcie_post: "10, 18, 18, 18" - pcie_pre1: "0, 0, 0, 0" led_cfg_sck_rate: "0x5" led_refresh_precliff_timer: "0x18eec2" led_refresh_cliff_timer: "0x15e" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/hwsku.json new file mode 100644 index 000000000000..4116ae2ba5f1 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/ivm.sai.config.yaml old mode 100644 new mode 100755 index 8ae2b9683d49..7bc06c952692 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos.json.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos.json.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers.json.j2 index 1a31812c26b1..794b5c854689 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "47218432", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"9497600" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_def_lossy.j2 index 1a31812c26b1..abb756c7d4ef 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_def_lossy.j2 @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_t1.j2 index 93dac6b1992a..17b85f08443a 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_t1.j2 @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", "static_th":"9497600" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/hwsku.json new file mode 100644 index 000000000000..6472483dc248 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_A b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_A +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/ivm.sai.config.yaml old mode 100644 new mode 100755 index 01fe64ec7bc9..36da27953d49 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos.json.j2 old mode 100644 new mode 100755 index 104d2d78de87..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos.json.j2 @@ -32,87 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } - }, - "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, - "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/installer.conf b/device/wistron/x86_64-wistron_sw_to3200k-r0/installer.conf index 6af5fa8d979b..d7d410dae704 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/installer.conf +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/installer.conf @@ -1,4 +1,4 @@ CONSOLE_PORT=0x3f8 CONSOLE_DEV=4 CONSOLE_SPEED=115200 -ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="pcie_aspm=off" +ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="pcie_aspm=off intel_iommu=off" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/libplatform.so b/device/wistron/x86_64-wistron_sw_to3200k-r0/libplatform.so new file mode 100644 index 0000000000000000000000000000000000000000..1ca41771ff2dd58339f90189c280eb1b1e5e6ffa GIT binary patch literal 26640 zcmdU23wTu3oj;R@gy#eW&7zjeBZ3b?2*x504TLL$5{N*Qx~0P;nLKnd6XpS-Uun}$ zf*Ge-V_RMN*p;rf#kRXkcPnezj~cWZw6u*aZmDbAh-haF-3CE-+R|o!|MR$W?__2O zDf_K^b>^J&JO9`DpXWVia`=?K?v5Orjj1P>-Nq=@KS3ZBGNXT+j3B6BOV~JkU(2rH zwE4-b5wXox0#YGk8V5+nW%$HoeymF1D%_jP$yo1iM5y?3kR-l>^#U(guknZqdu35n zSRlw)9zyyYmHDaRTuG-wqNS($tzbRH2kzp@5#c%kGZiYnyTM0xj`k^(gd3&4OnxaM z2jEemEDkT*G~nd6HS25GwvP_o|HNHuw=|r0EZF&_gZ+2Dmj7$wqkN(xG2`(0Dzn`= z#l|89dCc}uUZIWhX5jN7eAv`qoLHs5db(r#;dc(b`MFQjUh{hN_T#^b&UpBtU!K^$ z<(h3vD>r_5+5xMUWkIFqtDHNzW^EO z=+9@s!x`|$GT`KA4WHC!dst}|f!6zO4;SBg6GvH;wHGEQ^HvpuQ zPwjSgDlyUzWuSkB;}h8rWk=a0c~`;@h3qQUezztO5m5KNoK0jODi-N2SBr2nr!Qjr z%V!Bde$N9=^iNd?pkKE4t0cZd;)^By-ytOWTQmXGO57pkr`oe$((je@i)DxX4#&r{ zedDD78Tb%RWkqaXv9wcmR0=Lv4;`^f}JDHWvwSd73{C!aH|3H%bYW9#IpWqIAKswMqB-E zk!E>L+uE%~j7@Tpo|F zj%#k+Wk>X{P83yZ zoR8)T=>neCOt{g;ku%?ftGSREN=>+Vy|BcDo9D|46HdC-<1pdM*OXUn!p;8KV#4K; zhKt%}!c|pKMw1Dj%qhiJs|lZC!rM%^-GsNB@Tn%e%Y>W#++)J8Fwr~0rwbg>`~`Pt z%+c8!%#THp=?MRz;CVqbT)qlf!^NxdZJ$|z7^RyiGd?hkr+6u)sp{hWJY7aG2JpC@EsVd?XJpB%(sS4tyJbjYV)MVotPrpWKs)~3aPydwCR0VOy(=St+Tpu6$ z^YE~vJO2O-aCEQu2Lv^a>l2R1TaIvI%Fdjv&%=?&R|`kJyLEVg`~~`5g5GbUKa$9G zM4odTdFOVAt>5uVBE*@eKg*ea8hm%FBl6<#N#bu`aVz*(Xr3dy;v2|@%E(*6Nu+<3 zhS35h#+vZ8^~L-`5ZcZ@Ph1Tp_L&_pnW}O{D+pQeIv97aG;T%>`0oP@S;PHX< zeP%n+$L~U%bT~eJx(DgV?$1U-U6Gm&N2I$AS$%qf$Q*rojECL&zC#s=eV?ZyeX$$4 zlk}cLR7D0lozQ3}NpN(R`#uZ_pnaUsh#qr}!fZS_)xhp5EpR*Ca)dy1{NxE|wy5nv|aYxzW zZo4n5;~xLR7#z0?({|EvKf^+p9Cr?)KIo2PuyK@*%XepWT*L3j;J6A*5=qBBUM3v( z?-2DtcU)g$)Q&sm%j&oVkaW>w+&Ij(Nyj~~NI32@5M^?lCMSmpmtb;u);c*%Pniqs zoev5E%Z!m}f_Uh^hlgouy5JOX)X_bu6M|_?(D`wVMW$iMPd8D--oH2}E~1IzIV@?C zPAn-EPFw-w{y#WTN0Beui4{*}apDv2jlqe#u}(}n@l1(uVgjN}PNZc@c=umU0 zW5F`{612&utZj0{f+dvFNJE+0;~&l?JM)=z%arjav~08O{ouctF1&_X-)bzlla70S zfpFZj5S7+((~10p=C~tgFW|WT*Rncp5%@3KaTD?8l62goHwnk>fvB{OdmXFl51iw= z-o1e1{`Qwy9hW#W2FLw$oY`@WHwwp9!4#9@z9%P*iR3feSbC`gFF1H(nJVRPg{hsr zp$6*zp&O%mN3;g-1wVBhIf+++en@)`98$5D1SGXE9Xq1r1IHPc^y}7@4QdQ%U=4g z|C*N`-e>Xa4FhIoH(BIL3sZ%I zZ$~VPgC8-~?ldZ&Xj+Hni^AoMR{2^}?H@^*7i(q7FQ1EFCyy zU*J0zm}Ym6cAEYCZ_O)~5fiO>v9}i$mT|H7$I}-#_}xy^?W-7Ak`CN^op4|^OiJs( zuM;^OIOT)nz>O$)a>Lf2L^YG*4Ip=aNb`y zhu|H08!V*~cZkg-Y#d?IFgFw$|Itw5@1v0>t^3JbVcmAH8`jx7{uxBV!agF0g$4BW zm&|e=scGjsd>ovgWjy(Tjn5YF4I8{O3*A=)9mv?=Y*nVni`ajh0Ak`m=K)~@dz=vTp+h(=l-rNd{51W3ZsR{19<g~Uye7LQYp@750-(hSj1{V>Ul>iZ$LpX36%M#ww?nJ2IX`vZ`p z6`hzUhfUgoJqMN($t~D(*d0AUFRqrH<+p`iC4~^(E=4bbHmsG@s2#77Hi5(?Nv0%8 zsQ%++Ns?8PWbikJ6lAivU6Jr6Q4A{KfG0pF9I%lnL@C!vA-7P$BPfL^<(;BS|3#%d zKU+BPF2lYA%wusM$rg@yLz2u-lJHWlOOm`GN%E5tSz7B4n)|5wI7?}7D{pgz%cJ+n!zF0AY zM)aYs{%FlmG?c(ZjrMyt9OsDE3^=;0u>6K0ksnjD&KE}TlZ9b>=Na1ejiTou z>;AWRd_Ns`P2%kYU@<_;kTLB>jrWg_B7+y&7&1}@rNAuZm03b?0_}U>OgIi=O8_MY zCHu2@?PW2XxmZNvpe2XM4|nlh{ioY`@Ms$aeR?lg=v0G7Bsnm_ks^iVFoBr0D2P#= z%Q34@e_imMpa5cc86440p@T-#cQj>q(WvBYjEWnTw4VfiH@>}{@p(PIKvZXXwXspxZ}uxI2=2f z=de8o@!TJ_{wND4uCzb+Do7)}rZ=t6U;>Ed;vi zyezzXXgG9JG&B^gIv1^>9k4*CJ)BmujT57lgN z^Wa7RHfz2h=lM4emKhA_3v6)C;4FiIQ(Qh+XaJmo_2AGjH#CPf{Pok^35gFWCp`9s za>CG6j402uPtG6I6yZ3-TP+4*9|%FGeG*jXxwxqY)f$89t3=g;<3~LfPS}Fe@#X)k za3Uv|GdQD9KY`bKHaHcL$rLF-gbtc}9NnEgs8H*1U=D;LV;^NyfQl-F_a8b}Cl2(F zL)0gXjDBRmILBU7rF~_dMy)@hABgG)x~s=aRTzWX;0<&~(JJz}vPa1ZsS_02%oJ~O ztxuCV(W(Rdc$E(pYa>Hq_}>U>A#8~-kVqk==xSlMpU{Z@4CdHpSg2U3;jUb7@Sgv* zs+oK6(>#pa&&Z-WBCm+jQgzcX@-Lv2qnZ66_lEsoZ$$rgRR4B3G1cDj*B}fhih@(Z ziOKek_rMi@91v*lgJGZz58NKn_seu|>@v>&WK@5WYVI1Uxk*%W*M<|h!8wCBM)Qki zVQA5hp`GMUmC@2#|9$~)l! zn`8WQ1U+}wzNPo9{UiFZv-YX_zO(j1eV_e43|}iAxEAiT!RlE2SHr_9<6V2<*%i7-Cgav~Sic(Xw; zn-dJ#K!C*#vRp>iIAqa)HiW5Eato3j2Fa<{sc)aKOn&{;4JLvY-KrPes#na!+YP3F z1{1H>`1mVmG`F&2?$mp~&x;8;pXUnBVemlWAQBL|7pGPN_?iH^4B!hK;6K#tlm1gAS^cK!Qnj^i9|Dh>_0()(vu~3A}*YC3O@;e;Sn9J5Z~?e-PsCZJhDwi zs#T;=MVN@t5(73HF0FuMunM@#fUh^fygWvZ-JC4Oa=SgLYBzofV+vm0hYLnuzc^jWMH4i8ec@+OB;y}9!Q(Ft!p zAmZGcP98VBSuK*vn=3_f3k)XbmWgDMOwJKW<;`i7>|SxWNO`jofbizu;kceVk$w-y zBLhZx)B%VngyEMf!7K`#B%qQR1n>Qv2oe#!U%d@nfyn^N0}N5e@fr}-`=eE-qM?}a z^Q-gtIhN%YSVu6Jm(0YtZ##+^r7H)_T^GfC<_0tKqiwupT!ixP++yJ;w_lY0?W-*O zTP~J=(RwpKA0?wTc%3?l->Z$rf##jaw?3j_S!s*Fi+qS3v!Jg;q#!W@(e}F-fo??K za6}(6|G8Ju{GZ_m+jFdqvM)+*uph`bX@V?Bv-tH8;m8%CuPU9dLpgCW=DSI zXws3?;xCeYE6(b9J%sgs{91%w5YH{skJ}%7tQ_KMmWF55dlijTDr^OtMp&4Wp z?r(>*@XHm+K`e9U!jG)8DyGFF6w@ShX%&C?0*Yy|3dJ;!U0TJrWmHTn2kbau@ip?e zvKP}UO-`!{GWjyy@STaakF6Y&6-%ETixu%{SYOgSV(*-QSZ1S^W;BWq?w$OPLZXlI zHT!6X_)+!6WfxFPi*7Uq{(^8x6|cysI9p@**I$pN8Z!I6VoX*nc;nJqv3^WeeBhhNsZdUz!3Y`vp1h*I5JZ51b(wHE9)gY||sr>m&{9(*sG%Omvd3%bf@PZd5F9i#|x_=bp zDC-dr(Z0I;tzftp##UfWs1M0sjm8h~`7kkJ5kCaK+Yh$$_2B?*i0V|9lyfqjs35VB zwhnOMl!X9q|2H4yFWhN`KoxHm0~MD<)k}R@Rf$sNT@qCv%dV=E8v6k48vo@EJo_SE z!0=aFsMy#fbHzs4GCg5`@MbIe7{1ErYcc*hJLqMt_~UBU7-({} zB2R>6%-`m$3wqp6PlFL{N=9pU66)UWtaAq0I^RxK<*siIwJ=9>W0TBjKn`eJjdj6B z9&_(1MWzsCE37k|I4?QnTQ?xk9B0Keemk5$fEua^AVb8UXB z#}#bw`CC>H{aUZrw}WgiD_NYXAGR!jF?UosS8u#WyT|Q!76-D*SAUG2qQlP?h64VD zaIxRLFyQkx*DX{wEDY>i5cDlBD=mG%$#a}2alJcGB1$WZlj4^R_-px0UYW%_F0b1e zXmz{mS$XLiR#v`-Ekc;aFQfKvQY80T9o-z@4DM=mvkldo*H*4v$5yYbbS|pmL0NTq z6|1b-w0T3-(oz+nmnb~edKtC;q(ZL0xn4+1m1op5HEI5r{wWoaqTfVsx=BEr&#yJ` zx?0>^+eo|DdePvT>$PTYYbYohUkTHLO>VyzHy@;<$E^zut~$3yLbc|A=Jf?N#ZUqU zt6x;Ju6OUCI}S8-Q-5=9DCkC$4>T?Q* zhX_v~$tydIl~0uqw=p~*_!U>C{w4gecGDUtQbu0SN*9!t7W2AV7}yn9SQ`o~Y%Z%? zh+;L@xdRJ}0}FAPgWuP(D8=si=$M-52k6u&ZEMpmCwW4oD4TmZwYFKCoR=;t(sjmnJlb-`OX>D~o{5&E`9YcsQ_*uT*o4Eep7Zqy)*3r~X0-o{yM70xw# zaJ)yM`W!_17ZRIk!d3og!t>z23P-^7p=0FtA?Gc8UciSAZRwnLH$K+-v5s$a^GWL1 zmW`fnMoFdr(XnHAFKoY^F%7TjM^}C6i}aki-F9{EvUPAZ?I8~w9v*H&`0BIp1;Trd z4-X$e_zXh&f$iXl;bGc2rc*Gwf9Wy&jI9*mO9-nG(lbp2%=Yn(%+^+DyL!^Nf*$0} z1&(uX)(RcO%cd0GF{S8E`^23E?d z(;$lHQ~&+@pA8S!A~f=Iwo*3F?*Kf2e13P2!C#W6_@6}nSsYkxvhc4r_+K7aUG1!6N~THT97^-hn!3i^f2tk- zAq)Jr4BwaGWwIi!l;L$UyhVn0$nYK+(oO(9J7l;=hL6ec>oPnj!xv>JxER|Y=2Mka z%UMgBuWKbz$uGPzviU-rQnc8n$5?Rl6l2tGsclkwrZ!9UPE|_PMr|?=AF4BIPgJ*s z_}KB8f)Dix>L=6|$!u~FwJT~P)A7L%=-3tbP}`e|53UMf_{}2I@WC&>_#Jy|Dl3<2 z^KoO}_1euPOG?VMveHH6rMHwV*5+??*J}<}P~Zy|-+Db*vOc-6P~B^2Cd`HPs-Ic$ zT%&(k@jRm+TJe0Q+OrkEjH!NL#m6z#pR9NRQ~l10kGy}4@^j(cUfKSv^b?JHDy{g) zd)b7X$*il=Oex~Is7-ahqd7MhHC;-RXUda{R-nc`b5<^DS&esA{BoA4(##N#=ThrP z)BkeOV$$`?T(l~6Z9#a}{E zRTGqQqRmGEIeoJgzf$2LD^B+$a{5nO@g)lHmUt=S5B*6Er$21PKdSKGN}L8fJlhq1 zM&oHd5F)lm;qO`TFDv}_5|MCKT`rgIyk^O@5)5+=N z^drZC&vAU@IPhiQH2b8ESO3K6N8Z1Ah~p#22U@$*y_u=^cn)x!bXcEvfooQXr>0x8KfbYy8|B(#zPXeE9Hbln% z%*#7+{m`314y*GA1Hn*3LrER(6uq-@qjTNbO`CBsYw|W$XRrm^6+Ublfui2$Z1nhQ zT^?tB(B}_0U7v3t*85bSAS&v%Br=Mpup>ZQ+G%<$LfuM za5baHB9#ax9+mi^Xq!8 zki3IeTmx*)QWp-3dyU0a!&VC6`jo4I`TfIIx|EBO#eKn65+RCT7|ibgHs5k=z9877 zlHVpQ)0WGP(@Ew=3h`;~R;HVitz7bcWGg7IJ+^|p64GAk%rDg05PGLB9x_R1D`D?vh4tsH8U3?5SUXgBqS{as`@LN&PM_I7NuTh3D*W`vc8B zuO;C`p5N_p5rd4urL2UzswC)cL!94hUE=rg+nP(%^5st2!12@WyT2@Vy%zYb)? zN_rrL+vI9#u7e#uNXJ(RS1H8fE@*}Wxt10Tt!XBOF+lX5Lht`r?(j#wPpfdQ#8rUl z#q!Ym4DL$vDSq|dt-@`R8q*bj)IO6;;$Kz}uSkl&T1He@BpFGs4Ijm?-bX5c5sBhg z`)Mjv`)45G56Lh;4kTzVOYy7seHE^f#L9j}r@|WK)83d$t9=0#YLY+IehIUBL?}=3 ztNjBN4oO0#KehZ`$-hd{seJ|&w#xz&Kkd(?^0xsa61D%R_CHmq_BBDmAF|c_1duTE zt9=U<7N$5{zTWVCC6e>W6n^y{t-`0MftVh}ub>V@%=*>+^eRl(iDDUe`vj+P8KY9C4cdnvurf6DKQU$vuOg4b-n+HX3#L1;{Aen$UMa!#i38~ak#f`6|FjBmxK z!od`NwSTow@(&oCBBG_F&mc{*RQc8WQv2P4aQ-PPgJw;#_mQUZm!{x~e?bZ^-N|_< zi_)s^m`M*v{SMgyX`ZRXN0qxs5>vLaT|zua+$U1URmI6nrC-rbMI;^nF{hwN-N;Mj F{~wL=Fn9m} literal 0 HcmV?d00001 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/pcie.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/pcie.yaml new file mode 100755 index 000000000000..ef4b521c66d3 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/pcie.yaml @@ -0,0 +1,375 @@ +- bus: '00' + dev: '00' + fn: '0' + id: 6f00 + name: '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: '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: '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: '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: '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: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 03)' +- bus: '00' + dev: '03' + fn: '1' + id: 6f09 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 03)' +- bus: '00' + dev: '03' + fn: '2' + id: 6f0a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 03)' +- bus: '00' + dev: '03' + fn: '3' + id: 6f0b + name: '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: '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: '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: '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: '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: 'Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)' +- bus: '00' + dev: '1c' + fn: '0' + id: 8c10 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)' +- bus: '00' + dev: '1c' + fn: '6' + id: 8c1c + name: 'Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #7 (rev d5)' +- bus: '00' + dev: '1c' + fn: '7' + id: 8c1e + name: 'Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #8 (rev d5)' +- bus: '00' + dev: '1f' + fn: '0' + id: 8c54 + name: 'Intel Corporation C224 Series Chipset Family Server Standard SKU LPC Controller (rev 05)' +- bus: '00' + dev: '1f' + fn: '3' + id: 8c22 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)' +- bus: '03' + dev: '00' + fn: '0' + id: 6f50 + name: 'Intel Corporation Xeon Processor D Family QuickData Technology Register DMA Channel 0' +- bus: '03' + dev: '00' + fn: '1' + id: 6f51 + name: 'Intel Corporation Xeon Processor D Family QuickData Technology Register DMA Channel 1' +- bus: '03' + dev: '00' + fn: '2' + id: 6f52 + name: 'Intel Corporation Xeon Processor D Family QuickData Technology Register DMA Channel 2' +- bus: '03' + dev: '00' + fn: '3' + id: 6f53 + name: 'Intel Corporation Xeon Processor D Family QuickData Technology Register DMA Channel 3' +- bus: '04' + dev: '00' + fn: '0' + id: 15ac + name: 'Intel Corporation Ethernet Connection X552 10 GbE SFP+' +- bus: '04' + dev: '00' + fn: '1' + id: 15ac + name: 'Intel Corporation Ethernet Connection X552 10 GbE SFP+' +- bus: '06' + dev: '00' + fn: '0' + id: 1b58 + name: 'Device 1d98:1b58 (rev 10)' +- bus: '07' + dev: '00' + fn: '0' + id: 9100 + name: 'Solid State Storage Technology Corporation Device 9100 (rev 03)' +- bus: '0b' + dev: '00' + fn: '0' + id: e001 + name: 'Altera Corporation Device e001 (rev 09)' +- bus: '0c' + dev: '00' + fn: '0' + id: 1533 + name: 'Intel Corporation I210 Gigabit Network Connection (rev 03)' +- bus: 'ff' + dev: '0b' + fn: '0' + id: 6f81 + name: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 03)' \ No newline at end of file diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/platform.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/platform.json new file mode 100644 index 000000000000..18dcca800329 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/platform.json @@ -0,0 +1,844 @@ +{ + "chassis": { + "name": "Wistron_sw_to3200k", + "components": [ + { + "name": "BIOS" + }, + { + "name": "CPLD1" + }, + { + "name": "CPLD2" + }, + { + "name": "MB_FPGA" + }, + { + "name": "FAN_CPLD" + }, + { + "name": "BMC" + } + ], + "fans": [ + { + "name": "FAN-1F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-1R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "fan_drawers": [ + { + "name": "FanTray1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-1F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-1R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray2", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-2F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray3", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-3F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray4", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-4F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray5", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-5F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray6", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-6F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray7", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-7F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + } + ], + "psus": [ + { + "name": "PSU-1", + "fans": [ + { + "name": "PSU-1 FAN-1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "status_led": { + "controllable": false + } + }, + { + "name": "PSU-2", + "fans": [ + { + "name": "PSU-2 FAN-1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "status_led": { + "controllable": false + } + } + ], + "thermals": [ + { + "name": "Bottom-Front", + "controllable": false + }, + { + "name": "Bottom-Rear", + "controllable": false + }, + { + "name": "Left-Front", + "controllable": false + }, + { + "name": "Right-Front", + "controllable": false + }, + { + "name": "Top-Center", + "controllable": false + }, + { + "name": "Top-Front", + "controllable": false + }, + { + "name": "Top-Rear", + "controllable": false + } + ], + "sfps": [ + { + "name": "port1" + }, + { + "name": "port2" + }, + { + "name": "port3" + }, + { + "name": "port4" + }, + { + "name": "port5" + }, + { + "name": "port6" + }, + { + "name": "port7" + }, + { + "name": "port8" + }, + { + "name": "port9" + }, + { + "name": "port10" + }, + { + "name": "port11" + }, + { + "name": "port12" + }, + { + "name": "port13" + }, + { + "name": "port14" + }, + { + "name": "port15" + }, + { + "name": "port16" + }, + { + "name": "port17" + }, + { + "name": "port18" + }, + { + "name": "port19" + }, + { + "name": "port20" + }, + { + "name": "port21" + }, + { + "name": "port22" + }, + { + "name": "port23" + }, + { + "name": "port24" + }, + { + "name": "port25" + }, + { + "name": "port26" + }, + { + "name": "port27" + }, + { + "name": "port28" + }, + { + "name": "port29" + }, + { + "name": "port30" + }, + { + "name": "port31" + }, + { + "name": "port32" + } + ] + }, + "interfaces": { + "Ethernet0": { + "index": "0,0,0,0,0,0,0,0", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x400G[100G]": ["Eth1"], + "1x100G(4)": ["Eth1"], + "4x25G[10G](4)": ["Eth1-1", "Eth1-2", "Eth1-3", "Eth1-4"], + "4x10G[25G](4)": ["Eth1-1", "Eth1-2", "Eth1-3", "Eth1-4"] + } + }, + "Ethernet8": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x400G[100G]": ["Eth2"], + "1x100G(4)": ["Eth2"], + "4x25G[10G](4)": ["Eth2-1", "Eth2-2", "Eth2-3", "Eth2-4"], + "4x10G[25G](4)": ["Eth2-1", "Eth2-2", "Eth2-3", "Eth2-4"] + } + }, + "Ethernet16": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x400G[100G]": ["Eth3"], + "1x100G(4)": ["Eth3"], + "4x25G[10G](4)": ["Eth3-1", "Eth3-2", "Eth3-3", "Eth3-4"], + "4x10G[25G](4)": ["Eth3-1", "Eth3-2", "Eth3-3", "Eth3-4"] + } + }, + "Ethernet24": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x400G[100G]": ["Eth4"], + "1x100G(4)": ["Eth4"], + "4x25G[10G](4)": ["Eth4-1", "Eth4-2", "Eth4-3", "Eth4-4"], + "4x10G[25G](4)": ["Eth4-1", "Eth4-2", "Eth4-3", "Eth4-4"] + } + }, + "Ethernet32": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x400G[100G]": ["Eth5"], + "1x100G(4)": ["Eth5"], + "4x25G[10G](4)": ["Eth5-1", "Eth5-2", "Eth5-3", "Eth5-4"], + "4x10G[25G](4)": ["Eth5-1", "Eth5-2", "Eth5-3", "Eth5-4"] + } + }, + "Ethernet40": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x400G[100G]": ["Eth6"], + "1x100G(4)": ["Eth6"], + "4x25G[10G](4)": ["Eth6-1", "Eth6-2", "Eth6-3", "Eth6-4"], + "4x10G[25G](4)": ["Eth6-1", "Eth6-2", "Eth6-3", "Eth6-4"] + } + }, + "Ethernet48": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x400G[100G]": ["Eth7"], + "1x100G(4)": ["Eth7"], + "4x25G[10G](4)": ["Eth7-1", "Eth7-2", "Eth7-3", "Eth7-4"], + "4x10G[25G](4)": ["Eth7-1", "Eth7-2", "Eth7-3", "Eth7-4"] + } + }, + "Ethernet56": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x400G[100G]": ["Eth8"], + "1x100G(4)": ["Eth8"], + "4x25G[10G](4)": ["Eth8-1", "Eth8-2", "Eth8-3", "Eth8-4"], + "4x10G[25G](4)": ["Eth8-1", "Eth8-2", "Eth8-3", "Eth8-4"] + } + }, + "Ethernet64": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "153,154,155,156,157,158,159,160", + "breakout_modes": { + "1x400G[100G]": ["Eth9"], + "1x100G(4)": ["Eth9"], + "4x25G[10G](4)": ["Eth9-1", "Eth9-2", "Eth9-3", "Eth9-4"], + "4x10G[25G](4)": ["Eth9-1", "Eth9-2", "Eth9-3", "Eth9-4"] + } + }, + "Ethernet72": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "145,146,147,148,149,150,151,152", + "breakout_modes": { + "1x400G[100G]": ["Eth10"], + "1x100G(4)": ["Eth10"], + "4x25G[10G](4)": ["Eth10-1", "Eth10-2", "Eth10-3", "Eth10-4"], + "4x10G[25G](4)": ["Eth10-1", "Eth10-2", "Eth10-3", "Eth10-4"] + } + }, + "Ethernet80": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "137,138,139,140,141,142,143,144", + "breakout_modes": { + "1x400G[100G]": ["Eth11"], + "1x100G(4)": ["Eth11"], + "4x25G[10G](4)": ["Eth11-1", "Eth11-2", "Eth11-3", "Eth11-4"], + "4x10G[25G](4)": ["Eth11-1", "Eth11-2", "Eth11-3", "Eth11-4"] + } + }, + "Ethernet88": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x400G[100G]": ["Eth12"], + "1x100G(4)": ["Eth12"], + "4x25G[10G](4)": ["Eth12-1", "Eth12-2", "Eth12-3", "Eth12-4"], + "4x10G[25G](4)": ["Eth12-1", "Eth12-2", "Eth12-3", "Eth12-4"] + } + }, + "Ethernet96": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G[100G]": ["Eth13"], + "1x100G(4)": ["Eth13"], + "4x25G[10G](4)": ["Eth13-1", "Eth13-2", "Eth13-3", "Eth13-4"], + "4x10G[25G](4)": ["Eth13-1", "Eth13-2", "Eth13-3", "Eth13-4"] + } + }, + "Ethernet104": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G[100G]": ["Eth14"], + "1x100G(4)": ["Eth14"], + "4x25G[10G](4)": ["Eth14-1", "Eth14-2", "Eth14-3", "Eth14-4"], + "4x10G[25G](4)": ["Eth14-1", "Eth14-2", "Eth14-3", "Eth14-4"] + } + }, + "Ethernet112": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x400G[100G]": ["Eth15"], + "1x100G(4)": ["Eth15"], + "4x25G[10G](4)": ["Eth15-1", "Eth15-2", "Eth15-3", "Eth15-4"], + "4x10G[25G](4)": ["Eth15-1", "Eth15-2", "Eth15-3", "Eth15-4"] + } + }, + "Ethernet120": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x400G[100G]": ["Eth16"], + "1x100G(4)": ["Eth16"], + "4x25G[10G](4)": ["Eth16-1", "Eth16-2", "Eth16-3", "Eth16-4"], + "4x10G[25G](4)": ["Eth16-1", "Eth16-2", "Eth16-3", "Eth16-4"] + } + }, + "Ethernet128": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "209,210,211,212,213,214,215,216", + "breakout_modes": { + "1x400G[100G]": ["Eth17"], + "1x100G(4)": ["Eth17"], + "4x25G[10G](4)": ["Eth17-1", "Eth17-2", "Eth17-3", "Eth17-4"], + "4x10G[25G](4)": ["Eth17-1", "Eth17-2", "Eth17-3", "Eth17-4"] + } + }, + "Ethernet136": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "217,218,219,220,221,222,223,224", + "breakout_modes": { + "1x400G[100G]": ["Eth18"], + "1x100G(4)": ["Eth18"], + "4x25G[10G](4)": ["Eth18-1", "Eth18-2", "Eth18-3", "Eth18-4"], + "4x10G[25G](4)": ["Eth18-1", "Eth18-2", "Eth18-3", "Eth18-4"] + } + }, + "Ethernet144": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "193,194,195,196,197,198,199,200", + "breakout_modes": { + "1x400G[100G]": ["Eth19"], + "1x100G(4)": ["Eth19"], + "4x25G[10G](4)": ["Eth19-1", "Eth19-2", "Eth19-3", "Eth19-4"], + "4x10G[25G](4)": ["Eth19-1", "Eth19-2", "Eth19-3", "Eth19-4"] + } + }, + "Ethernet152": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "201,202,203,204,205,206,207,208", + "breakout_modes": { + "1x400G[100G]": ["Eth20"], + "1x100G(4)": ["Eth20"], + "4x25G[10G](4)": ["Eth20-1", "Eth20-2", "Eth20-3", "Eth20-4"], + "4x10G[25G](4)": ["Eth20-1", "Eth20-2", "Eth20-3", "Eth20-4"] + } + }, + "Ethernet160": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "177,178,179,180,181,182,183,184", + "breakout_modes": { + "1x400G[100G]": ["Eth21"], + "1x100G(4)": ["Eth21"], + "4x25G[10G](4)": ["Eth21-1", "Eth21-2", "Eth21-3", "Eth21-4"], + "4x10G[25G](4)": ["Eth21-1", "Eth21-2", "Eth21-3", "Eth21-4"] + } + }, + "Ethernet168": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "185,186,187,188,189,190,191,192", + "breakout_modes": { + "1x400G[100G]": ["Eth22"], + "1x100G(4)": ["Eth22"], + "4x25G[10G](4)": ["Eth22-1", "Eth22-2", "Eth22-3", "Eth22-4"], + "4x10G[25G](4)": ["Eth22-1", "Eth22-2", "Eth22-3", "Eth22-4"] + } + }, + "Ethernet176": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "161,162,163,164,165,166,167,168", + "breakout_modes": { + "1x400G[100G]": ["Eth23"], + "1x100G(4)": ["Eth23"], + "4x25G[10G](4)": ["Eth23-1", "Eth23-2", "Eth23-3", "Eth23-4"], + "4x10G[25G](4)": ["Eth23-1", "Eth23-2", "Eth23-3", "Eth23-4"] + } + }, + "Ethernet184": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "169,170,171,172,173,174,175,176", + "breakout_modes": { + "1x400G[100G]": ["Eth24"], + "1x100G(4)": ["Eth24"], + "4x25G[10G](4)": ["Eth24-1", "Eth24-2", "Eth24-3", "Eth24-4"], + "4x10G[25G](4)": ["Eth24-1", "Eth24-2", "Eth24-3", "Eth24-4"] + } + }, + "Ethernet192": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x400G[100G]": ["Eth25"], + "1x100G(4)": ["Eth25"], + "4x25G[10G](4)": ["Eth25-1", "Eth25-2", "Eth25-3", "Eth25-4"], + "4x10G[25G](4)": ["Eth25-1", "Eth25-2", "Eth25-3", "Eth25-4"] + } + }, + "Ethernet200": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x400G[100G]": ["Eth26"], + "1x100G(4)": ["Eth26"], + "4x25G[10G](4)": ["Eth26-1", "Eth26-2", "Eth26-3", "Eth26-4"], + "4x10G[25G](4)": ["Eth26-1", "Eth26-2", "Eth26-3", "Eth26-4"] + } + }, + "Ethernet208": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x400G[100G]": ["Eth27"], + "1x100G(4)": ["Eth27"], + "4x25G[10G](4)": ["Eth27-1", "Eth27-2", "Eth27-3", "Eth27-4"], + "4x10G[25G](4)": ["Eth27-1", "Eth27-2", "Eth27-3", "Eth27-4"] + } + }, + "Ethernet216": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x400G[100G]": ["Eth28"], + "1x100G(4)": ["Eth28"], + "4x25G[10G](4)": ["Eth28-1", "Eth28-2", "Eth28-3", "Eth28-4"], + "4x10G[25G](4)": ["Eth28-1", "Eth28-2", "Eth28-3", "Eth28-4"] + } + }, + "Ethernet224": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "241,242,243,244,245,246,247,248", + "breakout_modes": { + "1x400G[100G]": ["Eth29"], + "1x100G(4)": ["Eth29"], + "4x25G[10G](4)": ["Eth29-1", "Eth29-2", "Eth29-3", "Eth29-4"], + "4x10G[25G](4)": ["Eth29-1", "Eth29-2", "Eth29-3", "Eth29-4"] + } + }, + "Ethernet232": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "249,250,251,252,253,254,255,256", + "breakout_modes": { + "1x400G[100G]": ["Eth30"], + "1x100G(4)": ["Eth30"], + "4x25G[10G](4)": ["Eth30-1", "Eth30-2", "Eth30-3", "Eth30-4"], + "4x10G[25G](4)": ["Eth30-1", "Eth30-2", "Eth30-3", "Eth30-4"] + } + }, + "Ethernet240": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "225,226,227,228,229,230,231,232", + "breakout_modes": { + "1x400G[100G]": ["Eth31"], + "1x100G(4)": ["Eth31"], + "4x25G[10G](4)": ["Eth31-1", "Eth31-2", "Eth31-3", "Eth31-4"], + "4x10G[25G](4)": ["Eth31-1", "Eth31-2", "Eth31-3", "Eth31-4"] + } + }, + "Ethernet248": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "233,234,235,236,237,238,239,240", + "breakout_modes": { + "1x400G[100G]": ["Eth32"], + "1x100G(4)": ["Eth32"], + "4x25G[10G](4)": ["Eth32-1", "Eth32-2", "Eth32-3", "Eth32-4"], + "4x10G[25G](4)": ["Eth32-1", "Eth32-2", "Eth32-3", "Eth32-4"] + } + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/platform_components.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/platform_components.json new file mode 100644 index 000000000000..304fbcb52557 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/platform_components.json @@ -0,0 +1,14 @@ +{ + "chassis": { + "Wistron_sw_to3200k": { + "component": { + "BIOS": { }, + "CPLD1": { }, + "CPLD2": { }, + "MB_FPGA": { }, + "FAN_CPLD": { }, + "BMC": { } + } + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/eeprom.py b/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/eeprom.py index 9f59510eac28..b7724886eea4 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/eeprom.py +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/eeprom.py @@ -3,16 +3,16 @@ try: import os from sonic_eeprom import eeprom_tlvinfo -except ImportError, e: +except ImportError as e: raise ImportError (str(e) + "- required module not found") def eeprom_check(): - filepath="/sys/bus/i2c/devices/0-0056/eeprom" + filepath="/sys/bus/i2c/devices/0-0056/eeprom" if os.path.isfile(filepath): return 1 #now board, 0x56 else: return 0 #now board, 0x57 - + class board(eeprom_tlvinfo.TlvInfoDecoder): _TLV_INFO_MAX_LEN = 256 def __init__(self, name, path, cpld_root, ro): diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/sfputil.py b/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/sfputil.py index fe59dc7d8ce5..8983579016b4 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/sfputil.py +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/sfputil.py @@ -111,7 +111,7 @@ def get_presence(self, port_num): content = val_file.readline().rstrip() val_file.close() except IOError as e: - print "Error: unable to access file: %s" % str(e) + print("Error: unable to access file: %s" % str(e)) return False if content == "1": @@ -145,13 +145,13 @@ def get_transceiver_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 @@ -182,5 +182,5 @@ def get_transceiver_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, {} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/smartd.conf b/device/wistron/x86_64-wistron_sw_to3200k-r0/smartd.conf new file mode 100644 index 000000000000..c3877d93ee28 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/smartd.conf @@ -0,0 +1,150 @@ +# Sample configuration file for smartd. See man smartd.conf. + +# Home page is: http://www.smartmontools.org + +# smartd will re-read the configuration file if it receives a HUP +# signal + +# The file gives a list of devices to monitor using smartd, with one +# device per line. Text after a hash (#) is ignored, and you may use +# spaces and tabs for white space. You may use '\' to continue lines. + +# You can usually identify which hard disks are on your system by +# looking in /proc/ide and in /proc/scsi. + +# The word DEVICESCAN will cause any remaining lines in this +# configuration file to be ignored: it tells smartd to scan for all +# ATA and SCSI devices. DEVICESCAN may be followed by any of the +# Directives listed below, which will be applied to all devices that +# are found. Most users should comment out DEVICESCAN and explicitly +# list the devices that they wish to monitor. +#DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner + +# Alternative setting to ignore temperature and power-on hours reports +# in syslog. +#DEVICESCAN -I 194 -I 231 -I 9 + +# Alternative setting to report more useful raw temperature in syslog. +#DEVICESCAN -R 194 -R 231 -I 9 + +# Alternative setting to report raw temperature changes >= 5 Celsius +# and min/max temperatures. +#DEVICESCAN -I 194 -I 231 -I 9 -W 5 + +# First ATA/SATA or SCSI/SAS disk. Monitor all attributes, enable +# automatic online data collection, automatic Attribute autosave, and +# start a short self-test every day between 2-3am, and a long self test +# Saturdays between 3-4am. +#/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) + +# Monitor SMART status, ATA Error Log, Self-test log, and track +# changes in all attributes except for attribute 194 +#/dev/sdb -H -l error -l selftest -t -I 194 + +# Monitor all attributes except normalized Temperature (usually 194), +# but track Temperature changes >= 4 Celsius, report Temperatures +# >= 45 Celsius and changes in Raw value of Reallocated_Sector_Ct (5). +# Send mail on SMART failures or when Temperature is >= 55 Celsius. +#/dev/sdc -a -I 194 -W 4,45,55 -R 5 -m admin@example.com + +# An ATA disk may appear as a SCSI device to the OS. If a SCSI to +# ATA Translation (SAT) layer is between the OS and the device then +# this can be flagged with the '-d sat' option. This situation may +# become common with SATA disks in SAS and FC environments. +# /dev/sda -a -d sat + +# A very silent check. Only report SMART health status if it fails +# But send an email in this case +#/dev/sdc -H -C 0 -U 0 -m admin@example.com + +# First two SCSI disks. This will monitor everything that smartd can +# monitor. Start extended self-tests Wednesdays between 6-7pm and +# Sundays between 1-2 am +#/dev/sda -d scsi -s L/../../3/18 +#/dev/sdb -d scsi -s L/../../7/01 + +# Monitor 4 ATA disks connected to a 3ware 6/7/8000 controller which uses +# the 3w-xxxx driver. Start long self-tests Sundays between 1-2, 2-3, 3-4, +# and 4-5 am. +# NOTE: starting with the Linux 2.6 kernel series, the /dev/sdX interface +# is DEPRECATED. Use the /dev/tweN character device interface instead. +# For example /dev/twe0, /dev/twe1, and so on. +#/dev/sdc -d 3ware,0 -a -s L/../../7/01 +#/dev/sdc -d 3ware,1 -a -s L/../../7/02 +#/dev/sdc -d 3ware,2 -a -s L/../../7/03 +#/dev/sdc -d 3ware,3 -a -s L/../../7/04 + +# Monitor 2 ATA disks connected to a 3ware 9000 controller which +# uses the 3w-9xxx driver (Linux, FreeBSD). Start long self-tests Tuesdays +# between 1-2 and 3-4 am. +#/dev/twa0 -d 3ware,0 -a -s L/../../2/01 +#/dev/twa0 -d 3ware,1 -a -s L/../../2/03 + +# Monitor 2 SATA (not SAS) disks connected to a 3ware 9000 controller which +# uses the 3w-sas driver (Linux). Start long self-tests Tuesdays +# between 1-2 and 3-4 am. +# On FreeBSD /dev/tws0 should be used instead +#/dev/twl0 -d 3ware,0 -a -s L/../../2/01 +#/dev/twl0 -d 3ware,1 -a -s L/../../2/03 + +# Same as above for Windows. Option '-d 3ware,N' is not necessary, +# disk (port) number is specified in device name. +# NOTE: On Windows, DEVICESCAN works also for 3ware controllers. +#/dev/hdc,0 -a -s L/../../2/01 +#/dev/hdc,1 -a -s L/../../2/03 +# +# Monitor 2 disks connected to the first HP SmartArray controller which +# uses the cciss driver. Start long tests on Sunday nights and short +# self-tests every night and send errors to root +#/dev/cciss/c0d0 -d cciss,0 -a -s (L/../../7/02|S/../.././02) -m root +#/dev/cciss/c0d0 -d cciss,1 -a -s (L/../../7/03|S/../.././03) -m root + +# Monitor 3 ATA disks directly connected to a HighPoint RocketRAID. Start long +# self-tests Sundays between 1-2, 2-3, and 3-4 am. +#/dev/sdd -d hpt,1/1 -a -s L/../../7/01 +#/dev/sdd -d hpt,1/2 -a -s L/../../7/02 +#/dev/sdd -d hpt,1/3 -a -s L/../../7/03 + +# Monitor 2 ATA disks connected to the same PMPort which connected to the +# HighPoint RocketRAID. Start long self-tests Tuesdays between 1-2 and 3-4 am +#/dev/sdd -d hpt,1/4/1 -a -s L/../../2/01 +#/dev/sdd -d hpt,1/4/2 -a -s L/../../2/03 + +# HERE IS A LIST OF DIRECTIVES FOR THIS CONFIGURATION FILE. +# PLEASE SEE THE smartd.conf MAN PAGE FOR DETAILS +# +# -d TYPE Set the device type: ata, scsi, marvell, removable, 3ware,N, hpt,L/M/N +# -T TYPE set the tolerance to one of: normal, permissive +# -o VAL Enable/disable automatic offline tests (on/off) +# -S VAL Enable/disable attribute autosave (on/off) +# -n MODE No check. MODE is one of: never, sleep, standby, idle +# -H Monitor SMART Health Status, report if failed +# -l TYPE Monitor SMART log. Type is one of: error, selftest +# -f Monitor for failure of any 'Usage' Attributes +# -m ADD Send warning email to ADD for -H, -l error, -l selftest, and -f +# -M TYPE Modify email warning behavior (see man page) +# -s REGE Start self-test when type/date matches regular expression (see man page) +# -p Report changes in 'Prefailure' Normalized Attributes +# -u Report changes in 'Usage' Normalized Attributes +# -t Equivalent to -p and -u Directives +# -r ID Also report Raw values of Attribute ID with -p, -u or -t +# -R ID Track changes in Attribute ID Raw value with -p, -u or -t +# -i ID Ignore Attribute ID for -f Directive +# -I ID Ignore Attribute ID for -p, -u or -t Directive +# -C ID Report if Current Pending Sector count non-zero +# -U ID Report if Offline Uncorrectable count non-zero +# -W D,I,C Monitor Temperature D)ifference, I)nformal limit, C)ritical limit +# -v N,ST Modifies labeling of Attribute N (see man page) +# -a Default: equivalent to -H -f -t -l error -l selftest -C 197 -U 198 +# -F TYPE Use firmware bug workaround. Type is one of: none, samsung +# -P TYPE Drive-specific presets: use, ignore, show, showall +# # Comment: text after a hash sign is ignored +# \ Line continuation character +# Attribute ID is a decimal integer 1 <= ID <= 255 +# except for -C and -U, where ID = 0 turns them off. +# All but -d, -m and -M Directives are only implemented for ATA devices +# +# If the test string DEVICESCAN is the first uncommented text +# then smartd will scan for devices. +# DEVICESCAN may be followed by any desired Directives. +/dev/nvme0n1 -a diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/system_health_monitoring_config.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..0e0eec971cac --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/system_health_monitoring_config.json @@ -0,0 +1,11 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": ["asic"], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "red", + "normal": "green", + "booting": "green_blinking" + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/watchdog-control.service b/device/wistron/x86_64-wistron_sw_to3200k-r0/watchdog-control.service new file mode 100644 index 000000000000..02ffe8ce9189 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/watchdog-control.service @@ -0,0 +1,10 @@ +[Unit] +Description=watchdog control service +After=swss.service + +[Service] +Type=simple +ExecStart=/usr/local/bin/sw_to3200k_watchdog.sh + +[Install] +WantedBy=multi-user.target diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/Makefile b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/Makefile index 86a67f55089b..4e7a7e8191b7 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/Makefile +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/Makefile @@ -1,7 +1,7 @@ ifneq ($(KERNELRELEASE),) obj-m:= wistron_6512_32r_cpld.o wistron_6512_32r_fan.o \ wistron_6512_32r_oom.o wistron_6512_32r_psu.o \ - wistron_6512_32r_thermal.o \ + wistron_6512_32r_thermal.o i2c-imc.o \ wistron_6512_32r_leds.o wistron_6512_32r_syseeprom.o else ifeq (,$(KERNEL_SRC)) diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/i2c-imc.c b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/i2c-imc.c new file mode 100644 index 000000000000..a650f3cf1923 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/i2c-imc.c @@ -0,0 +1,515 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Intel Memory Controller iMC SMBus Driver to DIMMs. + * + * Copyright (c) 2013-2016 Andrew Lutomirski + * Copyright (c) 2020 Stefan Schaeckeler , Cisco Systems + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include + +/* iMC Main, PCI dev 0x13, fn 0, 8086.6fa8 */ +#define PCI_DEVICE_ID_INTEL_BROADWELL_IMC_TA 0x6fa8 + +/* Register offsets for channel pairs 0+1 and 2+3 */ +#define SMBSTAT(i) (0x180 + 0x10*(i)) +#define SMBCMD(i) (0x184 + 0x10*(i)) +#define SMBCNTL(i) (0x188 + 0x10*(i)) + +/* SMBSTAT fields */ +#define SMBSTAT_RDO (1U << 31) /* Read Data Valid */ +#define SMBSTAT_WOD (1U << 30) /* Write Operation Done */ +#define SMBSTAT_SBE (1U << 29) /* SMBus Error */ +#define SMBSTAT_SMB_BUSY (1U << 28) /* SMBus Busy State */ +#define SMBSTAT_RDATA_MASK 0xffff /* Result of a read */ + +/* SMBCMD fields */ +#define SMBCMD_TRIGGER (1U << 31) /* CMD Trigger */ +#define SMBCMD_WORD_ACCESS (1U << 29) /* Word (vs byte) access */ +#define SMBCMD_TYPE_READ (0U << 27) /* Read */ +#define SMBCMD_TYPE_WRITE (1U << 27) /* Write */ +#define SMBCMD_SA_SHIFT 24 +#define SMBCMD_BA_SHIFT 16 + +/* SMBCNTL fields */ +#define SMBCNTL_DTI_MASK 0xf0000000 /* Slave Address low bits */ +#define SMBCNTL_DTI_SHIFT 28 /* Slave Address low bits */ +#define SMBCNTL_DIS_WRT (1U << 26) /* Disable Write */ +#define SMBCNTL_TSOD_PRES_MASK 0xff /* DIMM Present mask */ + +/* For sanity check: bits that might randomly change if we race with firmware */ +#define SMBCMD_OUR_BITS (~(u32)SMBCMD_TRIGGER) +#define SMBCNTL_OUR_BITS (SMBCNTL_DTI_MASK) + + +/* System Address Decoder, PCI dev 0xf fn 5, 8086.6ffd */ +#define PCI_DEVICE_ID_INTEL_BROADWELL_IMC_SAD 0x6ffd + +/* Register offsets */ +#define SADCNTL 0xf4 + +/* SADCNTL fields */ +#define SADCNTL_LOCAL_NODEID_MASK 0xf /* Local NodeID of socket */ + + +/* Power Control Unit, PCI dev 0x1e fn 1, 8086.6f99 */ +#define PCI_DEVICE_ID_INTEL_BROADWELL_IMC_PCU 0x6f99 + +/* Register offsets */ +#define TSODCNTL 0xe0 + +/* TSODCNTL fields */ + + +/* DIMMs hold jc42 thermal sensors starting at i2c address 0x18 */ +#define DIMM_SENSOR_DRV "jc42" +#define DIMM_SENSOR_BASE_ADR 0x18 + + +#define sanitycheck 1 + +struct imc_channelpair { + struct i2c_adapter adapter; + bool can_write, cltt; +}; + +struct imc_pcu { + struct pci_dev *pci_dev; + u32 tsod_polling_interval; + struct mutex mutex; /* see imc_channelpair_claim() */ +}; + +struct imc_priv { + struct pci_dev *pci_dev; + struct imc_channelpair channelpair[2]; + struct imc_pcu pcu; + bool suspended; +}; + +static int imc_channelpair_claim(struct imc_priv *priv, int i) +{ + if (priv->suspended) + return -EIO; + + /* + * i2c controllers need exclusive access to a psu register and wait + * then for 10ms before starting their transaction. + * + * Possible optimization: Once an i2c controller modified the psu + * register and waits, the other controller does not need to wait for + * the whole 10ms, but then only this other controller has to clean up + * the psu register. + */ + mutex_lock(&priv->pcu.mutex); + + if (priv->channelpair[i].cltt) { + pci_write_config_dword(priv->pcu.pci_dev, TSODCNTL, 0); + usleep_range(10000, 10500); + } + return 0; +} + +static void imc_channelpair_release(struct imc_priv *priv, int i) +{ + if (priv->channelpair[i].cltt) { + /* set tosd_control.tsod_polling_interval to previous value */ + pci_write_config_dword(priv->pcu.pci_dev, TSODCNTL, + priv->pcu.tsod_polling_interval); + } + mutex_unlock(&priv->pcu.mutex); +} + +static bool imc_wait_for_transaction(struct imc_priv *priv, int i, u32 *stat) +{ + int j; + static int busywaits = 1; + + /* + * Distribution of transaction time from 10000 collected samples: + * + * 70us: 1, 80us: 12, 90us: 34, 100us: 132, 110us: 424, 120us: 1138, + * 130us: 5224, 140us: 3035. + * + */ + usleep_range(131, 140); + + /* Don't give up, yet */ + for (j = 0; j < 20; j++) { + pci_read_config_dword(priv->pci_dev, SMBSTAT(i), stat); + if (!(*stat & SMBSTAT_SMB_BUSY)) { + if (j > busywaits) { + busywaits = j; + dev_warn(&priv->pci_dev->dev, + "Discovered surprisingly long transaction time (%d)\n", + busywaits); + } + return true; + } + udelay(9); + } + return false; +} + +/* + * The iMC supports five access types. The terminology is rather inconsistent. + * These are the types: + * + * "Write to pointer register SMBus": I2C_SMBUS_WRITE, I2C_SMBUS_BYTE + * + * Read byte/word: I2C_SMBUS_READ, I2C_SMBUS_{BYTE|WORD}_DATA + * + * Write byte/word: I2C_SMBUS_WRITE, I2C_SMBUS_{BYTE|WORD}_DATA + */ + +static u32 imc_func(struct i2c_adapter *adapter) +{ + int i; + struct imc_channelpair *cp; + struct imc_priv *priv = i2c_get_adapdata(adapter); + + i = (adapter == &priv->channelpair[0].adapter ? 0 : 1); + cp = &priv->channelpair[i]; + + if (cp->can_write) + return I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA; + else + return I2C_FUNC_SMBUS_READ_BYTE_DATA | + I2C_FUNC_SMBUS_READ_WORD_DATA; +} + +static s32 imc_smbus_xfer(struct i2c_adapter *adap, u16 addr, + unsigned short flags, char read_write, u8 command, + int size, union i2c_smbus_data *data) +{ + int ret, i; + u32 cmd = 0, cntl, stat; +#ifdef sanitycheck + u32 final_cmd, final_cntl; +#endif + struct imc_channelpair *cp; + struct imc_priv *priv = i2c_get_adapdata(adap); + + i = (adap == &priv->channelpair[0].adapter ? 0 : 1); + cp = &priv->channelpair[i]; + + /* Encode CMD part of addresses and access size */ + cmd |= ((u32)addr & 0x7) << SMBCMD_SA_SHIFT; + cmd |= ((u32)command) << SMBCMD_BA_SHIFT; + if (size == I2C_SMBUS_WORD_DATA) + cmd |= SMBCMD_WORD_ACCESS; + + /* Encode read/write and data to write */ + if (read_write == I2C_SMBUS_READ) { + cmd |= SMBCMD_TYPE_READ; + } else { + cmd |= SMBCMD_TYPE_WRITE; + cmd |= (size == I2C_SMBUS_WORD_DATA + ? swab16(data->word) + : data->byte); + } + + ret = imc_channelpair_claim(priv, i); + if (ret) + return ret; + + pci_read_config_dword(priv->pci_dev, SMBCNTL(i), &cntl); + cntl &= ~SMBCNTL_DTI_MASK; + cntl |= ((u32)addr >> 3) << SMBCNTL_DTI_SHIFT; + pci_write_config_dword(priv->pci_dev, SMBCNTL(i), cntl); + + cmd |= SMBCMD_TRIGGER; + pci_write_config_dword(priv->pci_dev, SMBCMD(i), cmd); + + if (!imc_wait_for_transaction(priv, i, &stat)) { + dev_warn(&priv->pci_dev->dev, "smbus transaction did not complete.\n"); + ret = -ETIMEDOUT; + goto xfer_out_release; + } + +#ifdef sanitycheck /* This is a young driver. Keep the checks for now */ + pci_read_config_dword(priv->pci_dev, SMBCMD(i), &final_cmd); + pci_read_config_dword(priv->pci_dev, SMBCNTL(i), &final_cntl); + if (((cmd ^ final_cmd) & SMBCMD_OUR_BITS) || + ((cntl ^ final_cntl) & SMBCNTL_OUR_BITS)) { + dev_err(&priv->pci_dev->dev, + "Access to channel pair %d-%d raced with hardware: cmd 0x%08X->0x%08X, cntl 0x%08X->0x%08X\n", + 2*i, 2*i+1, cmd, final_cmd, cntl, final_cntl); + ret = -EIO; + goto xfer_out_release; + } +#endif + + if (stat & SMBSTAT_SBE) { + /* + * While SBE is set hardware TSOD polling is disabled. This is + * very bad as this bit is RO-V and will only be cleared after + * a further software initiated transaction finishes + * successfully. + */ + dev_err(&priv->pci_dev->dev, + "smbus error: sbe is set 0x%x\n", stat); + ret = -ENXIO; + goto xfer_out_release; + } + + if (read_write == I2C_SMBUS_READ) { + if (!(stat & SMBSTAT_RDO)) { + dev_warn(&priv->pci_dev->dev, + "Unexpected read status 0x%08X\n", stat); + ret = -EIO; + goto xfer_out_release; + } + /* + * The iMC SMBus controller thinks of SMBus words as being + * big-endian (MSB first). Linux treats them as little-endian, + * so we need to swap them. + */ + if (size == I2C_SMBUS_WORD_DATA) + data->word = swab16(stat & SMBSTAT_RDATA_MASK); + else + data->byte = stat & 0xFF; + } else { + if (!(stat & SMBSTAT_WOD)) { + dev_warn(&priv->pci_dev->dev, + "Unexpected write status 0x%08X\n", stat); + ret = -EIO; + } + } + +xfer_out_release: + imc_channelpair_release(priv, i); + + return ret; +} + +static const struct i2c_algorithm imc_smbus_algorithm = { + .smbus_xfer = imc_smbus_xfer, + .functionality = imc_func, +}; + +static void imc_instantiate_sensors(struct i2c_adapter *adapter, u8 presence) +{ + struct i2c_board_info info = {}; + + strcpy(info.type, DIMM_SENSOR_DRV); + info.addr = DIMM_SENSOR_BASE_ADR; + + /* + * Presence is a bit vector. Bits from right to left map into i2c slave + * addresses starting 0x18. + */ + while (presence) { + if (presence & 0x1) + i2c_new_client_device(adapter, &info); + info.addr++; + presence >>= 1; + } +} + +static int imc_init_channelpair(struct imc_priv *priv, int i, int socket) +{ + int err; + u32 val; + struct imc_channelpair *cp = &priv->channelpair[i]; + + i2c_set_adapdata(&cp->adapter, priv); + cp->adapter.owner = THIS_MODULE; + cp->adapter.algo = &imc_smbus_algorithm; + cp->adapter.dev.parent = &priv->pci_dev->dev; + + pci_read_config_dword(priv->pci_dev, SMBCNTL(i), &val); + cp->can_write = !(val & SMBCNTL_DIS_WRT); + + /* + * A TSOD polling interval of > 0 tells us if CLTT mode is enabled on + * some channel pair. + * + * Is there a better way to check for CLTT mode? In particular, is + * there a way to distingush the mode on a channel pair basis? + */ + cp->cltt = (priv->pcu.tsod_polling_interval > 0); + + snprintf(cp->adapter.name, sizeof(cp->adapter.name), + "iMC socket %d for channel pair %d-%d", socket, 2*i, 2*i+1); + err = i2c_add_adapter(&cp->adapter); + if (err) + return err; + + /* For reasons unknown, TSOD_PRES_MASK is only set in CLTT mode. */ + if (cp->cltt) { + dev_info(&priv->pci_dev->dev, + "CLTT is enabled on channel pair %d-%d. Thermal sensors will be automatically enabled\n", + 2*i, 2*i+1); + } else { + dev_info(&priv->pci_dev->dev, + "CLTT is disabled on channel pair %d-%d. Thermal sensors need to be manually enabled\n", + 2*i, 2*i+1); + } + + imc_instantiate_sensors(&cp->adapter, val & SMBCNTL_TSOD_PRES_MASK); + + return 0; +} + +static void imc_free_channelpair(struct imc_priv *priv, int i) +{ + struct imc_channelpair *cp = &priv->channelpair[i]; + + i2c_del_adapter(&cp->adapter); +} + +static struct pci_dev *imc_get_related_device(struct pci_bus *bus, + unsigned int devfn, u16 devid) +{ + struct pci_dev *dev = pci_get_slot(bus, devfn); + + if (!dev) + return NULL; + + if (dev->vendor != PCI_VENDOR_ID_INTEL || dev->device != devid) { + pci_dev_put(dev); + return NULL; + } + return dev; +} + +static int imc_probe(struct pci_dev *dev, const struct pci_device_id *id) +{ + int i, j, err; + struct imc_priv *priv; + struct pci_dev *sad; /* System Address Decoder */ + u32 sadcntl; + + /* Sanity check. This device is always at 0x13.0 */ + if (dev->devfn != PCI_DEVFN(0x13, 0)) + return -ENODEV; + + priv = devm_kzalloc(&dev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + priv->pci_dev = dev; + pci_set_drvdata(dev, priv); + + /* + * From sad, we learn the local node id of the socket. + * + * The socket will not change at runtime and so we throw away sad. + */ + sad = imc_get_related_device(dev->bus, PCI_DEVFN(0x0f, 5), + PCI_DEVICE_ID_INTEL_BROADWELL_IMC_SAD); + if (!sad) { + err = -ENODEV; + goto probe_out_free; + } + pci_read_config_dword(sad, SADCNTL, &sadcntl); + pci_dev_put(sad); + + /* + * From pcu, we access the CLTT polling interval. + * + * The polling interval is set by BIOS. We assume it will not change at + * runtime and cache the initial value. + */ + priv->pcu.pci_dev = imc_get_related_device(dev->bus, PCI_DEVFN(0x1e, 1), + PCI_DEVICE_ID_INTEL_BROADWELL_IMC_PCU); + if (!priv->pcu.pci_dev) { + err = -ENODEV; + goto probe_out_free; + } + pci_read_config_dword(priv->pcu.pci_dev, TSODCNTL, + &priv->pcu.tsod_polling_interval); + + mutex_init(&priv->pcu.mutex); + + for (i = 0; i < 2; i++) { + err = imc_init_channelpair(priv, i, + sadcntl & SADCNTL_LOCAL_NODEID_MASK); + if (err) + goto probe_out_free_channelpair; + } + + return 0; + +probe_out_free_channelpair: + for (j = 0; j < i; j++) + imc_free_channelpair(priv, j); + + mutex_destroy(&priv->pcu.mutex); + +probe_out_free: + kfree(priv); + return err; +} + +static void imc_remove(struct pci_dev *dev) +{ + int i; + struct imc_priv *priv = pci_get_drvdata(dev); + + for (i = 0; i < 2; i++) + imc_free_channelpair(priv, i); + + /* set tosd_control.tsod_polling_interval to initial value */ + pci_write_config_dword(priv->pcu.pci_dev, TSODCNTL, + priv->pcu.tsod_polling_interval); + + mutex_destroy(&priv->pcu.mutex); +} + +static int imc_suspend(struct pci_dev *dev, pm_message_t mesg) +{ + struct imc_priv *priv = pci_get_drvdata(dev); + + /* BIOS is in charge. We should finish any pending transaction */ + priv->suspended = true; + + return 0; +} + +static int imc_resume(struct pci_dev *dev) +{ + struct imc_priv *priv = pci_get_drvdata(dev); + + priv->suspended = false; + + return 0; +} + +static const struct pci_device_id imc_ids[] = { + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, + PCI_DEVICE_ID_INTEL_BROADWELL_IMC_TA) }, + { 0, } +}; +MODULE_DEVICE_TABLE(pci, imc_ids); + +static struct pci_driver imc_pci_driver = { + .name = "imc_smbus", + .id_table = imc_ids, + .probe = imc_probe, + .remove = imc_remove, + .suspend = imc_suspend, + .resume = imc_resume, +}; + +static int __init i2c_imc_init(void) +{ + return pci_register_driver(&imc_pci_driver); +} +module_init(i2c_imc_init); + +static void __exit i2c_imc_exit(void) +{ + pci_unregister_driver(&imc_pci_driver); +} +module_exit(i2c_imc_exit); + +MODULE_AUTHOR("Stefan Schaeckeler "); +MODULE_DESCRIPTION("iMC SMBus driver"); +MODULE_LICENSE("GPL v2"); diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_cpld.c b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_cpld.c index a6c21966d1cf..e66d95a52290 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_cpld.c +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_cpld.c @@ -37,6 +37,7 @@ struct wistron_cpld_data { int reset[PORT_NUM]; int lpmod[PORT_NUM]; int modsel[PORT_NUM]; + int data_rdy[PORT_NUM]; }; static const struct i2c_device_id wistron_cpld_id[] = { @@ -51,6 +52,7 @@ MODULE_DEVICE_TABLE(i2c, wistron_cpld_id); #define TRANSCEIVER_RESET_ATTR_ID(index) MODULE_RESET_##index #define TRANSCEIVER_LPMOD_ATTR_ID(index) MODULE_LPMOD_##index #define TRANSCEIVER_MODSEL_ATTR_ID(index) MODULE_MODSEL_##index +#define TRANSCEIVER_DATA_RDY_ATTR_ID(index) MODULE_DATA_RDY_##index enum wistron_cpld_sysfs_attributes { /* chip version */ @@ -189,6 +191,38 @@ enum wistron_cpld_sysfs_attributes { TRANSCEIVER_MODSEL_ATTR_ID(30), TRANSCEIVER_MODSEL_ATTR_ID(31), TRANSCEIVER_MODSEL_ATTR_ID(32), + TRANSCEIVER_DATA_RDY_ATTR_ID(1), + TRANSCEIVER_DATA_RDY_ATTR_ID(2), + TRANSCEIVER_DATA_RDY_ATTR_ID(3), + TRANSCEIVER_DATA_RDY_ATTR_ID(4), + TRANSCEIVER_DATA_RDY_ATTR_ID(5), + TRANSCEIVER_DATA_RDY_ATTR_ID(6), + TRANSCEIVER_DATA_RDY_ATTR_ID(7), + TRANSCEIVER_DATA_RDY_ATTR_ID(8), + TRANSCEIVER_DATA_RDY_ATTR_ID(9), + TRANSCEIVER_DATA_RDY_ATTR_ID(10), + TRANSCEIVER_DATA_RDY_ATTR_ID(11), + TRANSCEIVER_DATA_RDY_ATTR_ID(12), + TRANSCEIVER_DATA_RDY_ATTR_ID(13), + TRANSCEIVER_DATA_RDY_ATTR_ID(14), + TRANSCEIVER_DATA_RDY_ATTR_ID(15), + TRANSCEIVER_DATA_RDY_ATTR_ID(16), + TRANSCEIVER_DATA_RDY_ATTR_ID(17), + TRANSCEIVER_DATA_RDY_ATTR_ID(18), + TRANSCEIVER_DATA_RDY_ATTR_ID(19), + TRANSCEIVER_DATA_RDY_ATTR_ID(20), + TRANSCEIVER_DATA_RDY_ATTR_ID(21), + TRANSCEIVER_DATA_RDY_ATTR_ID(22), + TRANSCEIVER_DATA_RDY_ATTR_ID(23), + TRANSCEIVER_DATA_RDY_ATTR_ID(24), + TRANSCEIVER_DATA_RDY_ATTR_ID(25), + TRANSCEIVER_DATA_RDY_ATTR_ID(26), + TRANSCEIVER_DATA_RDY_ATTR_ID(27), + TRANSCEIVER_DATA_RDY_ATTR_ID(28), + TRANSCEIVER_DATA_RDY_ATTR_ID(29), + TRANSCEIVER_DATA_RDY_ATTR_ID(30), + TRANSCEIVER_DATA_RDY_ATTR_ID(31), + TRANSCEIVER_DATA_RDY_ATTR_ID(32), }; /* sysfs attributes for hwmon */ @@ -204,6 +238,8 @@ static ssize_t get_mode_lpmod(struct device *dev, struct device_attribute *da, c static ssize_t set_mode_lpmod(struct device *dev, struct device_attribute *da, const char *buf, size_t count); static ssize_t get_mode_modsel(struct device *dev, struct device_attribute *da, char *buf); static ssize_t set_mode_modsel(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_mode_data_rdy(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_mode_data_rdy(struct device *dev, struct device_attribute *da, const char *buf, size_t count); /* version */ static SENSOR_DEVICE_ATTR(version, S_IWUSR | S_IRUGO, get_version, set_version, CPLD_VERSION); @@ -234,6 +270,10 @@ static SENSOR_DEVICE_ATTR(psu_led, S_IWUSR | S_IRUGO, get_led_status, set_led_s static SENSOR_DEVICE_ATTR(port##index##_modsel, S_IWUSR | S_IRUGO, get_mode_modsel, set_mode_modsel, MODULE_MODSEL_##index) #define DECLARE_TRANSCEIVER_MODSEL_ATTR(index) &sensor_dev_attr_port##index##_modsel.dev_attr.attr +#define DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(index) \ + static SENSOR_DEVICE_ATTR(port##index##_data_rdy, S_IWUSR | S_IRUGO, get_mode_data_rdy, set_mode_data_rdy, MODULE_DATA_RDY_##index) +#define DECLARE_TRANSCEIVER_DATA_RDY_ATTR(index) &sensor_dev_attr_port##index##_data_rdy.dev_attr.attr + /* transceiver attributes */ DECLARE_TRANSCEIVER_PRESENT_SENSOR_DEVICE_ATTR(1); DECLARE_TRANSCEIVER_PRESENT_SENSOR_DEVICE_ATTR(2); @@ -363,6 +403,38 @@ DECLARE_TRANSCEIVER_SENSOR_DEVICE_MODSEL_ATTR(29); DECLARE_TRANSCEIVER_SENSOR_DEVICE_MODSEL_ATTR(30); DECLARE_TRANSCEIVER_SENSOR_DEVICE_MODSEL_ATTR(31); DECLARE_TRANSCEIVER_SENSOR_DEVICE_MODSEL_ATTR(32); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(1); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(2); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(3); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(4); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(5); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(6); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(7); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(8); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(9); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(10); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(11); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(12); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(13); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(14); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(15); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(16); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(17); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(18); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(19); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(20); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(21); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(22); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(23); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(24); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(25); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(26); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(27); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(28); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(29); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(30); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(31); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(32); static struct attribute *wistron_fpga_attributes[] = { &sensor_dev_attr_version.dev_attr.attr, @@ -443,6 +515,22 @@ static struct attribute *wistron_cpld1_attributes[] = { DECLARE_TRANSCEIVER_MODSEL_ATTR(14), DECLARE_TRANSCEIVER_MODSEL_ATTR(15), DECLARE_TRANSCEIVER_MODSEL_ATTR(16), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(1), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(2), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(3), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(4), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(5), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(6), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(7), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(8), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(9), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(10), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(11), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(12), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(13), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(14), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(15), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(16), NULL }; @@ -516,6 +604,22 @@ static struct attribute *wistron_cpld2_attributes[] = { DECLARE_TRANSCEIVER_MODSEL_ATTR(30), DECLARE_TRANSCEIVER_MODSEL_ATTR(31), DECLARE_TRANSCEIVER_MODSEL_ATTR(32), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(17), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(18), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(19), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(20), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(21), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(22), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(23), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(24), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(25), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(26), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(27), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(28), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(29), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(30), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(31), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(32), NULL }; @@ -758,6 +862,43 @@ static ssize_t set_mode_modsel(struct device *dev, struct device_attribute *da, return count; } +static ssize_t get_mode_data_rdy(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 wistron_cpld_data *data = i2c_get_clientdata(client); + int update_idx, data_rdy = 0; + + update_idx = attr->index - MODULE_DATA_RDY_1; + + mutex_lock(&data->lock); + data_rdy = data->data_rdy[update_idx]; + mutex_unlock(&data->lock); + + return sprintf(buf, "%d", data_rdy); +} + +static ssize_t set_mode_data_rdy(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 wistron_cpld_data *data = i2c_get_clientdata(client); + int error, data_rdy; + int update_idx; + + error = kstrtoint(buf, 10, &data_rdy); + if (error) + return error; + + update_idx = attr->index - MODULE_DATA_RDY_1; + + mutex_lock(&data->lock); + data->data_rdy[update_idx] = data_rdy; + mutex_unlock(&data->lock); + + return count; +} + static void wistron_cpld_add_client(struct i2c_client *client) { struct cpld_client_node *node = kzalloc(sizeof(struct cpld_client_node), GFP_KERNEL); diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_oom.c b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_oom.c index 4236373499b2..0ad2e2ca1ae0 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_oom.c +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_oom.c @@ -10,19 +10,56 @@ #include #include -/* QSFP-DD: page0 (low page + high page (128+128 byte)), page 2 (high page (128 byte)), page11 (high page (128 byte))*/ +#define QSFP28_TYPE 0x11 +#define QSFP_DD_TYPE 0x18 + +#define LOWER_PAGE_OFFSET 0x0 +#define PAGE0_OFFSET 0x80 +#define PAGE1_OFFSET 0x0 +#define PAGE2_OFFSET 0x80 +#define PAGE3_OFFSET 0x0 +#define PAGE10_OFFSET 0x80 +#define PAGE11_OFFSET 0x100 + +#define QSFP_DD_CHAN_MON_OFFSET 0x1a +#define QSFP_DD_TEMP_OFFSET 0xe +#define QSFP_DD_VOLT_OFFSET 0x10 +#define QSFP_DD_RX_LOS_OFFSET 0x13 +#define QSFP_DD_TX_FAULT_OFFSET 0x7 +#define QSFP_DD_DISABLE_OFFSET 0x2 + +#define QSFP28_DOM_BULK_DATA_OFFSET 0x16 +#define QSFP28_RX_LOS_OFFSET 0x3 +#define QSFP28_TX_FAULT_OFFSET 0x4 +#define QSFP28_DISABLE_OFFSET 0x56 + + +/* QSFP-DD: page0 (low page + high page (128+128 byte)), page 1/2/3/10/11 (high page (128 byte))*/ #define EEPROM_DATA_SIZE 256 +#define EEPROM3_DATA_SIZE 384 /* Addresses scanned */ static const unsigned short normal_i2c[] = { I2C_CLIENT_END }; #define MAX_PORT_NAME_LEN 20 +#define TEMP_DATA_SIZE 2 +#define VOLT_DATA_SIZE 2 +#define QSFP_DD_CHAN_MON_DATA_SIZE 0x30 +#define QSFP_DOM_BULK_DATA_SIZE 0x24 -enum sysfs_fan_attributes { +enum sysfs_oom_attributes { OOM_LP_MODE, OOM_TEMP, OOM_EEPROM1, OOM_EEPROM2, + OOM_EEPROM3, OOM_PORT_NAME, + OOM_TEMP_E, + OOM_VOLT_E, + OOM_QSFPDD_CHAN_MON, + OOM_QSFP_DOM_BULK, + OOM_CHAN_RX_LOS, + OOM_CHAN_TX_FAULT, + OOM_CHAN_DISABLE, OOM_ATTR_MAX }; @@ -35,7 +72,16 @@ struct wistron_oom_data { int temp; unsigned char eeprom1[EEPROM_DATA_SIZE]; unsigned char eeprom2[EEPROM_DATA_SIZE]; + unsigned char eeprom3[EEPROM3_DATA_SIZE]; char port_name[MAX_PORT_NAME_LEN]; + + unsigned char qsfp_dd_chan_mon[QSFP_DD_CHAN_MON_DATA_SIZE]; + unsigned char qsfp_dom_bulk[QSFP_DOM_BULK_DATA_SIZE]; + unsigned char tempe[TEMP_DATA_SIZE]; + unsigned char volte[VOLT_DATA_SIZE]; + int rx_los; + int tx_fault; + int disable; }; /* sysfs attributes for hwmon */ @@ -45,20 +91,46 @@ static ssize_t get_oom_info1(struct device *dev, struct device_attribute *da, ch static ssize_t set_oom_info1(struct device *dev, struct device_attribute *da, const char *buf, size_t count); static ssize_t get_oom_info2(struct device *dev, struct device_attribute *da, char *buf); static ssize_t set_oom_info2(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_oom_info3(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_oom_info3(struct device *dev, struct device_attribute *da, const char *buf, size_t count); static ssize_t get_port_name(struct device *dev, struct device_attribute *da, char *buf); static ssize_t set_port_name(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_t_v_e(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_t_v_e(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_qsfp_dd_chan_mon(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_qsfp_dd_chan_mon(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_qsfp_dom_bulk(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_qsfp_dom_bulk(struct device *dev, struct device_attribute *da, const char *buf, size_t count); + + static SENSOR_DEVICE_ATTR(lp_mode, S_IWUSR | S_IRUGO, get_oom_value, set_oom_value, OOM_LP_MODE); static SENSOR_DEVICE_ATTR(temp, S_IWUSR | S_IRUGO, get_oom_value, set_oom_value, OOM_TEMP); static SENSOR_DEVICE_ATTR(eeprom1, S_IWUSR | S_IRUGO, get_oom_info1, set_oom_info1, OOM_EEPROM1); static SENSOR_DEVICE_ATTR(eeprom2, S_IWUSR | S_IRUGO, get_oom_info2, set_oom_info2, OOM_EEPROM2); +static SENSOR_DEVICE_ATTR(eeprom3, S_IWUSR | S_IRUGO, get_oom_info3, set_oom_info3, OOM_EEPROM3); static SENSOR_DEVICE_ATTR(port_name, S_IRUGO | S_IWUSR, get_port_name, set_port_name, OOM_PORT_NAME); +static SENSOR_DEVICE_ATTR(qsfp_dd_chan_mon, S_IWUSR | S_IRUGO, get_qsfp_dd_chan_mon, set_qsfp_dd_chan_mon, OOM_QSFPDD_CHAN_MON); +static SENSOR_DEVICE_ATTR(qsfp_dom_bulk, S_IWUSR | S_IRUGO, get_qsfp_dom_bulk, set_qsfp_dom_bulk, OOM_QSFP_DOM_BULK); +static SENSOR_DEVICE_ATTR(tempe, S_IWUSR | S_IRUGO, get_t_v_e, set_t_v_e, OOM_TEMP_E); +static SENSOR_DEVICE_ATTR(volte, S_IWUSR | S_IRUGO, get_t_v_e, set_t_v_e, OOM_VOLT_E); +static SENSOR_DEVICE_ATTR(rx_los, S_IWUSR | S_IRUGO, get_oom_value, set_oom_value, OOM_CHAN_RX_LOS); +static SENSOR_DEVICE_ATTR(tx_fault, S_IWUSR | S_IRUGO, get_oom_value, set_oom_value, OOM_CHAN_TX_FAULT); +static SENSOR_DEVICE_ATTR(disable, S_IWUSR | S_IRUGO, get_oom_value, set_oom_value, OOM_CHAN_DISABLE); static struct attribute *wistron_oom_attributes[] = { &sensor_dev_attr_lp_mode.dev_attr.attr, &sensor_dev_attr_temp.dev_attr.attr, &sensor_dev_attr_eeprom1.dev_attr.attr, &sensor_dev_attr_eeprom2.dev_attr.attr, + &sensor_dev_attr_eeprom3.dev_attr.attr, &sensor_dev_attr_port_name.dev_attr.attr, + &sensor_dev_attr_qsfp_dd_chan_mon.dev_attr.attr, + &sensor_dev_attr_qsfp_dom_bulk.dev_attr.attr, + &sensor_dev_attr_tempe.dev_attr.attr, + &sensor_dev_attr_volte.dev_attr.attr, + &sensor_dev_attr_rx_los.dev_attr.attr, + &sensor_dev_attr_tx_fault.dev_attr.attr, + &sensor_dev_attr_disable.dev_attr.attr, NULL }; @@ -70,10 +142,27 @@ static ssize_t get_oom_value(struct device *dev, struct device_attribute *da, ch int value = 0; mutex_lock(&data->lock); - if (attr->index == OOM_LP_MODE) - value = data->lp_mode; - else - value = data->temp; + switch (attr->index) { + case OOM_LP_MODE: + value = data->lp_mode; + break; + case OOM_TEMP: + value = data->temp; + break; + case OOM_CHAN_RX_LOS: + value = data->rx_los; + break; + case OOM_CHAN_TX_FAULT: + value = data->tx_fault; + break; + case OOM_CHAN_DISABLE: + value = data->disable; + break; + default: + value = data->temp; + break; + + } mutex_unlock(&data->lock); return sprintf(buf, "%d", value); @@ -93,10 +182,38 @@ static ssize_t set_oom_value(struct device *dev, struct device_attribute *da, co } mutex_lock(&data->lock); - if (attr->index == OOM_LP_MODE) - data->lp_mode = value; - else - data->temp = value; + switch (attr->index) { + case OOM_LP_MODE: + data->lp_mode = value; + break; + case OOM_TEMP: + data->temp = value; + break; + case OOM_CHAN_RX_LOS: + data->rx_los = value; + if (data->eeprom1[0] == QSFP_DD_TYPE) + data->eeprom3[PAGE11_OFFSET + QSFP_DD_RX_LOS_OFFSET] = value; + if (data->eeprom1[0] == QSFP28_TYPE) + data->eeprom1[LOWER_PAGE_OFFSET + QSFP28_RX_LOS_OFFSET] = value; + break; + case OOM_CHAN_TX_FAULT: + data->tx_fault = value; + if (data->eeprom1[0] == QSFP_DD_TYPE) + data->eeprom3[PAGE11_OFFSET + QSFP_DD_TX_FAULT_OFFSET] = value; + if (data->eeprom1[0] == QSFP28_TYPE) + data->eeprom1[LOWER_PAGE_OFFSET + QSFP28_TX_FAULT_OFFSET] = value; + break; + case OOM_CHAN_DISABLE: + data->disable = value; + if (data->eeprom1[0] == QSFP_DD_TYPE) + data->eeprom3[PAGE10_OFFSET + QSFP_DD_DISABLE_OFFSET] = value; + if (data->eeprom1[0] == QSFP28_TYPE) + data->eeprom1[LOWER_PAGE_OFFSET + QSFP28_DISABLE_OFFSET] = value; + break; + default: + data->temp = value; + break; + } mutex_unlock(&data->lock); return count; @@ -123,8 +240,8 @@ static ssize_t set_oom_info1(struct device *dev, struct device_attribute *da, co unsigned int val; mutex_lock(&data->lock); - memset(data->eeprom1, 0xFF, EEPROM_DATA_SIZE); - memset(str, 0x0, 3); + memzero_explicit(data->eeprom1, EEPROM_DATA_SIZE); + memzero_explicit(str, sizeof(str)); if (strlen(buf) >= EEPROM_DATA_SIZE) { for (i=0; i < strlen(buf) ; i++) { @@ -170,8 +287,8 @@ static ssize_t set_oom_info2(struct device *dev, struct device_attribute *da, co unsigned int val; mutex_lock(&data->lock); - memset(data->eeprom2, 0xFF, EEPROM_DATA_SIZE); - memset(str, 0x0, 3); + memzero_explicit(data->eeprom2, EEPROM_DATA_SIZE); + memzero_explicit(str, sizeof(str)); if (strlen(buf) >= EEPROM_DATA_SIZE) { for (i = 0; i < strlen(buf) ; i++) { @@ -195,6 +312,52 @@ static ssize_t set_oom_info2(struct device *dev, struct device_attribute *da, co return size; } +static ssize_t get_oom_info3(struct device *dev, struct device_attribute *da, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + + mutex_lock(&data->lock); + memcpy(buf, data->eeprom3, EEPROM3_DATA_SIZE); + mutex_unlock(&data->lock); + + return EEPROM3_DATA_SIZE; +} + +static ssize_t set_oom_info3(struct device *dev, struct device_attribute *da, const char *buf, size_t size) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + int i = 0, j = 0, k = 0; + unsigned char str[3]; + unsigned int val; + + mutex_lock(&data->lock); + memzero_explicit(data->eeprom3, EEPROM3_DATA_SIZE); + memzero_explicit(str, sizeof(str)); + + if (strlen(buf) >= EEPROM3_DATA_SIZE) { + for (i = 0; i < strlen(buf) ; i++) { + for (j = 0; j < 2; j++) { + str[j] = buf[i + j]; + } + + sscanf(str, "%x", &val); + + i = j + i - 1; + if (k >= EEPROM3_DATA_SIZE) + break; + + data->eeprom3[k]=(unsigned char)val; + k++; + } + } + + mutex_unlock(&data->lock); + + return size; +} + static ssize_t get_port_name(struct device *dev, struct device_attribute *da, char *buf) { struct i2c_client *client = to_i2c_client(dev); @@ -224,6 +387,191 @@ static ssize_t set_port_name(struct device *dev, struct device_attribute *da, co return count; } +static ssize_t get_t_v_e(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 wistron_oom_data *data = i2c_get_clientdata(client); + + mutex_lock(&data->lock); + if (attr->index == OOM_TEMP_E) + memcpy(buf, data->tempe, TEMP_DATA_SIZE); + else + memcpy(buf, data->volte, VOLT_DATA_SIZE); + mutex_unlock(&data->lock); + + return (attr->index == OOM_TEMP_E) ? TEMP_DATA_SIZE : VOLT_DATA_SIZE; +} + +static ssize_t set_t_v_e(struct device *dev, struct device_attribute *da, const char *buf, size_t size) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + int i = 0, j = 0, k = 0; + unsigned char str[3]; + unsigned int val; + + mutex_lock(&data->lock); + if (attr->index == OOM_TEMP_E) { + memzero_explicit(data->tempe, TEMP_DATA_SIZE); + memzero_explicit(str, sizeof(str)); + + if (strlen(buf) >= TEMP_DATA_SIZE) { + for (i = 0; i < strlen(buf) ; i++) { + for (j = 0; j < 2; j++) { + str[j] = buf[i + j]; + } + + sscanf(str, "%x", &val); + + i = j + i - 1; + if (k >= TEMP_DATA_SIZE) + break; + + data->tempe[k]=(unsigned char)val; + + if (k == 0) + data->temp = data->tempe[k]; + k++; + } + } + + if (data->eeprom1[0] == QSFP_DD_TYPE) + memcpy(&data->eeprom1[LOWER_PAGE_OFFSET + QSFP_DD_TEMP_OFFSET], data->tempe, TEMP_DATA_SIZE); + } + else { + memzero_explicit(data->volte, VOLT_DATA_SIZE); + memzero_explicit(str, sizeof(str)); + + if (strlen(buf) >= VOLT_DATA_SIZE) { + for (i = 0; i < strlen(buf) ; i++) { + for (j = 0; j < 2; j++) { + str[j] = buf[i + j]; + } + + sscanf(str, "%x", &val); + + i = j + i - 1; + if (k >= VOLT_DATA_SIZE) + break; + + data->volte[k]=(unsigned char)val; + k++; + } + } + + if (data->eeprom1[0] == QSFP_DD_TYPE) + memcpy(&data->eeprom1[LOWER_PAGE_OFFSET + QSFP_DD_VOLT_OFFSET], data->volte, VOLT_DATA_SIZE); + } + + mutex_unlock(&data->lock); + + return size; +} + +static ssize_t get_qsfp_dd_chan_mon(struct device *dev, struct device_attribute *da, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + + mutex_lock(&data->lock); + memcpy(buf, data->qsfp_dd_chan_mon, QSFP_DD_CHAN_MON_DATA_SIZE); + mutex_unlock(&data->lock); + + return QSFP_DD_CHAN_MON_DATA_SIZE; +} + +static ssize_t set_qsfp_dd_chan_mon(struct device *dev, struct device_attribute *da, const char *buf, size_t size) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + int i = 0, j = 0, k = 0; + unsigned char str[3]; + unsigned int val; + + mutex_lock(&data->lock); + memzero_explicit(data->qsfp_dd_chan_mon, QSFP_DD_CHAN_MON_DATA_SIZE); + memzero_explicit(str, sizeof(str)); + + if (strlen(buf) >= QSFP_DD_CHAN_MON_DATA_SIZE) { + for (i=0; i < strlen(buf) ; i++) { + for (j = 0; j < 2; j++) { + str[j] = buf[i + j]; + } + + sscanf(str, "%x", &val); + + i = j + i - 1; + + if (k >= QSFP_DD_CHAN_MON_DATA_SIZE) + break; + + data->qsfp_dd_chan_mon[k] = (unsigned char)val; + k++; + } + } + + if (data->eeprom1[0] == QSFP_DD_TYPE) + memcpy(&data->eeprom3[PAGE11_OFFSET + QSFP_DD_CHAN_MON_OFFSET], data->qsfp_dd_chan_mon, QSFP_DD_CHAN_MON_DATA_SIZE); + + mutex_unlock(&data->lock); + + return size; +} + +static ssize_t get_qsfp_dom_bulk(struct device *dev, struct device_attribute *da, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + + mutex_lock(&data->lock); + memcpy(buf, data->qsfp_dom_bulk, QSFP_DOM_BULK_DATA_SIZE); + mutex_unlock(&data->lock); + + return QSFP_DOM_BULK_DATA_SIZE; +} + +static ssize_t set_qsfp_dom_bulk(struct device *dev, struct device_attribute *da, const char *buf, size_t size) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + int i = 0, j = 0, k = 0; + unsigned char str[3]; + unsigned int val; + + mutex_lock(&data->lock); + memzero_explicit(data->qsfp_dom_bulk, QSFP_DOM_BULK_DATA_SIZE); + memzero_explicit(str, sizeof(str)); + + if (strlen(buf) >= QSFP_DOM_BULK_DATA_SIZE) { + for (i=0; i < strlen(buf) ; i++) { + for (j = 0; j < 2; j++) { + str[j] = buf[i + j]; + } + + sscanf(str, "%x", &val); + + i = j + i - 1; + + if (k >= QSFP_DOM_BULK_DATA_SIZE) + break; + + data->qsfp_dom_bulk[k] = (unsigned char)val; + k++; + } + } + + if (data->eeprom1[0] == QSFP28_TYPE) { + memcpy(&data->eeprom1[LOWER_PAGE_OFFSET + QSFP28_DOM_BULK_DATA_OFFSET], data->qsfp_dom_bulk, QSFP_DOM_BULK_DATA_SIZE); + data->temp = data->qsfp_dom_bulk[0]; + } + + mutex_unlock(&data->lock); + + return size; +} + static const struct attribute_group wistron_oom_group = { .attrs = wistron_oom_attributes, }; diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_psu.c b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_psu.c index 1ea7764dd430..fa48e9ce5d41 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_psu.c +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_psu.c @@ -21,6 +21,7 @@ static const unsigned short normal_i2c[] = { I2C_CLIENT_END }; #define MFR_VENDOR_NAME_LENGTH 16 #define MFR_MODEL_NAME_LENGTH 16 #define MFR_SERIAL_NUM_LENGTH 32 +#define MFR_REV_LENGTH 10 /* Each client has this additional data */ struct wistron_psu_data { @@ -33,13 +34,15 @@ struct wistron_psu_data { int v_out; int i_in; int i_out; - int p_in; - int p_out; + long p_in; + long p_out; int temp_input; + int pwm; int fault; u8 mfr_id[MFR_VENDOR_NAME_LENGTH]; u8 mfr_model[MFR_MODEL_NAME_LENGTH]; u8 mfr_serial[MFR_SERIAL_NUM_LENGTH]; + u8 mfr_rev[MFR_REV_LENGTH]; }; enum psu_index { @@ -57,10 +60,12 @@ enum wistron_psu_sysfs_attributes { PSU_P_IN, PSU_P_OUT, PSU_TEMP1_INPUT, + PSU_PWM, PSU_FAULT, PSU_MFR_ID, PSU_MFR_MODEL, PSU_MFR_SERIAL, + PSU_MFR_REV, }; /* sysfs attributes for hwmon */ @@ -73,10 +78,12 @@ static SENSOR_DEVICE_ATTR(curr2_input, S_IWUSR | S_IRUGO, get_value, set_valu static SENSOR_DEVICE_ATTR(power1_input, S_IWUSR | S_IRUGO, get_value, set_value, PSU_P_IN); static SENSOR_DEVICE_ATTR(power2_input, S_IWUSR | S_IRUGO, get_value, set_value, PSU_P_OUT); static SENSOR_DEVICE_ATTR(temp1_input, S_IWUSR | S_IRUGO, get_value, set_value, PSU_TEMP1_INPUT); +static SENSOR_DEVICE_ATTR(pwm, S_IWUSR | S_IRUGO, get_value, set_value, PSU_PWM); static SENSOR_DEVICE_ATTR(fault, S_IWUSR | S_IRUGO, get_value, set_value, PSU_FAULT); static SENSOR_DEVICE_ATTR(vendor, S_IWUSR | S_IRUGO, get_value, set_value, PSU_MFR_ID); static SENSOR_DEVICE_ATTR(model, S_IWUSR | S_IRUGO, get_value, set_value, PSU_MFR_MODEL); static SENSOR_DEVICE_ATTR(sn, S_IWUSR | S_IRUGO, get_value, set_value, PSU_MFR_SERIAL); +static SENSOR_DEVICE_ATTR(rev, S_IWUSR | S_IRUGO, get_value, set_value, PSU_MFR_REV); static struct attribute *wistron_psu_attributes[] = { @@ -89,10 +96,12 @@ static struct attribute *wistron_psu_attributes[] = { &sensor_dev_attr_power1_input.dev_attr.attr, &sensor_dev_attr_power2_input.dev_attr.attr, &sensor_dev_attr_temp1_input.dev_attr.attr, + &sensor_dev_attr_pwm.dev_attr.attr, &sensor_dev_attr_fault.dev_attr.attr, &sensor_dev_attr_vendor.dev_attr.attr, &sensor_dev_attr_model.dev_attr.attr, &sensor_dev_attr_sn.dev_attr.attr, + &sensor_dev_attr_rev.dev_attr.attr, NULL }; @@ -162,14 +171,17 @@ static ssize_t get_value(struct device *dev, struct device_attribute *da, char * ret_count = sprintf(buf, "%d", data->i_out); break; case PSU_P_IN: - ret_count = sprintf(buf, "%d", data->p_in); + ret_count = sprintf(buf, "%ld", data->p_in); break; case PSU_P_OUT: - ret_count = sprintf(buf, "%d", data->p_out); + ret_count = sprintf(buf, "%ld", data->p_out); break; case PSU_TEMP1_INPUT: ret_count = sprintf(buf, "%d", data->temp_input); break; + case PSU_PWM: + ret_count = sprintf(buf, "%d", data->pwm); + break; case PSU_FAULT: ret_count = sprintf(buf, "%d", data->fault); break; @@ -182,6 +194,9 @@ static ssize_t get_value(struct device *dev, struct device_attribute *da, char * case PSU_MFR_SERIAL: ret_count = sprintf(buf, "%s", data->mfr_serial); break; + case PSU_MFR_REV: + ret_count = sprintf(buf, "%s", data->mfr_rev); + break; default: break; } @@ -222,12 +237,12 @@ static ssize_t set_value(struct device *dev, struct device_attribute *da, const goto exit_err; break; case PSU_P_IN: - error = kstrtoint(buf, 10, &data->p_in); + error = kstrtol(buf, 10, &data->p_in); if (error) goto exit_err; break; case PSU_P_OUT: - error = kstrtoint(buf, 10, &data->p_out); + error = kstrtol(buf, 10, &data->p_out); if (error) goto exit_err; break; @@ -236,23 +251,32 @@ static ssize_t set_value(struct device *dev, struct device_attribute *da, const if (error) goto exit_err; break; + case PSU_PWM: + error = kstrtoint(buf, 10, &data->pwm); + if (error) + goto exit_err; + break; case PSU_FAULT: error = kstrtoint(buf, 10, &data->fault); if (error) goto exit_err; break; case PSU_MFR_ID: - memset(&data->mfr_id, 0x0, sizeof(data->mfr_id)); + memzero_explicit(&data->mfr_id, sizeof(data->mfr_id)); strncpy(data->mfr_id, buf, sizeof(data->mfr_id) - 1); break; case PSU_MFR_MODEL: - memset(&data->mfr_model, 0x0, sizeof(data->mfr_model)); + memzero_explicit(&data->mfr_model, sizeof(data->mfr_model)); strncpy(data->mfr_model, buf, sizeof(data->mfr_model) - 1); break; case PSU_MFR_SERIAL: - memset(&data->mfr_serial, 0x0, sizeof(data->mfr_serial)); + memzero_explicit(&data->mfr_serial, sizeof(data->mfr_serial)); strncpy(data->mfr_serial, buf, sizeof(data->mfr_serial) - 1); break; + case PSU_MFR_REV: + memzero_explicit(&data->mfr_rev, sizeof(data->mfr_rev)); + strncpy(data->mfr_rev, buf, sizeof(data->mfr_rev) - 1); + break; default: break; } diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_syseeprom.c b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_syseeprom.c index a281df719677..578aa3c1d5ef 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_syseeprom.c +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_syseeprom.c @@ -43,8 +43,8 @@ static ssize_t set_syseeprom(struct device *dev, struct device_attribute *da, co unsigned int val; mutex_lock(&data->lock); - memset(data->eeprom, 0xFF, EEPROM_DATA_SIZE); - memset(str, 0x0, 3); + memzero_explicit(data->eeprom, EEPROM_DATA_SIZE); + memzero_explicit(str, sizeof(str)); if (strlen(buf) >= EEPROM_DATA_SIZE) { for (i = 0; i < strlen(buf) ; i++) { diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-firmware_ver.service b/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-firmware_ver.service new file mode 100644 index 000000000000..42a4d4e50f61 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-firmware_ver.service @@ -0,0 +1,12 @@ +[Unit] +Description=Wistron 6512-32R Platform firmware version service +After=platform-modules-6512-32r.service +DefaultDependencies=no + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/platform_firmware_version +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-platform.service b/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-platform.service index 1842d036cda4..ab8effcc4096 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-platform.service +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-platform.service @@ -1,7 +1,6 @@ [Unit] Description=Wistron 6512-32R Platform Monitoring service -Before=pmon.service -After=sysinit.target +After=platform-modules-6512-32r.service DefaultDependencies=no [Service] diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/setup.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/setup.py index 3c2888412e90..3b92de8c129c 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/setup.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/setup.py @@ -1,7 +1,5 @@ from setuptools import setup -DEVICE_NAME = 'wistron' -HW_SKU = 'x86_64-wistron_6512_32r-r0' setup( name='sonic-platform', @@ -16,9 +14,8 @@ packages=[ 'sonic_platform', ], - package_dir={ - 'sonic_platform': '../../../../device/{}/{}/sonic_platform'.format(DEVICE_NAME, HW_SKU)}, - classifiers=[ + package_dir={'sonic_platform': 'sonic_platform'}, + classifiers=[ 'Development Status :: 3 - Alpha', 'Environment :: Plugins', 'Intended Audience :: Developers', diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/__init__.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/__init__.py old mode 100644 new mode 100755 similarity index 70% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/__init__.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/__init__.py index 29dfc92139ef..cc568450a400 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/__init__.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/__init__.py @@ -1,2 +1,2 @@ -__all__ = ['chassis', 'eeprom', 'platform', 'psu', 'sfp', 'thermal', 'fan', 'watchdog'] +__all__ = ['chassis', 'eeprom', 'platform', 'psu', 'sfp', 'thermal', 'fan', 'component', 'watchdog'] from . import platform diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/chassis.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/chassis.py old mode 100644 new mode 100755 similarity index 55% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/chassis.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/chassis.py index 232ca0ca5fe3..d27b26b98f62 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/chassis.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/chassis.py @@ -8,7 +8,6 @@ ############################################################################# try: import sys - import os import time import subprocess from sonic_platform_base.chassis_base import ChassisBase @@ -16,16 +15,19 @@ raise ImportError(str(e) + "- required module not found") NUM_FAN = 14 +NUM_FANTRAY = 7 NUM_PSU = 2 NUM_THERMAL = 8 NUM_SFP = 32 +NUM_COMPONENT = 6 HOST_REBOOT_CAUSE_PATH = "/host/reboot-cause/" PMON_REBOOT_CAUSE_PATH = "/usr/share/sonic/platform/api_files/reboot-cause/" REBOOT_CAUSE_FILE = "reboot-cause.txt" PREV_REBOOT_CAUSE_FILE = "previous-reboot-cause.txt" -HOST_CHK_CMD = "docker > /dev/null 2>&1" -GET_HWSKU_CMD = "sonic-cfggen -d -v DEVICE_METADATA.localhost.hwsku" -GET_PLATFORM_CMD = "sonic-cfggen -d -v DEVICE_METADATA.localhost.platform" +HOST_CHK_CMD = ["docker"] +GET_HWSKU_CMD = ["sonic-cfggen", "-d", "-v", "DEVICE_METADATA.localhost.hwsku"] +GET_PLATFORM_CMD = ["sonic-cfggen", "-d", "-v", "DEVICE_METADATA.localhost.platform"] +EEPROM_BOOT_TIME_INIT_DONE='/tmp/eeprom_init_done' class Chassis(ChassisBase): """Platform-specific Chassis class""" @@ -43,6 +45,7 @@ def __init__(self): self.__initialize_fan() self.__initialize_psu() self.__initialize_thermals() + self.__initialize_components() self.__initialize_sfp() self.__initialize_eeprom() @@ -54,10 +57,11 @@ def __initialize_sfp(self): def __initialize_fan(self): - from sonic_platform.fan import Fan - for fan_index in range(0, NUM_FAN): - fan = Fan(fan_index) - self._fan_list.append(fan) + from sonic_platform.fan_drawer import FanDrawer + for fan_index in range(0, NUM_FANTRAY): + fandrawer = FanDrawer(fan_index) + self._fan_drawer_list.append(fandrawer) + self._fan_list.extend(fandrawer._fan_list) def __initialize_psu(self): from sonic_platform.psu import Psu @@ -75,8 +79,14 @@ def __initialize_eeprom(self): from sonic_platform.eeprom import Tlv self._eeprom = Tlv() + def __initialize_components(self): + from sonic_platform.component import Component + for index in range(0, NUM_COMPONENT): + component = Component(index) + self._component_list.append(component) + def __is_host(self): - return os.system(HOST_CHK_CMD) == 0 + return subprocess.call(HOST_CHK_CMD) == 0 def __read_txt_file(self, file_path): try: @@ -96,7 +106,7 @@ def get_base_mac(self): """ return self._eeprom.get_mac() - def get_serial_number(self): + def get_serial(self): """ Retrieves the hardware serial number for the chassis Returns: @@ -141,15 +151,28 @@ def get_reboot_cause(self): return (reboot_cause, description) def _get_sku_name(self): - p = subprocess.Popen(GET_HWSKU_CMD, shell=True, stdout=subprocess.PIPE) + p = subprocess.Popen(GET_HWSKU_CMD, stdout=subprocess.PIPE) out, err = p.communicate() return out.decode().rstrip('\n') def _get_platform_name(self): - p = subprocess.Popen(GET_PLATFORM_CMD, shell=True, stdout=subprocess.PIPE) + p = subprocess.Popen(GET_PLATFORM_CMD, stdout=subprocess.PIPE) out, err = p.communicate() return out.decode().rstrip('\n') + def get_watchdog(self): + """ + Retreives hardware watchdog device on this chassis + Returns: + An object derived from WatchdogBase representing the hardware + watchdog device + """ + if self._watchdog is None: + from sonic_platform.watchdog import Watchdog + self._watchdog = Watchdog() + + return self._watchdog + def get_name(self): """ Retrieves the name of the device @@ -171,10 +194,22 @@ def _get_sfp_presence(self): port_pres = {} for port in range(0, NUM_SFP): sfp = self._sfp_list[port] - port_pres[port] = sfp.get_presence() + port_pres[port] = 1 if sfp.get_presence() else 0 return port_pres + def _read_sfp_eeprom_to_buffer(self, port): + sfp = self._sfp_list[port] + #if os.path.exists(EEPROM_BOOT_TIME_INIT_DONE): + # return sfp.read_eeprom_buffer() + c = sfp._read_eeprom_specific_bytes(0,1) + return c != ['ff'] and c != ['00'] + + def _clear_sfp_eeprom_buffer(self, port): + sfp = self._sfp_list[port] + return sfp.clear_eeprom_buffer() + + def get_change_event(self, timeout=0): port_dict = {} ret_dict = {'sfp': port_dict} @@ -201,12 +236,19 @@ def get_change_event(self, timeout=0): if cur_presence[port] != self._transceiver_presence[port]: change_event = True if cur_presence[port] == 1: - port_dict[port] = '1' + if self._read_sfp_eeprom_to_buffer(port): + port_dict[port] = '1' + self._transceiver_presence[port] = 1 + else: + cur_presence[port] = 0 + self._transceiver_presence[port] = 0 else: port_dict[port] = '0' + self._clear_sfp_eeprom_buffer(port) + self._transceiver_presence[port] = 0 - self._transceiver_presence = cur_presence - if change_event == True: + #self._transceiver_presence = cur_presence + if change_event is True: break if not forever: @@ -220,3 +262,96 @@ def get_change_event(self, timeout=0): sfp.reinit() return True, ret_dict + + def is_modular_chassis(self): + """ + Retrieves whether the sonic instance is part of modular chassis + Returns: + A bool value, should return False by default or for fixed-platforms. + Should return True for supervisor-cards, line-cards etc running as part + of modular-chassis. + """ + return False + + def initizalize_system_led(self): + self.system_led = "" + return True + + def set_status_led(self, color): + """ + Sets the state of the system LED + + Args: + color: A string representing the color with which to set the + system LED + + Returns: + bool: True if system LED state is set successfully, False if not + """ + self.system_led = color + return True + + def get_status_led(self): + """ + Gets the state of the system LED + + Returns: + A string, one of the valid LED color strings which could be vendor + specified. + """ + return self.system_led + + + def get_presence(self): + """ + Retrieves the presence of the Chassis + Returns: + bool: True if Chassis is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return self._eeprom.get_model() + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. If the agent cannot determine the parent-relative position + for some reason, or if the associated value of entPhysicalContainedIn is '0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + + def get_revision(self): + """ + Retrieves the hardware revision of the device + + Returns: + string: Revision value of device + """ + + return '0' + + def get_thermal_manager(self): + raise NotImplementedError diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/component.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/component.py new file mode 100755 index 000000000000..40a0ba551be2 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/component.py @@ -0,0 +1,269 @@ +#!/usr/bin/env python + +import subprocess +from shlex import split +from collections import namedtuple +from functools import reduce + + +try: + from sonic_platform_base.component_base import ComponentBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +CPLD_ADDR_MAPPING = { + "CPLD1": "0-0006", + "CPLD2": "0-0007", +} + +FPGA_ADDR_MAPPING = { + "MB_FPGA": "0-0030", +} + +proc_output = namedtuple('proc_output', 'stdout stderr') +GET_CPU_FPGA_VER_CMD = ["i2cget", "-f", "-y", "0", "0x10", "0x0"] +#GET_BMC_VER_CMD= "ipmitool mc info | grep 'Firmware Revision' | awk '{printf $4}'" +SYSFS_PATH = "/sys/bus/i2c/devices/" +BIOS_VERSION_PATH = "/sys/class/dmi/id/bios_version" +COMPONENT_LIST= [ + ("BIOS", "Basic Input/Output System"), + ("CPLD1", "CPLD 1"), + ("CPLD2", "CPLD 2"), + ("MB_FPGA", "MB FPGA"), + ("CPU_FPGA", "CPU FPGA"), + ("BMC", "baseboard management controller") +] + +class Component(ComponentBase): + """Platform-specific Component class""" + + DEVICE_TYPE = "component" + + def __init__(self, component_index=0): + ComponentBase.__init__(self) + self.index = component_index + self.name = self.get_name() + + def pipeline(self, starter_command, *commands): + if not commands: + try: + starter_command, *commands = starter_command.split('|') + except AttributeError: + pass + starter_command = self._parse(starter_command) + starter = subprocess.Popen(starter_command, stdout=subprocess.PIPE) + last_proc = reduce(self._create_pipe, map(self._parse, commands), starter) + return proc_output(*last_proc.communicate()) + + def _create_pipe(self, previous, command): + proc = subprocess.Popen(command, stdin=previous.stdout, stdout=subprocess.PIPE) + previous.stdout.close() + return proc + + def _parse(self, cmd): + try: + return split(cmd) + except Exception: + return cmd + + def __read_txt_file(self, file_path): + try: + with open(file_path, 'r') as fd: + data = fd.read() + return data.strip() + except IOError: + pass + return "" + + def __get_bios_version(self): + # Retrieves the BIOS firmware version + try: + with open(BIOS_VERSION_PATH, 'r') as fd: + bios_version = fd.read() + return bios_version.strip() + except Exception as e: + return None + + def __get_cpld_version(self): + # Retrieves the CPLD firmware version + cpld_version = dict() + for cpld_name in CPLD_ADDR_MAPPING: + try: + cpld_path = "{}{}{}".format(SYSFS_PATH, CPLD_ADDR_MAPPING[cpld_name], '/version') + cpld_version_raw= int(self.__read_txt_file(cpld_path), 10) + cpld_version[cpld_name] = "{} {}".format("MP" if (cpld_version_raw & 0x10) else "Proto", cpld_version_raw & 0xf) + except Exception as e: + print('Get exception when read cpld') + cpld_version[cpld_name] = 'None' + + return cpld_version + + def __get_cpu_fpga_ver(self): + try: + p = subprocess.Popen(GET_CPU_FPGA_VER_CMD, stdout=subprocess.PIPE) + out, err = p.communicate() + return out.decode().rstrip('\n') + except Exception as e: + print('Get exception when read cpu fpga') + return 'None' + + def __get_bmc_version(self): + try: + #GET_BMC_VER_CMD + out, err = self.pipeline("ipmitool mc info", "grep 'Firmware Revision'", "awk '{printf $4}'") + return out.decode().rstrip('\n') + except Exception as e: + print('Get exception when read bmc') + return 'None' + + def __get_fpga_version(self): + # Retrieves the fpga firmware version + fpga_version = dict() + try: + fpga_path = "{}{}{}".format(SYSFS_PATH, FPGA_ADDR_MAPPING['MB_FPGA'], '/version') + fpga_version_raw= int(self.__read_txt_file(fpga_path), 10) + fpga_version["MB_FPGA"] = "{} {}.{}".format("Formal" if (fpga_version_raw & 0x80) else "Test", ((fpga_version_raw & 0x70) >> 4), fpga_version_raw & 0xf) + except Exception as e: + print('Get exception when read fpga') + fpga_version["MB_FPGA"] = 'None' + + fpga_version_raw= int(self.__get_cpu_fpga_ver(), 16) + fpga_version["CPU_FPGA"] = "{} {}.{}".format("Formal" if (fpga_version_raw & 0x80) else "Test", ((fpga_version_raw & 0x70) >> 4), fpga_version_raw & 0xf) + + return fpga_version + + def get_name(self): + """ + Retrieves the name of the component + Returns: + A string containing the name of the component + """ + return COMPONENT_LIST[self.index][0] + + def get_description(self): + """ + Retrieves the description of the component + Returns: + A string containing the description of the component + """ + return COMPONENT_LIST[self.index][1] + + + def get_firmware_version(self): + """ + Retrieves the firmware version of module + Returns: + string: The firmware versions of the module + """ + fw_version = None + + if self.name == "BIOS": + fw_version = self.__get_bios_version() + elif "CPLD" in self.name: + cpld_version = self.__get_cpld_version() + fw_version = cpld_version.get(self.name) + elif "FPGA" in self.name: + fpga_version = self.__get_fpga_version() + fw_version = fpga_version.get(self.name) + elif "BMC" in self.name: + fw_version = self.__get_bmc_version() + + return fw_version + + def install_firmware(self, image_path): + """ + Install firmware to module + Args: + image_path: A string, path to firmware image + Returns: + A boolean, True if install successfully, False if not + """ + raise NotImplementedError + + def get_presence(self): + """ + Retrieves the presence of the FAN + Returns: + bool: True if FAN is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return 'N/A' + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return 'N/A' + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + + def get_available_firmware_version(self, image_path): + """ + Retrieves the available firmware version of the component + Note: the firmware version will be read from image + Args: + image_path: A string, path to firmware image + Returns: + A string containing the available firmware version of the component + """ + return "N/A" + + def get_firmware_update_notification(self, image_path): + """ + Retrieves a notification on what should be done in order to complete + the component firmware update + Args: + image_path: A string, path to firmware image + Returns: + A string containing the component firmware update notification if required. + By default 'None' value will be used, which indicates that no actions are required + """ + return "None" + + def update_firmware(self, image_path): + """ + Updates firmware of the component + This API performs firmware update: it assumes firmware installation and loading in a single call. + In case platform component requires some extra steps (apart from calling Low Level Utility) + to load the installed firmware (e.g, reboot, power cycle, etc.) - this will be done automatically by API + Args: + image_path: A string, path to firmware image + Raises: + RuntimeError: update failed + """ + return False diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/eeprom.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/eeprom.py old mode 100644 new mode 100755 similarity index 81% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/eeprom.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/eeprom.py index 9d01b1f866b8..7db38ead60a5 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/eeprom.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/eeprom.py @@ -41,12 +41,19 @@ def __parse_output(self, decode_output): for line in lines: try: match = re.search( - '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', line) - if match is not None: + '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+[\s]+[\S]+)', line) + if match is not None and match.group(1) == '0x25': idx = match.group(1) value = match.group(3).rstrip('\0') + _eeprom_info_dict[idx] = value + else: + match = re.search( + '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', line) + if match is not None: + idx = match.group(1) + value = match.group(3).rstrip('\0') + _eeprom_info_dict[idx] = value - _eeprom_info_dict[idx] = value except BaseException: pass return _eeprom_info_dict @@ -70,7 +77,7 @@ def _load_eeprom(self): if not os.path.exists(CACHE_ROOT): try: os.makedirs(CACHE_ROOT) - except OSError: + except Exception: pass # @@ -79,7 +86,7 @@ def _load_eeprom(self): # try: self.set_cache_name(os.path.join(CACHE_ROOT, CACHE_FILE)) - except OSError: + except Exception: pass e = self.read_eeprom() @@ -90,6 +97,7 @@ def _load_eeprom(self): self.update_cache(e) except Exception: pass + self.decode_eeprom(e) decode_output = sys.stdout.getvalue() sys.stdout = original_stdout @@ -108,3 +116,6 @@ def get_serial(self): def get_mac(self): return self._eeprom.get('0x24', "Undefined.") + + def get_model(self): + return self._eeprom.get('0x21', "Undefined.") diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan.py new file mode 100755 index 000000000000..e6e2ff599524 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan.py @@ -0,0 +1,263 @@ +############################################################################# +# +# Module contains an implementation of SONiC Platform Base API and +# provides the fan status which are available in the platform +# +############################################################################# + + +import os.path + +try: + from sonic_platform_base.fan_base import FanBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +SPEED_TOLERANCE = 15 +SYSFS_PATH = "/sys/bus/i2c/devices/0-0044" +SYSFS_PSU_DIR = ["/sys/bus/i2c/devices/0-005a", + "/sys/bus/i2c/devices/0-0059"] + +FAN_NAME_LIST = ["FAN-1F", "FAN-1R", "FAN-2F", "FAN-2R", + "FAN-3F", "FAN-3R", "FAN-4F", "FAN-4R", + "FAN-5F", "FAN-5R", "FAN-6F", "FAN-6R", + "FAN-7F", "FAN-7R"] + +class Fan(FanBase): + """Platform-specific Fan class""" + + def __init__(self, fan_tray_index, fan_index=0, is_psu_fan=False, psu_index=0): + self.fan_index = fan_index + self.fan_tray_index = fan_tray_index + self.is_psu_fan = is_psu_fan + + if self.is_psu_fan: + self.psu_index = psu_index + + FanBase.__init__(self) + + def __search_hwmon_dir_name(self, directory): + try: + dirs = os.listdir(directory) + for file in dirs: + if file.startswith("hwmon"): + return file + except IOError: + pass + return '' + + def __read_txt_file(self, file_path): + try: + with open(file_path, 'r') as fd: + data = fd.read() + return data.strip() + except IOError: + pass + return None + + def __write_txt_file(self, file_path, data): + try: + with open(file_path, 'w') as fd: + fd.write(data) + except IOError: + pass + return None + + def get_direction(self): + """ + Retrieves the direction of fan + Returns: + A string, either FAN_DIRECTION_INTAKE or FAN_DIRECTION_EXHAUST + depending on fan direction + """ + direction = 0 + if self.is_psu_fan: + # psu fan direction should be the same as fan tray + path= "{}/fan1_direction".format(SYSFS_PATH) + direction=self.__read_txt_file(path) + if direction is None: + return self.FAN_DIRECTION_EXHAUST + elif self.get_presence(): + path= "{}/fan{}_direction".format(SYSFS_PATH, self.fan_tray_index + 1) + direction=self.__read_txt_file(path) + if direction is None: + return self.FAN_DIRECTION_EXHAUST + + return self.FAN_DIRECTION_EXHAUST if int(direction) == 0 else self.FAN_DIRECTION_INTAKE + + + def get_speed(self): + """ + Retrieves the speed of fan as a percentage of full speed + Returns: + An integer, the percentage of full fan speed, in the range 0 (off) + to 100 (full speed) + + """ + speed = 0 + if self.is_psu_fan: + fan_path="{}/pwm".format(SYSFS_PSU_DIR[self.psu_index]) + speed = self.__read_txt_file(fan_path) + if speed is not None: + return int(speed) + else: + return 0 + elif self.get_presence(): + path= "{}/pwm".format(SYSFS_PATH) + speed=self.__read_txt_file(path) + if speed is None: + return 0 + + return int(speed) + + def get_target_speed(self): + """ + Retrieves the target (expected) speed of the fan + Returns: + An integer, the percentage of full fan speed, in the range 0 (off) + to 100 (full speed) + + Note: + speed_pc = pwm_target/255*100 + + 0 : when PWM mode is use + pwm : when pwm mode is not use + """ + return self.get_speed() + + def get_speed_tolerance(self): + """ + Retrieves the speed tolerance of the fan + Returns: + An integer, the percentage of variance from target speed which is + considered tolerable + """ + return SPEED_TOLERANCE + + def set_speed(self, speed): + """ + Sets the fan speed + Args: + speed: An integer, the percentage of full fan speed to set fan to, + in the range 0 (off) to 100 (full speed) + Returns: + A boolean, True if speed is set successfully, False if not + + """ + + return False + + def set_status_led(self, color): + """ + Sets the state of the fan module status LED + Args: + color: A string representing the color with which to set the + fan module status LED + Returns: + bool: True if status LED state is set successfully, False if not + """ + return False #Not supported + + def get_status_led(self): + """ + Gets the state of the fan status LED + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + status=self.get_presence() + if status is None: + return self.STATUS_LED_COLOR_OFF + + return { + 1: self.STATUS_LED_COLOR_GREEN, + 0: self.STATUS_LED_COLOR_RED + }.get(status, self.STATUS_LED_COLOR_OFF) + + def get_name(self): + """ + Retrieves the name of the device + Returns: + string: The name of the device + """ + + fan_name = FAN_NAME_LIST[self.fan_tray_index*2 + self.fan_index] \ + if not self.is_psu_fan \ + else "PSU-{} FAN-{}".format(self.psu_index+1, self.fan_index+1) + + return fan_name + + def get_presence(self): + """ + Retrieves the presence of the FAN + Returns: + bool: True if FAN is present, False if not + """ + + if self.is_psu_fan: + present_path="{}/present".format(SYSFS_PSU_DIR[self.psu_index]) + else: + present_path="{}/fan{}_present".format(SYSFS_PATH, self.fan_tray_index + 1) + + val=self.__read_txt_file(present_path) + if val is not None: + return int(val, 10)==1 + else: + return False + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + if self.is_psu_fan: + status_path = "{}/power_good".format(SYSFS_PSU_DIR[self.psu_index]) + val=self.__read_txt_file(status_path) + if val is not None: + return int(val, 10)==1 + else: + return False + else: + status=self.get_presence() + if status is None: + return False + return status + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + + return "N/A" + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return "N/A" + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return (self.fan_tray_index * 2 + self.fan_index + 1) \ + if not self.is_psu_fan else (self.psu_index + 1) + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return True if not self.is_psu_fan else False + diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan_drawer.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan_drawer.py new file mode 100644 index 000000000000..78d54f5dec25 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan_drawer.py @@ -0,0 +1,120 @@ +######################################################################## +# +# Module contains an implementation of SONiC Platform Base API and +# provides the Fan-Drawers' information available in the platform. +# +######################################################################## + +try: + from sonic_platform_base.fan_drawer_base import FanDrawerBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +FANS_PER_FANTRAY = 2 +MAX_FAN_WATT = 40.32 + + +class FanDrawer(FanDrawerBase): + """Platform-specific Fan class""" + + def __init__(self, fantray_index): + + FanDrawerBase.__init__(self) + # FanTray is 0-based in platforms + self.fantrayindex = fantray_index + self.__initialize_fan_drawer() + + + def __initialize_fan_drawer(self): + from sonic_platform.fan import Fan + for i in range(FANS_PER_FANTRAY): + self._fan_list.append(Fan(self.fantrayindex, i)) + + def get_name(self): + """ + Retrieves the fan drawer name + Returns: + string: The name of the device + """ + return "FanTray{}".format(self.fantrayindex+1) + + def get_presence(self): + """ + Retrieves the presence of the device + Returns: + bool: True if device is present, False if not + """ + return self._fan_list[0].get_presence() + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return self._fan_list[0].get_model() + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return self._fan_list[0].get_serial() + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return self._fan_list[0].get_status() + + 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): + """ + Gets the state of the fan drawer LED + + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + return self._fan_list[0].get_status_led() + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return (self.fantrayindex+1) + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + 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 MAX_FAN_WATT + diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/platform.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/platform.py old mode 100644 new mode 100755 similarity index 100% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/platform.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/platform.py diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/psu.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/psu.py new file mode 100755 index 000000000000..2ec59298a4d0 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/psu.py @@ -0,0 +1,324 @@ +#!/usr/bin/env python + +############################################################################# +# psuutil.py +# Platform-specific PSU status interface for SONiC +############################################################################# + +try: + from sonic_platform_base.psu_base import PsuBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +PSU_NAME_LIST = ["PSU-1", "PSU-2"] + +class Psu(PsuBase): + """Platform-specific Psu class""" + + SYSFS_PSU_DIR = ["/sys/bus/i2c/devices/0-005a", + "/sys/bus/i2c/devices/0-0059"] + + def __init__(self, psu_index): + self._fan_list = [] + self.PSU_TEMP_MAX = 85 * 1000 + self.PSU_OUTPUT_POWER_MAX = 1300 * 1000 + self.PSU_OUTPUT_VOLTAGE_MIN = 11400 + self.PSU_OUTPUT_VOLTAGE_MAX = 12600 + self.index = psu_index + PsuBase.__init__(self) + self.__initialize_fan() + + def __initialize_fan(self): + from sonic_platform.fan import Fan + for fan_index in range(0, 1): + fan = Fan(fan_index, 0, is_psu_fan=True, psu_index=self.index) + self._fan_list.append(fan) + + def __read_txt_file(self, file_path): + try: + with open(file_path, 'r') as fd: + data = fd.read() + return data.strip() + except IOError: + pass + return "" + + + def get_fan(self, index): + """ + Retrieves object representing the fan module contained in this PSU + Returns: + An object dervied from FanBase representing the fan module + contained in this PSU + """ + return self._fan_list[index] + + def get_powergood_status(self): + """ + Retrieves the powergood status of PSU + Returns: + A boolean, True if PSU has stablized its output voltages and passed all + its internal self-tests, False if not. + """ + return self.get_status() + + def set_status_led(self, color): + """ + Sets the state of the PSU status LED + Args: + color: A string representing the color with which to set the PSU status LED + Note: Only support green and off + Returns: + bool: True if status LED state is set successfully, False if not + """ + # Hardware not supported + return False + + def get_name(self): + """ + Retrieves the name of the device + Returns: + string: The name of the device + """ + return PSU_NAME_LIST[self.index] + + def get_presence(self): + """ + Retrieves the presence of the PSU + Returns: + bool: True if PSU is present, False if not + """ + attr_file ='present' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + status = 0 + try: + with open(attr_path, 'r') as psu_prs: + status = int(psu_prs.read()) + except IOError: + return False + + return status == 1 + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + attr_file = 'power_good' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + status = 0 + try: + with open(attr_path, 'r') as power_status: + status = int(power_status.read()) + except IOError: + return False + + return status == 1 + + def get_model(self): + """ + Retrieves the model number/name of a power supply unit (PSU) defined + by 1-based index + :param idx: An integer, 1-based index of the PSU of which to query model number + :return: String, denoting model number/name + """ + try: + if self.get_presence(): + attr_file = 'model' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return str(val) + except Exception as e: + return None + + def get_mfr_id(self): + """ + Retrieves the manufacturing id of a power supply unit (PSU) defined + by 1-based index + :param idx: An integer, 1-based index of the PSU of which to query mfr id + :return: String, denoting manufacturing id + """ + try: + if self.get_presence(): + attr_file = 'vendor' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return str(val) + except Exception as e: + return None + + def get_serial(self): + """ + Retrieves the serial number of a power supply unit (PSU) defined + by 1-based index + :param idx: An integer, 1-based index of the PSU of which to query serial number + :return: String, denoting serial number of the PSU unit + """ + try: + if self.get_presence(): + attr_file = 'sn' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return str(val) + except Exception as e: + return None + + def get_voltage(self): + """ + Retrieves current PSU voltage output + Returns: + A int number, the output voltage in volts. + """ + try: + if self.get_presence(): + attr_file = 'in2_input' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return float(val) / 1000.0 + except Exception as e: + return None + + def get_current(self): + """ + Retrieves present electric current supplied by PSU + Returns: + A int number, electric current in amperes + """ + try: + if self.get_presence(): + attr_file = 'curr2_input' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return float(val) / 1000.0 + except Exception as e: + return None + + def get_power(self): + """ + Retrieves current energy supplied by PSU + Returns: + A int number, the power in watts. + """ + try: + if self.get_presence(): + attr_file = 'power2_input' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return float(val) / 1000000.0 + except Exception as e: + return None + + def get_status_led(self): + """ + Gets the state of the PSU status LED + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings. + """ + # TODO + if self.get_presence(): + if self.get_powergood_status(): + return self.STATUS_LED_COLOR_GREEN + else: + return self.STATUS_LED_COLOR_RED + else: + return None + + def get_temperature(self): + """ + Retrieves current temperature reading from PSU + Returns: + A float number of current temperature in Celsius up to nearest thousandth + of one degree Celsius, e.g. 30.125 + """ + try: + if self.get_presence(): + attr_file = 'temp1_input' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return float(val) / 1000.0 + except Exception as e: + return None + + def get_temperature_high_threshold(self): + """ + Retrieves the high threshold temperature of PSU + Returns: + A float number, the high threshold temperature of PSU in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + return float(self.PSU_TEMP_MAX/1000) + + def get_voltage_high_threshold(self): + """ + Retrieves the high threshold PSU voltage output + Returns: + A float number, the high threshold output voltage in volts, + e.g. 12.1 + """ + return float(self.PSU_OUTPUT_VOLTAGE_MAX/1000) + + def get_voltage_low_threshold(self): + """ + Retrieves the low threshold PSU voltage output + Returns: + A float number, the low threshold output voltage in volts, + e.g. 12.1 + """ + return float(self.PSU_OUTPUT_VOLTAGE_MIN/1000) + + 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 + """ + return float(self.PSU_OUTPUT_POWER_MAX/1000) + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. If the agent cannot determine the parent-relative position + for some reason, or if the associated value of entPhysicalContainedIn is '0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device or -1 if cannot determine the position + """ + return self.index + 1 + + def is_replaceable(self): + return True + + def get_revision(self): + """ + Retrieves the hardware revision of the device + Returns: + string: Revision value of device + """ + try: + if self.get_presence(): + attr_file = 'rev' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + with open(attr_path, 'r') as revision: + val = revision.read() + return val.strip() + except IOError: + return None + + def get_num_fans(self): + """ + Retrieves the number of fan modules available on this PSU + + Returns: + An integer, the number of fan modules available on this PSU + """ + return len(self._fan_list) + + def get_all_fans(self): + """ + Retrieves all fan modules available on this PSU + + Returns: + A list of objects derived from FanBase representing all fan + modules available on this PSU + """ + return self._fan_list diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/sfp.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/sfp.py old mode 100644 new mode 100755 similarity index 72% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/sfp.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/sfp.py index 7664999e56b8..53ca1e970500 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/sfp.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/sfp.py @@ -10,8 +10,14 @@ from sonic_platform_base.sonic_sfp.sff8436 import sff8436Dom from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_InterfaceId from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_Dom + from sonic_platform_base.sonic_sfp.sffbase import sffbase + from sonic_platform_base.sonic_sfp.sff8024 import type_abbrv_name + from sonic_platform_base.sonic_sfp.sff8024 import type_of_media_interface from sonic_py_common.logger import Logger import sys + import time + import subprocess + import os except ImportError as e: raise ImportError(str(e) + "- required module not found") @@ -133,9 +139,9 @@ QSFP_OPTION_VALUE_WIDTH = 4 QSFP_MODULE_UPPER_PAGE3_START = 384 -QSFP_MODULE_THRESHOLD_OFFSET = 128 +QSFP_MODULE_THRESHOLD_OFFSET = 0 QSFP_MODULE_THRESHOLD_WIDTH = 24 -QSFP_CHANNL_THRESHOLD_OFFSET = 176 +QSFP_CHANNL_THRESHOLD_OFFSET = 48 QSFP_CHANNL_THRESHOLD_WIDTH = 24 #definitions of the offset and width for values in DOM info eeprom @@ -149,9 +155,13 @@ QSFP_DD_RX_POWER_WIDTH = 16 QSFP_DD_TX_POWER_OFFSET = 26 QSFP_DD_TX_POWER_WIDTH = 16 +QSFP_DD_CHANNL_FLAGS_SUPPORT_OFFSET = 29 +QSFP_DD_CHANNL_FLAGS_SUPPORT_WIDTH = 2 +QSFP_DD_CHANNL_MON_SUPPORT_OFFSET = 31 +QSFP_DD_CHANNL_MON_SUPPORT_WIDTH = 2 QSFP_DD_CHANNL_MON_OFFSET = 154 QSFP_DD_CHANNL_MON_WIDTH = 48 -QSFP_DD_CHANNL_DISABLE_STATUS_OFFSET = 86 +QSFP_DD_CHANNL_DISABLE_STATUS_OFFSET = 2 QSFP_DD_CHANNL_DISABLE_STATUS_WIDTH = 1 QSFP_DD_CHANNL_RX_LOS_STATUS_OFFSET = 19 QSFP_DD_CHANNL_RX_LOS_STATUS_WIDTH = 1 @@ -193,8 +203,52 @@ QSFP_TYPE = "QSFP" QSFP_DD_TYPE = "QSFP_DD" +PAUSE_EEPROM_SERVICE_STAMP='/tmp/pause_eeprom_polling' + # Global logger class instance logger = Logger() +class ext_qsfp_dd(sffbase): + version = '1.0' + + qsfp_dd_mon_capability = { + 'Tx_bias_support': + {'offset': 1, + 'bit': 0, + 'type': 'bitvalue'}, + 'Tx_power_support': + {'offset': 1, + 'bit': 1, + 'type': 'bitvalue'}, + 'Rx_power_support': + {'offset': 1, + 'bit': 2, + 'type': 'bitvalue'}, + 'Voltage_support': + {'offset': 0, + 'bit': 1, + 'type': 'bitvalue'}, + 'Temp_support': + {'offset': 0, + 'bit': 0, + 'type': 'bitvalue'} + } + + qsfp_dd_flags_capability = { + 'tx_fault': + {'offset': 0, + 'bit': 0, + 'type': 'bitvalue'}, + 'rx_los': + {'offset': 1, + 'bit': 1, + 'type': 'bitvalue'} + } + + def parse_mon_capability(self, sn_raw_data, start_pos): + return sffbase.parse(self, self.qsfp_dd_mon_capability, sn_raw_data, start_pos) + + def parse_flags_capability(self, sn_raw_data, start_pos): + return sffbase.parse(self, self.qsfp_dd_flags_capability, sn_raw_data, start_pos) class Sfp(SfpBase): """Platform-specific Sfp class""" @@ -243,19 +297,24 @@ class Sfp(SfpBase): RESET_17_32_PATH = "/sys/bus/i2c/devices/0-0007/port{}_reset" PRS_1_16_PATH = "/sys/bus/i2c/devices/0-0006/port{}_present" PRS_17_32_PATH = "/sys/bus/i2c/devices/0-0007/port{}_present" + LPMODE_1_16_PATH = "/sys/bus/i2c/devices/0-0006/port{}_lpmode" + LPMODE_17_32_PATH = "/sys/bus/i2c/devices/0-0007/port{}_lpmode" def __init__(self, sfp_index, sfp_type): # Init index self.index = sfp_index self.port_num = self.index + 1 + self.abbrv = None # Init eeprom path eeprom_path_prefix = '/sys/bus/i2c/devices/0-00' self.port_to_eeprom1_mapping = {} self.port_to_eeprom2_mapping = {} + self.port_to_eeprom3_mapping = {} for x in range(self.PORT_START, self.PORT_END + 1): self.port_to_eeprom1_mapping[x] = eeprom_path_prefix + self.port_to_i2c_mapping[x] + '/eeprom1' self.port_to_eeprom2_mapping[x] = eeprom_path_prefix + self.port_to_i2c_mapping[x] + '/eeprom2' + self.port_to_eeprom3_mapping[x] = eeprom_path_prefix + self.port_to_i2c_mapping[x] + '/eeprom3' self._detect_sfp_type(sfp_type) self._dom_capability_detect() @@ -282,7 +341,153 @@ def get_presence(self): except IOError: return False logger.log_info("debug:port_ %s sfp presence is %s" % (str(self.index), str(presence))) - return presence + return presence == 1 + + def _get_eeprom_by_bmc(self): + eeprom_path_prefix = '/sys/bus/i2c/devices/0-00' + mux = int((0x70 + self.index / 8) * 2) + chan = 1 << (self.index % 8) + sel_ch_cmd = 'ipmitool raw 0x30 0x25 0x1 {} 0x0 {} 2>/dev/null'.format(mux, chan) + desel_ch_cmd = 'ipmitool raw 0x30 0x25 0x1 {} 0x0 0x0 2>/dev/null'.format(mux) + desel_all_ch_cmd = 'ipmitool raw 0x30 0x25 0x1 0xe0 0x0 0x0 2>/dev/null; ipmitool raw 0x30 0x25 0x1 0xe2 0x0 0x0 2>/dev/null; ipmitool raw 0x30 0x25 0x1 0xe4 0x0 0x0 2>/dev/null; ipmitool raw 0x30 0x25 0x1 0xe6 0x0 0x0 2>/dev/null' + sel_page_cmd = 'ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f {} 2>/dev/null' + read_lower_cmd = 'ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x0 2>/dev/null' + read_upper_cmd = 'ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>/dev/null' + + try: + subprocess.Popen(sel_ch_cmd, stdout=subprocess.PIPE) + subprocess.Popen(sel_page_cmd.format(0), stdout=subprocess.PIPE) + time.sleep(0.05) + p = subprocess.Popen(read_lower_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + # retry if error occurred + i = 0 + while out == b'' and i < 3: + subprocess.Popen(desel_all_ch_cmd, stdout=subprocess.PIPE) + time.sleep(0.05) + subprocess.Popen(sel_ch_cmd, stdout=subprocess.PIPE) + subprocess.Popen(sel_page_cmd.format(0), stdout=subprocess.PIPE) + time.sleep(0.05) + p = subprocess.Popen(read_lower_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + i = i + 1 + if out == b'': + return False + + data_lower = out.decode().strip().replace("\n", "") + + i = 0 + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + while out == b'' and i < 3: + time.sleep(0.05) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + i = i + 1 + if out == b'': + return False + + data_upper_page_0 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0x1), stdout=subprocess.PIPE) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + data_upper_page_1 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0x2), stdout=subprocess.PIPE) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + data_upper_page_2 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0x3), stdout=subprocess.PIPE) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + data_upper_page_3 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0x10), stdout=subprocess.PIPE) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + data_upper_page_10 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0x11), stdout=subprocess.PIPE) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + data_upper_page_11 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0), stdout=subprocess.PIPE) + subprocess.Popen(desel_ch_cmd, stdout=subprocess.PIPE) + + eeprom1 = data_lower + " " + data_upper_page_0 + eeprom2 = data_upper_page_1 + " " + data_upper_page_2 + eeprom3 = data_upper_page_3 + " " + data_upper_page_10 + " " + data_upper_page_11 + + os.remove(PAUSE_EEPROM_SERVICE_STAMP) + + eeprom_raw_lower = [int(x, 16) for x in data_lower.split()] + if eeprom_raw_lower[0] in QSFP_TYPE_CODE_LIST: + temp = eeprom_raw_lower[22] + if temp > 128: + return False + elif eeprom_raw_lower[0] in QSFP_DD_TYPE_CODE_LIST: + temp = eeprom_raw_lower[14] + if temp > 128: + return False + + eeprom1 = eeprom1.replace(" ","") + eeprom2 = eeprom2.replace(" ","") + eeprom3 = eeprom3.replace(" ","") + + for i in range(0, 3): + sysfs_sfp_i2c_client_temp_path = eeprom_path_prefix + self.port_to_i2c_mapping[self.index] + '/temp' + if i == 0: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom1_mapping[self.index] + eeprom = eeprom1 + elif i == 1: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom2_mapping[self.index] + eeprom = eeprom2 + else: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom3_mapping[self.index] + eeprom = eeprom3 + + try: + with open(sysfs_sfp_i2c_client_eeprom_path, 'w') as fd: + fd.write(eeprom) + fd.close() + if i == 0: + with open(sysfs_sfp_i2c_client_temp_path, 'w') as fd: + fd.write(temp) + fd.close() + except IOError: + fd.close() + return True + except Exception: + return False + + def read_eeprom_buffer(self): + with open(PAUSE_EEPROM_SERVICE_STAMP, 'w') as f: + f.write("") + f.close() + + time.sleep(0.2) + rc = self._get_eeprom_by_bmc() + + + return rc + + def clear_eeprom_buffer(self): + for i in range(0, 3): + if i == 0: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom1_mapping[self.index] + elif i == 1: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom2_mapping[self.index] + else: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom3_mapping[self.index] + try: + with open(sysfs_sfp_i2c_client_eeprom_path, 'w') as fd: + fd.write(" ") + fd.close() + except IOError: + fd.close() def _read_eeprom_specific_bytes(self, offset, num_bytes): sysfsfile_eeprom = None @@ -292,9 +497,12 @@ def _read_eeprom_specific_bytes(self, offset, num_bytes): if offset < 256: sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom1_mapping[self.index] - else: + elif offset < 512: sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom2_mapping[self.index] offset = offset - 256 + else: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom3_mapping[self.index] + offset = offset - 512 try: sysfsfile_eeprom = open(sysfs_sfp_i2c_client_eeprom_path, mode="rb", buffering=0) @@ -321,8 +529,10 @@ def _detect_sfp_type(self, sfp_type): if eeprom_raw: if eeprom_raw[0] in QSFP_TYPE_CODE_LIST: self.sfp_type = QSFP_TYPE + self.abbrv = type_abbrv_name[eeprom_raw[0]] elif eeprom_raw[0] in QSFP_DD_TYPE_CODE_LIST: self.sfp_type = QSFP_DD_TYPE + self.abbrv = type_abbrv_name[eeprom_raw[0]] else: # we don't regonize this identifier value, treat the xSFP module as the default type self.sfp_type = sfp_type @@ -333,6 +543,7 @@ def _detect_sfp_type(self, sfp_type): # eeprom_raw being None indicates the module is not present. # in this case we treat it as the default type according to the SKU self.sfp_type = sfp_type + self.abbrv = type_abbrv_name['18'] def _dom_capability_detect(self): if not self.get_presence(): @@ -342,17 +553,23 @@ def _dom_capability_detect(self): self.dom_rx_power_supported = False self.dom_tx_bias_power_supported = False self.dom_tx_power_supported = False - self.dom_channel_monitor_supported = False self.dom_module_monitor_supported = False - self.dom_channel_treshold_supported = False - self.dom_module_treshold_supported =False self.calibration = 0 return - self.dom_channel_monitor_supported = False + self.dom_channel_monitor_supported = True self.dom_module_monitor_supported = True - self.dom_channel_treshold_supported = False - self.dom_module_treshold_supported =False + self.dom_channel_threshold_supported = True + self.dom_module_threshold_supported = True + + + self.dom_supported = False + self.dom_temp_supported = False + self.dom_volt_supported = False + self.dom_rx_power_supported = False + self.dom_tx_bias_supported = False + self.dom_tx_power_supported = False + self.dom_thresholds_supported = False if self.sfp_type == QSFP_TYPE: self.calibration = 1 @@ -369,7 +586,7 @@ def _dom_capability_detect(self): if qsfp_dom_capability_raw is not None: qsfp_version_compliance_raw = self._read_eeprom_specific_bytes(QSFP_VERSION_COMPLIANCE_OFFSET, QSFP_VERSION_COMPLIANCE_WIDTH) qsfp_version_compliance = int(qsfp_version_compliance_raw[0], 16) - dom_capability = sfpi_obj.parse_qsfp_dom_capability(qsfp_dom_capability_raw, 0) + dom_capability = sfpi_obj.parse_dom_capability(qsfp_dom_capability_raw, 0) if qsfp_version_compliance >= 0x08: self.dom_temp_supported = dom_capability['data']['Temp_support']['value'] == 'On' self.dom_volt_supported = dom_capability['data']['Voltage_support']['value'] == 'On' @@ -405,33 +622,36 @@ def _dom_capability_detect(self): if sfpi_obj is None: self.dom_supported = False - offset = 0 + self.dom_temp_supported = True + self.dom_volt_supported = True + self.dom_tx_fault_supported = False + self.dom_rx_los_supported = False + + offset = 0; + # two types of QSFP-DD cable types supported: Copper and Optical. qsfp_dom_capability_raw = self._read_eeprom_specific_bytes((offset + XCVR_DOM_CAPABILITY_OFFSET_QSFP_DD), XCVR_DOM_CAPABILITY_WIDTH_QSFP_DD) + if qsfp_dom_capability_raw is not None: - self.dom_temp_supported = True - self.dom_volt_supported = True dom_capability = sfpi_obj.parse_dom_capability(qsfp_dom_capability_raw, 0) if dom_capability['data']['Flat_MEM']['value'] == 'Off': - self.dom_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - self.dom_tx_bias_power_supported = False - self.dom_thresholds_supported = False - else: - self.dom_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - self.dom_tx_bias_power_supported = False - self.dom_thresholds_supported = False - else: - self.dom_supported = False - self.dom_temp_supported = False - self.dom_volt_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - self.dom_tx_bias_power_supported = False - self.dom_thresholds_supported = False + + ext_dd = ext_qsfp_dd() + offset = 256 + mon_sup_raw = self._read_eeprom_specific_bytes(offset + QSFP_DD_CHANNL_MON_SUPPORT_OFFSET, QSFP_DD_CHANNL_MON_SUPPORT_WIDTH) + mon_sup_data = ext_dd.parse_mon_capability(mon_sup_raw, 0) + + self.dom_thresholds_supported = mon_sup_data['data']['Tx_power_support']['value'] == 'On' + self.dom_rx_power_supported = mon_sup_data['data']['Tx_power_support']['value'] == 'On' + self.dom_tx_power_supported = mon_sup_data['data']['Rx_power_support']['value'] == 'On' + self.dom_tx_bias_supported = mon_sup_data['data']['Tx_bias_support']['value'] == 'On' + self.dom_supported = True + + flags_sup_raw = self._read_eeprom_specific_bytes(offset + QSFP_DD_CHANNL_FLAGS_SUPPORT_OFFSET, QSFP_DD_CHANNL_FLAGS_SUPPORT_WIDTH) + flags_sup_data = ext_dd.parse_flags_capability(flags_sup_raw, 0) + + self.dom_tx_fault_supported = flags_sup_data['data']['tx_fault']['value'] == 'On' + self.dom_rx_los_supported = flags_sup_data['data']['rx_los']['value'] == 'On' else: self.dom_supported = False @@ -486,8 +706,19 @@ def get_transceiver_info(self): application_advertisement |1*255VCHAR |supported applications advertisement ================================================================================ """ + self.reinit() + info_dict_keys = [ + 'type', 'hardware_rev', 'serial', 'manufacturer', + 'model', 'connector', 'encoding', 'ext_identifier', + 'ext_rateselect_compliance', 'cable_type', 'cable_length', + 'nominal_bit_rate', 'specification_compliance', 'vendor_date', + 'vendor_oui', 'application_advertisement', 'type_abbrv_name'] + transceiver_info_dict = {} compliance_code_dict = {} + transceiver_info_dict = dict.fromkeys(info_dict_keys, "NA") + transceiver_info_dict["specification_compliance"] = '{}' + transceiver_info_dict['type_abbrv_name'] = self.abbrv #QSFP if self.sfp_type == QSFP_TYPE: @@ -636,6 +867,7 @@ def get_transceiver_info(self): if sfp_media_type_dict is None: return None + transceiver_info_dict['specification_compliance'] = type_of_media_interface[sfp_media_type_raw[0]] host_media_list = "" sfp_application_type_first_list = self._read_eeprom_specific_bytes((XCVR_FIRST_APPLICATION_LIST_OFFSET_QSFP_DD), XCVR_FIRST_APPLICATION_LIST_WIDTH_QSFP_DD) possible_application_count = 8 @@ -663,7 +895,6 @@ def get_transceiver_info(self): transceiver_info_dict['encoding'] = "Not supported for CMIS cables" transceiver_info_dict['ext_identifier'] = str(sfp_ext_identifier_data['data']['Extended Identifier']['value']) transceiver_info_dict['ext_rateselect_compliance'] = "Not supported for CMIS cables" - transceiver_info_dict['specification_compliance'] = "Not supported for CMIS cables" transceiver_info_dict['cable_type'] = "Length Cable Assembly(m)" transceiver_info_dict['cable_length'] = str(sfp_cable_len_data['data']['Length Cable Assembly(m)']['value']) transceiver_info_dict['nominal_bit_rate'] = "Not supported for CMIS cables" @@ -700,6 +931,7 @@ def get_transceiver_bulk_status(self): TX power |INT |TX output power in mW ======================================================================== """ + self.reinit() transceiver_dom_info_dict = {} dom_info_dict_keys = ['temperature', 'voltage', @@ -754,6 +986,10 @@ def get_transceiver_bulk_status(self): dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params_with_tx_power(dom_data_raw[start : end], 0) if self.dom_tx_power_supported: + transceiver_dom_info_dict['tx1bias'] = dom_channel_monitor_data['data']['TX1Bias']['value'] + transceiver_dom_info_dict['tx2bias'] = dom_channel_monitor_data['data']['TX2Bias']['value'] + transceiver_dom_info_dict['tx3bias'] = dom_channel_monitor_data['data']['TX3Bias']['value'] + transceiver_dom_info_dict['tx4bias'] = dom_channel_monitor_data['data']['TX4Bias']['value'] transceiver_dom_info_dict['tx1power'] = self._convert_string_to_num(dom_channel_monitor_data['data']['TX1Power']['value']) transceiver_dom_info_dict['tx2power'] = self._convert_string_to_num(dom_channel_monitor_data['data']['TX2Power']['value']) transceiver_dom_info_dict['tx3power'] = self._convert_string_to_num(dom_channel_monitor_data['data']['TX3Power']['value']) @@ -765,38 +1001,64 @@ def get_transceiver_bulk_status(self): transceiver_dom_info_dict['rx3power'] = self._convert_string_to_num(dom_channel_monitor_data['data']['RX3Power']['value']) transceiver_dom_info_dict['rx4power'] = self._convert_string_to_num(dom_channel_monitor_data['data']['RX4Power']['value']) - transceiver_dom_info_dict['tx1bias'] = dom_channel_monitor_data['data']['TX1Bias']['value'] - transceiver_dom_info_dict['tx2bias'] = dom_channel_monitor_data['data']['TX2Bias']['value'] - transceiver_dom_info_dict['tx3bias'] = dom_channel_monitor_data['data']['TX3Bias']['value'] - transceiver_dom_info_dict['tx4bias'] = dom_channel_monitor_data['data']['TX4Bias']['value'] #QSFP-DD else: - offset = 0 sfpd_obj = qsfp_dd_Dom() if sfpd_obj is None: return transceiver_dom_info_dict - dom_data_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_DOM_BULK_DATA_START), QSFP_DD_DOM_BULK_DATA_SIZE) - if dom_data_raw is None: - return transceiver_dom_info_dict - if self.dom_module_monitor_supported: + if self.dom_temp_supported: - start = QSFP_DD_TEMPE_OFFSET - QSFP_DD_DOM_BULK_DATA_START - end = start + QSFP_DD_TEMPE_WIDTH - dom_temperature_data = sfpd_obj.parse_temperature(dom_data_raw[start : end], 0) + offset = 0 + dom_data_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_TEMPE_OFFSET), QSFP_DD_TEMPE_WIDTH) + dom_temperature_data = sfpd_obj.parse_temperature(dom_data_raw, 0) temp = self._convert_string_to_num(dom_temperature_data['data']['Temperature']['value']) if temp is not None: transceiver_dom_info_dict['temperature'] = temp if self.dom_volt_supported: - start = QSFP_DD_VOLT_OFFSET - QSFP_DD_DOM_BULK_DATA_START - end = start + QSFP_DD_VOLT_WIDTH - dom_voltage_data = sfpd_obj.parse_voltage(dom_data_raw[start : end], 0) + offset = 0 + dom_data_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_VOLT_OFFSET), QSFP_DD_VOLT_WIDTH) + dom_voltage_data = sfpd_obj.parse_voltage(dom_data_raw, 0) volt = self._convert_string_to_num(dom_voltage_data['data']['Vcc']['value']) if volt is not None: transceiver_dom_info_dict['voltage'] = volt + if self.dom_channel_monitor_supported: + + offset = 768 + dom_data_raw = self._read_eeprom_specific_bytes(offset + (QSFP_DD_CHANNL_MON_OFFSET - 128), QSFP_DD_CHANNL_MON_WIDTH) + dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(dom_data_raw, 0) + if self.dom_tx_power_supported: + transceiver_dom_info_dict['tx1power'] = dom_channel_monitor_data['data']['TX1Power']['value'] + transceiver_dom_info_dict['tx2power'] = dom_channel_monitor_data['data']['TX2Power']['value'] + transceiver_dom_info_dict['tx3power'] = dom_channel_monitor_data['data']['TX3Power']['value'] + transceiver_dom_info_dict['tx4power'] = dom_channel_monitor_data['data']['TX4Power']['value'] + transceiver_dom_info_dict['tx5power'] = dom_channel_monitor_data['data']['TX5Power']['value'] + transceiver_dom_info_dict['tx6power'] = dom_channel_monitor_data['data']['TX6Power']['value'] + transceiver_dom_info_dict['tx7power'] = dom_channel_monitor_data['data']['TX7Power']['value'] + transceiver_dom_info_dict['tx8power'] = dom_channel_monitor_data['data']['TX8Power']['value'] + + if self.dom_rx_power_supported: + transceiver_dom_info_dict['rx1power'] = dom_channel_monitor_data['data']['RX1Power']['value'] + transceiver_dom_info_dict['rx2power'] = dom_channel_monitor_data['data']['RX2Power']['value'] + transceiver_dom_info_dict['rx3power'] = dom_channel_monitor_data['data']['RX3Power']['value'] + transceiver_dom_info_dict['rx4power'] = dom_channel_monitor_data['data']['RX4Power']['value'] + transceiver_dom_info_dict['rx5power'] = dom_channel_monitor_data['data']['RX5Power']['value'] + transceiver_dom_info_dict['rx6power'] = dom_channel_monitor_data['data']['RX6Power']['value'] + transceiver_dom_info_dict['rx7power'] = dom_channel_monitor_data['data']['RX7Power']['value'] + transceiver_dom_info_dict['rx8power'] = dom_channel_monitor_data['data']['RX8Power']['value'] + + if self.dom_tx_bias_supported: + transceiver_dom_info_dict['tx1bias'] = dom_channel_monitor_data['data']['TX1Bias']['value'] + transceiver_dom_info_dict['tx2bias'] = dom_channel_monitor_data['data']['TX2Bias']['value'] + transceiver_dom_info_dict['tx3bias'] = dom_channel_monitor_data['data']['TX3Bias']['value'] + transceiver_dom_info_dict['tx4bias'] = dom_channel_monitor_data['data']['TX4Bias']['value'] + transceiver_dom_info_dict['tx5bias'] = dom_channel_monitor_data['data']['TX5Bias']['value'] + transceiver_dom_info_dict['tx6bias'] = dom_channel_monitor_data['data']['TX6Bias']['value'] + transceiver_dom_info_dict['tx7bias'] = dom_channel_monitor_data['data']['TX7Bias']['value'] + transceiver_dom_info_dict['tx8bias'] = dom_channel_monitor_data['data']['TX8Bias']['value'] return transceiver_dom_info_dict @@ -831,6 +1093,7 @@ def get_transceiver_threshold_info(self): txbiaslowwarning |FLOAT |Low Warning Threshold value of tx Bias Current in mA. ======================================================================== """ + self.reinit() transceiver_dom_threshold_info_dict = {} dom_info_dict_keys = ['temphighalarm', 'temphighwarning', @@ -851,9 +1114,7 @@ def get_transceiver_threshold_info(self): if not self.dom_supported or not self.qsfp_page3_available: return transceiver_dom_threshold_info_dict - # Dom Threshold data starts from offset 384 - # Revert offset back to 0 once data is retrieved - offset = QSFP_MODULE_UPPER_PAGE3_START + offset = 512 sfpd_obj = sff8436Dom() if sfpd_obj is None: return transceiver_dom_threshold_info_dict @@ -871,7 +1132,7 @@ def get_transceiver_threshold_info(self): dom_channel_threshold_data = sfpd_obj.parse_channel_threshold_values(dom_channel_threshold_raw, 0) # Threshold Data - if self.dom_module_treshold_supported: + if self.dom_module_threshold_supported: transceiver_dom_threshold_info_dict['temphighalarm'] = dom_module_threshold_data['data']['TempHighAlarm']['value'] transceiver_dom_threshold_info_dict['temphighwarning'] = dom_module_threshold_data['data']['TempHighWarning']['value'] transceiver_dom_threshold_info_dict['templowalarm'] = dom_module_threshold_data['data']['TempLowAlarm']['value'] @@ -880,7 +1141,7 @@ def get_transceiver_threshold_info(self): transceiver_dom_threshold_info_dict['vcchighwarning'] = dom_module_threshold_data['data']['VccHighWarning']['value'] transceiver_dom_threshold_info_dict['vcclowalarm'] = dom_module_threshold_data['data']['VccLowAlarm']['value'] transceiver_dom_threshold_info_dict['vcclowwarning'] = dom_module_threshold_data['data']['VccLowWarning']['value'] - if self.dom_channel_treshold_supported: + if self.dom_channel_threshold_supported: transceiver_dom_threshold_info_dict['rxpowerhighalarm'] = dom_channel_threshold_data['data']['RxPowerHighAlarm']['value'] transceiver_dom_threshold_info_dict['rxpowerhighwarning'] = dom_channel_threshold_data['data']['RxPowerHighWarning']['value'] transceiver_dom_threshold_info_dict['rxpowerlowalarm'] = dom_channel_threshold_data['data']['RxPowerLowAlarm']['value'] @@ -906,8 +1167,8 @@ def get_transceiver_threshold_info(self): if sfpd_obj is None: return transceiver_dom_threshold_info_dict - # page 02 (we put page 2 to byte 256~384) - offset = 256 + # page 02 (we put page 2 to byte 384~511) + offset = 384 dom_module_threshold_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_MODULE_THRESHOLD_OFFSET), QSFP_DD_MODULE_THRESHOLD_WIDTH) if dom_module_threshold_raw is None: return transceiver_dom_threshold_info_dict @@ -915,7 +1176,7 @@ def get_transceiver_threshold_info(self): dom_module_threshold_data = sfpd_obj.parse_module_threshold_values(dom_module_threshold_raw, 0) # Threshold Data - if self.dom_module_treshold_supported: + if self.dom_module_threshold_supported: transceiver_dom_threshold_info_dict['temphighalarm'] = dom_module_threshold_data['data']['TempHighAlarm']['value'] transceiver_dom_threshold_info_dict['temphighwarning'] = dom_module_threshold_data['data']['TempHighWarning']['value'] transceiver_dom_threshold_info_dict['templowalarm'] = dom_module_threshold_data['data']['TempLowAlarm']['value'] @@ -924,7 +1185,7 @@ def get_transceiver_threshold_info(self): transceiver_dom_threshold_info_dict['vcchighwarning'] = dom_module_threshold_data['data']['VccHighWarning']['value'] transceiver_dom_threshold_info_dict['vcclowalarm'] = dom_module_threshold_data['data']['VccLowAlarm']['value'] transceiver_dom_threshold_info_dict['vcclowwarning'] = dom_module_threshold_data['data']['VccLowWarning']['value'] - if self.dom_channel_treshold_supported: + if self.dom_channel_threshold_supported: transceiver_dom_threshold_info_dict['rxpowerhighalarm'] = dom_module_threshold_data['data']['RxPowerHighAlarm']['value'] transceiver_dom_threshold_info_dict['rxpowerhighwarning'] = dom_module_threshold_data['data']['RxPowerHighWarning']['value'] transceiver_dom_threshold_info_dict['rxpowerlowalarm'] = dom_module_threshold_data['data']['RxPowerLowAlarm']['value'] @@ -974,12 +1235,12 @@ def get_rx_los(self): #QSFP-DD else: - # page 11h (we put page 2 to byte 384~512) - if self.dom_rx_tx_power_bias_supported: - offset = 384 + # page 11h (we put page 11 to byte 768~895) + if self.dom_rx_los_supported: + offset = 768 dom_channel_monitor_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_CHANNL_RX_LOS_STATUS_OFFSET), QSFP_DD_CHANNL_RX_LOS_STATUS_WIDTH) if dom_channel_monitor_raw is not None: - rx_los_data = int(dom_channel_monitor_raw[0], 8) + rx_los_data = int(dom_channel_monitor_raw[0], 16) rx_los_list.append(rx_los_data & 0x01 != 0) rx_los_list.append(rx_los_data & 0x02 != 0) rx_los_list.append(rx_los_data & 0x04 != 0) @@ -999,6 +1260,7 @@ def get_tx_fault(self): A Boolean, True if SFP has TX fault, False if not Note : TX fault status is lached until a call to get_tx_fault or a reset. """ + self.reinit() if not self.dom_supported: return None @@ -1016,7 +1278,20 @@ def get_tx_fault(self): #QSFP-DD else: - return None + # page 11h (we put page 11 to byte 768~895) + if self.dom_tx_fault_supported: + offset = 768 + dom_channel_monitor_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_CHANNL_TX_FAULT_STATUS_OFFSET), QSFP_DD_CHANNL_TX_FAULT_STATUS_WIDTH) + if dom_channel_monitor_raw is not None: + tx_fault_data = int(dom_channel_monitor_raw[0], 16) + tx_fault_list.append(tx_fault_data & 0x01 != 0) + tx_fault_list.append(tx_fault_data & 0x02 != 0) + tx_fault_list.append(tx_fault_data & 0x04 != 0) + tx_fault_list.append(tx_fault_data & 0x08 != 0) + tx_fault_list.append(tx_fault_data & 0x10 != 0) + tx_fault_list.append(tx_fault_data & 0x20 != 0) + tx_fault_list.append(tx_fault_data & 0x40 != 0) + tx_fault_list.append(tx_fault_data & 0x80 != 0) return tx_fault_list @@ -1031,6 +1306,7 @@ def get_tx_disable(self): for SFP, the TX Disable State and Soft TX Disable Select is ORed as the tx_disable status returned These two bits are bit 7 & 6 in byte 110 page a2 respectively """ + self.reinit() if not self.dom_supported: return None @@ -1048,20 +1324,19 @@ def get_tx_disable(self): #QSFP-DD else: - if self.dom_rx_tx_power_bias_supported: - # page 11h (we put page 1 to byte 384~512) - offset = 384 - dom_channel_monitor_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_CHANNL_DISABLE_STATUS_OFFSET), QSFP_DD_CHANNL_DISABLE_STATUS_WIDTH) - if dom_channel_monitor_raw is not None: - tx_disable_data = int(dom_channel_monitor_raw[0], 16) - tx_disable_list.append(tx_disable_data & 0x01 != 0) - tx_disable_list.append(tx_disable_data & 0x02 != 0) - tx_disable_list.append(tx_disable_data & 0x04 != 0) - tx_disable_list.append(tx_disable_data & 0x08 != 0) - tx_disable_list.append(tx_disable_data & 0x10 != 0) - tx_disable_list.append(tx_disable_data & 0x20 != 0) - tx_disable_list.append(tx_disable_data & 0x40 != 0) - tx_disable_list.append(tx_disable_data & 0x80 != 0) + # page 10h (we put page 10 to byte 640~767) + offset = 640 + dom_channel_monitor_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_CHANNL_DISABLE_STATUS_OFFSET), QSFP_DD_CHANNL_DISABLE_STATUS_WIDTH) + if dom_channel_monitor_raw is not None: + tx_disable_data = int(dom_channel_monitor_raw[0], 16) + tx_disable_list.append(tx_disable_data & 0x01 != 0) + tx_disable_list.append(tx_disable_data & 0x02 != 0) + tx_disable_list.append(tx_disable_data & 0x04 != 0) + tx_disable_list.append(tx_disable_data & 0x08 != 0) + tx_disable_list.append(tx_disable_data & 0x10 != 0) + tx_disable_list.append(tx_disable_data & 0x20 != 0) + tx_disable_list.append(tx_disable_data & 0x40 != 0) + tx_disable_list.append(tx_disable_data & 0x80 != 0) return tx_disable_list @@ -1083,8 +1358,17 @@ def get_lpmode(self): Returns: A Boolean, True if lpmode is enabled, False if disabled """ - # SFP doesn't support this feature - return False + lpmode = False + try: + if self.index < 16: + lpmode_path=self.LPMODE_1_16_PATH.format(self.port_num) + else: + lpmode_path=self.LPMODE_17_32_PATH.format(self.port_num) + with open(lpmode_path, 'r') as sfp_lpmode: + lpmode = int(sfp_lpmode.read(), 16) + except IOError: + return False + return lpmode == 1 def get_power_override(self): """ @@ -1102,6 +1386,7 @@ def get_temperature(self): Returns: An integer number of current temperature in Celsius """ + self.reinit() if not self.dom_supported: return None #QSFP @@ -1146,6 +1431,7 @@ def get_voltage(self): Returns: An integer number of supply voltage in mV """ + self.reinit() if not self.dom_supported: return None @@ -1192,6 +1478,7 @@ def get_tx_bias(self): for channel 0 to channel 4. Ex. ['110.09', '111.12', '108.21', '112.09'] """ + self.reinit() tx_bias_list = [] #QSFP @@ -1212,25 +1499,24 @@ def get_tx_bias(self): #QSFP-DD else: - # page 11h (we put page 1 to byte 384~512) - if self.dom_rx_tx_power_bias_supported: - offset = 384 + # page 11h (we put page 1 to byte 768~895) + if dom_tx_bias_power_supported: + offset = 768 sfpd_obj = qsfp_dd_Dom() if sfpd_obj is None: return None - if dom_tx_bias_power_supported: - dom_tx_bias_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_TX_BIAS_OFFSET), QSFP_DD_TX_BIAS_WIDTH) - if dom_tx_bias_raw is not None: - dom_tx_bias_data = sfpd_obj.parse_dom_tx_bias(dom_tx_bias_raw, 0) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX1Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX2Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX3Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX4Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX5Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX6Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX7Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX8Bias']['value'])) + dom_tx_bias_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_TX_BIAS_OFFSET), QSFP_DD_TX_BIAS_WIDTH) + if dom_tx_bias_raw is not None: + dom_tx_bias_data = sfpd_obj.parse_dom_tx_bias(dom_tx_bias_raw, 0) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX1Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX2Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX3Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX4Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX5Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX6Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX7Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX8Bias']['value'])) return tx_bias_list @@ -1243,6 +1529,7 @@ def get_rx_power(self): power in mW for channel 0 to channel 4. Ex. ['1.77', '1.71', '1.68', '1.70'] """ + self.reinit() rx_power_list = [] #QSFP @@ -1268,25 +1555,24 @@ def get_rx_power(self): #QSFP-DD elif self.sfp_type == QSFP_DD_TYPE: - # page 11h (we put page 1 to byte 384~512) - if self.dom_rx_tx_power_bias_supported: - offset = 384 + # page 11h (we put page 11 to byte 768~895) + if self.dom_rx_power_supported: + offset = 768 sfpd_obj = qsfp_dd_Dom() if sfpd_obj is None: return None - if self.dom_rx_power_supported: - dom_rx_power_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_RX_POWER_OFFSET), QSFP_DD_RX_POWER_WIDTH) - if dom_rx_power_raw is not None: - dom_rx_power_data = sfpd_obj.parse_dom_rx_power(dom_rx_power_raw, 0) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX1Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX2Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX3Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX4Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX5Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX6Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX7Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX8Power']['value'])) + dom_rx_power_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_RX_POWER_OFFSET), QSFP_DD_RX_POWER_WIDTH) + if dom_rx_power_raw is not None: + dom_rx_power_data = sfpd_obj.parse_dom_rx_power(dom_rx_power_raw, 0) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX1Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX2Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX3Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX4Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX5Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX6Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX7Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX8Power']['value'])) return rx_power_list @@ -1299,6 +1585,7 @@ def get_tx_power(self): for channel 0 to channel 4. Ex. ['1.86', '1.86', '1.86', '1.86'] """ + self.reinit() tx_power_list = [] #QSFP @@ -1324,25 +1611,24 @@ def get_tx_power(self): #QSFP-DD else: - # page 11h (we put page 1 to byte 384~512) - if self.dom_rx_tx_power_bias_supported: - offset = 384 + # page 11h (we put page 11 to byte 768~895) + if self.dom_tx_power_supported: + offset = 768 sfpd_obj = qsfp_dd_Dom() if sfpd_obj is None: return None - if self.dom_tx_power_supported: - dom_tx_power_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_TX_POWER_OFFSET), QSFP_DD_TX_POWER_WIDTH) - if dom_tx_power_raw is not None: - dom_tx_power_data = sfpd_obj.parse_dom_tx_power(dom_tx_power_raw, 0) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX1Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX2Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX3Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX4Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX5Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX6Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX7Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX8Power']['value'])) + dom_tx_power_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_TX_POWER_OFFSET), QSFP_DD_TX_POWER_WIDTH) + if dom_tx_power_raw is not None: + dom_tx_power_data = sfpd_obj.parse_dom_tx_power(dom_tx_power_raw, 0) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX1Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX2Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX3Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX4Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX5Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX6Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX7Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX8Power']['value'])) return tx_power_list @@ -1352,8 +1638,22 @@ def reset(self): Returns: A boolean, True if successful, False if not """ - # SFP doesn't support this feature - return False + try: + if self.index < 16: + file_path=self.RESET_1_16_PATH.format(self.port_num) + else: + file_path=self.RESET_17_32_PATH.format(self.port_num) + + with open(file_path, 'w') as fd: + fd.write(str(1)) + time.sleep(1) + fd.write(str(0)) + time.sleep(1) + + except IOError: + return False + + return True def tx_disable(self, tx_disable): """ @@ -1390,8 +1690,18 @@ def set_lpmode(self, lpmode): Returns: A boolean, True if lpmode is set successfully, False if not """ - # SFP doesn't support this feature - return False + try: + if self.index < 16: + lpmode_path=self.LPMODE_1_16_PATH.format(self.port_num) + else: + lpmode_path=self.LPMODE_17_32_PATH.format(self.port_num) + val_file = open(lpmode_path, 'w') + val_file.write('1' if lpmode else '0') + val_file.close() + return True + except IOError: + val_file.close() + return False def set_power_override(self, power_override, power_set): """ @@ -1420,7 +1730,7 @@ def get_name(self): string: The name of the device """ - name='port'+str(self.index) + name='port'+str(self.index + 1) return name def get_model(self): @@ -1441,3 +1751,40 @@ def get_serial(self): transceiver_dom_info_dict = self.get_transceiver_info() return transceiver_dom_info_dict.get("serial", "N/A") + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return self.get_presence() and not self.get_reset_status() + + def get_position_in_parent(self): + """ + Returns: + Temp return 0 + """ + return 0 + + def is_replaceable(self): + """ + Retrieves if replaceable + Returns: + A boolean value, True if replaceable + """ + return True + + def get_error_description(self): + """ + Get error description + + Args: + error_code: The error code returned by _get_error_code + + Returns: + The error description + """ + if self.get_presence(): + return self.SFP_STATUS_OK + else: + return self.SFP_STATUS_UNPLUGGED diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/thermal.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/thermal.py old mode 100644 new mode 100755 similarity index 61% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/thermal.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/thermal.py index 942e6b7be347..73228ce8f0ac --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/thermal.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/thermal.py @@ -15,7 +15,6 @@ except ImportError as e: raise ImportError(str(e) + "- required module not found") - class Thermal(ThermalBase): """Platform-specific Thermal class""" @@ -42,6 +41,8 @@ def __init__(self, thermal_index): self.THERMAL_NAME_LIST.append("UCPUB") self.THERMAL_NAME_LIST.append("UFANB") ThermalBase.__init__(self) + self.minimum_thermal = self.get_temperature() + self.maximum_thermal = self.get_temperature() def __read_txt_file(self, file_path): try: @@ -50,13 +51,24 @@ def __read_txt_file(self, file_path): return data.strip() except IOError: pass - return "" + return None def __get_temp(self, temp_file): temp_file_path = os.path.join(self.SYSFS_THERMAL_DIR[self.index], temp_file) raw_temp = self.__read_txt_file(temp_file_path) - temp = float(raw_temp)/1000 - return "{:.3f}".format(temp) + if raw_temp is not None: + return float(raw_temp)/1000 + else: + return 0.0 + + def __set_threshold(self, file_name, temperature): + temp_file_path = os.path.join(self.SYSFS_THERMAL_DIR[self.index], file_name) + try: + with open(temp_file_path, 'w') as fd: + fd.write(str(temperature)) + return True + except IOError: + return False def get_temperature(self): """ @@ -74,7 +86,8 @@ def get_low_threshold(self): :return: A float number, the low threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - return int(3) + # work temperatur is 0~40, hyst is 2 + return 2.0 def get_low_critical_threshold(self): """ @@ -82,7 +95,8 @@ def get_low_critical_threshold(self): :return: A float number, the low critical threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - return int(0) + # work temperatur is 0~40 + return 0.0 def get_high_threshold(self): """ @@ -120,7 +134,7 @@ def get_presence(self): bool: True if PSU is present, False if not """ temp_file = "temp1_input" - temp_file_path = os.path.join(self.hwmon_path, temp_file) + temp_file_path = os.path.join(self.SYSFS_THERMAL_DIR[self.index], temp_file) return os.path.isfile(temp_file_path) def get_status(self): @@ -134,3 +148,63 @@ def get_status(self): return True + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return "None" + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return "None" + + def is_replaceable(self): + """ + Retrieves whether thermal module is replaceable + Returns: + A boolean value, True if replaceable, False if not + """ + return False + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return self.index + 1 + + def get_minimum_recorded(self): + """ + Retrieves the minimum recorded temperature of thermal + Returns: + A float number, the minimum recorded temperature of thermal in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + tmp = self.get_temperature() + if tmp < self.minimum_thermal: + self.minimum_thermal = tmp + return self.minimum_thermal + + def get_maximum_recorded(self): + """ + Retrieves the maximum recorded temperature of thermal + Returns: + A float number, the maximum recorded temperature of thermal in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + tmp = self.get_temperature() + if tmp > self.maximum_thermal: + self.maximum_thermal = tmp + return self.maximum_thermal + diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/watchdog.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/watchdog.py new file mode 100755 index 000000000000..fb7987bdd682 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/watchdog.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python + +######################################################################## +# +# Abstract base class for implementing a platform-specific class with +# which to interact with a hardware watchdog module in SONiC +# +######################################################################## + +try: + import subprocess + from sonic_platform_base.watchdog_base import WatchdogBase + from shlex import split + from collections import namedtuple + from functools import reduce +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +proc_output = namedtuple('proc_output', 'stdout stderr') + +WDT_COMMON_ERROR = -1 + +IPMI_WDT_EN_KICK_CMD = ["ipmitool", "mc", "watchdog", "reset"] +IPMI_WDT_OFF_CMD = ["ipmitool", "mc", "watchdog", "off"] +IPMI_WDT_SET_TIMEOUT_CMD = ["ipmitool", "raw", "0x6", "0x24", "0x4", "0x0", "0x0", "0x0"] +#IPMI_WDT_GET_TIMEOUT_CMD = "ipmitool mc watchdog get | grep Present | awk '{print $3}'" +#IPMI_WDT_GET_STATUS_CMD = "ipmitool mc watchdog get | grep 'Timer Is' | awk '{printf $4}'" + +class Watchdog(WatchdogBase): + """ + Abstract base class for interfacing with a hardware watchdog module + """ + + def __init__(self): + # Set default value + self.armed = self._get_status() + self.timeout = self._gettimeout() + + def pipeline(self, starter_command, *commands): + if not commands: + try: + starter_command, *commands = starter_command.split('|') + except AttributeError: + pass + starter_command = self._parse(starter_command) + starter = subprocess.Popen(starter_command, stdout=subprocess.PIPE) + last_proc = reduce(self._create_pipe, map(self._parse, commands), starter) + return proc_output(*last_proc.communicate()) + + def _create_pipe(self, previous, command): + proc = subprocess.Popen(command, stdin=previous.stdout, stdout=subprocess.PIPE) + previous.stdout.close() + return proc + + def _parse(self, cmd): + try: + return split(cmd) + except Exception: + return cmd + + def _get_status(self): + #IPMI_WDT_GET_STATUS_CMD + out, err = self.pipeline("ipmitool mc watchdog get", "grep 'Timer Is'", "awk '{print $4}'") + status_str = out.decode().rstrip('\n') + + if "Running" in status_str: + return True + + return False + + def _enable(self): + """ + Turn on the watchdog timer + """ + p = subprocess.Popen(IPMI_WDT_EN_KICK_CMD, stdout=subprocess.PIPE) + p.communicate() + return 0 + + def _disable(self): + """ + Turn off the watchdog timer + """ + p = subprocess.Popen(IPMI_WDT_OFF_CMD, stdout=subprocess.PIPE) + p.communicate() + return 0 + + def _keepalive(self): + """ + Keep alive watchdog timer + """ + p = subprocess.Popen(IPMI_WDT_EN_KICK_CMD, stdout=subprocess.PIPE) + p.communicate() + return 0 + + def _settimeout(self, seconds): + """ + Set watchdog timer timeout + @param seconds - timeout in seconds + @return is the actual set timeout + """ + ipmi_timeout = seconds * 10; + cmd = ["ipmitool", "raw", "0x6", "0x24", "0x4", "0x0", "0x0", "0x0"] + cmd.append(str(ipmi_timeout % 256)) + cmd.append(str(int(ipmi_timeout / 256))) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE) + p.communicate() + + return seconds + + def _gettimeout(self): + #IPMI_WDT_GET_TIMEOUT_CMD + out, err = self.pipeline("ipmitool mc watchdog get", "grep Present", "awk '{print $3}'") + return int(out.decode().rstrip('\n'), 10) + + def arm(self, seconds): + """ + Arm the hardware watchdog with a timeout of seconds. + If the watchdog is currently armed, calling this function will + simply reset the timer to the provided value. If the underlying + hardware does not support the value provided in , this + method should arm the watchdog with the *next greater* available + value. + Returns: + An integer specifying the *actual* number of seconds the watchdog + was armed with. On failure returns -1. + """ + ret = WDT_COMMON_ERROR + + if seconds < 0 or seconds > 500: + return ret + + try: + if self.timeout != seconds: + self.timeout = self._settimeout(seconds) + + if self.armed: + self._keepalive() + else: + self._enable() + + ret = self.timeout + except IOError as e: + print("Error: unable to enable wdt due to : {}".format(e)) + + return ret + + def disarm(self): + """ + Disarm the hardware watchdog + Returns: + A boolean, True if watchdog is disarmed successfully, False if not + """ + disarmed = False + try: + self._disable() + self.armed = False + disarmed = True + except IOError as e: + print("Error: unable to disable wdt due to : {}".format(e)) + return disarmed + + def is_armed(self): + """ + Retrieves the armed state of the hardware watchdog. + Returns: + A boolean, True if watchdog is armed, False if not + """ + return self.armed + + def get_remaining_time(self): + """ + If the watchdog is armed, retrieve the number of seconds remaining on + the watchdog timer + Returns: + An integer specifying the number of seconds remaining on thei + watchdog timer. If the watchdog is not armed, returns -1. + """ + + timeleft = WDT_COMMON_ERROR + + if self.armed: + return self._gettimeout() + + return timeleft diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_firmware_version b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_firmware_version new file mode 100755 index 000000000000..1fe70c7f4310 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_firmware_version @@ -0,0 +1,17 @@ +#!/bin/bash +cpld1_ver=$(ipmitool raw 0x30 0x25 0x0 0xc 0x1 0x0 2>>/dev/null | awk '{printf $1}') +cpld2_ver=$(ipmitool raw 0x30 0x25 0x0 0xe 0x1 0x0 2>>/dev/null | awk '{printf $1}') +fpga_ver=$(ipmitool raw 0x30 0x25 0x0 0x60 0x1 0x0 2>>/dev/null | awk '{printf $1}') +cpld1_ver=$( printf "%d" 0x$cpld1_ver ) +cpld2_ver=$( printf "%d" 0x$cpld2_ver ) +fpga_ver=$( printf "%d" 0x$fpga_ver ) +cpld1_ver_path="/sys/bus/i2c/devices/0-0006/version" +cpld2_ver_path="/sys/bus/i2c/devices/0-0007/version" +fpga_ver_path="/sys/bus/i2c/devices/0-0030/version" + +echo $cpld1_ver > $cpld1_ver_path +echo $cpld2_ver > $cpld2_ver_path +echo $fpga_ver > $fpga_ver_path + +exit 0 + diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_sync b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_sync old mode 100644 new mode 100755 index 9c357e7ac7e8..071339cac9d3 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_sync +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_sync @@ -3,5 +3,7 @@ /usr/local/bin/sonic-led-monitor & /usr/local/bin/sonic-qsfp-monitor & /usr/local/bin/sonic-psu-monitor & +/usr/local/bin/sonic-qsfp-eeprom-monitor & +/usr/local/bin/sonic-send-temp-to-bmc & exit 0 diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_syseeprom b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_syseeprom old mode 100644 new mode 100755 index 2db0a921cb9a..4a19db909864 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_syseeprom +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_syseeprom @@ -1,10 +1,15 @@ #!/bin/bash -eeprom_part1=$(ipmitool raw 0x30 0x25 0x00 0xaa 0x80 0x0 2>>/dev/null) -eeprom_part2=$(ipmitool raw 0x30 0x25 0x00 0xaa 0x80 0x80 2>>/dev/null) -eeprom1_full=$eeprom_part1$eeprom_part2 -eeprom1_full=$(echo $eeprom1_full | sed 's/[[:space:]]//g') -eeprom1_path="/sys/bus/i2c/devices/0-0055/eeprom" -eeprom1_full=$(echo $eeprom1_full | sed -e 's/ //g') -echo $eeprom1_full > $eeprom1_path +board_ver=$(i2cget -f -y 0 0x55 0x0 1>/dev/null 2>/dev/null; echo $?) + +if [ $board_ver != 0 ]; then + eeprom_part1=$(ipmitool raw 0x30 0x25 0x00 0xaa 0x80 0x0 2>>/dev/null) + eeprom_part2=$(ipmitool raw 0x30 0x25 0x00 0xaa 0x80 0x80 2>>/dev/null) + eeprom1_full=$eeprom_part1$eeprom_part2 + eeprom1_full=$(echo $eeprom1_full | sed 's/[[:space:]]//g') + eeprom1_path="/sys/bus/i2c/devices/0-0055/eeprom" + eeprom1_full=$(echo $eeprom1_full | sed -e 's/ //g') + echo $eeprom1_full > $eeprom1_path +fi + exit 0 diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-fanthrml-monitor b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-fanthrml-monitor old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-led-monitor b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-led-monitor old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-psu-monitor b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-psu-monitor old mode 100644 new mode 100755 index 180456f6a8aa..793e022823cb --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-psu-monitor +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-psu-monitor @@ -44,13 +44,8 @@ add_byte(){ # string_read [start byte] [length] string_read(){ value="" - len=$(echo $val | awk '{print $'"$1"'}') - byte_hex_test $len - if [ $? -eq 0 ]; then - return 0 - fi - len=$(printf "%d" 0x$len) - s=$(($1 + 1)) + len=$2 + s=$(($1)) e=$(($1 + len - 1)) for i in $(seq $s $e) do @@ -189,6 +184,17 @@ get_PSU_information() if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-0059/fault fi + + byte_read 41 + if [ $? -eq 1 ];then + echo $value > /sys/bus/i2c/devices/0-005a/pwm + fi + + byte_read 42 + if [ $? -eq 1 ];then + echo $value > /sys/bus/i2c/devices/0-0059/pwm + fi + fi #____________________________________________________________________________ @@ -196,35 +202,46 @@ get_PSU_information() val=$(ipmitool raw 0x30 0x8a 2>>/dev/null) if [ -e /sys/bus/i2c/devices/0-005a/vendor ] && [ -e /sys/bus/i2c/devices/0-0059/vendor ];then #PSU1 mfr_ID - string_read 1 + string_read 1 20 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-005a/vendor fi #PSU2 mfr_ID - string_read 21 + string_read 21 20 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-0059/vendor fi #PSU1 mfr_model - string_read 41 + string_read 41 20 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-005a/model fi #PSU2 mfr_model - string_read 61 + string_read 61 20 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-0059/model fi #PSU1 mfr_serial - string_read 81 + string_read 81 30 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-005a/sn fi - #PSU1 mfr_serial - string_read 111 + #PSU2 mfr_serial + string_read 111 30 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-0059/sn fi + + #PSU1 mfr_rev + string_read 141 2 + if [ $? -eq 1 ];then + echo $value > /sys/bus/i2c/devices/0-005a/rev + fi + #PSU2 mfr_serial + string_read 143 2 + if [ $? -eq 1 ];then + echo $value > /sys/bus/i2c/devices/0-0059/rev + fi fi } diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-eeprom-monitor b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-eeprom-monitor new file mode 100755 index 000000000000..a7213e3a9260 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-eeprom-monitor @@ -0,0 +1,596 @@ +#!/bin/bash + +debug_flag=0 +port_map=('00' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '1a' '1b' '1c' '1d' '1e' '1f' '20' '21' '22' '23' '24' '25' '26' '27' '28' '29' '2a' '2b' '2c' '2d' '2e' '2f') + +port_init=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + +port_sfp_type=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + +board_ver=$(ipmitool raw 0x30 0x25 0x1 0xe0 0x1 0x0 1>/dev/null 2>/dev/null; echo $?) #error will get 1 means EVT, otherwise DVT + + +byte_hex_test() +{ + if ! [[ $1 =~ ^[0-9A-Fa-f]{2}$ ]] ; then + return 0 + else + return 1 + fi +} + +pmon_status_check() +{ + output=$( docker inspect -f '{{.State.Status}}' pmon 2>/dev/null) + if [ $? -eq 0 ]; then + if [ $output == 'running' ]; then + return 1 + else + return 0 + fi + else + return 0 + fi +} + +#$1=mux $2=channel $3=dev_addr, $4=reg, $5=val +bmc_write() +{ + if [ $board_ver == 1 ]; then + addr_8b=$(echo $(($3)) | awk '{printf $1}') + addr_8b=`expr $addr_8b \\* 2` + ipmitool raw 0x30 0x85 $1 $2 $addr_8b 2 $4 $5 1>>/dev/null 2>>/dev/null + sleep 1 + ipmitool raw 0x30 0x87 1>>/dev/null 2>>/dev/null + else + pmon_status_check + if [ $? -eq 1 ]; then + while [ $(docker exec pmon bash -c 'if [ -e /tmp/pause_eeprom_polling ]; then echo 1; else echo 0; fi') == '1' ]; do + sleep 0.1; + done + fi + mux_addr=$(((0x70 + $1 - 2) * 2)) + chan=$((1 << $2)) + addr_8b=$(echo $(($3)) | awk '{printf $1}') + addr_8b=`expr $addr_8b \\* 2` + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 $chan 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x25 0x1 $addr_8b 0x0 $4 $5 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + fi +} + +#$1=mux $2=channel $3=dev_addr, $4=reg, $5=len +bmc_read() +{ + if [ $board_ver == 1 ]; then + addr_8b=$(echo $(($3)) | awk '{printf $1}') + addr_8b=`expr $addr_8b \\* 2` + ipmitool raw 0x30 0x86 $1 $2 $addr_8b $5 $4 1>>/dev/null 2>>/dev/null + sleep 1 + val=$(ipmitool raw 0x30 0x87 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + return 1 + else + return 0 + fi + else + mux_addr=$(((0x70 + $1 - 2) * 2)) + chan=$((1 << $2)) + addr_8b=$(echo $(($3)) | awk '{printf $1}') + addr_8b=`expr $addr_8b \\* 2` + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 $chan 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 $addr_8b $5 $4 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + return 1 + else + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + return 0 + fi + fi +} + + +bmc_dump() +{ + err=0 + mux_addr=$(((0x70 + $1 - 2) * 2)) + chan=$((1 << $2)) + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 $chan 1>>/dev/null 2>>/dev/null + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x0 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x0 2>>/dev/null) + if [ $? -eq 0 ];then + result1=$val + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result2=$val + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x1 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result3=$val + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x2 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result4=$val + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x3 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result5=$val + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x10 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result6=$val + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x11 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result7=$val + else + err=1 + fi + + + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + + if [ $err -eq 0 ];then + return 1 + else + return 0 + fi +} + +bmc_update_dynamic() +{ + local port=$1 + i2cmux_dev=0 + i2cmux_dev=`expr $port / 8` + i2cmux_dev=`expr $i2cmux_dev + 2` + ch=`expr $port % 8` + + if [ ${port_sfp_type[$port]} -eq 17 ]; then + err=0 + mux_addr=$(((0x70 + $i2cmux_dev - 2) * 2)) + chan=$((1 << $ch)) + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 $chan 1>>/dev/null 2>>/dev/null + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x0 1>>/dev/null 2>>/dev/null + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x3 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/rx_los" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x4 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/tx_fault" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x56 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/disable" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x24 0x16 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + result=$(echo $result | sed 's/[[:space:]]//g') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/qsfp_dom_bulk" + result=$(echo $result | sed -e 's/ //g') + echo $result > $result_path + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + + if [ $err -eq 0 ];then + return 1 + else + return 0 + fi + + elif [ ${port_sfp_type[$port]} -eq 24 ]; then + err=0 + mux_addr=$(((0x70 + $i2cmux_dev - 2) * 2)) + chan=$((1 << $ch)) + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 $chan 1>>/dev/null 2>>/dev/null + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x0 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x2 0xe 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + result=$(echo $result | sed 's/[[:space:]]//g') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/tempe" + result=$(echo $result | sed -e 's/ //g') + echo $result > $result_path + else + err=1 + fi + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x2 0x10 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + result=$(echo $result | sed 's/[[:space:]]//g') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/volte" + result=$(echo $result | sed -e 's/ //g') + echo $result > $result_path + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x10 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x82 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/disable" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x11 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x87 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/tx_fault" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x93 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/rx_los" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x30 0x9a 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + result=$(echo $result | sed 's/[[:space:]]//g') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/qsfp_dd_chan_mon" + result=$(echo $result | sed -e 's/ //g') + echo $result > $result_path + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + + if [ $err -eq 0 ];then + return 1 + else + return 0 + fi + fi +} + +#$1=port_no +bmc_qsfp_eeprom_read() +{ + local port=$1 + local eeprom_part1 + local eeprom_part2 + local eeprom_part3 + local eeprom_part4 + local eeprom_part5 + local eeprom_part6 + local eeprom_part7 + local eeprom1_full + local eeprom2_full + local eeprom3_full + + port=`expr $port - 1` + i2cmux_dev=0 + i2cmux_dev=`expr $port / 8` + i2cmux_dev=`expr $i2cmux_dev + 2` + ch=`expr $port % 8` + if [ ${port_init[$port]} -eq 0 ]; then + if [ $board_ver == 1 ]; then + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x00 + bmc_read $i2cmux_dev $ch 0x50 0 128 + if [ $? -eq 1 ];then + eeprom_part1=$result + else + return 1 + fi + + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part2=$result + else + return 1 + fi + + #QSFP-DD page1 + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x01 + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part3=$result + else + return 1 + fi + + #QSFP-DD page2 + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x2 + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part4=$result + else + return 1 + fi + + #QSFP-DD page3 + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x3 + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part5=$result + else + return 1 + fi + + #QSFP-DD page10 + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x10 + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part6=$result + else + return 1 + fi + + #QSFP-DD page11 + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x11 + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part7=$result + else + return 1 + fi + else + #pmon_status_check + #if [ $? -eq 1 ]; then + # while [ $(docker exec pmon bash -c 'if [ -e /tmp/pause_eeprom_polling ]; then echo 1; else echo 0; fi') == '1' ]; do + # sleep 0.1; + # done + #fi + + bmc_dump $i2cmux_dev $ch + if [ $? -eq 1 ];then + eeprom_part1=$result1 + eeprom_part2=$result2 + eeprom_part3=$result3 + eeprom_part4=$result4 + eeprom_part5=$result5 + eeprom_part6=$result6 + eeprom_part7=$result7 + else + return 1 + fi + fi + fi + + if [ ${port_init[$port]} -eq 1 ]; then + + eeprom1_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom1" + check=$(od -An -tx1 -w1 -v $eeprom1_path | head -n 1) + if [ $check != '00' ] && [ $check != 'ff' ] ; then + if [ -e /tmp/plugin_module_event ]; then + return + fi + + bmc_update_dynamic $port + if [ $? -eq 0 ];then + return 1 + fi + else + port_init[$port]=0 + fi + fi + + + if [ ${port_init[$port]} -eq 0 ]; then + sfp_type=$(echo $eeprom_part1 | awk '{printf $1}') + byte_hex_test $sfp_type + if [ $? -eq 0 ]; then + return + fi + sfp_type=$( printf "%d" 0x$sfp_type ) + port_sfp_type[$((i - 1))]=$sfp_type + #get temperature + if [ $sfp_type -eq 24 ];then + temp=$(echo $eeprom_part1 | awk '{printf $15}') + if [ $temp != "" ];then + temp=$( printf "%d" 0x$temp ) + temp_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/temp" + echo $temp > $temp_path + fi + elif [ $sfp_type -eq 17 ];then + temp=$(echo $eeprom_part1 | awk '{printf $23}') + if [ $temp != "" ];then + temp=$( printf "%d" 0x$temp ) + temp_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/temp" + echo $temp > $temp_path + fi + fi + + #get lp_mode + lpmod_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/lp_mode" + if [ $sfp_type -eq 24 ];then + lpmod=$(echo $eeprom_part1 | awk '{printf $27}') + if [ $lpmod != "" ];then + state=$((lpmod&0x10)) + if [ $state -eq 16 ];then + echo 1 > $lpmod_path + else + echo 0 > $lpmod_path + fi + fi + elif [ $sfp_type -eq 17 ];then + lpmod=$(echo $eeprom_part1 | awk '{printf $93}') + if [ $lpmod != "" ];then + state=$((lpmod&0x02)) + if [ $state -eq 2 ];then + echo 1 > $lpmod_path + else + echo 0 > $lpmod_path + fi + fi + else + lpmod="" + fi + + eeprom1_full=$eeprom_part1$eeprom_part2 + eeprom1_full=$(echo $eeprom1_full | sed 's/[[:space:]]//g') + eeprom2_full=$eeprom_part3$eeprom_part4 + eeprom2_full=$(echo $eeprom2_full | sed 's/[[:space:]]//g') + eeprom3_full=$eeprom_part5$eeprom_part6$eeprom_part7 + eeprom3_full=$(echo $eeprom3_full | sed 's/[[:space:]]//g') + + if [ $debug_flag -eq 0 ];then + eeprom1_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom1" + eeprom1_full=$(echo $eeprom1_full | sed -e 's/ //g') + echo $eeprom1_full > $eeprom1_path + eeprom2_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom2" + eeprom2_full=$(echo $eeprom2_full | sed -e 's/ //g') + echo $eeprom2_full > $eeprom2_path + eeprom3_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom3" + eeprom3_full=$(echo $eeprom3_full | sed -e 's/ //g') + echo $eeprom3_full > $eeprom3_path + else + printf "\nPort %d EEPROM:" $1 + printf "\n-----------------------------------------------\n" + for i in $(seq 1 256); + do + printf "%s " ${eeprom1_full:0:2} + eeprom1_full=$(echo $eeprom1_full | sed 's/^..//') + + val=`expr $i % 16` + if [ $val -eq 0 ];then + printf "\n" + fi + done + printf "\n-----------------------------------------------\n" + fi + + if [ $board_ver == 0 ]; then + port_init[$port]=1 + if [ $port -lt 16 ];then + cpld_path="/sys/bus/i2c/devices/0-0006/" + else + cpld_path="/sys/bus/i2c/devices/0-0007/" + fi + echo 1 > $cpld_path"port"$((port + 1))"_data_rdy" + fi + fi + + return 0 +} + +TRANSCEIVER_DATA_READ() +{ + first_detect=0 + loop_after_plugin=0 + + while true + do + if [ -e /sys/bus/i2c/devices/0-0006/port1_present ] && [ -e /sys/bus/i2c/devices/0-0007/port32_present ] && [ -e /sys/bus/i2c/devices/0-002f/eeprom1 ];then + if [ $first_detect == 0 ]; then + ipmitool raw 0x30 0x25 0x1 0xe0 0x0 0x0 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x25 0x1 0xe2 0x0 0x0 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x25 0x1 0xe4 0x0 0x0 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x25 0x1 0xe6 0x0 0x0 1>>/dev/null 2>>/dev/null + fi + for i in $(seq 1 32); + do + if [ $i -le 16 ];then + cpld_path="/sys/bus/i2c/devices/0-0006/" + else + cpld_path="/sys/bus/i2c/devices/0-0007/" + fi + + pre=$(cat $cpld_path"port"$i"_present") + if [ $pre == 1 ]; then + bmc_qsfp_eeprom_read $i + if [ $first_detect == 0 ]; then + first_detect=1 + fi + else + port_init[$((i - 1))]=0 + port_sfp_type[$((i - 1))]=0 + fi + done + + if [ $first_detect == 1 ]; then + touch /tmp/eeprom_init_done + fi + + if [ -e /tmp/plugin_module_event ]; then + loop_after_plugin=$((loop_after_plugin + 1)) + + if [ $loop_after_plugin -gt 2 ]; then + rm /tmp/plugin_module_event + loop_after_plugin=0 + fi + fi + + pmon_status_check + if [ $? -eq 1 ]; then + if [ $first_detect == 1 ]; then + docker exec pmon bash -c 'echo "" > /tmp/eeprom_init_done' + fi + else + first_detect=0 + fi + + sleep 1; + fi + done +} + +TRANSCEIVER_DATA_READ diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-monitor b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-monitor old mode 100644 new mode 100755 index 645b8528851f..f2eb928346d7 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-monitor +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-monitor @@ -1,7 +1,7 @@ #!/bin/bash -debug_flag=0 -port_map=('00' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '1a' '1b' '1c' '1d' '1e' '1f' '20' '21' '22' '23' '24' '25' '26' '27' '28' '29' '2a' '2b' '2c' '2d' '2e' '2f') +board_ver=$(ipmitool raw 0x30 0x25 0x1 0xe0 0x1 0x0 1>/dev/null 2>/dev/null; echo $?) #error will get 1 means EVT, otherwise DVT + port_1_8_presence=0 port_9_16_presence=0 port_17_24_presence=0 @@ -10,6 +10,14 @@ port_1_8_reset=0 port_9_16_reset=0 port_17_24_reset=0 port_25_32_reset=0 +port_1_8_lpmode=0 +port_9_16_lpmode=0 +port_17_24_lpmode=0 +port_25_32_lpmode=0 +port_1_8_modsel=0 +port_9_16_modsel=0 +port_17_24_modsel=0 +port_25_32_modsel=0 result=0 pre_port_1_8_reset=256 @@ -25,6 +33,8 @@ pre_port_9_16_modsel=256 pre_port_17_24_modsel=256 pre_port_25_32_modsel=256 +port_pre_present=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + byte_hex_test() { if ! [[ $1 =~ ^[0-9A-Fa-f]{2}$ ]] ; then @@ -34,405 +44,517 @@ byte_hex_test() fi } -#$1=mux $2=channel $3=dev_addr, $4=reg, $5=val -bmc_write() -{ - addr_8b=$(echo $(($3)) | awk '{printf $1}') - addr_8b=`expr $addr_8b \\* 2` - ipmitool raw 0x30 0x85 $1 $2 $addr_8b 2 $4 $5 1>>/dev/null 2>>/dev/null - sleep 1 - ipmitool raw 0x30 0x87 1>>/dev/null 2>>/dev/null -} - -#$1=mux $2=channel $3=dev_addr, $4=reg, $5=len -bmc_read() +bmc_read_low_speed_signal_status() { - addr_8b=$(echo $(($3)) | awk '{printf $1}') - addr_8b=`expr $addr_8b \\* 2` - ipmitool raw 0x30 0x86 $1 $2 $addr_8b $5 $4 1>>/dev/null 2>>/dev/null - sleep 1 - val=$(ipmitool raw 0x30 0x87 2>>/dev/null) - if [ $? -eq 0 ];then - result=$val - return 1 - else + val=$(ipmitool raw 0x30 0x8d 2>/dev/null); + if [ $? -ne 0 ];then return 0 fi -} -bmc_qsfp_lpmode_write() -{ + port_1_8_presence=$(echo $val | awk '{printf $1}') + byte_hex_test $port_1_8_presence + if [ $? -eq 0 ]; then + return 0 + fi + port_1_8_presence=$( printf "%d" 0x$port_1_8_presence ) - cpld_path="/sys/bus/i2c/devices/0-0006/" - val=0 - for i in $(seq 1 8); - do - lpmode_path=$cpld_path"port"$i"_lpmode" - lpmode_input=$(cat $lpmode_path | awk '{printf $1}') - val=$((val | (lpmode_input << ($i - 1)))) - done - if [ $val -ne $pre_port_1_8_lpmode ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x50 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_1_8_lpmode=$val + port_9_16_presence=$(echo $val | awk '{printf $2}') + byte_hex_test $port_9_16_presence + if [ $? -eq 0 ]; then + return 0 fi - val=0 - for i in $(seq 9 16); - do - lpmode_path=$cpld_path"port"$i"_lpmode" - lpmode_input=$(cat $lpmode_path | awk '{printf $1}') - val=$((val | (lpmode_input << ($i - 9)))) - done + port_9_16_presence=$( printf "%d" 0x$port_9_16_presence ) - if [ $val -ne $pre_port_9_16_lpmode ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x51 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_9_16_lpmode=$val + port_17_24_presence=$(echo $val | awk '{printf $9}') + byte_hex_test $port_17_24_presence + if [ $? -eq 0 ]; then + return 0 fi + port_17_24_presence=$( printf "%d" 0x$port_17_24_presence ) - cpld_path="/sys/bus/i2c/devices/0-0007/" - val=0 - for i in $(seq 17 24); - do - lpmode_path=$cpld_path"port"$i"_lpmode" - lpmode_input=$(cat $lpmode_path | awk '{printf $1}') - val=$((val | (lpmode_input << ($i - 17)))) - done + port_25_32_presence=$(echo $val | awk '{printf $10}') + byte_hex_test $port_25_32_presence + if [ $? -eq 0 ]; then + return 0 + fi + port_25_32_presence=$( printf "%d" 0x$port_25_32_presence ) - if [ $val -ne $pre_port_17_24_lpmode ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x50 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_17_24_lpmode=$val + port_1_8_reset=$(echo $val | awk '{printf $3}') + byte_hex_test $port_1_8_reset + if [ $? -eq 0 ]; then + return 0 fi - val=0 - for i in $(seq 25 32); - do - lpmode_path=$cpld_path"port"$i"_lpmode" - lpmode_input=$(cat $lpmode_path | awk '{printf $1}') - val=$((val | (lpmode_input << ($i - 25)))) - done + port_1_8_reset=$( printf "%d" 0x$port_1_8_reset ) - if [ $val -ne $pre_port_25_32_lpmode ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x51 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_25_32_lpmode=$val + port_9_16_reset=$(echo $val | awk '{printf $4}') + byte_hex_test $port_9_16_reset + if [ $? -eq 0 ]; then + return 0 fi + port_9_16_reset=$( printf "%d" 0x$port_9_16_reset ) + port_17_24_reset=$(echo $val | awk '{printf $11}') + byte_hex_test $port_17_24_reset + if [ $? -eq 0 ]; then + return 0 + fi + port_17_24_reset=$( printf "%d" 0x$port_17_24_reset ) - return 0 -} + port_25_32_reset=$(echo $val | awk '{printf $12}') + byte_hex_test $port_25_32_reset + if [ $? -eq 0 ]; then + return 0 + fi + port_25_32_reset=$( printf "%d" 0x$port_25_32_reset ) -bmc_qsfp_modsel_write() -{ + port_1_8_lpmode=$(echo $val | awk '{printf $5}') + byte_hex_test $port_1_8_lpmode + if [ $? -eq 0 ]; then + return 0 + fi + port_1_8_lpmode=$( printf "%d" 0x$port_1_8_lpmode ) - cpld_path="/sys/bus/i2c/devices/0-0006/" - val=0 - for i in $(seq 1 8); - do - modsel_path=$cpld_path"port"$i"_modsel" - modsel_input=$(cat $modsel_path | awk '{printf $1}') - val=$((val | (modsel_input << ($i - 1)))) - done + port_9_16_lpmode=$(echo $val | awk '{printf $6}') + byte_hex_test $port_9_16_lpmode + if [ $? -eq 0 ]; then + return 0 + fi + port_9_16_lpmode=$( printf "%d" 0x$port_9_16_lpmode ) - val=$((0xff - val)) - if [ $val -ne $pre_port_1_8_modsel ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x60 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_1_8_modsel=$val + port_17_24_lpmode=$(echo $val | awk '{printf $13}') + byte_hex_test $port_17_24_lpmode + if [ $? -eq 0 ]; then + return 0 fi - val=0 - for i in $(seq 9 16); - do - modsel_path=$cpld_path"port"$i"_modsel" - modsel_input=$(cat $modsel_path | awk '{printf $1}') - val=$((val | (modsel_input << ($i - 9)))) - done + port_17_24_lpmode=$( printf "%d" 0x$port_17_24_lpmode ) - val=$((0xff - val)) - if [ $val -ne $pre_port_9_16_modsel ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x61 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_9_16_modsel=$val + port_25_32_lpmode=$(echo $val | awk '{printf $14}') + byte_hex_test $port_25_32_lpmode + if [ $? -eq 0 ]; then + return 0 fi + port_25_32_lpmode=$( printf "%d" 0x$port_25_32_lpmode ) - cpld_path="/sys/bus/i2c/devices/0-0007/" - val=0 - for i in $(seq 17 24); - do - modsel_path=$cpld_path"port"$i"_modsel" - modsel_input=$(cat $modsel_path | awk '{printf $1}') - val=$((val | (modsel_input << ($i - 17)))) - done + port_1_8_modsel=$(echo $val | awk '{printf $7}') + byte_hex_test $port_1_8_modsel + if [ $? -eq 0 ]; then + return 0 + fi + port_1_8_modsel=$( printf "%d" 0x$port_1_8_modsel ) - val=$((0xff - val)) - if [ $val -ne $pre_port_17_24_modsel ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x60 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_17_24_modsel=$val + port_9_16_modsel=$(echo $val | awk '{printf $8}') + byte_hex_test $port_9_16_modsel + if [ $? -eq 0 ]; then + return 0 fi - val=0 - for i in $(seq 25 32); - do - modsel_path=$cpld_path"port"$i"_modsel" - modsel_input=$(cat $modsel_path | awk '{printf $1}') - val=$((val | (modsel_input << ($i - 25)))) - done + port_9_16_modsel=$( printf "%d" 0x$port_9_16_modsel ) - val=$((0xff - val)) - if [ $val -ne $pre_port_25_32_modsel ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x61 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_25_32_modsel=$val + port_17_24_modsel=$(echo $val | awk '{printf $15}') + byte_hex_test $port_17_24_modsel + if [ $? -eq 0 ]; then + return 0 fi + port_17_24_modsel=$( printf "%d" 0x$port_17_24_modsel ) + port_25_32_modsel=$(echo $val | awk '{printf $16}') + byte_hex_test $port_25_32_modsel + if [ $? -eq 0 ]; then + return 0 + fi + port_25_32_modsel=$( printf "%d" 0x$port_25_32_modsel ) - return 0 + return 1 } -bmc_qsfp_presence_read() +bmc_qsfp_lpmode_write() { - a=0 - tmp1=$(ipmitool raw 0x30 0x25 0x00 0x0c 0x1 0x30 2>>/dev/null) - a=$((a+$?)) - tmp1=$(echo $tmp1 | awk '{printf $1}') - sleep 0.05 - tmp2=$(ipmitool raw 0x30 0x25 0x00 0x0c 0x1 0x31 2>>/dev/null) - a=$((a+$?)) - tmp2=$(echo $tmp2 | awk '{printf $1}') - sleep 0.05 - tmp3=$(ipmitool raw 0x30 0x25 0x00 0x0e 0x1 0x30 2>>/dev/null) - a=$((a+$?)) - tmp3=$(echo $tmp3 | awk '{printf $1}') - sleep 0.05 - tmp4=$(ipmitool raw 0x30 0x25 0x00 0x0e 0x1 0x31 2>>/dev/null) - a=$((a+$?)) - tmp4=$(echo $tmp4 | awk '{printf $1}') - sleep 0.05 - if [ $a -eq 0 ];then - byte_hex_test $tmp1 - if [ $? -eq 0 ]; then - return 0 + + if [ $board_ver == 1 ]; then + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 1)))) + done + if [ $val -ne $pre_port_1_8_lpmode ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x50 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_1_8_lpmode=$val fi - port_1_8_presence=$( printf "%d" 0x$tmp1 ) - byte_hex_test $tmp2 - if [ $? -eq 0 ]; then - return 0 + val=0 + for i in $(seq 9 16); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 9)))) + done + + if [ $val -ne $pre_port_9_16_lpmode ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x51 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_9_16_lpmode=$val fi - port_9_16_presence=$( printf "%d" 0x$tmp2 ) - byte_hex_test $tmp3 - if [ $? -eq 0 ]; then - return 0 + + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 17)))) + done + + if [ $val -ne $pre_port_17_24_lpmode ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x50 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_17_24_lpmode=$val fi - port_17_24_presence=$( printf "%d" 0x$tmp3 ) - byte_hex_test $tmp4 - if [ $? -eq 0 ]; then - return 0 + val=0 + for i in $(seq 25 32); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 25)))) + done + + if [ $val -ne $pre_port_25_32_lpmode ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x51 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_25_32_lpmode=$val fi - port_25_32_presence=$( printf "%d" 0x$tmp4 ) - return 1 + + else + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 1)))) + done + val2=0 + for i in $(seq 9 16); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val2=$((val2 | (lpmode_input << ($i - 9)))) + done + + if [ $val -ne $port_1_8_lpmode ] || [ $val2 -ne $port_9_16_lpmode ]; then + ipmitool raw 0x30 0x8c 0x0 0x1 $val $val2 1>>/dev/null 2>>/dev/null + fi + + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 17)))) + done + + val2=0 + for i in $(seq 25 32); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val2=$((val2 | (lpmode_input << ($i - 25)))) + done + + if [ $val -ne $port_17_24_lpmode ] || [ $val2 -ne $port_25_32_lpmode ]; then + ipmitool raw 0x30 0x8c 0x1 0x1 $val $val2 1>>/dev/null 2>>/dev/null + fi + fi return 0 } -bmc_qsfp_reset_write() +bmc_qsfp_modsel_write() { - cpld_path="/sys/bus/i2c/devices/0-0006/" - val=0 - for i in $(seq 1 8); - do - reset_path=$cpld_path"port"$i"_reset" - reset_input=$(cat $reset_path | awk '{printf $1}') - val=$((val | (reset_input << ($i - 1)))) - done + if [ $board_ver == 1 ]; then + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 1)))) + done - val=$((0xff - val)) - if [ $val -ne $pre_port_1_8_reset ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x20 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_1_8_reset=$val - fi - val=0 - for i in $(seq 9 16); - do - reset_path=$cpld_path"port"$i"_reset" - reset_input=$(cat $reset_path | awk '{printf $1}') - val=$((val | (reset_input << ($i - 9)))) - done + val=$((0xff - val)) + if [ $val -ne $pre_port_1_8_modsel ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x60 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_1_8_modsel=$val + fi + val=0 + for i in $(seq 9 16); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 9)))) + done - val=$((0xff - val)) - if [ $val -ne $pre_port_9_16_reset ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x21 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_9_16_reset=$val - fi + val=$((0xff - val)) + if [ $val -ne $pre_port_9_16_modsel ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x61 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_9_16_modsel=$val + fi - cpld_path="/sys/bus/i2c/devices/0-0007/" - val=0 - for i in $(seq 17 24); - do - reset_path=$cpld_path"port"$i"_reset" - reset_input=$(cat $reset_path | awk '{printf $1}') - val=$((val | (reset_input << ($i - 17)))) - done + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 17)))) + done - val=$((0xff - val)) - if [ $val -ne $pre_port_17_24_reset ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x20 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_17_24_reset=$val - fi - val=0 - for i in $(seq 25 32); - do - reset_path=$cpld_path"port"$i"_reset" - reset_input=$(cat $reset_path | awk '{printf $1}') - val=$((val | (reset_input << ($i - 25)))) - done + val=$((0xff - val)) + if [ $val -ne $pre_port_17_24_modsel ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x60 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_17_24_modsel=$val + fi + val=0 + for i in $(seq 25 32); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 25)))) + done - val=$((0xff - val)) - if [ $val -ne $pre_port_25_32_reset ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x21 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_25_32_reset=$val - fi + val=$((0xff - val)) + if [ $val -ne $pre_port_25_32_modsel ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x61 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_25_32_modsel=$val + fi + else + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 1)))) + done + val=$((0xff - val)) + + val2=0 + for i in $(seq 9 16); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val2=$((val2 | (modsel_input << ($i - 9)))) + done + + val2=$((0xff - val2)) + if [ $val -ne $port_1_8_modsel ] || [ $val2 -ne $port_9_16_modsel ]; then + ipmitool raw 0x30 0x8c 0x0 0x2 $val $val2 1>>/dev/null 2>>/dev/null + fi + + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 17)))) + done + + val=$((0xff - val)) + + val2=0 + for i in $(seq 25 32); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val2=$((val2 | (modsel_input << ($i - 25)))) + done + + val2=$((0xff - val2)) + if [ $val -ne $port_17_24_modsel ] || [ $val2 -ne $port_25_32_modsel ]; then + ipmitool raw 0x30 0x8c 0x1 0x2 $val $val2 1>>/dev/null 2>>/dev/null + fi + fi return 0 } -#$1=port_no -bmc_qsfp_eeprom_read() +bmc_qsfp_presence_read() { - local port=$1 - local eeprom_part1 - local eeprom_part2 - local eeprom_part3 - local eeprom_part4 - local eeprom1_full - local eeprom2_full - - port=`expr $port - 1` - i2cmux_dev=0 - i2cmux_dev=`expr $port / 8` - i2cmux_dev=`expr $i2cmux_dev + 2` - ch=`expr $port % 8` - - bmc_write $i2cmux_dev $ch 0x50 0x7f 0x00 - bmc_read $i2cmux_dev $ch 0x50 0 128 - if [ $? -eq 1 ];then - eeprom_part1=$result - else - return 1 - fi + if [ $board_ver == 1 ]; then + a=0 + tmp1=$(ipmitool raw 0x30 0x25 0x00 0x0c 0x1 0x30 2>>/dev/null) + a=$((a+$?)) + tmp1=$(echo $tmp1 | awk '{printf $1}') + sleep 0.05 + tmp2=$(ipmitool raw 0x30 0x25 0x00 0x0c 0x1 0x31 2>>/dev/null) + a=$((a+$?)) + tmp2=$(echo $tmp2 | awk '{printf $1}') + sleep 0.05 + tmp3=$(ipmitool raw 0x30 0x25 0x00 0x0e 0x1 0x30 2>>/dev/null) + a=$((a+$?)) + tmp3=$(echo $tmp3 | awk '{printf $1}') + sleep 0.05 + tmp4=$(ipmitool raw 0x30 0x25 0x00 0x0e 0x1 0x31 2>>/dev/null) + a=$((a+$?)) + tmp4=$(echo $tmp4 | awk '{printf $1}') + sleep 0.05 + if [ $a -eq 0 ];then + byte_hex_test $tmp1 + if [ $? -eq 0 ]; then + return 0 + fi + port_1_8_presence=$( printf "%d" 0x$tmp1 ) + byte_hex_test $tmp2 + if [ $? -eq 0 ]; then + return 0 + fi + port_9_16_presence=$( printf "%d" 0x$tmp2 ) + byte_hex_test $tmp3 + if [ $? -eq 0 ]; then + return 0 + fi + port_17_24_presence=$( printf "%d" 0x$tmp3 ) + byte_hex_test $tmp4 + if [ $? -eq 0 ]; then + return 0 + fi + port_25_32_presence=$( printf "%d" 0x$tmp4 ) + return 1 + fi - bmc_read $i2cmux_dev $ch 0x50 128 128 - if [ $? -eq 1 ];then - eeprom_part2=$result + return 0 else - return 1 + bmc_read_low_speed_signal_status + if [ $? -eq 0 ]; then + return 0 + fi fi +} - #QSFP-DD page2 - bmc_write $i2cmux_dev $ch 0x50 0x7f 0x02 - bmc_read $i2cmux_dev $ch 0x50 128 128 - if [ $? -eq 1 ];then - eeprom_part3=$result - else - return 1 - fi +bmc_qsfp_reset_write() +{ - #QSFP-DD page11 - bmc_write $i2cmux_dev $ch 0x50 0x7f 0x11 - bmc_read $i2cmux_dev $ch 0x50 128 128 - if [ $? -eq 1 ];then - eeprom_part4=$result - else - return 1 - fi + if [ $board_ver == 1 ]; then + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 1)))) + done - sfp_type=$(echo $eeprom_part1 | awk '{printf $1}') - byte_hex_test $sfp_type - if [ $? -eq 0 ]; then - return - fi - sfp_type=$( printf "%d" 0x$sfp_type ) - - #get temperature - temp=$(echo $eeprom_part1 | awk '{printf $15}') - if [ $temp != "" ];then - temp=$( printf "%d" 0x$temp ) - temp_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/temp" - echo $temp > $temp_path - fi + val=$((0xff - val)) + if [ $val -ne $pre_port_1_8_reset ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x20 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_1_8_reset=$val + fi + val=0 + for i in $(seq 9 16); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 9)))) + done - #get lp_mode - lpmod_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/lp_mode" - if [ $sfp_type -eq 24 ];then - lpmod=$(echo $eeprom_part1 | awk '{printf $27}') - if [ $lpmod != "" ];then - state=$((lpmod&0x10)) - if [ $state -eq 16 ];then - echo 1 > $lpmod_path - else - echo 0 > $lpmod_path - fi + val=$((0xff - val)) + if [ $val -ne $pre_port_9_16_reset ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x21 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_9_16_reset=$val fi - elif [ $sfp_type -eq 17 ];then - lpmod=$(echo $eeprom_part1 | awk '{printf $93}') - if [ $lpmod != "" ];then - state=$((lpmod&0x02)) - if [ $state -eq 2 ];then - echo 1 > $lpmod_path - else - echo 0 > $lpmod_path - fi + + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 17)))) + done + + val=$((0xff - val)) + if [ $val -ne $pre_port_17_24_reset ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x20 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_17_24_reset=$val fi - else - lpmod="" - fi + val=0 + for i in $(seq 25 32); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 25)))) + done - eeprom1_full=$eeprom_part1$eeprom_part2 - eeprom1_full=$(echo $eeprom1_full | sed 's/[[:space:]]//g') - eeprom2_full=$eeprom_part3$eeprom_part4 - eeprom2_full=$(echo $eeprom2_full | sed 's/[[:space:]]//g') - - if [ $debug_flag -eq 0 ];then - eeprom1_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom1" - eeprom1_full=$(echo $eeprom1_full | sed -e 's/ //g') - echo $eeprom1_full > $eeprom1_path - eeprom2_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom2" - eeprom2_full=$(echo $eeprom2_full | sed -e 's/ //g') - echo $eeprom2_full > $eeprom2_path + val=$((0xff - val)) + if [ $val -ne $pre_port_25_32_reset ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x21 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_25_32_reset=$val + fi else - printf "\nPort %d EEPROM:" $1 - printf "-----------------------------------------------\n" - for i in $(seq 1 256); + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); do - printf "%s " ${eeprom1_full:0:2} - eeprom1_full=$(echo $eeprom1_full | sed 's/^..//') + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 1)))) + done - val=`expr $i % 16` - if [ $val -eq 0 ];then - printf "\n" - fi + val=$((0xff - val)) + val2=0 + for i in $(seq 9 16); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val2=$((val2 | (reset_input << ($i - 9)))) done - printf "\n-----------------------------------------------\n" + + val2=$((0xff - val2)) + if [ $val -ne $port_1_8_reset ] || [ $val2 -ne $port_9_16_reset ]; then + ipmitool raw 0x30 0x8c 0x0 0x0 $val $val2 1>>/dev/null 2>>/dev/null + fi + + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 17)))) + done + + val=$((0xff - val)) + val2=0 + for i in $(seq 25 32); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val2=$((val2 | (reset_input << ($i - 25)))) + done + + val2=$((0xff - val2)) + if [ $val -ne $port_17_24_reset ] || [ $val2 -ne $port_25_32_reset ]; then + ipmitool raw 0x30 0x8c 0x1 0x0 $val $val2 1>>/dev/null 2>>/dev/null + fi fi return 0 } -#$1=port_no -bmc_qsfp_eeprom_clear() -{ - eeprom1_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom1" - echo "" > $eeprom1_path - eeprom2_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom2" - echo "" > $eeprom2_path -} - QSFP_monitor() { while true @@ -463,16 +585,24 @@ QSFP_monitor() if [ $is_presence -eq 0 ];then echo 1 > $cpld_path"port"$i"_present" - bmc_qsfp_eeprom_read $i + if [ $board_ver == 0 ]; then + if [ -e /tmp/eeprom_init_done ] && [ ${port_pre_present[$((i - 1))]} -eq 0 ]; then + touch /tmp/plugin_module_event + fi + + port_pre_present[$((i - 1))]=1 + fi else echo 0 > $cpld_path"port"$i"_present" - bmc_qsfp_eeprom_clear $i + echo 0 > $cpld_path"port"$i"_data_rdy" + if [ $board_ver == 0 ]; then + port_pre_present[$((i - 1))]=0 + fi fi done - sleep 2 - else - sleep 1 fi + + sleep 0.2 done } diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-send-temp-to-bmc b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-send-temp-to-bmc new file mode 100755 index 000000000000..4f2c1be21ab1 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-send-temp-to-bmc @@ -0,0 +1,51 @@ +#!/bin/bash +board_ver=$(ipmitool raw 0x30 0x25 0x1 0xe0 0x1 0x0 1>/dev/null 2>/dev/null; echo $?) #error will get 1 means EVT, otherwise DVT + +send_temp_to_bmc() +{ + c_path=$(ls /sys/devices/platform/coretemp.0/hwmon/) + c_temp=$(cat /sys/class/hwmon/$c_path/temp1_input) + cputemp=`expr $c_temp / 1000` + + transceiver_temp="" + for i in $(seq 1 32); + do + index=$((i + 15)); + path="/sys/bus/i2c/devices/0-00$(printf "%x" $index)/temp"; + t_temp=$(cat $path) + transceiver_temp+="$transcevicer_temp $t_temp" + done + + m2_temp=$(smartctl -A /dev/sda | egrep ^194 | awk '{print $10}') + + d_dev=$(find /sys/devices/ -name 1-00\*) + d_path=$(ls $d_dev/hwmon/) + d_temp=$(cat /sys/class/hwmon/$d_path/temp1_input) + dimm_temp=`expr $d_temp / 1000` + + ipmitool raw 0x30 0x8b $cputemp $transceiver_temp $m2_temp $dimm_temp +} + +SEND_TEMP() +{ + boot_time_barrier=1 + while true + do + if [ -e /sys/bus/i2c/devices/0-0006/port1_present ] && [ -e /sys/bus/i2c/devices/0-0007/port32_present ] && [ -e /sys/bus/i2c/devices/0-002f/eeprom1 ];then + + if [ $board_ver == 0 ]; then + if [ $boot_time_barrier == 1 ]; then + if [ -e /tmp/eeprom_init_done ]; then + boot_time_barrier=0 + fi + else + send_temp_to_bmc + fi + fi + + sleep 1; + fi + done +} + +SEND_TEMP diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/wistron_6512_32r_util.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/wistron_6512_32r_util.py old mode 100644 new mode 100755 index 030942825df0..31cf25f4cbe9 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/wistron_6512_32r_util.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/wistron_6512_32r_util.py @@ -68,8 +68,6 @@ # PSU 'echo wistron_psu1 0x5a > /sys/bus/i2c/devices/i2c-0/new_device', 'echo wistron_psu2 0x59 > /sys/bus/i2c/devices/i2c-0/new_device', -# EEPROM -'echo wistron_syseeprom 0x55 > /sys/bus/i2c/devices/i2c-0/new_device', ] FORCE = 0 @@ -173,6 +171,7 @@ def driver_inserted(): 'modprobe ipmi_watchdog', 'modprobe i2c_dev', 'modprobe at24', +'modprobe i2c-imc', 'modprobe wistron_6512_32r_syseeprom', 'modprobe wistron_6512_32r_cpld', 'modprobe wistron_6512_32r_fan', @@ -242,6 +241,20 @@ def device_install(): if FORCE == 0: return status + + status, output = log_os_system("i2cget -y 0 0x55 0x0 1>/dev/null 2>/dev/null; echo $?", 1) + if status: + print(output) + if FORCE == 0: + return status + else: + if output == '0': + log_os_system("echo 24c02 0x55 > /sys/bus/i2c/devices/i2c-0/new_device", 1) + else: + log_os_system("echo wistron_syseeprom 0x55 > /sys/bus/i2c/devices/i2c-0/new_device", 1) + + + for i in range(0,len(sfp_map)): status, output = log_os_system("echo wistron_oom 0x"+str(sfp_map[i])+ " > /sys/bus/i2c/devices/i2c-0/new_device", 1) if status: @@ -324,12 +337,6 @@ def do_install(): else: print(PROJECT_NAME.upper()+" devices detected....") - status, output = log_os_system( - "/bin/sh /usr/local/bin/platform_api_mgnt.sh init", 1) - if status: - print(output) - if FORCE == 0: - return status return def do_uninstall(): diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/changelog b/platform/innovium/sonic-platform-modules-wistron/debian/changelog new file mode 100644 index 000000000000..12d04e4d0303 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/changelog @@ -0,0 +1,5 @@ +sonic-wistron-platform-modules (1.1) unstable; urgency=low + + * Initial release + + -- Haowei Chung Fri, 30 Aug 2019 14:48:00 +0800 diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/compat b/platform/innovium/sonic-platform-modules-wistron/debian/compat new file mode 100644 index 000000000000..b4de39476753 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/compat @@ -0,0 +1 @@ +11 diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/control b/platform/innovium/sonic-platform-modules-wistron/debian/control new file mode 100644 index 000000000000..00ad6637c378 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/control @@ -0,0 +1,14 @@ +Source: sonic-wistron-platform-modules +Section: main +Priority: extra +Maintainer: Wistron +Build-Depends: debhelper (>= 8.0.0), bzip2 +Standards-Version: 3.9.3 + +Package: sonic-platform-wistron-sw-to3200k +Architecture: amd64 +Description: kernel modules for platform devices such as fan, led, sfp + +Package: sonic-platform-wistron-6512-32r +Architecture: amd64 +Description: kernel modules for platform devices such as fan, led, sfp diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/rules b/platform/innovium/sonic-platform-modules-wistron/debian/rules new file mode 100755 index 000000000000..defb1f932d16 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/rules @@ -0,0 +1,143 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +include /usr/share/dpkg/pkg-info.mk + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +export INSTALL_MOD_DIR:=extra + +PYTHON ?= python2 +PYTHON3 ?= python3 + +PACKAGE_PRE_NAME := sonic-platform-wistron +KVERSION ?= $(shell uname -r) +KERNEL_SRC := /lib/modules/$(KVERSION) +MOD_SRC_DIR:= $(shell pwd) +MODULE_DIRS := sw-to3200k 6512-32r +MODULE_DIR := modules +UTILS_DIR := utils +SERVICE_DIR := service +CONF_DIR := conf + +%: + dh $@ --with systemd,python2,python3 --buildsystem=pybuild + +clean: + dh_testdir + dh_testroot + dh_clean + +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; \ + cd $(MOD_SRC_DIR)/$${mod}; \ + if [ -f setup.py ]; then \ + $(PYTHON3) setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}; \ + echo "Finished making whl package for $$mod"; \ + fi; \ + cd $(MOD_SRC_DIR); \ + done) + +binary: binary-arch binary-indep + # Nothing to do + +binary-arch: + # Nothing to do + +#install: build + #dh_testdir + #dh_testroot + #dh_clean -k + #dh_installdirs + +binary-indep: + dh_testdir + dh_installdirs + + # Custom package commands + (for mod in $(MODULE_DIRS); do \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} $(KERNEL_SRC)/$(INSTALL_MOD_DIR); \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} usr/local/bin; \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} lib/systemd/system; \ + 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; \ + done) + # Resuming debhelper scripts + dh_testroot + dh_install + dh_installchangelogs + dh_installdocs + dh_installsystemd + dh_installinit + dh_link + dh_fixperms + dh_compress + dh_strip + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb +.PHONY: build binary binary-arch binary-indep clean + +##!/usr/bin/make -f +# +#export INSTALL_MOD_DIR:=extra +# +#PYTHON ?= python2 +#PYTHON3 ?= python3 +# +#KVERSION ?= $(shell uname -r) +#KERNEL_SRC := /lib/modules/$(KVERSION) +#MOD_SRC_DIR:= $(shell pwd) +# +#PACKAGE_PRE_NAME := sonic-platform-wistron +#MODULE_DIRS := 3306-32 +#MODULE_SRC := modules +##UTILITY_SRC := utils +#SERVICE_SRC := service +#COMMON_SRC := common +#%: +# dh $@ +# +# +#override_dh_auto_build: +# (for mod in $(MODULE_DIRS); do \ +# make modules -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules; \ +# cd $(MOD_SRC_DIR)/$${mod}; \ +# python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ +# cd $(MOD_SRC_DIR); \ +# done) +# +#override_dh_auto_install: +# (for mod in $(MODULE_DIRS); do \ +# dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} \ +# $(KERNEL_SRC)/$(INSTALL_MOD_DIR); \ +# cp $(MOD_SRC_DIR)/$${mod}/$(MODULE_SRC)/*.ko \ +# debian/$(PACKAGE_PRE_NAME)-$${mod}/$(KERNEL_SRC)/$(INSTALL_MOD_DIR); \ +# dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} usr/local/bin; \ +## cp $(MOD_SRC_DIR)/$${mod}/$(UTILITY_SRC)/* \ +## debian/$(PACKAGE_PRE_NAME)-$${mod}/usr/local/bin; \ +# dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} lib/systemd/system; \ +# cp $(MOD_SRC_DIR)/$${mod}/$(SERVICE_SRC)/*.service \ +# debian/$(PACKAGE_PRE_NAME)-$${mod}/lib/systemd/system; \ +# done) +# +#override_dh_usrlocal: +# +#override_dh_clean: +# dh_clean +# $(RM) -r $(COMMON_SRC)/*.o $(COMMON_SRC)/.*.cmd +# (for mod in $(MODULE_DIRS); do \ +# make -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules clean; \ +# done) diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.install b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.install new file mode 100644 index 000000000000..955583027537 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.install @@ -0,0 +1,3 @@ +6512-32r/utils/* usr/local/bin +6512-32r/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-wistron_6512_32r-r0 +6512-32r/service/*.service lib/systemd/system diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.postinst b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.postinst new file mode 100644 index 000000000000..b1cef228e7ee --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.postinst @@ -0,0 +1,41 @@ +#!/bin/bash + +kernel_version=$(uname -r) + +for i in $(seq 1 10); +do + if [ -e /lib/modules/${kernel_version}/modules.dep ];then + wisko=$(cat /lib/modules/${kernel_version}/modules.dep | grep wistron) + ipdko=$(cat /lib/modules/${kernel_version}/modules.dep | grep ipd) + if [ "$wisko" == "" ] || [ "$ipdko" == "" ];then + depmod -a + else + if [ ! -e /lib/modules/${kernel_version}/modules.dep.bin ];then + depmod -a + else + break + fi + fi + + echo "depmod -a" + sleep 1 + else + sleep 1 + fi +done + +#Install sonic-platform package +DEVICE="/usr/share/sonic/device" +PLATFORM=$(/usr/local/bin/sonic-cfggen -H -v DEVICE_METADATA.localhost.platform) +if [ -e $DEVICE/$PLATFORM/sonic_platform-1.0-py3-none-any.whl ]; then + pip3 install $DEVICE/$PLATFORM/sonic_platform-1.0-py3-none-any.whl +fi + +systemctl enable platform-modules-6512-32r.service +systemctl start platform-modules-6512-32r.service +systemctl enable 6512-32r-platform.service +systemctl start 6512-32r-platform.service +systemctl enable 6512-32r-syseeprom.service +systemctl start 6512-32r-syseeprom.service +systemctl enable 6512-32r-firmware_ver.service +systemctl start 6512-32r-firmware_ver.service diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.install b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.install new file mode 100644 index 000000000000..2323a24d6bcc --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.install @@ -0,0 +1,4 @@ +sw-to3200k/utils/* usr/local/bin +sw-to3200k/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-wistron_sw_to3200k-r0 +sw-to3200k/cfg/sw-to3200k-modules.conf etc/modules-load.d +sw-to3200k/service/*.service lib/systemd/system diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.postinst b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.postinst new file mode 100644 index 000000000000..9a1d167da53d --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.postinst @@ -0,0 +1,43 @@ +#!/bin/bash + +kernel_version=$(uname -r) + +for i in $(seq 1 10); +do + if [ -e /lib/modules/${kernel_version}/modules.dep ];then + wisko=$(cat /lib/modules/${kernel_version}/modules.dep | grep wistron) + ipdko=$(cat /lib/modules/${kernel_version}/modules.dep | grep ipd) + if [ "$wisko" == "" ] || [ "$ipdko" == "" ];then + depmod -a + else + if [ ! -e /lib/modules/${kernel_version}/modules.dep.bin ];then + depmod -a + else + break + fi + fi + + echo "depmod -a" + sleep 1 + else + sleep 1 + fi +done + +#Install sonic-platform package +DEVICE="/usr/share/sonic/device" +PLATFORM=$(/usr/local/bin/sonic-cfggen -H -v DEVICE_METADATA.localhost.platform) +if [ -e $DEVICE/$PLATFORM/sonic_platform-1.0-py3-none-any.whl ]; then + pip3 install $DEVICE/$PLATFORM/sonic_platform-1.0-py3-none-any.whl +fi + +systemctl enable platform-modules-sw-to3200k.service +systemctl start platform-modules-sw-to3200k.service +systemctl enable sw-to3200k-firmware_ver.service +systemctl start sw-to3200k-firmware_ver.service +systemctl enable to3200k-platform.service +systemctl start to3200k-platform.service +systemctl enable to3200k-led.service +systemctl start to3200k-led.service +systemctl enable to3200k-pld.service +systemctl start to3200k-pld.service diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_i2c_psu.c b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_i2c_psu.c index 746e581486cb..5024ecdd70e6 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_i2c_psu.c +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_i2c_psu.c @@ -342,25 +342,25 @@ static ssize_t set_value } case PSU_MFR_ID: { - memset(&data->mfr_id, 0x0, sizeof(data->mfr_id)); + memzero_explicit(&data->mfr_id, sizeof(data->mfr_id)); strncpy(data->mfr_id, buf, sizeof(data->mfr_id)-1); break; } case PSU_MFR_MODEL: { - memset(&data->mfr_model, 0x0, sizeof(data->mfr_model)); + memzero_explicit(&data->mfr_model, sizeof(data->mfr_model)); strncpy(data->mfr_model, buf, sizeof(data->mfr_model)-1); break; } case PSU_MFR_REVISION: { - memset(&data->mfr_revsion, 0x0, sizeof(data->mfr_revsion)); + memzero_explicit(&data->mfr_revsion, sizeof(data->mfr_revsion)); strncpy(data->mfr_revsion, buf, sizeof(data->mfr_revsion)-1); break; } case PSU_MFR_SERIAL: { - memset(&data->mfr_serial, 0x0, sizeof(data->mfr_serial)); + memzero_explicit(&data->mfr_serial, sizeof(data->mfr_serial)); strncpy(data->mfr_serial, buf, sizeof(data->mfr_serial)-1); break; } @@ -403,7 +403,7 @@ static int wistron_i2c_psu_probe(struct i2c_client *client, const struct i2c_dev goto exit_free; } - data->hwmon_dev = hwmon_device_register(&client->dev); + data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "wistron_i2c_psu", NULL, NULL, NULL); if (IS_ERR(data->hwmon_dev)) { status = PTR_ERR(data->hwmon_dev); diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_fan.c b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_fan.c index 82dfa71b7805..0f7e856e8330 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_fan.c +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_fan.c @@ -16,6 +16,8 @@ static ssize_t get_fan_value(struct device *dev, struct device_attribute *da, char *buf); static ssize_t set_fan_value(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_version(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_version(struct device *dev, struct device_attribute *da, const char *buf, size_t count); enum fan_id { FAN1_ID, @@ -49,7 +51,7 @@ enum sysfs_fan_attributes { FAN4_DIRECTION, FAN5_DIRECTION, FAN6_DIRECTION, - FAN7_DIRECTION, + FAN7_DIRECTION, FAN1_FRONT_SPEED_RPM, FAN2_FRONT_SPEED_RPM, FAN3_FRONT_SPEED_RPM, @@ -64,6 +66,7 @@ enum sysfs_fan_attributes { FAN5_REAR_SPEED_RPM, FAN6_REAR_SPEED_RPM, FAN7_REAR_SPEED_RPM, + CPLD_VERSION, FAN_ATTR_MAX }; @@ -71,9 +74,13 @@ enum sysfs_fan_attributes { struct sw_to3200k_fan_data { struct device *hwmon_dev; struct mutex update_lock; + int version; int fan_val[FAN_ATTR_MAX]; }; +/* version */ +static SENSOR_DEVICE_ATTR(version, S_IWUSR | S_IRUGO, get_version, set_version, CPLD_VERSION); + /* Define attributes */ #define DECLARE_FAN_DUTY_CYCLE_SENSOR_DEV_ATTR(index) \ static SENSOR_DEVICE_ATTR(fan##index##_duty_cycle_percentage, S_IWUSR | S_IRUGO, get_fan_value, set_fan_value, FAN##index##_DUTY_CYCLE_PERCENTAGE) @@ -171,9 +178,40 @@ static struct attribute *sw_to3200k_fan_attributes[] = { DECLARE_FAN_DIRECTION_ATTR(6), DECLARE_FAN_DIRECTION_ATTR(7), DECLARE_FAN_DUTY_CYCLE_ATTR(), + &sensor_dev_attr_version.dev_attr.attr, NULL }; +static ssize_t get_version(struct device *dev, struct device_attribute *da, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct sw_to3200k_fan_data *data = i2c_get_clientdata(client); + int version; + + mutex_lock(&data->update_lock); + version = data->version; + mutex_unlock(&data->update_lock); + return sprintf(buf, "%d", version); +} + +static ssize_t set_version(struct device *dev, struct device_attribute *da, const char *buf, size_t count) +{ + struct i2c_client *client = to_i2c_client(dev); + struct sw_to3200k_fan_data *data = i2c_get_clientdata(client); + int error, version; + + error = kstrtoint(buf, 10, &version); + if (error) + { + return error; + } + + mutex_lock(&data->update_lock); + data->version = version; + mutex_unlock(&data->update_lock); + return count; +} + static ssize_t get_fan_value(struct device *dev, struct device_attribute *da, char *buf) { struct sensor_device_attribute *attr = to_sensor_dev_attr(da); @@ -245,7 +283,7 @@ static int sw_to3200k_fan_probe goto exit_free; } - data->hwmon_dev = hwmon_device_register(&client->dev); + data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "wistron_fan", NULL, NULL, NULL); if (IS_ERR(data->hwmon_dev)) { status = PTR_ERR(data->hwmon_dev); diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_oom.c b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_oom.c index 6e1df229c9fd..3e26edff07cc 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_oom.c +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_oom.c @@ -242,27 +242,27 @@ static ssize_t set_oom_info(struct device *dev, struct device_attribute *da, con { case OOM_EEPROM_LOW: { - memset(&data->eeproml, 0x0, sizeof(data->eeproml)); + memzero_explicit(&data->eeproml, sizeof(data->eeproml)); break; } case OOM_EEPROM_PG0: { - memset(&data->eeprom0, 0x0, sizeof(data->eeprom0)); + memzero_explicit(&data->eeprom0, sizeof(data->eeprom0)); break; } case OOM_EEPROM_PG2: { - memset(&data->eeprom2, 0x0, sizeof(data->eeprom2)); + memzero_explicit(&data->eeprom2, sizeof(data->eeprom2)); break; } case OOM_EEPROM_PG3: { - memset(&data->eeprom3, 0x0, sizeof(data->eeprom3)); + memzero_explicit(&data->eeprom3, sizeof(data->eeprom3)); break; } case OOM_EEPROM_PG11: { - memset(&data->eeprom11, 0x0, sizeof(data->eeprom11)); + memzero_explicit(&data->eeprom11, sizeof(data->eeprom11)); break; } default: @@ -332,7 +332,7 @@ static int sw_to3200k_oom_probe(struct i2c_client *client, const struct i2c_devi goto exit_free; } - data->hwmon_dev = hwmon_device_register(&client->dev); + data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "wistron_oom", NULL, NULL, NULL); if (IS_ERR(data->hwmon_dev)) { status = PTR_ERR(data->hwmon_dev); diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_psu.c b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_psu.c index 849ec1315407..418e22240ace 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_psu.c +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_psu.c @@ -140,7 +140,7 @@ static ssize_t set_string(struct device *dev, struct device_attribute *da, const struct sw_to3200k_psu_data *data = i2c_get_clientdata(client); char tmp_str[32]; - memset(&tmp_str, 0x0, sizeof(tmp_str)); + memzero_explicit(&tmp_str, sizeof(tmp_str)); if (attr->index == PSU_MODEL_NAME) { if (sscanf(buf, "%16s", tmp_str) != 1) @@ -205,7 +205,7 @@ static int sw_to3200k_psu_probe(struct i2c_client *client, goto exit_free; } - data->hwmon_dev = hwmon_device_register(&client->dev); + data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "wistron_psu", NULL, NULL, NULL); if (IS_ERR(data->hwmon_dev)) { status = PTR_ERR(data->hwmon_dev); diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_thermal.c b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_thermal.c index e96e9d723f46..a86d53a94fb3 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_thermal.c +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_thermal.c @@ -140,7 +140,7 @@ static int sw_to3200k_thermal_probe(struct i2c_client *client, const struct i2c_ goto exit_free; } - data->hwmon_dev = hwmon_device_register(&client->dev); + data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "wistron_thermal", NULL, NULL, NULL); if (IS_ERR(data->hwmon_dev)) { status = PTR_ERR(data->hwmon_dev); diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/service/sw-to3200k-firmware_ver.service b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/service/sw-to3200k-firmware_ver.service new file mode 100644 index 000000000000..c609042622c0 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/service/sw-to3200k-firmware_ver.service @@ -0,0 +1,12 @@ +[Unit] +Description=Wistron SW3200K Platform firmware version service +After=platform-modules-sw-to3200k.service +DefaultDependencies=no + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/platform_firmware_version +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/__init__.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/__init__.py index 0c73278ba9f5..afc599aeca4e 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/__init__.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/__init__.py @@ -1,2 +1,2 @@ -__all__ = ["platform", "chassis", "sfp", "eeprom", "psu", "thermal", "fan", "watchdog"] +__all__ = ["platform", "chassis", "sfp", "eeprom", "psu", "thermal", "fan", "watchdog", 'component'] from . import platform diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/chassis.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/chassis.py index 4effac20b6a4..655949d8fc56 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/chassis.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/chassis.py @@ -8,7 +8,6 @@ ############################################################################# try: import sys - import os import time import subprocess from sonic_platform_base.chassis_base import ChassisBase @@ -16,16 +15,19 @@ raise ImportError(str(e) + "- required module not found") NUM_FAN = 14 +NUM_FANTRAY = 7 NUM_PSU = 2 NUM_THERMAL = 7 NUM_SFP = 32 +NUM_COMPONENT = 6 HOST_REBOOT_CAUSE_PATH = "/host/reboot-cause/" PMON_REBOOT_CAUSE_PATH = "/usr/share/sonic/platform/api_files/reboot-cause/" REBOOT_CAUSE_FILE = "reboot-cause.txt" PREV_REBOOT_CAUSE_FILE = "previous-reboot-cause.txt" -HOST_CHK_CMD = "docker > /dev/null 2>&1" -GET_HWSKU_CMD = "sonic-cfggen -d -v DEVICE_METADATA.localhost.hwsku" -GET_PLATFORM_CMD = "sonic-cfggen -d -v DEVICE_METADATA.localhost.platform" +HOST_CHK_CMD = ["docker"] +GET_HWSKU_CMD = ["sonic-cfggen", "-d", "-v", "DEVICE_METADATA.localhost.hwsku"] +GET_PLATFORM_CMD = ["sonic-cfggen", "-d", "-v", "DEVICE_METADATA.localhost.platform"] + class Chassis(ChassisBase): """Platform-specific Chassis class""" @@ -45,6 +47,7 @@ def __init__(self): self.__initialize_thermals() self.__initialize_sfp() self.__initialize_eeprom() + self.__initialize_components() def __initialize_sfp(self): from sonic_platform.sfp import Sfp @@ -52,12 +55,12 @@ def __initialize_sfp(self): sfp_module = Sfp(index, 'QSFP_DD') self._sfp_list.append(sfp_module) - def __initialize_fan(self): - from sonic_platform.fan import Fan - for fan_index in range(0, NUM_FAN): - fan = Fan(fan_index) - self._fan_list.append(fan) + from sonic_platform.fan_drawer import FanDrawer + for fan_index in range(0, NUM_FANTRAY): + fandrawer = FanDrawer(fan_index) + self._fan_drawer_list.append(fandrawer) + self._fan_list.extend(fandrawer._fan_list) def __initialize_psu(self): from sonic_platform.psu import Psu @@ -75,8 +78,14 @@ def __initialize_eeprom(self): from sonic_platform.eeprom import Tlv self._eeprom = Tlv() + def __initialize_components(self): + from sonic_platform.component import Component + for index in range(0, NUM_COMPONENT): + component = Component(index) + self._component_list.append(component) + def __is_host(self): - return os.system(HOST_CHK_CMD) == 0 + return subprocess.call(HOST_CHK_CMD) == 0 def __read_txt_file(self, file_path): try: @@ -88,12 +97,12 @@ def __read_txt_file(self, file_path): return None def _get_sku_name(self): - p = subprocess.Popen(GET_HWSKU_CMD, shell=True, stdout=subprocess.PIPE) + p = subprocess.Popen(GET_HWSKU_CMD, stdout=subprocess.PIPE) out, err = p.communicate() return out.decode().rstrip('\n') def _get_platform_name(self): - p = subprocess.Popen(GET_PLATFORM_CMD, shell=True, stdout=subprocess.PIPE) + p = subprocess.Popen(GET_PLATFORM_CMD, stdout=subprocess.PIPE) out, err = p.communicate() return out.decode().rstrip('\n') @@ -114,7 +123,7 @@ def get_base_mac(self): """ return self._eeprom.get_mac() - def get_serial_number(self): + def get_serial(self): """ Retrieves the hardware serial number for the chassis Returns: @@ -181,7 +190,7 @@ def _get_sfp_presence(self): port_pres = {} for port in range(0, NUM_SFP): sfp = self._sfp_list[port] - port_pres[port] = sfp.get_presence() + port_pres[port] = 1 if sfp.get_presence() else 0 return port_pres @@ -217,7 +226,7 @@ def get_change_event(self, timeout=0): port_dict[port] = '0' self._transceiver_presence = cur_presence - if change_event == True: + if change_event is True: break if not forever: @@ -231,3 +240,86 @@ def get_change_event(self, timeout=0): sfp.reinit() return True, ret_dict + + def initizalize_system_led(self): + self.system_led = "" + return True + + def set_status_led(self, color): + """ + Sets the state of the system LED + + Args: + color: A string representing the color with which to set the + system LED + + Returns: + bool: True if system LED state is set successfully, False if not + """ + self.system_led = color + return True + + def get_status_led(self): + """ + Gets the state of the system LED + + Returns: + A string, one of the valid LED color strings which could be vendor + specified. + """ + return self.system_led + + + def get_presence(self): + """ + Retrieves the presence of the Chassis + Returns: + bool: True if Chassis is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return self._eeprom.get_model() + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. If the agent cannot determine the parent-relative position + for some reason, or if the associated value of entPhysicalContainedIn is '0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + + def get_revision(self): + """ + Retrieves the hardware revision of the device + + Returns: + string: Revision value of device + """ + + return '0' + + def get_thermal_manager(self): + raise NotImplementedError diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/component.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/component.py new file mode 100644 index 000000000000..8b855e0a5f86 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/component.py @@ -0,0 +1,240 @@ +#!/usr/bin/env python + +import subprocess +from shlex import split +from collections import namedtuple +from functools import reduce + + +try: + from sonic_platform_base.component_base import ComponentBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +CPLD_ADDR_MAPPING = { + "CPLD1": "0-0061", + "CPLD2": "0-0062", + "MB_FPGA": "0-0060", + "FAN_CPLD" : "0-0066" +} + +proc_output = namedtuple('proc_output', 'stdout stderr') +SYSFS_PATH = "/sys/bus/i2c/devices/" +#GET_BMC_VER_CMD= "ipmitool mc info | grep 'Firmware Revision' | awk '{printf $4}'" +BIOS_VERSION_PATH = "/sys/class/dmi/id/bios_version" +COMPONENT_LIST= [ + ("BIOS", "Basic Input/Output System"), + ("CPLD1", "CPLD 1"), + ("CPLD2", "CPLD 2"), + ("MB_FPGA", "MB FPGA"), + ("FAN_CPLD", "FAN CPLD"), + ("BMC", "baseboard management controller") +] + +class Component(ComponentBase): + """Platform-specific Component class""" + + DEVICE_TYPE = "component" + + def __init__(self, component_index=0): + ComponentBase.__init__(self) + self.index = component_index + self.name = self.get_name() + + def pipeline(self, starter_command, *commands): + if not commands: + try: + starter_command, *commands = starter_command.split('|') + except AttributeError: + pass + starter_command = self._parse(starter_command) + starter = subprocess.Popen(starter_command, stdout=subprocess.PIPE) + last_proc = reduce(self._create_pipe, map(self._parse, commands), starter) + return proc_output(*last_proc.communicate()) + + def _create_pipe(self, previous, command): + proc = subprocess.Popen(command, stdin=previous.stdout, stdout=subprocess.PIPE) + previous.stdout.close() + return proc + + def _parse(self, cmd): + try: + return split(cmd) + except Exception: + return cmd + + def __read_txt_file(self, file_path): + try: + with open(file_path, 'r') as fd: + data = fd.read() + return data.strip() + except IOError: + pass + return "" + + def __get_bios_version(self): + # Retrieves the BIOS firmware version + try: + with open(BIOS_VERSION_PATH, 'r') as fd: + bios_version = fd.read() + return bios_version.strip() + except Exception as e: + return None + + def __get_bmc_version(self): + try: + #GET_BMC_VER_CMD + out, err = self.pipeline("ipmitool mc info", "grep 'Firmware Revision'", "awk '{printf $4}'") + return out.decode().rstrip('\n') + except Exception as e: + print('Get exception when read bmc') + return 'None' + + def __get_cpld_version(self): + # Retrieves the CPLD firmware version + cpld_version = dict() + for cpld_name in CPLD_ADDR_MAPPING: + try: + cpld_path = "{}{}{}".format(SYSFS_PATH, CPLD_ADDR_MAPPING[cpld_name], '/version') + cpld_version_raw= int(self.__read_txt_file(cpld_path), 10) + cpld_version[cpld_name] = "{}".format(hex(cpld_version_raw)) + except Exception as e: + print('Get exception when read cpld') + cpld_version[cpld_name] = 'None' + + return cpld_version + + def get_name(self): + """ + Retrieves the name of the component + Returns: + A string containing the name of the component + """ + return COMPONENT_LIST[self.index][0] + + def get_description(self): + """ + Retrieves the description of the component + Returns: + A string containing the description of the component + """ + return COMPONENT_LIST[self.index][1] + + def get_firmware_version(self): + """ + Retrieves the firmware version of module + Returns: + string: The firmware versions of the module + """ + fw_version = None + + if self.name == "BIOS": + fw_version = self.__get_bios_version() + elif "BMC" in self.name: + fw_version = self.__get_bmc_version() + elif "CPLD" in self.name: + cpld_version = self.__get_cpld_version() + fw_version = cpld_version.get(self.name) + elif "FPGA" in self.name: + fpga_version = self.__get_cpld_version() + fw_version = fpga_version.get(self.name) + + return fw_version + + def install_firmware(self, image_path): + """ + Install firmware to module + Args: + image_path: A string, path to firmware image + Returns: + A boolean, True if install successfully, False if not + """ + raise NotImplementedError + + def get_presence(self): + """ + Retrieves the presence of the FAN + Returns: + bool: True if FAN is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return 'N/A' + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return 'N/A' + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + + def get_available_firmware_version(self, image_path): + """ + Retrieves the available firmware version of the component + Note: the firmware version will be read from image + Args: + image_path: A string, path to firmware image + Returns: + A string containing the available firmware version of the component + """ + return "N/A" + + def get_firmware_update_notification(self, image_path): + """ + Retrieves a notification on what should be done in order to complete + the component firmware update + Args: + image_path: A string, path to firmware image + Returns: + A string containing the component firmware update notification if required. + By default 'None' value will be used, which indicates that no actions are required + """ + return "None" + + def update_firmware(self, image_path): + """ + Updates firmware of the component + This API performs firmware update: it assumes firmware installation and loading in a single call. + In case platform component requires some extra steps (apart from calling Low Level Utility) + to load the installed firmware (e.g, reboot, power cycle, etc.) - this will be done automatically by API + Args: + image_path: A string, path to firmware image + Raises: + RuntimeError: update failed + """ + return False diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/eeprom.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/eeprom.py index 448e083712ce..e495b297576a 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/eeprom.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/eeprom.py @@ -41,12 +41,19 @@ def __parse_output(self, decode_output): for line in lines: try: match = re.search( - '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', line) - if match is not None: + '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+[\s]+[\S]+)', line) + if match is not None and match.group(1) == '0x25': idx = match.group(1) value = match.group(3).rstrip('\0') + _eeprom_info_dict[idx] = value + else: + match = re.search( + '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', line) + if match is not None: + idx = match.group(1) + value = match.group(3).rstrip('\0') + _eeprom_info_dict[idx] = value - _eeprom_info_dict[idx] = value except BaseException: pass return _eeprom_info_dict @@ -108,3 +115,7 @@ def get_serial(self): def get_mac(self): return self._eeprom.get('0x24', "Undefined.") + + def get_model(self): + return self._eeprom.get('0x21', "Undefined.") + diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan.py index f5b7f9e80ed6..9849cd472893 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan.py @@ -14,23 +14,66 @@ except ImportError as e: raise ImportError(str(e) + "- required module not found") +SPEED_TOLERANCE = 15 FAN_PATH = "/sys/bus/i2c/devices/0-0066/" -FANTRAY_NAME_LIST = ["FANTRAY-1", "FANTRAY-2", - "FANTRAY-3", "FANTRAY-4", - "FANTRAY-5", "FANTRAY-6", "FANTRAY-7"] -FAN_NAME_LIST = ["fan1_front","fan2_front","fan3_front","fan4_front","fan5_front","fan6_front", "fan7_front",\ -"fan1_rear","fan2_rear","fan3_rear","fan4_rear", "fan5_rear", "fan6_rear", "fan7_rear",] +SYSFS_PATH = "/sys/bus/i2c/devices/{0}-00{1}" +PSU_STS_I2C_MAPPING = { + 0: { + "num": 0, + "addr": "51" + }, + 1: { + "num": 0, + "addr": "52" + }, +} + +PSU_HWMON_I2C_MAPPING = { + 0: { + "num": 0, + "addr": "59" + }, + 1: { + "num": 0, + "addr": "5a" + }, +} + +FAN_NAME_LIST = ["FAN-1F", "FAN-1R", "FAN-2F", "FAN-2R", + "FAN-3F", "FAN-3R", "FAN-4F", "FAN-4R", + "FAN-5F", "FAN-5R", "FAN-6F", "FAN-6R", + "FAN-7F", "FAN-7R"] class Fan(FanBase): """Platform-specific Fan class""" - def __init__(self, fan_index): - self.fan_tray_index = fan_index - self.fan_presence = "fan{}_presence" - self.fan_direction = "fan{}_direction" - self.fan_speed_rpm = "fan{}_{}_speed_rpm" + def __init__(self, fan_tray_index, fan_index=0, is_psu_fan=False, psu_index=0): + self.fan_index = fan_index + self.fan_tray_index = fan_tray_index + self.is_psu_fan = is_psu_fan + + if self.is_psu_fan: + self.psu_index = psu_index + self.psu_status_i2c_num = PSU_STS_I2C_MAPPING[self.psu_index]['num'] + self.psu_status_i2c_addr = PSU_STS_I2C_MAPPING[self.psu_index]['addr'] + self.psu_status_path = SYSFS_PATH.format(self.psu_status_i2c_num, self.psu_status_i2c_addr) + self.psu_hwmon_i2c_num = PSU_HWMON_I2C_MAPPING[self.psu_index]['num'] + self.psu_hwmon_i2c_addr = PSU_HWMON_I2C_MAPPING[self.psu_index]['addr'] + self.psu_hwmon_path = SYSFS_PATH.format(self.psu_hwmon_i2c_num, self.psu_hwmon_i2c_addr) + + FanBase.__init__(self) + def __search_hwmon_dir_name(self, directory): + try: + dirs = os.listdir(directory) + for file in dirs: + if file.startswith("hwmon"): + return file + except IOError: + pass + return '' + def __read_txt_file(self, file_path): try: with open(file_path, 'r') as fd: @@ -38,22 +81,14 @@ def __read_txt_file(self, file_path): return data.strip() except IOError: pass - return "" + return None - def __write_txt_file(self, file_path, value): + def __write_txt_file(self, file_path, data): try: with open(file_path, 'w') as fd: - fd.write(str(value)) - except BaseException: - return False - return True - - def __search_file_by_name(self, directory, file_name): - for dirpath, dirnames, files in os.walk(directory): - for name in files: - file_path = os.path.join(dirpath, name) - if name in file_name: - return file_path + fd.write(data) + except IOError: + pass return None def get_direction(self): @@ -63,38 +98,46 @@ def get_direction(self): A string, either FAN_DIRECTION_INTAKE or FAN_DIRECTION_EXHAUST depending on fan direction """ - index1=self.fan_tray_index - if self.fan_tray_index>6: - index1=self.fan_tray_index%7 - fan_direction_file = (FAN_PATH + - self.fan_direction.format(index1+1)) - raw = self.__read_txt_file(fan_direction_file).strip('\r\n') - direction = self.FAN_DIRECTION_INTAKE if str( - raw).upper() == "1" else self.FAN_DIRECTION_EXHAUST + direction = 0 + if self.is_psu_fan: + path= "{}/psu_fan_dir".format(self.psu_status_path) + direction=self.__read_txt_file(path) + if direction is None: + return self.FAN_DIRECTION_EXHAUST + elif self.get_presence(): + path= "{}/fan{}_direction".format(FAN_PATH, self.fan_tray_index + 1) + direction=self.__read_txt_file(path) + if direction is None: + return self.FAN_DIRECTION_EXHAUST + + return self.FAN_DIRECTION_EXHAUST if int(direction) == 0 else self.FAN_DIRECTION_INTAKE - return direction def get_speed(self): """ Retrieves the speed of fan as a percentage of full speed Returns: An integer, the percentage of full fan speed, in the range 0 (off) - to 12000 (full speed) - """ - if self.fan_tray_index<=6: - index1=self.fan_tray_index - speed = 0 - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1,"front")) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - else: - index1=self.fan_tray_index%7 - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1,"rear")) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - + to 100 (full speed) + + """ + speed = 0 + if self.is_psu_fan: + psu_fan_path= "{}/{}".format(self.psu_hwmon_path, 'fan1_input') + fan_speed_rpm = self.__read_txt_file(psu_fan_path) + if fan_speed_rpm is not None: + speed = (int(fan_speed_rpm,10))*100/33000 + if speed > 100: + speed=100 + else: + return 0 + elif self.get_presence(): + path= "{}/fan_duty_cycle_percentage".format(FAN_PATH) + speed=self.__read_txt_file(path) + if speed is None: + return 0 + return int(int(speed)*100/255) + return int(speed) def get_target_speed(self): @@ -103,22 +146,14 @@ def get_target_speed(self): Returns: An integer, the percentage of full fan speed, in the range 0 (off) to 100 (full speed) - """ - if self.fan_tray_index<=6: - index1=self.fan_tray_index - speed = 0 - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1,"front")) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - else: - index1=self.fan_tray_index%7 - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1,"rear")) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - return int(speed) + Note: + speed_pc = pwm_target/255*100 + + 0 : when PWM mode is use + pwm : when pwm mode is not use + """ + return self.get_speed() def get_speed_tolerance(self): """ @@ -127,7 +162,7 @@ def get_speed_tolerance(self): An integer, the percentage of variance from target speed which is considered tolerable """ - return 10 + return SPEED_TOLERANCE def set_speed(self, speed): """ @@ -138,13 +173,8 @@ def set_speed(self, speed): Returns: A boolean, True if speed is set successfully, False if not - Note: - Depends on pwm or target mode is selected: - 1) pwm = speed_pc * 255 <-- Currently use this mode. - 2) target_pwm = speed_pc * 100 / 255 - 2.1) set pwm{}_enable to 3 - """ + return False def set_status_led(self, color): @@ -156,7 +186,22 @@ def set_status_led(self, color): Returns: bool: True if status LED state is set successfully, False if not """ - return False + return False #Not supported + + def get_status_led(self): + """ + Gets the state of the fan status LED + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + status=self.get_presence() + if status is None: + return self.STATUS_LED_COLOR_OFF + + return { + 1: self.STATUS_LED_COLOR_GREEN, + 0: self.STATUS_LED_COLOR_RED + }.get(status, self.STATUS_LED_COLOR_OFF) def get_name(self): """ @@ -164,24 +209,30 @@ def get_name(self): Returns: string: The name of the device """ - fan_name = FAN_NAME_LIST[self.fan_tray_index] + + fan_name = FAN_NAME_LIST[self.fan_tray_index*2 + self.fan_index] \ + if not self.is_psu_fan \ + else "PSU-{} FAN-{}".format(self.psu_index+1, self.fan_index+1) return fan_name def get_presence(self): """ - Retrieves the presence of the PSU + Retrieves the presence of the FAN Returns: - bool: True if PSU is present, False if not + bool: True if FAN is present, False if not """ - index1=self.fan_tray_index - if self.fan_tray_index>6: - index1=self.fan_tray_index%7 - fan_direction_file = (FAN_PATH + - self.fan_presence.format(index1+1)) - present_str = self.__read_txt_file(fan_direction_file) or '1' - return int(present_str) == 1 + if self.is_psu_fan: + present_path="{}/psu_present".format(self.psu_status_path) + else: + present_path="{}/fan{}_presence".format(FAN_PATH, self.fan_tray_index + 1) + + val=self.__read_txt_file(present_path) + if val is not None: + return int(val, 10)==1 + else: + return False def get_status(self): """ @@ -189,4 +240,55 @@ def get_status(self): Returns: A boolean value, True if device is operating properly, False if not """ - return self.get_presence() and self.get_speed() > 0 + if self.is_psu_fan: + psu_fan_path= "{}/{}".format(self.psu_status_path, 'psu_power_good') + val=self.__read_txt_file(psu_fan_path) + if val is not None: + return int(val, 10)==1 + else: + return False + else: + status=self.get_presence() + if status is None: + return False + return status + + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + + return "N/A" + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return "N/A" + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return (self.fan_tray_index * 2 + self.fan_index + 1) \ + if not self.is_psu_fan else (self.psu_index + 1) + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return True if not self.is_psu_fan else False + diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan_drawer.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan_drawer.py new file mode 100644 index 000000000000..c299adec1dec --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan_drawer.py @@ -0,0 +1,119 @@ +######################################################################## +# +# Module contains an implementation of SONiC Platform Base API and +# provides the Fan-Drawers' information available in the platform. +# +######################################################################## + +try: + from sonic_platform_base.fan_drawer_base import FanDrawerBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +FANS_PER_FANTRAY = 2 +MAX_FAN_WATT = 20.0 + +class FanDrawer(FanDrawerBase): + """Platform-specific Fan class""" + + def __init__(self, fantray_index): + + FanDrawerBase.__init__(self) + # FanTray is 0-based in platforms + self.fantrayindex = fantray_index + self.__initialize_fan_drawer() + + + def __initialize_fan_drawer(self): + from sonic_platform.fan import Fan + for i in range(FANS_PER_FANTRAY): + self._fan_list.append(Fan(self.fantrayindex, i)) + + def get_name(self): + """ + Retrieves the fan drawer name + Returns: + string: The name of the device + """ + return "FanTray{}".format(self.fantrayindex+1) + + def get_presence(self): + """ + Retrieves the presence of the device + Returns: + bool: True if device is present, False if not + """ + return self._fan_list[0].get_presence() + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return self._fan_list[0].get_model() + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return self._fan_list[0].get_serial() + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return self._fan_list[0].get_status() + + 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): + """ + Gets the state of the fan drawer LED + + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + return self._fan_list[0].get_status_led() + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return (self.fantrayindex+1) + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + 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 MAX_FAN_WATT + diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/psu.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/psu.py index c26b82ee4c76..78089ca3c986 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/psu.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/psu.py @@ -22,12 +22,20 @@ class Psu(PsuBase): "/sys/bus/i2c/devices/0-005a"] def __init__(self, psu_index): + self._fan_list = [] self.PSU_TEMP_MAX = 85 * 1000 self.PSU_OUTPUT_POWER_MAX = 1300 * 1000 self.PSU_OUTPUT_VOLTAGE_MIN = 11400 self.PSU_OUTPUT_VOLTAGE_MAX = 12600 self.index = psu_index PsuBase.__init__(self) + self.__initialize_fan() + + def __initialize_fan(self): + from sonic_platform.fan import Fan + for fan_index in range(0, 1): + fan = Fan(fan_index, 0, is_psu_fan=True, psu_index=self.index) + self._fan_list.append(fan) def __read_txt_file(self, file_path): try: @@ -38,15 +46,14 @@ def __read_txt_file(self, file_path): pass return "" - def get_fan(self): + def get_fan(self, index): """ Retrieves object representing the fan module contained in this PSU Returns: An object dervied from FanBase representing the fan module contained in this PSU """ - # Hardware not supported - return False + return self._fan_list[index] def get_powergood_status(self): """ @@ -84,7 +91,7 @@ def get_presence(self): bool: True if PSU is present, False if not """ attr_file ='psu_present' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file status = 0 try: with open(attr_path, 'r') as psu_prs: @@ -101,7 +108,7 @@ def get_status(self): A boolean value, True if device is operating properly, False if not """ attr_file = 'psu_power_good' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file status = 0 try: with open(attr_path, 'r') as power_status: @@ -120,13 +127,11 @@ def get_model(self): try: if self.get_presence(): attr_file = 'psu_model_name' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) return str(val) except Exception as e: - logger.error(str(e)) - - return None + return None def get_serial(self): """ @@ -137,13 +142,11 @@ def get_serial(self): try: if self.get_presence(): attr_file = 'psu_serial_number' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) return str(val) except Exception as e: - logger.error(str(e)) - - return None + return None def get_voltage(self): """ @@ -154,13 +157,11 @@ def get_voltage(self): try: if self.get_presence(): attr_file = 'psu_v_out' - attr_path = self.STATUS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.STATUS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) - return int(val) + return float(val) / 1000.0 except Exception as e: - logger.error(str(e)) - - return None + return None def get_current(self): """ @@ -171,13 +172,11 @@ def get_current(self): try: if self.get_presence(): attr_file = 'psu_i_out' - attr_path = self.STATUS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.STATUS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) - return int(val) + return float(val) / 1000.0 except Exception as e: - logger.error(str(e)) - - return None + return None def get_power(self): """ @@ -188,13 +187,11 @@ def get_power(self): try: if self.get_presence(): attr_file = 'psu_p_out' - attr_path = self.STATUS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.STATUS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) - return int(val) + return float(val) / 1000000.0 except Exception as e: - logger.error(str(e)) - - return None + return None def get_status_led(self): """ @@ -221,13 +218,11 @@ def get_temperature(self): try: if self.get_presence(): attr_file = 'psu_temp1_input' - attr_path = self.STATUS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.STATUS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) - return int(val) + return float(val) / 1000.0 except Exception as e: - logger.error(str(e)) - - return None + return None def get_temperature_high_threshold(self): """ @@ -272,7 +267,42 @@ def get_position_in_parent(self): Returns: integer: The 1-based relative physical position in parent device or -1 if cannot determine the position """ - return -1 + return self.index + 1 def is_replaceable(self): return True + + def get_revision(self): + """ + Retrieves the hardware revision of the device + Returns: + string: Revision value of device + """ + try: + if self.get_presence(): + attr_file = 'psu_mfr_revision' + attr_path = self.STATUS_PSU_DIR[self.index] +'/' + attr_file + with open(attr_path, 'r') as revision: + val = revision.read() + return val.strip() + except IOError: + return None + + def get_num_fans(self): + """ + Retrieves the number of fan modules available on this PSU + + Returns: + An integer, the number of fan modules available on this PSU + """ + return len(self._fan_list) + + def get_all_fans(self): + """ + Retrieves all fan modules available on this PSU + + Returns: + A list of objects derived from FanBase representing all fan + modules available on this PSU + """ + return self._fan_list diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/sfp.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/sfp.py index 004bda2ada66..63225a040472 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/sfp.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/sfp.py @@ -11,6 +11,8 @@ from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_InterfaceId from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_Dom from sonic_platform_base.sonic_sfp.sffbase import sffbase + from sonic_platform_base.sonic_sfp.sff8024 import type_abbrv_name + from sonic_platform_base.sonic_sfp.sff8024 import type_of_media_interface from sonic_py_common.logger import Logger import sys except ImportError as e: @@ -277,6 +279,7 @@ def __init__(self, sfp_index, sfp_type): # Init index self.index = sfp_index self.port_num = self.index + 1 + self.abbrv = None # Init eeprom path eeprom_low_path = '/sys/bus/i2c/devices/0-00{}/eeprom_low' @@ -328,7 +331,7 @@ def get_presence(self): except IOError: return False logger.log_info("debug:port_ %s sfp presence is %s" % (str(self.index), str(presence))) - return presence + return True if presence == 1 else False def _read_eeprom_specific_bytes(self, offset, num_bytes, page = 0): sysfsfile_eeprom = None @@ -383,8 +386,10 @@ def _detect_sfp_type(self, sfp_type): if eeprom_raw: if eeprom_raw[0] in QSFP_TYPE_CODE_LIST: self.sfp_type = QSFP_TYPE + self.abbrv = type_abbrv_name[eeprom_raw[0]] elif eeprom_raw[0] in QSFP_DD_TYPE_CODE_LIST: self.sfp_type = QSFP_DD_TYPE + self.abbrv = type_abbrv_name[eeprom_raw[0]] else: # we don't regonize this identifier value, treat the xSFP module as the default type self.sfp_type = sfp_type @@ -395,6 +400,7 @@ def _detect_sfp_type(self, sfp_type): # eeprom_raw being None indicates the module is not present. # in this case we treat it as the default type according to the SKU self.sfp_type = sfp_type + self.abbrv = type_abbrv_name['18'] def _dom_capability_detect(self): @@ -426,7 +432,7 @@ def _dom_capability_detect(self): if qsfp_dom_capability_raw is not None: qsfp_version_compliance_raw = self._read_eeprom_specific_bytes(QSFP_VERSION_COMPLIANCE_OFFSET, QSFP_VERSION_COMPLIANCE_WIDTH) qsfp_version_compliance = int(qsfp_version_compliance_raw[0], 16) - dom_capability = sfpi_obj.parse_qsfp_dom_capability(qsfp_dom_capability_raw, 0) + dom_capability = sfpi_obj.parse_dom_capability(qsfp_dom_capability_raw, 0) if qsfp_version_compliance >= 0x08: self.dom_temp_supported = dom_capability['data']['Temp_support']['value'] == 'On' self.dom_volt_supported = dom_capability['data']['Voltage_support']['value'] == 'On' @@ -462,11 +468,13 @@ def _dom_capability_detect(self): self.dom_temp_supported = True self.dom_volt_supported = True + self.dom_rx_tx_power_bias_supported = False + self.dom_tx_bias_power_supported = True # two types of QSFP-DD cable types supported: Copper and Optical. qsfp_dom_capability_raw = self._read_eeprom_specific_bytes(QSFP_DD_FLAT_MEM['offset'], QSFP_DD_FLAT_MEM['width'], QSFP_DD_FLAT_MEM['page']) if qsfp_dom_capability_raw is not None: - dom_capability = sfpi_obj.parse_qsfp_dom_capability(qsfp_dom_capability_raw, 0) + dom_capability = sfpi_obj.parse_dom_capability(qsfp_dom_capability_raw, 0) if dom_capability['data']['Flat_MEM']['value'] == 'Off': ext_dd = ext_qsfp_dd() @@ -474,8 +482,8 @@ def _dom_capability_detect(self): mon_sup_data = ext_dd.parse_mon_capability(mon_sup_raw, 0) self.dom_thresholds_supported = mon_sup_data['data']['Tx_power_support']['value'] == 'On' - self.dom_rx_power_supported = mon_sup_data['data']['Tx_power_support']['value'] == 'On' - self.dom_tx_power_supported = mon_sup_data['data']['Rx_power_support']['value'] == 'On' + self.dom_rx_power_supported = mon_sup_data['data']['Rx_power_support']['value'] == 'On' + self.dom_tx_power_supported = mon_sup_data['data']['Tx_power_support']['value'] == 'On' self.dom_tx_bias_supported = mon_sup_data['data']['Tx_bias_support']['value'] == 'On' #self.dom_temp_supported = mon_sup_data['data']['Temp_support']['value'] == 'On' #self.dom_volt_supported = mon_sup_data['data']['Voltage_support']['value'] == 'On' @@ -490,7 +498,7 @@ def _dom_capability_detect(self): def _convert_string_to_num(self, value_str): if "-inf" in value_str: - return 'N/A' + return '-inf' elif "Unknown" in value_str: return 'N/A' elif 'dBm' in value_str: @@ -534,8 +542,19 @@ def get_transceiver_info(self): application_advertisement |1*255VCHAR |supported applications advertisement ================================================================================ """ + self.reinit() + info_dict_keys = [ + 'type', 'hardware_rev', 'serial', 'manufacturer', + 'model', 'connector', 'encoding', 'ext_identifier', + 'ext_rateselect_compliance', 'cable_type', 'cable_length', + 'nominal_bit_rate', 'specification_compliance', 'vendor_date', + 'vendor_oui', 'application_advertisement', 'type_abbrv_name'] + transceiver_info_dict = {} compliance_code_dict = {} + transceiver_info_dict = dict.fromkeys(info_dict_keys, "NA") + transceiver_info_dict["specification_compliance"] = '{}' + transceiver_info_dict['type_abbrv_name'] = self.abbrv #QSFP if self.sfp_type == QSFP_TYPE: @@ -684,6 +703,7 @@ def get_transceiver_info(self): if sfp_media_type_dict is None: return None + transceiver_info_dict['specification_compliance'] = type_of_media_interface[sfp_media_type_raw[0]] host_media_list = "" sfp_application_type_first_list = self._read_eeprom_specific_bytes((XCVR_FIRST_APPLICATION_LIST_OFFSET_QSFP_DD), XCVR_FIRST_APPLICATION_LIST_WIDTH_QSFP_DD) possible_application_count = 8 @@ -711,7 +731,6 @@ def get_transceiver_info(self): transceiver_info_dict['encoding'] = "Not supported for CMIS cables" transceiver_info_dict['ext_identifier'] = str(sfp_ext_identifier_data['data']['Extended Identifier']['value']) transceiver_info_dict['ext_rateselect_compliance'] = "Not supported for CMIS cables" - transceiver_info_dict['specification_compliance'] = "Not supported for CMIS cables" transceiver_info_dict['cable_type'] = "Length Cable Assembly(m)" transceiver_info_dict['cable_length'] = str(sfp_cable_len_data['data']['Length Cable Assembly(m)']['value']) transceiver_info_dict['nominal_bit_rate'] = "Not supported for CMIS cables" @@ -748,6 +767,7 @@ def get_transceiver_bulk_status(self): TX power |INT |TX output power in mW ======================================================================== """ + self.reinit() transceiver_dom_info_dict = {} dom_info_dict_keys = ['temperature', 'voltage', @@ -844,7 +864,7 @@ def get_transceiver_bulk_status(self): dom_data_raw = self._read_eeprom_specific_bytes(QSFP_DD_CHANNL_MON['offset'], QSFP_DD_CHANNL_MON['width'], QSFP_DD_CHANNL_MON['page']) dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(dom_data_raw, 0) - if self.dom_rx_power_supported: + if self.dom_tx_power_supported: transceiver_dom_info_dict['tx1power'] = dom_channel_monitor_data['data']['TX1Power']['value'] transceiver_dom_info_dict['tx2power'] = dom_channel_monitor_data['data']['TX2Power']['value'] transceiver_dom_info_dict['tx3power'] = dom_channel_monitor_data['data']['TX3Power']['value'] @@ -907,6 +927,7 @@ def get_transceiver_threshold_info(self): txbiaslowwarning |FLOAT |Low Warning Threshold value of tx Bias Current in mA. ======================================================================== """ + self.reinit() transceiver_dom_threshold_info_dict = {} dom_info_dict_keys = ['temphighalarm', 'temphighwarning', @@ -1031,6 +1052,7 @@ def get_rx_los(self): A Boolean, True if SFP has RX LOS, False if not. Note : RX LOS status is latched until a call to get_rx_los or a reset. """ + self.reinit() if not self.dom_supported: return None @@ -1052,7 +1074,7 @@ def get_rx_los(self): if self.dom_rx_tx_power_bias_supported: #not implement dom_channel_monitor_raw = self._read_eeprom_specific_bytes(QSFP_DD_CHANNL_RX_LOS_STATUS['offset'], QSFP_DD_CHANNL_RX_LOS_STATUS['width'], QSFP_DD_CHANNL_RX_LOS_STATUS['page']) if dom_channel_monitor_raw is not None: - rx_los_data = int(dom_channel_monitor_raw[0], 8) + rx_los_data = int(dom_channel_monitor_raw[0], 16) rx_los_list.append(rx_los_data & 0x01 != 0) rx_los_list.append(rx_los_data & 0x02 != 0) rx_los_list.append(rx_los_data & 0x04 != 0) @@ -1072,6 +1094,7 @@ def get_tx_fault(self): A Boolean, True if SFP has TX fault, False if not Note : TX fault status is lached until a call to get_tx_fault or a reset. """ + self.reinit() if not self.dom_supported: return None @@ -1104,6 +1127,7 @@ def get_tx_disable(self): for SFP, the TX Disable State and Soft TX Disable Select is ORed as the tx_disable status returned These two bits are bit 7 & 6 in byte 110 page a2 respectively """ + self.reinit() if not self.dom_supported: return None @@ -1174,6 +1198,7 @@ def get_temperature(self): Returns: An integer number of current temperature in Celsius """ + self.reinit() if not self.dom_supported: return None #QSFP @@ -1218,6 +1243,7 @@ def get_voltage(self): Returns: An integer number of supply voltage in mV """ + self.reinit() if not self.dom_supported: return None @@ -1263,6 +1289,7 @@ def get_tx_bias(self): for channel 0 to channel 4. Ex. ['110.09', '111.12', '108.21', '112.09'] """ + self.reinit() tx_bias_list = [] #QSFP @@ -1289,7 +1316,7 @@ def get_tx_bias(self): if sfpd_obj is None: return None - if dom_tx_bias_power_supported: + if self.dom_tx_bias_power_supported: dom_tx_bias_raw = self._read_eeprom_specific_bytes(QSFP_DD_TX_BIAS['offset'], QSFP_DD_TX_BIAS['width'], QSFP_DD_TX_BIAS['page']) if dom_tx_bias_raw is not None: dom_tx_bias_data = sfpd_obj.parse_dom_tx_bias(dom_tx_bias_raw, 0) @@ -1313,6 +1340,7 @@ def get_rx_power(self): power in mW for channel 0 to channel 4. Ex. ['1.77', '1.71', '1.68', '1.70'] """ + self.reinit() rx_power_list = [] #QSFP @@ -1368,6 +1396,7 @@ def get_tx_power(self): for channel 0 to channel 4. Ex. ['1.86', '1.86', '1.86', '1.86'] """ + self.reinit() tx_power_list = [] #QSFP @@ -1513,3 +1542,40 @@ def get_serial(self): transceiver_dom_info_dict = self.get_transceiver_info() return transceiver_dom_info_dict.get("serial", "N/A") + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return self.get_presence() and not self.get_reset_status() + + def get_position_in_parent(self): + """ + Returns: + Temp return 0 + """ + return 0 + + def is_replaceable(self): + """ + Retrieves if replaceable + Returns: + A boolean value, True if replaceable + """ + return True + + def get_error_description(self): + """ + Get error description + + Args: + error_code: The error code returned by _get_error_code + + Returns: + The error description + """ + if self.get_presence(): + return self.SFP_STATUS_OK + else: + return self.SFP_STATUS_UNPLUGGED diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/thermal.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/thermal.py index f45d930e87f5..730f5b1c6c21 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/thermal.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/thermal.py @@ -9,6 +9,7 @@ import os import os.path +import subprocess try: from sonic_platform_base.thermal_base import ThermalBase @@ -28,8 +29,14 @@ class Thermal(ThermalBase): "/sys/bus/i2c/devices/0-004d/", "/sys/bus/i2c/devices/0-004e/"] + IPMI_SENSOR_NR = ["0x30", "0x31", "0x32", "0x33", "0x34", "0x35", "0x36"] + def __init__(self, thermal_index): self.index = thermal_index + self.lnc = None + self.lcr = None + self.unc = None + self.ucr = None # Add thermal name self.THERMAL_NAME_LIST.append("Top-Rear") @@ -40,6 +47,20 @@ def __init__(self, thermal_index): self.THERMAL_NAME_LIST.append("Bottom-Front") self.THERMAL_NAME_LIST.append("Bottom-Rear") ThermalBase.__init__(self) + self.minimum_thermal = self.get_temperature() + self.maximum_thermal = self.get_temperature() + self.__initialize_threshold() + + def __initialize_threshold(self): + cmd = ["ipmitool", "raw", "0x4", "0x27"] + if self.lnc is None: + cmd.append(self.IPMI_SENSOR_NR[self.index]) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + self.unc = float(int(out.split()[4],16)) + self.ucr = float(int(out.split()[5],16)) + self.lnc = float(int(out.split()[1],16) if int(out.split()[1],16) != 0 else 2) + self.lcr = float(int(out.split()[2],16)) def __read_txt_file(self, file_path): try: @@ -57,7 +78,7 @@ def __get_temp(self, temp_file): return "{:.3f}".format(temp) def __set_threshold(self, file_name, temperature): - temp_file_path = os.path.join(self.hwmon_path, file_name) + temp_file_path = os.path.join(self.SYSFS_THERMAL_DIR[self.index], file_name) try: with open(temp_file_path, 'w') as fd: fd.write(str(temperature)) @@ -81,7 +102,8 @@ def get_low_threshold(self): :return: A float number, the low threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - return int(9) + + return self.lnc def get_low_critical_threshold(self): """ @@ -89,7 +111,8 @@ def get_low_critical_threshold(self): :return: A float number, the low critical threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - return int(7) + + return self.lcr def get_high_threshold(self): """ @@ -98,20 +121,8 @@ def get_high_threshold(self): A float number, the high threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - if self.index==0: - return int(56) - elif self.index==1: - return int(74) - elif self.index==2: - return int(55) - elif self.index==3: - return int(74) - elif self.index==4: - return int(55) - elif self.index==5: - return int(74) - else: - return int(56) + + return self.unc def get_high_critical_threshold(self): """ @@ -119,20 +130,8 @@ def get_high_critical_threshold(self): :return: A float number, the high critical threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - if self.index==0: - return int(58) - elif self.index==1: - return int(76) - elif self.index==2: - return int(57) - elif self.index==3: - return int(76) - elif self.index==4: - return int(57) - elif self.index==5: - return int(76) - else: - return int(58) + + return self.ucr def get_name(self): """ @@ -144,12 +143,12 @@ def get_name(self): def get_presence(self): """ - Retrieves the presence of the PSU + Retrieves the presence of the sensor Returns: - bool: True if PSU is present, False if not + bool: True if sensor is present, False if not """ temp_file = "temp1_input" - temp_file_path = os.path.join(self.hwmon_path, temp_file) + temp_file_path = os.path.join(self.SYSFS_THERMAL_DIR[self.index], temp_file) return os.path.isfile(temp_file_path) def get_status(self): @@ -163,3 +162,63 @@ def get_status(self): return True + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return "None" + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return "None" + + def is_replaceable(self): + """ + Retrieves whether thermal module is replaceable + Returns: + A boolean value, True if replaceable, False if not + """ + return False + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return self.index + 1 + + def get_minimum_recorded(self): + """ + Retrieves the minimum recorded temperature of thermal + Returns: + A float number, the minimum recorded temperature of thermal in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + tmp = self.get_temperature() + if tmp < self.minimum_thermal: + self.minimum_thermal = tmp + return self.minimum_thermal + + def get_maximum_recorded(self): + """ + Retrieves the maximum recorded temperature of thermal + Returns: + A float number, the maximum recorded temperature of thermal in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + tmp = self.get_temperature() + if tmp > self.maximum_thermal: + self.maximum_thermal = tmp + return self.maximum_thermal + diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_firmware_version b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_firmware_version new file mode 100755 index 000000000000..0ce6e8624436 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_firmware_version @@ -0,0 +1,24 @@ +#!/bin/bash +ver_str=$(ipmitool raw 0x30 0x23 2>>/dev/null) +fpga_ver=$(echo $ver_str | awk '{printf $3}') +cpld1_ver=$(echo $ver_str | awk '{printf $4}') +cpld2_ver=$(echo $ver_str | awk '{printf $5}') +fan_cpld_ver=$(echo $ver_str | awk '{printf $6}') + +cpld1_ver=$( printf "%d" 0x$cpld1_ver ) +cpld2_ver=$( printf "%d" 0x$cpld2_ver ) +fan_cpld_ver=$( printf "%d" 0x$fan_cpld_ver ) +fpga_ver=$( printf "%d" 0x$fpga_ver ) + +cpld1_ver_path="/sys/bus/i2c/devices/0-0061/version" +cpld2_ver_path="/sys/bus/i2c/devices/0-0062/version" +fan_cpld_ver_path="/sys/bus/i2c/devices/0-0066/version" +fpga_ver_path="/sys/bus/i2c/devices/0-0060/version" + +echo $cpld1_ver > $cpld1_ver_path +echo $cpld2_ver > $cpld2_ver_path +echo $fpga_ver > $fpga_ver_path +echo $fan_cpld_ver > $fan_cpld_ver_path + +exit 0 + diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_led b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_led old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_pld b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_pld old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_sync b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_sync old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-fanthrml-monitor b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-fanthrml-monitor old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-led-monitor b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-led-monitor old mode 100644 new mode 100755 index ba4f4c8dae99..364ac53b1865 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-led-monitor +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-led-monitor @@ -2,6 +2,7 @@ #0=off, 1=green, 2=amber, 3=blk_green led_state=0 +pre_loc_state=0 #$1=led_no(1=loc, 2=diag, 3=fan, 4=psu1, 5=psu2) bmc_led_read() @@ -128,37 +129,10 @@ bmc_led_read() return 0 } -#$1=led_no(1=loc, 2=diag, 3=fan, 4=psu1, 5=psu2) -#$2=led_val(0=off, 1=green, 2=amber, 3=blk_green) +#$1=led_val(0=off, 1=green, 2=amber, 3=blk_green) bmc_led_write() { - led_val=$2 - val=$(ipmitool raw 0x30 0x97 2>>/dev/null) - loc_val=$(echo $val | awk '{printf $1}') - diag_val=$(echo $val | awk '{printf $2}') - fan_val=$(echo $val | awk '{printf $3}') - psu1_val=$(echo $val | awk '{printf $4}') - psu2_val=$(echo $val | awk '{printf $5}') - - loc_val=$( printf "%d" 0x$loc_val ) - diag_val=$( printf "%d" 0x$diag_val ) - fan_val=$( printf "%d" 0x$fan_val ) - psu1_val=$( printf "%d" 0x$psu1_val ) - psu2_val=$( printf "%d" 0x$psu2_val ) - - if [ $1 -eq 1 ];then - loc_val=$(($loc_val & $led_val)) - elif [ $1 -eq 2 ];then - diag_val=$(($diag_val & $led_val)) - elif [ $1 -eq 3 ];then - fan_val=$(($fan_val & $led_val)) - elif [ $1 -eq 4 ];then - psu1_val=$(($psu1_val & $led_val)) - else - psu2_val=$(($psu2_val & $led_val)) - fi - - ipmitool raw 0x30 0x96 $loc_val $diag_val $fan_val $psu1_val $psu2_val 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x2b 0x2 0xc0 0x0 0x55 0x"$1"0 1>>/dev/null 2>>/dev/null } LED_monitor() @@ -171,7 +145,13 @@ LED_monitor() do if [ -e /sys/bus/i2c/devices/0-0060/sys_led_diag ];then loc_state=$(cat /sys/bus/i2c/devices/0-0060/sys_led_loc | awk '{printf $1}') - bmc_led_write 1 $loc_state + if [ $loc_state -gt 4 ]; then + loc_state=4 + fi + if [ $loc_state != $pre_loc_state ]; then + bmc_led_write $loc_state + pre_loc_state=$loc_state + fi bmc_led_read 2 if [ $? -eq 1 ];then diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-psu-monitor b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-psu-monitor old mode 100644 new mode 100755 index bcb3502e4a7c..d5cfd719344b --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-psu-monitor +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-psu-monitor @@ -85,61 +85,73 @@ get_PSU_information() #PSU1 Vin add_byte 1 2 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_v_in fi #PSU2 Vin add_byte 3 4 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_v_in fi #PSU 1 Vout add_byte 5 6 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_v_out fi #PSU 2 Vout add_byte 7 8 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_v_out fi #PSU 1 Iin add_byte 9 10 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_i_in fi #PSU 2 Iin add_byte 11 12 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_i_in fi #PSU 1 Iout add_byte 13 14 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_i_out fi #PSU 2 Iout add_byte 15 16 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_i_out fi #PSU 1 Pin add_byte 17 18 if [ $? -eq 1 ];then + Value=$((Value * 1000000)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_p_in fi #PSU 2 Pin add_byte 19 20 if [ $? -eq 1 ];then + Value=$((Value * 1000000)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_p_in fi #PSU 1 Pout add_byte 21 22 if [ $? -eq 1 ];then + Value=$((Value * 1000000)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_p_out fi #PSU 2 Pout add_byte 23 24 if [ $? -eq 1 ];then + Value=$((Value * 1000000)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_p_out fi #PSU 1 Fan speed @@ -156,9 +168,11 @@ get_PSU_information() #----------------93->/58/59----psu_fan1_fault psu_temp1_input psu_fan1_duty_cycle #PSU 1 Temp1 byte_read 25 + Value=$((Value * 1000)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_temp1_input #PSU 2 Temp1 byte_read 26 + Value=$((Value * 1000)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_temp1_input if [ $debug_flag -eq 0 ];then #PSU 1 Fan command @@ -314,8 +328,8 @@ PSU_monitor() { while true - do - + do + get_PSU_information if [ $debug_flag -eq 1 ];then bmc_fan_speed_ctrl diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-qsfp-monitor b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-qsfp-monitor old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sw_to3200k_watchdog.sh b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sw_to3200k_watchdog.sh new file mode 100755 index 000000000000..082c3497cdc8 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sw_to3200k_watchdog.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +#we don't have watchdog design in SW3200K so always return OK to skip + +exit 0 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/wistron_sw_to3200k_util.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/wistron_sw_to3200k_util.py old mode 100644 new mode 100755 index 46121e6e7eed..c7b65e16e2c4 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/wistron_sw_to3200k_util.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/wistron_sw_to3200k_util.py @@ -229,6 +229,18 @@ def device_install(): print(output) if FORCE == 0: return status + + status, output = log_os_system("cp /usr/share/sonic/device/x86_64-wistron_sw_to3200k-r0/smartd.conf /etc/;systemctl restart smartd.service", 1) + if status: + print(output) + if FORCE == 0: + return status + + status, output = log_os_system("cp /usr/share/sonic/device/x86_64-wistron_sw_to3200k-r0/watchdog-control.service /usr/lib/systemd/system/", 1) + if status: + print(output) + if FORCE == 0: + return status return def device_uninstall(): @@ -284,12 +296,6 @@ def do_install(): else: print(PROJECT_NAME.upper()+" devices detected....") - status, output = log_os_system( - "/bin/sh /usr/local/bin/platform_api_mgnt.sh init", 1) - if status: - print(output) - if FORCE == 0: - return status return def do_uninstall(): From f4550e8b89cd7d49ccc10bdc9dc1cb5b01a2e85d Mon Sep 17 00:00:00 2001 From: Dror Prital <76714716+dprital@users.noreply.github.com> Date: Thu, 23 Feb 2023 20:23:21 +0200 Subject: [PATCH 10/46] [submodule] Advance sonic-swss pointer (#13953) Update sonic-swss submodule pointer to include the following: * baa302e Do not allow to add port to .1Q bridge while router port deletion is not completed ([#2669](https://github.com/sonic-net/sonic-swss/pull/2669)) * f66abed Support for tc-dot1p and tc-dscp qosmap ([#2559](https://github.com/sonic-net/sonic-swss/pull/2559)) * 35385ad [RouteOrch] Record ROUTE_TABLE entry programming status to APPL_STATE_DB ([#2512](https://github.com/sonic-net/sonic-swss/pull/2512)) * 0704f78 [Workaround] EvpnRemoteVnip2pOrch warmboot check failure ([#2626](https://github.com/sonic-net/sonic-swss/pull/2626)) * 4df5cab [ResponsePublisher] add pipeline support ([#2511](https://github.com/sonic-net/sonic-swss/pull/2511)) --- src/sonic-swss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-swss b/src/sonic-swss index 44ea6a08659a..baa302e232d6 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit 44ea6a08659a11723173c5272b0400882cf11347 +Subproject commit baa302e232d61a49880b23b3ef1098e47cf6d1ce From 3e316cbf24516e4ce3fc278e465e19b87f7f71ff Mon Sep 17 00:00:00 2001 From: Saikrishna Arcot Date: Thu, 23 Feb 2023 14:49:51 -0800 Subject: [PATCH 11/46] Don't create the members@ array in config_db for PC when reading from minigraph (#13660) Fixes #11873. #### Why I did it When loading from minigraph, for port channels, don't create the members@ array in config_db in the PORTCHANNEL table. This is no longer needed or used. In addition, when adding a port channel member from the CLI, that member doesn't get added into the members@ array, resulting in a bit of inconsistency. This gets rid of that inconsistency. --- src/sonic-config-engine/minigraph.py | 21 +++++++++++-------- src/sonic-config-engine/tests/test_cfggen.py | 4 ++-- .../tests/test_minigraph_case.py | 2 +- .../tests/test_multinpu_cfggen.py | 10 ++++----- src/sonic-yang-mgmt/tests/test_cfghelp.py | 20 +++++++++--------- .../tests/files/sample_config_db.json | 13 ------------ .../yang_model_tests/tests_config/mclag.json | 9 -------- .../tests_config/portchannel.json | 18 ---------------- .../tests_config/vlan_sub_interface.json | 12 ----------- .../yang-models/sonic-portchannel.yang | 17 --------------- 10 files changed, 30 insertions(+), 96 deletions(-) diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index 094d62bf2674..313c2ebfaded 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -532,9 +532,9 @@ def parse_dpg(dpg, hname): intfs_inpc.append(pcmbr_list[i]) pc_members[(pcintfname, pcmbr_list[i])] = {} if pcintf.find(str(QName(ns, "Fallback"))) != None: - pcs[pcintfname] = {'members': pcmbr_list, 'fallback': pcintf.find(str(QName(ns, "Fallback"))).text, 'min_links': str(int(math.ceil(len() * 0.75))), 'lacp_key': 'auto'} + pcs[pcintfname] = {'fallback': pcintf.find(str(QName(ns, "Fallback"))).text, 'min_links': str(int(math.ceil(len() * 0.75))), 'lacp_key': 'auto'} else: - pcs[pcintfname] = {'members': pcmbr_list, 'min_links': str(int(math.ceil(len(pcmbr_list) * 0.75))), 'lacp_key': 'auto' } + pcs[pcintfname] = {'min_links': str(int(math.ceil(len(pcmbr_list) * 0.75))), 'lacp_key': 'auto' } port_nhipv4_map = {} port_nhipv6_map = {} nhg_int = "" @@ -1244,7 +1244,7 @@ def filter_acl_table_for_backend(acls, vlan_members): } return filter_acls -def filter_acl_table_bindings(acls, neighbors, port_channels, sub_role, device_type, is_storage_device, vlan_members): +def filter_acl_table_bindings(acls, neighbors, port_channels, pc_members, sub_role, device_type, is_storage_device, vlan_members): if device_type == 'BackEndToRRouter' and is_storage_device: return filter_acl_table_for_backend(acls, vlan_members) @@ -1263,8 +1263,8 @@ def filter_acl_table_bindings(acls, neighbors, port_channels, sub_role, device_t # Get the front panel port channel. for port_channel_intf in port_channels: - backend_port_channel = any(lag_member in backplane_port_list \ - for lag_member in port_channels[port_channel_intf]['members']) + backend_port_channel = any(lag_member[1] in backplane_port_list \ + for lag_member in list(pc_members.keys()) if lag_member[0] == port_channel_intf) if not backend_port_channel: front_port_channel_intf.append(port_channel_intf) @@ -1763,12 +1763,15 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw if port_config_file: port_set = set(ports.keys()) - for (pc_name, mbr_map) in list(pcs.items()): + for (pc_name, pc_member) in list(pc_members.keys()): # remove portchannels that contain ports not existing in port_config.ini # when port_config.ini exists - if not set(mbr_map['members']).issubset(port_set): - print("Warning: ignore '%s' as part of its member interfaces is not in the port_config.ini" % pc_name, file=sys.stderr) + if (pc_name, pc_member) in pc_members and pc_member not in port_set: + print("Warning: ignore '%s' as at least one of its member interfaces ('%s') is not in the port_config.ini" % (pc_name, pc_member), file=sys.stderr) del pcs[pc_name] + pc_mbr_del_keys = [f for f in list(pc_members.keys()) if f[0] == pc_name] + for pc_mbr_del_key in pc_mbr_del_keys: + del pc_members[pc_mbr_del_key] # set default port channel MTU as 9100 and admin status up and default TPID 0x8100 for pc in pcs.values(): @@ -1872,7 +1875,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw 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, current_device['type'], is_storage_device, vlan_members) + results['ACL_TABLE'] = filter_acl_table_bindings(acls, neighbors, pcs, pc_members, sub_role, current_device['type'], is_storage_device, vlan_members) results['FEATURE'] = { 'telemetry': { 'state': 'enabled' diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index 9b1d0b721983..3ab69fbf6cc8 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -328,7 +328,7 @@ def test_minigraph_portchannels(self, **kwargs): output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), - utils.to_dict("{'PortChannel1': {'admin_status': 'up', 'min_links': '1', 'members': ['Ethernet4'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}") + utils.to_dict("{'PortChannel1': {'admin_status': 'up', 'min_links': '1', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}") ) def test_minigraph_portchannel_with_more_member(self): @@ -336,7 +336,7 @@ def test_minigraph_portchannel_with_more_member(self): output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), - utils.to_dict("{'PortChannel01': {'admin_status': 'up', 'min_links': '3', 'members': ['Ethernet112', 'Ethernet116', 'Ethernet120', 'Ethernet124'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}")) + utils.to_dict("{'PortChannel01': {'admin_status': 'up', 'min_links': '3', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}")) def test_minigraph_portchannel_members(self): argument = ['-m', self.sample_graph_pc_test, '-p', self.port_config, '-v', "PORTCHANNEL_MEMBER.keys()|list"] diff --git a/src/sonic-config-engine/tests/test_minigraph_case.py b/src/sonic-config-engine/tests/test_minigraph_case.py index 86bd92ebe362..7f0319fa3413 100644 --- a/src/sonic-config-engine/tests/test_minigraph_case.py +++ b/src/sonic-config-engine/tests/test_minigraph_case.py @@ -158,7 +158,7 @@ def test_minigraph_portchannels(self): output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), - utils.to_dict("{'PortChannel01': {'admin_status': 'up', 'min_links': '1', 'members': ['Ethernet4'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}") + utils.to_dict("{'PortChannel01': {'admin_status': 'up', 'min_links': '1', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}") ) def test_minigraph_console_mgmt_feature(self): diff --git a/src/sonic-config-engine/tests/test_multinpu_cfggen.py b/src/sonic-config-engine/tests/test_multinpu_cfggen.py index be1f677e178e..6eb2c8674abd 100644 --- a/src/sonic-config-engine/tests/test_multinpu_cfggen.py +++ b/src/sonic-config-engine/tests/test_multinpu_cfggen.py @@ -161,16 +161,16 @@ def test_frontend_asic_portchannels(self): argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "PORTCHANNEL"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ - {'PortChannel0002': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet0', 'Ethernet4'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, - 'PortChannel4001': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP0', 'Ethernet-BP4'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, - 'PortChannel4002': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP8', 'Ethernet-BP12'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}) + {'PortChannel0002': {'admin_status': 'up', 'min_links': '2', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, + 'PortChannel4001': {'admin_status': 'up', 'min_links': '2', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, + 'PortChannel4002': {'admin_status': 'up', 'min_links': '2', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}) def test_backend_asic_portchannels(self): argument = ["-m", self.sample_graph, "-p", self.port_config[3], "-n", "asic3", "--var-json", "PORTCHANNEL"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ - {'PortChannel4013': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP384', 'Ethernet-BP388'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, - 'PortChannel4014': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP392', 'Ethernet-BP396'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}) + {'PortChannel4013': {'admin_status': 'up', 'min_links': '2', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, + 'PortChannel4014': {'admin_status': 'up', 'min_links': '2', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}) def test_frontend_asic_portchannel_mem(self): argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "-v", "PORTCHANNEL_MEMBER.keys()|list"] diff --git a/src/sonic-yang-mgmt/tests/test_cfghelp.py b/src/sonic-yang-mgmt/tests/test_cfghelp.py index 5867c78e5282..2eebebe7be3b 100644 --- a/src/sonic-yang-mgmt/tests/test_cfghelp.py +++ b/src/sonic-yang-mgmt/tests/test_cfghelp.py @@ -71,17 +71,17 @@ """ -portchannel_table_field_output="""\ +vlan_table_field_output="""\ -PORTCHANNEL -Description: PORTCHANNEL part of config_db.json +VLAN +Description: VLAN part of config_db.json key - name -+---------+-------------------------------------------+-------------+-----------+-------------+ -| Field | Description | Mandatory | Default | Reference | -+=========+===========================================+=============+===========+=============+ -| members | The field contains list of unique members | | | PORT:name | -+---------+-------------------------------------------+-------------+-----------+-------------+ ++--------------+------------------------------------------------------------------------+-------------+-----------+-------------+ +| Field | Description | Mandatory | Default | Reference | ++==============+========================================================================+=============+===========+=============+ +| dhcp_servers | The field contains list of unique membersConfigure the dhcp v4 servers | | | | ++--------------+------------------------------------------------------------------------+-------------+-----------+-------------+ """ @@ -153,9 +153,9 @@ def test_single_field(self): self.assertEqual(output, techsupport_table_field_output) def test_leaf_list(self): - argument = ['-t', 'PORTCHANNEL', '-f', 'members'] + argument = ['-t', 'VLAN', '-f', 'dhcp_servers'] output = self.run_script(argument) - self.assertEqual(output, portchannel_table_field_output) + self.assertEqual(output, vlan_table_field_output) def test_leaf_list_map(self): argument = ['-t', 'DSCP_TO_TC_MAP'] 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 375f7d24e4b5..8b80631f4fb4 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -86,9 +86,6 @@ "PortChannel0003": { "admin_status": "up", "min_links": "1", - "members": [ - "Ethernet1" - ], "tpid": "0x8100", "mtu": "9100", "lacp_key": "auto" @@ -96,9 +93,6 @@ "PortChannel0004": { "admin_status": "up", "min_links": "1", - "members": [ - "Ethernet2" - ], "tpid": "0x9200", "mtu": "9100", "lacp_key": "auto" @@ -106,19 +100,12 @@ "PortChannel2": { "admin_status": "up", "min_links": "1", - "members": [ - "Ethernet12" - ], "tpid": "0x9200", "mtu": "9100", "lacp_key": "auto" }, "PortChannel42": { "admin_status": "up", - "members": [ - "Ethernet-BP0", - "Ethernet-BP4" - ], "min_links": "2", "mtu": "9100", "tpid": "0x8100" diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/mclag.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/mclag.json index fdb2661a973a..3d2ca3c92be6 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/mclag.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/mclag.json @@ -29,9 +29,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "lacp_key": "auto", @@ -39,9 +36,6 @@ }, { "admin_status": "up", - "members": [ - "Ethernet10" - ], "min_links": "1", "mtu": "9100", "lacp_key": "auto", @@ -151,9 +145,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "lacp_key": "auto", diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json index 6c26e9ce83e6..ba0762e5ebc6 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json @@ -21,9 +21,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "tpid": "0x8100", @@ -55,9 +52,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1024", "mtu": "9100", "name": "PortChannel0001" @@ -87,9 +81,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1025", "mtu": "9100", "name": "PortChannel0001" @@ -303,9 +294,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "name": "PortChannel0001" @@ -350,9 +338,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "name": "PortChannel0001" @@ -396,9 +381,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "name": "PortChannel0001" diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vlan_sub_interface.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vlan_sub_interface.json index b249510f4370..6f200ef4b7ea 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vlan_sub_interface.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vlan_sub_interface.json @@ -196,9 +196,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "tpid": "0x8100", @@ -246,9 +243,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "tpid": "0x8100", @@ -296,9 +290,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "tpid": "0x8100", @@ -346,9 +337,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "tpid": "0x8100", diff --git a/src/sonic-yang-models/yang-models/sonic-portchannel.yang b/src/sonic-yang-models/yang-models/sonic-portchannel.yang index 31235a0d2277..96872eeadb1d 100644 --- a/src/sonic-yang-models/yang-models/sonic-portchannel.yang +++ b/src/sonic-yang-models/yang-models/sonic-portchannel.yang @@ -58,23 +58,6 @@ module sonic-portchannel { } } - leaf-list members { - /* leaf-list members are unique by default */ - type union { - type leafref { - path /port:sonic-port/port:PORT/port:PORT_LIST/port:name; - } - type string { - pattern ""; - } - } - /* Today in SONiC, we do not delete the list once - * created, instead we set to empty list. Due to that - * below default values are needed. - */ - default ""; - } - leaf min_links { type uint16 { range 1..1024; From c1dd94f3689a83d5461993bd2b1f9a5246845deb Mon Sep 17 00:00:00 2001 From: Andriy Dobush <78359998+andriydnvd@users.noreply.github.com> Date: Fri, 24 Feb 2023 01:36:37 +0200 Subject: [PATCH 12/46] Add California-SB237 feature. Requires to change default user password (#12678) #### Why I did it Add support of California-SB237 conformance. https://github.com/sonic-net/SONiC/tree/master/doc/California-SB237 #### How I did it Expire user passwords during build #### How to verify it Enable build flag and check if default user is prompted for a new password --- Makefile.work | 1 + build_debian.sh | 10 ++++++++++ check_install.py | 27 ++++++++++++++++++++++++++- rules/config | 3 +++ slave.mk | 2 ++ 5 files changed, 42 insertions(+), 1 deletion(-) diff --git a/Makefile.work b/Makefile.work index bea20edb4219..e0099429ed2a 100644 --- a/Makefile.work +++ b/Makefile.work @@ -499,6 +499,7 @@ SONIC_BUILD_INSTRUCTION := $(MAKE) \ MDEBUG=$(MDEBUG) \ PASSWORD=$(PASSWORD) \ USERNAME=$(USERNAME) \ + CHANGE_DEFAULT_PASSWORD=$(CHANGE_DEFAULT_PASSWORD) \ SONIC_BUILD_JOBS=$(SONIC_BUILD_JOBS) \ SONIC_USE_DOCKER_BUILDKIT=$(SONIC_USE_DOCKER_BUILDKIT) \ VS_PREPARE_MEM=$(VS_PREPARE_MEM) \ diff --git a/build_debian.sh b/build_debian.sh index c0f409f49d0e..b599b8c859bb 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -684,6 +684,16 @@ sudo LANG=C chroot $FILESYSTEM_ROOT umount /proc || true ## Prepare empty directory to trigger mount move in initramfs-tools/mount_loop_root, implemented by patching sudo mkdir $FILESYSTEM_ROOT/host + +if [[ "$CHANGE_DEFAULT_PASSWORD" == "y" ]]; then + ## Expire default password for exitsing users that can do login + default_users=$(cat $FILESYSTEM_ROOT/etc/passwd | grep "/home"| grep ":/bin/bash\|:/bin/sh" | awk -F ":" '{print $1}' 2> /dev/null) + for user in $default_users + do + sudo LANG=C chroot $FILESYSTEM_ROOT passwd -e ${user} + done +fi + ## Compress most file system into squashfs file sudo rm -f $ONIE_INSTALLER_PAYLOAD $FILESYSTEM_SQUASHFS ## Output the file system total size for diag purpose diff --git a/check_install.py b/check_install.py index b8fc3936f751..3a923e91deb6 100755 --- a/check_install.py +++ b/check_install.py @@ -11,6 +11,7 @@ def main(): parser = argparse.ArgumentParser(description='test_login cmdline parser') parser.add_argument('-u', default="admin", help='login user name') parser.add_argument('-P', default="YourPaSsWoRd", help='login password') + parser.add_argument('-N', default="Test@2022", help='new password') parser.add_argument('-p', type=int, default=9000, help='local port') args = parser.parse_args() @@ -20,6 +21,7 @@ def main(): cmd_prompt = "{}@sonic:~\$ $".format(args.u) grub_selection = "The highlighted entry will be executed" firsttime_prompt = 'firsttime_exit' + passwd_change_prompt = ['Current password:', 'New password:', 'Retype new password:'] i = 0 while True: @@ -36,7 +38,6 @@ def main(): # select default SONiC Image p.expect(grub_selection) p.sendline() - # bootup sonic image while True: i = p.expect([login_prompt, passwd_prompt, firsttime_prompt, cmd_prompt]) @@ -46,6 +47,30 @@ def main(): elif i == 1: # send password p.sendline(args.P) + # Check for password change prompt + try: + p.expect('Current password:', timeout=2) + except pexpect.TIMEOUT: + break + else: + # send old password for password prompt + p.sendline(args.P) + p.expect(passwd_change_prompt[1]) + # send new password + p.sendline(args.N) + p.expect(passwd_change_prompt[2]) + # retype new password + p.sendline(args.N) + time.sleep(1) + # Restore default password + p.sendline('passwd {}'.format(args.u)) + p.expect(passwd_change_prompt[0]) + p.sendline(args.N) + p.expect(passwd_change_prompt[1]) + p.sendline(args.P) + p.expect(passwd_change_prompt[2]) + p.sendline(args.P) + break elif i == 2: # fix a login timeout issue, caused by the login_prompt message mixed with the output message of the rc.local time.sleep(1) diff --git a/rules/config b/rules/config index 0cf5c00dc070..ec659631e222 100644 --- a/rules/config +++ b/rules/config @@ -39,6 +39,9 @@ DEFAULT_BUILD_LOG_TIMESTAMP = none # Comment next line to disable: # SONIC_CONFIG_ENABLE_COLORS = y +# CHANGE_DEFAULT_PASSWORD - enforce default user/users to change password on 1st login +CHANGE_DEFAULT_PASSWORD ?= n + # DEFAULT_USERNAME - default username for installer build DEFAULT_USERNAME = admin diff --git a/slave.mk b/slave.mk index dc926087f35a..5789287f1d43 100644 --- a/slave.mk +++ b/slave.mk @@ -376,6 +376,7 @@ $(info "USE_NATIVE_DOCKERD_FOR_BUILD" : "$(SONIC_CONFIG_USE_NATIVE_DOCKERD_FO $(info "SONIC_USE_DOCKER_BUILDKIT" : "$(SONIC_USE_DOCKER_BUILDKIT)") $(info "USERNAME" : "$(USERNAME)") $(info "PASSWORD" : "$(PASSWORD)") +$(info "CHANGE_DEFAULT_PASSWORD" : "$(CHANGE_DEFAULT_PASSWORD)") $(info "ENABLE_DHCP_GRAPH_SERVICE" : "$(ENABLE_DHCP_GRAPH_SERVICE)") $(info "SHUTDOWN_BGP_ON_START" : "$(SHUTDOWN_BGP_ON_START)") $(info "ENABLE_PFCWD_ON_START" : "$(ENABLE_PFCWD_ON_START)") @@ -1430,6 +1431,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ DEBUG_SRC_ARCHIVE_FILE="$(DBG_SRC_ARCHIVE_FILE)" \ USERNAME="$(USERNAME)" \ PASSWORD="$(PASSWORD)" \ + CHANGE_DEFAULT_PASSWORD="$(CHANGE_DEFAULT_PASSWORD)" \ TARGET_MACHINE=$(dep_machine) \ IMAGE_TYPE=$($*_IMAGE_TYPE) \ TARGET_PATH=$(TARGET_PATH) \ From d1bca210a603c960deeef550675fd08cf7018de4 Mon Sep 17 00:00:00 2001 From: Sambath Kumar Balasubramanian <63021927+skbarista@users.noreply.github.com> Date: Thu, 23 Feb 2023 17:54:43 -0800 Subject: [PATCH 13/46] sonic-buildimage Make changes to arista config.bcm files to support max cores (#13831) To support 64 cores on arista skus. Fixes aristanetworks/sonic#77 Remapped recycle ports to lowers core port ids and set appl_param_nof_ports_per_modid to 64. --- .../jr2-a7280cr3-32d4-40x100G.config.bcm | 20 ++++++++++--------- .../Arista-7800R3-48CQ2-C48/port_config.ini | 4 ++-- .../0/j2p-a7800r3a-36d-36x400G.config.bcm | 19 +++++++++--------- .../Arista-7800R3A-36D2-C36/0/port_config.ini | 4 ++-- .../1/j2p-a7800r3a-36d-36x400G.config.bcm | 19 +++++++++--------- .../Arista-7800R3A-36D2-C36/1/port_config.ini | 4 ++-- .../Arista-7800R3A-36D2-C36/port_config.ini | 8 ++++---- .../0/j2p-a7800r3a-36d-36x400G.config.bcm | 19 +++++++++--------- .../Arista-7800R3A-36D2-D36/0/port_config.ini | 4 ++-- .../1/j2p-a7800r3a-36d-36x400G.config.bcm | 19 +++++++++--------- .../Arista-7800R3A-36D2-D36/1/port_config.ini | 4 ++-- .../Arista-7800R3A-36D2-D36/port_config.ini | 8 ++++---- src/sonic-device-data/tests/permitted_list | 1 + 13 files changed, 70 insertions(+), 63 deletions(-) diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm index 93c5c8d21560..a10f1f5c6f24 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm @@ -493,15 +493,16 @@ tm_port_header_type_out_233.BCM8869X=CPU tm_port_header_type_in_240.BCM8869X=INJECTED_2 tm_port_header_type_out_240.BCM8869X=RAW -sai_recycle_port_lane_base=0 -ucode_port_221.BCM8869X=RCY.21:core_0.221 -ucode_port_222.BCM8869X=RCY.22:core_1.222 -tm_port_header_type_out_221.BCM8869X=ETH -tm_port_header_type_in_221.BCM8869X=ETH -tm_port_header_type_out_222.BCM8869X=ETH -tm_port_header_type_in_222.BCM8869X=ETH -port_init_speed_221.BCM8869X=400000 -port_init_speed_222.BCM8869X=400000 +#RCY +sai_recycle_port_lane_base=200 +ucode_port_49.BCM8869X=RCY0:core_0.49 +ucode_port_50.BCM8869X=RCY1:core_1.50 +tm_port_header_type_out_49.BCM8869X=ETH +tm_port_header_type_in_49.BCM8869X=ETH +tm_port_header_type_out_50.BCM8869X=ETH +tm_port_header_type_in_50.BCM8869X=ETH +port_init_speed_49.BCM8869X=400000 +port_init_speed_50.BCM8869X=400000 # fabric port_init_cl72_sfi=1 @@ -788,6 +789,7 @@ dport_map_direct.BCM8869X=1 pmf_sexem3_stage.BCM8869X=IPMF3 rif_id_max=0x6000 +appl_param_nof_ports_per_modid=64 dma_desc_aggregator_chain_length_max.BCM8869X=1000 dma_desc_aggregator_buff_size_kb.BCM8869X=100 dma_desc_aggregator_timeout_usec.BCM8869X=1000 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 34ddd34c2806..ca11e4c0dd6b 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 @@ -47,5 +47,5 @@ Ethernet176 54,55 Ethernet45/1 45 Ext 100000 1 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 +Ethernet-Rec0 249 Recirc0/0 51 Rec 400000 0 49 8 +Ethernet-IB0 250 Recirc0/1 52 Inb 400000 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm index 8421a2b9ee08..7fc12d0c432f 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm @@ -263,15 +263,15 @@ tm_port_header_type_in_219=INJECTED_2 port_init_speed_sat=400000 ### RCY -sai_recycle_port_lane_base=0 -ucode_port_221=RCY.21:core_0.221 -ucode_port_222=RCY.22:core_1.222 -tm_port_header_type_out_221=ETH -tm_port_header_type_in_221=ETH -tm_port_header_type_out_222=ETH -tm_port_header_type_in_222=ETH -port_init_speed_221=400000 -port_init_speed_222=400000 +sai_recycle_port_lane_base=200 +ucode_port_49=RCY0:core_0.49 +ucode_port_50=RCY1:core_1.50 +tm_port_header_type_out_49=ETH +tm_port_header_type_in_49=ETH +tm_port_header_type_out_50=ETH +tm_port_header_type_in_50=ETH +port_init_speed_49=400000 +port_init_speed_50=400000 #OLP port tm_port_header_type_in_240=INJECTED_2 @@ -981,5 +981,6 @@ serdes_tx_taps_34=nrz:-5:83:-22:0:0:0 serdes_tx_taps_35=nrz:-4:75:-21:0:0:0 serdes_tx_taps_36=nrz:-8:89:-29:0:0:0 +appl_param_nof_ports_per_modid=64 xflow_macsec_secure_chan_to_num_secure_assoc_encrypt=2 xflow_macsec_secure_chan_to_num_secure_assoc_decrypt=2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini index a72d84f584ea..f8448735b26f 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini @@ -17,5 +17,5 @@ Ethernet112 24,25,26,27 Ethernet15/1 15 Ext 100000 Eth1 Ethernet120 16,17,18,19 Ethernet16/1 16 Ext 100000 Eth120-ASIC0 0 16 8 Ethernet128 8,9,10,11 Ethernet17/1 17 Ext 100000 Eth128-ASIC0 0 17 8 Ethernet136 0,1,2,3 Ethernet18/1 18 Ext 100000 Eth136-ASIC0 0 18 8 -Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 221 8 -Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 222 8 +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm index 34a77903ebdf..c13991ae101f 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm @@ -263,15 +263,15 @@ tm_port_header_type_in_219=INJECTED_2 port_init_speed_sat=400000 ### RCY -sai_recycle_port_lane_base=0 -ucode_port_221=RCY.21:core_0.221 -ucode_port_222=RCY.22:core_1.222 -tm_port_header_type_out_221=ETH -tm_port_header_type_in_221=ETH -tm_port_header_type_out_222=ETH -tm_port_header_type_in_222=ETH -port_init_speed_221=400000 -port_init_speed_222=400000 +sai_recycle_port_lane_base=200 +ucode_port_49=RCY0:core_0.49 +ucode_port_50=RCY1:core_1.50 +tm_port_header_type_out_49=ETH +tm_port_header_type_in_49=ETH +tm_port_header_type_out_50=ETH +tm_port_header_type_in_50=ETH +port_init_speed_49=400000 +port_init_speed_50=400000 #OLP port tm_port_header_type_in_240=INJECTED_2 @@ -981,5 +981,6 @@ serdes_tx_taps_34=nrz:-5:75:-20:0:0:0 serdes_tx_taps_35=nrz:-5:80:-23:0:0:0 serdes_tx_taps_36=nrz:-7:85:-25:0:0:0 +appl_param_nof_ports_per_modid=64 xflow_macsec_secure_chan_to_num_secure_assoc_encrypt=2 xflow_macsec_secure_chan_to_num_secure_assoc_decrypt=2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini index 81cda90851cb..b15b00ca0953 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini @@ -17,5 +17,5 @@ Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth1 Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth120-ASIC1 0 16 8 Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth128-ASIC1 0 17 8 Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth136-ASIC1 0 18 8 -Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 221 8 -Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 222 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/port_config.ini index 3d1c79a5fe50..268ba635ed44 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/port_config.ini @@ -35,7 +35,7 @@ Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth1 Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth120-ASIC1 0 16 8 Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth128-ASIC1 0 17 8 Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth136-ASIC1 0 18 8 -Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 221 8 -Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 222 8 -Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 221 8 -Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 222 8 \ No newline at end of file +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm index 46dcd675d65c..711800de5c73 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm @@ -263,15 +263,15 @@ tm_port_header_type_in_219=INJECTED_2 port_init_speed_sat=400000 ### RCY -sai_recycle_port_lane_base=0 -ucode_port_221=RCY.21:core_0.221 -ucode_port_222=RCY.22:core_1.222 -tm_port_header_type_out_221=ETH -tm_port_header_type_in_221=ETH -tm_port_header_type_out_222=ETH -tm_port_header_type_in_222=ETH -port_init_speed_221=400000 -port_init_speed_222=400000 +sai_recycle_port_lane_base=200 +ucode_port_49=RCY0:core_0.49 +ucode_port_50=RCY1:core_1.50 +tm_port_header_type_out_49=ETH +tm_port_header_type_in_49=ETH +tm_port_header_type_out_50=ETH +tm_port_header_type_in_50=ETH +port_init_speed_49=400000 +port_init_speed_50=400000 #OLP port tm_port_header_type_in_240=INJECTED_2 @@ -1018,5 +1018,6 @@ serdes_tx_taps_34=pam4:-14:136:-14:2:0:-4 serdes_tx_taps_35=pam4:-16:141:-5:3:-2:-3 serdes_tx_taps_36=pam4:-16:137:-12:2:0:-3 +appl_param_nof_ports_per_modid=64 xflow_macsec_secure_chan_to_num_secure_assoc_encrypt=2 xflow_macsec_secure_chan_to_num_secure_assoc_decrypt=4 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini index a8a0a9603114..de840da3eb9a 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini @@ -17,5 +17,5 @@ Ethernet112 24,25,26,27,28,29,30,31 Ethernet15/1 15 Ext Ethernet120 16,17,18,19,20,21,22,23 Ethernet16/1 16 Ext 400000 Eth120-ASIC0 0 16 8 Ethernet128 8,9,10,11,12,13,14,15 Ethernet17/1 17 Ext 400000 Eth128-ASIC0 0 17 8 Ethernet136 0,1,2,3,4,5,6,7 Ethernet18/1 18 Ext 400000 Eth136-ASIC0 0 18 8 -Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 221 8 -Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 222 8 +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm index 5eb17bc354fb..c5712833d21a 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm @@ -263,15 +263,15 @@ tm_port_header_type_in_219=INJECTED_2 port_init_speed_sat=400000 ### RCY -sai_recycle_port_lane_base=0 -ucode_port_221=RCY.21:core_0.221 -ucode_port_222=RCY.22:core_1.222 -tm_port_header_type_out_221=ETH -tm_port_header_type_in_221=ETH -tm_port_header_type_out_222=ETH -tm_port_header_type_in_222=ETH -port_init_speed_221=400000 -port_init_speed_222=400000 +sai_recycle_port_lane_base=200 +ucode_port_49=RCY0:core_0.49 +ucode_port_50=RCY1:core_1.50 +tm_port_header_type_out_49=ETH +tm_port_header_type_in_49=ETH +tm_port_header_type_out_50=ETH +tm_port_header_type_in_50=ETH +port_init_speed_49=400000 +port_init_speed_50=400000 #OLP port tm_port_header_type_in_240=INJECTED_2 @@ -1018,5 +1018,6 @@ serdes_tx_taps_34=pam4:-14:136:-14:2:0:-4 serdes_tx_taps_35=pam4:-16:141:-5:3:-2:-3 serdes_tx_taps_36=pam4:-16:137:-12:2:0:-3 +appl_param_nof_ports_per_modid=64 xflow_macsec_secure_chan_to_num_secure_assoc_encrypt=2 xflow_macsec_secure_chan_to_num_secure_assoc_decrypt=4 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini index 517251fcf7b6..68db8fb44969 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini @@ -17,5 +17,5 @@ Ethernet256 24,25,26,27,28,29,30,31 Ethernet33/1 33 Ext Ethernet264 16,17,18,19,20,21,22,23 Ethernet34/1 34 Ext 400000 Eth120-ASIC1 0 16 8 Ethernet272 8,9,10,11,12,13,14,15 Ethernet35/1 35 Ext 400000 Eth128-ASIC1 0 17 8 Ethernet280 0,1,2,3,4,5,6,7 Ethernet36/1 36 Ext 400000 Eth136-ASIC1 0 18 8 -Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 221 8 -Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 222 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/port_config.ini index 0c057dee3def..37a8915cf32e 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/port_config.ini @@ -35,7 +35,7 @@ Ethernet256 24,25,26,27,28,29,30,31 Ethernet33/1 33 Ext Ethernet264 16,17,18,19,20,21,22,23 Ethernet34/1 34 Ext 400000 Eth120-ASIC1 0 16 8 Ethernet272 8,9,10,11,12,13,14,15 Ethernet35/1 35 Ext 400000 Eth128-ASIC1 0 17 8 Ethernet280 0,1,2,3,4,5,6,7 Ethernet36/1 36 Ext 400000 Eth136-ASIC1 0 18 8 -Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 221 8 -Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 222 8 -Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 221 8 -Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 222 8 +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 diff --git a/src/sonic-device-data/tests/permitted_list b/src/sonic-device-data/tests/permitted_list index 565f7796afa7..2ce2cbdfafc0 100644 --- a/src/sonic-device-data/tests/permitted_list +++ b/src/sonic-device-data/tests/permitted_list @@ -332,3 +332,4 @@ sai_mdio_access_clause22 cmic_dma_abort_in_cold_boot hybrid_pfc_deadlock_enable sai_pfc_dlr_init_capability +appl_param_nof_ports_per_modid From da1526ce0175a0792e4e0e33afb5cd41725a1a04 Mon Sep 17 00:00:00 2001 From: Arvindsrinivasan Lakshmi Narasimhan <55814491+arlakshm@users.noreply.github.com> Date: Thu, 23 Feb 2023 21:41:58 -0800 Subject: [PATCH 14/46] [chassis][voq] 400g to100g speed changes for chassis linecards (#13935) On SONiC VoQ chassis, the speed changes are done from 400G to 100G needs to be supported on 400G linecards. To enable this, along with speed change the port lanes need to be changed. This PR has the changes to update the port lanes when such speed change happens. This PR is intended only for VoQ chassis linecards. These platforms today have 400g port with 8 serdes lines, and 100g will operate with 4 serdes lane. When the port speed changes from 400G to 100G the first 4 lanes will be used for 100G port. Platforms which support 2x50g PAM4 or support 100G PAM4 serdes or other combinations are not handled in the PR. Signed-off-by: Arvindsrinivasan Lakshmi Narasimhan --- src/sonic-config-engine/minigraph.py | 14 + src/sonic-config-engine/tests/test_cfggen.py | 32 + .../tests/voq-sample-400g-port-config.ini | 21 + .../tests/voq-sample-masic-graph.xml | 3903 +++++++++++++++++ 4 files changed, 3970 insertions(+) create mode 100644 src/sonic-config-engine/tests/voq-sample-400g-port-config.ini create mode 100644 src/sonic-config-engine/tests/voq-sample-masic-graph.xml diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index 313c2ebfaded..68f20b4677a8 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -1666,6 +1666,20 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw if port_name in mgmt_alias_reverse_mapping.keys(): continue + port_default_speed = port_speeds_default.get(port_name, None) + port_png_speed = port_speed_png[port_name] + + if switch_type == 'voq': + # when the port speed is changes from 400g to 100g + # update the port lanes, use the first 4 lanes of the 400G port to support 100G port + if port_default_speed == '400000' and port_png_speed == '100000': + port_lanes = ports[port_name].get('lanes', '').split(',') + # check if the 400g port has only 8 lanes + if len(port_lanes) != 8: + continue + updated_lanes = ",".join(port_lanes[:4]) + ports[port_name]['lanes'] = updated_lanes + ports.setdefault(port_name, {})['speed'] = port_speed_png[port_name] for port_name, port in list(ports.items()): diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index 3ab69fbf6cc8..fe2b3e17a8b9 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -39,6 +39,8 @@ def setUp(self): self.packet_chassis_port_ini = os.path.join(self.test_dir, 'sample-chassis-packet-lc-port-config.ini') self.macsec_profile = os.path.join(self.test_dir, 'macsec_profile.json') self.sample_backend_graph = os.path.join(self.test_dir, 'sample-graph-storage-backend.xml') + self.voq_port_config_400g = os.path.join(self.test_dir, 'voq-sample-400g-port-config.ini') + self.voq_sample_masic_graph = os.path.join(self.test_dir, 'voq-sample-masic-graph.xml') # To ensure that mock config_db data is used for unit-test cases os.environ["CFGGEN_UNIT_TESTING"] = "2" @@ -1022,3 +1024,33 @@ def test_minigraph_packet_chassis_400g_zr_port_config(self): output_dict = utils.to_dict(output.strip()) self.assertEqual(output_dict['tx_power'], '7.5') self.assertEqual(output_dict['laser_freq'], 131000) + + def test_minigraph_400g_to_100G_speed(self): + argument = ["-j", self.macsec_profile, "-m", self.voq_sample_masic_graph, "-p", self.voq_port_config_400g, "-n", "asic0", "-v", "PORT"] + output = self.run_script(argument) + self.assertEqual( + utils.to_dict(output.strip()), + utils.to_dict( + "{'Ethernet0': {'lanes': '72,73,74,75', 'alias': 'Ethernet1/1', 'index': '1', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth0-ASIC0', 'fec': 'rs', 'description': 'ARISTA01T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet8': {'lanes': '80,81,82,83', 'alias': 'Ethernet2/1', 'index': '2', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth8-ASIC0', 'fec': 'rs', 'description': 'ARISTA01T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet16': {'lanes': '88,89,90,91', 'alias': 'Ethernet3/1', 'index': '3', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth16-ASIC0', 'fec': 'rs', 'description': 'ARISTA03T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet24': {'lanes': '96,97,98,99,100,101,102,103', 'alias': 'Ethernet4/1', 'index': '4', 'role': 'Ext', 'speed': '400000', 'asic_port_name': 'Eth24-ASIC0', 'description': 'ARISTA03T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet32': {'lanes': '104,105,106,107,108,109,110,111', 'alias': 'Ethernet5/1', 'index': '5', 'role': 'Ext', 'speed': '400000', 'asic_port_name': 'Eth32-ASIC0', 'description': 'ARISTA05T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet40': {'lanes': '112,113,114,115,116,117,118,119', 'alias': 'Ethernet6/1', 'index': '6', 'role': 'Ext', 'speed': '400000', 'asic_port_name': 'Eth40-ASIC0', 'description': 'ARISTA05T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet48': {'lanes': '120,121,122,123,124,125,126,127', 'alias': 'Ethernet7/1', 'index': '7', 'role': 'Ext', 'speed': '400000', 'asic_port_name': 'Eth48-ASIC0', 'description': 'ARISTA07T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet56': {'lanes': '128,129,130,131', 'alias': 'Ethernet8/1', 'index': '8', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth56-ASIC0', 'fec': 'rs', 'description': 'ARISTA07T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet64': {'lanes': '136,137,138,139', 'alias': 'Ethernet9/1', 'index': '9', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth64-ASIC0', 'fec': 'rs', 'description': 'ARISTA09T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet72': {'lanes': '64,65,66,67', 'alias': 'Ethernet10/1', 'index': '10', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth72-ASIC0', 'fec': 'rs', 'description': 'ARISTA09T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet80': {'lanes': '56,57,58,59', 'alias': 'Ethernet11/1', 'index': '11', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth80-ASIC0', 'fec': 'rs', 'description': 'ARISTA11T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet88': {'lanes': '48,49,50,51', 'alias': 'Ethernet12/1', 'index': '12', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth88-ASIC0', 'fec': 'rs', 'description': 'ARISTA11T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet96': {'lanes': '40,41,42,43', 'alias': 'Ethernet13/1', 'index': '13', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth96-ASIC0', 'fec': 'rs', 'description': 'ARISTA13T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet104': {'lanes': '32,33,34,35', 'alias': 'Ethernet14/1', 'index': '14', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth104-ASIC0', 'fec': 'rs', 'description': 'ARISTA15T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet112': {'lanes': '24,25,26,27', 'alias': 'Ethernet15/1', 'index': '15', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth112-ASIC0', 'fec': 'rs', 'description': 'ARISTA15T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet120': {'lanes': '16,17,18,19', 'alias': 'Ethernet16/1', 'index': '16', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth120-ASIC0', 'fec': 'rs', 'description': 'ARISTA17T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet128': {'lanes': '8,9,10,11', 'alias': 'Ethernet17/1', 'index': '17', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth128-ASIC0', 'fec': 'rs', 'description': 'ARISTA18T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet136': {'lanes': '0,1,2,3', 'alias': 'Ethernet18/1', 'index': '18', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth136-ASIC0', 'fec': 'rs', 'description': 'ARISTA18T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet-Rec0': {'lanes': '221', 'alias': 'Recirc0/0', 'index': '37', 'role': 'Rec', 'speed': '400000', 'asic_port_name': 'Rcy0-ASIC0', 'description': 'Recirc0/0', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}," + "'Ethernet-IB0': {'lanes': '222', 'alias': 'Recirc0/1', 'index': '38', 'role': 'Inb', 'speed': '400000', 'asic_port_name': 'Rcy1-ASIC0', 'description': 'Recirc0/1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}}" + ) + ) + diff --git a/src/sonic-config-engine/tests/voq-sample-400g-port-config.ini b/src/sonic-config-engine/tests/voq-sample-400g-port-config.ini new file mode 100644 index 000000000000..f86cdb335ed8 --- /dev/null +++ b/src/sonic-config-engine/tests/voq-sample-400g-port-config.ini @@ -0,0 +1,21 @@ +# name lanes alias index role speed asic_port_name +Ethernet0 72,73,74,75,76,77,78,79 Ethernet1/1 1 Ext 400000 Eth0-ASIC0 +Ethernet8 80,81,82,83,84,85,86,87 Ethernet2/1 2 Ext 400000 Eth8-ASIC0 +Ethernet16 88,89,90,91,92,93,94,95 Ethernet3/1 3 Ext 400000 Eth16-ASIC0 +Ethernet24 96,97,98,99,100,101,102,103 Ethernet4/1 4 Ext 400000 Eth24-ASIC0 +Ethernet32 104,105,106,107,108,109,110,111 Ethernet5/1 5 Ext 400000 Eth32-ASIC0 +Ethernet40 112,113,114,115,116,117,118,119 Ethernet6/1 6 Ext 400000 Eth40-ASIC0 +Ethernet48 120,121,122,123,124,125,126,127 Ethernet7/1 7 Ext 400000 Eth48-ASIC0 +Ethernet56 128,129,130,131,132,133,134,135 Ethernet8/1 8 Ext 400000 Eth56-ASIC0 +Ethernet64 136,137,138,139,140,141,142,143 Ethernet9/1 9 Ext 400000 Eth64-ASIC0 +Ethernet72 64,65,66,67,68,69,70,71 Ethernet10/1 10 Ext 400000 Eth72-ASIC0 +Ethernet80 56,57,58,59,60,61,62,63 Ethernet11/1 11 Ext 400000 Eth80-ASIC0 +Ethernet88 48,49,50,51,52,53,54,55 Ethernet12/1 12 Ext 400000 Eth88-ASIC0 +Ethernet96 40,41,42,43,44,45,46,47 Ethernet13/1 13 Ext 400000 Eth96-ASIC0 +Ethernet104 32,33,34,35,36,37,38,39 Ethernet14/1 14 Ext 400000 Eth104-ASIC0 +Ethernet112 24,25,26,27,28,29,30,31 Ethernet15/1 15 Ext 400000 Eth112-ASIC0 +Ethernet120 16,17,18,19,20,21,22,23 Ethernet16/1 16 Ext 400000 Eth120-ASIC0 +Ethernet128 8,9,10,11,12,13,14,15 Ethernet17/1 17 Ext 400000 Eth128-ASIC0 +Ethernet136 0,1,2,3,4,5,6,7 Ethernet18/1 18 Ext 400000 Eth136-ASIC0 +Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 +Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 diff --git a/src/sonic-config-engine/tests/voq-sample-masic-graph.xml b/src/sonic-config-engine/tests/voq-sample-masic-graph.xml new file mode 100644 index 000000000000..cda6c1a6a3bf --- /dev/null +++ b/src/sonic-config-engine/tests/voq-sample-masic-graph.xml @@ -0,0 +1,3903 @@ + + + + + + false + str2-sonic-lc5-1 + 10.0.0.0 + ARISTA01T3 + 10.0.0.1 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.0 + ARISTA01T3 + 10.0.0.1 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::1 + ARISTA01T3 + FC00::2 + 1 + 10 + 3 + + + ASIC0 + FC00::1 + ARISTA01T3 + FC00::2 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.4 + ARISTA03T3 + 10.0.0.5 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.4 + ARISTA03T3 + 10.0.0.5 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::9 + ARISTA03T3 + FC00::A + 1 + 10 + 3 + + + ASIC0 + FC00::9 + ARISTA03T3 + FC00::A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.8 + ARISTA05T3 + 10.0.0.9 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.8 + ARISTA05T3 + 10.0.0.9 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::11 + ARISTA05T3 + FC00::12 + 1 + 10 + 3 + + + ASIC0 + FC00::11 + ARISTA05T3 + FC00::12 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.12 + ARISTA07T3 + 10.0.0.13 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.12 + ARISTA07T3 + 10.0.0.13 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::19 + ARISTA07T3 + FC00::1A + 1 + 10 + 3 + + + ASIC0 + FC00::19 + ARISTA07T3 + FC00::1A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.16 + ARISTA09T3 + 10.0.0.17 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.16 + ARISTA09T3 + 10.0.0.17 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::21 + ARISTA09T3 + FC00::22 + 1 + 10 + 3 + + + ASIC0 + FC00::21 + ARISTA09T3 + FC00::22 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.20 + ARISTA11T3 + 10.0.0.21 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.20 + ARISTA11T3 + 10.0.0.21 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::29 + ARISTA11T3 + FC00::2A + 1 + 10 + 3 + + + ASIC0 + FC00::29 + ARISTA11T3 + FC00::2A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.32 + ARISTA13T3 + 10.0.0.33 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.32 + ARISTA13T3 + 10.0.0.33 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::41 + ARISTA13T3 + FC00::42 + 1 + 10 + 3 + + + ASIC0 + FC00::41 + ARISTA13T3 + FC00::42 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.28 + ARISTA15T3 + 10.0.0.29 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.28 + ARISTA15T3 + 10.0.0.29 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::39 + ARISTA15T3 + FC00::3A + 1 + 10 + 3 + + + ASIC0 + FC00::39 + ARISTA15T3 + FC00::3A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.34 + ARISTA17T3 + 10.0.0.35 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.34 + ARISTA17T3 + 10.0.0.35 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::45 + ARISTA17T3 + FC00::46 + 1 + 10 + 3 + + + ASIC0 + FC00::45 + ARISTA17T3 + FC00::46 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.24 + ARISTA18T3 + 10.0.0.25 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.24 + ARISTA18T3 + 10.0.0.25 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::31 + ARISTA18T3 + FC00::32 + 1 + 10 + 3 + + + ASIC0 + FC00::31 + ARISTA18T3 + FC00::32 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.36 + ARISTA19T3 + 10.0.0.37 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.36 + ARISTA19T3 + 10.0.0.37 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::49 + ARISTA19T3 + FC00::4A + 1 + 10 + 3 + + + ASIC1 + FC00::49 + ARISTA19T3 + FC00::4A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.38 + ARISTA20T3 + 10.0.0.39 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.38 + ARISTA20T3 + 10.0.0.39 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::4D + ARISTA20T3 + FC00::4E + 1 + 10 + 3 + + + ASIC1 + FC00::4D + ARISTA20T3 + FC00::4E + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.40 + ARISTA21T3 + 10.0.0.41 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.40 + ARISTA21T3 + 10.0.0.41 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::51 + ARISTA21T3 + FC00::52 + 1 + 10 + 3 + + + ASIC1 + FC00::51 + ARISTA21T3 + FC00::52 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.42 + ARISTA22T3 + 10.0.0.43 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.42 + ARISTA22T3 + 10.0.0.43 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::55 + ARISTA22T3 + FC00::56 + 1 + 10 + 3 + + + ASIC1 + FC00::55 + ARISTA22T3 + FC00::56 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.44 + ARISTA23T3 + 10.0.0.45 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.44 + ARISTA23T3 + 10.0.0.45 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::59 + ARISTA23T3 + FC00::5A + 1 + 10 + 3 + + + ASIC1 + FC00::59 + ARISTA23T3 + FC00::5A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.46 + ARISTA24T3 + 10.0.0.47 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.46 + ARISTA24T3 + 10.0.0.47 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::5D + ARISTA24T3 + FC00::5E + 1 + 10 + 3 + + + ASIC1 + FC00::5D + ARISTA24T3 + FC00::5E + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.48 + ARISTA25T3 + 10.0.0.49 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.48 + ARISTA25T3 + 10.0.0.49 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::61 + ARISTA25T3 + FC00::62 + 1 + 10 + 3 + + + ASIC1 + FC00::61 + ARISTA25T3 + FC00::62 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.50 + ARISTA26T3 + 10.0.0.51 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.50 + ARISTA26T3 + 10.0.0.51 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::65 + ARISTA26T3 + FC00::66 + 1 + 10 + 3 + + + ASIC1 + FC00::65 + ARISTA26T3 + FC00::66 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.52 + ARISTA27T3 + 10.0.0.53 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.52 + ARISTA27T3 + 10.0.0.53 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::69 + ARISTA27T3 + FC00::6A + 1 + 10 + 3 + + + ASIC1 + FC00::69 + ARISTA27T3 + FC00::6A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.54 + ARISTA28T3 + 10.0.0.55 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.54 + ARISTA28T3 + 10.0.0.55 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::6D + ARISTA28T3 + FC00::6E + 1 + 10 + 3 + + + ASIC1 + FC00::6D + ARISTA28T3 + FC00::6E + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.56 + ARISTA29T3 + 10.0.0.57 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.56 + ARISTA29T3 + 10.0.0.57 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::71 + ARISTA29T3 + FC00::72 + 1 + 10 + 3 + + + ASIC1 + FC00::71 + ARISTA29T3 + FC00::72 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.58 + ARISTA30T3 + 10.0.0.59 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.58 + ARISTA30T3 + 10.0.0.59 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::75 + ARISTA30T3 + FC00::76 + 1 + 10 + 3 + + + ASIC1 + FC00::75 + ARISTA30T3 + FC00::76 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.60 + ARISTA31T3 + 10.0.0.61 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.60 + ARISTA31T3 + 10.0.0.61 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::79 + ARISTA31T3 + FC00::7A + 1 + 10 + 3 + + + ASIC1 + FC00::79 + ARISTA31T3 + FC00::7A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.62 + ARISTA32T3 + 10.0.0.63 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.62 + ARISTA32T3 + 10.0.0.63 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::7D + ARISTA32T3 + FC00::7E + 1 + 10 + 3 + + + ASIC1 + FC00::7D + ARISTA32T3 + FC00::7E + 1 + 10 + 3 + + + + + ASIC0 + ASIC1 + 3.3.3.2 + 3.3.3.3 + 1 + 0 + 0 + voq + + + ASIC0 + ASIC1 + 3333::3:2 + 3333::3:3 + 1 + 0 + 0 + voq + + + ASIC0 + str2-sonic-lc3-1 + 3.3.3.2 + 3.3.3.1 + 1 + 0 + 0 + voq + + + ASIC0 + str2-sonic-lc3-1 + 3333::3:2 + 3333::3:1 + 1 + 0 + 0 + voq + + + ASIC0 + str2-sonic-lc7-1 + 3.3.3.2 + 3.3.3.5 + 1 + 0 + 0 + voq + + + ASIC0 + str2-sonic-lc7-1 + 3333::3:2 + 3333::3:5 + 1 + 0 + 0 + voq + + + ASIC1 + ASIC0 + 3.3.3.3 + 3.3.3.2 + 1 + 0 + 0 + voq + + + ASIC1 + ASIC0 + 3333::3:3 + 3333::3:2 + 1 + 0 + 0 + voq + + + ASIC1 + str2-sonic-lc3-1 + 3.3.3.3 + 3.3.3.1 + 1 + 0 + 0 + voq + + + ASIC1 + str2-sonic-lc3-1 + 3333::3:3 + 3333::3:1 + 1 + 0 + 0 + voq + + + ASIC1 + str2-sonic-lc7-1 + 3.3.3.3 + 3.3.3.5 + 1 + 0 + 0 + voq + + + ASIC1 + str2-sonic-lc7-1 + 3333::3:3 + 3333::3:5 + 1 + 0 + 0 + voq + + + + + 65100 + str2-sonic-lc5-1 + + +
10.0.0.1
+ + + +
+ +
10.0.0.5
+ + + +
+ +
10.0.0.9
+ + + +
+ +
10.0.0.13
+ + + +
+ +
10.0.0.17
+ + + +
+ +
10.0.0.21
+ + + +
+ +
10.0.0.33
+ + + +
+ +
10.0.0.29
+ + + +
+ +
10.0.0.35
+ + + +
+ +
10.0.0.25
+ + + +
+ +
10.0.0.37
+ + + +
+ +
10.0.0.39
+ + + +
+ +
10.0.0.41
+ + + +
+ +
10.0.0.43
+ + + +
+ +
10.0.0.45
+ + + +
+ +
10.0.0.47
+ + + +
+ +
10.0.0.49
+ + + +
+ +
10.0.0.51
+ + + +
+ +
10.0.0.53
+ + + +
+ +
10.0.0.55
+ + + +
+ +
10.0.0.57
+ + + +
+ +
10.0.0.59
+ + + +
+ +
10.0.0.61
+ + + +
+ +
10.0.0.63
+ + + +
+
+ +
+ + 65200 + ARISTA01T3 + + + + 65200 + ARISTA03T3 + + + + 65200 + ARISTA05T3 + + + + 65200 + ARISTA07T3 + + + + 65200 + ARISTA09T3 + + + + 65200 + ARISTA11T3 + + + + 65200 + ARISTA13T3 + + + + 65200 + ARISTA15T3 + + + + 65200 + ARISTA17T3 + + + + 65200 + ARISTA18T3 + + + + 65200 + ARISTA19T3 + + + + 65200 + ARISTA20T3 + + + + 65200 + ARISTA21T3 + + + + 65200 + ARISTA22T3 + + + + 65200 + ARISTA23T3 + + + + 65200 + ARISTA24T3 + + + + 65200 + ARISTA25T3 + + + + 65200 + ARISTA26T3 + + + + 65200 + ARISTA27T3 + + + + 65200 + ARISTA28T3 + + + + 65200 + ARISTA29T3 + + + + 65200 + ARISTA30T3 + + + + 65200 + ARISTA31T3 + + + + 65200 + ARISTA32T3 + + + + 65100 + ASIC1 + + +
10.0.0.37
+ + + +
+ +
10.0.0.39
+ + + +
+ +
10.0.0.41
+ + + +
+ +
10.0.0.43
+ + + +
+ +
10.0.0.45
+ + + +
+ +
10.0.0.47
+ + + +
+ +
10.0.0.49
+ + + +
+ +
10.0.0.51
+ + + +
+ +
10.0.0.53
+ + + +
+ +
10.0.0.55
+ + + +
+ +
10.0.0.57
+ + + +
+ +
10.0.0.59
+ + + +
+ +
10.0.0.61
+ + + +
+ +
10.0.0.63
+ + + +
+ +
3.3.3.2/32
+ + + +
+ +
3.3.3.1/32
+ + + +
+ +
3.3.3.5/32
+ + + +
+
+ +
+ + 65100 + ASIC0 + + +
10.0.0.1
+ + + +
+ +
10.0.0.5
+ + + +
+ +
10.0.0.9
+ + + +
+ +
10.0.0.13
+ + + +
+ +
10.0.0.17
+ + + +
+ +
10.0.0.21
+ + + +
+ +
10.0.0.33
+ + + +
+ +
10.0.0.29
+ + + +
+ +
10.0.0.35
+ + + +
+ +
10.0.0.25
+ + + +
+ +
3.3.3.3/32
+ + + +
+ +
3.3.3.1/32
+ + + +
+ +
3.3.3.5/32
+ + + +
+
+ +
+ + 65100 + str2-sonic-lc3-1 + + + + 65100 + str2-sonic-lc7-1 + + +
+
+ + + + + + HostIP + Loopback0 + + 10.1.0.1/32 + + 10.1.0.1/32 + + + HostIP1 + Loopback0 + + FC00:10::1/128 + + FC00:10::1/128 + + + + + HostIP + eth0 + + 10.3.147.27/23 + + 10.3.147.27/23 + + + V6HostIP + eth0 + + FC00:2::32/64 + + FC00:2::32/64 + + + + + + + str2-sonic-lc5-1 + + + PortChannel102 + Ethernet1/1;Ethernet2/1 + + + + PortChannel104 + Ethernet3/1;Ethernet4/1 + + + + PortChannel106 + Ethernet5/1;Ethernet6/1 + + + + PortChannel108 + Ethernet7/1;Ethernet8/1 + + + + PortChannel1010 + Ethernet9/1;Ethernet10/1 + + + + PortChannel1012 + Ethernet11/1;Ethernet12/1 + + + + PortChannel1016 + Ethernet14/1;Ethernet15/1 + + + + PortChannel1020 + Ethernet17/1;Ethernet18/1 + + + + + + + + + PortChannel102 + 10.0.0.0/31 + + + + PortChannel102 + FC00::1/126 + + + + PortChannel104 + 10.0.0.4/31 + + + + PortChannel104 + FC00::9/126 + + + + PortChannel106 + 10.0.0.8/31 + + + + PortChannel106 + FC00::11/126 + + + + PortChannel108 + 10.0.0.12/31 + + + + PortChannel108 + FC00::19/126 + + + + PortChannel1010 + 10.0.0.16/31 + + + + PortChannel1010 + FC00::21/126 + + + + PortChannel1012 + 10.0.0.20/31 + + + + PortChannel1012 + FC00::29/126 + + + + Ethernet13/1 + 10.0.0.32/31 + + + + Ethernet13/1 + FC00::41/126 + + + + PortChannel1016 + 10.0.0.28/31 + + + + PortChannel1016 + FC00::39/126 + + + + Ethernet16/1 + 10.0.0.34/31 + + + + Ethernet16/1 + FC00::45/126 + + + + PortChannel1020 + 10.0.0.24/31 + + + + PortChannel1020 + FC00::31/126 + + + + Ethernet19/1 + 10.0.0.36/31 + + + + Ethernet19/1 + FC00::49/126 + + + + Ethernet20/1 + 10.0.0.38/31 + + + + Ethernet20/1 + FC00::4D/126 + + + + Ethernet21/1 + 10.0.0.40/31 + + + + Ethernet21/1 + FC00::51/126 + + + + Ethernet22/1 + 10.0.0.42/31 + + + + Ethernet22/1 + FC00::55/126 + + + + Ethernet23/1 + 10.0.0.44/31 + + + + Ethernet23/1 + FC00::59/126 + + + + Ethernet24/1 + 10.0.0.46/31 + + + + Ethernet24/1 + FC00::5D/126 + + + + Ethernet25/1 + 10.0.0.48/31 + + + + Ethernet25/1 + FC00::61/126 + + + + Ethernet26/1 + 10.0.0.50/31 + + + + Ethernet26/1 + FC00::65/126 + + + + Ethernet27/1 + 10.0.0.52/31 + + + + Ethernet27/1 + FC00::69/126 + + + + Ethernet28/1 + 10.0.0.54/31 + + + + Ethernet28/1 + FC00::6D/126 + + + + Ethernet29/1 + 10.0.0.56/31 + + + + Ethernet29/1 + FC00::71/126 + + + + Ethernet30/1 + 10.0.0.58/31 + + + + Ethernet30/1 + FC00::75/126 + + + + Ethernet31/1 + 10.0.0.60/31 + + + + Ethernet31/1 + FC00::79/126 + + + + Ethernet32/1 + 10.0.0.62/31 + + + + Ethernet32/1 + FC00::7D/126 + + + + + + NTP_ACL + NTP + NTP + + + SNMP_ACL + SNMP + SNMP + + + ERSPAN + Everflow + Everflow + + + ERSPANV6 + EverflowV6 + EverflowV6 + + + VTY_LINE + ssh-only + SSH + + + PortChannel102;PortChannel104;PortChannel106;PortChannel108;PortChannel1010;PortChannel1012;PortChannel1016;PortChannel1020;Ethernet13/1;Ethernet16/1;Ethernet19/1;Ethernet20/1;Ethernet21/1;Ethernet22/1;Ethernet23/1;Ethernet24/1;Ethernet25/1;Ethernet26/1;Ethernet27/1;Ethernet28/1;Ethernet29/1;Ethernet30/1;Ethernet31/1;Ethernet32/1 + DataAcl + DataPlane + + + + + + + + + + HostIP + Loopback0 + + 10.1.0.1/32 + + 10.1.0.1/32 + + + HostIP1 + Loopback0 + + FC00:10::1/128 + + FC00:10::1/128 + + + HostIP1 + Loopback4096 + + 192.0.0.3/32 + + 192.0.0.3/32 + + + HostIP1 + Loopback4096 + + 2603:10e2:400::3/128 + + 2603:10e2:400::3/128 + + + + + HostIP + eth0 + + 10.3.147.27/23 + + 10.3.147.27/23 + + + V6HostIP + eth0 + + FC00:2::32/64 + + FC00:2::32/64 + + + + + + Ethernet-IB1 + port + 3.3.3.3/32 + + + Ethernet-IB1 + port + 3333::3:3/128 + + + + + + ASIC1 + + + + + + + Eth0-ASIC1 + 10.0.0.36/31 + + + + Eth0-ASIC1 + FC00::49/126 + + + + Eth8-ASIC1 + 10.0.0.38/31 + + + + Eth8-ASIC1 + FC00::4D/126 + + + + Eth16-ASIC1 + 10.0.0.40/31 + + + + Eth16-ASIC1 + FC00::51/126 + + + + Eth24-ASIC1 + 10.0.0.42/31 + + + + Eth24-ASIC1 + FC00::55/126 + + + + Eth32-ASIC1 + 10.0.0.44/31 + + + + Eth32-ASIC1 + FC00::59/126 + + + + Eth40-ASIC1 + 10.0.0.46/31 + + + + Eth40-ASIC1 + FC00::5D/126 + + + + Eth48-ASIC1 + 10.0.0.48/31 + + + + Eth48-ASIC1 + FC00::61/126 + + + + Eth56-ASIC1 + 10.0.0.50/31 + + + + Eth56-ASIC1 + FC00::65/126 + + + + Eth64-ASIC1 + 10.0.0.52/31 + + + + Eth64-ASIC1 + FC00::69/126 + + + + Eth72-ASIC1 + 10.0.0.54/31 + + + + Eth72-ASIC1 + FC00::6D/126 + + + + Eth80-ASIC1 + 10.0.0.56/31 + + + + Eth80-ASIC1 + FC00::71/126 + + + + Eth88-ASIC1 + 10.0.0.58/31 + + + + Eth88-ASIC1 + FC00::75/126 + + + + Eth96-ASIC1 + 10.0.0.60/31 + + + + Eth96-ASIC1 + FC00::79/126 + + + + Eth104-ASIC1 + 10.0.0.62/31 + + + + Eth104-ASIC1 + FC00::7D/126 + + + + + + SNMP_ACL + SNMP + SNMP + + + ERSPAN + Everflow + Everflow + + + ERSPANV6 + EverflowV6 + EverflowV6 + + + VTY_LINE + ssh-only + SSH + + + Eth0-ASIC1;Eth8-ASIC1;Eth16-ASIC1;Eth24-ASIC1;Eth32-ASIC1;Eth40-ASIC1;Eth48-ASIC1;Eth56-ASIC1;Eth64-ASIC1;Eth72-ASIC1;Eth80-ASIC1;Eth88-ASIC1;Eth96-ASIC1;Eth104-ASIC1 + DataAcl + DataPlane + + + + + + + + + + HostIP + Loopback0 + + 10.1.0.1/32 + + 10.1.0.1/32 + + + HostIP1 + Loopback0 + + FC00:10::1/128 + + FC00:10::1/128 + + + HostIP1 + Loopback4096 + + 192.0.0.2/32 + + 192.0.0.2/32 + + + HostIP1 + Loopback4096 + + 2603:10e2:400::2/128 + + 2603:10e2:400::2/128 + + + + + HostIP + eth0 + + 10.3.147.27/23 + + 10.3.147.27/23 + + + V6HostIP + eth0 + + FC00:2::32/64 + + FC00:2::32/64 + + + + + + Ethernet-IB0 + port + 3.3.3.2/32 + + + Ethernet-IB0 + port + 3333::3:2/128 + + + + + + ASIC0 + + + PortChannel102 + Eth0-ASIC0;Eth8-ASIC0 + + + + PortChannel104 + Eth16-ASIC0;Eth24-ASIC0 + + + + PortChannel106 + Eth32-ASIC0;Eth40-ASIC0 + + + + PortChannel108 + Eth48-ASIC0;Eth56-ASIC0 + + + + PortChannel1010 + Eth64-ASIC0;Eth72-ASIC0 + + + + PortChannel1012 + Eth80-ASIC0;Eth88-ASIC0 + + + + PortChannel1016 + Eth104-ASIC0;Eth112-ASIC0 + + + + PortChannel1020 + Eth128-ASIC0;Eth136-ASIC0 + + + + + + + + PortChannel102 + 10.0.0.0/31 + + + + PortChannel102 + FC00::1/126 + + + + PortChannel104 + 10.0.0.4/31 + + + + PortChannel104 + FC00::9/126 + + + + PortChannel106 + 10.0.0.8/31 + + + + PortChannel106 + FC00::11/126 + + + + PortChannel108 + 10.0.0.12/31 + + + + PortChannel108 + FC00::19/126 + + + + PortChannel1010 + 10.0.0.16/31 + + + + PortChannel1010 + FC00::21/126 + + + + PortChannel1012 + 10.0.0.20/31 + + + + PortChannel1012 + FC00::29/126 + + + + Eth96-ASIC0 + 10.0.0.32/31 + + + + Eth96-ASIC0 + FC00::41/126 + + + + PortChannel1016 + 10.0.0.28/31 + + + + PortChannel1016 + FC00::39/126 + + + + Eth120-ASIC0 + 10.0.0.34/31 + + + + Eth120-ASIC0 + FC00::45/126 + + + + PortChannel1020 + 10.0.0.24/31 + + + + PortChannel1020 + FC00::31/126 + + + + + + SNMP_ACL + SNMP + SNMP + + + ERSPAN + Everflow + Everflow + + + ERSPANV6 + EverflowV6 + EverflowV6 + + + VTY_LINE + ssh-only + SSH + + + PortChannel102;PortChannel104;PortChannel106;PortChannel108;PortChannel1010;PortChannel1012;PortChannel1016;PortChannel1020;Eth0-ASIC0;Eth16-ASIC0;Eth32-ASIC0;Eth48-ASIC0;Eth64-ASIC0;Eth80-ASIC0;Eth96-ASIC0;Eth104-ASIC0;Eth120-ASIC0;Eth128-ASIC0 + DataAcl + DataPlane + + + + + + + + + + DeviceInterfaceLink + ARISTA01T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet1/1 + 100000 + + + DeviceInterfaceLink + ARISTA01T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet2/1 + 100000 + + + DeviceInterfaceLink + ARISTA03T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet3/1 + 100000 + + + DeviceInterfaceLink + ARISTA03T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet4/1 + 400000 + + + DeviceInterfaceLink + ARISTA05T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet5/1 + 400000 + + + DeviceInterfaceLink + ARISTA05T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet6/1 + 400000 + + + DeviceInterfaceLink + ARISTA07T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet7/1 + 400000 + + + DeviceInterfaceLink + ARISTA07T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet8/1 + 100000 + + + DeviceInterfaceLink + ARISTA09T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet9/1 + 100000 + + + DeviceInterfaceLink + ARISTA09T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet10/1 + 100000 + + + DeviceInterfaceLink + ARISTA11T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet11/1 + 100000 + + + DeviceInterfaceLink + ARISTA11T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet12/1 + 100000 + + + DeviceInterfaceLink + ARISTA13T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet13/1 + 100000 + + + DeviceInterfaceLink + ARISTA15T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet14/1 + 100000 + + + DeviceInterfaceLink + ARISTA15T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet15/1 + 100000 + + + DeviceInterfaceLink + ARISTA17T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet16/1 + 100000 + + + DeviceInterfaceLink + ARISTA18T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet17/1 + 100000 + + + DeviceInterfaceLink + ARISTA18T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet18/1 + 100000 + + + DeviceInterfaceLink + ARISTA19T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet19/1 + 100000 + + + DeviceInterfaceLink + ARISTA20T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet20/1 + 100000 + + + DeviceInterfaceLink + ARISTA21T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet21/1 + 100000 + + + DeviceInterfaceLink + ARISTA22T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet22/1 + 100000 + + + DeviceInterfaceLink + ARISTA23T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet23/1 + 100000 + + + DeviceInterfaceLink + ARISTA24T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet24/1 + 100000 + + + DeviceInterfaceLink + ARISTA25T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet25/1 + 100000 + + + DeviceInterfaceLink + ARISTA26T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet26/1 + 100000 + + + DeviceInterfaceLink + ARISTA27T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet27/1 + 100000 + + + DeviceInterfaceLink + ARISTA28T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet28/1 + 100000 + + + DeviceInterfaceLink + ARISTA29T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet29/1 + 100000 + + + DeviceInterfaceLink + ARISTA30T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet30/1 + 100000 + + + DeviceInterfaceLink + ARISTA31T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet31/1 + 100000 + + + DeviceInterfaceLink + ARISTA32T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet32/1 + 100000 + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth0-ASIC0 + true + str2-sonic-lc5-1 + Ethernet1/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth8-ASIC0 + true + str2-sonic-lc5-1 + Ethernet2/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth16-ASIC0 + true + str2-sonic-lc5-1 + Ethernet3/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth24-ASIC0 + true + str2-sonic-lc5-1 + Ethernet4/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth32-ASIC0 + true + str2-sonic-lc5-1 + Ethernet5/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth40-ASIC0 + true + str2-sonic-lc5-1 + Ethernet6/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth48-ASIC0 + true + str2-sonic-lc5-1 + Ethernet7/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth56-ASIC0 + true + str2-sonic-lc5-1 + Ethernet8/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth64-ASIC0 + true + str2-sonic-lc5-1 + Ethernet9/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth72-ASIC0 + true + str2-sonic-lc5-1 + Ethernet10/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth80-ASIC0 + true + str2-sonic-lc5-1 + Ethernet11/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth88-ASIC0 + true + str2-sonic-lc5-1 + Ethernet12/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth96-ASIC0 + true + str2-sonic-lc5-1 + Ethernet13/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth104-ASIC0 + true + str2-sonic-lc5-1 + Ethernet14/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth112-ASIC0 + true + str2-sonic-lc5-1 + Ethernet15/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth120-ASIC0 + true + str2-sonic-lc5-1 + Ethernet16/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth128-ASIC0 + true + str2-sonic-lc5-1 + Ethernet17/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth136-ASIC0 + true + str2-sonic-lc5-1 + Ethernet18/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth0-ASIC1 + true + str2-sonic-lc5-1 + Ethernet19/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth8-ASIC1 + true + str2-sonic-lc5-1 + Ethernet20/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth16-ASIC1 + true + str2-sonic-lc5-1 + Ethernet21/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth24-ASIC1 + true + str2-sonic-lc5-1 + Ethernet22/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth32-ASIC1 + true + str2-sonic-lc5-1 + Ethernet23/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth40-ASIC1 + true + str2-sonic-lc5-1 + Ethernet24/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth48-ASIC1 + true + str2-sonic-lc5-1 + Ethernet25/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth56-ASIC1 + true + str2-sonic-lc5-1 + Ethernet26/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth64-ASIC1 + true + str2-sonic-lc5-1 + Ethernet27/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth72-ASIC1 + true + str2-sonic-lc5-1 + Ethernet28/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth80-ASIC1 + true + str2-sonic-lc5-1 + Ethernet29/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth88-ASIC1 + true + str2-sonic-lc5-1 + Ethernet30/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth96-ASIC1 + true + str2-sonic-lc5-1 + Ethernet31/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth104-ASIC1 + true + str2-sonic-lc5-1 + Ethernet32/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth112-ASIC1 + true + str2-sonic-lc5-1 + Ethernet33/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth120-ASIC1 + true + str2-sonic-lc5-1 + Ethernet34/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth128-ASIC1 + true + str2-sonic-lc5-1 + Ethernet35/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth136-ASIC1 + true + str2-sonic-lc5-1 + Ethernet36/1 + true + + + + + str2-sonic-lc5-1 + Sonic-linecard-masic-hwsku + + 10.3.147.27 + + + + ARISTA05T3 + + 172.16.145.34 + + Arista-VM + + + ARISTA11T3 + + 172.16.145.37 + + Arista-VM + + + ARISTA17T3 + + 172.16.145.40 + + Arista-VM + + + ARISTA21T3 + + 172.16.145.44 + + Arista-VM + + + ARISTA19T3 + + 172.16.145.42 + + Arista-VM + + + ARISTA09T3 + + 172.16.145.36 + + Arista-VM + + + ARISTA20T3 + + 172.16.145.43 + + Arista-VM + + + ARISTA03T3 + + 172.16.145.33 + + Arista-VM + + + ARISTA07T3 + + 172.16.145.35 + + Arista-VM + + + ARISTA01T3 + + 172.16.145.32 + + Arista-VM + + + ARISTA27T3 + + 172.16.145.50 + + Arista-VM + + + ARISTA26T3 + + 172.16.145.49 + + Arista-VM + + + ARISTA32T3 + + 172.16.145.55 + + Arista-VM + + + ARISTA23T3 + + 172.16.145.46 + + Arista-VM + + + ARISTA25T3 + + 172.16.145.48 + + Arista-VM + + + ARISTA24T3 + + 172.16.145.47 + + Arista-VM + + + ARISTA22T3 + + 172.16.145.45 + + Arista-VM + + + ARISTA28T3 + + 172.16.145.51 + + Arista-VM + + + ARISTA30T3 + + 172.16.145.53 + + Arista-VM + + + ARISTA18T3 + + 172.16.145.41 + + Arista-VM + + + ARISTA29T3 + + 172.16.145.52 + + Arista-VM + + + ARISTA15T3 + + 172.16.145.39 + + Arista-VM + + + ARISTA13T3 + + 172.16.145.38 + + Arista-VM + + + ARISTA31T3 + + 172.16.145.54 + + Arista-VM + + + Asic +
+ 0.0.0.0/0 +
+ + ::/0 + + + + + + + + + + 0.0.0.0/0 + + + ::/0 + + + ASIC0 + Broadcom-Trident2 +
+ + Asic +
+ 0.0.0.0/0 +
+ + ::/0 + + + + + + + + + + 0.0.0.0/0 + + + ::/0 + + + ASIC1 + Broadcom-Trident2 +
+
+
+ + + true + + + DeviceInterface + + true + true + 1 + Ethernet1/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet2/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet3/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet4/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet5/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet6/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet7/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet8/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet9/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet10/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet11/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet12/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet13/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet14/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet15/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet16/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet17/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet18/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet19/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet20/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet21/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet22/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet23/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet24/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet25/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet26/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet27/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet28/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet29/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet30/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet31/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet32/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet33/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet34/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet35/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet36/1 + + false + 0 + 0 + 400000 + + + true + 0 + Sonic-linecard-masic-hwsku + + + + + + + str2-sonic-lc5-1 + + + DeploymentId + + 1 + + + QosProfile + + Profile0 + + + DhcpResources + + 192.0.0.1;192.0.0.2;192.0.0.3;192.0.0.4;192.0.0.5;192.0.0.6;192.0.0.7;192.0.0.8;192.0.0.9;192.0.0.10;192.0.0.11;192.0.0.12;192.0.0.13;192.0.0.14;192.0.0.15;192.0.0.16;192.0.0.17;192.0.0.18;192.0.0.19;192.0.0.20;192.0.0.21;192.0.0.22;192.0.0.23;192.0.0.24;192.0.0.25;192.0.0.26;192.0.0.27;192.0.0.28;192.0.0.29;192.0.0.30;192.0.0.31;192.0.0.32;192.0.0.33;192.0.0.34;192.0.0.35;192.0.0.36;192.0.0.37;192.0.0.38;192.0.0.39;192.0.0.40;192.0.0.41;192.0.0.42;192.0.0.43;192.0.0.44;192.0.0.45;192.0.0.46;192.0.0.47;192.0.0.48 + + + NtpResources + + 10.20.8.129;10.20.8.130 + + + SnmpResources + + 10.3.145.98 + + + SyslogResources + + 10.64.246.95 + + + TacacsGroup + + Starlab + + + TacacsServer + + 100.127.20.21 + + + ForcedMgmtRoutes + + 10.3.145.98/31;10.3.145.8;100.127.20.16/28;10.3.149.170/31;40.122.216.24;13.91.48.226;10.3.145.14;10.64.246.0/24;10.3.146.0/23;10.64.5.5;10.201.148.32/28 + + + ErspanDestinationIpv4 + + 10.20.6.16 + + + SwitchType + + voq + + + MaxCores + + 16 + + + + + ASIC0 + + + SubRole + + FrontEnd + + + SwitchType + + voq + + + SwitchId + + 2 + + + MaxCores + + 16 + + + + + ASIC1 + + + SubRole + + FrontEnd + + + SwitchType + + voq + + + SwitchId + + 4 + + + MaxCores + + 16 + + + + + ASIC1 + + + DeploymentId + + 1 + + + SubRole + + FrontEnd + + + SwitchType + + voq + + + + + ASIC0 + + + DeploymentId + + 1 + + + SubRole + + FrontEnd + + + SwitchType + + voq + + + + + + + str2-sonic-lc5-1 + Sonic-linecard-masic-hwsku +
From b9dffcbaafe804f4acd7afef712b7ead81a83dff Mon Sep 17 00:00:00 2001 From: Samuel Angebault Date: Fri, 24 Feb 2023 10:08:04 -0800 Subject: [PATCH 15/46] [Arista] Disable SSD NCQ on Lodoga (#13964) Why I did it Fix similar issue seen on #13739 but only for DCS-7050CX3-32S How I did it Add a kernel parameter to tell libata to disable NCQ How to verify it The message ata2.00: FORCE: horkage modified (noncq) should appear on the dmesg. Test results using: fio --direct=1 --rw=randrw --bs=64k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 with NCQ READ: bw=26.1MiB/s (27.4MB/s), 26.1MiB/s-26.1MiB/s (27.4MB/s-27.4MB/s), io=3136MiB (3288MB), run=120053-120053msec WRITE: bw=26.3MiB/s (27.6MB/s), 26.3MiB/s-26.3MiB/s (27.6MB/s-27.6MB/s), io=3161MiB (3315MB), run=120053-120053msec without NCQ READ: bw=22.0MiB/s (23.1MB/s), 22.0MiB/s-22.0MiB/s (23.1MB/s-23.1MB/s), io=2647MiB (2775MB), run=120069-120069msec WRITE: bw=22.2MiB/s (23.3MB/s), 22.2MiB/s-22.2MiB/s (23.3MB/s-23.3MB/s), io=2665MiB (2795MB), run=120069-120069msec --- files/Aboot/boot0.j2 | 1 + 1 file changed, 1 insertion(+) diff --git a/files/Aboot/boot0.j2 b/files/Aboot/boot0.j2 index ca9f8fc2efc4..460fdd88fc18 100644 --- a/files/Aboot/boot0.j2 +++ b/files/Aboot/boot0.j2 @@ -525,6 +525,7 @@ write_platform_specific_cmdline() { if [ "$sid" = "Lodoga" ]; then aboot_machine=arista_7050cx3_32s cmdline_add logs_inram=on + cmdline_add libata.force=2.00:noncq fi if [ "$sid" = "Marysville" ]; then aboot_machine=arista_7050sx3_48yc8 From be6cdf087741715a87bb03ba11292eb3cb7e6335 Mon Sep 17 00:00:00 2001 From: mihirpat1 <112018033+mihirpat1@users.noreply.github.com> Date: Fri, 24 Feb 2023 10:09:12 -0800 Subject: [PATCH 16/46] [platform-daemons][platform-common] Advance submodule head (#13942) Update sonic-platform-daemons submodule head to include: 05dd3bd mihirpat1 Wed Feb 22 09:19:13 2023 -0800 Update CMIS module types for 2x100G AOC support (sonic-net/sonic-platform-daemons#339) f132d12 vdahiya12 Thu Feb 9 18:01:38 2023 -0800 [ycabled] add more coverage to ycabled; add minor name change for vendor API CLI return key-values pairs (sonic-net/sonic-platform-daemons#338) Update sonic-platform-common submodule head to include: 85c20cd mihirpat1 Wed Feb 22 09:18:20 2023 -0800 Update host electrical interface for 2x100G AOC (sonic-net/sonic-platform-common#346) Signed-off-by: Mihir Patel --- 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 01ef800ca959..85c20cdee265 160000 --- a/src/sonic-platform-common +++ b/src/sonic-platform-common @@ -1 +1 @@ -Subproject commit 01ef800ca9590349e2c9299bcdd339831aa0a79d +Subproject commit 85c20cdee2650f89351bf3a78053ebf58ccd9846 From 58592e6c49c855c0b16c8b6a8da34019ed965d0c Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Sat, 25 Feb 2023 08:16:38 +0800 Subject: [PATCH 17/46] [ci/build]: Upgrade SONiC package versions (#13526) The initial version files for the SONiC reproducible build --- .../versions-deb-bullseye | 76 + .../versions-deb-bullseye-arm64 | 3 + .../versions-deb-bullseye-armhf | 4 + .../build-sonic-slave-bullseye/versions-py3 | 33 + .../versions-py3-all-arm64 | 6 + .../versions-py3-all-armhf | 5 + .../versions-deb-buster | 34 + .../versions-deb-buster-arm64 | 9 + .../versions-deb-buster-armhf | 9 + .../build-sonic-slave-buster/versions-py2 | 11 + .../versions-py2-all-arm64 | 2 + .../versions-py2-all-armhf | 2 + .../build-sonic-slave-buster/versions-py3 | 31 + .../versions-py3-all-arm64 | 3 + .../versions-py3-all-armhf | 3 + files/build/versions/default/versions-docker | 12 + files/build/versions/default/versions-git | 24 + files/build/versions/default/versions-mirror | 15 + files/build/versions/default/versions-web | 128 ++ .../versions-deb-bullseye | 80 + .../versions-deb-bullseye-armhf | 1 + .../dockers/docker-base-bullseye/versions-py3 | 9 + .../docker-base-buster/versions-deb-buster | 71 + .../dockers/docker-base-buster/versions-py3 | 9 + .../versions-deb-bullseye | 18 + .../versions-deb-bullseye-arm64 | 14 + .../versions-deb-bullseye-armhf | 14 + .../versions-py3 | 14 + .../versions-deb-buster | 19 + .../versions-deb-buster-arm64 | 14 + .../versions-deb-buster-armhf | 14 + .../docker-config-engine-buster/versions-py3 | 14 + .../docker-database/versions-deb-bullseye | 26 + .../docker-dhcp-relay/versions-deb-bullseye | 40 + .../docker-eventd/versions-deb-bullseye | 26 + .../docker-fpm-frr/versions-deb-bullseye | 45 + .../dockers/docker-fpm-frr/versions-py3 | 1 + .../versions-deb-bullseye | 39 + .../versions-deb-bullseye | 30 + .../docker-gbsyncd-vs/versions-deb-bullseye | 33 + .../dockers/docker-lldp/versions-deb-bullseye | 35 + .../docker-macsec/versions-deb-bullseye | 34 + .../dockers/docker-mux/versions-deb-bullseye | 31 + .../dockers/docker-nat/versions-deb-buster | 27 + .../docker-orchagent/versions-deb-bullseye | 43 + .../dockers/docker-orchagent/versions-py3 | 2 + .../versions-deb-bullseye | 101 + .../docker-platform-monitor/versions-py3 | 21 + .../docker-ptf-sai/versions-deb-buster | 3 + .../dockers/docker-ptf-sai/versions-py3 | 12 + .../dockers/docker-ptf/versions-deb-buster | 492 +++++ .../versions/dockers/docker-ptf/versions-py2 | 72 + .../versions/dockers/docker-ptf/versions-py3 | 33 + .../versions-deb-bullseye | 26 + .../versions-deb-bullseye | 67 + .../versions-deb-bullseye | 19 + .../dockers/docker-sflow/versions-deb-buster | 21 + .../dockers/docker-snmp/versions-deb-bullseye | 41 + .../versions/dockers/docker-snmp/versions-py3 | 6 + .../versions-deb-buster | 25 + .../docker-sonic-mgmt-framework/versions-py3 | 32 + .../docker-sonic-p4rt/versions-deb-bullseye | 2 + .../versions-deb-bullseye | 45 + .../docker-sonic-vs/versions-deb-buster | 123 ++ .../dockers/docker-sonic-vs/versions-py2 | 16 + .../dockers/docker-sonic-vs/versions-py3 | 40 + .../versions-deb-bullseye | 6 + .../versions-deb-buster | 5 + .../versions-deb-bullseye | 23 + .../docker-syncd-bfn/versions-deb-bullseye | 29 + .../versions-deb-bullseye | 81 + .../versions-deb-bullseye | 34 + .../versions-deb-bullseye | 81 + .../docker-syncd-brcm/versions-deb-bullseye | 35 + .../versions-deb-bullseye | 81 + .../docker-syncd-centec/versions-deb-bullseye | 31 + .../versions-deb-bullseye-arm64 | 39 + .../versions-deb-bullseye | 69 + .../docker-syncd-mlnx-rpc/versions-py2 | 9 + .../docker-syncd-mlnx/versions-deb-bullseye | 81 + .../dockers/docker-syncd-mlnx/versions-py3 | 7 + .../versions-deb-bullseye-armhf | 44 + .../docker-syncd-vs/versions-deb-buster | 27 + .../docker-teamd/versions-deb-bullseye | 29 + .../versions-deb-bullseye | 1732 ++++++++++++++++ .../versions-deb-bullseye-arm64 | 22 + .../versions-deb-bullseye-armhf | 10 + .../dockers/sonic-slave-bullseye/versions-py3 | 111 + .../sonic-slave-buster/versions-deb-buster | 1777 +++++++++++++++++ .../versions-deb-buster-arm64 | 9 + .../versions-deb-buster-armhf | 12 + .../dockers/sonic-slave-buster/versions-py2 | 95 + .../dockers/sonic-slave-buster/versions-py3 | 81 + .../host-base-image/versions-deb-bullseye | 96 + .../versions-deb-bullseye-arm64 | 1 + .../versions-deb-bullseye-armhf | 1 + .../versions/host-image/versions-deb-bullseye | 338 ++++ .../host-image/versions-deb-bullseye-arm64 | 21 + .../host-image/versions-deb-bullseye-armhf | 26 + files/build/versions/host-image/versions-py3 | 74 + .../host-image/versions-py3-all-armhf | 1 + 101 files changed, 7428 insertions(+) create mode 100644 files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye create mode 100644 files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-arm64 create mode 100644 files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf create mode 100644 files/build/versions/build/build-sonic-slave-bullseye/versions-py3 create mode 100644 files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-arm64 create mode 100644 files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf create mode 100644 files/build/versions/build/build-sonic-slave-buster/versions-deb-buster create mode 100644 files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-arm64 create mode 100644 files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-armhf create mode 100644 files/build/versions/build/build-sonic-slave-buster/versions-py2 create mode 100644 files/build/versions/build/build-sonic-slave-buster/versions-py2-all-arm64 create mode 100644 files/build/versions/build/build-sonic-slave-buster/versions-py2-all-armhf create mode 100644 files/build/versions/build/build-sonic-slave-buster/versions-py3 create mode 100644 files/build/versions/build/build-sonic-slave-buster/versions-py3-all-arm64 create mode 100644 files/build/versions/build/build-sonic-slave-buster/versions-py3-all-armhf create mode 100644 files/build/versions/default/versions-docker create mode 100644 files/build/versions/default/versions-git create mode 100644 files/build/versions/default/versions-mirror create mode 100644 files/build/versions/default/versions-web create mode 100644 files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye-armhf create mode 100644 files/build/versions/dockers/docker-base-bullseye/versions-py3 create mode 100644 files/build/versions/dockers/docker-base-buster/versions-deb-buster create mode 100644 files/build/versions/dockers/docker-base-buster/versions-py3 create mode 100644 files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-arm64 create mode 100644 files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-armhf create mode 100644 files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 create mode 100644 files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster create mode 100644 files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-arm64 create mode 100644 files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-armhf create mode 100644 files/build/versions/dockers/docker-config-engine-buster/versions-py3 create mode 100644 files/build/versions/dockers/docker-database/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-eventd/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-fpm-frr/versions-py3 create mode 100644 files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-lldp/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-macsec/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-mux/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-nat/versions-deb-buster create mode 100644 files/build/versions/dockers/docker-orchagent/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-orchagent/versions-py3 create mode 100644 files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-platform-monitor/versions-py3 create mode 100644 files/build/versions/dockers/docker-ptf-sai/versions-deb-buster create mode 100644 files/build/versions/dockers/docker-ptf-sai/versions-py3 create mode 100644 files/build/versions/dockers/docker-ptf/versions-deb-buster create mode 100644 files/build/versions/dockers/docker-ptf/versions-py2 create mode 100644 files/build/versions/dockers/docker-ptf/versions-py3 create mode 100644 files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-sflow/versions-deb-buster create mode 100644 files/build/versions/dockers/docker-snmp/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-snmp/versions-py3 create mode 100644 files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster create mode 100644 files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 create mode 100644 files/build/versions/dockers/docker-sonic-p4rt/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-sonic-vs/versions-deb-buster create mode 100644 files/build/versions/dockers/docker-sonic-vs/versions-py2 create mode 100644 files/build/versions/dockers/docker-sonic-vs/versions-py3 create mode 100644 files/build/versions/dockers/docker-swss-layer-bullseye/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-swss-layer-buster/versions-deb-buster create mode 100644 files/build/versions/dockers/docker-syncd-bfn-rpc/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-syncd-brcm-dnx-rpc/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-syncd-brcm-rpc/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-syncd-centec-rpc/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye-arm64 create mode 100644 files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-py2 create mode 100644 files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye create mode 100644 files/build/versions/dockers/docker-syncd-mlnx/versions-py3 create mode 100644 files/build/versions/dockers/docker-syncd-mrvl/versions-deb-bullseye-armhf create mode 100644 files/build/versions/dockers/docker-syncd-vs/versions-deb-buster create mode 100644 files/build/versions/dockers/docker-teamd/versions-deb-bullseye create mode 100644 files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye create mode 100644 files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 create mode 100644 files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf create mode 100644 files/build/versions/dockers/sonic-slave-bullseye/versions-py3 create mode 100644 files/build/versions/dockers/sonic-slave-buster/versions-deb-buster create mode 100644 files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 create mode 100644 files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf create mode 100644 files/build/versions/dockers/sonic-slave-buster/versions-py2 create mode 100644 files/build/versions/dockers/sonic-slave-buster/versions-py3 create mode 100644 files/build/versions/host-base-image/versions-deb-bullseye create mode 100644 files/build/versions/host-base-image/versions-deb-bullseye-arm64 create mode 100644 files/build/versions/host-base-image/versions-deb-bullseye-armhf create mode 100644 files/build/versions/host-image/versions-deb-bullseye create mode 100644 files/build/versions/host-image/versions-deb-bullseye-arm64 create mode 100644 files/build/versions/host-image/versions-deb-bullseye-armhf create mode 100644 files/build/versions/host-image/versions-py3 create mode 100644 files/build/versions/host-image/versions-py3-all-armhf diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye new file mode 100644 index 000000000000..de2195d8a82b --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye @@ -0,0 +1,76 @@ +applibs==1.mlnx.4.5.4150 +applibs-dev==1.mlnx.4.5.4150 +bfnplatform==1.0.0 +bfnsdk==1.0.0 +iproute2-dev==1.mlnx.4.5.4150 +isc-dhcp-relay==4.4.1-2.3+deb11u1 +kernel-mft-dkms==4.21.0-100 +libhiredis-dev==0.14.0-3~bpo9+1 +libhiredis0.14==0.14.0-3~bpo9+1 +libnl-3-dev==3.5.0-1 +libnl-cli-3-200==3.5.0-1 +libnl-cli-3-dev==3.5.0-1 +libnl-genl-3-200==3.5.0-1 +libnl-genl-3-dev==3.5.0-1 +libnl-nf-3-200==3.5.0-1 +libnl-nf-3-dev==3.5.0-1 +libnl-route-3-dev==3.5.0-1 +libsaimetadata==1.0.0 +libsaimetadata-dev==1.0.0 +libsairedis==1.0.0 +libsairedis-dev==1.0.0 +libsaithrift-dev==0.9.4 +libsaivs==1.0.0 +libswsscommon==1.0.0 +libswsscommon-dev==1.0.0 +libtac-dev==1.4.1-1 +libtac2==1.4.1-1 +libteam-dev==1.30-1 +libteam-utils==1.30-1 +libteam5==1.30-1 +libteamdctl0==1.30-1 +libthrift-0.11.0==0.11.0-4 +libthrift-dev==0.14.1 +libthrift0==0.14.1 +libyang==1.0.73 +libyang-cpp==1.0.73 +libyang-dev==1.0.73 +linux-headers-5.10.0-18-2-amd64==5.10.140-1 +linux-headers-5.10.0-18-2-common==5.10.140-1 +lldpd==1.0.4-1 +lm-sensors==1:3.6.0-7 +mft==4.21.0-100 +mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 +net-tools==1.60+git20181103.0eebece-1 +python-thrift==0.11.0-4 +python3-swsscommon==1.0.0 +python3-thrift==0.14.1 +python3-yang==1.0.73 +sonic-dhcp6relay==1.0.0-0 +sonic-dhcpmon==1.0.0-0 +sonic-eventd==1.0.0-0 +sonic-linkmgrd==1.0.0-1 +sonic-mgmt-common==1.0.0 +sonic-mgmt-common-codegen==1.0.0 +sonic-platform-pddf==1.1 +sonic-platform-pddf-sym==1.1 +swss==1.0.0 +sx-acl-helper==1.mlnx.4.5.4150 +sx-acl-helper-dev==1.mlnx.4.5.4150 +sx-complib==1.mlnx.4.5.4150 +sx-complib-dev==1.mlnx.4.5.4150 +sx-examples==1.mlnx.4.5.4150 +sx-examples-dev==1.mlnx.4.5.4150 +sx-gen-utils==1.mlnx.4.5.4150 +sx-gen-utils-dev==1.mlnx.4.5.4150 +sx-hash-calc==1.mlnx.4.5.4150 +sx-scew==1.mlnx.4.5.4150 +sx-scew-dev==1.mlnx.4.5.4150 +sxd-libs==1.mlnx.4.5.4150 +sxd-libs-dev==1.mlnx.4.5.4150 +syncd==1.0.0 +syncd-vs==1.0.0 +thrift-compiler==0.14.1 +wjh-libs==1.mlnx.4.5.4150 +wjh-libs-dev==1.mlnx.4.5.4150 +wpasupplicant==2:2.9.0-14 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-arm64 b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..90f712515be3 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-arm64 @@ -0,0 +1,3 @@ +libnl-3-200==3.5.0-1 +libnl-route-3-200==3.5.0-1 +linux-headers-5.10.0-18-2-arm64==5.10.140-1 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..e593594e45da --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf @@ -0,0 +1,4 @@ +libnl-3-200==3.5.0-1 +libnl-route-3-200==3.5.0-1 +linux-headers-5.10.0-18-2-armmp==5.10.140-1 +mrvllibsai==1.10.2-1 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 new file mode 100644 index 000000000000..7273003bb701 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 @@ -0,0 +1,33 @@ +blessed==1.20.0 +charset-normalizer==3.0.1 +click-log==0.4.0 +colorful==0.5.5 +docker==6.0.1 +docker-image-py==0.1.12 +enlighten==1.11.2 +filelock==3.9.0 +ijson==2.6.1 +ipaddress==1.0.23 +jsondiff==2.0.0 +jsonpatch==1.32 +jsonpointer==2.3 +jsonschema==2.6.0 +natsort==6.2.1 +netaddr==0.8.0 +netifaces==0.11.0 +pddf-platform==1.0 +prefixed==0.7.0 +prettyprinter==0.18.0 +psutil==5.9.4 +pycairo==1.23.0 +pyroute2==0.5.19 +python-arptable==0.0.2 +semantic-version==2.10.0 +systemd-python==235 +tabulate==0.8.2 +thrift==0.14.1 +toposort==1.6 +wcwidth==0.2.6 +websocket-client==1.5.1 +www-authenticate==0.9.2 +xmltodict==0.12.0 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-arm64 b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-arm64 new file mode 100644 index 000000000000..defcd2f93cb6 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-arm64 @@ -0,0 +1,6 @@ +bitarray==1.5.3 +click==7.0 +lxml==4.9.1 +redis==3.5.3 +requests==2.28.2 +zipp==1.2.0 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf new file mode 100644 index 000000000000..361cc9f7c561 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf @@ -0,0 +1,5 @@ +bitarray==1.5.3 +click==7.0 +lxml==4.9.1 +redis==3.5.3 +requests==2.28.2 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster new file mode 100644 index 000000000000..46c1e3ad4017 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster @@ -0,0 +1,34 @@ +libnl-cli-3-200==3.5.0-1 +libnl-cli-3-dev==3.5.0-1 +libnl-genl-3-200==3.5.0-1 +libnl-genl-3-dev==3.5.0-1 +libnl-nf-3-200==3.5.0-1 +libnl-nf-3-dev==3.5.0-1 +libsaimetadata==1.0.0 +libsaimetadata-dev==1.0.0 +libsairedis==1.0.0 +libsairedis-dev==1.0.0 +libsaivs==1.0.0 +libsaivs-dev==1.0.0 +libswsscommon==1.0.0 +libswsscommon-dev==1.0.0 +libteam-dev==1.30-1 +libteam-utils==1.30-1 +libteam5==1.30-1 +libteamdctl0==1.30-1 +libthrift-0.11.0==0.11.0-4 +libthrift-dev==0.11.0-4 +libthrift0==0.14.1 +libyang==1.0.73 +libyang-cpp==1.0.73 +libyang-dev==1.0.73 +python-swsscommon==1.0.0 +python-thrift==0.11.0-4 +python3-swsscommon==1.0.0 +python3-yang==1.0.73 +sonic-mgmt-common==1.0.0 +sonic-mgmt-common-codegen==1.0.0 +sonic-mgmt-framework==1.0-01 +swss==1.0.0 +syncd-vs==1.0.0 +thrift-compiler==0.11.0-4 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-arm64 b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-arm64 new file mode 100644 index 000000000000..2f592dd8dbbc --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-arm64 @@ -0,0 +1,9 @@ +libhiredis-dev==0.14.0-3~bpo9+1 +libhiredis0.14==0.14.0-3~bpo9+1 +libnl-3-200==3.5.0-1 +libnl-3-dev==3.5.0-1 +libnl-route-3-200==3.5.0-1 +libnl-route-3-dev==3.5.0-1 +libsnmp-base==5.7.3+dfsg-5 +libsnmp-dev==5.7.3+dfsg-5 +libsnmp30==5.7.3+dfsg-5 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-armhf b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-armhf new file mode 100644 index 000000000000..2f592dd8dbbc --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-armhf @@ -0,0 +1,9 @@ +libhiredis-dev==0.14.0-3~bpo9+1 +libhiredis0.14==0.14.0-3~bpo9+1 +libnl-3-200==3.5.0-1 +libnl-3-dev==3.5.0-1 +libnl-route-3-200==3.5.0-1 +libnl-route-3-dev==3.5.0-1 +libsnmp-base==5.7.3+dfsg-5 +libsnmp-dev==5.7.3+dfsg-5 +libsnmp30==5.7.3+dfsg-5 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py2 b/files/build/versions/build/build-sonic-slave-buster/versions-py2 new file mode 100644 index 000000000000..ecfc5d8d7bd1 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py2 @@ -0,0 +1,11 @@ +bitarray==1.5.3 +contextlib2==0.6.0.post1 +future==0.18.3 +importlib-resources==3.3.1 +natsort==6.2.1 +netaddr==0.8.0 +pyang==2.5.3 +pyangbind==0.6.0 +redis==3.5.3 +thrift==0.11.0 +zipp==1.2.0 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-arm64 b/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-arm64 new file mode 100644 index 000000000000..30ca4f716ace --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-arm64 @@ -0,0 +1,2 @@ +ipaddress==1.0.23 +lxml==4.9.1 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-armhf b/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-armhf new file mode 100644 index 000000000000..30ca4f716ace --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-armhf @@ -0,0 +1,2 @@ +ipaddress==1.0.23 +lxml==4.9.1 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py3 b/files/build/versions/build/build-sonic-slave-buster/versions-py3 new file mode 100644 index 000000000000..0e5c7d3c3afd --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py3 @@ -0,0 +1,31 @@ +blessed==1.20.0 +charset-normalizer==3.0.1 +click==7.0 +click-log==0.4.0 +colorful==0.5.5 +dbus-python==1.3.2 +docker==6.0.1 +docker-image-py==0.1.12 +enlighten==1.11.2 +filelock==3.9.0 +ijson==2.6.1 +ipaddress==1.0.23 +jsondiff==2.0.0 +jsonpatch==1.32 +jsonpointer==2.3 +lazy-object-proxy==1.9.0 +natsort==6.2.1 +netaddr==0.8.0 +netifaces==0.11.0 +prefixed==0.7.0 +prettyprinter==0.18.0 +pycairo==1.23.0 +pyroute2==0.5.19 +semantic-version==2.10.0 +systemd-python==235 +tabulate==0.8.2 +toposort==1.6 +wcwidth==0.2.6 +websocket-client==1.5.1 +www-authenticate==0.9.2 +xmltodict==0.12.0 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-arm64 b/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-arm64 new file mode 100644 index 000000000000..2c6a3d67811f --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-arm64 @@ -0,0 +1,3 @@ +bitarray==1.5.3 +lxml==4.9.1 +redis==3.5.3 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-armhf b/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-armhf new file mode 100644 index 000000000000..2c6a3d67811f --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-armhf @@ -0,0 +1,3 @@ +bitarray==1.5.3 +lxml==4.9.1 +redis==3.5.3 diff --git a/files/build/versions/default/versions-docker b/files/build/versions/default/versions-docker new file mode 100644 index 000000000000..a62ff7d2dd39 --- /dev/null +++ b/files/build/versions/default/versions-docker @@ -0,0 +1,12 @@ +amd64:amd64/debian:bullseye==sha256:749383b0a6d17fb745d397b108d2ea38b5832226586b25c9f5cf7fcde24458ab +amd64:amd64/debian:buster==sha256:b589ffbcc03bb272c9e0c0e699aedb2271a1ca65b2a3447057cbfd80d9eff9bf +amd64:debian:bullseye==sha256:43ef0c6c3585d5b406caa7a0f232ff5a19c1402aeb415f68bcd1cf9d10180af8 +amd64:debian:buster==sha256:233c3bbc892229c82da7231980d50adceba4db56a08c0b7053a4852782703459 +arm64:arm64v8/debian:bullseye==sha256:4951d5cf066cd4ff0558a7cc75816dc203eaeb2c634329d3832db76bbc7586b0 +arm64:arm64v8/debian:buster==sha256:88d3e537769c4ef5bc7961ad5460739dacb29d266d178e6f9befbe900afeb9b9 +arm64:debian:bullseye==sha256:43ef0c6c3585d5b406caa7a0f232ff5a19c1402aeb415f68bcd1cf9d10180af8 +arm64:debian:buster==sha256:233c3bbc892229c82da7231980d50adceba4db56a08c0b7053a4852782703459 +armhf:arm32v7/debian:bullseye==sha256:e514a20691c31e31760fbe7f9b0c3d3e7e19066c8a60a79a6306d494c66689a4 +armhf:arm32v7/debian:buster==sha256:d0a16ffa3bc4302a306263e5abffe04d0340ea964e0e037afef17a3e9765b48a +armhf:debian:bullseye==sha256:43ef0c6c3585d5b406caa7a0f232ff5a19c1402aeb415f68bcd1cf9d10180af8 +armhf:debian:buster==sha256:233c3bbc892229c82da7231980d50adceba4db56a08c0b7053a4852782703459 diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git new file mode 100644 index 000000000000..8456d414e394 --- /dev/null +++ b/files/build/versions/default/versions-git @@ -0,0 +1,24 @@ +https://chromium.googlesource.com/chromium/tools/depot_tools.git==4756d7c420fa4b6ecd8f9776638de7c7301f021b +https://github.com/aristanetworks/swi-tools.git==b5f087e4774168bf536360d43c9c509c8f14ad9f +https://github.com/CESNET/libyang.git==d57c8888922d1663508ad0f0a5b66f8ad600276d +https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 +https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b +https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 +https://github.com/flashrom/flashrom.git==f4ddd32343300fada0adddfce6c4cb4dc1e329b6 +https://github.com/FreeRADIUS/freeradius-server.git==79a2441f4f570ed4df2125ca2bb17740f51b1637 +https://github.com/FreeRADIUS/pam_radius.git==bcafcf535c763ee193ce7803a56cddb929db04cb +https://github.com/jeroennijhof/pam_tacplus.git==7908a7faa0205beda9ea198bdd3aa37868be6da2 +https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 +https://github.com/lguohan/gnxi.git==f2b11e45b16ab13485ae14933f30c18ee6336499 +https://github.com/Marvell-switching/mrvl-prestera.git==9dbae444204a2c27b33be698ce497d55926b8893 +https://github.com/Mellanox/libpsample.git==62bb27d9a49424e45191eee81df7ce0d8c74e774 +https://github.com/p4lang/ptf.git==7494366607e2e4c171439df3585eba3c9769fad8 +https://github.com/p4lang/scapy-vxlan.git==85ffe83da156568ee47a0750f638227e6e1d7479 +https://github.com/sflow/host-sflow==6889a0914b821c8dcfd0e37794196f5c7d017221 +https://github.com/sflow/sflowtool==8c914e79ecb7930adcba2e5296041c3f9eb8e450 +https://github.com/thom311/libnl==cbafad9ddf24caef5230fef715d34f0539603be0 +https://salsa.debian.org/debian/libteam.git==48142125234a665ad5367b724af36a58fb484d3d +https://salsa.debian.org/kernel-team/ethtool/==b24474c5f4cad2bb690ced33a3c7df397170a699 +https://salsa.debian.org/kernel-team/initramfs-tools.git==dd16eade69ef76b304a369fac2f6c0de508b855b +https://salsa.debian.org/sk-guest/monit.git==c9da7ebb1f35dfba17b50b5969a6e75e29cbec0d +https://salsa.debian.org/ssh-team/openssh.git==48770216530d8a0a57f5f1d7cc60addd67d1b549 diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror new file mode 100644 index 000000000000..a5d51c7a31df --- /dev/null +++ b/files/build/versions/default/versions-mirror @@ -0,0 +1,15 @@ +deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z +deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z +debian==20230222T000216Z +debian-security==20230222T000222Z +download.docker.com_linux_debian_dists_bullseye==2023-02-16T23:33:39Z +download.docker.com_linux_debian_dists_buster==2023-02-16T23:33:39Z +packages.microsoft.com_repos_sonic-dev_dists_jessie==2019-05-26T14:59:06Z +packages.trafficmanager.net_snapshot_debian-security_20230222T000222Z_dists_bullseye-security==2023-02-21T22:53:06Z +packages.trafficmanager.net_snapshot_debian-security_20230222T000222Z_dists_buster_updates==2023-02-21T22:53:06Z +packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_bullseye-backports==2023-02-21T20:12:14Z +packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_bullseye-updates==2023-02-21T20:12:14Z +packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_buster-backports==2023-02-21T20:12:14Z +packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_buster-updates==2023-02-21T20:12:14Z diff --git a/files/build/versions/default/versions-web b/files/build/versions/default/versions-web new file mode 100644 index 000000000000..7474b76a4288 --- /dev/null +++ b/files/build/versions/default/versions-web @@ -0,0 +1,128 @@ +http://deb.debian.org/debian/pool/main/i/iproute2/iproute2_5.10.0-4~bpo10+1.debian.tar.xz==4fcbfdd68253864ebbfc11c3fb1480c6 +http://deb.debian.org/debian/pool/main/i/iproute2/iproute2_5.10.0-4~bpo10+1.dsc==81cf5b863f12de38a48b5a3b602cfff4 +http://deb.debian.org/debian/pool/main/i/iproute2/iproute2_5.10.0.orig.tar.xz==f36f0a0612f7fd565680e918d692900d +http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.2-4.debian.tar.xz==c27e499611c48ba307792518d29cdcc7 +http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.2-4.dsc==d9572a9f48c88293341681601a7b18c5 +http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.2.orig.tar.bz2==944558e88ddcc3b9b0d9550070fa3599 +http://deb.debian.org/debian/pool/main/i/isc-dhcp/isc-dhcp_4.4.1-2.3+deb11u1.debian.tar.xz==8c3640097a1b4cc59e927badbd45b3f0 +http://deb.debian.org/debian/pool/main/i/isc-dhcp/isc-dhcp_4.4.1-2.3+deb11u1.dsc==1af0a028a9655235ec3372332f94a19c +http://deb.debian.org/debian/pool/main/i/isc-dhcp/isc-dhcp_4.4.1.orig.tar.gz==dbcba5108f659278200218ac0847ce3f +http://deb.debian.org/debian/pool/main/l/lm-sensors/lm-sensors_3.6.0-7.debian.tar.xz==8eab143a53c71c03695ebc78e4b5ed36 +http://deb.debian.org/debian/pool/main/l/lm-sensors/lm-sensors_3.6.0-7.dsc==983d68fb43001bb2fc94862bc4bc2e2b +http://deb.debian.org/debian/pool/main/l/lm-sensors/lm-sensors_3.6.0.orig.tar.gz==f60e47b5eb50bbeed48a9f43bb08dd5e +http://deb.debian.org/debian/pool/main/n/ntp/ntp_4.2.8p15+dfsg-1.debian.tar.xz==896c9b6679f379d8967b012a0cc792c2 +http://deb.debian.org/debian/pool/main/n/ntp/ntp_4.2.8p15+dfsg.orig.tar.xz==c1c557036197188a22ec285fa53149d8 +http://ftp.us.debian.org/debian/pool/main/s/scapy/python-scapy_2.4.0-2_all.deb==d87d7b22de51937b1e706e4751b86251 +http://http.debian.net/debian/pool/main/h/hiredis/hiredis_0.14.0-3~bpo9+1.debian.tar.xz==ef340aedc6fd42c549cd503bffb498b2 +http://http.debian.net/debian/pool/main/h/hiredis/hiredis_0.14.0-3~bpo9+1.dsc==be4ce11ef67268e59e4b6be587327c40 +http://http.debian.net/debian/pool/main/h/hiredis/hiredis_0.14.0.orig.tar.gz==6d565680a4af0d2e261abbc3e3431b2b +http://www.mellanox.com/downloads/MFT/mft-4.21.0-100-x86_64-deb.tgz==51efe115cbada1120fefe7e4c6958baf +https://archive.apache.org/dist/thrift/0.14.1/thrift-0.14.1.tar.gz==c64434548438df2cb1e53fb27c600e85 +https://bootstrap.pypa.io/pip/2.7/get-pip.py==60e8267eb1b7bc71dc4843eb7bd294d3 +https://deb.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.123+deb11u1.dsc==27f74ae171f50bfc1116d3e23dbbab3f +https://deb.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.123+deb11u1.tar.gz==37b56a6cf74721c6496d05d032cd22af +https://deb.debian.org/debian/pool/main/k/kdump-tools/kdump-tools_1.6.8.4.dsc==f96a03bb090ab03d484e5d232161fafe +https://deb.debian.org/debian/pool/main/k/kdump-tools/kdump-tools_1.6.8.4.tar.xz==26bcae7c27b729d614a4a85e2a01cb64 +https://deb.nodesource.com/gpgkey/nodesource.gpg.key==003b51a89a133b5db4cca98b2dea3117 +https://deb.nodesource.com/node_14.x/dists/bullseye/Release==6b7d50c433d129d4c6fd95bdf56070fa +https://deb.nodesource.com/node_14.x/dists/buster/Release==42875141604382f0abb4d047f645dfe1 +https://deb.nodesource.com/setup_14.x==7e3b27b12367cbc79d788cd43bbc917c +https://download.docker.com/linux/debian/gpg==1afae06b34a13c1b3d9cb61a26285a15 +https://github.com/aristanetworks/sonic-firmware/raw/446f30ccd8626f904d89d5798da7294948e090a6/phy/phy-credo_1.0_amd64.deb==6c3d6c32477615cbe049b9161ce15bd5 +https://github.com/barefootnetworks/sonic-release-pkgs/raw/dev/bfnplatform_20221130_sai_1.11.0_deb11.deb==4a77e5f35b75ad7ce062f631581b40e2 +https://github.com/barefootnetworks/sonic-release-pkgs/raw/dev/bfnsdk_20221130_sai_1.11.0_deb11.deb==c2b0dfb4122dcdbd4af58826e2010640 +https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64==abe26a71ce14950f94d858c317da94d1 +https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-arm64==2b326ca77b64a5cf7df04e80b4fdbca0 +https://github.com/CentecNetworks/sonic-binaries/raw/master/amd64/sai/libsai-dev_1.11.0-1_amd64.deb==6a9e27b3830d96e980651de15b291933 +https://github.com/CentecNetworks/sonic-binaries/raw/master/amd64/sai/libsai_1.11.0-1_amd64.deb==8bd907c4baeacf6467c0794bee0d723c +https://github.com/CentecNetworks/sonic-binaries/raw/master/amd64/third_party/advantech/_Susi4.so==5e1b8daef522c9da00af400abe25810b +https://github.com/CentecNetworks/sonic-binaries/raw/master/amd64/third_party/advantech/libSUSI-4.00.so.1==393a94b0abba146777e276e1febe0cb0 +https://github.com/CentecNetworks/sonic-binaries/raw/master/arm64/sai/libsai-dev_1.11.0-1_arm64.deb==5546bb53d3d09b256c625824059b2953 +https://github.com/CentecNetworks/sonic-binaries/raw/master/arm64/sai/libsai_1.11.0-1_arm64.deb==b5c30d03483a1c30b2c5b44a45c4a13f +https://github.com/CumulusNetworks/ifupdown2/archive/3.0.0-1.tar.gz==755459b3a58fbc11625336846cea7420 +https://github.com/Marvell-switching/sonic-marvell-binaries/raw/master/armhf/sai-plugin/mrvllibsai_1.10.2-1_armhf.deb==6d75ab5ec102247fd42aed43b4bf5da6 +https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz==6f56ef28c93cee644e8c4aaaef7cfb55 +https://launchpad.net/debian/+archive/primary/+sourcefiles/bash/5.1-2/bash_5.1-2.debian.tar.xz==9d0cbd5f463f461c840c95f62a64d61b +https://launchpad.net/debian/+archive/primary/+sourcefiles/bash/5.1-2/bash_5.1-2.dsc==be44c5a9fc12fb567a486f54b842dd9e +https://launchpad.net/debian/+archive/primary/+sourcefiles/bash/5.1-2/bash_5.1.orig.tar.xz==6ddb13b6111f601db08fc7c72afa0263 +https://raw.githubusercontent.com/p4lang/ptf/master/ptf_nn/ptf_nn_agent.py==628956b660575965429cec84b1778816 +https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.5/swagger-codegen-cli-2.4.5.jar==219f1453ff22482d9e080effbfa7fa81 +https://sonicstorage.blob.core.windows.net/debian-security/pool/updates/main/l/linux/linux_5.10.140-1.debian.tar.xz==9813a002af43da3a5be05f3d31e85328 +https://sonicstorage.blob.core.windows.net/debian-security/pool/updates/main/l/linux/linux_5.10.140-1.dsc==84ab224b073f97978802d9f998248fcc +https://sonicstorage.blob.core.windows.net/debian-security/pool/updates/main/l/linux/linux_5.10.140.orig.tar.xz==925a4af3dffcc9e2838d223e413d6ebb +https://sonicstorage.blob.core.windows.net/debian/pool/main/l/lldpd/lldpd_1.0.4-1.debian.tar.xz==0a529cf8d1717b5c3dbe0c61b3512aa1 +https://sonicstorage.blob.core.windows.net/debian/pool/main/l/lldpd/lldpd_1.0.4-1.dsc==b88b922d96688c948e90987fcaa3a2de +https://sonicstorage.blob.core.windows.net/debian/pool/main/l/lldpd/lldpd_1.0.4.orig.tar.gz==33e8d58623f99184e4e709cbbfe45db3 +https://sonicstorage.blob.core.windows.net/debian/pool/main/liby/libyang/libyang2_2.0.112-6.debian.tar.xz==aa798a069f506a243d337c18600477e5 +https://sonicstorage.blob.core.windows.net/debian/pool/main/liby/libyang/libyang2_2.0.112-6.dsc==da4924086edc4911c6fca21ca46fdb1d +https://sonicstorage.blob.core.windows.net/debian/pool/main/liby/libyang/libyang2_2.0.112.orig.tar.gz==4ac414ef27f3c4d14f96c2f49c58c2be +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.7.3+dfsg-5.debian.tar.xz==ad957e90207d0669beb2109e4e325def +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.7.3+dfsg-5.dsc==2443e4dffbdb020e7ab4f947a7904912 +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.7.3+dfsg.orig.tar.xz==6391ae27eb1ae34ff5530712bb1c4209 +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.9+dfsg-4+deb11u1.debian.tar.xz==a3e626b1ed5adc26430e1727d81641df +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.9+dfsg-4+deb11u1.dsc==a36ed553b5034b7400d9e9a8d529b27e +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.9+dfsg.orig.tar.xz==6c2d346ce3320e8999500497e9bacc99 +https://sonicstorage.blob.core.windows.net/packages/20190307/bcmcmd?sv=2015-04-05&sr=b&sig=sUdbU7oVbh5exbXXHVL5TDFBTWDDBASHeJ8Cp0B0TIc%3D&se=2038-05-06T22%3A34%3A19Z&sp=r==b8aefc751bdf93218716bca6797460ff +https://sonicstorage.blob.core.windows.net/packages/20190307/dsserve?sv=2015-04-05&sr=b&sig=lk7BH3DtW%2F5ehc0Rkqfga%2BUCABI0UzQmDamBsZH9K6w%3D&se=2038-05-06T22%3A34%3A45Z&sp=r==f9d4b815ebb9be9f755dedca8a51170d +https://sonicstorage.blob.core.windows.net/packages/credosai/libsaicredo-owl_0.8.2_amd64.deb?sv=2021-04-10&st=2023-01-31T04%3A25%3A43Z&se=2100-01-31T04%3A25%3A00Z&sr=b&sp=r&sig=%2BdSFujwy0gY%2FiH50Ffi%2FsqZOAHBOFPUcBdR06fHEZkI%3D==cca0a297f413bf6b01ea6761b040d527 +https://sonicstorage.blob.core.windows.net/packages/credosai/libsaicredo_0.8.2_amd64.deb?sv=2021-04-10&st=2023-01-31T04%3A24%3A23Z&se=2100-01-31T04%3A24%3A00Z&sr=b&sp=r&sig=RZPbmaIetvDRtwifrVT4s%2FaQxB%2FBTOyCqXtMtoNRjmY%3D==9107bab0c6295fecd4ab4cd48493bc3f +https://sonicstorage.blob.core.windows.net/packages/debian/socat_1.7.4.1-3.debian.tar.xz?sv=2020-04-08&st=2021-12-14T08%3A00%3A00Z&se=2030-12-14T18%3A18%3A00Z&sr=b&sp=r&sig=C8aYSvaQgMJ58Z13kFY0Wr0J0QF6i7WCeET9%2BpF%2BAxc%3D==e8d1e99b4b9e93f5dde860f6d55f42e3 +https://sonicstorage.blob.core.windows.net/packages/debian/socat_1.7.4.1-3.dsc?sv=2020-04-08&st=2021-12-14T00%3A00%3A00Z&se=2050-12-15T00%3A00%3A00Z&sr=b&sp=r&sig=fIy6dVz3s59K0TiMkTlwSWN8lCzRl3i76ruAtROhfWA%3D==df3ed0dd965589fd09bf6a2920bc273e +https://sonicstorage.blob.core.windows.net/packages/debian/socat_1.7.4.1.orig.tar.gz?sv=2020-04-08&st=2021-12-14T00%3A00%3A00Z&se=2050-12-15T00%3A00%3A00Z&sr=b&sp=r&sig=gpihyZv%2Fr0bVrCUKCKwpS4bIoqiPpdd%2BgCfuUGNHOUc%3D==780d14908dc1a6aa2790de376ab56b7a +https://sonicstorage.blob.core.windows.net/packages/debian/thrift_0.11.0-4.debian.tar.xz?sv=2015-04-05&sr=b&sig=dj9uJ5YjUNupcmuxSX6%2F5IS9NqaGAyM9iF2h%2F2rROZA%3D&se=2156-02-02T17%3A19%3A34Z&sp=r==52ad383b97ad051f4d1d25b54aaad569 +https://sonicstorage.blob.core.windows.net/packages/debian/thrift_0.11.0-4.dsc?sv=2015-04-05&sr=b&sig=pWfg55owvQ2jZtZ6ylHp0OP8uZyfc9sxO6H%2BP4Ez7w4%3D&se=2156-02-02T17%3A20%3A05Z&sp=r==6917fe7b3ada9313be94713dd50fee7b +https://sonicstorage.blob.core.windows.net/packages/debian/thrift_0.11.0.orig.tar.gz?sv=2015-04-05&sr=b&sig=%2BrAjWESiSNRCMN7NGqEqVGceLefpwwS%2FWPKEfJpPLSQ%3D&se=2156-02-02T17%3A17%3A20Z&sp=r==0be59730ebce071eceaf6bfdb8d3a20e +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==54e11e450a461b1f4ae39c3ce3f15eff +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==1d8b8d3fa37f842d0184b5205be22be9 +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==58494305d4ac201daedf9364a1018a1b +https://sonicstorage.blob.core.windows.net/packages/redis/redis-server_6.0.6-1~bpo10+1_amd64.deb?sv=2015-04-05&sr=b&sig=2Ketg7BmkZEaTxR%2FgvAFVmhjn7ywdmkc7l2T2rsL57o%3D&se=2030-09-06T19%3A45%3A20Z&sp=r==09af97c096f4c854d238f91614a3415b +https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1_bpo10+1_arm64.deb?sv=2015-04-05&sr=b&sig=GbkJV2wWln3hoz27zKi5erdk3NDKrAFrQriA97bcRCY%3D&se=2030-10-24T04%3A22%3A21Z&sp=r==282b4766cc9ac7d8bb70622bd69d9f5c +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==62f287117afab6caaec564232ebbb5de +https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1~bpo10+1_amd64.deb?sv=2015-04-05&sr=b&sig=73zbmjkf3pi%2Bn0R8Hy7CWT2EUvOAyzM5aLYJWCLySGM%3D&se=2030-09-06T19%3A44%3A59Z&sp=r==2d58c3c3358290c04d5e0ba70f297f18 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.1/amd64/golang-1.15-go_1.15.15-1~deb11u4%2Bfips_amd64.deb==b60f6db62805696b47ab422ab798fe56 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.1/amd64/golang-1.15-src_1.15.15-1~deb11u4%2Bfips_amd64.deb==1c920937aa49b602a1bfec3c49747131 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.1/arm64/golang-1.15-go_1.15.15-1~deb11u4%2Bfips_arm64.deb==0b70c104b907db13ff2fe5d52b3d0008 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.1/arm64/golang-1.15-src_1.15.15-1~deb11u4%2Bfips_arm64.deb==1d06900f03424fa5ce34a782605983fe +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/golang-1.15-doc_1.15.15-1~deb11u4+fips_all.deb==72ead09139135d4ecd91b76c89128567 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/golang-1.15-go_1.15.15-1~deb11u4+fips_amd64.deb==145e103357a915cc759cc93de602b631 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/golang-1.15-src_1.15.15-1~deb11u4+fips_amd64.deb==1c1a46d5599be92777702643c37d5751 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/golang-1.15_1.15.15-1~deb11u4+fips_all.deb==847bc1fc5ce9c8ebae5176947ab34d30 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libk5crypto3_1.18.3-6+deb11u1+fips_amd64.deb==5e8de29d5f6844f71f15cbf0c3993f1c +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libpython3.9-minimal_3.9.2-1+fips_amd64.deb==411d2092cd614dd187bdc0ec0bb9598f +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libpython3.9-stdlib_3.9.2-1+fips_amd64.deb==521dd7170cb9519fac3aa492ff3dd1ea +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libpython3.9_3.9.2-1+fips_amd64.deb==c405132eacaf059c7c903f853d48be7e +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libssl-dev_1.1.1n-0+deb11u4+fips_amd64.deb==a1833ecb83cddb66ce30bf4b28e48856 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libssl-doc_1.1.1n-0+deb11u4+fips_all.deb==52925c4fd9932ffe78798dd55bdb077e +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libssl1.1_1.1.1n-0+deb11u4+fips_amd64.deb==65000162eac58235fbf1acab52047ca9 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/openssh-client_8.4p1-5+deb11u1+fips_amd64.deb==bee0e4f52cf8dedd6dac78be18b02400 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/openssh-server_8.4p1-5+deb11u1+fips_amd64.deb==8ac4a8397c8e62d554718f1c8c6f5896 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/openssh-sftp-server_8.4p1-5+deb11u1+fips_amd64.deb==94740a01d5d025df8d99d3e5b7a0b0e9 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/openssl_1.1.1n-0+deb11u4+fips_amd64.deb==2f3040c1dc6230c5dd09994eeaace905 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/python3.9-minimal_3.9.2-1+fips_amd64.deb==27559fec65ac317419222fd19bcf5150 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/python3.9_3.9.2-1+fips_amd64.deb==30be224443931a2a3428aa270b87384a +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/symcrypt-openssl_0.7_amd64.deb==6d909de22cf4f44879b27a4fc2697cac +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/golang-1.15-doc_1.15.15-1~deb11u4+fips_all.deb==72ead09139135d4ecd91b76c89128567 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/golang-1.15-go_1.15.15-1~deb11u4+fips_arm64.deb==b59f315800ca2ec31de79136dfb8979d +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/golang-1.15-src_1.15.15-1~deb11u4+fips_arm64.deb==0038c68ed1e3adb1b43434af81cff678 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/golang-1.15_1.15.15-1~deb11u4+fips_all.deb==847bc1fc5ce9c8ebae5176947ab34d30 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libk5crypto3_1.18.3-6+deb11u1+fips_arm64.deb==0bb2a2d23f73e882d91b2e256aad08f6 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libpython3.9-minimal_3.9.2-1+fips_arm64.deb==870a96b0d9d7fe753d495ad6574e4c03 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libpython3.9-stdlib_3.9.2-1+fips_arm64.deb==eb8bb0d3806adbc987ec300e221a3baf +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libpython3.9_3.9.2-1+fips_arm64.deb==edae5c269e2c401873e7cff3d4f93a7a +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libssl-dev_1.1.1n-0+deb11u4+fips_arm64.deb==56aed9e3cef3692a36129598bd9871d6 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libssl-doc_1.1.1n-0+deb11u4+fips_all.deb==52925c4fd9932ffe78798dd55bdb077e +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libssl1.1_1.1.1n-0+deb11u4+fips_arm64.deb==5c760faf80f6f4efc71e255b2e0774fc +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/openssh-client_8.4p1-5+deb11u1+fips_arm64.deb==ce762b1730871a72bc423c97444342ad +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/openssh-server_8.4p1-5+deb11u1+fips_arm64.deb==c943526cf7317d4c0d05005db47b6992 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/openssh-sftp-server_8.4p1-5+deb11u1+fips_arm64.deb==4e360e97ed3f0eaead7a8ef79fa4f3d7 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/openssl_1.1.1n-0+deb11u4+fips_arm64.deb==68e32a58e12f960ce163decc0f756906 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/python3.9-minimal_3.9.2-1+fips_arm64.deb==add04c26a72788957951d8581b5c8e2a +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/python3.9_3.9.2-1+fips_arm64.deb==4d6307dabcd3060235d6188cfa0346b8 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/symcrypt-openssl_0.7_arm64.deb==f25f73823a0f22805b8e0be43bef190f +https://sonicstorage.blob.core.windows.net/public/sai/bcmpai/REL_3.8/3.8/libsaibroncos_3.8_amd64.deb==f7c3f0ed8c97c2572e3c2e59faaae4a8 +https://sonicstorage.blob.core.windows.net/public/sai/bcmsai/REL_7.0_SAI_1.11/7.1.111.1/libsaibcm-dev_7.1.111.1_amd64.deb==894abd7658c3832962db4eaea1a40fd1 +https://sonicstorage.blob.core.windows.net/public/sai/bcmsai/REL_7.0_SAI_1.11/7.1.111.1/libsaibcm_7.1.111.1_amd64.deb==23d3292d27e1c39cee89575f2a91e18c +https://sonicstorage.blob.core.windows.net/public/sai/bcmsai/REL_7.0_SAI_1.11/7.1.111.1/libsaibcm_dnx_7.1.111.1_amd64.deb==458f404279c3f30ec71de6bad7373323 +https://storage.googleapis.com/golang/go1.14.2.linux-amd64.tar.gz==856d248e3ea8a287d13e5f6afd086282 +https://storage.googleapis.com/golang/go1.14.2.linux-arm64.tar.gz==e5f79b403701e00f20d13f0ea561b064 +https://storage.googleapis.com/golang/go1.14.2.linux-armv6l.tar.gz==04467414e783b18de4278e9f24baf4be diff --git a/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye new file mode 100644 index 000000000000..b6eeef809d2c --- /dev/null +++ b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye @@ -0,0 +1,80 @@ +ca-certificates==20210119 +curl==7.74.0-1.3+deb11u5 +iproute2==5.10.0-4 +jq==1.6-2.1 +less==551-2 +libatomic1==10.2.1-6 +libbpf0==1:0.3-2 +libbrotli1==1.0.9-2+b2 +libbsd0==0.11.3-1 +libcap2==1:2.44-1 +libcap2-bin==1:2.44-1 +libcurl4==7.74.0-1.3+deb11u5 +libdaemon0==0.14-7.1 +libdbus-1-3==1.12.24-0+deb11u1 +libelf1==0.183-1 +libestr0==0.1.10-2.1+b1 +libexpat1==2.2.10-2+deb11u5 +libfastjson4==0.99.9-1 +libgdbm-compat4==1.19-2 +libgdbm6==1.19-2 +libjansson4==2.13.1-1.1 +libjemalloc2==5.2.1-3 +libjq1==1.6-2.1 +libk5crypto3==1.18.3-6+deb11u1+fips +libldap-2.4-2==2.4.57+dfsg-3+deb11u1 +liblognorm5==2.0.5-1.1 +liblua5.1-0==5.1.5-8.1+b3 +liblzf1==3.6-3 +libmd0==1.0.3-3 +libmnl0==1.0.4-3 +libmpdec3==2.5.1-1 +libncurses6==6.2+20201114-2 +libncursesw6==6.2+20201114-2 +libnghttp2-14==1.43.0-1 +libnorm1==1.5.9+dfsg-2 +libonig5==6.9.6-1.1 +libperl5.32==5.32.1-4+deb11u2 +libpgm-5.3-0==5.3.128~dfsg-2 +libpopt0==1.18-2 +libprocps8==2:3.3.17-5 +libpsl5==0.21.0-1.2 +libpython3-stdlib==3.9.2-3 +libpython3.9-minimal==3.9.2-1 +libpython3.9-stdlib==3.9.2-1 +libreadline8==8.1-1 +librtmp1==2.4+20151223.gitfa8646d.1-2+b2 +libsasl2-2==2.1.27+dfsg-2.1+deb11u1 +libsasl2-modules-db==2.1.27+dfsg-2.1+deb11u1 +libsodium23==1.0.18-1 +libsqlite3-0==3.34.1-3 +libssh2-1==1.9.0-2 +libssl-dev==1.1.1n-0+deb11u4+fips +libssl1.1==1.1.1n-0+deb11u4+fips +libwrap0==7.6.q-31 +libxtables12==1.8.7-1 +libzmq5==4.3.4-1 +lua-bitop==1.0.2-5 +lua-cjson==2.1.0+dfsg-2.1 +media-types==4.0.0 +net-tools==1.60+git20181103.0eebece-1 +openssl==1.1.1n-0+deb11u4+fips +perl==5.32.1-4+deb11u2 +perl-modules-5.32==5.32.1-4+deb11u2 +procps==2:3.3.17-5 +python-is-python3==3.9.2-1 +python3==3.9.2-3 +python3-distutils==3.9.2-1 +python3-lib2to3==3.9.2-1 +python3-minimal==3.9.2-3 +python3.9==3.9.2-1 +python3.9-minimal==3.9.2-1 +readline-common==8.1-1 +redis-tools==5:6.0.16-1+deb11u2 +rsync==3.2.3-4+deb11u1 +rsyslog==8.2212.0-1~bpo11+1 +socat==1.7.4.1-3 +symcrypt-openssl==0.1 +vim-common==2:8.2.2434-3+deb11u1 +vim-tiny==2:8.2.2434-3+deb11u1 +xxd==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye-armhf b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..20da6b512d86 --- /dev/null +++ b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye-armhf @@ -0,0 +1 @@ +openssl==1.1.1n-0+deb11u4 diff --git a/files/build/versions/dockers/docker-base-bullseye/versions-py3 b/files/build/versions/dockers/docker-base-bullseye/versions-py3 new file mode 100644 index 000000000000..8e079eb8213c --- /dev/null +++ b/files/build/versions/dockers/docker-base-bullseye/versions-py3 @@ -0,0 +1,9 @@ +j2cli==0.3.10 +jinja2==3.1.2 +markupsafe==2.1.2 +pip==23.0.1 +setuptools==49.6.0 +supervisor==4.2.1 +supervisord-dependent-startup==1.4.0 +toposort==1.9 +wheel==0.35.1 diff --git a/files/build/versions/dockers/docker-base-buster/versions-deb-buster b/files/build/versions/dockers/docker-base-buster/versions-deb-buster new file mode 100644 index 000000000000..ebb633af4a85 --- /dev/null +++ b/files/build/versions/dockers/docker-base-buster/versions-deb-buster @@ -0,0 +1,71 @@ +ca-certificates==20200601~deb10u2 +curl==7.64.0-4+deb10u4 +jq==1.5+dfsg-2+b1 +less==487-0.1+b1 +libatomic1==8.3.0-6 +libcurl4==7.64.0-4+deb10u4 +libdaemon0==0.14-7 +libdbus-1-3==1.12.24-0+deb10u1 +libestr0==0.1.10-2.1 +libexpat1==2.2.6-2+deb10u6 +libfastjson4==0.99.8-2 +libgdbm-compat4==1.18.1-4 +libgdbm6==1.18.1-4 +libgssapi-krb5-2==1.17-3+deb10u5 +libjansson4==2.12-1 +libjemalloc2==5.1.0-3 +libjq1==1.5+dfsg-2+b1 +libk5crypto3==1.17-3+deb10u5 +libkeyutils1==1.6-6 +libkrb5-3==1.17-3+deb10u5 +libkrb5support0==1.17-3+deb10u5 +libldap-2.4-2==2.4.47+dfsg-3+deb10u7 +libldap-common==2.4.47+dfsg-3+deb10u7 +liblognorm5==2.0.5-1 +liblua5.1-0==5.1.5-8.1+b2 +libmpdec2==2.4.2-2 +libncurses6==6.1+20181013-2+deb10u3 +libnghttp2-14==1.36.0-2+deb10u1 +libnorm1==1.5.8+dfsg2-1 +libonig5==6.9.1-1 +libperl5.28==5.28.1-6+deb10u1 +libpgm-5.2-0==5.2.122~dfsg-3 +libpopt0==1.16-12 +libprocps7==2:3.3.15-2 +libpsl5==0.20.2-2 +libpython3-stdlib==3.7.3-1 +libpython3.7-minimal==3.7.3-2+deb10u4 +libpython3.7-stdlib==3.7.3-2+deb10u4 +libreadline7==7.0-5 +librtmp1==2.4+20151223.gitfa8646d.1-2 +libsasl2-2==2.1.27+dfsg-1+deb10u2 +libsasl2-modules-db==2.1.27+dfsg-1+deb10u2 +libsodium23==1.0.17-1 +libsqlite3-0==3.27.2-3+deb10u2 +libssh2-1==1.8.0-2.1 +libssl1.1==1.1.1n-0+deb10u4 +libwrap0==7.6.q-28 +libzmq5==4.3.1-4+deb10u2 +lsb-base==10.2019051400 +lua-bitop==1.0.2-5 +lua-cjson==2.1.0+dfsg-2.1 +mime-support==3.62 +net-tools==1.60+git20180626.aebd88e-1 +openssl==1.1.1n-0+deb10u4 +perl==5.28.1-6+deb10u1 +perl-modules-5.28==5.28.1-6+deb10u1 +procps==2:3.3.15-2 +python3==3.7.3-1 +python3-distutils==3.7.3-1 +python3-lib2to3==3.7.3-1 +python3-minimal==3.7.3-1 +python3.7==3.7.3-2+deb10u4 +python3.7-minimal==3.7.3-2+deb10u4 +readline-common==7.0-5 +redis-tools==5:6.0.6-1~bpo10+1 +rsync==3.1.3-6 +rsyslog==8.1901.0-1+deb10u2 +socat==1.7.4.1-3 +vim-common==2:8.1.0875-5+deb10u4 +vim-tiny==2:8.1.0875-5+deb10u4 +xxd==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-base-buster/versions-py3 b/files/build/versions/dockers/docker-base-buster/versions-py3 new file mode 100644 index 000000000000..8e079eb8213c --- /dev/null +++ b/files/build/versions/dockers/docker-base-buster/versions-py3 @@ -0,0 +1,9 @@ +j2cli==0.3.10 +jinja2==3.1.2 +markupsafe==2.1.2 +pip==23.0.1 +setuptools==49.6.0 +supervisor==4.2.1 +supervisord-dependent-startup==1.4.0 +toposort==1.9 +wheel==0.35.1 diff --git a/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye new file mode 100644 index 000000000000..39e3e32b2dd2 --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye @@ -0,0 +1,18 @@ +apt-utils==2.2.4 +dpkg-dev==1.20.12 +libboost-serialization1.74.0==1.74.0-9 +libhiredis0.14==0.14.0-3~bpo9+1 +libjs-jquery==3.5.1+dfsg+~3.5.5-7 +libnl-3-200==3.5.0-1 +libnl-cli-3-200==3.5.0-1 +libnl-genl-3-200==3.5.0-1 +libnl-nf-3-200==3.5.0-1 +libnl-route-3-200==3.5.0-1 +libpython3.9==3.9.2-1 +libswsscommon==1.0.0 +libyang==1.0.73 +libyang-cpp==1.0.73 +python3-swsscommon==1.0.0 +python3-yang==1.0.73 +sonic-db-cli==1.0.0 +sonic-eventd==1.0.0-0 diff --git a/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-arm64 b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..505ac3265469 --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-arm64 @@ -0,0 +1,14 @@ +icu-devtools==67.1-7 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libicu-dev==67.1-7 +libicu67==67.1-7 +libnsl-dev==1.3.0-2 +libtirpc-dev==1.3.1-1+deb11u1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxml2-dev==2.9.10+dfsg-6.7+deb11u3 +libxslt1-dev==1.1.34-4+deb11u1 +libxslt1.1==1.1.34-4+deb11u1 +linux-libc-dev==5.10.162-1 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-armhf b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..505ac3265469 --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-armhf @@ -0,0 +1,14 @@ +icu-devtools==67.1-7 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libicu-dev==67.1-7 +libicu67==67.1-7 +libnsl-dev==1.3.0-2 +libtirpc-dev==1.3.1-1+deb11u1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxml2-dev==2.9.10+dfsg-6.7+deb11u3 +libxslt1-dev==1.1.34-4+deb11u1 +libxslt1.1==1.1.34-4+deb11u1 +linux-libc-dev==5.10.162-1 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 b/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 new file mode 100644 index 000000000000..5c7e31dc52fc --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 @@ -0,0 +1,14 @@ +bitarray==1.5.3 +ijson==2.6.1 +ipaddress==1.0.23 +jsondiff==2.0.0 +lxml==4.9.1 +natsort==6.2.1 +netaddr==0.8.0 +pyang==2.5.3 +pyangbind==0.8.1 +pyyaml==5.4.1 +regex==2022.10.31 +six==1.16.0 +tabulate==0.8.2 +xmltodict==0.12.0 diff --git a/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster new file mode 100644 index 000000000000..47ee62bb348e --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster @@ -0,0 +1,19 @@ +apt-utils==1.8.2.3 +bzip2==1.0.6-9.2~deb10u2 +dpkg-dev==1.19.8 +libapt-inst2.0==1.8.2.3 +libboost-serialization1.71.0==1.71.0-6~bpo10+1 +libhiredis0.14==0.14.0-3~bpo9+1 +libnl-3-200==3.5.0-1 +libnl-cli-3-200==3.5.0-1 +libnl-genl-3-200==3.5.0-1 +libnl-nf-3-200==3.5.0-1 +libnl-route-3-200==3.5.0-1 +libpython3.7==3.7.3-2+deb10u4 +libswsscommon==1.0.0 +libyang==1.0.73 +libyang-cpp==1.0.73 +python3-swsscommon==1.0.0 +python3-yang==1.0.73 +sonic-db-cli==1.0.0 +xz-utils==5.2.4-1+deb10u1 diff --git a/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-arm64 b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-arm64 new file mode 100644 index 000000000000..08ccce11d685 --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-arm64 @@ -0,0 +1,14 @@ +icu-devtools==63.1-6+deb10u3 +libc-dev-bin==2.28-10+deb10u2 +libc6-dev==2.28-10+deb10u2 +libdpkg-perl==1.19.8 +libglib2.0-0==2.58.3-2+deb10u4 +libicu-dev==63.1-6+deb10u3 +libicu63==63.1-6+deb10u3 +libxml2==2.9.4+dfsg1-7+deb10u5 +libxml2-dev==2.9.4+dfsg1-7+deb10u5 +libxslt1-dev==1.1.32-2.2~deb10u2 +libxslt1.1==1.1.32-2.2~deb10u2 +linux-libc-dev==4.19.269-1 +pkg-config==0.29-6 +zlib1g-dev==1:1.2.11.dfsg-1+deb10u2 diff --git a/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-armhf b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-armhf new file mode 100644 index 000000000000..08ccce11d685 --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-armhf @@ -0,0 +1,14 @@ +icu-devtools==63.1-6+deb10u3 +libc-dev-bin==2.28-10+deb10u2 +libc6-dev==2.28-10+deb10u2 +libdpkg-perl==1.19.8 +libglib2.0-0==2.58.3-2+deb10u4 +libicu-dev==63.1-6+deb10u3 +libicu63==63.1-6+deb10u3 +libxml2==2.9.4+dfsg1-7+deb10u5 +libxml2-dev==2.9.4+dfsg1-7+deb10u5 +libxslt1-dev==1.1.32-2.2~deb10u2 +libxslt1.1==1.1.32-2.2~deb10u2 +linux-libc-dev==4.19.269-1 +pkg-config==0.29-6 +zlib1g-dev==1:1.2.11.dfsg-1+deb10u2 diff --git a/files/build/versions/dockers/docker-config-engine-buster/versions-py3 b/files/build/versions/dockers/docker-config-engine-buster/versions-py3 new file mode 100644 index 000000000000..5c7e31dc52fc --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-buster/versions-py3 @@ -0,0 +1,14 @@ +bitarray==1.5.3 +ijson==2.6.1 +ipaddress==1.0.23 +jsondiff==2.0.0 +lxml==4.9.1 +natsort==6.2.1 +netaddr==0.8.0 +pyang==2.5.3 +pyangbind==0.8.1 +pyyaml==5.4.1 +regex==2022.10.31 +six==1.16.0 +tabulate==0.8.2 +xmltodict==0.12.0 diff --git a/files/build/versions/dockers/docker-database/versions-deb-bullseye b/files/build/versions/dockers/docker-database/versions-deb-bullseye new file mode 100644 index 000000000000..30c4555a4a59 --- /dev/null +++ b/files/build/versions/dockers/docker-database/versions-deb-bullseye @@ -0,0 +1,26 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +redis-server==5:6.0.16-1+deb11u2 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye b/files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye new file mode 100644 index 000000000000..1fcf6b10ed26 --- /dev/null +++ b/files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye @@ -0,0 +1,40 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +isc-dhcp-relay==4.4.1-2.3+deb11u1 +isc-dhcp-relay-dbgsym==4.4.1-2.3+deb11u1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libboost-thread1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdns-export1110==1:9.11.19+dfsg-2.1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libevent-2.1-7==2.1.12-stable-1 +libexplain51==1.4.D001-11 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libirs-export161==1:9.11.19+dfsg-2.1 +libisc-export1105==1:9.11.19+dfsg-2.1 +libisccfg-export163==1:9.11.19+dfsg-2.1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +lsof==4.93.2+dfsg-1.1 +openssh-client==1:8.4p1-5+deb11u1 +sonic-dhcp6relay==1.0.0-0 +sonic-dhcp6relay-dbgsym==1.0.0-0 +sonic-dhcpmon==1.0.0-0 +sonic-dhcpmon-dbgsym==1.0.0-0 +sonic-rsyslog-plugin==1.0.0-0 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-eventd/versions-deb-bullseye b/files/build/versions/dockers/docker-eventd/versions-deb-bullseye new file mode 100644 index 000000000000..b0cc49876cc5 --- /dev/null +++ b/files/build/versions/dockers/docker-eventd/versions-deb-bullseye @@ -0,0 +1,26 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sonic-eventd-dbgsym==1.0.0-0 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye b/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye new file mode 100644 index 000000000000..565d3f4b482b --- /dev/null +++ b/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye @@ -0,0 +1,45 @@ +cron==3.0pl1-137 +frr==8.2.2-sonic-0 +frr-dbgsym==8.2.2-sonic-0 +frr-snmp==8.2.2-sonic-0 +frr-snmp-dbgsym==8.2.2-sonic-0 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libc-ares2==1.17.1-1+deb11u1 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libjson-c5==0.15-2 +libmpfr6==4.1.0-3 +libpci3==1:3.7.0-5 +libsensors-config==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libsnmp-base==5.9+dfsg-4+deb11u1 +libsnmp40==5.9+dfsg-4+deb11u1 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +libyang2==2.0.112-6 +libyang2-dbgsym==2.0.112-6 +logrotate==3.18.0-2+deb11u1 +lsof==4.93.2+dfsg-1.1 +openssh-client==1:8.4p1-5+deb11u1 +pci.ids==0.0~2021.02.08-1 +sensible-utils==0.0.14 +sonic-rsyslog-plugin==1.0.0-0 +sshpass==1.09-1+b1 +strace==5.10-1 +swss-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-fpm-frr/versions-py3 b/files/build/versions/dockers/docker-fpm-frr/versions-py3 new file mode 100644 index 000000000000..bcc3ffc1e6fa --- /dev/null +++ b/files/build/versions/dockers/docker-fpm-frr/versions-py3 @@ -0,0 +1 @@ +zipp==1.2.0 diff --git a/files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye b/files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye new file mode 100644 index 000000000000..49db0080adad --- /dev/null +++ b/files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye @@ -0,0 +1,39 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcbor0==0.5.0+dfsg-2 +libcrypt-dev==1:4.4.18-4 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libprotobuf-dev==3.12.4-1 +libprotobuf-lite23==3.12.4-1 +libprotobuf23==3.12.4-1 +libsaibroncos==3.8 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libtirpc-dev==1.3.1-1+deb11u1 +libunwind8==1.3.2-2 +linux-libc-dev==5.10.162-1 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye b/files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye new file mode 100644 index 000000000000..f43f6af10347 --- /dev/null +++ b/files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye @@ -0,0 +1,30 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsaicredo==0.8.2 +libsaicredo-owl==0.8.2 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye b/files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye new file mode 100644 index 000000000000..38f0990353b6 --- /dev/null +++ b/files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye @@ -0,0 +1,33 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsaimetadata==1.0.0 +libsaimetadata-dbg==1.0.0 +libsairedis==1.0.0 +libsairedis-dbg==1.0.0 +libsaivs==1.0.0 +libsaivs-dbg==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd-vs==1.0.0 +syncd-vs-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-lldp/versions-deb-bullseye b/files/build/versions/dockers/docker-lldp/versions-deb-bullseye new file mode 100644 index 000000000000..a469d941fe9a --- /dev/null +++ b/files/build/versions/dockers/docker-lldp/versions-deb-bullseye @@ -0,0 +1,35 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libevent-2.1-7==2.1.12-stable-1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libpci3==1:3.7.0-5 +libsensors-config==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libsnmp-base==5.9+dfsg-4+deb11u1 +libsnmp40==5.9+dfsg-4+deb11u1 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +lldpd==1.0.4-1 +lldpd-dbgsym==1.0.4-1 +openssh-client==1:8.4p1-5+deb11u1 +pci.ids==0.0~2021.02.08-1 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-macsec/versions-deb-bullseye b/files/build/versions/dockers/docker-macsec/versions-deb-bullseye new file mode 100644 index 000000000000..18f13f9751ca --- /dev/null +++ b/files/build/versions/dockers/docker-macsec/versions-deb-bullseye @@ -0,0 +1,34 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libpcsclite1==1.9.1-1 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libteam5==1.30-1 +libteamdctl0==1.30-1 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +swss==1.0.0 +swss-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 +wpasupplicant==2:2.9.0-14 +wpasupplicant-dbgsym==2:2.9.0-14 diff --git a/files/build/versions/dockers/docker-mux/versions-deb-bullseye b/files/build/versions/dockers/docker-mux/versions-deb-bullseye new file mode 100644 index 000000000000..5fcd545d33b9 --- /dev/null +++ b/files/build/versions/dockers/docker-mux/versions-deb-bullseye @@ -0,0 +1,31 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-filesystem1.74.0==1.74.0-9 +libboost-log1.74.0==1.74.0-9 +libboost-program-options1.74.0==1.74.0-9 +libboost-regex1.74.0==1.74.0-9 +libboost-thread1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sonic-linkmgrd==1.0.0-1 +sonic-linkmgrd-dbgsym==1.0.0-1 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-nat/versions-deb-buster b/files/build/versions/dockers/docker-nat/versions-deb-buster new file mode 100644 index 000000000000..867f8616d8d6 --- /dev/null +++ b/files/build/versions/dockers/docker-nat/versions-deb-buster @@ -0,0 +1,27 @@ +bridge-utils==1.6-2 +conntrack==1:1.4.5-2 +gdb==8.2.1-2+b3 +gdbserver==8.2.1-2+b3 +iptables==1.8.2-4 +libbabeltrace1==1.5.6-2+deb10u1 +libbsd0==0.9.1-2+deb10u1 +libdw1==0.176-1.1 +libedit2==3.1-20181209-1 +libglib2.0-0==2.58.3-2+deb10u4 +libgpm2==1.20.7-5 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libip4tc0==1.8.2-4 +libip6tc0==1.8.2-4 +libipt2==2.0-2 +libiptc0==1.8.2-4 +libnetfilter-conntrack3==1.0.7-1 +libnfnetlink0==1.0.1-3+b1 +libnftnl11==1.1.2-2 +libswsscommon-dbg==1.0.0 +libunwind8==1.2.1-10~deb10u1 +openssh-client==1:7.9p1-10+deb10u2 +sshpass==1.06-1 +strace==4.26-0.2 +swss-dbg==1.0.0 +vim==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-orchagent/versions-deb-bullseye b/files/build/versions/dockers/docker-orchagent/versions-deb-bullseye new file mode 100644 index 000000000000..63124c839685 --- /dev/null +++ b/files/build/versions/dockers/docker-orchagent/versions-deb-bullseye @@ -0,0 +1,43 @@ +arping==2.21-2 +bridge-utils==1.7-1 +conntrack==1:1.4.6-2 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +ifupdown==0.8.36 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libnet1==1.1.6+dfsg-3.1 +libnetfilter-conntrack3==1.0.8-3 +libnfnetlink0==1.0.1-3+b1 +libpcap0.8==1.10.0-2 +libpci3==1:3.7.0-5 +libsairedis-dbg==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +ndisc6==1.0.4-2 +ndppd==0.2.5-6 +openssh-client==1:8.4p1-5+deb11u1 +pci.ids==0.0~2021.02.08-1 +pciutils==1:3.7.0-5 +sonic-rsyslog-plugin==1.0.0-0 +sshpass==1.09-1+b1 +strace==5.10-1 +swss-dbg==1.0.0 +tcpdump==4.99.0-2+deb11u1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-orchagent/versions-py3 b/files/build/versions/dockers/docker-orchagent/versions-py3 new file mode 100644 index 000000000000..197d40489fb2 --- /dev/null +++ b/files/build/versions/dockers/docker-orchagent/versions-py3 @@ -0,0 +1,2 @@ +netifaces==0.10.9 +pyroute2==0.5.14 diff --git a/files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye b/files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye new file mode 100644 index 000000000000..f4167c155d6b --- /dev/null +++ b/files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye @@ -0,0 +1,101 @@ +applibs==1.mlnx.4.5.4150 +applibs-dev==1.mlnx.4.5.4150 +dmidecode==3.3-2 +ethtool==1:5.9-1 +fancontrol==1:3.6.0-7 +fontconfig==2.13.1-4.2 +fontconfig-config==2.13.1-4.2 +fonts-dejavu-core==2.37-2 +freeipmi-common==1.6.6-4+deb11u1 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +i2c-tools==4.2-1+b1 +ipmitool==1.8.18-10.1 +iputils-ping==3:20210202-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcairo2==1.16.0-5 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdatrie1==0.2.13-1 +libdbi1==0.9.0-6 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libfontconfig1==2.13.1-4.2 +libfreeipmi17==1.6.6-4+deb11u1 +libfreetype6==2.10.4+dfsg-1+deb11u1 +libfribidi0==1.0.8-2+deb11u1 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libgraphite2-3==1.3.14-1 +libharfbuzz0b==2.7.4-1 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libi2c0==4.2-1+b1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libpango-1.0-0==1.46.2-3 +libpangocairo-1.0-0==1.46.2-3 +libpangoft2-1.0-0==1.46.2-3 +libpci3==1:3.7.0-5 +libpixman-1-0==0.40.0-1.1~deb11u1 +libpng16-16==1.6.37-3 +librrd-dev==1.7.2-3+b7 +librrd8==1.7.2-3+b7 +libsensors-config==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libsensors5-dbgsym==1:3.6.0-7 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libthai-data==0.1.28-3 +libthai0==0.1.28-3 +libunwind8==1.3.2-2 +libx11-6==2:1.7.2-1 +libx11-data==2:1.7.2-1 +libxau6==1:1.0.9-1 +libxcb-render0==1.14-3 +libxcb-shm0==1.14-3 +libxcb1==1.14-3 +libxdmcp6==1:1.1.2-3 +libxext6==2:1.3.3-1.1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxrender1==1:0.9.10-1 +lm-sensors==1:3.6.0-7 +lm-sensors-dbgsym==1:3.6.0-7 +mft==4.21.0-100 +openssh-client==1:8.4p1-5+deb11u1 +pci.ids==0.0~2021.02.08-1 +pciutils==1:3.7.0-5 +psmisc==23.4-2 +python-sdk-api==1.mlnx.4.5.4150 +python3-attr==20.3.0-1 +python3-importlib-metadata==1.6.0-2 +python3-jsonschema==3.2.0-3 +python3-more-itertools==4.2.0-3 +python3-pkg-resources==52.0.0-4 +python3-pyrsistent==0.15.5-1+b3 +python3-setuptools==52.0.0-4 +python3-six==1.16.0-2 +python3-smbus==4.2-1+b1 +python3-zipp==1.0.0-3 +rrdtool==1.7.2-3+b7 +sensible-utils==0.0.14 +sensord==1:3.6.0-7 +sensord-dbgsym==1:3.6.0-7 +smartmontools==7.2-1 +sshpass==1.09-1+b1 +strace==5.10-1 +sx-complib==1.mlnx.4.5.4150 +sx-complib-dev==1.mlnx.4.5.4150 +sx-gen-utils==1.mlnx.4.5.4150 +sx-gen-utils-dev==1.mlnx.4.5.4150 +sxd-libs==1.mlnx.4.5.4150 +sxd-libs-dev==1.mlnx.4.5.4150 +ucf==3.0043 +udev==247.3-7+deb11u1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-platform-monitor/versions-py3 b/files/build/versions/dockers/docker-platform-monitor/versions-py3 new file mode 100644 index 000000000000..73480e5c379e --- /dev/null +++ b/files/build/versions/dockers/docker-platform-monitor/versions-py3 @@ -0,0 +1,21 @@ +async-timeout==4.0.2 +attrs==20.3.0 +certifi==2022.12.7 +charset-normalizer==3.0.1 +grpcio==1.39.0 +grpcio-tools==1.39.0 +guacamole==0.9.2 +idna==3.4 +importlib-metadata==1.6.0 +jsonschema==2.6.0 +libpci==0.2 +more-itertools==4.2.0 +netifaces==0.11.0 +protobuf==3.20.3 +pyrsistent==0.15.5 +python_sdk_api==4.5.4150 +redis==4.5.1 +requests==2.28.2 +thrift==0.13.0 +urllib3==1.26.14 +zipp==1.0.0 diff --git a/files/build/versions/dockers/docker-ptf-sai/versions-deb-buster b/files/build/versions/dockers/docker-ptf-sai/versions-deb-buster new file mode 100644 index 000000000000..5486258072d5 --- /dev/null +++ b/files/build/versions/dockers/docker-ptf-sai/versions-deb-buster @@ -0,0 +1,3 @@ +libboost-atomic1.67.0==1.67.0-13+deb10u1 +libthrift0==0.14.1 +python3-thrift==0.14.1 diff --git a/files/build/versions/dockers/docker-ptf-sai/versions-py3 b/files/build/versions/dockers/docker-ptf-sai/versions-py3 new file mode 100644 index 000000000000..b1a0ce6ee356 --- /dev/null +++ b/files/build/versions/dockers/docker-ptf-sai/versions-py3 @@ -0,0 +1,12 @@ +crc16==0.1.1 +getmac==0.9.2 +netifaces==0.11.0 +packet-helper==0.0.1 +psutil==5.9.4 +ptf==0.9.3 +pyperclip==1.8.2 +pysubnettree==0.35 +scapy-helper==0.14.8 +tabulate==0.8.10 +thrift==0.14.1 +xmlrunner==1.7.7 diff --git a/files/build/versions/dockers/docker-ptf/versions-deb-buster b/files/build/versions/dockers/docker-ptf/versions-deb-buster new file mode 100644 index 000000000000..6a366dfc8847 --- /dev/null +++ b/files/build/versions/dockers/docker-ptf/versions-deb-buster @@ -0,0 +1,492 @@ +arping==2.19-6 +autoconf==2.69-11 +automake==1:1.16.1-4 +autotools-dev==20180224.1 +binutils==2.31.1-16 +binutils-common==2.31.1-16 +binutils-x86-64-linux-gnu==2.31.1-16 +blt==2.5.3+dfsg-4 +bridge-utils==1.6-2 +bsd-mailx==8.1.2-0.20180807cvs-1 +build-essential==12.6 +bzip2==1.0.6-9.2~deb10u2 +ca-certificates==20200601~deb10u2 +cmake==3.13.4-1 +cmake-data==3.13.4-1 +cpp==4:8.3.0-1 +cpp-8==8.3.0-6 +cron==3.0pl1-134+deb10u1 +curl==7.64.0-4+deb10u4 +dbus==1.12.24-0+deb10u1 +dh-python==3.20190308 +dirmngr==2.2.12-1+deb10u2 +dmsetup==2:1.02.155-3 +dpkg-dev==1.19.8 +ethtool==1:4.19-1 +exim4-base==4.92-8+deb10u7 +exim4-config==4.92-8+deb10u7 +exim4-daemon-light==4.92-8+deb10u7 +fakeroot==1.23-1 +file==1:5.35-4+deb10u2 +fontconfig==2.13.1-2 +fontconfig-config==2.13.1-2 +fonts-droid-fallback==1:6.0.1r16-1.1 +fonts-liberation==1:1.07.4-9 +fonts-lmodern==2.004.5-6 +fonts-lyx==2.3.2-1 +fonts-noto-mono==20181227-1 +g++==4:8.3.0-1 +g++-8==8.3.0-6 +gcc==4:8.3.0-1 +gcc-8==8.3.0-6 +gdb==8.2.1-2+b3 +gir1.2-glib-2.0==1.58.3-2 +git==1:2.20.1-2+deb10u7 +git-man==1:2.20.1-2+deb10u7 +gnupg==2.2.12-1+deb10u2 +gnupg-l10n==2.2.12-1+deb10u2 +gnupg-utils==2.2.12-1+deb10u2 +gpg==2.2.12-1+deb10u2 +gpg-agent==2.2.12-1+deb10u2 +gpg-wks-client==2.2.12-1+deb10u2 +gpg-wks-server==2.2.12-1+deb10u2 +gpgconf==2.2.12-1+deb10u2 +gpgsm==2.2.12-1+deb10u2 +graphviz==2.40.1-6+deb10u1 +hping3==3.a2.ds2-7 +ipython3==5.8.0-1+deb10u1 +javascript-common==11 +krb5-locales==1.17-3+deb10u5 +less==487-0.1+b1 +libalgorithm-diff-perl==1.19.03-2 +libalgorithm-diff-xs-perl==0.04-5+b1 +libalgorithm-merge-perl==0.08-3 +libapparmor1==2.13.2-10 +libarchive13==3.3.3-4+deb10u3 +libargon2-1==0~20171227-0.2 +libasan5==8.3.0-6 +libassuan0==2.5.2-1 +libatomic1==8.3.0-6 +libauthen-sasl-perl==2.1600-1 +libavahi-client3==0.7-4+deb10u1 +libavahi-common-data==0.7-4+deb10u1 +libavahi-common3==0.7-4+deb10u1 +libbabeltrace1==1.5.6-2+deb10u1 +libbinutils==2.31.1-16 +libblas3==3.8.0-2 +libboost-atomic1.71.0==1.71.0-6~bpo10+1 +libbrotli1==1.0.7-2+deb10u1 +libbsd0==0.9.1-2+deb10u1 +libc-dev-bin==2.28-10+deb10u2 +libc6-dbg==2.28-10+deb10u2 +libc6-dev==2.28-10+deb10u2 +libcairo2==1.16.0-4+deb10u1 +libcc1-0==8.3.0-6 +libcdt5==2.40.1-6+deb10u1 +libcgraph6==2.40.1-6+deb10u1 +libcryptsetup12==2:2.1.0-5+deb10u2 +libcups2==2.2.10-6+deb10u6 +libcupsfilters1==1.21.6-5 +libcupsimage2==2.2.10-6+deb10u6 +libcurl3-gnutls==7.64.0-4+deb10u4 +libcurl4==7.64.0-4+deb10u4 +libdaemon0==0.14-7 +libdata-dump-perl==1.23-1 +libdatrie1==0.2.12-2 +libdbus-1-3==1.12.24-0+deb10u1 +libdevmapper1.02.1==2:1.02.155-3 +libdouble-conversion1==3.1.0-3 +libdpkg-perl==1.19.8 +libdrm-amdgpu1==2.4.97-1 +libdrm-common==2.4.97-1 +libdrm-intel1==2.4.97-1 +libdrm-nouveau2==2.4.97-1 +libdrm-radeon1==2.4.97-1 +libdrm2==2.4.97-1 +libdw1==0.176-1.1 +libedit2==3.1-20181209-1 +libencode-locale-perl==1.05-1 +liberror-perl==0.17027-2 +libestr0==0.1.10-2.1 +libevent-2.1-6==2.1.8-stable-4 +libevent-core-2.1-6==2.1.8-stable-4 +libevent-pthreads-2.1-6==2.1.8-stable-4 +libexpat1==2.2.6-2+deb10u6 +libexpat1-dev==2.2.6-2+deb10u6 +libfakeroot==1.23-1 +libfastjson4==0.99.8-2 +libffi-dev==3.2.1-9 +libfile-basedir-perl==0.08-1 +libfile-desktopentry-perl==0.22-1 +libfile-fcntllock-perl==0.22-3+b5 +libfile-listing-perl==6.04-1 +libfile-mimeinfo-perl==0.29-1 +libfont-afm-perl==1.20-2 +libfontconfig1==2.13.1-2 +libfontenc1==1:1.1.3-1+b2 +libfreetype6==2.9.1-3+deb10u3 +libfribidi0==1.0.5-3.1+deb10u2 +libgcc-8-dev==8.3.0-6 +libgd3==2.2.5-5.2 +libgdbm-compat4==1.18.1-4 +libgdbm6==1.18.1-4 +libgfortran5==8.3.0-6 +libgirepository-1.0-1==1.58.3-2 +libgl1==1.1.0-1 +libgl1-mesa-dri==18.3.6-2+deb10u1 +libglapi-mesa==18.3.6-2+deb10u1 +libglib2.0-0==2.58.3-2+deb10u4 +libglib2.0-data==2.58.3-2+deb10u4 +libglvnd0==1.1.0-1 +libglx-mesa0==18.3.6-2+deb10u1 +libglx0==1.1.0-1 +libgnutls-dane0==3.6.7-4+deb10u10 +libgnutls30==3.6.7-4+deb10u10 +libgomp1==8.3.0-6 +libgpm2==1.20.7-5 +libgraphite2-3==1.3.13-7 +libgs9==9.27~dfsg-2+deb10u6 +libgs9-common==9.27~dfsg-2+deb10u6 +libgssapi-krb5-2==1.17-3+deb10u5 +libgts-0.7-5==0.7.6+darcs121130-4 +libgts-bin==0.7.6+darcs121130-4 +libgvc6==2.40.1-6+deb10u1 +libgvpr2==2.40.1-6+deb10u1 +libharfbuzz-icu0==2.3.1-1 +libharfbuzz0b==2.3.1-1 +libhtml-form-perl==6.03-1 +libhtml-format-perl==2.12-1 +libhtml-parser-perl==3.72-3+b3 +libhtml-tagset-perl==3.20-3 +libhtml-tree-perl==5.07-2 +libhttp-cookies-perl==6.04-1 +libhttp-daemon-perl==6.01-3+deb10u1 +libhttp-date-perl==6.02-1 +libhttp-message-perl==6.18-1 +libhttp-negotiate-perl==6.01-1 +libice6==2:1.0.9-2 +libicu63==63.1-6+deb10u3 +libidn11==1.33-2.2 +libijs-0.35==0.35-14 +libimagequant0==2.12.2-1.1 +libio-html-perl==1.001-1 +libio-socket-ssl-perl==2.060-3 +libio-stringy-perl==2.111-3 +libip4tc0==1.8.2-4 +libipc-system-simple-perl==1.25-4 +libipt2==2.0-2 +libisl19==0.20-2 +libitm1==8.3.0-6 +libjansson4==2.12-1 +libjbig0==2.1-3.1+b2 +libjbig2dec0==0.16-1+deb10u1 +libjpeg62-turbo==1:1.5.2-2+deb10u1 +libjs-jquery==3.3.1~dfsg-3+deb10u1 +libjs-jquery-ui==1.12.1+dfsg-5+deb10u1 +libjson-c3==0.12.1+ds-2+deb10u1 +libjsoncpp1==1.7.4-3 +libk5crypto3==1.17-3+deb10u5 +libkeyutils1==1.6-6 +libkmod2==26-1 +libkpathsea6==2018.20181218.49446-1 +libkrb5-3==1.17-3+deb10u5 +libkrb5support0==1.17-3+deb10u5 +libksba8==1.3.5-2+deb10u2 +liblab-gamut1==2.40.1-6+deb10u1 +liblapack3==3.8.0-2 +liblcms2-2==2.9-3 +libldap-2.4-2==2.4.47+dfsg-3+deb10u7 +libldap-common==2.4.47+dfsg-3+deb10u7 +libllvm7==1:7.0.1-8+deb10u2 +liblocale-gettext-perl==1.07-3+b4 +liblockfile-bin==1.14-1.1 +liblockfile1==1.14-1.1 +liblognorm5==2.0.5-1 +liblsan0==8.3.0-6 +libltdl7==2.4.6-9 +liblwp-mediatypes-perl==6.02-1 +liblwp-protocol-https-perl==6.07-2 +libmagic-mgc==1:5.35-4+deb10u2 +libmagic1==1:5.35-4+deb10u2 +libmailtools-perl==2.18-1 +libmpc3==1.1.0-1 +libmpdec2==2.4.2-2 +libmpfr6==4.0.2-1 +libmpx2==8.3.0-6 +libncurses6==6.1+20181013-2+deb10u3 +libnet-dbus-perl==1.1.0-5+b1 +libnet-http-perl==6.18-1 +libnet-smtp-ssl-perl==1.04-1 +libnet-ssleay-perl==1.85-2+deb10u1 +libnet1==1.1.6+dfsg-3.1 +libnghttp2-14==1.36.0-2+deb10u1 +libnl-3-200==3.4.0-1 +libnl-cli-3-200==3.4.0-1 +libnl-genl-3-200==3.4.0-1 +libnl-nf-3-200==3.4.0-1 +libnl-route-3-200==3.4.0-1 +libnpth0==1.6-1 +libnss-systemd==241-7~deb10u8 +libopenjp2-7==2.3.0-2+deb10u2 +libopts25==1:5.18.12-4 +libpam-systemd==241-7~deb10u8 +libpango-1.0-0==1.42.4-8~deb10u1 +libpangocairo-1.0-0==1.42.4-8~deb10u1 +libpangoft2-1.0-0==1.42.4-8~deb10u1 +libpaper-utils==1.1.28 +libpaper1==1.1.28 +libpathplan4==2.40.1-6+deb10u1 +libpcap-dev==1.8.1-6+deb10u1 +libpcap0.8==1.8.1-6+deb10u1 +libpcap0.8-dev==1.8.1-6+deb10u1 +libpciaccess0==0.14-1 +libpcre2-16-0==10.32-5 +libpcre2-8-0==10.32-5 +libperl5.28==5.28.1-6+deb10u1 +libpixman-1-0==0.36.0-1+deb10u1 +libpng16-16==1.6.36-6 +libpopt0==1.16-12 +libpotrace0==1.15-1 +libprocps7==2:3.3.15-2 +libpsl5==0.20.2-2 +libptexenc1==2018.20181218.49446-1 +libpython-dev==2.7.16-1 +libpython-stdlib==2.7.16-1 +libpython2-dev==2.7.16-1 +libpython2-stdlib==2.7.16-1 +libpython2.7==2.7.16-2+deb10u1 +libpython2.7-dev==2.7.16-2+deb10u1 +libpython2.7-minimal==2.7.16-2+deb10u1 +libpython2.7-stdlib==2.7.16-2+deb10u1 +libpython3-dev==3.7.3-1 +libpython3-stdlib==3.7.3-1 +libpython3.7==3.7.3-2+deb10u4 +libpython3.7-dev==3.7.3-2+deb10u4 +libpython3.7-minimal==3.7.3-2+deb10u4 +libpython3.7-stdlib==3.7.3-2+deb10u4 +libqt5core5a==5.11.3+dfsg1-1+deb10u5 +libqt5dbus5==5.11.3+dfsg1-1+deb10u5 +libqt5network5==5.11.3+dfsg1-1+deb10u5 +libquadmath0==8.3.0-6 +libreadline7==7.0-5 +librhash0==1.3.8-1 +librtmp1==2.4+20151223.gitfa8646d.1-2 +libsasl2-2==2.1.27+dfsg-1+deb10u2 +libsasl2-modules==2.1.27+dfsg-1+deb10u2 +libsasl2-modules-db==2.1.27+dfsg-1+deb10u2 +libsensors-config==1:3.5.0-3 +libsensors5==1:3.5.0-3 +libsigsegv2==2.12-2 +libsm6==2:1.2.3-1 +libsqlite3-0==3.27.2-3+deb10u2 +libssh2-1==1.8.0-2.1 +libssl-dev==1.1.1n-0+deb10u4 +libssl1.1==1.1.1n-0+deb10u4 +libstdc++-8-dev==8.3.0-6 +libsynctex2==2018.20181218.49446-1 +libtacacs+1==4.0.4.27a-3 +libtcl8.6==8.6.9+dfsg-2 +libteam-utils==1.28-1 +libteam5==1.28-1 +libteamdctl0==1.28-1 +libteckit0==2.5.8+ds2-5 +libtexlua52==2018.20181218.49446-1 +libtexlua53==2018.20181218.49446-1 +libtexluajit2==2018.20181218.49446-1 +libtext-iconv-perl==1.7-5+b7 +libthai-data==0.1.28-2 +libthai0==0.1.28-2 +libthrift-0.11.0==0.11.0-4 +libtie-ixhash-perl==1.23-2 +libtiff5==4.1.0+git191117-2~deb10u7 +libtimedate-perl==2.3000-2+deb10u1 +libtk8.6==8.6.9-2 +libtry-tiny-perl==0.30-1 +libtsan0==8.3.0-6 +libubsan1==8.3.0-6 +libunbound8==1.9.0-2+deb10u2 +liburi-perl==1.76-1 +libutempter0==1.1.6-3 +libuv1==1.24.1-1+deb10u1 +libwebp6==0.6.1-2+deb10u1 +libwebpdemux2==0.6.1-2+deb10u1 +libwebpmux3==0.6.1-2+deb10u1 +libwoff1==1.0.2-1 +libwrap0==7.6.q-28 +libwww-perl==6.36-2 +libwww-robotrules-perl==6.02-1 +libx11-6==2:1.6.7-1+deb10u2 +libx11-data==2:1.6.7-1+deb10u2 +libx11-protocol-perl==0.56-7 +libx11-xcb1==2:1.6.7-1+deb10u2 +libxau6==1:1.0.8-1+b2 +libxaw7==2:1.0.13-1+b2 +libxcb-dri2-0==1.13.1-2 +libxcb-dri3-0==1.13.1-2 +libxcb-glx0==1.13.1-2 +libxcb-present0==1.13.1-2 +libxcb-render0==1.13.1-2 +libxcb-shape0==1.13.1-2 +libxcb-shm0==1.13.1-2 +libxcb-sync1==1.13.1-2 +libxcb1==1.13.1-2 +libxcomposite1==1:0.4.4-2 +libxcursor1==1:1.1.15-2 +libxdamage1==1:1.1.4-3+b3 +libxdmcp6==1:1.1.2-3 +libxdot4==2.40.1-6+deb10u1 +libxext6==2:1.3.3-1+b2 +libxfixes3==1:5.0.3-1 +libxft2==2.3.2-2 +libxi6==2:1.7.9-1 +libxinerama1==2:1.1.4-2 +libxml-parser-perl==2.44-4 +libxml-twig-perl==1:3.50-1.1 +libxml-xpathengine-perl==0.14-1 +libxml2==2.9.4+dfsg1-7+deb10u5 +libxmu6==2:1.1.2-2+b3 +libxmuu1==2:1.1.2-2+b3 +libxpm4==1:3.5.12-1 +libxrandr2==2:1.5.1-1 +libxrender1==1:0.9.10-1 +libxshmfence1==1.3-1 +libxss1==1:1.2.3-1 +libxt6==1:1.1.5-1+b3 +libxtst6==2:1.2.3-1 +libxv1==2:1.0.11-1 +libxxf86dga1==2:1.1.4-1+b3 +libxxf86vm1==1:1.1.4-1+b2 +libxxhash0==0.6.5-2 +libzzip-0-13==0.13.62-3.2+deb10u1 +linux-libc-dev==4.19.269-1 +lmodern==2.004.5-6 +logrotate==3.14.0-4 +lsb-base==10.2019051400 +lsof==4.91+dfsg-1 +m4==1.4.18-2 +make==4.2.1-1.2 +manpages==4.16-2 +manpages-dev==4.16-2 +mime-support==3.62 +ncurses-term==6.1+20181013-2+deb10u3 +net-tools==1.60+git20180626.aebd88e-1 +netbase==5.6 +ntp==1:4.2.8p12+dfsg-4 +ntpdate==1:4.2.8p12+dfsg-4 +ntpstat==0.0.0.1-2 +openssh-client==1:7.9p1-10+deb10u2 +openssh-server==1:7.9p1-10+deb10u2 +openssh-sftp-server==1:7.9p1-10+deb10u2 +openssl==1.1.1n-0+deb10u4 +patch==2.7.6-3+deb10u1 +perl==5.28.1-6+deb10u1 +perl-modules-5.28==5.28.1-6+deb10u1 +perl-openssl-defaults==3 +pinentry-curses==1.1.0-2 +pkg-config==0.29-6 +poppler-data==0.4.9-2 +procps==2:3.3.15-2 +psmisc==23.2-1+deb10u1 +publicsuffix==20220811.1734-0+deb10u1 +python==2.7.16-1 +python-dev==2.7.16-1 +python-libpcap==0.6.4-1 +python-matplotlib-data==3.0.2-2 +python-minimal==2.7.16-1 +python-pip-whl==18.1-5 +python-ptf==0.9-1 +python-saithrift==0.9.4 +python-scapy==2.4.0-2 +python-six==1.12.0-1 +python-thrift==0.11.0-4 +python2==2.7.16-1 +python2-dev==2.7.16-1 +python2-minimal==2.7.16-1 +python2.7==2.7.16-2+deb10u1 +python2.7-dev==2.7.16-2+deb10u1 +python2.7-minimal==2.7.16-2+deb10u1 +python3==3.7.3-1 +python3-asn1crypto==0.24.0-1 +python3-cffi-backend==1.12.2-1 +python3-crypto==2.6.1-9+b1 +python3-cryptography==2.6.1-3+deb10u3 +python3-cycler==0.10.0-1 +python3-dateutil==2.7.3-3 +python3-dbus==1.2.8-3 +python3-decorator==4.3.0-1.1 +python3-dev==3.7.3-1 +python3-distutils==3.7.3-1 +python3-entrypoints==0.3-1 +python3-gi==3.30.4-1 +python3-ipython==5.8.0-1+deb10u1 +python3-ipython-genutils==0.2.0-1 +python3-keyring==17.1.1-1 +python3-keyrings.alt==3.1.1-1 +python3-kiwisolver==1.0.1-2+b1 +python3-lib2to3==3.7.3-1 +python3-matplotlib==3.0.2-2 +python3-minimal==3.7.3-1 +python3-numpy==1:1.16.2-1 +python3-olefile==0.46-1 +python3-pexpect==4.6.0-1 +python3-pickleshare==0.7.5-1 +python3-pil==5.4.1-2+deb10u3 +python3-pip==18.1-5 +python3-pkg-resources==40.8.0-1 +python3-prompt-toolkit==1.0.15-1 +python3-ptyprocess==0.6.0-1 +python3-pygments==2.3.1+dfsg-1+deb10u2 +python3-pyparsing==2.2.0+dfsg1-2 +python3-pyx==0.14.1-9 +python3-scapy==2.4.0-2 +python3-secretstorage==2.3.1-2 +python3-setuptools==40.8.0-1 +python3-simplegeneric==0.8.1-2 +python3-six==1.12.0-1 +python3-tk==3.7.3-1 +python3-traitlets==4.3.2-1 +python3-venv==3.7.3-1 +python3-wcwidth==0.1.7+dfsg1-3 +python3-wheel==0.32.3-2 +python3-xdg==0.25-5 +python3.7==3.7.3-2+deb10u4 +python3.7-dev==3.7.3-2+deb10u4 +python3.7-minimal==3.7.3-2+deb10u4 +python3.7-venv==3.7.3-2+deb10u4 +qttranslations5-l10n==5.11.3-2 +readline-common==7.0-5 +rsync==3.1.3-6 +rsyslog==8.1901.0-1+deb10u2 +sensible-utils==0.0.12 +shared-mime-info==1.10-1 +sntp==1:4.2.8p12+dfsg-4 +systemd==241-7~deb10u8 +systemd-sysv==241-7~deb10u8 +t1utils==1.41-3 +tacacs+==4.0.4.27a-3 +tcpdump==4.9.3-1~deb10u2 +telnet==0.17-41.2 +tex-common==6.11 +texlive-base==2018.20190227-2 +texlive-binaries==2018.20181218.49446-1 +texlive-latex-base==2018.20190227-2 +tk8.6-blt2.5==2.5.3+dfsg-4 +tmux==2.8-3+deb10u1 +traceroute==1:2.1.0-2 +ttf-bitstream-vera==1.10-8 +ucf==3.0038+nmu1 +unzip==6.0-23+deb10u3 +vim==2:8.1.0875-5+deb10u4 +vim-common==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 +wget==1.20.1-1.1 +x11-common==1:7.7+19 +x11-utils==7.7+4 +x11-xserver-utils==7.7+8 +xauth==1:1.0.10-1 +xdg-user-dirs==0.17-2 +xdg-utils==1.1.3-1+deb10u1 +xfonts-encodings==1:1.0.4-2 +xfonts-utils==1:7.7+6 +xxd==2:8.1.0875-5+deb10u4 +xz-utils==5.2.4-1+deb10u1 diff --git a/files/build/versions/dockers/docker-ptf/versions-py2 b/files/build/versions/dockers/docker-ptf/versions-py2 new file mode 100644 index 000000000000..871df802fdb1 --- /dev/null +++ b/files/build/versions/dockers/docker-ptf/versions-py2 @@ -0,0 +1,72 @@ +backports.functools-lru-cache==1.6.4 +backports.shutil-get-terminal-size==1.0.0 +bcrypt==3.1.7 +cffi==1.15.1 +click==7.1.2 +contextlib2==0.6.0.post1 +cryptography==3.3.2 +decorator==4.4.2 +dpkt==1.9.8 +enum34==1.1.6 +exabgp==3.4.17 +flask==1.0 +flask-httpauth==2.5.0 +future==0.18.3 +futures==3.2.0 +grpcio==1.18.0 +grpcio-tools==1.15.0 +importlib-resources==3.3.1 +ipaddress==1.0.23 +ipython==5.4.1 +ipython-genutils==0.2.0 +itsdangerous==1.1.0 +jinja2==2.11.3 +markupsafe==1.1.1 +netaddr==0.8.0 +nnpy==1.4.2 +oslo.config==2.1.0 +paramiko==2.12.0 +pathlib2==2.3.7.post1 +pbr==2.0.0 +pexpect==4.8.0 +pickleshare==0.7.5 +pip==20.3.4 +plumbum==1.7.2 +prompt-toolkit==1.0.18 +protobuf==3.6.1 +ptf==0.9.1 +ptyprocess==0.7.0 +pyaml==21.10.1 +pybrctl==0.1.4 +pycparser==2.21 +pygments==2.5.2 +pylibpcap==0.6.4 +pynacl==1.4.0 +pyrasite==2.0 +pyro4==4.82 +pysubnettree==0.26 +pyyaml==5.4.1 +retrying==1.3.4 +rpyc==4.1.5 +saithrift==0.9 +scandir==1.10.0 +scapy==2.2.0.dev0 +selectors34==1.2 +serpent==1.28 +setuptools==44.1.1 +simplegeneric==0.8.1 +singledispatch==3.7.0 +six==1.12.0 +stevedore==1.32.0 +supervisor==4.2.5 +thrift==0.11.0 +traitlets==4.3.3 +twisted==16.0.0 +typing==3.10.0.0 +unittest-xml-reporting==2.5.2 +wcwidth==0.2.6 +werkzeug==1.0.1 +wheel==0.37.1 +yabgp==0.8.2 +zipp==1.2.0 +zope.interface==5.5.2 diff --git a/files/build/versions/dockers/docker-ptf/versions-py3 b/files/build/versions/dockers/docker-ptf/versions-py3 new file mode 100644 index 000000000000..e8d1cb8d4836 --- /dev/null +++ b/files/build/versions/dockers/docker-ptf/versions-py3 @@ -0,0 +1,33 @@ +asn1crypto==0.24.0 +cryptography==2.6.1 +cycler==0.10.0 +decorator==4.3.0 +entrypoints==0.3 +ipython==5.8.0 +ipython-genutils==0.2.0 +keyring==17.1.1 +keyrings.alt==3.1.1 +kiwisolver==1.0.1 +matplotlib==3.0.2 +numpy==1.16.2 +olefile==0.46 +pexpect==4.6.0 +pickleshare==0.7.5 +pillow==5.4.1 +pip==18.1 +prompt-toolkit==1.0.15 +pycrypto==2.6.1 +pygments==2.3.1 +pygobject==3.30.4 +pyparsing==2.2.0 +python-dateutil==2.7.3 +pyx==0.14.1 +pyxdg==0.25 +scapy==2.4.0 +secretstorage==2.3.1 +setuptools==40.8.0 +simplegeneric==0.8.1 +six==1.12.0 +traitlets==4.3.2 +wcwidth==0.1.7 +wheel==0.32.3 diff --git a/files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye b/files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye new file mode 100644 index 000000000000..4d228a0f2d37 --- /dev/null +++ b/files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye @@ -0,0 +1,26 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +radvd==1:2.18-3 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye b/files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye new file mode 100644 index 000000000000..a11011bf45ab --- /dev/null +++ b/files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye @@ -0,0 +1,67 @@ +bfnplatform==1.0.0 +bfnsdk==1.0.0 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +libarchive13==3.4.3-2+deb11u1 +libblkid-dev==2.36.1-8+deb11u1 +libboost-atomic1.74.0==1.74.0-9 +libc-ares2==1.17.1-1+deb11u1 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdbus-1-dev==1.12.24-0+deb11u1 +libdouble-conversion3==3.1.5-6.1 +libdpkg-perl==1.20.12 +libedit2==3.1-20191231-2+b1 +libffi-dev==3.3-6 +libglib2.0-0==2.66.8-1 +libglib2.0-bin==2.66.8-1 +libglib2.0-data==2.66.8-1 +libglib2.0-dev==2.66.8-1 +libglib2.0-dev-bin==2.66.8-1 +libgoogle-perftools4==2.8.1-1 +libicu67==67.1-7 +libjsoncpp24==1.9.4-4 +liblzma-dev==5.2.5-2.1~deb11u1 +libmount-dev==2.36.1-8+deb11u1 +libnsl-dev==1.3.0-2 +libpcap-dev==1.10.0-2 +libpcap0.8==1.10.0-2 +libpcap0.8-dev==1.10.0-2 +libpcre16-3==2:8.39-13 +libpcre2-16-0==10.36-2+deb11u1 +libpcre2-32-0==10.36-2+deb11u1 +libpcre2-dev==10.36-2+deb11u1 +libpcre2-posix2==10.36-2+deb11u1 +libpcre3-dev==2:8.39-13 +libpcre32-3==2:8.39-13 +libpcrecpp0v5==2:8.39-13 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +librhash0==1.4.1-2 +libsaithrift-dev==0.9.4 +libselinux1-dev==3.1-3 +libsepol1-dev==3.1-1 +libtcmalloc-minimal4==2.8.1-1 +libthrift-dev==0.14.1 +libthrift0==0.14.1 +libtirpc-dev==1.3.1-1+deb11u1 +libunwind-dev==1.3.2-2 +libunwind8==1.3.2-2 +libusb-1.0-0==2:1.0.24-3 +libuv1==1.40.0-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +pkg-config==0.29.2-1 +python-pip-whl==20.3.4-4+deb11u1 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-setuptools==52.0.0-4 +python3-wheel==0.34.2-1 +saiserver==0.9.4 +shared-mime-info==2.0-1 +uuid-dev==2.36.1-8+deb11u1 +wget==1.21-1+deb11u1 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye b/files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye new file mode 100644 index 000000000000..f3bc02d3202b --- /dev/null +++ b/files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye @@ -0,0 +1,19 @@ +gdb==10.1-1.7 +kmod==28-1 +libbabeltrace1==1.5.8-1+b3 +libboost-atomic1.74.0==1.74.0-9 +libboost-regex1.74.0==1.74.0-9 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libglib2.0-0==2.66.8-1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libsaithrift-dev==0.9.4 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libthrift0==0.14.1 +libyaml-0-2==0.2.2-1 +saiserver==0.9.4 diff --git a/files/build/versions/dockers/docker-sflow/versions-deb-buster b/files/build/versions/dockers/docker-sflow/versions-deb-buster new file mode 100644 index 000000000000..38a7cee14435 --- /dev/null +++ b/files/build/versions/dockers/docker-sflow/versions-deb-buster @@ -0,0 +1,21 @@ +dmidecode==3.2-1 +gdb==8.2.1-2+b3 +gdbserver==8.2.1-2+b3 +hsflowd==2.0.35-1 +libbabeltrace1==1.5.6-2+deb10u1 +libbsd0==0.9.1-2+deb10u1 +libdw1==0.176-1.1 +libedit2==3.1-20181209-1 +libglib2.0-0==2.58.3-2+deb10u4 +libgpm2==1.20.7-5 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libipt2==2.0-2 +libswsscommon-dbg==1.0.0 +libunwind8==1.2.1-10~deb10u1 +openssh-client==1:7.9p1-10+deb10u2 +psample==1.1-1 +sflowtool==5.04 +sshpass==1.06-1 +strace==4.26-0.2 +vim==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-snmp/versions-deb-bullseye b/files/build/versions/dockers/docker-snmp/versions-deb-bullseye new file mode 100644 index 000000000000..64ee45bba6c0 --- /dev/null +++ b/files/build/versions/dockers/docker-snmp/versions-deb-bullseye @@ -0,0 +1,41 @@ +freeipmi-common==1.6.6-4+deb11u1 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +ipmitool==1.8.18-10.1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libc-l10n==2.31-13+deb11u5 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libfreeipmi17==1.6.6-4+deb11u1 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libpci3==1:3.7.0-5 +libsensors-config==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libsnmp-base==5.9+dfsg-4+deb11u1 +libsnmp40==5.9+dfsg-4+deb11u1 +libsnmp40-dbgsym==5.9+dfsg-4+deb11u1 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +locales==2.31-13+deb11u5 +openssh-client==1:8.4p1-5+deb11u1 +pci.ids==0.0~2021.02.08-1 +snmp==5.9+dfsg-4+deb11u1 +snmp-dbgsym==5.9+dfsg-4+deb11u1 +snmpd==5.9+dfsg-4+deb11u1 +snmpd-dbgsym==5.9+dfsg-4+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-snmp/versions-py3 b/files/build/versions/dockers/docker-snmp/versions-py3 new file mode 100644 index 000000000000..ab546f5af486 --- /dev/null +++ b/files/build/versions/dockers/docker-snmp/versions-py3 @@ -0,0 +1,6 @@ +async-timeout==4.0.2 +hiredis==2.2.2 +psutil==5.9.4 +python-arptable==0.0.2 +redis==4.5.1 +smbus==1.1.post2 diff --git a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster new file mode 100644 index 000000000000..d42e2ff2adf0 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster @@ -0,0 +1,25 @@ +gdb==8.2.1-2+b3 +gdbserver==8.2.1-2+b3 +libbabeltrace1==1.5.6-2+deb10u1 +libbsd0==0.9.1-2+deb10u1 +libcjson-dev==1.7.10-1.1+deb10u1 +libcjson1==1.7.10-1.1+deb10u1 +libcurl3-gnutls==7.64.0-4+deb10u4 +libdw1==0.176-1.1 +libedit2==3.1-20181209-1 +libglib2.0-0==2.58.3-2+deb10u4 +libgpm2==1.20.7-5 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu63==63.1-6+deb10u3 +libipt2==2.0-2 +libswsscommon-dbg==1.0.0 +libunwind8==1.2.1-10~deb10u1 +libxml2==2.9.4+dfsg1-7+deb10u5 +openssh-client==1:7.9p1-10+deb10u2 +sonic-mgmt-common==1.0.0 +sonic-mgmt-framework==1.0-01 +sonic-mgmt-framework-dbg==1.0-01 +sshpass==1.06-1 +strace==4.26-0.2 +vim==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 new file mode 100644 index 000000000000..0ac9314dd692 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 @@ -0,0 +1,32 @@ +attrs==22.2.0 +certifi==2017.4.17 +charset-normalizer==3.0.1 +click==8.1.3 +clickclick==20.10.2 +connexion==2.7.0 +flask==2.2.3 +grpcio==1.51.3 +grpcio-tools==1.20.0 +idna==3.4 +importlib-metadata==6.0.0 +importlib-resources==5.12.0 +inflection==0.5.1 +itsdangerous==2.1.2 +jsonschema==4.17.3 +jsonschema-spec==0.1.3 +lazy-object-proxy==1.9.0 +openapi-schema-validator==0.4.3 +openapi-spec-validator==0.5.5 +pathable==0.4.3 +pkgutil_resolve_name==1.3.10 +protobuf==4.22.0 +pyrsistent==0.19.3 +python-dateutil==2.6.0 +requests==2.28.2 +rfc3339-validator==0.1.4 +setuptools==21.0.0 +six==1.11.0 +typing_extensions==4.5.0 +urllib3==1.26.5 +werkzeug==2.2.3 +zipp==3.14.0 diff --git a/files/build/versions/dockers/docker-sonic-p4rt/versions-deb-bullseye b/files/build/versions/dockers/docker-sonic-p4rt/versions-deb-bullseye new file mode 100644 index 000000000000..96b484c6d9b7 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-p4rt/versions-deb-bullseye @@ -0,0 +1,2 @@ +libgmpxx4ldbl==2:6.2.1+dfsg-1+deb11u1 +sonic-p4rt==0.0.1 diff --git a/files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye b/files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye new file mode 100644 index 000000000000..3e6070891453 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye @@ -0,0 +1,45 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libasan6==10.2.1-6 +libbabeltrace1==1.5.8-1+b3 +libboost-dev==1.74.0.3 +libboost-regex1.74.0==1.74.0-9 +libboost1.74-dev==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcbor0==0.5.0+dfsg-2 +libcrypt-dev==1:4.4.18-4 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libgcc-10-dev==10.2.1-6 +libglib2.0-0==2.66.8-1 +libgomp1==10.2.1-6 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libitm1==10.2.1-6 +liblsan0==10.2.1-6 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libquadmath0==10.2.1-6 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libstdc++-10-dev==10.2.1-6 +libswsscommon-dbg==1.0.0 +libswsscommon-dev==1.0.0 +libtirpc-dev==1.3.1-1+deb11u1 +libtsan0==10.2.1-6 +libubsan1==10.2.1-6 +libunwind8==1.3.2-2 +linux-libc-dev==5.10.162-1 +openssh-client==1:8.4p1-5+deb11u1 +sonic-gnmi==0.1 +sonic-mgmt-common==1.0.0 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-sonic-vs/versions-deb-buster b/files/build/versions/dockers/docker-sonic-vs/versions-deb-buster new file mode 100644 index 000000000000..93a5c8865de8 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-vs/versions-deb-buster @@ -0,0 +1,123 @@ +arping==2.19-6 +bash-completion==1:2.8-6 +bridge-utils==1.6-2 +comerr-dev==2.1-1.44.5-1+deb10u3 +conntrack==1:1.4.5-2 +cron==3.0pl1-134+deb10u1 +dbus==1.12.24-0+deb10u1 +dirmngr==2.2.12-1+deb10u2 +dmsetup==2:1.02.155-3 +ethtool==1:4.19-1 +fontconfig-config==2.13.1-2 +fonts-dejavu-core==2.37-1 +frr==8.2.2-sonic-0 +gettext-base==0.19.8.1-9 +gir1.2-glib-2.0==1.58.3-2 +gnupg==2.2.12-1+deb10u2 +gnupg-l10n==2.2.12-1+deb10u2 +gnupg-utils==2.2.12-1+deb10u2 +gpg==2.2.12-1+deb10u2 +gpg-agent==2.2.12-1+deb10u2 +gpg-wks-client==2.2.12-1+deb10u2 +gpg-wks-server==2.2.12-1+deb10u2 +gpgconf==2.2.12-1+deb10u2 +gpgsm==2.2.12-1+deb10u2 +grub-common==2.06-3~deb10u3 +grub2-common==2.06-3~deb10u3 +ifupdown==0.8.35 +iproute2==5.10.0-4~bpo10+1 +iptables==1.8.2-4 +krb5-multidev==1.17-3+deb10u5 +libapparmor1==2.13.2-10 +libassuan0==2.5.2-1 +libblkid-dev==2.33.1-0.1 +libboost-atomic1.71.0==1.71.0-6~bpo10+1 +libboost-program-options1.71.0==1.71.0-6~bpo10+1 +libboost-system1.71.0==1.71.0-6~bpo10+1 +libboost-thread1.71.0==1.71.0-6~bpo10+1 +libbpf0==1:0.3-2~bpo10+1 +libbsd0==0.9.1-2+deb10u1 +libc-ares2==1.14.0-1+deb10u2 +libc-dev-bin==2.28-10+deb10u2 +libc6-dev==2.28-10+deb10u2 +libdevmapper1.02.1==2:1.02.155-3 +libdouble-conversion1==3.1.0-3 +libedit2==3.1-20181209-1 +libefiboot1==37-2+deb10u1 +libefivar1==37-2+deb10u1 +libfreetype6==2.9.1-3+deb10u3 +libfreetype6-dev==2.9.1-3+deb10u3 +libfuse2==2.9.9-1+deb10u1 +libgirepository-1.0-1==1.58.3-2 +libglib2.0-0==2.58.3-2+deb10u4 +libglib2.0-data==2.58.3-2+deb10u4 +libgssrpc4==1.17-3+deb10u5 +libicu63==63.1-6+deb10u3 +libip4tc0==1.8.2-4 +libip6tc0==1.8.2-4 +libiptc0==1.8.2-4 +libjson-c3==0.12.1+ds-2+deb10u1 +libjudydebian1==1.0.5-5 +libkadm5clnt-mit11==1.17-3+deb10u5 +libkadm5srv-mit11==1.17-3+deb10u5 +libkdb5-9==1.17-3+deb10u5 +libkrb5-dev==1.17-3+deb10u5 +libksba8==1.3.5-2+deb10u2 +libnet1==1.1.6+dfsg-3.1 +libnetfilter-conntrack3==1.0.7-1 +libnfnetlink0==1.0.1-3+b1 +libnftnl11==1.1.2-2 +libnorm-dev==1.5.8+dfsg2-1 +libnpth0==1.6-1 +libpcap0.8==1.8.1-6+deb10u1 +libpcre2-16-0==10.32-5 +libpcre2-8-0==10.32-5 +libpgm-dev==5.2.122~dfsg-3 +libpng16-16==1.6.36-6 +libpython-stdlib==2.7.16-1 +libpython2-stdlib==2.7.16-1 +libpython2.7==2.7.16-2+deb10u1 +libpython2.7-minimal==2.7.16-2+deb10u1 +libpython2.7-stdlib==2.7.16-2+deb10u1 +libqt5core5a==5.11.3+dfsg1-1+deb10u5 +libqt5dbus5==5.11.3+dfsg1-1+deb10u5 +libqt5network5==5.11.3+dfsg1-1+deb10u5 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsaivs==1.0.0 +libsodium-dev==1.0.17-1 +libteam-utils==1.30-1 +libteam5==1.30-1 +libteamdctl0==1.30-1 +libunwind8==1.2.1-10~deb10u1 +libyang2==2.0.112-6 +libzmq3-dev==4.3.1-4+deb10u2 +linux-libc-dev==4.19.269-1 +logrotate==3.14.0-4 +lsof==4.91+dfsg-1 +ndisc6==1.0.4-1 +openssh-client==1:7.9p1-10+deb10u2 +openssh-server==1:7.9p1-10+deb10u2 +openssh-sftp-server==1:7.9p1-10+deb10u2 +pinentry-curses==1.1.0-2 +psmisc==23.2-1+deb10u1 +python==2.7.16-1 +python-minimal==2.7.16-1 +python-ply==3.11-3 +python-scapy==2.4.0-2 +python-swsscommon==1.0.0 +python2==2.7.16-1 +python2-minimal==2.7.16-1 +python2.7==2.7.16-2+deb10u1 +python2.7-minimal==2.7.16-2+deb10u1 +redis-server==5:6.0.6-1~bpo10+1 +sensible-utils==0.0.12 +sonic-device-data==1.0-1 +sonic-host-services-data==1.0-1 +sonic-utilities-data==1.0-1 +swss==1.0.0 +syncd-vs==1.0.0 +tcpdump==4.9.3-1~deb10u2 +ucf==3.0038+nmu1 +uuid-dev==2.33.1-0.1 +x11-common==1:7.7+19 diff --git a/files/build/versions/dockers/docker-sonic-vs/versions-py2 b/files/build/versions/dockers/docker-sonic-vs/versions-py2 new file mode 100644 index 000000000000..40404455a1a9 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-vs/versions-py2 @@ -0,0 +1,16 @@ +certifi==2021.10.8 +chardet==4.0.0 +crontab==1.0.0 +idna==2.10 +monotonic==1.5 +netifaces==0.10.7 +pip==20.3.4 +ply==3.11 +py2-ipaddress==3.4.2 +pyroute2==0.5.3 +requests==2.27.1 +scapy==2.4.0 +setuptools==40.8.0 +six==1.16.0 +urllib3==1.26.14 +wheel==0.33.6 diff --git a/files/build/versions/dockers/docker-sonic-vs/versions-py3 b/files/build/versions/dockers/docker-sonic-vs/versions-py3 new file mode 100644 index 000000000000..96261a30e4b4 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-vs/versions-py3 @@ -0,0 +1,40 @@ +async-timeout==4.0.2 +blessed==1.20.0 +certifi==2022.12.7 +charset-normalizer==3.0.1 +click==7.0 +click-log==0.4.0 +colorful==0.5.5 +dbus-python==1.3.2 +docker==6.0.1 +docker-image-py==0.1.12 +enlighten==1.11.2 +filelock==3.9.0 +idna==3.4 +importlib-metadata==6.0.0 +jsonpatch==1.32 +jsonpointer==2.3 +lazy-object-proxy==1.9.0 +m2crypto==0.38.0 +netifaces==0.10.9 +packaging==23.0 +pexpect==4.8.0 +prefixed==0.7.0 +prettyprinter==0.18.0 +ptyprocess==0.7.0 +pycairo==1.23.0 +pygments==2.14.0 +pygobject==3.42.2 +pyroute2==0.5.14 +redis==4.5.1 +requests==2.28.2 +scapy==2.4.4 +semantic-version==2.10.0 +systemd-python==235 +toposort==1.6 +typing_extensions==4.5.0 +urllib3==1.26.14 +wcwidth==0.2.6 +websocket-client==1.5.1 +www-authenticate==0.9.2 +zipp==3.14.0 diff --git a/files/build/versions/dockers/docker-swss-layer-bullseye/versions-deb-bullseye b/files/build/versions/dockers/docker-swss-layer-bullseye/versions-deb-bullseye new file mode 100644 index 000000000000..3708dc6eb3a1 --- /dev/null +++ b/files/build/versions/dockers/docker-swss-layer-bullseye/versions-deb-bullseye @@ -0,0 +1,6 @@ +iputils-ping==3:20210202-1 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libteam5==1.30-1 +libteamdctl0==1.30-1 +swss==1.0.0 diff --git a/files/build/versions/dockers/docker-swss-layer-buster/versions-deb-buster b/files/build/versions/dockers/docker-swss-layer-buster/versions-deb-buster new file mode 100644 index 000000000000..9ce47d764811 --- /dev/null +++ b/files/build/versions/dockers/docker-swss-layer-buster/versions-deb-buster @@ -0,0 +1,5 @@ +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libteam5==1.30-1 +libteamdctl0==1.30-1 +swss==1.0.0 diff --git a/files/build/versions/dockers/docker-syncd-bfn-rpc/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-bfn-rpc/versions-deb-bullseye new file mode 100644 index 000000000000..0b1a236c4c74 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-bfn-rpc/versions-deb-bullseye @@ -0,0 +1,23 @@ +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +libarchive13==3.4.3-2+deb11u1 +libboost-atomic1.74.0==1.74.0-9 +libdouble-conversion3==3.1.5-6.1 +libjsoncpp24==1.9.4-4 +libpcre2-16-0==10.36-2+deb11u1 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +librhash0==1.4.1-2 +libthrift0==0.14.1 +libuv1==1.40.0-2 +mailcap==3.69 +mime-support==3.66 +python-pip-whl==20.3.4-4+deb11u1 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-setuptools==52.0.0-4 +python3-wheel==0.34.2-1 +shared-mime-info==2.0-1 +syncd-rpc==1.0.0 +wget==1.21-1+deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye new file mode 100644 index 000000000000..1af89e062939 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye @@ -0,0 +1,29 @@ +bfnplatform==1.0.0 +bfnsdk==1.0.0 +libc-ares2==1.17.1-1+deb11u1 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdbus-1-dev==1.12.24-0+deb11u1 +libdpkg-perl==1.20.12 +libedit2==3.1-20191231-2+b1 +libglib2.0-0==2.66.8-1 +libgoogle-perftools4==2.8.1-1 +libicu67==67.1-7 +liblzma-dev==5.2.5-2.1~deb11u1 +libnsl-dev==1.3.0-2 +libpcap-dev==1.10.0-2 +libpcap0.8==1.10.0-2 +libpcap0.8-dev==1.10.0-2 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libtcmalloc-minimal4==2.8.1-1 +libtirpc-dev==1.3.1-1+deb11u1 +libunwind-dev==1.3.2-2 +libunwind8==1.3.2-2 +libusb-1.0-0==2:1.0.24-3 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +pkg-config==0.29.2-1 +syncd==1.0.0 diff --git a/files/build/versions/dockers/docker-syncd-brcm-dnx-rpc/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-brcm-dnx-rpc/versions-deb-bullseye new file mode 100644 index 000000000000..8957a01b62b0 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-brcm-dnx-rpc/versions-deb-bullseye @@ -0,0 +1,81 @@ +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +build-essential==12.9 +bzip2==1.0.8-4 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +g++==4:10.2.1-1 +g++-10==10.2.1-6 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +libarchive13==3.4.3-2+deb11u1 +libasan6==10.2.1-6 +libbinutils==2.35.2-2 +libboost-atomic1.74.0==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcc1-0==10.2.1-6 +libcrypt-dev==1:4.4.18-4 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libdouble-conversion3==3.1.5-6.1 +libdpkg-perl==1.20.12 +libexpat1-dev==2.2.10-2+deb11u5 +libffi-dev==3.3-6 +libgcc-10-dev==10.2.1-6 +libglib2.0-0==2.66.8-1 +libgomp1==10.2.1-6 +libicu67==67.1-7 +libisl23==0.23-1 +libitm1==10.2.1-6 +libjsoncpp24==1.9.4-4 +liblsan0==10.2.1-6 +libmpc3==1.2.0-1 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libpcre2-16-0==10.36-2+deb11u1 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +libquadmath0==10.2.1-6 +librhash0==1.4.1-2 +libstdc++-10-dev==10.2.1-6 +libthrift-0.11.0==0.11.0-4 +libtirpc-dev==1.3.1-1+deb11u1 +libtsan0==10.2.1-6 +libubsan1==10.2.1-6 +libuv1==1.40.0-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +mailcap==3.69 +make==4.3-4.1 +mime-support==3.66 +patch==2.7.6-7 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python-pip-whl==20.3.4-4+deb11u1 +python-pkg-resources==44.1.1-1 +python-setuptools==44.1.1-1 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-setuptools==52.0.0-4 +python3-wheel==0.34.2-1 +shared-mime-info==2.0-1 +syncd-rpc==1.0.0 +wget==1.21-1+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye new file mode 100644 index 000000000000..6a65dc38b47a --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye @@ -0,0 +1,34 @@ +ethtool==1:5.9-1 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +kmod==28-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libsaimetadata==1.0.0 +libsaimetadata-dbg==1.0.0 +libsairedis==1.0.0 +libsairedis-dbg==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd==1.0.0 +syncd-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-brcm-rpc/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-brcm-rpc/versions-deb-bullseye new file mode 100644 index 000000000000..8957a01b62b0 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-brcm-rpc/versions-deb-bullseye @@ -0,0 +1,81 @@ +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +build-essential==12.9 +bzip2==1.0.8-4 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +g++==4:10.2.1-1 +g++-10==10.2.1-6 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +libarchive13==3.4.3-2+deb11u1 +libasan6==10.2.1-6 +libbinutils==2.35.2-2 +libboost-atomic1.74.0==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcc1-0==10.2.1-6 +libcrypt-dev==1:4.4.18-4 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libdouble-conversion3==3.1.5-6.1 +libdpkg-perl==1.20.12 +libexpat1-dev==2.2.10-2+deb11u5 +libffi-dev==3.3-6 +libgcc-10-dev==10.2.1-6 +libglib2.0-0==2.66.8-1 +libgomp1==10.2.1-6 +libicu67==67.1-7 +libisl23==0.23-1 +libitm1==10.2.1-6 +libjsoncpp24==1.9.4-4 +liblsan0==10.2.1-6 +libmpc3==1.2.0-1 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libpcre2-16-0==10.36-2+deb11u1 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +libquadmath0==10.2.1-6 +librhash0==1.4.1-2 +libstdc++-10-dev==10.2.1-6 +libthrift-0.11.0==0.11.0-4 +libtirpc-dev==1.3.1-1+deb11u1 +libtsan0==10.2.1-6 +libubsan1==10.2.1-6 +libuv1==1.40.0-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +mailcap==3.69 +make==4.3-4.1 +mime-support==3.66 +patch==2.7.6-7 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python-pip-whl==20.3.4-4+deb11u1 +python-pkg-resources==44.1.1-1 +python-setuptools==44.1.1-1 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-setuptools==52.0.0-4 +python3-wheel==0.34.2-1 +shared-mime-info==2.0-1 +syncd-rpc==1.0.0 +wget==1.21-1+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye new file mode 100644 index 000000000000..443f2d55c221 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye @@ -0,0 +1,35 @@ +ethtool==1:5.9-1 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +kmod==28-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libsaimetadata==1.0.0 +libsaimetadata-dbg==1.0.0 +libsairedis==1.0.0 +libsairedis-dbg==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +libyaml-0-2==0.2.2-1 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd==1.0.0 +syncd-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-centec-rpc/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-centec-rpc/versions-deb-bullseye new file mode 100644 index 000000000000..8957a01b62b0 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-centec-rpc/versions-deb-bullseye @@ -0,0 +1,81 @@ +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +build-essential==12.9 +bzip2==1.0.8-4 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +g++==4:10.2.1-1 +g++-10==10.2.1-6 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +libarchive13==3.4.3-2+deb11u1 +libasan6==10.2.1-6 +libbinutils==2.35.2-2 +libboost-atomic1.74.0==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcc1-0==10.2.1-6 +libcrypt-dev==1:4.4.18-4 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libdouble-conversion3==3.1.5-6.1 +libdpkg-perl==1.20.12 +libexpat1-dev==2.2.10-2+deb11u5 +libffi-dev==3.3-6 +libgcc-10-dev==10.2.1-6 +libglib2.0-0==2.66.8-1 +libgomp1==10.2.1-6 +libicu67==67.1-7 +libisl23==0.23-1 +libitm1==10.2.1-6 +libjsoncpp24==1.9.4-4 +liblsan0==10.2.1-6 +libmpc3==1.2.0-1 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libpcre2-16-0==10.36-2+deb11u1 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +libquadmath0==10.2.1-6 +librhash0==1.4.1-2 +libstdc++-10-dev==10.2.1-6 +libthrift-0.11.0==0.11.0-4 +libtirpc-dev==1.3.1-1+deb11u1 +libtsan0==10.2.1-6 +libubsan1==10.2.1-6 +libuv1==1.40.0-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +mailcap==3.69 +make==4.3-4.1 +mime-support==3.66 +patch==2.7.6-7 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python-pip-whl==20.3.4-4+deb11u1 +python-pkg-resources==44.1.1-1 +python-setuptools==44.1.1-1 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-setuptools==52.0.0-4 +python3-wheel==0.34.2-1 +shared-mime-info==2.0-1 +syncd-rpc==1.0.0 +wget==1.21-1+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye new file mode 100644 index 000000000000..eb97d63b7ba9 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye @@ -0,0 +1,31 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +kmod==28-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libsai==1.11.0-1 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye-arm64 b/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..0af33189fd01 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye-arm64 @@ -0,0 +1,39 @@ +dmsetup==2:1.02.175-2.1 +iputils-ping==3:20210202-1 +keyutils==1.6.1-2 +libdbus-1-dev==1.12.24-0+deb11u1 +libdevmapper1.02.1==2:1.02.175-2.1 +libdpkg-perl==1.20.12 +libevent-2.1-7==2.1.12-stable-1 +libexpat1-dev==2.2.10-2+deb11u5 +libnfsidmap2==0.25-6 +libpcap-dev==1.10.0-2 +libpcap0.8==1.10.0-2 +libpcap0.8-dev==1.10.0-2 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libsensors-config==1:3.6.0-7 +libsensors-dev==1:3.6.0-7 +libsensors4-dev==1:3.6.0-7 +libsensors5==1:3.6.0-7 +mailcap==3.69 +mime-support==3.66 +nfs-common==1:1.3.4-6 +pkg-config==0.29.2-1 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +rpcbind==1.2.5-9 +sensible-utils==0.0.14 +swig==4.0.2-1 +swig4.0==4.0.2-1 +ucf==3.0043 diff --git a/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-deb-bullseye new file mode 100644 index 000000000000..f13d3c30824b --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-deb-bullseye @@ -0,0 +1,69 @@ +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +build-essential==12.9 +bzip2==1.0.8-4 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +g++==4:10.2.1-1 +g++-10==10.2.1-6 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +libarchive13==3.4.3-2+deb11u1 +libasan6==10.2.1-6 +libbinutils==2.35.2-2 +libboost-atomic1.74.0==1.74.0-9 +libcc1-0==10.2.1-6 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libdouble-conversion3==3.1.5-6.1 +libdpkg-perl==1.20.12 +libffi-dev==3.3-6 +libgcc-10-dev==10.2.1-6 +libglib2.0-0==2.66.8-1 +libgomp1==10.2.1-6 +libisl23==0.23-1 +libitm1==10.2.1-6 +libjsoncpp24==1.9.4-4 +liblsan0==10.2.1-6 +libmpc3==1.2.0-1 +libmpfr6==4.1.0-3 +libpcre2-16-0==10.36-2+deb11u1 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +libquadmath0==10.2.1-6 +librhash0==1.4.1-2 +libstdc++-10-dev==10.2.1-6 +libthrift-0.11.0==0.11.0-4 +libtsan0==10.2.1-6 +libubsan1==10.2.1-6 +libuv1==1.40.0-2 +mailcap==3.69 +make==4.3-4.1 +mime-support==3.66 +patch==2.7.6-7 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python-pkg-resources==44.1.1-1 +python-ptf==0.9-1 +python-scapy==2.4.0-2 +python-setuptools==44.1.1-1 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +shared-mime-info==2.0-1 +syncd-rpc==1.0.0 +wget==1.21-1+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-py2 b/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-py2 new file mode 100644 index 000000000000..64e02e587988 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-py2 @@ -0,0 +1,9 @@ +cffi==1.7.0 +nnpy==1.4.2 +pip==20.3.4 +ptf==0.9.1 +pycparser==2.21 +python-sdk-api==4.5.4150 +scapy==2.4.0 +setuptools==44.1.1 +wheel==0.37.1 diff --git a/files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye new file mode 100644 index 000000000000..c46fec5c86da --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye @@ -0,0 +1,81 @@ +applibs==1.mlnx.4.5.4150 +applibs-dev==1.mlnx.4.5.4150 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +iproute2==1.mlnx.4.5.4150 +iproute2-dev==1.mlnx.4.5.4150 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcbor0==0.5.0+dfsg-2 +libcrypt-dev==1:4.4.18-4 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libelf1==0.183-1 +libexpat1-dev==2.2.10-2+deb11u5 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libjs-sphinxdoc==3.4.3-2 +libjs-underscore==1.9.1~dfsg-3 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libpython3-dev==3.9.2-3 +libpython3.9-dev==3.9.2-1 +libsaimetadata==1.0.0 +libsaimetadata-dbg==1.0.0 +libsairedis==1.0.0 +libsairedis-dbg==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libtirpc-dev==1.3.1-1+deb11u1 +libunwind8==1.3.2-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +mft==4.21.0-100 +mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 +openssh-client==1:8.4p1-5+deb11u1 +python-pip-whl==20.3.4-4+deb11u1 +python-sdk-api==1.mlnx.4.5.4150 +python3-attr==20.3.0-1 +python3-dev==3.9.2-3 +python3-importlib-metadata==1.6.0-2 +python3-jsonschema==3.2.0-3 +python3-more-itertools==4.2.0-3 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-pyrsistent==0.15.5-1+b3 +python3-setuptools==52.0.0-4 +python3-six==1.16.0-2 +python3-wheel==0.34.2-1 +python3-zipp==1.0.0-3 +python3.9-dev==3.9.2-1 +sshpass==1.09-1+b1 +strace==5.10-1 +sx-acl-helper==1.mlnx.4.5.4150 +sx-acl-helper-dev==1.mlnx.4.5.4150 +sx-complib==1.mlnx.4.5.4150 +sx-complib-dev==1.mlnx.4.5.4150 +sx-examples==1.mlnx.4.5.4150 +sx-examples-dev==1.mlnx.4.5.4150 +sx-gen-utils==1.mlnx.4.5.4150 +sx-gen-utils-dev==1.mlnx.4.5.4150 +sx-hash-calc==1.mlnx.4.5.4150 +sx-scew==1.mlnx.4.5.4150 +sx-scew-dev==1.mlnx.4.5.4150 +sxd-libs==1.mlnx.4.5.4150 +sxd-libs-dev==1.mlnx.4.5.4150 +syncd==1.0.0 +syncd-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 +wjh-libs==1.mlnx.4.5.4150 +wjh-libs-dev==1.mlnx.4.5.4150 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/docker-syncd-mlnx/versions-py3 b/files/build/versions/dockers/docker-syncd-mlnx/versions-py3 new file mode 100644 index 000000000000..5d8ad070bcf6 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-mlnx/versions-py3 @@ -0,0 +1,7 @@ +attrs==20.3.0 +importlib-metadata==1.6.0 +jsonschema==3.2.0 +more-itertools==4.2.0 +pyrsistent==0.15.5 +python_sdk_api==4.5.4150 +zipp==1.0.0 diff --git a/files/build/versions/dockers/docker-syncd-mrvl/versions-deb-bullseye-armhf b/files/build/versions/dockers/docker-syncd-mrvl/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..52fd16409917 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-mrvl/versions-deb-bullseye-armhf @@ -0,0 +1,44 @@ +dmsetup==2:1.02.175-2.1 +iputils-ping==3:20210202-1 +keyutils==1.6.1-2 +libdbus-1-dev==1.12.24-0+deb11u1 +libdevmapper1.02.1==2:1.02.175-2.1 +libdpkg-perl==1.20.12 +libevent-2.1-7==2.1.12-stable-1 +libexpat1-dev==2.2.10-2+deb11u5 +libglib2.0-0==2.66.8-1 +libnfsidmap2==0.25-6 +libpcap-dev==1.10.0-2 +libpcap0.8==1.10.0-2 +libpcap0.8-dev==1.10.0-2 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsensors-config==1:3.6.0-7 +libsensors-dev==1:3.6.0-7 +libsensors4-dev==1:3.6.0-7 +libsensors5==1:3.6.0-7 +mailcap==3.69 +mime-support==3.66 +mrvllibsai==1.10.2-1 +nfs-common==1:1.3.4-6 +pkg-config==0.29.2-1 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +rpcbind==1.2.5-9 +sensible-utils==0.0.14 +swig==4.0.2-1 +swig4.0==4.0.2-1 +syncd==1.0.0 +ucf==3.0043 diff --git a/files/build/versions/dockers/docker-syncd-vs/versions-deb-buster b/files/build/versions/dockers/docker-syncd-vs/versions-deb-buster new file mode 100644 index 000000000000..4e582a3ecee9 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-vs/versions-deb-buster @@ -0,0 +1,27 @@ +gdb==8.2.1-2+b3 +gdbserver==8.2.1-2+b3 +iproute2==5.10.0-4~bpo10+1 +libbabeltrace1==1.5.6-2+deb10u1 +libbpf0==1:0.3-2~bpo10+1 +libbsd0==0.9.1-2+deb10u1 +libdw1==0.176-1.1 +libedit2==3.1-20181209-1 +libglib2.0-0==2.58.3-2+deb10u4 +libgpm2==1.20.7-5 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libipt2==2.0-2 +libsaimetadata==1.0.0 +libsaimetadata-dbg==1.0.0 +libsairedis==1.0.0 +libsairedis-dbg==1.0.0 +libsaivs==1.0.0 +libsaivs-dbg==1.0.0 +libswsscommon-dbg==1.0.0 +libunwind8==1.2.1-10~deb10u1 +openssh-client==1:7.9p1-10+deb10u2 +sshpass==1.06-1 +strace==4.26-0.2 +syncd-vs==1.0.0 +syncd-vs-dbg==1.0.0 +vim==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-teamd/versions-deb-bullseye b/files/build/versions/dockers/docker-teamd/versions-deb-bullseye new file mode 100644 index 000000000000..804b8cc73631 --- /dev/null +++ b/files/build/versions/dockers/docker-teamd/versions-deb-bullseye @@ -0,0 +1,29 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libteam-utils==1.30-1 +libteam-utils-dbgsym==1.30-1 +libteamdctl0-dbgsym==1.30-1 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +swss-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye new file mode 100644 index 000000000000..dfea190aca87 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye @@ -0,0 +1,1732 @@ +adwaita-icon-theme==3.38.0-1 +alsa-topology-conf==1.2.4-1 +alsa-ucm-conf==1.2.4-2 +ant==1.10.9-4 +ant-optional==1.10.9-4 +apparmor==2.13.6-10 +apt-file==3.2.2 +apt-transport-https==2.2.4 +apt-utils==2.2.4 +arch-test==0.17-1 +asciidoctor==2.0.12-2 +aspell==0.60.8-3 +aspell-en==2018.04.16-0-1 +at-spi2-core==2.38.0-4 +auditd==1:3.0-2 +augeas-lenses==1.12.0-2 +augeas-tools==1.12.0-2 +autoconf==2.69-14 +autoconf-archive==20190106-2.1 +autogen==1:5.18.16-4 +autogen-doc==1:5.18.16-4 +automake==1:1.16.3-2 +autopoint==0.21-4 +autotools-dev==20180224.1+nmu1 +bash-completion==1:2.11-2 +bc==1.07.1-2+b2 +bind9-dnsutils==1:9.16.37-1~deb11u1 +bind9-host==1:9.16.37-1~deb11u1 +bind9-libs==1:9.16.37-1~deb11u1 +binfmt-support==2.2.1-1+deb11u1 +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +bison==2:3.7.5+dfsg-1 +blt==2.5.3+dfsg-4.1 +bsdextrautils==2.36.1-8+deb11u1 +build-essential==12.9 +byacc==20140715-1+b1 +bzip2==1.0.8-4 +bzip2-doc==1.0.8-4 +ca-certificates==20210119 +ca-certificates-java==20190909 +cdbs==0.4.163 +check==0.15.2-2 +chrpath==0.16-2+b1 +clang==1:11.0-51+nmu5 +clang-11==1:11.0.1-2 +cm-super-minimal==0.3.4-15 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +cmocka-doc==1.1.5-2 +comerr-dev==2.1-1.46.2-2 +containerd.io==1.5.11-1 +cowbuilder==0.89 +cowdancer==0.89 +cpio==2.13+dfsg-4 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +cppcheck==2.3-1 +cron==3.0pl1-137 +curl==7.74.0-1.3+deb11u5 +dbus==1.12.24-0+deb11u1 +dbus-user-session==1.12.24-0+deb11u1 +dconf-gsettings-backend==0.38.0-2 +dconf-service==0.38.0-2 +dctrl-tools==2.24-3+b1 +debhelper==13.3.4 +debian-keyring==2021.07.26 +debootstrap==1.0.123+deb11u1 +default-jdk-headless==2:1.11-72 +default-jre==2:1.11-72 +default-jre-headless==2:1.11-72 +default-libmysqlclient-dev==1.0.7 +device-tree-compiler==1.6.0-1 +devscripts==2.21.3+deb11u1 +dh-apparmor==2.13.6-10 +dh-autoreconf==20 +dh-exec==0.23.2 +dh-make==2.202003 +dh-python==4.20201102+nmu1 +dh-runit==2.10.3 +dh-strip-nondeterminism==1.12.0-1 +dictionaries-common==1.28.4 +diffstat==1.64-1 +dirmngr==2.2.27-2+deb11u2 +distro-info-data==0.51+deb11u3 +dkms==2.8.4-3 +dmeventd==2:1.02.175-2.1 +dmsetup==2:1.02.175-2.1 +dnsutils==1:9.16.37-1~deb11u1 +docbook==4.5-6 +docbook-dsssl==1.79-9.2 +docbook-to-man==1:2.0.0-45 +docbook-utils==0.6.14-3.4 +docbook-xml==4.5-9 +docker-ce==5:20.10.14~3-0~debian-bullseye +docker-ce-cli==5:20.10.14~3-0~debian-bullseye +docker-ce-rootless-extras==5:23.0.1-1~debian.11~bullseye +docker-scan-plugin==0.23.0~debian-bullseye +docutils-common==0.16+dfsg-4 +dosfstools==4.2-1 +doxygen==1.9.1-1 +dpatch==2.0.41 +dpkg-dev==1.20.12 +dput==1.1.0 +dvipng==1.15-1.1+b1 +dvisvgm==2.11.1-1 +dwarves==1.20-1 +dwz==0.13+20210201-1 +eatmydata==105-9 +ed==1.17-1 +emacsen-common==3.0.4 +equivs==2.3.1 +exim4-base==4.94.2-7 +exim4-config==4.94.2-7 +exim4-daemon-light==4.94.2-7 +expat==2.2.10-2+deb11u5 +fakeroot==1.25.3-1.1 +file==1:5.39-3 +flex==2.6.4-8 +fontconfig==2.13.1-4.2 +fontconfig-config==2.13.1-4.2 +fonts-dejavu-core==2.37-2 +fonts-dejavu-extra==2.37-2 +fonts-droid-fallback==1:6.0.1r16-1.1 +fonts-font-awesome==5.0.10+really4.7.0~dfsg-4.1 +fonts-lato==2.0-2.1 +fonts-liberation==1:1.07.4-11 +fonts-lmodern==2.004.5-6.1 +fonts-noto-mono==20201225-1 +fonts-texgyre==20180621-3.1 +fonts-urw-base35==20200910-1 +g++==4:10.2.1-1 +g++-10==10.2.1-6 +gawk==1:5.1.0-1 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +gcc-10-multilib==10.2.1-6 +gcc-multilib==4:10.2.1-1 +gcovr==4.2-1 +gdb==10.1-1.7 +gem2deb==1.4 +gem2deb-test-runner==1.4 +gettext==0.21-4 +gettext-base==0.21-4 +ghostscript==9.53.3~dfsg-7+deb11u2 +gir1.2-atk-1.0==2.36.0-2 +gir1.2-atspi-2.0==2.38.0-4 +gir1.2-freedesktop==1.66.1-1+b1 +gir1.2-gdkpixbuf-2.0==2.42.2+dfsg-1+deb11u1 +gir1.2-glib-2.0==1.66.1-1+b1 +gir1.2-gtk-3.0==3.24.24-4+deb11u2 +gir1.2-harfbuzz-0.0==2.7.4-1 +gir1.2-packagekitglib-1.0==1.2.2-2 +gir1.2-pango-1.0==1.46.2-3 +git==1:2.30.2-1+deb11u1 +git-buildpackage==0.9.22 +git-man==1:2.30.2-1+deb11u1 +glib-networking==2.66.0-2 +glib-networking-common==2.66.0-2 +glib-networking-services==2.66.0-2 +gnupg==2.2.27-2+deb11u2 +gnupg-l10n==2.2.27-2+deb11u2 +gnupg-utils==2.2.27-2+deb11u2 +gnupg2==2.2.27-2+deb11u2 +gobject-introspection==1.66.1-1+b1 +golang-1.15==1.15.15-1~deb11u4 +golang-1.15-doc==1.15.15-1~deb11u4 +golang-1.15-go==1.15.15-1~deb11u4+fips +golang-1.15-src==1.15.15-1~deb11u4+fips +googletest==1.10.0.20201025-1.1 +gpg==2.2.27-2+deb11u2 +gpg-agent==2.2.27-2+deb11u2 +gpg-wks-client==2.2.27-2+deb11u2 +gpg-wks-server==2.2.27-2+deb11u2 +gpgconf==2.2.27-2+deb11u2 +gpgsm==2.2.27-2+deb11u2 +graphviz==2.42.2-5 +groff==1.22.4-6 +groff-base==1.22.4-6 +gsasl-common==1.10.0-4+deb11u1 +gsettings-desktop-schemas==3.38.0-2 +gsfonts==1:8.11+urwcyr1.0.7~pre44-4.5 +gstreamer1.0-libav==1.18.4-3 +gstreamer1.0-plugins-base==1.18.4-2 +gstreamer1.0-plugins-good==1.18.4-2+deb11u1 +gstreamer1.0-x==1.18.4-2 +gtk-update-icon-cache==3.24.24-4+deb11u2 +guile-2.2-libs==2.2.7+1-6 +hicolor-icon-theme==0.17-2 +i965-va-driver==2.4.1+dfsg1-1 +ibverbs-providers==33.2-1 +icc-profiles-free==2.0.1+dfsg-1.1 +icu-devtools==67.1-7 +imagemagick==8:6.9.11.60+dfsg-1.3+deb11u1 +imagemagick-6-common==8:6.9.11.60+dfsg-1.3+deb11u1 +imagemagick-6.q16==8:6.9.11.60+dfsg-1.3+deb11u1 +install-info==6.7.0.dfsg.2-6 +intel-media-va-driver==21.1.1+dfsg1-1 +intltool-debian==0.35.0+20060710.5 +iproute2==5.10.0-4 +iptables==1.8.7-1 +ipxe-qemu==1.0.0+git-20190125.36a4c85-5.1 +iso-codes==4.6.0-1 +java-common==0.72 +java-wrappers==0.3 +javahelper==0.78 +javascript-common==11+nmu1 +jq==1.6-2.1 +junit5==5.3.2-4 +kernel-wedge==2.104 +kmod==28-1 +krb5-multidev==1.18.3-6+deb11u3 +lcov==1.14-2 +less==551-2 +lib32asan6==10.2.1-6 +lib32atomic1==10.2.1-6 +lib32gcc-10-dev==10.2.1-6 +lib32gcc-s1==10.2.1-6 +lib32gomp1==10.2.1-6 +lib32itm1==10.2.1-6 +lib32quadmath0==10.2.1-6 +lib32stdc++6==10.2.1-6 +lib32ubsan1==10.2.1-6 +libaa1==1.4p5-48 +libaacs0==0.9.0-2 +libacl1-dev==2.2.53-10 +libaio1==0.3.112-9 +libalgorithm-c3-perl==0.11-1 +libalgorithm-diff-perl==1.201-1 +libalgorithm-diff-xs-perl==0.04-6+b1 +libalgorithm-merge-perl==0.08-3 +libaliased-perl==0.34-1.1 +libann0==1.1.2+doc-7 +libaom0==1.0.0.errata1-3 +libaopalliance-java==20070526-6 +libapache-pom-java==18-1 +libapiguardian-java==1.1.0-2 +libapparmor1==2.13.6-10 +libappconfig-perl==1.71-2.1 +libappstream4==0.14.4-1 +libapt-pkg-perl==0.1.39 +libarchive-cpio-perl==0.10-1.1 +libarchive-zip-perl==1.68-1 +libarchive13==3.4.3-2+deb11u1 +libargon2-1==0~20171227-0.2 +libarray-intspan-perl==2.004-1 +libasan6==10.2.1-6 +libasm-java==9.1-1 +libasound2==1.2.4-1.1 +libasound2-data==1.2.4-1.1 +libaspell15==0.60.8-3 +libass9==1:0.15.0-2 +libassuan0==2.5.3-7.1 +libasyncns0==0.8-6+b2 +libatinject-jsr330-api-java==1.0+ds1-5 +libatk-bridge2.0-0==2.38.0-1 +libatk-bridge2.0-dev==2.38.0-1 +libatk-wrapper-java==0.38.0-2+deb11u1 +libatk-wrapper-java-jni==0.38.0-2+deb11u1 +libatk1.0-0==2.36.0-2 +libatk1.0-data==2.36.0-2 +libatk1.0-dev==2.36.0-2 +libatm1==1:2.5.1-4 +libatm1-dev==1:2.5.1-4 +libatomic1==10.2.1-6 +libatspi2.0-0==2.38.0-4 +libatspi2.0-dev==2.38.0-4 +libattr1-dev==1:2.4.48-6 +libaudit-dev==1:3.0-2 +libaugeas0==1.12.0-2 +libauparse-dev==1:3.0-2 +libauparse0==1:3.0-2 +libauthen-sasl-perl==2.1600-1.1 +libavahi-client3==0.8-5+deb11u1 +libavahi-common-data==0.8-5+deb11u1 +libavahi-common3==0.8-5+deb11u1 +libavc1394-0==0.5.4-5 +libavcodec58==7:4.3.5-0+deb11u1 +libavfilter7==7:4.3.5-0+deb11u1 +libavformat58==7:4.3.5-0+deb11u1 +libavutil56==7:4.3.5-0+deb11u1 +libb-hooks-endofscope-perl==0.24-1.1 +libb-hooks-op-check-perl==0.22-1+b3 +libbabeltrace-dev==1.5.8-1+b3 +libbabeltrace1==1.5.8-1+b3 +libbatik-java==1.12-4+deb11u1 +libbdplus0==0.1.2-3 +libbind-export-dev==1:9.11.19+dfsg-2.1 +libbinutils==2.35.2-2 +libbit-vector-perl==7.4-1+b7 +libblas3==3.9.0-3 +libblkid-dev==2.36.1-8+deb11u1 +libbluray2==1:1.2.1-4+deb11u2 +libboost-atomic-dev==1.74.0.3 +libboost-atomic1.74-dev==1.74.0-9 +libboost-atomic1.74.0==1.74.0-9 +libboost-chrono-dev==1.74.0.3 +libboost-chrono1.74-dev==1.74.0-9 +libboost-chrono1.74.0==1.74.0-9 +libboost-container-dev==1.74.0.3 +libboost-container1.74-dev==1.74.0-9 +libboost-container1.74.0==1.74.0-9 +libboost-context-dev==1.74.0.3 +libboost-context1.74-dev==1.74.0-9 +libboost-context1.74.0==1.74.0-9 +libboost-contract-dev==1.74.0.3 +libboost-contract1.74-dev==1.74.0-9 +libboost-contract1.74.0==1.74.0-9 +libboost-coroutine-dev==1.74.0.3 +libboost-coroutine1.74-dev==1.74.0-9 +libboost-coroutine1.74.0==1.74.0-9 +libboost-date-time-dev==1.74.0.3 +libboost-date-time1.74-dev==1.74.0-9 +libboost-date-time1.74.0==1.74.0-9 +libboost-dev==1.74.0.3 +libboost-fiber-dev==1.74.0.3 +libboost-fiber1.74-dev==1.74.0-9 +libboost-fiber1.74.0==1.74.0-9 +libboost-filesystem-dev==1.74.0.3 +libboost-filesystem1.74-dev==1.74.0-9 +libboost-filesystem1.74.0==1.74.0-9 +libboost-graph-parallel-dev==1.74.0.3 +libboost-graph-parallel1.74-dev==1.74.0-9 +libboost-graph-parallel1.74.0==1.74.0-9 +libboost-log-dev==1.74.0.3 +libboost-log1.74-dev==1.74.0-9 +libboost-log1.74.0==1.74.0-9 +libboost-mpi1.74.0==1.74.0-9 +libboost-program-options-dev==1.74.0.3 +libboost-program-options1.74-dev==1.74.0-9 +libboost-program-options1.74.0==1.74.0-9 +libboost-regex-dev==1.74.0.3 +libboost-regex1.74-dev==1.74.0-9 +libboost-regex1.74.0==1.74.0-9 +libboost-serialization1.74-dev==1.74.0-9 +libboost-serialization1.74.0==1.74.0-9 +libboost-system-dev==1.74.0.3 +libboost-system1.74-dev==1.74.0-9 +libboost-system1.74.0==1.74.0-9 +libboost-test1.74-dev==1.74.0-9 +libboost-test1.74.0==1.74.0-9 +libboost-thread-dev==1.74.0.3 +libboost-thread1.74-dev==1.74.0-9 +libboost-thread1.74.0==1.74.0-9 +libboost1.74-dev==1.74.0-9 +libbpf0==1:0.3-2 +libbrlapi0.8==6.3+dfsg-1+deb11u1 +libbrotli-dev==1.0.9-2+b2 +libbrotli1==1.0.9-2+b2 +libbs2b0==3.1.0+dfsg-2.2+b1 +libbsd-dev==0.11.3-1 +libbsd0==0.11.3-1 +libbsh-java==2.0b4-20 +libbz2-dev==1.0.8-4 +libc-ares-dev==1.17.1-1+deb11u1 +libc-ares2==1.17.1-1+deb11u1 +libc-dev-bin==2.31-13+deb11u5 +libc-devtools==2.31-13+deb11u5 +libc-l10n==2.31-13+deb11u5 +libc6-dbg==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libc6-dev-i386==2.31-13+deb11u5 +libc6-dev-x32==2.31-13+deb11u5 +libc6-i386==2.31-13+deb11u5 +libc6-x32==2.31-13+deb11u5 +libcaca0==0.99.beta19-2.2 +libcacard0==1:2.8.0-3 +libcairo-gobject2==1.16.0-5 +libcairo-script-interpreter2==1.16.0-5 +libcairo2==1.16.0-5 +libcairo2-dev==1.16.0-5 +libcap-dev==1:2.44-1 +libcap-ng-dev==0.7.9-2.2+b1 +libcap2==1:2.44-1 +libcap2-bin==1:2.44-1 +libcapstone4==4.0.2-3 +libcapture-tiny-perl==0.48-1 +libcarp-clan-perl==6.08-1 +libcbor0==0.5.0+dfsg-2 +libcc1-0==10.2.1-6 +libcdi-api-java==1.2-3 +libcdparanoia0==3.10.2+debian-13.1 +libcdt5==2.42.2-5 +libcgraph6==2.42.2-5 +libchromaprint1==1.5.0-2 +libcjson-dev==1.7.14-1 +libcjson1==1.7.14-1 +libclang-common-11-dev==1:11.0.1-2 +libclang-cpp11==1:11.0.1-2 +libclang1-11==1:11.0.1-2 +libclass-accessor-perl==0.51-1 +libclass-c3-perl==0.35-1 +libclass-c3-xs-perl==0.15-1+b1 +libclass-data-inheritable-perl==0.08-3 +libclass-inspector-perl==1.36-1 +libclass-load-perl==0.25-1 +libclass-load-xs-perl==0.10-1+b5 +libclass-method-modifiers-perl==2.13-1 +libclass-tiny-perl==1.008-1 +libclass-xsaccessor-perl==1.19-3+b7 +libclone-perl==0.45-1+b1 +libcmocka-dev==1.1.5-2 +libcmocka0==1.1.5-2 +libcodec2-0.9==0.9.2-4 +libcolord2==1.4.5-3 +libcommon-sense-perl==3.75-1+b4 +libcommons-beanutils-java==1.9.4-1 +libcommons-cli-java==1.4-2 +libcommons-codec-java==1.15-1 +libcommons-collections3-java==3.2.2-2 +libcommons-compress-java==1.20-1 +libcommons-configuration-java==1.10-5 +libcommons-digester-java==1.8.1-5 +libcommons-io-java==2.8.0-1 +libcommons-lang-java==2.6-9 +libcommons-lang3-java==3.11-1 +libcommons-logging-java==1.2-2 +libcommons-parent-java==43-1 +libcommons-validator-java==1:1.6-2 +libconfig-tiny-perl==2.26-1 +libconst-fast-perl==0.014-1.1 +libcontextual-return-perl==0.004014-2 +libconvert-binhex-perl==1.125-1 +libcpanel-json-xs-perl==4.25-1+b1 +libcrypt-dev==1:4.4.18-4 +libcryptsetup12==2:2.3.7-1+deb11u1 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libcunit1==2.1-3-dfsg-2.3 +libcunit1-dev==2.1-3-dfsg-2.3 +libcups2==2.3.3op2-3+deb11u2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-nss==7.74.0-1.3+deb11u5 +libcurl4==7.74.0-1.3+deb11u5 +libcurl4-nss-dev==7.74.0-1.3+deb11u5 +libdaemon-dev==0.14-7.1 +libdaemon0==0.14-7.1 +libdata-dpath-perl==0.58-1 +libdata-dump-perl==1.23-1.1 +libdata-messagepack-perl==1.00-4+b1 +libdata-optlist-perl==0.110-1.1 +libdata-validate-domain-perl==0.10-1.1 +libdatrie-dev==0.2.13-1 +libdatrie1==0.2.13-1 +libdav1d4==0.7.1-3 +libdaxctl1==71.1-1 +libdb-dev==5.3.1+nmu1 +libdb5.3-dev==5.3.28+dfsg1-0.8 +libdbi1==0.9.0-6 +libdbus-1-3==1.12.24-0+deb11u1 +libdbus-1-dev==1.12.24-0+deb11u1 +libdbus-glib-1-2==0.110-6 +libdbus-glib-1-dev==0.110-6 +libdbus-glib-1-dev-bin==0.110-6 +libdconf1==0.38.0-2 +libde265-0==1.0.11-0+deb11u1 +libdebhelper-perl==13.3.4 +libdebuginfod1==0.183-1 +libdeflate0==1.7-1 +libdevel-callchecker-perl==0.008-1+b2 +libdevel-caller-perl==2.06-2+b3 +libdevel-globaldestruction-perl==0.14-1.1 +libdevel-lexalias-perl==0.05-2+b3 +libdevel-overloadinfo-perl==0.005-1 +libdevel-partialdump-perl==0.20-1 +libdevel-size-perl==0.83-1+b2 +libdevel-stacktrace-perl==2.0400-1 +libdevmapper-event1.02.1==2:1.02.175-2.1 +libdevmapper1.02.1==2:1.02.175-2.1 +libdist-checkconflicts-perl==0.11-1.1 +libdistro-info-perl==1.0 +libdjvulibre-text==3.5.28-2 +libdjvulibre21==3.5.28-2 +libdns-export1110==1:9.11.19+dfsg-2.1 +libdom4j-java==2.1.3-1 +libdouble-conversion3==3.1.5-6.1 +libdoxia-core-java==1.7-2 +libdoxia-java==1.7-2 +libdoxia-sitetools-java==1.7.5-2 +libdpkg-perl==1.20.12 +libdrm-amdgpu1==2.4.104-1 +libdrm-common==2.4.104-1 +libdrm-intel1==2.4.104-1 +libdrm-nouveau2==2.4.104-1 +libdrm-radeon1==2.4.104-1 +libdrm2==2.4.104-1 +libdv4==1.0.0-13 +libdw-dev==0.183-1 +libdw1==0.183-1 +libdynaloader-functions-perl==0.003-1.1 +libeatmydata1==105-9 +libedit-dev==3.1-20191231-2+b1 +libedit2==3.1-20191231-2+b1 +libegl-dev==1.3.2-1 +libegl-mesa0==20.3.5-1 +libegl1==1.3.2-1 +libegl1-mesa-dev==20.3.5-1 +libel-api-java==3.0.0-3 +libelf-dev==0.183-1 +libelf1==0.183-1 +libemail-address-xs-perl==1.04-1+b3 +libencode-locale-perl==1.05-1.1 +libepoxy-dev==1.5.5-1 +libepoxy0==1.5.5-1 +liberror-perl==0.17029-1 +libestr0==0.1.10-2.1+b1 +libeval-closure-perl==0.14-1 +libevdev2==1.11.0+dfsg-1 +libevent-2.1-7==2.1.12-stable-1 +libevent-core-2.1-7==2.1.12-stable-1 +libevent-dev==2.1.12-stable-1 +libevent-extra-2.1-7==2.1.12-stable-1 +libevent-openssl-2.1-7==2.1.12-stable-1 +libevent-pthreads-2.1-7==2.1.12-stable-1 +libexception-class-perl==1.44-1 +libexecs0==1.3-1 +libexpat1==2.2.10-2+deb11u5 +libexpat1-dev==2.2.10-2+deb11u5 +libexplain-dev==1.4.D001-11 +libexplain51==1.4.D001-11 +libexporter-tiny-perl==1.002002-1 +libfabric1==1.11.0-2 +libfakeroot==1.25.3-1.1 +libfastjson4==0.99.9-1 +libfcgi-bin==2.4.2-2 +libfcgi-perl==0.79+ds-2 +libfcgi0ldbl==2.4.2-2 +libfdt1==1.6.0-1 +libffi-dev==3.3-6 +libfftw3-double3==3.3.8-2 +libfido2-1==1.6.0-2 +libfido2-dev==1.6.0-2 +libfile-basedir-perl==0.08-1 +libfile-chdir-perl==0.1008-1.1 +libfile-copy-recursive-perl==0.45-1 +libfile-desktopentry-perl==0.22-2 +libfile-dirlist-perl==0.05-2 +libfile-fcntllock-perl==0.22-3+b7 +libfile-find-rule-perl==0.34-1 +libfile-homedir-perl==1.006-1 +libfile-listing-perl==6.14-1 +libfile-mimeinfo-perl==0.30-1 +libfile-slurp-perl==9999.32-1 +libfile-stripnondeterminism-perl==1.12.0-1 +libfile-touch-perl==0.11-1 +libfile-which-perl==1.23-1 +libfl-dev==2.6.4-8 +libfl2==2.6.4-8 +libflac8==1.3.3-2+deb11u1 +libflite1==2.2-2 +libfont-afm-perl==1.20-3 +libfont-ttf-perl==1.06-1.1 +libfontbox-java==1:1.8.16-2 +libfontbox2-java==2.0.23-1 +libfontconfig-dev==2.13.1-4.2 +libfontconfig1==2.13.1-4.2 +libfontconfig1-dev==2.13.1-4.2 +libfontenc1==1:1.1.4-1 +libfop-java==1:2.5-3 +libfreetype-dev==2.10.4+dfsg-1+deb11u1 +libfreetype6==2.10.4+dfsg-1+deb11u1 +libfreetype6-dev==2.10.4+dfsg-1+deb11u1 +libfribidi-dev==1.0.8-2+deb11u1 +libfribidi0==1.0.8-2+deb11u1 +libfstrm0==0.6.0-1+b1 +libgbm1==20.3.5-1 +libgc1==1:8.0.4-3 +libgcc-10-dev==10.2.1-6 +libgd-perl==2.73-1+b1 +libgd3==2.3.0-2 +libgdbm-compat4==1.19-2 +libgdbm6==1.19-2 +libgdk-pixbuf-2.0-0==2.42.2+dfsg-1+deb11u1 +libgdk-pixbuf-2.0-dev==2.42.2+dfsg-1+deb11u1 +libgdk-pixbuf2.0-bin==2.42.2+dfsg-1+deb11u1 +libgdk-pixbuf2.0-common==2.42.2+dfsg-1+deb11u1 +libgeronimo-annotation-1.3-spec-java==1.3-1 +libgeronimo-interceptor-3.0-spec-java==1.0.1-4 +libgetopt-long-descriptive-perl==0.105-1 +libgfortran5==10.2.1-6 +libgif7==5.1.9-2 +libgirepository-1.0-1==1.66.1-1+b1 +libgirepository1.0-dev==1.66.1-1+b1 +libgit-wrapper-perl==0.048-1 +libgitlab-api-v4-perl==0.26-1 +libgl-dev==1.3.2-1 +libgl1==1.3.2-1 +libgl1-mesa-dri==20.3.5-1 +libglapi-mesa==20.3.5-1 +libgles-dev==1.3.2-1 +libgles1==1.3.2-1 +libgles2==1.3.2-1 +libglib2.0-0==2.66.8-1 +libglib2.0-bin==2.66.8-1 +libglib2.0-data==2.66.8-1 +libglib2.0-dev==2.66.8-1 +libglib2.0-dev-bin==2.66.8-1 +libglu1-mesa==9.0.1-1 +libglu1-mesa-dev==9.0.1-1 +libglvnd-dev==1.3.2-1 +libglvnd0==1.3.2-1 +libglx-dev==1.3.2-1 +libglx-mesa0==20.3.5-1 +libglx0==1.3.2-1 +libgme0==0.6.3-2 +libgmock-dev==1.10.0.20201025-1.1 +libgmp-dev==2:6.2.1+dfsg-1+deb11u1 +libgmpxx4ldbl==2:6.2.1+dfsg-1+deb11u1 +libgnutls-dane0==3.7.1-5+deb11u3 +libgnutls30==3.7.1-5+deb11u3 +libgomp1==10.2.1-6 +libgoogle-perftools4==2.8.1-1 +libgpgme11==1.14.0-1+b2 +libgpm2==1.20.7-8 +libgraphite2-3==1.3.14-1 +libgraphite2-dev==1.3.14-1 +libgs9==9.53.3~dfsg-7+deb11u2 +libgs9-common==9.53.3~dfsg-7+deb11u2 +libgsasl7==1.10.0-4+deb11u1 +libgsm1==1.0.18-2 +libgssrpc4==1.18.3-6+deb11u3 +libgstreamer-plugins-base1.0-0==1.18.4-2 +libgstreamer1.0-0==1.18.4-2.1 +libgtest-dev==1.10.0.20201025-1.1 +libgtk-3-0==3.24.24-4+deb11u2 +libgtk-3-bin==3.24.24-4+deb11u2 +libgtk-3-common==3.24.24-4+deb11u2 +libgtk-3-dev==3.24.24-4+deb11u2 +libgts-0.7-5==0.7.6+darcs121130-4+b1 +libgts-bin==0.7.6+darcs121130-4+b1 +libguava-java==29.0-6 +libgudev-1.0-0==234-1 +libguice-java==4.2.3-2 +libgvc6==2.42.2-5 +libgvpr2==2.42.2-5 +libharfbuzz-dev==2.7.4-1 +libharfbuzz-gobject0==2.7.4-1 +libharfbuzz-icu0==2.7.4-1 +libharfbuzz0b==2.7.4-1 +libhash-fieldhash-perl==0.15-1+b3 +libhawtjni-runtime-java==1.17-1 +libheif1==1.11.0-1 +libhtml-form-perl==6.07-1 +libhtml-format-perl==2.12-1.1 +libhtml-html5-entities-perl==0.004-1.1 +libhtml-parser-perl==3.75-1+b1 +libhtml-tagset-perl==3.20-4 +libhtml-tree-perl==5.07-2 +libhttp-cookies-perl==6.10-1 +libhttp-daemon-perl==6.12-1+deb11u1 +libhttp-date-perl==6.05-1 +libhttp-message-perl==6.28-1 +libhttp-negotiate-perl==6.01-1 +libhttp-tiny-multipart-perl==0.08-1.1 +libhttpclient-java==4.5.13-2 +libhttpcore-java==4.4.14-1 +libhwloc-plugins==2.4.1+dfsg-1 +libhwloc15==2.4.1+dfsg-1 +libiberty-dev==20210106-1 +libibverbs1==33.2-1 +libice-dev==2:1.0.10-1 +libice6==2:1.0.10-1 +libicu-dev==67.1-7 +libicu67==67.1-7 +libidn11==1.33-3 +libiec61883-0==1.2.0-4 +libigdgmm11==20.4.1+ds1-1 +libijs-0.35==0.35-15 +libilmbase25==2.5.4-1 +libimagequant0==2.12.2-1.1 +libimport-into-perl==1.002005-1 +libinput-bin==1.16.4-3 +libinput10==1.16.4-3 +libio-html-perl==1.004-2 +libio-prompter-perl==0.004015-1 +libio-pty-perl==1:1.15-2 +libio-sessiondata-perl==1.03-1.1 +libio-socket-ssl-perl==2.069-1 +libio-string-perl==1.08-3.1 +libio-stringy-perl==2.111-3 +libip4tc-dev==1.8.7-1 +libip4tc2==1.8.7-1 +libip6tc-dev==1.8.7-1 +libip6tc2==1.8.7-1 +libipc-run-perl==20200505.0-1 +libipc-run3-perl==0.048-2 +libipc-system-simple-perl==1.30-1 +libipt2==2.0.3-1 +libiptc-dev==1.8.7-1 +libirs-export161==1:9.11.19+dfsg-2.1 +libisc-export1105==1:9.11.19+dfsg-2.1 +libisccc-export161==1:9.11.19+dfsg-2.1 +libisccfg-export163==1:9.11.19+dfsg-2.1 +libisl23==0.23-1 +libiterator-perl==0.03+ds1-1.1 +libiterator-util-perl==0.02+ds1-1.1 +libitext1-java==1.4-7 +libitm1==10.2.1-6 +libjack-jackd2-0==1.9.17~dfsg-1 +libjansi-java==1.18-1 +libjansi-native-java==1.8-1 +libjansson-dev==2.13.1-1.1 +libjansson4==2.13.1-1.1 +libjaxen-java==1.1.6-4 +libjaxp1.3-java==1.3.05-6 +libjbig0==2.1-3.1+b2 +libjbig2dec0==0.19-2 +libjemalloc-dev==5.2.1-3 +libjemalloc2==5.2.1-3 +libjetty9-java==9.4.39-3+deb11u1 +libjpeg62-turbo==1:2.0.6-4 +libjq1==1.6-2.1 +libjs-bootstrap4==4.5.2+dfsg1-8~deb11u1 +libjs-d3==3.5.17-4 +libjs-jquery==3.5.1+dfsg+~3.5.5-7 +libjs-jquery-hotkeys==0~20130707+git2d51e3a9+dfsg-2.1 +libjs-jquery-isonscreen==1.2.0-1.1 +libjs-jquery-metadata==12-3 +libjs-jquery-tablesorter==1:2.31.3+dfsg1-1 +libjs-jquery-throttle-debounce==1.1+dfsg.1-1.1 +libjs-popper.js==1.16.1+ds-3 +libjs-sizzle==2.3.5+ds-2 +libjs-sphinxdoc==3.4.3-2 +libjs-underscore==1.9.1~dfsg-3 +libjson-c-dev==0.15-2 +libjson-c5==0.15-2 +libjson-glib-1.0-0==1.6.2-1 +libjson-glib-1.0-common==1.6.2-1 +libjson-maybexs-perl==1.004003-1 +libjson-perl==4.03000-1 +libjson-xs-perl==4.030-1+b1 +libjsoncpp24==1.9.4-4 +libjsp-api-java==2.3.4-3 +libjsr305-java==0.1~+svn49-11 +libjtidy-java==7+svn20110807-5 +libjudy-dev==1.0.5-5+b2 +libjudydebian1==1.0.5-5+b2 +libjxr-tools==1.1-6+b1 +libjxr0==1.1-6+b1 +libkadm5clnt-mit12==1.18.3-6+deb11u3 +libkadm5srv-mit12==1.18.3-6+deb11u3 +libkdb5-10==1.18.3-6+deb11u3 +libkmod2==28-1 +libkpathsea6==2020.20200327.54578-7 +libkrb5-dev==1.18.3-6+deb11u3 +libksba8==1.5.0-3+deb11u2 +liblab-gamut1==2.42.2-5 +liblapack3==3.9.0-3 +liblcms2-2==2.12~rc1-2 +libldap-2.4-2==2.4.57+dfsg-3+deb11u1 +libldap-common==2.4.57+dfsg-3+deb11u1 +libldap2-dev==2.4.57+dfsg-3+deb11u1 +liblilv-0-0==0.24.12-2 +liblist-compare-perl==0.55-1 +liblist-moreutils-perl==0.430-2 +liblist-moreutils-xs-perl==0.430-2 +liblist-someutils-perl==0.58-1 +liblist-someutils-xs-perl==0.58-2+b1 +liblist-utilsby-perl==0.11-1 +libllvm11==1:11.0.1-2 +liblmdb0==0.9.24-1 +liblocale-gettext-perl==1.07-4+b1 +liblog-any-adapter-screen-perl==0.140-1 +liblog-any-perl==1.709-1 +liblog4j1.2-java==1.2.17-10+deb11u1 +liblognorm5==2.0.5-1.1 +liblqr-1-0==0.4.2-2.1 +liblsan0==10.2.1-6 +libltdl-dev==2.4.6-15 +libltdl7==2.4.6-15 +liblua5.1-0==5.1.5-8.1+b3 +liblua5.1-0-dev==5.1.5-8.1+b3 +liblua5.3-0==5.3.3-1.1+b1 +liblvm2cmd2.03==2.03.11-2.1 +liblwp-mediatypes-perl==6.04-1 +liblwp-protocol-https-perl==6.10-1 +liblzma-dev==5.2.5-2.1~deb11u1 +liblzo2-2==2.10-2 +liblzo2-dev==2.10-2 +libmagic-mgc==1:5.39-3 +libmagic1==1:5.39-3 +libmagickcore-6.q16-6==8:6.9.11.60+dfsg-1.3+deb11u1 +libmagickcore-6.q16-6-extra==8:6.9.11.60+dfsg-1.3+deb11u1 +libmagickwand-6.q16-6==8:6.9.11.60+dfsg-1.3+deb11u1 +libmail-sendmail-perl==0.80-1.1 +libmailtools-perl==2.21-1 +libmailutils7==1:3.10-3+b1 +libmariadb-dev==1:10.5.18-0+deb11u1 +libmariadb-dev-compat==1:10.5.18-0+deb11u1 +libmariadb3==1:10.5.18-0+deb11u1 +libmarkdown2==2.2.6-1 +libmaven-archiver-java==3.2.0-2.1 +libmaven-clean-plugin-java==3.1.0-1 +libmaven-common-artifact-filters-java==3.1.1-1 +libmaven-compiler-plugin-java==3.8.1-4 +libmaven-file-management-java==3.0.0-1 +libmaven-filtering-java==3.1.1-1 +libmaven-jar-plugin-java==3.1.2-1 +libmaven-parent-java==31-2 +libmaven-plugin-tools-java==3.6.0-1 +libmaven-reporting-api-java==3.0-1.1 +libmaven-reporting-exec-java==1.4-3 +libmaven-reporting-impl-java==3.0.0-2 +libmaven-resolver-java==1.4.2-3 +libmaven-resources-plugin-java==3.1.0-1 +libmaven-shared-incremental-java==1.1-3 +libmaven-shared-io-java==3.0.0-3 +libmaven-shared-utils-java==3.3.0-1+deb11u1 +libmaven-site-plugin-java==3.6-4 +libmaven3-core-java==3.6.3-5 +libmaxminddb0==1.5.2-1 +libmd-dev==1.0.3-3 +libmd0==1.0.3-3 +libmd4c0==0.4.7-2 +libmfx1==21.1.0-1 +libmime-tools-perl==5.509-1 +libmnl-dev==1.0.4-3 +libmnl0==1.0.4-3 +libmodule-implementation-perl==0.09-1.1 +libmodule-runtime-conflicts-perl==0.003-1.1 +libmodule-runtime-perl==0.016-1 +libmoo-perl==2.004004-1 +libmoose-perl==2.2014-2 +libmoosex-aliases-perl==0.11-1.1 +libmoox-aliases-perl==0.001006-1.1 +libmoox-struct-perl==0.020-1 +libmount-dev==2.36.1-8+deb11u1 +libmouse-perl==2.5.10-1+b1 +libmp3lame0==3.100-3 +libmpc3==1.2.0-1 +libmpdec3==2.5.1-1 +libmpfr6==4.1.0-3 +libmpg123-0==1.26.4-1 +libmro-compat-perl==0.13-1 +libmtdev1==1.1.6-1 +libmysofa1==1.2~dfsg0-1 +libnamespace-autoclean-perl==0.29-1 +libnamespace-clean-perl==0.27-1 +libnanomsg-dev==1.1.5+dfsg-1+b2 +libnanomsg5==1.1.5+dfsg-1+b2 +libncurses-dev==6.2+20201114-2 +libncurses5-dev==6.2+20201114-2 +libncurses6==6.2+20201114-2 +libncursesw6==6.2+20201114-2 +libndctl6==71.1-1 +libnet-dbus-perl==1.2.0-1+b1 +libnet-domain-tld-perl==1.75-1.1 +libnet-http-perl==6.20-1 +libnet-smtp-ssl-perl==1.04-1 +libnet-ssleay-perl==1.88-3+b1 +libnetfilter-conntrack-dev==1.0.8-3 +libnetfilter-conntrack3==1.0.8-3 +libnetpbm10==2:10.0-15.4 +libnetsnmptrapd40==5.9+dfsg-4+deb11u1 +libnewt-dev==0.52.21-4+b3 +libnewt0.52==0.52.21-4+b3 +libnfnetlink-dev==1.0.1-3+b1 +libnfnetlink0==1.0.1-3+b1 +libnftables1==0.9.8-3.1+deb11u1 +libnftnl-dev==1.1.9-1 +libnftnl11==1.1.9-1 +libnghttp2-14==1.43.0-1 +libnl-3-200==3.4.0-1+b1 +libnl-route-3-200==3.4.0-1+b1 +libnorm-dev==1.5.9+dfsg-2 +libnorm1==1.5.9+dfsg-2 +libnpth0==1.6-3 +libnsl-dev==1.3.0-2 +libnspr4==2:4.29-1 +libnss-systemd==247.3-7+deb11u1 +libnss3==2:3.61-1+deb11u3 +libntlm0==1.6-3 +libnuma-dev==2.0.12-1+b1 +libnuma1==2.0.12-1+b1 +libnumber-compare-perl==0.03-1.1 +libnumber-range-perl==0.12-1.1 +libobjc-10-dev==10.2.1-6 +libobjc4==10.2.1-6 +libobject-id-perl==0.1.2-2.1 +libogg0==1.3.4-0.1 +libomp-11-dev==1:11.0.1-2 +libomp5-11==1:11.0.1-2 +libonig5==6.9.6-1.1 +libopencsd-dev==0.14.4-1 +libopencsd0==0.14.4-1 +libopenexr25==2.5.4-2+deb11u1 +libopengl-dev==1.3.2-1 +libopengl0==1.3.2-1 +libopenjp2-7==2.4.0-3 +libopenmpi3==4.1.0-10 +libopenmpt0==0.4.11-1 +libopentest4j-java==1.2.0-2 +libopts25==1:5.18.16-4 +libopts25-dev==1:5.18.16-4 +libopus0==1.3.1-0.1 +liborc-0.4-0==1:0.4.32-1 +liboro-java==2.0.8a-14 +libosp5==1.5.2-13+b2 +libossp-uuid-perl==1.6.2-1.5+b9 +libossp-uuid16==1.6.2-1.5+b9 +libostyle1c2==1.4devel1-22 +libpackage-deprecationmanager-perl==0.17-1.1 +libpackage-stash-perl==0.39-1 +libpackage-stash-xs-perl==0.29-1+b2 +libpackagekit-glib2-18==1.2.2-2 +libpadwalker-perl==2.5-1+b1 +libpam-cap==1:2.44-1 +libpam-systemd==247.3-7+deb11u1 +libpam0g-dev==1.4.0-9+deb11u1 +libpango-1.0-0==1.46.2-3 +libpango1.0-dev==1.46.2-3 +libpangocairo-1.0-0==1.46.2-3 +libpangoft2-1.0-0==1.46.2-3 +libpangoxft-1.0-0==1.46.2-3 +libpaper-utils==1.1.28+b1 +libpaper1==1.1.28+b1 +libparams-classify-perl==0.015-1+b3 +libparams-util-perl==1.102-1+b1 +libparams-validate-perl==1.30-1+b1 +libparboiled-java==1.1.7-2.1 +libpath-iterator-rule-perl==1.014-1 +libpath-tiny-perl==0.118-1 +libpathplan4==2.42.2-5 +libpcap-dev==1.10.0-2 +libpcap0.8==1.10.0-2 +libpcap0.8-dev==1.10.0-2 +libpci-dev==1:3.7.0-5 +libpci3==1:3.7.0-5 +libpciaccess0==0.16-1 +libpcre16-3==2:8.39-13 +libpcre2-16-0==10.36-2+deb11u1 +libpcre2-32-0==10.36-2+deb11u1 +libpcre2-dev==10.36-2+deb11u1 +libpcre2-posix2==10.36-2+deb11u1 +libpcre3-dev==2:8.39-13 +libpcre32-3==2:8.39-13 +libpcrecpp0v5==2:8.39-13 +libpcsclite-dev==1.9.1-1 +libpcsclite1==1.9.1-1 +libpdfbox-java==1:1.8.16-2 +libpegdown-java==1.6.0-1.1 +libperl-dev==5.32.1-4+deb11u2 +libperl5.32==5.32.1-4+deb11u2 +libperlio-gzip-perl==0.19-1+b7 +libpfm4==4.11.1+git32-gd0b85fb-1 +libpgm-5.3-0==5.3.128~dfsg-2 +libpgm-dev==5.3.128~dfsg-2 +libpipeline1==1.5.3-1 +libpixman-1-0==0.40.0-1.1~deb11u1 +libpixman-1-dev==0.40.0-1.1~deb11u1 +libplexus-ant-factory-java==1.0~alpha2.1-4 +libplexus-archiver-java==3.6.0-2 +libplexus-bsh-factory-java==1.0~alpha7-4.1 +libplexus-build-api-java==0.0.7-4 +libplexus-cipher-java==1.8-2 +libplexus-classworlds-java==2.6.0-1 +libplexus-compiler-java==2.8.8-2 +libplexus-component-annotations-java==2.1.0-1 +libplexus-container-default-java==2.1.0-1 +libplexus-container-default1.5-java==2.1.0-1 +libplexus-i18n-java==1.0-beta-10-5 +libplexus-interpolation-java==1.26-1 +libplexus-io-java==3.2.0-1.1 +libplexus-languages-java==0.9.10-2 +libplexus-sec-dispatcher-java==1.4-4 +libplexus-utils2-java==3.3.0-1 +libplexus-velocity-java==1.2-3.1 +libpmem1==1.10-2+deb11u1 +libpmix2==4.0.0-4.1 +libpng-dev==1.6.37-3 +libpng-tools==1.6.37-3 +libpng16-16==1.6.37-3 +libpocketsphinx3==0.8+5prealpha+1-13 +libpod-constants-perl==0.19-2 +libpod-parser-perl==1.63-2 +libpolkit-agent-1-0==0.105-31+deb11u1 +libpolkit-gobject-1-0==0.105-31+deb11u1 +libpopt0==1.18-2 +libpostproc55==7:4.3.5-0+deb11u1 +libproc-processtable-perl==0.59-2+b1 +libprocps8==2:3.3.17-5 +libprotobuf-c1==1.3.3-1+b2 +libprotobuf-dev==3.12.4-1 +libprotobuf-lite23==3.12.4-1 +libprotobuf23==3.12.4-1 +libprotoc23==3.12.4-1 +libproxy1v5==0.4.17-1 +libpsl5==0.21.0-1.2 +libpsm-infinipath1==3.3+20.604758e7-6.1 +libpsm2-2==11.2.185-1 +libptexenc1==2020.20200327.54578-7 +libpthread-stubs0-dev==0.4-1 +libpulse0==14.2-2 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libpython3-all-dbg==3.9.2-3 +libpython3-all-dev==3.9.2-3 +libpython3-dbg==3.9.2-3 +libpython3-dev==3.9.2-3 +libpython3-stdlib==3.9.2-3 +libpython3.9==3.9.2-1 +libpython3.9-dbg==3.9.2-1 +libpython3.9-dev==3.9.2-1 +libpython3.9-minimal==3.9.2-1 +libpython3.9-stdlib==3.9.2-1 +libqdox-java==1.12.1-3 +libqdox2-java==2.0.0-1 +libqt5concurrent5==5.15.2+dfsg-9 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5gui5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +libqt5opengl5==5.15.2+dfsg-9 +libqt5opengl5-dev==5.15.2+dfsg-9 +libqt5printsupport5==5.15.2+dfsg-9 +libqt5sql5==5.15.2+dfsg-9 +libqt5sql5-sqlite==5.15.2+dfsg-9 +libqt5svg5==5.15.2-3 +libqt5test5==5.15.2+dfsg-9 +libqt5widgets5==5.15.2+dfsg-9 +libqt5xml5==5.15.2+dfsg-9 +libquadmath0==10.2.1-6 +librabbitmq4==0.10.0-1 +libraw1394-11==2.1.2-2 +librdmacm1==33.2-1 +libre-engine-re2-perl==0.14-1 +libre2-9==20210201+dfsg-1 +libreadline-dev==8.1-1 +libreadline8==8.1-1 +libreadonly-perl==2.050-3 +libref-util-perl==0.204-1 +libref-util-xs-perl==0.117-1+b3 +libregexp-assemble-perl==0.36-1.1 +libregexp-pattern-license-perl==3.4.0-1 +libregexp-pattern-perl==0.2.14-1 +librest-0.7-0==0.8.1-1.1 +librhash0==1.4.1-2 +librole-tiny-perl==2.002004-1 +librrd-dev==1.7.2-3+b7 +librrd8==1.7.2-3+b7 +librsvg2-2==2.50.3+dfsg-1 +librsvg2-common==2.50.3+dfsg-1 +librtmp1==2.4+20151223.gitfa8646d.1-2+b2 +librubberband2==1.9.0-1 +libruby2.7==2.7.4-1+deb11u1 +libsamplerate0==0.2.1+ds0-1 +libsasl2-2==2.1.27+dfsg-2.1+deb11u1 +libsasl2-modules==2.1.27+dfsg-2.1+deb11u1 +libsasl2-modules-db==2.1.27+dfsg-2.1+deb11u1 +libsaxon-java==1:6.5.5-12 +libselinux1-dev==3.1-3 +libsensors-config==1:3.6.0-7 +libsensors-dev==1:3.6.0-7 +libsensors4-dev==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libsepol1-dev==3.1-1 +libserd-0-0==0.30.10-2 +libsereal-decoder-perl==4.018+ds-1+b1 +libsereal-encoder-perl==4.018+ds-1+b1 +libservlet-api-java==4.0.1-2 +libservlet3.1-java==1:4.0.1-2 +libsgmls-perl==1.03ii-36 +libshine3==3.1.1-2 +libshout3==2.4.5-1+b1 +libsigsegv2==2.13-1 +libsisu-inject-java==0.3.4-2 +libsisu-plexus-java==0.3.4-3 +libslang2==2.3.2-5 +libslang2-dev==2.3.2-5 +libslf4j-java==1.7.30-1 +libslirp0==4.4.0-1+deb11u2 +libsm-dev==2:1.2.3-1 +libsm6==2:1.2.3-1 +libsnappy-java==1.1.8.3-1 +libsnappy-jni==1.1.8.3-1 +libsnappy1v5==1.1.8-1 +libsndfile1==1.0.31-2 +libsnmp-base==5.9+dfsg-4+deb11u1 +libsnmp-dev==5.9+dfsg-4+deb11u1 +libsnmp40==5.9+dfsg-4+deb11u1 +libsoap-lite-perl==1.27-1 +libsodium-dev==1.0.18-1 +libsodium23==1.0.18-1 +libsord-0-0==0.16.8-2 +libsort-key-perl==1.33-2+b3 +libsort-versions-perl==1.62-1 +libsoup-gnome2.4-1==2.72.0-2 +libsoup2.4-1==2.72.0-2 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libsoxr0==0.1.3-4 +libspeex1==1.2~rc1.2-1.1 +libsphinxbase3==0.8+5prealpha+1-12 +libspice-server1==0.14.3-2.1 +libsqlite3-0==3.34.1-3 +libsratom-0-0==0.6.8-1 +libsrt1.4-gnutls==1.4.2-1.3 +libssh-gcrypt-4==0.9.5-1+deb11u1 +libssh2-1==1.9.0-2 +libssl-dev==1.1.1n-0+deb11u4 +libstdc++-10-dev==10.2.1-6 +libstemmer0d==2.1.0-1 +libstrictures-perl==2.000006-1 +libstring-copyright-perl==0.003006-1 +libstring-escape-perl==2010.002-2 +libstring-shellquote-perl==1.04-1 +libsub-exporter-perl==0.987-1 +libsub-exporter-progressive-perl==0.001013-1 +libsub-identify-perl==0.14-1+b3 +libsub-install-perl==0.928-1.1 +libsub-name-perl==0.26-1+b1 +libsub-override-perl==0.09-2 +libsub-quote-perl==2.006006-1 +libsubunit-dev==1.4.0-3 +libsubunit0==1.4.0-3 +libsurefire-java==2.22.3-1 +libswitch-perl==2.17-2.1 +libswresample3==7:4.3.5-0+deb11u1 +libswscale5==7:4.3.5-0+deb11u1 +libsynctex2==2020.20200327.54578-7 +libsys-cpuaffinity-perl==1.13~03-1 +libsys-hostname-long-perl==1.5-2 +libsystemd-dev==247.3-7+deb11u1 +libtag1v5==1.11.1+dfsg.1-3 +libtag1v5-vanilla==1.11.1+dfsg.1-3 +libtask-weaken-perl==1.06-1 +libtcl8.6==8.6.11+dfsg-1 +libtcmalloc-minimal4==2.8.1-1 +libteckit0==2.5.10+ds1-3 +libtemplate-perl==2.27-1+b3 +libterm-readkey-perl==2.38-1+b2 +libtexlua53==2020.20200327.54578-7 +libtexluajit2==2020.20200327.54578-7 +libtext-charwidth-perl==0.04-10+b1 +libtext-glob-perl==0.11-1 +libtext-hogan-perl==2.03-1 +libtext-iconv-perl==1.7-7+b1 +libtext-levenshteinxs-perl==0.03-4+b8 +libtext-markdown-discount-perl==0.12-1+b1 +libtext-trim-perl==1.04-1 +libtext-unidecode-perl==1.30-1 +libtext-wrapi18n-perl==0.06-9 +libtext-xslate-perl==3.5.8-1+b1 +libthai-data==0.1.28-3 +libthai-dev==0.1.28-3 +libthai0==0.1.28-3 +libtheora0==1.1.1+dfsg.1-15 +libtie-ixhash-perl==1.23-2.1 +libtiff5==4.2.0-1+deb11u3 +libtime-duration-perl==1.21-1 +libtime-moment-perl==0.44-1+b3 +libtimedate-perl==2.3300-2 +libtinyxml2-8==8.0.0+dfsg-2 +libtinyxml2-dev==8.0.0+dfsg-2 +libtirpc-dev==1.3.1-1+deb11u1 +libtk8.6==8.6.11-2 +libtool==2.4.6-15 +libtool-bin==2.4.6-15 +libtry-tiny-perl==0.30-1 +libtsan0==10.2.1-6 +libtwolame0==0.4.0-2 +libtype-tiny-perl==1.012001-2 +libtype-tiny-xs-perl==0.022-1 +libtypes-serialiser-perl==1.01-1 +libubsan1==10.2.1-6 +libuchardet0==0.0.7-1 +libucx0==1.10.1~rc1+really.1.10.0-1 +libudev-dev==247.3-7+deb11u1 +libudfread0==1.1.1-1 +libunbound8==1.13.1-1 +libunicode-utf8-perl==0.62-1+b2 +libunivocity-parsers-java==2.8.3-2 +libunwind-dev==1.3.2-2 +libunwind8==1.3.2-2 +liburi-perl==5.08-1 +liburing1==0.7-3 +libusb-0.1-4==2:0.1.12-32 +libusb-1.0-0==2:1.0.24-3 +libusb-1.0-0-dev==2:1.0.24-3 +libusb-1.0-doc==2:1.0.24-3 +libusb-dev==2:0.1.12-32 +libusbredirparser1==0.8.0-1+b1 +libuv1==1.40.0-2 +libv4l-0==1.20.0-2 +libv4lconvert0==1.20.0-2 +libva-drm2==2.10.0-1 +libva-x11-2==2.10.0-1 +libva2==2.10.0-1 +libvariable-magic-perl==0.62-1+b3 +libvdeplug2==4.0.1-2 +libvdpau-va-gl1==0.4.2-1+b1 +libvdpau1==1.4-3 +libvelocity-tools-java==2.0-8 +libvidstab1.1==1.1.0-2+b1 +libvirglrenderer1==0.8.2-5+deb11u1 +libvirt-clients==7.0.0-3 +libvirt0==7.0.0-3 +libvisual-0.4-0==0.4.0-17 +libvorbis0a==1.3.7-1 +libvorbisenc2==1.3.7-1 +libvorbisfile3==1.3.7-1 +libvpx6==1.9.0-1 +libvte-2.91-0==0.62.3-1 +libvte-2.91-common==0.62.3-1 +libvulkan-dev==1.2.162.0-1 +libvulkan1==1.2.162.0-1 +libwacom-bin==1.8-2 +libwacom-common==1.8-2 +libwacom2==1.8-2 +libwagon-file-java==3.3.4-1 +libwagon-http-shaded-java==3.3.4-1 +libwagon-provider-api-java==3.3.4-1 +libwant-perl==0.29-1+b6 +libwavpack1==5.4.0-1 +libwayland-bin==1.18.0-2~exp1.1 +libwayland-client0==1.18.0-2~exp1.1 +libwayland-cursor0==1.18.0-2~exp1.1 +libwayland-dev==1.18.0-2~exp1.1 +libwayland-egl1==1.18.0-2~exp1.1 +libwayland-server0==1.18.0-2~exp1.1 +libwebp6==0.6.1-2.1 +libwebpdemux2==0.6.1-2.1 +libwebpmux3==0.6.1-2.1 +libwebsocket-api-java==1.1-2 +libwmf0.2-7==0.2.8.4-17 +libwoff1==1.0.2-1+b1 +libwrap0==7.6.q-31 +libwrap0-dev==7.6.q-31 +libwww-perl==6.52-1 +libwww-robotrules-perl==6.02-1 +libx11-6==2:1.7.2-1 +libx11-data==2:1.7.2-1 +libx11-dev==2:1.7.2-1 +libx11-protocol-perl==0.56-7.1 +libx11-xcb1==2:1.7.2-1 +libx264-160==2:0.160.3011+gitcde9a93-2.1 +libx265-192==3.4-2 +libx32asan6==10.2.1-6 +libx32atomic1==10.2.1-6 +libx32gcc-10-dev==10.2.1-6 +libx32gcc-s1==10.2.1-6 +libx32gomp1==10.2.1-6 +libx32itm1==10.2.1-6 +libx32quadmath0==10.2.1-6 +libx32stdc++6==10.2.1-6 +libx32ubsan1==10.2.1-6 +libxalan2-java==2.7.2-4 +libxapian30==1.4.18-3 +libxau-dev==1:1.0.9-1 +libxau6==1:1.0.9-1 +libxaw7==2:1.0.13-1.1 +libxbean-reflect-java==4.5-8 +libxcb-dri2-0==1.14-3 +libxcb-dri3-0==1.14-3 +libxcb-glx0==1.14-3 +libxcb-icccm4==0.4.1-1.1 +libxcb-image0==0.4.0-1+b3 +libxcb-keysyms1==0.4.0-1+b2 +libxcb-present0==1.14-3 +libxcb-randr0==1.14-3 +libxcb-render-util0==0.3.9-1+b1 +libxcb-render0==1.14-3 +libxcb-render0-dev==1.14-3 +libxcb-shape0==1.14-3 +libxcb-shm0==1.14-3 +libxcb-shm0-dev==1.14-3 +libxcb-sync1==1.14-3 +libxcb-util1==0.4.0-1+b1 +libxcb-xfixes0==1.14-3 +libxcb-xinerama0==1.14-3 +libxcb-xinput0==1.14-3 +libxcb-xkb1==1.14-3 +libxcb1==1.14-3 +libxcb1-dev==1.14-3 +libxcomposite-dev==1:0.4.5-1 +libxcomposite1==1:0.4.5-1 +libxcursor-dev==1:1.2.0-2 +libxcursor1==1:1.2.0-2 +libxdamage-dev==1:1.1.5-2 +libxdamage1==1:1.1.5-2 +libxdelta2==1.1.3-9.3 +libxdmcp-dev==1:1.1.2-3 +libxdmcp6==1:1.1.2-3 +libxencall1==4.14.5+86-g1c354767d5-1 +libxendevicemodel1==4.14.5+86-g1c354767d5-1 +libxenevtchn1==4.14.5+86-g1c354767d5-1 +libxenforeignmemory1==4.14.5+86-g1c354767d5-1 +libxengnttab1==4.14.5+86-g1c354767d5-1 +libxenhypfs1==4.14.5+86-g1c354767d5-1 +libxenmisc4.14==4.14.5+86-g1c354767d5-1 +libxenstore3.0==4.14.5+86-g1c354767d5-1 +libxentoolcore1==4.14.5+86-g1c354767d5-1 +libxentoollog1==4.14.5+86-g1c354767d5-1 +libxerces2-java==2.12.1-1 +libxext-dev==2:1.3.3-1.1 +libxext6==2:1.3.3-1.1 +libxfixes-dev==1:5.0.3-2 +libxfixes3==1:5.0.3-2 +libxft-dev==2.3.2-2 +libxft2==2.3.2-2 +libxi-dev==2:1.7.10-1 +libxi6==2:1.7.10-1 +libxinerama-dev==2:1.1.4-2 +libxinerama1==2:1.1.4-2 +libxkbcommon-dev==1.0.3-2 +libxkbcommon-x11-0==1.0.3-2 +libxkbcommon0==1.0.3-2 +libxkbfile1==1:1.1.0-1 +libxml-commons-external-java==1.4.01-5 +libxml-commons-resolver1.1-java==1.2-11 +libxml-libxml-perl==2.0134+dfsg-2+b1 +libxml-namespacesupport-perl==1.12-1.1 +libxml-parser-perl==2.46-2 +libxml-sax-base-perl==1.09-1.1 +libxml-sax-expat-perl==0.51-1 +libxml-sax-perl==1.02+dfsg-1 +libxml-simple-perl==2.25-1 +libxml-twig-perl==1:3.52-1 +libxml-xpathengine-perl==0.14-1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxml2-dev==2.9.10+dfsg-6.7+deb11u3 +libxml2-utils==2.9.10+dfsg-6.7+deb11u3 +libxmlgraphics-commons-java==2.4-2~deb11u1 +libxmlrpc-lite-perl==0.717-4 +libxmu6==2:1.1.2-2+b3 +libxmuu1==2:1.1.2-2+b3 +libxnvctrl0==470.141.03-1~deb11u1 +libxpm4==1:3.5.12-1 +libxrandr-dev==2:1.5.1-1 +libxrandr2==2:1.5.1-1 +libxrender-dev==1:0.9.10-1 +libxrender1==1:0.9.10-1 +libxshmfence1==1.3-1 +libxslt1.1==1.1.34-4+deb11u1 +libxss1==1:1.2.3-1 +libxt-dev==1:1.2.0-1 +libxt6==1:1.2.0-1 +libxtables-dev==1.8.7-1 +libxtables12==1.8.7-1 +libxtst-dev==2:1.2.3-1 +libxtst6==2:1.2.3-1 +libxv1==2:1.0.11-1 +libxvidcore4==2:1.3.7-1 +libxxf86dga1==2:1.1.4-1+b3 +libxxf86vm1==1:1.1.4-1+b2 +libxz-java==1.8-2 +libyajl2==2.1.0-3 +libyaml-0-2==0.2.2-1 +libyaml-dev==0.2.2-1 +libyaml-libyaml-perl==0.82+repack-1+b1 +libz3-4==4.8.10-1 +libz3-dev==4.8.10-1 +libzmq3-dev==4.3.4-1 +libzmq5==4.3.4-1 +libzvbi-common==0.2.35-18 +libzvbi0==0.2.35-18 +libzzip-0-13==0.13.62-3.3+deb11u1 +licensecheck==3.1.1-2 +lintian==2.104.0 +linux-compiler-gcc-10-x86==5.10.162-1 +linux-headers-5.10.0-21-amd64==5.10.162-1 +linux-headers-5.10.0-21-common==5.10.162-1 +linux-headers-amd64==5.10.162-1 +linux-kbuild-5.10==5.10.162-1 +linux-libc-dev==5.10.162-1 +linuxdoc-tools==0.9.82-1 +llvm-11==1:11.0.1-2 +llvm-11-runtime==1:11.0.1-2 +lmodern==2.004.5-6.1 +locales==2.31-13+deb11u5 +logrotate==3.18.0-2+deb11u1 +lsb-release==11.1.0 +lsof==4.93.2+dfsg-1.1 +lua-bitop==1.0.2-5 +lua-bitop-dev==1.0.2-5 +lua-cjson==2.1.0+dfsg-2.1 +lua-cjson-dev==2.1.0+dfsg-2.1 +lvm2==2.03.11-2.1 +lynx==2.9.0dev.6-3~deb11u1 +lynx-common==2.9.0dev.6-3~deb11u1 +lz4==1.9.3-2 +lzip==1.22-3 +lzop==1.04-2 +m4==1.4.18-5 +mailcap==3.69 +mailutils==1:3.10-3+b1 +mailutils-common==1:3.10-3 +make==4.3-4.1 +man-db==2.9.4-2 +man2html-base==1.6g-14 +manpages==5.10-1 +manpages-dev==5.10-1 +mariadb-common==1:10.5.18-0+deb11u1 +maven==3.6.3-5 +maven-debian-helper==2.6 +maven-repo-helper==1.10 +media-types==4.0.0 +mesa-va-drivers==20.3.5-1 +mesa-vdpau-drivers==20.3.5-1 +mesa-vulkan-drivers==20.3.5-1 +mime-support==3.66 +module-assistant==0.11.10 +mysql-common==5.8+1.0.7 +ncurses-term==6.2+20201114-2 +netbase==6.3 +netpbm==2:10.0-15.4 +nftables==0.9.8-3.1+deb11u1 +node-jquery==3.5.1+dfsg+~3.5.5-7 +ocl-icd-libopencl1==2.2.14-2 +openjade==1.4devel1-22 +openjdk-11-jdk==11.0.18+10-1~deb11u1 +openjdk-11-jdk-headless==11.0.18+10-1~deb11u1 +openjdk-11-jre==11.0.18+10-1~deb11u1 +openjdk-11-jre-headless==11.0.18+10-1~deb11u1 +opensp==1.5.2-13+b2 +openssh-client==1:8.4p1-5+deb11u1 +openssh-server==1:8.4p1-5+deb11u1 +openssh-sftp-server==1:8.4p1-5+deb11u1 +openssl==1.1.1n-0+deb11u4 +ovmf==2020.11-2+deb11u1 +packagekit==1.2.2-2 +packagekit-tools==1.2.2-2 +pango1.0-tools==1.46.2-3 +patch==2.7.6-7 +patchutils==0.4.2-1 +pbuilder==0.231 +pbzip2==1.1.13-1 +pci.ids==0.0~2021.02.08-1 +perl==5.32.1-4+deb11u2 +perl-modules-5.32==5.32.1-4+deb11u2 +perl-openssl-defaults==5 +php-cli==2:7.4+76 +php-codecoverage==9.2.5+dfsg-3 +php-common==2:76 +php-deepcopy==1.10.2-3 +php-doctrine-instantiator==1.4.0-1 +php-file-iterator==3.0.5-2 +php-invoker==3.1.1-2 +php-mbstring==2:7.4+76 +php-parser==4.10.4-1 +php-pear==1:1.10.12+submodules+notgz+20210212-1 +php-phar-io-manifest==2.0.1-2 +php-phar-io-version==3.0.4-1 +php-phpdocumentor-reflection-common==2.2.0-1 +php-phpdocumentor-reflection-docblock==5.2.2-1 +php-phpdocumentor-type-resolver==1.4.0-2 +php-phpspec-prophecy==1.12.2-1 +php-text-template==2.0.4-1 +php-timer==5.0.3-2 +php-tokenizer==1.2.0-1 +php-webmozart-assert==1.9.1-2 +php-xml==2:7.4+76 +php7.4-cli==7.4.33-1+deb11u1 +php7.4-common==7.4.33-1+deb11u1 +php7.4-json==7.4.33-1+deb11u1 +php7.4-mbstring==7.4.33-1+deb11u1 +php7.4-opcache==7.4.33-1+deb11u1 +php7.4-readline==7.4.33-1+deb11u1 +php7.4-xml==7.4.33-1+deb11u1 +phpunit==9.5.2-1 +phpunit-cli-parser==1.0.1-1 +phpunit-code-unit==1.0.8-1 +phpunit-code-unit-reverse-lookup==2.0.3-2 +phpunit-comparator==4.0.6-1 +phpunit-complexity==2.0.2-1 +phpunit-diff==4.0.4-1 +phpunit-environment==5.1.3-2 +phpunit-exporter==4.0.3-2 +phpunit-global-state==5.0.2-1 +phpunit-lines-of-code==1.0.3-1 +phpunit-object-enumerator==4.0.4-1 +phpunit-object-reflector==2.0.4-1 +phpunit-recursion-context==4.0.4-1 +phpunit-resource-operations==3.0.3-2 +phpunit-type==2.3.1-1 +phpunit-version==3.0.2-2 +pigz==2.6-1 +pinentry-curses==1.1.0-4 +pixz==1.0.7-1 +pkg-config==0.29.2-1 +pkg-php-tools==1.40 +po-debconf==1.0.21+nmu1 +pocketsphinx-en-us==0.8+5prealpha+1-13 +policykit-1==0.105-31+deb11u1 +poppler-data==0.4.10-1 +pps-tools==1.0.2-2 +preview-latex-style==12.2-1 +pristine-tar==1.49 +procmail==3.22-26+deb11u1 +procps==2:3.3.17-5 +protobuf-compiler==3.12.4-1 +psmisc==23.4-2 +psutils==1.17.dfsg-4 +publicsuffix==20220811.1734-0+deb11u1 +pylint==2.7.2-3 +python-all==2.7.18-3 +python-apt-common==2.2.1 +python-babel-localedata==2.8.0+dfsg.1-7 +python-is-python3==3.9.2-1 +python-pip-whl==20.3.4-4+deb11u1 +python-pkg-resources==44.1.1-1 +python-setuptools==44.1.1-1 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +python3==3.9.2-3 +python3-alabaster==0.7.8-1.1 +python3-all==3.9.2-3 +python3-all-dbg==3.9.2-3 +python3-all-dev==3.9.2-3 +python3-apt==2.2.1 +python3-astroid==2.5.1-1 +python3-attr==20.3.0-1 +python3-automat==20.2.0-1 +python3-babel==2.8.0+dfsg.1-7 +python3-bcrypt==3.1.7-4 +python3-bs4==4.9.3-1 +python3-certifi==2020.6.20-1 +python3-cffi-backend==1.14.5-1 +python3-chardet==4.0.0-1 +python3-click==7.1.2-1 +python3-colorama==0.4.4-1 +python3-constantly==15.1.0-2 +python3-cov-core==1.15.0-3 +python3-coverage==5.1+dfsg.1-2+b2 +python3-cryptography==3.3.2-1 +python3-dateutil==2.8.1-6 +python3-dbg==3.9.2-3 +python3-dbus==1.2.16-5 +python3-debian==0.1.39 +python3-dev==3.9.2-3 +python3-distro-info==1.0 +python3-distutils==3.9.2-1 +python3-docutils==0.16+dfsg-4 +python3-gi==3.38.0-2 +python3-gpg==1.14.0-1+b2 +python3-hamcrest==1.9.0-3 +python3-html5lib==1.1-3 +python3-hyperlink==19.0.0-2 +python3-idna==2.10-1 +python3-imagesize==1.2.0-2 +python3-importlib-metadata==1.6.0-2 +python3-incremental==17.5.0-1 +python3-iniconfig==1.1.1-1 +python3-ipaddr==2.2.0-4 +python3-isort==5.6.4-1 +python3-jinja2==2.11.3-1 +python3-lazy-object-proxy==1.5.2-1 +python3-lib2to3==3.9.2-1 +python3-logilab-common==1.8.1-1 +python3-lxml==4.6.3+dfsg-0.1+deb11u1 +python3-magic==2:0.4.20-3 +python3-mako==1.1.3+ds1-2 +python3-markdown==3.3.4-1 +python3-markupsafe==1.1.1-1+b3 +python3-mccabe==0.6.1-3 +python3-minimal==3.9.2-3 +python3-more-itertools==4.2.0-3 +python3-mypy-extensions==0.4.3-2 +python3-nose2==0.9.2-1 +python3-olefile==0.46-3 +python3-openssl==20.0.1-1 +python3-packaging==20.9-2 +python3-parse==1.6.6-0.2 +python3-pil==8.1.2+dfsg-0.3+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-pluggy==0.13.0-6 +python3-py==1.10.0-1 +python3-pyasn1==0.4.8-1 +python3-pyasn1-modules==0.2.1-1 +python3-pycurl==7.43.0.6-5 +python3-pygments==2.7.1+dfsg-2.1 +python3-pyparsing==2.4.7-1 +python3-pytest==6.0.2-2 +python3-pytest-cov==2.10.1-1 +python3-requests==2.25.1+dfsg-2 +python3-roman==2.0.0-5 +python3-service-identity==18.1.0-6 +python3-setuptools==52.0.0-4 +python3-six==1.16.0-2 +python3-snowballstemmer==2.1.0-1 +python3-software-properties==0.96.20.2-2.1 +python3-soupsieve==2.2.1-1 +python3-sphinx==3.4.3-2 +python3-sphinx-rtd-theme==0.5.1+dfsg-1 +python3-stdeb==0.10.0-1 +python3-tk==3.9.2-1 +python3-toml==0.10.1-1 +python3-twisted==20.3.0-7+deb11u1 +python3-twisted-bin==20.3.0-7+deb11u1 +python3-typing-extensions==3.7.4.3-1 +python3-tz==2021.1-1 +python3-unidiff==0.5.5-2 +python3-urllib3==1.26.5-1~exp1 +python3-venv==3.9.2-3 +python3-webencodings==0.5.1-2 +python3-wheel==0.34.2-1 +python3-wrapt==1.12.1-4+b1 +python3-xdg==0.27-2 +python3-zipp==1.0.0-3 +python3-zope.interface==5.2.0-1 +python3.9==3.9.2-1 +python3.9-dbg==3.9.2-1 +python3.9-dev==3.9.2-1 +python3.9-minimal==3.9.2-1 +python3.9-venv==3.9.2-1 +qemu-system-common==1:5.2+dfsg-11+deb11u2 +qemu-system-data==1:5.2+dfsg-11+deb11u2 +qemu-system-gui==1:5.2+dfsg-11+deb11u2 +qemu-system-x86==1:5.2+dfsg-11+deb11u2 +qemu-utils==1:5.2+dfsg-11+deb11u2 +qt5-gtk-platformtheme==5.15.2+dfsg-9 +qt5-qmake==5.15.2+dfsg-9 +qt5-qmake-bin==5.15.2+dfsg-9 +qtbase5-dev==5.15.2+dfsg-9 +qtbase5-dev-tools==5.15.2+dfsg-9 +qtchooser==66-2 +qttranslations5-l10n==5.15.2-2 +quilt==0.66-2.1 +rake==13.0.3-1 +readline-common==8.1-1 +rrdtool==1.7.2-3+b7 +rsync==3.2.3-4+deb11u1 +rsyslog==8.2102.0-2+deb11u1 +ruby==1:2.7+2 +ruby-all-dev==1:2.7+2 +ruby-asciidoctor==2.0.12-2 +ruby-minitest==5.13.0-1 +ruby-net-telnet==0.1.1-2 +ruby-power-assert==1.1.7-2 +ruby-rubygems==3.2.5-2 +ruby-test-unit==3.3.9-1 +ruby-xmlrpc==0.3.0-2 +ruby2.7==2.7.4-1+deb11u1 +ruby2.7-dev==2.7.4-1+deb11u1 +ruby2.7-doc==2.7.4-1+deb11u1 +rubygems-integration==1.18 +runit-helper==2.10.3 +sbsigntool==0.9.2-2 +seabios==1.14.0-2 +sensible-utils==0.0.14 +sgml-base==1.30 +sgml-data==2.0.11+nmu1 +sgmlspl==1.03ii-36 +shared-mime-info==2.0-1 +sharutils==1:4.15.2-5 +shellcheck==0.7.1-1+deb11u1 +slirp4netns==1.0.1-2 +software-properties-common==0.96.20.2-2.1 +sphinx-common==3.4.3-2 +sphinx-rtd-theme-common==0.5.1+dfsg-1 +squashfs-tools==1:4.4-2+deb11u2 +stgit==0.19-1 +strace==5.10-1 +sudo==1.9.5p2-3+deb11u1 +swig==4.0.2-1 +swig4.0==4.0.2-1 +systemd==247.3-7+deb11u1 +systemd-sysv==247.3-7+deb11u1 +systemd-timesyncd==247.3-7+deb11u1 +t1utils==1.41-4 +tcl==8.6.11+1 +tcl8.6==8.6.11+dfsg-1 +teckit==2.5.10+ds1-3 +telnet==0.17-42 +termit==3.1-1 +tex-common==6.16 +tex-gyre==20180621-3.1 +texi2html==1.82+dfsg1-6 +texinfo==6.7.0.dfsg.2-6 +texlive-base==2020.20210202-3 +texlive-binaries==2020.20200327.54578-7 +texlive-fonts-recommended==2020.20210202-3 +texlive-formats-extra==2020.20210202-3 +texlive-latex-base==2020.20210202-3 +texlive-latex-extra==2020.20210202-3 +texlive-latex-recommended==2020.20210202-3 +texlive-pictures==2020.20210202-3 +texlive-plain-generic==2020.20210202-3 +texlive-xetex==2020.20210202-3 +thin-provisioning-tools==0.9.0-1 +time==1.9-0.1 +tipa==2:1.3-20.1 +tk==8.6.11+1 +tk8.6==8.6.11-2 +tk8.6-blt2.5==2.5.3+dfsg-4.1 +ucf==3.0043 +unattended-upgrades==2.8 +unzip==6.0-26+deb11u1 +uuid-dev==2.36.1-8+deb11u1 +va-driver-all==2.10.0-1 +vdpau-driver-all==1.4-3 +velocity==1.7-6 +vim==2:8.2.2434-3+deb11u1 +vim-common==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 +wayland-protocols==1.20-1 +wdiff==1.2.2-2+b1 +wget==1.21-1+deb11u1 +x11-common==1:7.7+22 +x11-utils==7.7+5 +x11-xserver-utils==7.7+8 +x11proto-dev==2020.1-1 +x11proto-input-dev==2020.1-1 +x11proto-randr-dev==2020.1-1 +x11proto-record-dev==2020.1-1 +x11proto-xext-dev==2020.1-1 +x11proto-xinerama-dev==2020.1-1 +xauth==1:1.1-1 +xdelta==1.1.3-9.3 +xdelta3==3.0.11-dfsg-1+b1 +xdg-user-dirs==0.17-2 +xdg-utils==1.1.3-4.1 +xfonts-encodings==1:1.0.4-2.1 +xfonts-utils==1:7.7+6 +xkb-data==2.29-2 +xml-core==0.18+nmu1 +xorg-sgml-doctools==1:1.11-1.1 +xsltproc==1.1.34-4+deb11u1 +xtrans-dev==1.4.0-1 +xxd==2:8.2.2434-3+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 +zip==3.0-12 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..29fe1b59d419 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 @@ -0,0 +1,22 @@ +binutils-aarch64-linux-gnu==2.35.2-2 +binutils-arm-linux-gnueabihf==2.35.2-2 +cpp-10-arm-linux-gnueabihf==10.2.1-6cross1 +cpp-arm-linux-gnueabihf==4:10.2.1-1 +dctrl-tools==2.24-3 +dvipng==1.15-1.1 +gcc-10-arm-linux-gnueabihf==10.2.1-6cross1 +gcc-10-arm-linux-gnueabihf-base==10.2.1-6cross1 +gcc-10-cross-base==10.2.1-6cross1 +gcc-arm-linux-gnueabihf==4:10.2.1-1 +libasan6-armhf-cross==10.2.1-6cross1 +libatomic1-armhf-cross==10.2.1-6cross1 +libc6-armhf-cross==2.31-9cross4 +libgcc-10-dev-armhf-cross==10.2.1-6cross1 +libgcc-s1-armhf-cross==10.2.1-6cross1 +libgomp1-armhf-cross==10.2.1-6cross1 +libstdc++6-armhf-cross==10.2.1-6cross1 +libubsan1-armhf-cross==10.2.1-6cross1 +libxslt1-dev==1.1.34-4+deb11u1 +linux-headers-5.10.0-21-arm64==5.10.162-1 +linux-headers-arm64==5.10.162-1 +nodejs==14.21.3-deb-1nodesource1 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..a3be7dd829cb --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf @@ -0,0 +1,10 @@ +binutils-arm-linux-gnueabihf==2.35.2-2 +dctrl-tools==2.24-3 +dvipng==1.15-1.1 +golang-1.15-go==1.15.15-1~deb11u4 +golang-1.15-src==1.15.15-1~deb11u4 +libxslt1-dev==1.1.34-4+deb11u1 +linux-compiler-gcc-10-arm==5.10.162-1 +linux-headers-5.10.0-21-armmp==5.10.162-1 +linux-headers-armmp==5.10.162-1 +nodejs==14.21.3-deb-1nodesource1 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 b/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 new file mode 100644 index 000000000000..47d7ced0ed77 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 @@ -0,0 +1,111 @@ +alabaster==0.7.8 +astroid==2.5.1 +async-timeout==4.0.2 +attrs==20.3.0 +automat==20.2.0 +babel==2.8.0 +bcrypt==3.1.7 +beautifulsoup4==4.9.3 +bitarray==2.7.3 +certifi==2020.6.20 +chardet==4.0.0 +click==7.1.2 +colorama==0.4.4 +constantly==15.1.0 +cov-core==1.15.0 +coverage==5.1 +crc16==0.1.1 +cryptography==3.3.2 +ctypesgen==1.0.2 +dbus-python==1.2.16 +devscripts==2.21.3+deb11u1 +distro-info==1.0 +docutils==0.16 +fastentrypoints==0.12 +gbp==0.9.22 +gcovr==4.2 +gpg===1.14.0-unknown +html5lib==1.1 +hyperlink==19.0.0 +idna==2.10 +imagesize==1.2.0 +importlib-metadata==1.6.0 +incremental==17.5.0 +iniconfig==0.0.0 +ipaddr==2.2.0 +isort==5.6.4 +j2cli==0.3.10 +jinja2==2.11.3 +lazy-object-proxy==0.0.0 +logilab-common==1.8.1 +lxml==4.6.2 +m2crypto==0.36.0 +mako==1.1.3 +markdown==3.3.4 +markupsafe==1.1.1 +mccabe==0.6.1 +mmh3==2.5.1 +mock==5.0.1 +mockredispy==2.9.3 +more-itertools==4.2.0 +mypy-extensions==0.4.3 +nose==1.3.7 +nose2==0.9.2 +olefile==0.46 +packaging==20.9 +parameterized==0.8.1 +parse==1.6.6 +pexpect==4.8.0 +pillow==8.1.2 +pip==23.0.1 +pluggy==0.13.0 +ptyprocess==0.7.0 +py==1.10.0 +pyang==2.4.0 +pyangbind==0.8.1 +pyasn1==0.4.8 +pyasn1-modules==0.2.1 +pycurl==7.43.0.6 +pyfakefs==5.1.0 +pygments==2.7.1 +pygobject==3.38.0 +pyhamcrest==1.9.0 +pylint==2.7.2 +pympler==0.8 +pyopenssl==20.0.1 +pyparsing==2.4.7 +pytest==6.0.2 +pytest-cov==2.10.1 +pytest-runner==5.2 +python-apt==2.2.1 +python-dateutil==2.8.1 +python-debian==0.1.39 +python-magic==0.4.20 +pytz==2021.1 +pyxdg==0.27 +pyyaml==5.4.1 +redis==4.5.1 +regex==2022.10.31 +requests==2.25.1 +roman==2.0.0 +service-identity==18.1.0 +setuptools==49.6.0 +six==1.16.0 +snowballstemmer==2.1.0 +soupsieve==2.2.1 +sphinx==3.4.3 +sphinx-rtd-theme==0.5.1 +stdeb==0.10.0 +stgit==0.19 +toml==0.10.1 +twisted==20.3.0 +typing-extensions==3.7.4.3 +unattended-upgrades==0.1 +unidiff==0.5.5 +urllib3==1.26.5 +webencodings==0.5.1 +wheel==0.35.1 +wrapt==1.12.1 +xdg==5 +zipp==1.0.0 +zope.interface==5.2.0 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster new file mode 100644 index 000000000000..1f975ea9705b --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster @@ -0,0 +1,1777 @@ +adwaita-icon-theme==3.30.1-1 +ant==1.10.5-2 +ant-optional==1.10.5-2 +apparmor==2.13.2-10 +apt-file==3.2.2 +apt-transport-https==1.8.2.3 +apt-utils==1.8.2.3 +arch-test==0.15-2+deb10u1 +asciidoctor==1.5.8-1 +aspell==0.60.7~20110707-6+deb10u1 +aspell-en==2018.04.16-0-1 +at==3.1.23-1 +at-spi2-core==2.30.0-7 +auditd==1:2.8.4-3 +augeas-lenses==1.11.0-3 +augeas-tools==1.11.0-3 +autoconf==2.69-11 +autoconf-archive==20180313-1 +autogen==1:5.18.12-4 +autogen-doc==1:5.18.12-4 +automake==1:1.16.1-4 +autopoint==0.19.8.1-9 +autotools-dev==20180224.1 +bash-completion==1:2.8-6 +bc==1.07.1-2+b1 +bind9-host==1:9.11.5.P4+dfsg-5.1+deb10u8 +binfmt-support==2.2.0-2 +binutils==2.31.1-16 +binutils-common==2.31.1-16 +binutils-x86-64-linux-gnu==2.31.1-16 +bison==2:3.3.2.dfsg-1 +blt==2.5.3+dfsg-4 +bsd-mailx==8.1.2-0.20180807cvs-1 +bsdmainutils==11.1.2+b1 +build-essential==12.6 +byacc==20140715-1+b1 +bzip2==1.0.6-9.2~deb10u2 +bzip2-doc==1.0.6-9.2~deb10u2 +ca-certificates==20200601~deb10u2 +ca-certificates-java==20190405 +cdbs==0.4.159 +check==0.10.0-3+b3 +chrpath==0.16-2+b1 +clang==1:7.0-47 +clang-7==1:7.0.1-8+deb10u2 +cm-super-minimal==0.3.4-14 +cmake==3.13.4-1 +cmake-data==3.13.4-1 +cmocka-doc==1.1.3-1 +comerr-dev==2.1-1.44.5-1+deb10u3 +containerd.io==1.6.18-1 +cowbuilder==0.88 +cowdancer==0.88 +cpio==2.12+dfsg-9 +cpp==4:8.3.0-1 +cpp-8==8.3.0-6 +cppcheck==1.86-1 +cron==3.0pl1-134+deb10u1 +curl==7.64.0-4+deb10u4 +dbus==1.12.24-0+deb10u1 +dbus-user-session==1.12.24-0+deb10u1 +dconf-gsettings-backend==0.30.1-2 +dconf-service==0.30.1-2 +dctrl-tools==2.24-3 +debhelper==13.3.3~bpo10+1 +debian-keyring==2019.02.25 +debootstrap==1.0.114+deb10u1 +default-jdk-headless==2:1.11-71 +default-jre==2:1.11-71 +default-jre-headless==2:1.11-71 +default-libmysqlclient-dev==1.0.5 +device-tree-compiler==1.4.7-4 +devscripts==2.19.5+deb10u1 +dh-apparmor==2.13.2-10 +dh-autoreconf==19 +dh-exec==0.23.1 +dh-make==2.201802 +dh-python==3.20190308 +dh-strip-nondeterminism==1.1.2-1 +dh-systemd==12.1.1 +dictionaries-common==1.28.1 +diffstat==1.62-1 +dirmngr==2.2.12-1+deb10u2 +distro-info-data==0.41+deb10u6 +dkms==2.6.1-4 +dmeventd==2:1.02.155-3 +dmsetup==2:1.02.155-3 +dnsutils==1:9.11.5.P4+dfsg-5.1+deb10u8 +docbook==4.5-6 +docbook-dsssl==1.79-9.1 +docbook-to-man==1:2.0.0-42 +docbook-utils==0.6.14-3.3 +docbook-xml==4.5-8 +docker-ce==5:20.10.21~3-0~debian-buster +docker-ce-cli==5:20.10.21~3-0~debian-buster +docker-ce-rootless-extras==5:23.0.1-1~debian.10~buster +docker-scan-plugin==0.23.0~debian-buster +docutils-common==0.14+dfsg-4 +docutils-doc==0.14+dfsg-4 +dosfstools==4.1-2 +doxygen==1.8.13-10 +dpatch==2.0.38+nmu1 +dpkg-dev==1.19.8 +dput==1.0.3 +dvipng==1.15-1.1 +dwz==0.13-5~bpo10+1 +eatmydata==105-7 +emacsen-common==3.0.4 +equivs==2.2.0 +exim4-base==4.92-8+deb10u7 +exim4-config==4.92-8+deb10u7 +exim4-daemon-light==4.92-8+deb10u7 +expat==2.2.6-2+deb10u6 +exuberant-ctags==1:5.9~svn20110310-12+deb10u1 +fakeroot==1.23-1 +file==1:5.35-4+deb10u2 +flex==2.6.4-6.2 +fontconfig==2.13.1-2 +fontconfig-config==2.13.1-2 +fonts-dejavu-core==2.37-1 +fonts-dejavu-extra==2.37-1 +fonts-droid-fallback==1:6.0.1r16-1.1 +fonts-font-awesome==5.0.10+really4.7.0~dfsg-1 +fonts-glyphicons-halflings==1.009~3.4.1+dfsg-1 +fonts-lato==2.0-2 +fonts-liberation==1:1.07.4-9 +fonts-lmodern==2.004.5-6 +fonts-noto-mono==20181227-1 +fonts-roboto-slab==1.100263+20170512-1 +fonts-texgyre==20180621-3 +g++==4:8.3.0-1 +g++-8==8.3.0-6 +gawk==1:4.2.1+dfsg-1 +gcc==4:8.3.0-1 +gcc-8==8.3.0-6 +gcc-8-multilib==8.3.0-6 +gcc-multilib==4:8.3.0-1 +gcovr==4.1-2 +gdb==8.2.1-2+b3 +gem2deb==0.43 +gem2deb-test-runner==0.43 +geoip-database==20181108-1 +gettext==0.19.8.1-9 +gettext-base==0.19.8.1-9 +gfortran==4:8.3.0-1 +gfortran-8==8.3.0-6 +ghostscript==9.27~dfsg-2+deb10u6 +gir1.2-atk-1.0==2.30.0-2 +gir1.2-atspi-2.0==2.30.0-7 +gir1.2-freedesktop==1.58.3-2 +gir1.2-gdkpixbuf-2.0==2.38.1+dfsg-1 +gir1.2-glib-2.0==1.58.3-2 +gir1.2-gtk-3.0==3.24.5-1 +gir1.2-harfbuzz-0.0==2.3.1-1 +gir1.2-packagekitglib-1.0==1.1.12-5 +gir1.2-pango-1.0==1.42.4-8~deb10u1 +git==1:2.20.1-2+deb10u7 +git-buildpackage==0.9.14 +git-man==1:2.20.1-2+deb10u7 +glib-networking==2.58.0-2+deb10u2 +glib-networking-common==2.58.0-2+deb10u2 +glib-networking-services==2.58.0-2+deb10u2 +gnupg==2.2.12-1+deb10u2 +gnupg-l10n==2.2.12-1+deb10u2 +gnupg-utils==2.2.12-1+deb10u2 +gnupg2==2.2.12-1+deb10u2 +gobject-introspection==1.58.3-2 +googletest==1.8.1-3 +gpg==2.2.12-1+deb10u2 +gpg-agent==2.2.12-1+deb10u2 +gpg-wks-client==2.2.12-1+deb10u2 +gpg-wks-server==2.2.12-1+deb10u2 +gpgconf==2.2.12-1+deb10u2 +gpgsm==2.2.12-1+deb10u2 +graphviz==2.40.1-6+deb10u1 +groff==1.22.4-3+deb10u1 +groff-base==1.22.4-3+deb10u1 +gsettings-desktop-schemas==3.28.1-1 +gsfonts==1:8.11+urwcyr1.0.7~pre44-4.4 +gstreamer1.0-libav==1.15.0.1+git20180723+db823502-2+deb10u1 +gstreamer1.0-plugins-base==1.14.4-2+deb10u1 +gstreamer1.0-plugins-good==1.14.4-1+deb10u2 +gstreamer1.0-plugins-ugly==1.14.4-1+deb10u1 +gstreamer1.0-x==1.14.4-2+deb10u1 +gtk-update-icon-cache==3.24.5-1 +guile-2.0-libs==2.0.13+1-5.1 +hicolor-icon-theme==0.17-2 +i965-va-driver==2.3.0+dfsg1-1 +ibverbs-providers==22.1-1 +icc-profiles-free==2.0.1+dfsg-1 +icu-devtools==63.1-6+deb10u3 +imagemagick==8:6.9.10.23+dfsg-2.1+deb10u1 +imagemagick-6-common==8:6.9.10.23+dfsg-2.1+deb10u1 +imagemagick-6.q16==8:6.9.10.23+dfsg-2.1+deb10u1 +install-info==6.5.0.dfsg.1-4+b1 +intel-media-va-driver==18.4.1+dfsg1-1 +intltool-debian==0.35.0+20060710.5 +iptables==1.8.2-4 +iptables-dev==1.8.2-4 +ipxe-qemu==1.0.0+git-20190125.36a4c85-1 +iso-codes==4.2-1 +java-common==0.71 +java-wrappers==0.3 +javahelper==0.72.9 +javascript-common==11 +jq==1.5+dfsg-2+b1 +kernel-wedge==2.99 +kmod==26-1 +krb5-locales==1.17-3+deb10u5 +krb5-multidev==1.17-3+deb10u5 +lcov==1.13-4 +less==487-0.1+b1 +lib32asan5==8.3.0-6 +lib32atomic1==8.3.0-6 +lib32gcc-8-dev==8.3.0-6 +lib32gcc1==1:8.3.0-6 +lib32gomp1==8.3.0-6 +lib32itm1==8.3.0-6 +lib32mpx2==8.3.0-6 +lib32quadmath0==8.3.0-6 +lib32stdc++6==8.3.0-6 +lib32ubsan1==8.3.0-6 +liba52-0.7.4==0.7.4-19 +libaa1==1.4p5-46 +libaacs0==0.9.0-2 +libaio1==0.3.112-3 +libalgorithm-c3-perl==0.10-1 +libalgorithm-diff-perl==1.19.03-2 +libalgorithm-diff-xs-perl==0.04-5+b1 +libalgorithm-merge-perl==0.08-3 +libaom0==1.0.0-3 +libaopalliance-java==20070526-6 +libapache-pom-java==18-1 +libapparmor1==2.13.2-10 +libappconfig-perl==1.71-2 +libappstream4==0.12.5-1 +libapt-inst2.0==1.8.2.3 +libapt-pkg-perl==0.1.34+b1 +libarchive-cpio-perl==0.10-1 +libarchive-zip-perl==1.64-1 +libarchive13==3.3.3-4+deb10u3 +libargon2-1==0~20171227-0.2 +libasan5==8.3.0-6 +libasm-java==7.0-1 +libasound2==1.1.8-1 +libasound2-data==1.1.8-1 +libaspell15==0.60.7~20110707-6+deb10u1 +libass9==1:0.14.0-2 +libassuan0==2.5.2-1 +libasync-mergepoint-perl==0.04-2 +libasyncns0==0.8-6 +libatinject-jsr330-api-java==1.0+ds1-5 +libatk-bridge2.0-0==2.30.0-5 +libatk-bridge2.0-dev==2.30.0-5 +libatk-wrapper-java==0.33.3-22+deb10u1 +libatk-wrapper-java-jni==0.33.3-22+deb10u1 +libatk1.0-0==2.30.0-2 +libatk1.0-data==2.30.0-2 +libatk1.0-dev==2.30.0-2 +libatm1==1:2.5.1-2 +libatm1-dev==1:2.5.1-2 +libatomic1==8.3.0-6 +libatspi2.0-0==2.30.0-7 +libatspi2.0-dev==2.30.0-7 +libaudio2==1.9.4-6 +libaudit-dev==1:2.8.4-3 +libaugeas0==1.11.0-3 +libauparse-dev==1:2.8.4-3 +libauparse0==1:2.8.4-3 +libauthen-sasl-perl==2.1600-1 +libavahi-client3==0.7-4+deb10u1 +libavahi-common-data==0.7-4+deb10u1 +libavahi-common3==0.7-4+deb10u1 +libavalon-framework-java==4.2.0-10 +libavc1394-0==0.5.4-5 +libavcodec58==7:4.1.10-0+deb10u1 +libavfilter7==7:4.1.10-0+deb10u1 +libavformat58==7:4.1.10-0+deb10u1 +libavutil56==7:4.1.10-0+deb10u1 +libb-hooks-endofscope-perl==0.24-1 +libb-hooks-op-check-perl==0.22-1+b1 +libbabeltrace-dev==1.5.6-2+deb10u1 +libbabeltrace1==1.5.6-2+deb10u1 +libbatik-java==1.10-2+deb10u2 +libbdplus0==0.1.2-3 +libbind-export-dev==1:9.11.5.P4+dfsg-5.1+deb10u8 +libbind9-161==1:9.11.5.P4+dfsg-5.1+deb10u8 +libbinutils==2.31.1-16 +libbison-dev==2:3.3.2.dfsg-1 +libbit-vector-perl==7.4-1+b5 +libblkid-dev==2.33.1-0.1 +libbluetooth3==5.50-1.2~deb10u3 +libbluray2==1:1.1.0-1+deb10u1 +libboost-atomic1.71-dev==1.71.0-6~bpo10+1 +libboost-atomic1.71.0==1.71.0-6~bpo10+1 +libboost-chrono1.71-dev==1.71.0-6~bpo10+1 +libboost-chrono1.71.0==1.71.0-6~bpo10+1 +libboost-container1.71-dev==1.71.0-6~bpo10+1 +libboost-container1.71.0==1.71.0-6~bpo10+1 +libboost-context1.71-dev==1.71.0-6~bpo10+1 +libboost-context1.71.0==1.71.0-6~bpo10+1 +libboost-contract1.71-dev==1.71.0-6~bpo10+1 +libboost-contract1.71.0==1.71.0-6~bpo10+1 +libboost-coroutine1.71-dev==1.71.0-6~bpo10+1 +libboost-coroutine1.71.0==1.71.0-6~bpo10+1 +libboost-date-time1.71-dev==1.71.0-6~bpo10+1 +libboost-date-time1.71.0==1.71.0-6~bpo10+1 +libboost-fiber1.71-dev==1.71.0-6~bpo10+1 +libboost-fiber1.71.0==1.71.0-6~bpo10+1 +libboost-filesystem1.71-dev==1.71.0-6~bpo10+1 +libboost-filesystem1.71.0==1.71.0-6~bpo10+1 +libboost-graph-parallel1.71-dev==1.71.0-6~bpo10+1 +libboost-graph-parallel1.71.0==1.71.0-6~bpo10+1 +libboost-log1.71-dev==1.71.0-6~bpo10+1 +libboost-log1.71.0==1.71.0-6~bpo10+1 +libboost-mpi1.71.0==1.71.0-6~bpo10+1 +libboost-program-options1.71-dev==1.71.0-6~bpo10+1 +libboost-program-options1.71.0==1.71.0-6~bpo10+1 +libboost-regex1.71-dev==1.71.0-6~bpo10+1 +libboost-regex1.71.0==1.71.0-6~bpo10+1 +libboost-serialization1.71-dev==1.71.0-6~bpo10+1 +libboost-serialization1.71.0==1.71.0-6~bpo10+1 +libboost-system1.71-dev==1.71.0-6~bpo10+1 +libboost-system1.71.0==1.71.0-6~bpo10+1 +libboost-test1.71-dev==1.71.0-6~bpo10+1 +libboost-test1.71.0==1.71.0-6~bpo10+1 +libboost-thread1.71-dev==1.71.0-6~bpo10+1 +libboost-thread1.71.0==1.71.0-6~bpo10+1 +libboost1.71-dev==1.71.0-6~bpo10+1 +libbpf-dev==1:0.3-2~bpo10+1 +libbpf0==1:0.3-2~bpo10+1 +libbrlapi0.6==5.6-10+deb10u1 +libbrotli1==1.0.7-2+deb10u1 +libbs2b0==3.1.0+dfsg-2.2 +libbsd-dev==0.9.1-2+deb10u1 +libbsd0==0.9.1-2+deb10u1 +libbsh-java==2.0b4-19 +libbz2-dev==1.0.6-9.2~deb10u2 +libc-ares-dev==1.14.0-1+deb10u2 +libc-ares2==1.14.0-1+deb10u2 +libc-dev-bin==2.28-10+deb10u2 +libc-l10n==2.28-10+deb10u2 +libc6-dbg==2.28-10+deb10u2 +libc6-dev==2.28-10+deb10u2 +libc6-dev-i386==2.28-10+deb10u2 +libc6-dev-x32==2.28-10+deb10u2 +libc6-i386==2.28-10+deb10u2 +libc6-x32==2.28-10+deb10u2 +libcaca0==0.99.beta19-2.1 +libcacard0==1:2.6.1-1 +libcaf-openmpi-3==2.4.0-2 +libcairo-gobject2==1.16.0-4+deb10u1 +libcairo-script-interpreter2==1.16.0-4+deb10u1 +libcairo2==1.16.0-4+deb10u1 +libcairo2-dev==1.16.0-4+deb10u1 +libcap-dev==1:2.25-2 +libcap-ng-dev==0.7.9-2 +libcapstone3==4.0.1+really+3.0.5-1 +libcapture-tiny-perl==0.48-1 +libcarp-clan-perl==6.07-1 +libcc1-0==8.3.0-6 +libcdi-api-java==1.2-2 +libcdio18==2.0.0-2 +libcdparanoia0==3.10.2+debian-13 +libcdt5==2.40.1-6+deb10u1 +libcgi-fast-perl==1:2.13-1 +libcgi-pm-perl==4.40-1 +libcglib-java==3.2.10-1 +libcgraph6==2.40.1-6+deb10u1 +libchromaprint1==1.4.3-3 +libcjson-dev==1.7.10-1.1+deb10u1 +libcjson1==1.7.10-1.1+deb10u1 +libclang-common-7-dev==1:7.0.1-8+deb10u2 +libclang1-6.0==1:6.0.1-10 +libclang1-7==1:7.0.1-8+deb10u2 +libclass-accessor-perl==0.51-1 +libclass-c3-perl==0.34-1 +libclass-c3-xs-perl==0.14-1+b3 +libclass-inspector-perl==1.32-1 +libclass-load-perl==0.25-1 +libclass-load-xs-perl==0.10-1+b3 +libclass-method-modifiers-perl==2.12-1 +libclass-tiny-perl==1.006-1 +libclass-xsaccessor-perl==1.19-3+b2 +libclone-perl==0.41-1+b1 +libcmocka-dev==1.1.3-1 +libcmocka0==1.1.3-1 +libcoarrays-dev==2.4.0-2 +libcoarrays-openmpi-dev==2.4.0-2 +libcodec2-0.8.1==0.8.1-2 +libcolord2==1.4.3-4 +libcommon-sense-perl==3.74-2+b7 +libcommons-beanutils-java==1.9.3-1 +libcommons-cli-java==1.4-1 +libcommons-codec-java==1.11-1 +libcommons-collections3-java==3.2.2-2 +libcommons-compress-java==1.18-2+deb10u1 +libcommons-configuration-java==1.10-5 +libcommons-digester-java==1.8.1-5 +libcommons-io-java==2.6-2+deb10u1 +libcommons-lang-java==2.6-8 +libcommons-lang3-java==3.8-2 +libcommons-logging-java==1.2-2 +libcommons-parent-java==43-1 +libcommons-validator-java==1:1.6-2 +libconst-fast-perl==0.014-1 +libcontextual-return-perl==0.004014-2 +libconvert-binhex-perl==1.125-1 +libcroco3==0.6.12-3 +libcryptsetup12==2:2.1.0-5+deb10u2 +libcrystalhd3==1:0.0~git20110715.fdd2f19-13 +libcunit1==2.1-3-dfsg-2+b12 +libcunit1-dev==2.1-3-dfsg-2+b12 +libcups2==2.2.10-6+deb10u6 +libcupsfilters1==1.21.6-5 +libcupsimage2==2.2.10-6+deb10u6 +libcurl3-gnutls==7.64.0-4+deb10u4 +libcurl3-nss==7.64.0-4+deb10u4 +libcurl4==7.64.0-4+deb10u4 +libcurl4-nss-dev==7.64.0-4+deb10u4 +libdaemon-dev==0.14-7 +libdaemon0==0.14-7 +libdata-dump-perl==1.23-1 +libdata-optlist-perl==0.110-1 +libdatrie1==0.2.12-2 +libdb-dev==5.3.1+nmu1 +libdb5.3-dev==5.3.28+dfsg1-0.5 +libdbi1==0.9.0-5 +libdbus-1-3==1.12.24-0+deb10u1 +libdbus-1-dev==1.12.24-0+deb10u1 +libdbus-glib-1-2==0.110-4 +libdbus-glib-1-dev==0.110-4 +libdbus-glib-1-dev-bin==0.110-4 +libdconf1==0.30.1-2 +libde265-0==1.0.3-1+deb10u3 +libdebhelper-perl==13.3.3~bpo10+1 +libdevel-callchecker-perl==0.008-1 +libdevel-caller-perl==2.06-2+b1 +libdevel-globaldestruction-perl==0.14-1 +libdevel-lexalias-perl==0.05-2+b1 +libdevel-overloadinfo-perl==0.005-1 +libdevel-partialdump-perl==0.20-1 +libdevel-stacktrace-perl==2.0300-1 +libdevmapper-event1.02.1==2:1.02.155-3 +libdevmapper1.02.1==2:1.02.155-3 +libdigest-bubblebabble-perl==0.02-2 +libdigest-hmac-perl==1.03+dfsg-2 +libdist-checkconflicts-perl==0.11-1 +libdistro-info-perl==0.21 +libdjvulibre-text==3.5.27.1-10+deb10u1 +libdjvulibre21==3.5.27.1-10+deb10u1 +libdns-export1104==1:9.11.5.P4+dfsg-5.1+deb10u8 +libdns1104==1:9.11.5.P4+dfsg-5.1+deb10u8 +libdom4j-java==2.1.1-2 +libdouble-conversion1==3.1.0-3 +libdoxia-core-java==1.7-2 +libdoxia-java==1.7-2 +libdoxia-sitetools-java==1.7.5-1 +libdpkg-perl==1.19.8 +libdrm-amdgpu1==2.4.97-1 +libdrm-common==2.4.97-1 +libdrm-dev==2.4.97-1 +libdrm-intel1==2.4.97-1 +libdrm-nouveau2==2.4.97-1 +libdrm-radeon1==2.4.97-1 +libdrm2==2.4.97-1 +libdv4==1.0.0-12 +libdvdnav4==6.0.0-1 +libdvdread4==6.0.1-1 +libdw-dev==0.176-1.1 +libdw1==0.176-1.1 +libdynaloader-functions-perl==0.003-1 +libeatmydata1==105-7 +libedit-dev==3.1-20181209-1 +libedit2==3.1-20181209-1 +libegl-mesa0==18.3.6-2+deb10u1 +libegl1==1.1.0-1 +libegl1-mesa-dev==18.3.6-2+deb10u1 +libel-api-java==3.0.0-2+deb10u1 +libelf-dev==0.176-1.1 +libemail-valid-perl==1.202-1 +libencode-locale-perl==1.05-1 +libepoxy-dev==1.5.3-0.1 +libepoxy0==1.5.3-0.1 +liberror-perl==0.17027-2 +libestr0==0.1.10-2.1 +libeval-closure-perl==0.14-1 +libevdev2==1.6.0+dfsg-1 +libevent-2.1-6==2.1.8-stable-4 +libevent-core-2.1-6==2.1.8-stable-4 +libevent-dev==2.1.8-stable-4 +libevent-extra-2.1-6==2.1.8-stable-4 +libevent-openssl-2.1-6==2.1.8-stable-4 +libevent-pthreads-2.1-6==2.1.8-stable-4 +libexpat1==2.2.6-2+deb10u6 +libexpat1-dev==2.2.6-2+deb10u6 +libexplain-dev==1.4.D001-8 +libexplain51==1.4.D001-8 +libexporter-tiny-perl==1.002001-1 +libfabric1==1.6.2-3 +libfakeroot==1.23-1 +libfastjson4==0.99.8-2 +libfcgi-perl==0.78-2+b3 +libfdt1==1.4.7-4 +libffi-dev==3.2.1-9 +libfftw3-double3==3.3.8-2 +libfile-basedir-perl==0.08-1 +libfile-chdir-perl==0.1008-1 +libfile-desktopentry-perl==0.22-1 +libfile-fcntllock-perl==0.22-3+b5 +libfile-homedir-perl==1.004-1 +libfile-listing-perl==6.04-1 +libfile-mimeinfo-perl==0.29-1 +libfile-stripnondeterminism-perl==1.1.2-1 +libfile-which-perl==1.23-1 +libfl-dev==2.6.4-6.2 +libfl2==2.6.4-6.2 +libflac8==1.3.2-3+deb10u2 +libflite1==2.1-release-3 +libfont-afm-perl==1.20-2 +libfontbox2-java==2.0.13-2 +libfontconfig1==2.13.1-2 +libfontconfig1-dev==2.13.1-2 +libfontenc1==1:1.1.3-1+b2 +libfop-java==1:2.3-2 +libfreetype6==2.9.1-3+deb10u3 +libfreetype6-dev==2.9.1-3+deb10u3 +libfribidi-dev==1.0.5-3.1+deb10u2 +libfribidi0==1.0.5-3.1+deb10u2 +libfstrm0==0.4.0-1 +libfuture-perl==0.39-1 +libgail-common==2.24.32-3 +libgail18==2.24.32-3 +libgbm1==18.3.6-2+deb10u1 +libgc1c2==1:7.6.4-0.4 +libgcc-8-dev==8.3.0-6 +libgd-perl==2.71-2 +libgd3==2.2.5-5.2 +libgdbm-compat4==1.18.1-4 +libgdbm6==1.18.1-4 +libgdk-pixbuf2.0-0==2.38.1+dfsg-1 +libgdk-pixbuf2.0-bin==2.38.1+dfsg-1 +libgdk-pixbuf2.0-common==2.38.1+dfsg-1 +libgdk-pixbuf2.0-dev==2.38.1+dfsg-1 +libgeoip1==1.6.12-1 +libgeronimo-annotation-1.3-spec-java==1.0-1 +libgeronimo-interceptor-3.0-spec-java==1.0.1-4 +libgetopt-long-descriptive-perl==0.103-2 +libgfortran-8-dev==8.3.0-6 +libgfortran5==8.3.0-6 +libgif7==5.1.4-3+deb10u1 +libgirepository-1.0-1==1.58.3-2 +libgirepository1.0-dev==1.58.3-2 +libgit-wrapper-perl==0.048-1 +libgitlab-api-v4-perl==0.16-1 +libgl1==1.1.0-1 +libgl1-mesa-dev==18.3.6-2+deb10u1 +libgl1-mesa-dri==18.3.6-2+deb10u1 +libglapi-mesa==18.3.6-2+deb10u1 +libgles1==1.1.0-1 +libgles2==1.1.0-1 +libglib2.0-0==2.58.3-2+deb10u4 +libglib2.0-bin==2.58.3-2+deb10u4 +libglib2.0-data==2.58.3-2+deb10u4 +libglib2.0-dev==2.58.3-2+deb10u4 +libglib2.0-dev-bin==2.58.3-2+deb10u4 +libglu1-mesa==9.0.0-2.1+b3 +libglu1-mesa-dev==9.0.0-2.1+b3 +libglvnd-core-dev==1.1.0-1 +libglvnd-dev==1.1.0-1 +libglvnd0==1.1.0-1 +libglx-mesa0==18.3.6-2+deb10u1 +libglx0==1.1.0-1 +libgme0==0.6.2-1 +libgmock-dev==1.8.1-3 +libgmp-dev==2:6.1.2+dfsg-4+deb10u1 +libgmpxx4ldbl==2:6.1.2+dfsg-4+deb10u1 +libgnutls-dane0==3.6.7-4+deb10u10 +libgnutls-openssl27==3.6.7-4+deb10u10 +libgnutls28-dev==3.6.7-4+deb10u10 +libgnutls30==3.6.7-4+deb10u10 +libgnutlsxx28==3.6.7-4+deb10u10 +libgomp1==8.3.0-6 +libgoogle-perftools4==2.7-1 +libgpgme11==1.12.0-6 +libgpm2==1.20.7-5 +libgraphite2-3==1.3.13-7 +libgraphite2-dev==1.3.13-7 +libgs9==9.27~dfsg-2+deb10u6 +libgs9-common==9.27~dfsg-2+deb10u6 +libgsm1==1.0.18-2 +libgssapi-krb5-2==1.17-3+deb10u5 +libgssrpc4==1.17-3+deb10u5 +libgstreamer-plugins-base1.0-0==1.14.4-2+deb10u1 +libgstreamer1.0-0==1.14.4-1 +libgtest-dev==1.8.1-3 +libgtk-3-0==3.24.5-1 +libgtk-3-bin==3.24.5-1 +libgtk-3-common==3.24.5-1 +libgtk-3-dev==3.24.5-1 +libgtk2.0-0==2.24.32-3 +libgtk2.0-bin==2.24.32-3 +libgtk2.0-common==2.24.32-3 +libgts-0.7-5==0.7.6+darcs121130-4 +libgts-bin==0.7.6+darcs121130-4 +libguava-java==19.0-1 +libgudev-1.0-0==232-2 +libguice-java==4.2.1-1 +libgvc6==2.40.1-6+deb10u1 +libgvpr2==2.40.1-6+deb10u1 +libharfbuzz-dev==2.3.1-1 +libharfbuzz-gobject0==2.3.1-1 +libharfbuzz-icu0==2.3.1-1 +libharfbuzz0b==2.3.1-1 +libhawtjni-runtime-java==1.16-1 +libheif1==1.3.2-2~deb10u1 +libhiredis-dev==0.14.0-3 +libhiredis0.14==0.14.0-3 +libhtml-form-perl==6.03-1 +libhtml-format-perl==2.12-1 +libhtml-parser-perl==3.72-3+b3 +libhtml-tagset-perl==3.20-3 +libhtml-tree-perl==5.07-2 +libhttp-cookies-perl==6.04-1 +libhttp-daemon-perl==6.01-3+deb10u1 +libhttp-date-perl==6.02-1 +libhttp-message-perl==6.18-1 +libhttp-negotiate-perl==6.01-1 +libhttp-tiny-multipart-perl==0.08-1 +libhttpclient-java==4.5.7-1+deb10u1 +libhttpcore-java==4.4.11-1 +libhwloc-dev==1.11.12-3 +libhwloc-plugins==1.11.12-3 +libhwloc5==1.11.12-3 +libiberty-dev==20190122-1 +libibverbs-dev==22.1-1 +libibverbs1==22.1-1 +libice-dev==2:1.0.9-2 +libice6==2:1.0.9-2 +libicu-dev==63.1-6+deb10u3 +libicu63==63.1-6+deb10u3 +libidn11==1.33-2.2 +libidn2-dev==2.0.5-1+deb10u1 +libiec61883-0==1.2.0-3 +libigdgmm5==18.4.1+ds1-1 +libijs-0.35==0.35-14 +libilmbase23==2.2.1-2 +libimagequant0==2.12.2-1.1 +libimport-into-perl==1.002005-1 +libinput-bin==1.12.6-2+deb10u1 +libinput10==1.12.6-2+deb10u1 +libio-async-perl==0.72-1 +libio-html-perl==1.001-1 +libio-prompter-perl==0.004015-1 +libio-pty-perl==1:1.08-1.1+b5 +libio-sessiondata-perl==1.03-1 +libio-socket-ssl-perl==2.060-3 +libio-string-perl==1.08-3 +libio-stringy-perl==2.111-3 +libip4tc-dev==1.8.2-4 +libip4tc0==1.8.2-4 +libip6tc-dev==1.8.2-4 +libip6tc0==1.8.2-4 +libipc-run-perl==20180523.0-1 +libipc-system-simple-perl==1.25-4 +libipt2==2.0-2 +libiptc-dev==1.8.2-4 +libiptc0==1.8.2-4 +libirs-export161==1:9.11.5.P4+dfsg-5.1+deb10u8 +libirs161==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisc-export1100==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisc1100==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisccc-export161==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisccc161==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisccfg-export163==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisccfg163==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisl19==0.20-2 +libitext1-java==1.4-7 +libitm1==8.3.0-6 +libjack-jackd2-0==1.9.12~dfsg-2 +libjansi-java==1.17.1-1 +libjansi-native-java==1.8-1 +libjansson-dev==2.12-1 +libjansson4==2.12-1 +libjaxen-java==1.1.6-4 +libjaxp1.3-java==1.3.05-5 +libjbig0==2.1-3.1+b2 +libjbig2dec0==0.16-1+deb10u1 +libjemalloc-dev==5.1.0-3 +libjemalloc2==5.1.0-3 +libjetty9-java==9.4.16-0+deb10u2 +libjpeg62-turbo==1:1.5.2-2+deb10u1 +libjq1==1.5+dfsg-2+b1 +libjs-bootstrap==3.4.1+dfsg-1 +libjs-jquery==3.3.1~dfsg-3+deb10u1 +libjs-jquery-hotkeys==0~20130707+git2d51e3a9+dfsg-2 +libjs-jquery-isonscreen==1.2.0-1 +libjs-jquery-metadata==12-1.1 +libjs-jquery-tablesorter==1:2.31.1+dfsg1-1 +libjs-jquery-throttle-debounce==1.1+dfsg.1-1 +libjs-modernizr==2.6.2+ds1-3 +libjs-sphinxdoc==1.8.4-1 +libjs-underscore==1.9.1~dfsg-1+deb10u1 +libjson-c-dev==0.12.1+ds-2+deb10u1 +libjson-c3==0.12.1+ds-2+deb10u1 +libjson-glib-1.0-0==1.4.4-2 +libjson-glib-1.0-common==1.4.4-2 +libjson-perl==4.02000-1 +libjson-xs-perl==3.040-1+b1 +libjsoncpp1==1.7.4-3 +libjsp-api-java==2.3.4-2+deb10u1 +libjsr305-java==0.1~+svn49-11 +libjtidy-java==7+svn20110807-5 +libjudy-dev==1.0.5-5 +libjudydebian1==1.0.5-5 +libjxr-tools==1.1-6+b1 +libjxr0==1.1-6+b1 +libk5crypto3==1.17-3+deb10u5 +libkadm5clnt-mit11==1.17-3+deb10u5 +libkadm5srv-mit11==1.17-3+deb10u5 +libkdb5-9==1.17-3+deb10u5 +libkeyutils1==1.6-6 +libkmod2==26-1 +libkpathsea6==2018.20181218.49446-1 +libkrb5-3==1.17-3+deb10u5 +libkrb5-dev==1.17-3+deb10u5 +libkrb5support0==1.17-3+deb10u5 +libksba8==1.3.5-2+deb10u2 +liblab-gamut1==2.40.1-6+deb10u1 +liblcms2-2==2.9-3 +libldap-2.4-2==2.4.47+dfsg-3+deb10u7 +libldap-common==2.4.47+dfsg-3+deb10u7 +libldap2-dev==2.4.47+dfsg-3+deb10u7 +liblilv-0-0==0.24.2~dfsg0-2 +liblist-compare-perl==0.53-1 +liblist-moreutils-perl==0.416-1+b4 +libllvm6.0==1:6.0.1-10 +libllvm7==1:7.0.1-8+deb10u2 +liblmdb0==0.9.22-1 +liblocale-gettext-perl==1.07-3+b4 +liblockfile-bin==1.14-1.1 +liblockfile1==1.14-1.1 +liblog-any-adapter-screen-perl==0.140-1 +liblog-any-perl==1.707-1 +liblog4j1.2-java==1.2.17-8+deb10u2 +liblognorm5==2.0.5-1 +liblqr-1-0==0.4.2-2.1 +liblsan0==8.3.0-6 +libltdl-dev==2.4.6-9 +libltdl7==2.4.6-9 +liblua5.1-0==5.1.5-8.1+b2 +liblua5.1-0-dev==5.1.5-8.1+b2 +liblvm2cmd2.03==2.03.02-3 +liblwp-mediatypes-perl==6.02-1 +liblwp-protocol-https-perl==6.07-2 +liblwres161==1:9.11.5.P4+dfsg-5.1+deb10u8 +liblzma-dev==5.2.4-1+deb10u1 +liblzo2-2==2.10-0.1 +liblzo2-dev==2.10-0.1 +libmagic-mgc==1:5.35-4+deb10u2 +libmagic1==1:5.35-4+deb10u2 +libmagickcore-6.q16-6==8:6.9.10.23+dfsg-2.1+deb10u1 +libmagickcore-6.q16-6-extra==8:6.9.10.23+dfsg-2.1+deb10u1 +libmagickwand-6.q16-6==8:6.9.10.23+dfsg-2.1+deb10u1 +libmail-sendmail-perl==0.80-1 +libmailtools-perl==2.18-1 +libmariadb-dev==1:10.3.38-0+deb10u1 +libmariadb-dev-compat==1:10.3.38-0+deb10u1 +libmariadb3==1:10.3.38-0+deb10u1 +libmaven-archiver-java==3.2.0-2 +libmaven-clean-plugin-java==3.1.0-1 +libmaven-common-artifact-filters-java==3.0.1-3 +libmaven-compiler-plugin-java==3.8.0-2 +libmaven-filtering-java==3.1.1-1 +libmaven-jar-plugin-java==3.1.1-1 +libmaven-parent-java==31-2 +libmaven-plugin-tools-java==3.6.0-1 +libmaven-reporting-api-java==3.0-1 +libmaven-reporting-exec-java==1.4-2 +libmaven-reporting-impl-java==3.0.0-2 +libmaven-resolver-java==1.3.1-1 +libmaven-resources-plugin-java==3.1.0-1 +libmaven-shared-incremental-java==1.1-3 +libmaven-shared-utils-java==3.3.0-1+deb10u1 +libmaven-site-plugin-java==3.6-3 +libmaven3-core-java==3.6.0-1 +libmime-tools-perl==5.509-1 +libmng1==1.0.10+dfsg-3.1+b5 +libmnl-dev==1.0.4-2 +libmodule-implementation-perl==0.09-1 +libmodule-runtime-conflicts-perl==0.003-1 +libmodule-runtime-perl==0.016-1 +libmoo-perl==2.003004-2 +libmoose-perl==2.2011-1+b1 +libmoosex-aliases-perl==0.11-1 +libmount-dev==2.33.1-0.1 +libmp3lame0==3.100-2+b1 +libmpc3==1.1.0-1 +libmpdec2==2.4.2-2 +libmpeg2-4==0.5.1-8 +libmpfr6==4.0.2-1 +libmpg123-0==1.25.10-2 +libmpx2==8.3.0-6 +libmro-compat-perl==0.13-1 +libmtdev1==1.1.5-1+b1 +libmysofa0==0.6~dfsg0-3+deb10u1 +libnamespace-autoclean-perl==0.28-1 +libnamespace-clean-perl==0.27-1 +libnanomsg-dev==1.1.5+dfsg-1 +libnanomsg5==1.1.5+dfsg-1 +libncurses-dev==6.1+20181013-2+deb10u3 +libncurses5-dev==6.1+20181013-2+deb10u3 +libncurses6==6.1+20181013-2+deb10u3 +libnet-dbus-perl==1.1.0-5+b1 +libnet-dns-perl==1.19-1 +libnet-dns-sec-perl==1.11-1 +libnet-domain-tld-perl==1.75-1 +libnet-http-perl==6.18-1 +libnet-ip-perl==1.26-2 +libnet-libidn-perl==0.12.ds-3+b1 +libnet-smtp-ssl-perl==1.04-1 +libnet-ssleay-perl==1.85-2+deb10u1 +libnetfilter-conntrack-dev==1.0.7-1 +libnetfilter-conntrack3==1.0.7-1 +libnetpbm10==2:10.0-15.3+b2 +libnewt-dev==0.52.20-8 +libnewt0.52==0.52.20-8 +libnfnetlink-dev==1.0.1-3+b1 +libnfnetlink0==1.0.1-3+b1 +libnftables0==0.9.0-2 +libnftnl-dev==1.1.2-2 +libnftnl11==1.1.2-2 +libnghttp2-14==1.36.0-2+deb10u1 +libnl-3-200==3.4.0-1 +libnl-3-dev==3.4.0-1 +libnl-route-3-200==3.4.0-1 +libnl-route-3-dev==3.4.0-1 +libnorm-dev==1.5.8+dfsg2-1 +libnorm1==1.5.8+dfsg2-1 +libnpth0==1.6-1 +libnspr4==2:4.20-1 +libnss-systemd==241-7~deb10u8 +libnss3==2:3.42.1-1+deb10u6 +libnuma-dev==2.0.12-1 +libnuma1==2.0.12-1 +libnumber-compare-perl==0.03-1 +libnumber-range-perl==0.12-1 +libobjc-8-dev==8.3.0-6 +libobjc4==8.3.0-6 +libogg0==1.3.2-1+b1 +libomp-7-dev==1:7.0.1-8+deb10u2 +libomp5-7==1:7.0.1-8+deb10u2 +libonig5==6.9.1-1 +libopencore-amrnb0==0.1.3-2.1+b2 +libopencore-amrwb0==0.1.3-2.1+b2 +libopencsd-dev==0.10.1-1 +libopencsd0==0.10.1-1 +libopenexr23==2.2.1-4.1+deb10u2 +libopengl0==1.1.0-1 +libopenjp2-7==2.3.0-2+deb10u2 +libopenmpi-dev==3.1.3-11 +libopenmpi3==3.1.3-11 +libopenmpt0==0.4.3-1+deb10u1 +libopts25==1:5.18.12-4 +libopts25-dev==1:5.18.12-4 +libopus0==1.3-1 +liborc-0.4-0==1:0.4.28-3.1 +liboro-java==2.0.8a-13 +libosp5==1.5.2-13+b1 +libossp-uuid-perl==1.6.2-1.5+b7 +libossp-uuid16==1.6.2-1.5+b7 +libostyle1c2==1.4devel1-21.3+b1 +libp11-kit-dev==0.23.15-2+deb10u1 +libpackage-deprecationmanager-perl==0.17-1 +libpackage-stash-perl==0.38-1 +libpackage-stash-xs-perl==0.29-1 +libpackagekit-glib2-18==1.1.12-5 +libpadwalker-perl==2.3-1+b1 +libpam-systemd==241-7~deb10u8 +libpam0g-dev==1.3.1-5 +libpango-1.0-0==1.42.4-8~deb10u1 +libpango1.0-dev==1.42.4-8~deb10u1 +libpangocairo-1.0-0==1.42.4-8~deb10u1 +libpangoft2-1.0-0==1.42.4-8~deb10u1 +libpangoxft-1.0-0==1.42.4-8~deb10u1 +libpaper-utils==1.1.28 +libpaper1==1.1.28 +libparams-classify-perl==0.015-1+b1 +libparams-util-perl==1.07-3+b4 +libparams-validate-perl==1.29-1+b1 +libparboiled-java==1.1.7-2 +libparse-debianchangelog-perl==1.2.0-13 +libpath-iterator-rule-perl==1.014-1 +libpath-tiny-perl==0.108-1 +libpathplan4==2.40.1-6+deb10u1 +libpcap-dev==1.8.1-6+deb10u1 +libpcap0.8==1.8.1-6+deb10u1 +libpcap0.8-dev==1.8.1-6+deb10u1 +libpci-dev==1:3.5.2-1 +libpci3==1:3.5.2-1 +libpciaccess0==0.14-1 +libpcre16-3==2:8.39-12 +libpcre2-16-0==10.32-5 +libpcre2-32-0==10.32-5 +libpcre2-8-0==10.32-5 +libpcre2-dev==10.32-5 +libpcre2-posix0==10.32-5 +libpcre3-dev==2:8.39-12 +libpcre32-3==2:8.39-12 +libpcrecpp0v5==2:8.39-12 +libpcsclite-dev==1.8.24-1 +libpcsclite1==1.8.24-1 +libpegdown-java==1.6.0-1 +libperl-dev==5.28.1-6+deb10u1 +libperl5.28==5.28.1-6+deb10u1 +libperlio-gzip-perl==0.19-1+b5 +libpgm-5.2-0==5.2.122~dfsg-3 +libpgm-dev==5.2.122~dfsg-3 +libpipeline1==1.5.1-2 +libpixman-1-0==0.36.0-1+deb10u1 +libpixman-1-dev==0.36.0-1+deb10u1 +libplexus-ant-factory-java==1.0~alpha2.1-4 +libplexus-archiver-java==3.6.0-2 +libplexus-bsh-factory-java==1.0~alpha7-4 +libplexus-build-api-java==0.0.7-3 +libplexus-cipher-java==1.7-3 +libplexus-classworlds-java==2.6.0-1 +libplexus-compiler-java==2.8.5-1 +libplexus-component-annotations-java==1.7.1-7 +libplexus-container-default-java==1.7.1-7 +libplexus-container-default1.5-java==1.7.1-7 +libplexus-i18n-java==1.0-beta-10-5 +libplexus-interpolation-java==1.25-1 +libplexus-io-java==3.1.1-1 +libplexus-languages-java==0.9.10-1 +libplexus-sec-dispatcher-java==1.4-4 +libplexus-utils2-java==3.1.1-1 +libplexus-velocity-java==1.2-3 +libpmix2==3.1.2-3 +libpng-dev==1.6.36-6 +libpng-tools==1.6.36-6 +libpng16-16==1.6.36-6 +libpod-constants-perl==0.19-1 +libpolkit-agent-1-0==0.105-25+deb10u1 +libpolkit-backend-1-0==0.105-25+deb10u1 +libpolkit-gobject-1-0==0.105-25+deb10u1 +libpopt0==1.16-12 +libpostproc55==7:4.1.10-0+deb10u1 +libpotrace0==1.15-1 +libprocps7==2:3.3.15-2 +libprotobuf-c1==1.3.1-1+b1 +libprotobuf-dev==3.6.1.3-2 +libprotobuf-lite17==3.6.1.3-2 +libprotobuf17==3.6.1.3-2 +libprotoc17==3.6.1.3-2 +libproxy1v5==0.4.15-5+deb10u1 +libpsl5==0.20.2-2 +libpsm-infinipath1==3.3+20.604758e7-6 +libpsm2-2==11.2.78-1 +libptexenc1==2018.20181218.49446-1 +libpthread-stubs0-dev==0.4-1 +libpulse0==12.2-4+deb10u1 +libpython-all-dev==2.7.16-1 +libpython-dev==2.7.16-1 +libpython-stdlib==2.7.16-1 +libpython2-dev==2.7.16-1 +libpython2-stdlib==2.7.16-1 +libpython2.7==2.7.16-2+deb10u1 +libpython2.7-dev==2.7.16-2+deb10u1 +libpython2.7-minimal==2.7.16-2+deb10u1 +libpython2.7-stdlib==2.7.16-2+deb10u1 +libpython3-all-dbg==3.7.3-1 +libpython3-all-dev==3.7.3-1 +libpython3-dbg==3.7.3-1 +libpython3-dev==3.7.3-1 +libpython3-stdlib==3.7.3-1 +libpython3.7==3.7.3-2+deb10u4 +libpython3.7-dbg==3.7.3-2+deb10u4 +libpython3.7-dev==3.7.3-2+deb10u4 +libpython3.7-minimal==3.7.3-2+deb10u4 +libpython3.7-stdlib==3.7.3-2+deb10u4 +libqdox-java==1.12.1-3 +libqdox2-java==2.0~M10-1 +libqt4-dbus==4:4.8.7+dfsg-18+deb10u1 +libqt4-declarative==4:4.8.7+dfsg-18+deb10u1 +libqt4-designer==4:4.8.7+dfsg-18+deb10u1 +libqt4-dev==4:4.8.7+dfsg-18+deb10u1 +libqt4-dev-bin==4:4.8.7+dfsg-18+deb10u1 +libqt4-help==4:4.8.7+dfsg-18+deb10u1 +libqt4-network==4:4.8.7+dfsg-18+deb10u1 +libqt4-opengl==4:4.8.7+dfsg-18+deb10u1 +libqt4-opengl-dev==4:4.8.7+dfsg-18+deb10u1 +libqt4-qt3support==4:4.8.7+dfsg-18+deb10u1 +libqt4-script==4:4.8.7+dfsg-18+deb10u1 +libqt4-scripttools==4:4.8.7+dfsg-18+deb10u1 +libqt4-sql==4:4.8.7+dfsg-18+deb10u1 +libqt4-sql-mysql==4:4.8.7+dfsg-18+deb10u1 +libqt4-svg==4:4.8.7+dfsg-18+deb10u1 +libqt4-test==4:4.8.7+dfsg-18+deb10u1 +libqt4-xml==4:4.8.7+dfsg-18+deb10u1 +libqt4-xmlpatterns==4:4.8.7+dfsg-18+deb10u1 +libqt5concurrent5==5.11.3+dfsg1-1+deb10u5 +libqt5core5a==5.11.3+dfsg1-1+deb10u5 +libqt5dbus5==5.11.3+dfsg1-1+deb10u5 +libqt5gui5==5.11.3+dfsg1-1+deb10u5 +libqt5network5==5.11.3+dfsg1-1+deb10u5 +libqt5opengl5==5.11.3+dfsg1-1+deb10u5 +libqt5opengl5-dev==5.11.3+dfsg1-1+deb10u5 +libqt5printsupport5==5.11.3+dfsg1-1+deb10u5 +libqt5sql5==5.11.3+dfsg1-1+deb10u5 +libqt5sql5-sqlite==5.11.3+dfsg1-1+deb10u5 +libqt5svg5==5.11.3-2 +libqt5test5==5.11.3+dfsg1-1+deb10u5 +libqt5widgets5==5.11.3+dfsg1-1+deb10u5 +libqt5xml5==5.11.3+dfsg1-1+deb10u5 +libqtcore4==4:4.8.7+dfsg-18+deb10u1 +libqtdbus4==4:4.8.7+dfsg-18+deb10u1 +libqtgui4==4:4.8.7+dfsg-18+deb10u1 +libquadmath0==8.3.0-6 +libraw1394-11==2.1.2-1+b1 +librdmacm1==22.1-1 +libreadline-dev==7.0-5 +libreadline5==5.2+dfsg-3+b13 +libreadline7==7.0-5 +libreadonly-perl==2.050-1 +libref-util-perl==0.204-1 +libref-util-xs-perl==0.117-1+b1 +libregexp-assemble-perl==0.36-1 +libregexp-pattern-license-perl==3.0.31-4 +librest-0.7-0==0.8.1-1 +librhash0==1.3.8-1 +librole-tiny-perl==2.000006-1 +librrd-dev==1.7.1-2 +librrd8==1.7.1-2 +librsvg2-2==2.44.10-2.1+deb10u3 +librsvg2-common==2.44.10-2.1+deb10u3 +librtmp1==2.4+20151223.gitfa8646d.1-2 +librubberband2==1.8.1-7 +libruby2.5==2.5.5-3+deb10u4 +libsamplerate0==0.1.9-2 +libsasl2-2==2.1.27+dfsg-1+deb10u2 +libsasl2-modules==2.1.27+dfsg-1+deb10u2 +libsasl2-modules-db==2.1.27+dfsg-1+deb10u2 +libsaxon-java==1:6.5.5-12 +libselinux1-dev==2.8-1+b1 +libsensors-config==1:3.5.0-3 +libsensors4-dev==1:3.5.0-3 +libsensors5==1:3.5.0-3 +libsepol1-dev==2.8-1 +libserd-0-0==0.28.0~dfsg0-1 +libsereal-decoder-perl==4.005+ds-1+b1 +libsereal-encoder-perl==4.005+ds-1+b1 +libsereal-perl==4.005-1 +libservlet-api-java==4.0.1-2 +libservlet3.1-java==1:4.0.1-2 +libsgmls-perl==1.03ii-36 +libshine3==3.1.1-2 +libshout3==2.4.1-2 +libsidplay1v5==1.36.59-11 +libsigsegv2==2.12-2 +libsisu-guice-java==4.2.0-1 +libsisu-inject-java==0.3.3-1 +libsisu-ioc-java==2.3.0-11 +libsisu-plexus-java==0.3.3-3 +libslang2==2.3.2-2 +libslang2-dev==2.3.2-2 +libslf4j-java==1.7.25-3 +libsm-dev==2:1.2.3-1 +libsm6==2:1.2.3-1 +libsnappy-java==1.1.7.2-1 +libsnappy-jni==1.1.7.2-1 +libsnappy1v5==1.1.7-1 +libsndfile1==1.0.28-6+deb10u2 +libsnmp-base==5.7.3+dfsg-5+deb10u4 +libsnmp-dev==5.7.3+dfsg-5+deb10u4 +libsnmp30==5.7.3+dfsg-5+deb10u4 +libsoap-lite-perl==1.27-1 +libsodium-dev==1.0.17-1 +libsodium23==1.0.17-1 +libsord-0-0==0.16.0~dfsg0-1+b1 +libsort-key-perl==1.33-2+b1 +libsort-versions-perl==1.62-1 +libsoup-gnome2.4-1==2.64.2-2 +libsoup2.4-1==2.64.2-2 +libsoxr0==0.1.2-3 +libspeex1==1.2~rc1.2-1+b2 +libspice-server1==0.14.0-1.3+deb10u1 +libsqlite3-0==3.27.2-3+deb10u2 +libsratom-0-0==0.6.0~dfsg0-1 +libssh-gcrypt-4==0.8.7-1+deb10u1 +libssh2-1==1.8.0-2.1 +libssl-dev==1.1.1n-0+deb10u4 +libssl1.1==1.1.1n-0+deb10u4 +libstdc++-8-dev==8.3.0-6 +libstemmer0d==0+svn585-1+b2 +libstrictures-perl==2.000005-1 +libstring-copyright-perl==0.003006-1 +libstring-escape-perl==2010.002-2 +libstring-shellquote-perl==1.04-1 +libstruct-dumb-perl==0.09-1 +libsub-exporter-perl==0.987-1 +libsub-exporter-progressive-perl==0.001013-1 +libsub-identify-perl==0.14-1+b1 +libsub-install-perl==0.928-1 +libsub-name-perl==0.21-1+b3 +libsub-quote-perl==2.005001-1 +libsubunit-dev==1.3.0-1 +libsubunit0==1.3.0-1 +libsurefire-java==2.22.1-1 +libswitch-perl==2.17-2 +libswresample3==7:4.1.10-0+deb10u1 +libswscale5==7:4.1.10-0+deb10u1 +libsynctex2==2018.20181218.49446-1 +libsys-hostname-long-perl==1.5-1 +libsystemd-dev==241-7~deb10u8 +libtag1v5==1.11.1+dfsg.1-0.3+deb10u1 +libtag1v5-vanilla==1.11.1+dfsg.1-0.3+deb10u1 +libtask-weaken-perl==1.06-1 +libtasn1-6-dev==4.13-3+deb10u1 +libtasn1-doc==4.13-3+deb10u1 +libtcl8.6==8.6.9+dfsg-2 +libtcmalloc-minimal4==2.7-1 +libteckit0==2.5.8+ds2-5 +libtemplate-perl==2.27-1+b1 +libterm-readkey-perl==2.38-1 +libtest-fatal-perl==0.014-1 +libtest-refcount-perl==0.08-3 +libtexlua52==2018.20181218.49446-1 +libtexlua53==2018.20181218.49446-1 +libtexluajit2==2018.20181218.49446-1 +libtext-charwidth-perl==0.04-7.1+b1 +libtext-glob-perl==0.10-1 +libtext-iconv-perl==1.7-5+b7 +libtext-levenshtein-perl==0.13-1 +libtext-unidecode-perl==1.30-1 +libtext-wrapi18n-perl==0.06-7.1 +libthai-data==0.1.28-2 +libthai0==0.1.28-2 +libtheora0==1.1.1+dfsg.1-15 +libtie-ixhash-perl==1.23-2 +libtiff5==4.1.0+git191117-2~deb10u7 +libtimedate-perl==2.3000-2+deb10u1 +libtinyxml2-6a==7.0.0+dfsg-1 +libtinyxml2-dev==7.0.0+dfsg-1 +libtk8.6==8.6.9-2 +libtool==2.4.6-9 +libtool-bin==2.4.6-9 +libtry-tiny-perl==0.30-1 +libtsan0==8.3.0-6 +libtwolame0==0.3.13-4 +libtype-tiny-perl==1.004004-1 +libtype-tiny-xs-perl==0.014-1+b1 +libtypes-serialiser-perl==1.0-1 +libubsan1==8.3.0-6 +libuchardet0==0.0.6-3 +libudev-dev==241-7~deb10u8 +libunbound8==1.9.0-2+deb10u2 +libunicode-utf8-perl==0.62-1 +libunwind-dev==1.2.1-10~deb10u1 +libunwind8==1.2.1-10~deb10u1 +liburi-perl==1.76-1 +libusb-0.1-4==2:0.1.12-32 +libusb-1.0-0==2:1.0.22-2 +libusb-1.0-0-dev==2:1.0.22-2 +libusb-1.0-doc==2:1.0.22-2 +libusb-dev==2:0.1.12-32 +libusbredirparser1==0.8.0-1 +libutempter0==1.1.6-3 +libuv1==1.24.1-1+deb10u1 +libv4l-0==1.16.3-3 +libv4lconvert0==1.16.3-3 +libva-drm2==2.4.0-1 +libva-x11-2==2.4.0-1 +libva2==2.4.0-1 +libvariable-magic-perl==0.62-1+b1 +libvdeplug2==2.3.2+r586-2.2 +libvdpau-va-gl1==0.4.2-1+b1 +libvdpau1==1.1.1-10 +libvelocity-tools-java==2.0-7 +libvidstab1.1==1.1.0-2 +libvirglrenderer0==0.7.0-2+deb10u1 +libvirt-clients==5.0.0-4+deb10u1 +libvirt0==5.0.0-4+deb10u1 +libvisual-0.4-0==0.4.0-15 +libvorbis0a==1.3.6-2 +libvorbisenc2==1.3.6-2 +libvorbisfile3==1.3.6-2 +libvpx5==1.7.0-3+deb10u1 +libvte-2.91-0==0.54.2-2 +libvte-2.91-common==0.54.2-2 +libvulkan-dev==1.1.97-2 +libvulkan1==1.1.97-2 +libwacom-bin==0.32-1 +libwacom-common==0.32-1 +libwacom2==0.32-1 +libwagon-file-java==3.3.1-2 +libwagon-http-shaded-java==3.3.1-2 +libwagon-provider-api-java==3.3.1-2 +libwant-perl==0.29-1+b4 +libwavpack1==5.1.0-6+deb10u1 +libwayland-bin==1.16.0-1 +libwayland-client0==1.16.0-1 +libwayland-cursor0==1.16.0-1 +libwayland-dev==1.16.0-1 +libwayland-egl1==1.16.0-1 +libwayland-server0==1.16.0-1 +libwebp6==0.6.1-2+deb10u1 +libwebpdemux2==0.6.1-2+deb10u1 +libwebpmux3==0.6.1-2+deb10u1 +libwebsocket-api-java==1.1-1+deb10u1 +libwmf0.2-7==0.2.8.4-14 +libwoff1==1.0.2-1 +libwrap0==7.6.q-28 +libwrap0-dev==7.6.q-28 +libwww-perl==6.36-2 +libwww-robotrules-perl==6.02-1 +libx11-6==2:1.6.7-1+deb10u2 +libx11-data==2:1.6.7-1+deb10u2 +libx11-dev==2:1.6.7-1+deb10u2 +libx11-protocol-perl==0.56-7 +libx11-xcb-dev==2:1.6.7-1+deb10u2 +libx11-xcb1==2:1.6.7-1+deb10u2 +libx264-155==2:0.155.2917+git0a84d98-2 +libx265-165==2.9-4 +libx32asan5==8.3.0-6 +libx32atomic1==8.3.0-6 +libx32gcc-8-dev==8.3.0-6 +libx32gcc1==1:8.3.0-6 +libx32gomp1==8.3.0-6 +libx32itm1==8.3.0-6 +libx32quadmath0==8.3.0-6 +libx32stdc++6==8.3.0-6 +libx32ubsan1==8.3.0-6 +libxalan2-java==2.7.2-2 +libxapian30==1.4.11-1 +libxau-dev==1:1.0.8-1+b2 +libxau6==1:1.0.8-1+b2 +libxaw7==2:1.0.13-1+b2 +libxbean-reflect-java==4.5-8 +libxcb-dri2-0==1.13.1-2 +libxcb-dri2-0-dev==1.13.1-2 +libxcb-dri3-0==1.13.1-2 +libxcb-dri3-dev==1.13.1-2 +libxcb-glx0==1.13.1-2 +libxcb-glx0-dev==1.13.1-2 +libxcb-icccm4==0.4.1-1.1 +libxcb-image0==0.4.0-1+b2 +libxcb-keysyms1==0.4.0-1+b2 +libxcb-present-dev==1.13.1-2 +libxcb-present0==1.13.1-2 +libxcb-randr0==1.13.1-2 +libxcb-randr0-dev==1.13.1-2 +libxcb-render-util0==0.3.9-1+b1 +libxcb-render0==1.13.1-2 +libxcb-render0-dev==1.13.1-2 +libxcb-shape0==1.13.1-2 +libxcb-shape0-dev==1.13.1-2 +libxcb-shm0==1.13.1-2 +libxcb-shm0-dev==1.13.1-2 +libxcb-sync-dev==1.13.1-2 +libxcb-sync1==1.13.1-2 +libxcb-util0==0.3.8-3+b2 +libxcb-xfixes0==1.13.1-2 +libxcb-xfixes0-dev==1.13.1-2 +libxcb-xinerama0==1.13.1-2 +libxcb-xkb1==1.13.1-2 +libxcb1==1.13.1-2 +libxcb1-dev==1.13.1-2 +libxcomposite-dev==1:0.4.4-2 +libxcomposite1==1:0.4.4-2 +libxcursor-dev==1:1.1.15-2 +libxcursor1==1:1.1.15-2 +libxdamage-dev==1:1.1.4-3+b3 +libxdamage1==1:1.1.4-3+b3 +libxdelta2==1.1.3-9.2 +libxdmcp-dev==1:1.1.2-3 +libxdmcp6==1:1.1.2-3 +libxdot4==2.40.1-6+deb10u1 +libxencall1==4.11.4+107-gef32c7afa2-1 +libxendevicemodel1==4.11.4+107-gef32c7afa2-1 +libxenevtchn1==4.11.4+107-gef32c7afa2-1 +libxenforeignmemory1==4.11.4+107-gef32c7afa2-1 +libxengnttab1==4.11.4+107-gef32c7afa2-1 +libxenmisc4.11==4.11.4+107-gef32c7afa2-1 +libxenstore3.0==4.11.4+107-gef32c7afa2-1 +libxentoolcore1==4.11.4+107-gef32c7afa2-1 +libxentoollog1==4.11.4+107-gef32c7afa2-1 +libxerces2-java==2.12.0-1 +libxext-dev==2:1.3.3-1+b2 +libxext6==2:1.3.3-1+b2 +libxfixes-dev==1:5.0.3-1 +libxfixes3==1:5.0.3-1 +libxft-dev==2.3.2-2 +libxft2==2.3.2-2 +libxi-dev==2:1.7.9-1 +libxi6==2:1.7.9-1 +libxinerama-dev==2:1.1.4-2 +libxinerama1==2:1.1.4-2 +libxkbcommon-dev==0.8.2-1 +libxkbcommon-x11-0==0.8.2-1 +libxkbcommon0==0.8.2-1 +libxml-commons-external-java==1.4.01-3 +libxml-commons-resolver1.1-java==1.2-9 +libxml-libxml-perl==2.0134+dfsg-1 +libxml-namespacesupport-perl==1.12-1 +libxml-parser-perl==2.44-4 +libxml-sax-base-perl==1.09-1 +libxml-sax-expat-perl==0.51-1 +libxml-sax-perl==1.00+dfsg-1 +libxml-simple-perl==2.25-1 +libxml-twig-perl==1:3.50-1.1 +libxml-xpathengine-perl==0.14-1 +libxml2==2.9.4+dfsg1-7+deb10u5 +libxml2-dev==2.9.4+dfsg1-7+deb10u5 +libxml2-utils==2.9.4+dfsg1-7+deb10u5 +libxmlgraphics-commons-java==2.3-1+deb10u1 +libxmlrpc-lite-perl==0.717-2 +libxmu6==2:1.1.2-2+b3 +libxmuu1==2:1.1.2-2+b3 +libxpm4==1:3.5.12-1 +libxrandr-dev==2:1.5.1-1 +libxrandr2==2:1.5.1-1 +libxrender-dev==1:0.9.10-1 +libxrender1==1:0.9.10-1 +libxshmfence-dev==1.3-1 +libxshmfence1==1.3-1 +libxslt1.1==1.1.32-2.2~deb10u2 +libxss1==1:1.2.3-1 +libxt-dev==1:1.1.5-1+b3 +libxt6==1:1.1.5-1+b3 +libxtables-dev==1.8.2-4 +libxtst-dev==2:1.2.3-1 +libxtst6==2:1.2.3-1 +libxv1==2:1.0.11-1 +libxvidcore4==2:1.3.5-1 +libxxf86dga1==2:1.1.4-1+b3 +libxxf86vm-dev==1:1.1.4-1+b2 +libxxf86vm1==1:1.1.4-1+b2 +libxxhash0==0.6.5-2 +libxz-java==1.8-2 +libyajl2==2.1.0-3 +libyaml-0-2==0.2.1-1 +libyaml-dev==0.2.1-1 +libyaml-libyaml-perl==0.76+repack-1 +libzmq3-dev==4.3.1-4+deb10u2 +libzmq5==4.3.1-4+deb10u2 +libzvbi-common==0.2.35-16 +libzvbi0==0.2.35-16 +libzzip-0-13==0.13.62-3.2+deb10u1 +licensecheck==3.0.31-3 +lintian==2.15.0 +linux-compiler-gcc-8-x86==4.19.269-1 +linux-headers-4.19.0-23-amd64==4.19.269-1 +linux-headers-4.19.0-23-common==4.19.269-1 +linux-headers-amd64==4.19+105+deb10u18 +linux-kbuild-4.19==4.19.269-1 +linux-libc-dev==4.19.269-1 +linuxdoc-tools==0.9.73-2 +llvm-7==1:7.0.1-8+deb10u2 +llvm-7-dev==1:7.0.1-8+deb10u2 +llvm-7-runtime==1:7.0.1-8+deb10u2 +lmodern==2.004.5-6 +locales==2.28-10+deb10u2 +logrotate==3.14.0-4 +lsb-base==10.2019051400 +lsb-release==10.2019051400 +lsof==4.91+dfsg-1 +lua-bitop==1.0.2-5 +lua-bitop-dev==1.0.2-5 +lua-cjson==2.1.0+dfsg-2.1 +lua-cjson-dev==2.1.0+dfsg-2.1 +lvm2==2.03.02-3 +lynx==2.8.9rel.1-3+deb10u1 +lynx-common==2.8.9rel.1-3+deb10u1 +m4==1.4.18-2 +make==4.2.1-1.2 +man-db==2.8.5-2 +man2html-base==1.6g-11 +manpages==4.16-2 +manpages-dev==4.16-2 +mariadb-common==1:10.3.38-0+deb10u1 +maven==3.6.0-1 +maven-debian-helper==2.3.2 +maven-repo-helper==1.9.3 +mesa-common-dev==18.3.6-2+deb10u1 +mesa-va-drivers==18.3.6-2+deb10u1 +mesa-vdpau-drivers==18.3.6-2+deb10u1 +mime-support==3.62 +module-assistant==0.11.10 +mysql-common==5.8+1.0.5 +ncurses-term==6.1+20181013-2+deb10u3 +netbase==5.6 +netpbm==2:10.0-15.3+b2 +nettle-dev==3.4.1-1+deb10u1 +nftables==0.9.0-2 +ocl-icd-libopencl1==2.2.12-2 +openjade==1.4devel1-21.3+b1 +openjdk-11-jdk==11.0.18+10-1~deb10u1 +openjdk-11-jdk-headless==11.0.18+10-1~deb10u1 +openjdk-11-jre==11.0.18+10-1~deb10u1 +openjdk-11-jre-headless==11.0.18+10-1~deb10u1 +openmpi-bin==3.1.3-11 +openmpi-common==3.1.3-11 +opensp==1.5.2-13+b1 +openssh-client==1:7.9p1-10+deb10u2 +openssh-server==1:7.9p1-10+deb10u2 +openssh-sftp-server==1:7.9p1-10+deb10u2 +openssl==1.1.1n-0+deb10u4 +ovmf==0~20181115.85588389-3+deb10u3 +packagekit==1.1.12-5 +packagekit-tools==1.1.12-5 +pango1.0-tools==1.42.4-8~deb10u1 +patch==2.7.6-3+deb10u1 +patchutils==0.3.4-2 +pbuilder==0.230.4 +pbzip2==1.1.9-1+b1 +perl==5.28.1-6+deb10u1 +perl-modules-5.28==5.28.1-6+deb10u1 +perl-openssl-defaults==3 +php-cli==2:7.3+69 +php-codecoverage==6.1.4+dfsg-1 +php-common==2:69 +php-deepcopy==1.8.1-1 +php-doctrine-instantiator==1.1.0-2 +php-file-iterator==2.0.2-1 +php-mbstring==2:7.3+69 +php-pear==1:1.10.6+submodules+notgz-1.1+deb10u2 +php-phar-io-manifest==1.0.3-1 +php-phar-io-version==2.0.1-1 +php-phpdocumentor-reflection-common==1.0.1-1 +php-phpdocumentor-reflection-docblock==4.3.0-1 +php-phpdocumentor-type-resolver==0.4.0-2 +php-phpspec-prophecy==1.8.0-1 +php-text-template==1.2.1-2 +php-timer==2.1.1-1 +php-token-stream==3.0.1-1 +php-tokenizer==1.1.0-1 +php-webmozart-assert==1.4.0-3 +php-xml==2:7.3+69 +php7.3-cli==7.3.31-1~deb10u2 +php7.3-common==7.3.31-1~deb10u2 +php7.3-json==7.3.31-1~deb10u2 +php7.3-mbstring==7.3.31-1~deb10u2 +php7.3-opcache==7.3.31-1~deb10u2 +php7.3-readline==7.3.31-1~deb10u2 +php7.3-xml==7.3.31-1~deb10u2 +phpunit==7.5.6-1 +phpunit-code-unit-reverse-lookup==1.0.1-1 +phpunit-comparator==3.0.2-1 +phpunit-diff==3.0.2-1 +phpunit-environment==4.1.0-1 +phpunit-exporter==3.1.0-2 +phpunit-global-state==2.0.0really2.0.0-2 +phpunit-object-enumerator==3.0.3-3 +phpunit-object-reflector==1.1.1-2 +phpunit-recursion-context==3.0.0-2 +phpunit-resource-operations==2.0.1-1 +phpunit-version==2.0.1-1 +pigz==2.4-1 +pinentry-curses==1.1.0-2 +pkg-config==0.29-6 +pkg-php-tools==1.37 +po-debconf==1.0.21 +policykit-1==0.105-25+deb10u1 +poppler-data==0.4.9-2 +pps-tools==1.0.2-1 +preview-latex-style==11.91-2 +pristine-tar==1.46 +procmail==3.22-26+deb10u1 +procps==2:3.3.15-2 +protobuf-compiler==3.6.1.3-2 +psmisc==23.2-1+deb10u1 +psutils==1.17.dfsg-4 +publicsuffix==20220811.1734-0+deb10u1 +pylint==1.9.4-1 +python==2.7.16-1 +python-alabaster==0.7.8-1 +python-all==2.7.16-1 +python-all-dev==2.7.16-1 +python-apt-common==1.8.4.3 +python-asn1crypto==0.24.0-1 +python-astroid==1.6.5-3 +python-atomicwrites==1.1.5-2 +python-attr==18.2.0-1 +python-automat==0.6.0-1 +python-babel==2.6.0+dfsg.1-1+deb10u1 +python-babel-localedata==2.6.0+dfsg.1-1+deb10u1 +python-backports.functools-lru-cache==1.5-3 +python-bs4==4.7.1-1 +python-certifi==2018.8.24-1 +python-cffi-backend==1.12.2-1 +python-chardet==3.0.4-3 +python-click==7.0-1 +python-colorama==0.3.7-1 +python-concurrent.futures==3.2.0-2 +python-configparser==3.5.0b2-1 +python-constantly==15.1.0-1 +python-cov-core==1.15.0-2 +python-coverage==4.5.2+dfsg.1-1 +python-crypto==2.6.1-9+b1 +python-cryptography==2.6.1-3+deb10u3 +python-dbus==1.2.8-3 +python-dev==2.7.16-1 +python-docutils==0.14+dfsg-4 +python-egenix-mxdatetime==3.2.9-1 +python-egenix-mxtools==3.2.9-1 +python-entrypoints==0.3-1 +python-enum34==1.1.6-2 +python-funcsigs==1.0.2-4 +python-gi==3.30.4-1 +python-html5lib==1.0.1-1 +python-hyperlink==17.3.1-2 +python-idna==2.6-1 +python-imagesize==1.0.0-1 +python-incremental==16.10.1-3 +python-ipaddr==2.2.0-2 +python-ipaddress==1.0.17-1 +python-isort==4.3.4+ds1-1.1 +python-jinja2==2.10-2 +python-keyring==17.1.1-1 +python-keyrings.alt==3.1.1-1 +python-lazy-object-proxy==1.3.1-1+b1 +python-logilab-common==1.4.2-1 +python-lxml==4.3.2-1+deb10u4 +python-markupsafe==1.1.0-1 +python-mccabe==0.6.1-2 +python-minimal==2.7.16-1 +python-mock==2.0.0-4 +python-more-itertools==4.2.0-1 +python-nose2==0.8.0-1 +python-olefile==0.46-1 +python-openssl==19.0.0-1 +python-packaging==19.0-1 +python-parse==1.6.6-0.1 +python-pathlib2==2.3.3-1 +python-pbr==4.2.0-5 +python-pil==5.4.1-2+deb10u3 +python-pip-whl==18.1-5 +python-pkg-resources==40.8.0-1 +python-pluggy==0.8.0-1 +python-py==1.7.0-2 +python-pyasn1==0.4.2-3 +python-pyasn1-modules==0.2.1-0.2 +python-pygments==2.3.1+dfsg-1+deb10u2 +python-pyparsing==2.2.0+dfsg1-2 +python-pytest==3.10.1-2 +python-pytest-cov==2.6.0-1 +python-requests==2.21.0-1 +python-roman==2.0.0-3 +python-scandir==1.9.0-2 +python-secretstorage==2.3.1-2 +python-service-identity==16.0.0-2 +python-setuptools==40.8.0-1 +python-singledispatch==3.4.0.3-2 +python-six==1.12.0-1 +python-soupsieve==1.8+dfsg-1 +python-sphinx==1.8.4-1 +python-stdeb==0.8.5-1 +python-tk==2.7.16-2 +python-twisted==18.9.0-3+deb10u2 +python-twisted-bin==18.9.0-3+deb10u2 +python-twisted-core==18.9.0-3+deb10u2 +python-typing==3.6.6-1 +python-tz==2019.1-1 +python-urllib3==1.24.1-1 +python-webencodings==0.5.1-1 +python-wheel==0.32.3-2 +python-wrapt==1.10.11-1 +python-xdg==0.25-5 +python-zope.interface==4.3.2-1+b2 +python2==2.7.16-1 +python2-dev==2.7.16-1 +python2-minimal==2.7.16-1 +python2.7==2.7.16-2+deb10u1 +python2.7-dev==2.7.16-2+deb10u1 +python2.7-minimal==2.7.16-2+deb10u1 +python3==3.7.3-1 +python3-alabaster==0.7.8-1 +python3-all==3.7.3-1 +python3-all-dbg==3.7.3-1 +python3-all-dev==3.7.3-1 +python3-apt==1.8.4.3 +python3-asn1crypto==0.24.0-1 +python3-atomicwrites==1.1.5-2 +python3-attr==18.2.0-1 +python3-babel==2.6.0+dfsg.1-1+deb10u1 +python3-certifi==2018.8.24-1 +python3-cffi-backend==1.12.2-1 +python3-chardet==3.0.4-3 +python3-cov-core==1.15.0-2 +python3-coverage==4.5.2+dfsg.1-1 +python3-crypto==2.6.1-9+b1 +python3-cryptography==2.6.1-3+deb10u3 +python3-dateutil==2.7.3-3 +python3-dbg==3.7.3-1 +python3-dbus==1.2.8-3 +python3-debian==0.1.35 +python3-dev==3.7.3-1 +python3-distro-info==0.21 +python3-distutils==3.7.3-1 +python3-docutils==0.14+dfsg-4 +python3-entrypoints==0.3-1 +python3-gi==3.30.4-1 +python3-gpg==1.12.0-6 +python3-idna==2.6-1 +python3-imagesize==1.0.0-1 +python3-jinja2==2.10-2 +python3-keyring==17.1.1-1 +python3-keyrings.alt==3.1.1-1 +python3-lib2to3==3.7.3-1 +python3-magic==2:0.4.15-2 +python3-mako==1.0.7+ds1-1+deb10u1 +python3-markdown==3.0.1-3 +python3-markupsafe==1.1.0-1 +python3-minimal==3.7.3-1 +python3-mock==2.0.0-4 +python3-more-itertools==4.2.0-1 +python3-nose2==0.8.0-1 +python3-olefile==0.46-1 +python3-packaging==19.0-1 +python3-pbr==4.2.0-5 +python3-pil==5.4.1-2+deb10u3 +python3-pkg-resources==40.8.0-1 +python3-pluggy==0.8.0-1 +python3-py==1.7.0-2 +python3-pycurl==7.43.0.2-0.1 +python3-pygments==2.3.1+dfsg-1+deb10u2 +python3-pyparsing==2.2.0+dfsg1-2 +python3-pytest==3.10.1-2 +python3-pytest-cov==2.6.0-1 +python3-requests==2.21.0-1 +python3-roman==2.0.0-3 +python3-secretstorage==2.3.1-2 +python3-setuptools==40.8.0-1 +python3-six==1.12.0-1 +python3-software-properties==0.96.20.2-2 +python3-sphinx==1.8.4-1 +python3-sphinx-rtd-theme==0.4.3+dfsg-1 +python3-tz==2019.1-1 +python3-unidiff==0.5.4-1 +python3-urllib3==1.24.1-1 +python3-wheel==0.32.3-2 +python3-xdg==0.25-5 +python3.7==3.7.3-2+deb10u4 +python3.7-dbg==3.7.3-2+deb10u4 +python3.7-dev==3.7.3-2+deb10u4 +python3.7-minimal==3.7.3-2+deb10u4 +qdbus==4:4.8.7+dfsg-18+deb10u1 +qemu-kvm==1:3.1+dfsg-8+deb10u9 +qemu-system-common==1:3.1+dfsg-8+deb10u9 +qemu-system-data==1:3.1+dfsg-8+deb10u9 +qemu-system-gui==1:3.1+dfsg-8+deb10u9 +qemu-system-x86==1:3.1+dfsg-8+deb10u9 +qemu-utils==1:3.1+dfsg-8+deb10u9 +qt-at-spi==0.4.0-9 +qt4-linguist-tools==4:4.8.7+dfsg-18+deb10u1 +qt4-qmake==4:4.8.7+dfsg-18+deb10u1 +qt5-default==5.11.3+dfsg1-1+deb10u5 +qt5-gtk-platformtheme==5.11.3+dfsg1-1+deb10u5 +qt5-qmake==5.11.3+dfsg1-1+deb10u5 +qt5-qmake-bin==5.11.3+dfsg1-1+deb10u5 +qtbase5-dev==5.11.3+dfsg1-1+deb10u5 +qtbase5-dev-tools==5.11.3+dfsg1-1+deb10u5 +qtchooser==66-2 +qtcore4-l10n==4:4.8.7+dfsg-18+deb10u1 +qttranslations5-l10n==5.11.3-2 +quilt==0.65-3 +rake==12.3.1-3+deb10u1 +readline-common==7.0-5 +rrdtool==1.7.1-2 +rsync==3.1.3-6 +rsyslog==8.1901.0-1+deb10u2 +ruby==1:2.5.1 +ruby-all-dev==1:2.5.1 +ruby-asciidoctor==1.5.8-1 +ruby-did-you-mean==1.2.1-1 +ruby-minitest==5.11.3-1 +ruby-net-telnet==0.1.1-2 +ruby-power-assert==1.1.1-1 +ruby-setup==3.4.1-9 +ruby-test-unit==3.2.8-1 +ruby-xmlrpc==0.3.0-2 +ruby2.5==2.5.5-3+deb10u4 +ruby2.5-dev==2.5.5-3+deb10u4 +ruby2.5-doc==2.5.5-3+deb10u4 +rubygems-integration==1.11+deb10u1 +sbsigntool==0.9.2-2 +seabios==1.12.0-1 +sensible-utils==0.0.12 +sgml-base==1.29 +sgml-data==2.0.11 +sgmlspl==1.03ii-36 +shared-mime-info==1.10-1 +sharutils==1:4.15.2-4 +shellcheck==0.5.0-3 +software-properties-common==0.96.20.2-2 +sphinx-common==1.8.4-1 +sphinx-rtd-theme-common==0.4.3+dfsg-1 +squashfs-tools==1:4.3-12+deb10u2 +stgit==0.18-1 +strace==4.26-0.2 +sudo==1.8.27-1+deb10u5 +swig==3.0.12-2 +swig3.0==3.0.12-2 +systemd==241-7~deb10u8 +systemd-sysv==241-7~deb10u8 +t1utils==1.41-3 +tcl==8.6.9+1 +tcl8.6==8.6.9+dfsg-2 +teckit==2.5.8+ds2-5 +telnet==0.17-41.2 +tex-common==6.11 +tex-gyre==20180621-3 +texi2html==1.82+dfsg1-5 +texinfo==6.5.0.dfsg.1-4+b1 +texlive-base==2018.20190227-2 +texlive-binaries==2018.20181218.49446-1 +texlive-fonts-recommended==2018.20190227-2 +texlive-formats-extra==2018.20190227-2 +texlive-generic-recommended==2018.20190227-2 +texlive-latex-base==2018.20190227-2 +texlive-latex-extra==2018.20190227-2 +texlive-latex-recommended==2018.20190227-2 +texlive-pictures==2018.20190227-2 +texlive-plain-generic==2018.20190227-2 +texlive-xetex==2018.20190227-2 +thin-provisioning-tools==0.7.6-2.1 +time==1.7-25.1+b1 +tipa==2:1.3-20 +tk==8.6.9+1 +tk8.6==8.6.9-2 +tk8.6-blt2.5==2.5.3+dfsg-4 +ucf==3.0038+nmu1 +unattended-upgrades==1.11.2 +unzip==6.0-23+deb10u3 +uuid-dev==2.33.1-0.1 +va-driver-all==2.4.0-1 +vdpau-driver-all==1.1.1-10 +velocity==1.7-5+deb10u1 +vim==2:8.1.0875-5+deb10u4 +vim-common==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 +wayland-protocols==1.17-1 +wdiff==1.2.2-2+b1 +wget==1.20.1-1.1 +x11-common==1:7.7+19 +x11-utils==7.7+4 +x11-xserver-utils==7.7+8 +x11proto-composite-dev==1:2018.4-4 +x11proto-core-dev==2018.4-4 +x11proto-damage-dev==1:2018.4-4 +x11proto-dev==2018.4-4 +x11proto-fixes-dev==1:2018.4-4 +x11proto-input-dev==2018.4-4 +x11proto-randr-dev==2018.4-4 +x11proto-record-dev==2018.4-4 +x11proto-xext-dev==2018.4-4 +x11proto-xf86vidmode-dev==2018.4-4 +x11proto-xinerama-dev==2018.4-4 +xauth==1:1.0.10-1 +xbitmaps==1.1.1-2 +xdelta==1.1.3-9.2 +xdelta3==3.0.11-dfsg-1+b1 +xdg-user-dirs==0.17-2 +xdg-utils==1.1.3-1+deb10u1 +xfonts-encodings==1:1.0.4-2 +xfonts-utils==1:7.7+6 +xkb-data==2.26-2 +xml-core==0.18+nmu1 +xorg-sgml-doctools==1:1.11-1 +xsltproc==1.1.32-2.2~deb10u2 +xterm==344-1+deb10u2 +xtrans-dev==1.3.5-1 +xxd==2:8.1.0875-5+deb10u4 +xz-utils==5.2.4-1+deb10u1 +zip==3.0-11+b1 +zlib1g-dev==1:1.2.11.dfsg-1+deb10u2 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 new file mode 100644 index 000000000000..bc9abc9f92f5 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 @@ -0,0 +1,9 @@ +binutils-aarch64-linux-gnu==2.31.1-16 +libdrm-etnaviv1==2.4.97-1 +libdrm-freedreno1==2.4.97-1 +libdrm-tegra0==2.4.97-1 +libtext-iconv-perl==1.7-5+b6 +libxslt1-dev==1.1.32-2.2~deb10u2 +nodejs==14.21.3-deb-1nodesource1 +python-cryptography==2.6.1-3+deb10u2 +python3-cryptography==2.6.1-3+deb10u2 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf new file mode 100644 index 000000000000..4847dd8d2c16 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf @@ -0,0 +1,12 @@ +binutils-arm-linux-gnueabihf==2.31.1-16 +libdrm-etnaviv1==2.4.97-1 +libdrm-exynos1==2.4.97-1 +libdrm-freedreno1==2.4.97-1 +libdrm-omap1==2.4.97-1 +libdrm-tegra0==2.4.97-1 +libgles2-mesa-dev==18.3.6-2+deb10u1 +libxslt1-dev==1.1.32-2.2~deb10u2 +linux-compiler-gcc-8-arm==4.19.269-1 +nodejs==14.21.3-deb-1nodesource1 +python-cryptography==2.6.1-3+deb10u2 +python3-cryptography==2.6.1-3+deb10u2 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-py2 b/files/build/versions/dockers/sonic-slave-buster/versions-py2 new file mode 100644 index 000000000000..60d9f8a7c63c --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-buster/versions-py2 @@ -0,0 +1,95 @@ +alabaster==0.7.8 +asn1crypto==0.24.0 +astroid==1.6.5 +atomicwrites==1.1.5 +attrs==18.2.0 +automat==0.6.0 +babel==2.6.0 +backports.functools-lru-cache==1.5 +beautifulsoup4==4.7.1 +certifi==2018.8.24 +chardet==3.0.4 +click==7.0 +colorama==0.3.7 +configparser==3.5.0b2 +constantly==15.1.0 +cov-core==1.15.0 +coverage==4.5.2 +crc16==0.1.1 +cryptography==2.6.1 +ctypesgen==1.0.2 +docutils==0.14 +entrypoints==0.3 +enum34==1.1.6 +fastentrypoints==0.12 +funcsigs==1.0.2 +futures==3.2.0 +html5lib==1.0.1 +hyperlink==17.3.1 +idna==2.6 +imagesize==1.0.0 +incremental==16.10.1 +ipaddr==2.2.0 +ipaddress==1.0.17 +isort==4.3.4 +j2cli==0.3.10 +jinja2==2.10 +keyring==17.1.1 +keyrings.alt==3.1.1 +lazy-object-proxy==1.3.1 +logilab-common==1.4.2 +lxml==4.6.5 +m2crypto==0.36.0 +markupsafe==1.1.0 +mccabe==0.6.1 +mmh3==2.5.1 +mock==3.0.5 +mockredispy==2.9.3 +more-itertools==4.2.0 +nose==1.3.7 +nose2==0.8.0 +olefile==0.46 +packaging==19.0 +parse==1.6.6 +pathlib2==2.3.3 +pbr==4.2.0 +pexpect==4.6.0 +pillow==5.4.1 +pip==20.3.4 +pluggy==0.8.0 +ptyprocess==0.7.0 +py==1.7.0 +pyasn1==0.4.2 +pyasn1-modules==0.2.1 +pycrypto==2.6.1 +pygments==2.3.1 +pygobject==3.30.4 +pylint==1.9.4 +pympler==0.8 +pyopenssl==19.0.0 +pyparsing==2.2.0 +pytest==3.10.1 +pytest-cov==2.6.0 +pytest-runner==4.4 +pytz==2019.1 +pyxdg==0.25 +pyyaml==5.4.1 +requests==2.21.0 +roman==2.0.0 +scandir==1.9.0 +secretstorage==2.3.1 +service-identity==16.0.0 +setuptools==40.8.0 +singledispatch==3.4.0.3 +six==1.12.0 +soupsieve==1.8 +sphinx==1.8.4 +stdeb==0.8.5 +stgit==0.18 +twisted==18.9.0 +typing==3.6.6 +urllib3==1.24.1 +webencodings==0.5.1 +wheel==0.35.1 +wrapt==1.10.11 +zope.interface==4.3.2 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-py3 b/files/build/versions/dockers/sonic-slave-buster/versions-py3 new file mode 100644 index 000000000000..940dbf658838 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-buster/versions-py3 @@ -0,0 +1,81 @@ +alabaster==0.7.8 +asn1crypto==0.24.0 +async-timeout==4.0.2 +atomicwrites==1.1.5 +attrs==18.2.0 +babel==2.6.0 +bitarray==2.7.3 +certifi==2018.8.24 +chardet==3.0.4 +cov-core==1.15.0 +coverage==4.5.2 +cryptography==2.6.1 +devscripts==2.19.5+deb10u1 +distro-info==0.21 +docutils==0.14 +entrypoints==0.3 +fastentrypoints==0.12 +gbp==0.9.14 +gcovr==4.1 +gpg==1.12.0 +idna==2.6 +imagesize==1.0.0 +importlib-metadata==6.0.0 +jinja2==3.0.3 +keyring==17.1.1 +keyrings.alt==3.1.1 +lxml==4.6.5 +m2crypto==0.38.0 +mako==1.0.7 +markdown==3.0.1 +markupsafe==2.0.1 +mmh3==2.5.1 +mock==2.0.0 +mockredispy==2.9.3 +more-itertools==4.2.0 +nose==1.3.7 +nose2==0.8.0 +olefile==0.46 +packaging==19.0 +parameterized==0.8.1 +pbr==4.2.0 +pexpect==4.8.0 +pillow==5.4.1 +pip==23.0.1 +pluggy==0.8.0 +ptyprocess==0.7.0 +py==1.7.0 +pyang==2.4.0 +pyangbind==0.8.1 +pycrypto==2.6.1 +pycurl==7.43.0.2 +pyfakefs==5.1.0 +pygments==2.3.1 +pygobject==3.30.4 +pympler==0.8 +pyparsing==2.2.0 +pytest==3.10.1 +pytest-cov==2.6.0 +pytest-runner==5.2 +python-apt==1.8.4.3 +python-dateutil==2.7.3 +python-debian==0.1.35 +python-magic==0.4.16 +pytz==2019.1 +pyxdg==0.25 +pyyaml==5.4.1 +redis==4.5.1 +regex==2022.10.31 +requests==2.21.0 +roman==2.0.0 +secretstorage==2.3.1 +setuptools==49.6.0 +six==1.12.0 +sphinx==1.8.4 +sphinx-rtd-theme==0.4.3 +typing_extensions==4.5.0 +unattended-upgrades==0.1 +unidiff==0.5.4 +urllib3==1.24.1 +wheel==0.35.1 +zipp==3.14.0 diff --git a/files/build/versions/host-base-image/versions-deb-bullseye b/files/build/versions/host-base-image/versions-deb-bullseye new file mode 100644 index 000000000000..be4a5752d1ec --- /dev/null +++ b/files/build/versions/host-base-image/versions-deb-bullseye @@ -0,0 +1,96 @@ +adduser==3.118 +apt==2.2.4 +base-files==11.1+deb11u6 +base-passwd==3.5.51 +bash==5.1-2+deb11u1 +bsdutils==1:2.36.1-8+deb11u1 +coreutils==8.32-4+b1 +dash==0.5.11+git20200708+dd9ef66-5 +debconf==1.5.77 +debian-archive-keyring==2021.1.1 +debianutils==4.11.2 +diffutils==1:3.7-5 +dpkg==1.20.12 +e2fsprogs==1.46.2-2 +findutils==4.8.0-1 +gcc-10-base==10.2.1-6 +gcc-9-base==9.3.0-22 +gpgv==2.2.27-2+deb11u2 +grep==3.6-1 +gzip==1.10-4+deb11u1 +hostname==3.23 +init-system-helpers==1.60 +libacl1==2.2.53-10 +libapt-pkg6.0==2.2.4 +libattr1==1:2.4.48-6 +libaudit-common==1:3.0-2 +libaudit1==1:3.0-2 +libblkid1==2.36.1-8+deb11u1 +libbz2-1.0==1.0.8-4 +libc-bin==2.31-13+deb11u5 +libc6==2.31-13+deb11u5 +libcap-ng0==0.7.9-2.2+b1 +libcom-err2==1.46.2-2 +libcrypt1==1:4.4.18-4 +libdb5.3==5.3.28+dfsg1-0.8 +libdebconfclient0==0.260 +libext2fs2==1.46.2-2 +libffi7==3.3-6 +libgcc-s1==10.2.1-6 +libgcrypt20==1.8.7-6 +libgmp10==2:6.2.1+dfsg-1+deb11u1 +libgnutls30==3.7.1-5+deb11u2 +libgpg-error0==1.38-2 +libgssapi-krb5-2==1.18.3-6+deb11u3 +libhogweed6==3.7.3-1 +libidn2-0==2.3.0-5 +libk5crypto3==1.18.3-6+deb11u3 +libkeyutils1==1.6.1-2 +libkrb5-3==1.18.3-6+deb11u3 +libkrb5support0==1.18.3-6+deb11u3 +liblz4-1==1.9.3-2 +liblzma5==5.2.5-2.1~deb11u1 +libmount1==2.36.1-8+deb11u1 +libnettle8==3.7.3-1 +libnsl2==1.3.0-2 +libp11-kit0==0.23.22-1 +libpam-modules==1.4.0-9+deb11u1 +libpam-modules-bin==1.4.0-9+deb11u1 +libpam-runtime==1.4.0-9+deb11u1 +libpam0g==1.4.0-9+deb11u1 +libpcre2-8-0==10.36-2+deb11u1 +libpcre3==2:8.39-13 +libseccomp2==2.5.1-1+deb11u1 +libselinux1==3.1-3 +libsemanage-common==3.1-1 +libsemanage1==3.1-1+b2 +libsepol1==3.1-1 +libsmartcols1==2.36.1-8+deb11u1 +libss2==1.46.2-2 +libssl1.1==1.1.1n-0+deb11u3 +libstdc++6==10.2.1-6 +libsystemd0==247.3-7+deb11u1 +libtasn1-6==4.16.0-2+deb11u1 +libtinfo6==6.2+20201114-2 +libtirpc-common==1.3.1-1+deb11u1 +libtirpc3==1.3.1-1+deb11u1 +libudev1==247.3-7+deb11u1 +libunistring2==0.9.10-4 +libuuid1==2.36.1-8+deb11u1 +libxxhash0==0.8.0-2 +libzstd1==1.4.8+dfsg-2.1 +login==1:4.8.1-1 +logsave==1.46.2-2 +lsb-base==11.1.0 +mawk==1.3.4.20200120-2 +mount==2.36.1-8+deb11u1 +ncurses-base==6.2+20201114-2 +ncurses-bin==6.2+20201114-2 +passwd==1:4.8.1-1 +perl-base==5.32.1-4+deb11u2 +sed==4.7-1 +sysvinit-utils==2.96-7+deb11u1 +tar==1.34+dfsg-1 +tzdata==2021a-1+deb11u8 +util-linux==2.36.1-8+deb11u1 +zlib1g==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/host-base-image/versions-deb-bullseye-arm64 b/files/build/versions/host-base-image/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..89c485cacc41 --- /dev/null +++ b/files/build/versions/host-base-image/versions-deb-bullseye-arm64 @@ -0,0 +1 @@ +coreutils==8.32-4 diff --git a/files/build/versions/host-base-image/versions-deb-bullseye-armhf b/files/build/versions/host-base-image/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..89c485cacc41 --- /dev/null +++ b/files/build/versions/host-base-image/versions-deb-bullseye-armhf @@ -0,0 +1 @@ +coreutils==8.32-4 diff --git a/files/build/versions/host-image/versions-deb-bullseye b/files/build/versions/host-image/versions-deb-bullseye new file mode 100644 index 000000000000..2afa586d76d0 --- /dev/null +++ b/files/build/versions/host-image/versions-deb-bullseye @@ -0,0 +1,338 @@ +acl==2.2.53-10 +apparmor==2.13.6-10 +apt-transport-https==2.2.4 +arping==2.21-2 +audisp-tacplus==1.0.2 +auditd==1:3.0-2 +bash==5.1-2 +bash-completion==1:2.11-2 +bash-tacplus==1.0.0 +bfn-modules==1.0 +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +bridge-utils==1.7-1 +bsdextrautils==2.36.1-8+deb11u1 +bsdmainutils==12.1.7+nmu3 +busybox==1:1.30.1-6+b3 +ca-certificates==20210119 +cgroup-tools==0.41-11 +conntrack==1:1.4.6-2 +containerd.io==1.5.11-1 +cpio==2.13+dfsg-4 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +cracklib-runtime==2.9.6-3.4 +cron==3.0pl1-137 +curl==7.74.0-1.3+deb11u5 +dbus==1.12.24-0+deb11u1 +device-tree-compiler==1.6.0-1 +dirmngr==2.2.27-2+deb11u2 +distro-info-data==0.51+deb11u3 +dmidecode==3.3-2 +dmsetup==2:1.02.175-2.1 +docker-ce==5:20.10.14~3-0~debian-bullseye +docker-ce-cli==5:20.10.14~3-0~debian-bullseye +dpkg-dev==1.20.12 +eatmydata==105-9 +ebtables==2.0.11-4+b1 +efibootmgr==17-1 +fdisk==2.36.1-8+deb11u1 +file==1:5.39-3 +firmware-amd-graphics==20210315-3 +firmware-linux-nonfree==20210315-3 +firmware-misc-nonfree==20210315-3 +flashrom==0.9.7 +fontconfig-config==2.13.1-4.2 +fonts-dejavu-core==2.37-2 +freeipmi-common==1.6.6-4+deb11u1 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +gdisk==1.0.6-1.1 +gettext-base==0.21-4 +gir1.2-glib-2.0==1.66.1-1+b1 +gir1.2-packagekitglib-1.0==1.2.2-2 +gnupg==2.2.27-2+deb11u2 +gnupg-l10n==2.2.27-2+deb11u2 +gnupg-utils==2.2.27-2+deb11u2 +gpg==2.2.27-2+deb11u2 +gpg-agent==2.2.27-2+deb11u2 +gpg-wks-client==2.2.27-2+deb11u2 +gpg-wks-server==2.2.27-2+deb11u2 +gpgconf==2.2.27-2+deb11u2 +gpgsm==2.2.27-2+deb11u2 +grub-common==2.06-3~deb11u5 +grub2-common==2.06-3~deb11u5 +haveged==1.9.14-1 +hdparm==9.60+ds-1 +hping3==3.a2.ds2-10 +hw-management==1.mlnx.7.0020.4104 +i2c-tools==4.2-1+b1 +ifmetric==0.3-5 +ifupdown2==3.0.0-1 +initramfs-tools==0.140 +initramfs-tools-core==0.140 +ipmitool==1.8.18-10.1 +iproute2==5.10.0-4 +iptables==1.8.7-1 +iptables-persistent==1.0.15 +iputils-ping==3:20210202-1 +isc-dhcp-client==4.4.1-2.3+deb11u1 +iso-codes==4.6.0-1 +jq==1.6-2.1 +kdump-tools==1:1.6.8.4 +kernel-mft-dkms-modules-5.10.0-18-2-amd64==4.21.0 +kexec-tools==1:2.0.20-2.1 +klibc-utils==2.0.8-6.1 +kmod==28-1 +less==551-2 +libabsl20200923==0~20200923.3-2 +libapparmor1==2.13.6-10 +libargon2-1==0~20171227-0.2 +libasan6==10.2.1-6 +libassuan0==2.5.3-7.1 +libatomic1==10.2.1-6 +libauparse0==1:3.0-2 +libbabeltrace1==1.5.8-1+b3 +libbinutils==2.35.2-2 +libblkid-dev==2.36.1-8+deb11u1 +libboost-serialization1.74.0==1.74.0-9 +libbpf0==1:0.3-2 +libbrotli1==1.0.9-2+b2 +libbsd0==0.11.3-1 +libc-ares2==1.17.1-1+deb11u1 +libc-l10n==2.31-13+deb11u5 +libcap2==1:2.44-1 +libcap2-bin==1:2.44-1 +libcbor0==0.5.0+dfsg-2 +libcc1-0==10.2.1-6 +libcgroup1==0.41-11 +libcrack2==2.9.6-3.4 +libcryptsetup12==2:2.3.7-1+deb11u1 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl4==7.74.0-1.3+deb11u5 +libdbd-sqlite3-perl==1.66-1+b1 +libdbi-perl==1.643-3+b1 +libdbus-1-3==1.12.24-0+deb11u1 +libdevmapper1.02.1==2:1.02.175-2.1 +libdns-export1110==1:9.11.19+dfsg-2.1 +libdw1==0.183-1 +libeatmydata1==105-9 +libedit2==3.1-20191231-2+b1 +libefiboot1==37-6 +libefivar1==37-6 +libelf1==0.183-1 +libestr0==0.1.10-2.1+b1 +libexpat1==2.2.10-2+deb11u5 +libfastjson4==0.99.9-1 +libfdisk1==2.36.1-8+deb11u1 +libfdt1==1.6.0-1 +libffi-dev==3.3-6 +libfido2-1==1.6.0-2 +libfreeipmi17==1.6.6-4+deb11u1 +libfreetype6==2.10.4+dfsg-1+deb11u1 +libfreetype6-dev==2.10.4+dfsg-1+deb11u1 +libfuse2==2.9.9-5 +libgcc-10-dev==10.2.1-6 +libgdbm-compat4==1.19-2 +libgdbm6==1.19-2 +libgirepository-1.0-1==1.66.1-1+b1 +libglib2.0-0==2.66.8-1 +libgnutls30==3.7.1-5+deb11u3 +libgomp1==10.2.1-6 +libgpm2==1.20.7-8 +libgrpc++1==1.30.2-3 +libgrpc10==1.30.2-3 +libhavege2==1.9.14-1 +libhiredis0.14==0.14.0-3~bpo9+1 +libi2c0==4.2-1+b1 +libiniparser1==4.1-4 +libip4tc2==1.8.7-1 +libip6tc2==1.8.7-1 +libisc-export1105==1:9.11.19+dfsg-2.1 +libisl23==0.23-1 +libitm1==10.2.1-6 +libjansson4==2.13.1-1.1 +libjq1==1.6-2.1 +libjs-jquery==3.5.1+dfsg+~3.5.5-7 +libjson-c5==0.15-2 +libk5crypto3==1.18.3-6+deb11u1+fips +libklibc==2.0.8-6.1 +libkmod2==28-1 +libksba8==1.5.0-3+deb11u2 +libldap-2.4-2==2.4.57+dfsg-3+deb11u1 +liblognorm5==2.0.5-1.1 +liblsan0==10.2.1-6 +liblua5.1-0==5.1.5-8.1+b3 +liblzo2-2==2.10-2 +libmagic-mgc==1:5.39-3 +libmagic1==1:5.39-3 +libmd0==1.0.3-3 +libmnl0==1.0.4-3 +libmpc3==1.2.0-1 +libmpdec3==2.5.1-1 +libmpfr6==4.1.0-3 +libncurses6==6.2+20201114-2 +libncursesw6==6.2+20201114-2 +libnet1==1.1.6+dfsg-3.1 +libnetfilter-conntrack3==1.0.8-3 +libnfnetlink0==1.0.1-3+b1 +libnftnl11==1.1.9-1 +libnghttp2-14==1.43.0-1 +libnl-3-200==3.5.0-1 +libnl-cli-3-200==3.5.0-1 +libnl-genl-3-200==3.5.0-1 +libnl-nf-3-200==3.5.0-1 +libnl-route-3-200==3.5.0-1 +libnorm1==1.5.9+dfsg-2 +libnpth0==1.6-3 +libnss-radius==1.0.1-1 +libnss-tacplus==1.0.4-1 +libnuma1==2.0.12-1+b1 +libonig5==6.9.6-1.1 +libopencsd0==0.14.4-1 +libopts25==1:5.18.16-4 +libpackagekit-glib2-18==1.2.2-2 +libpam-cracklib==1.4.0-9+deb11u1 +libpam-radius-auth==1.4.1-1 +libpam-tacplus==1.4.1-1 +libpcap0.8==1.10.0-2 +libpci3==1:3.7.0-5 +libperl5.32==5.32.1-4+deb11u2 +libpgm-5.3-0==5.3.128~dfsg-2 +libpng16-16==1.6.37-3 +libpopt0==1.18-2 +libprocps8==2:3.3.17-5 +libprotobuf23==3.12.4-1 +libpsl5==0.21.0-1.2 +libpython3-stdlib==3.9.2-3 +libpython3.9==3.9.2-1 +libpython3.9-minimal==3.9.2-1 +libpython3.9-stdlib==3.9.2-1 +libquadmath0==10.2.1-6 +libreadline8==8.1-1 +librtmp1==2.4+20151223.gitfa8646d.1-2+b2 +libsasl2-2==2.1.27+dfsg-2.1+deb11u1 +libsasl2-modules-db==2.1.27+dfsg-2.1+deb11u1 +libsensors-config==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libslang2==2.3.2-5 +libsodium23==1.0.18-1 +libsqlite3-0==3.34.1-3 +libssh2-1==1.9.0-2 +libssl1.1==1.1.1n-0+deb11u4+fips +libswsscommon==1.0.0 +libsysfs2==2.1.0+repack-7 +libtac2==1.4.1-1 +libtcl8.6==8.6.11+dfsg-1 +libtsan0==10.2.1-6 +libubootenv-tool==0.3.2-0.1 +libubootenv0.1==0.3.2-0.1 +libubsan1==10.2.1-6 +libunwind8==1.3.2-2 +libusb-1.0-0==2:1.0.24-3 +libutempter0==1.2.1-2 +libwrap0==7.6.q-31 +libxtables12==1.8.7-1 +libyaml-0-2==0.2.2-1 +libyang==1.0.73 +libyang-cpp==1.0.73 +libzmq5==4.3.4-1 +linux-base==4.6 +linux-image-5.10.0-18-2-amd64-unsigned==5.10.140-1 +linux-perf==5.10.162-1 +linux-perf-5.10==5.10.162-1 +locales==2.31-13+deb11u5 +logrotate==3.18.0-2+deb11u1 +lsb-release==11.1.0 +lsof==4.93.2+dfsg-1.1 +makedev==2.3.1-94.1 +makedumpfile==1:1.6.8-4 +media-types==4.0.0 +mft==4.21.0-100 +mft-oem==4.21.0-100 +monit==1:5.20.0-6 +mtd-utils==1:2.1.2-2 +mtr-tiny==0.94-1+deb11u1 +ncal==12.1.7+nmu3 +ndisc6==1.0.4-2 +net-tools==1.60+git20181103.0eebece-1 +netbase==6.3 +netfilter-persistent==1.0.15 +ntp==1:4.2.8p15+dfsg-1+deb10u2 +ntpstat==0.0.0.1-2+b1 +opennsl-modules==7.1.0.0 +openssh-client==1:8.4p1-5+deb11u1+fips +openssh-server==1:8.4p1-5+deb11u1+fips +openssh-sftp-server==1:8.4p1-5+deb11u1+fips +openssl==1.1.1n-0+deb11u4+fips +pci.ids==0.0~2021.02.08-1 +pciutils==1:3.7.0-5 +perl==5.32.1-4+deb11u2 +perl-modules-5.32==5.32.1-4+deb11u2 +picocom==3.1-2+b1 +pinentry-curses==1.1.0-4 +procps==2:3.3.17-5 +psmisc==23.4-2 +python-apt-common==2.2.1 +python-is-python3==3.9.2-1 +python-pip-whl==20.3.4-4+deb11u1 +python3==3.9.2-3 +python3-apt==2.2.1 +python3-dbus==1.2.16-5 +python3-distutils==3.9.2-1 +python3-lib2to3==3.9.2-1 +python3-minimal==3.9.2-3 +python3-pkg-resources==52.0.0-4 +python3-pycurl==7.43.0.6-5 +python3-setuptools==52.0.0-4 +python3-software-properties==0.96.20.2-2.1 +python3-swsscommon==1.0.0 +python3-wheel==0.34.2-1 +python3-yang==1.0.73 +python3.9==3.9.2-1 +python3.9-minimal==3.9.2-1 +rasdaemon==0.6.6-2 +readline-common==8.1-1 +resolvconf==1.87 +rsync==3.2.3-4+deb11u1 +rsyslog==8.2212.0-1~bpo11+1 +runit-helper==2.10.3 +screen==4.8.0-6 +sensible-utils==0.0.14 +smartmontools==7.2-1 +software-properties-common==0.96.20.2-2.1 +sonic-db-cli==1.0.0 +sonic-device-data==1.0-1 +sonic-host-services-data==1.0-1 +sonic-platform-pddf==1.1 +sonic-rsyslog-plugin==1.0.0-0 +sonic-utilities-data==1.0-1 +sqlite3==3.34.1-3 +squashfs-tools==1:4.4-2+deb11u2 +sudo==1.9.5p2-3+deb11u1 +sx-kernel==1.mlnx.4.5.4150 +symcrypt-openssl==0.1 +sysfsutils==2.1.0+repack-7 +sysstat==12.5.2-2 +systemd==247.3-7+deb11u1 +systemd-bootchart==234-1 +systemd-sonic-generator==1.0.0 +systemd-sysv==247.3-7+deb11u1 +tcpdump==4.99.0-2+deb11u1 +tcptraceroute==1.5beta7+debian-4.1+b1 +traceroute==1:2.1.0-2+b1 +u-boot-tools==2021.01+dfsg-5 +ucf==3.0043 +udev==247.3-7+deb11u1 +unzip==6.0-26+deb11u1 +usbutils==1:013-3 +vim==2:8.2.2434-3+deb11u1 +vim-common==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 +wamerican==2019.10.06-1 +x11-common==1:7.7+22 +xxd==2:8.2.2434-3+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 diff --git a/files/build/versions/host-image/versions-deb-bullseye-arm64 b/files/build/versions/host-image/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..d25523f8ea7a --- /dev/null +++ b/files/build/versions/host-image/versions-deb-bullseye-arm64 @@ -0,0 +1,21 @@ +binutils-aarch64-linux-gnu==2.35.2-2 +ebtables==2.0.11-4 +icu-devtools==67.1-7 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libicu-dev==67.1-7 +libicu67==67.1-7 +libnsl-dev==1.3.0-2 +libtirpc-dev==1.3.1-1+deb11u1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxml2-dev==2.9.10+dfsg-6.7+deb11u3 +libxslt1-dev==1.1.34-4+deb11u1 +libxslt1.1==1.1.34-4+deb11u1 +linux-image-5.10.0-18-2-arm64-unsigned==5.10.140-1 +linux-libc-dev==5.10.162-1 +ntpstat==0.0.0.1-2 +picocom==3.1-2 +traceroute==1:2.1.0-2 +tsingma-bsp==1.0 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/host-image/versions-deb-bullseye-armhf b/files/build/versions/host-image/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..3ef35b061779 --- /dev/null +++ b/files/build/versions/host-image/versions-deb-bullseye-armhf @@ -0,0 +1,26 @@ +binutils-arm-linux-gnueabihf==2.35.2-2 +ebtables==2.0.11-4 +icu-devtools==67.1-7 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libicu-dev==67.1-7 +libicu67==67.1-7 +libnsl-dev==1.3.0-2 +libssl1.1==1.1.1n-0+deb11u4 +libtirpc-dev==1.3.1-1+deb11u1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxml2-dev==2.9.10+dfsg-6.7+deb11u3 +libxslt1-dev==1.1.34-4+deb11u1 +libxslt1.1==1.1.34-4+deb11u1 +linux-image-5.10.0-18-2-armmp==5.10.140-1 +linux-libc-dev==5.10.162-1 +mrvlprestera==1.0 +ntpstat==0.0.0.1-2 +openssh-client==1:8.4p1-5+deb11u1 +openssh-server==1:8.4p1-5+deb11u1 +openssh-sftp-server==1:8.4p1-5+deb11u1 +openssl==1.1.1n-0+deb11u4 +picocom==3.1-2 +traceroute==1:2.1.0-2 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/host-image/versions-py3 b/files/build/versions/host-image/versions-py3 new file mode 100644 index 000000000000..53bd5c1fba58 --- /dev/null +++ b/files/build/versions/host-image/versions-py3 @@ -0,0 +1,74 @@ +azure-common==1.1.28 +azure-nspkg==3.0.2 +azure-storage==0.36.0 +bitarray==1.5.3 +blessed==1.20.0 +certifi==2022.12.7 +cffi==1.15.1 +charset-normalizer==3.0.1 +click==7.0 +click-log==0.4.0 +colorful==0.5.5 +cryptography==39.0.1 +dbus-python==1.2.16 +docker==5.0.3 +docker-image-py==0.1.12 +enlighten==1.11.2 +filelock==3.9.0 +grpcio==1.39.0 +grpcio-tools==1.39.0 +idna==3.4 +ijson==2.6.1 +ipaddr==2.2.0 +ipaddress==1.0.23 +j2cli==0.3.10 +jinja2==3.1.2 +jsondiff==2.0.0 +jsonpatch==1.32 +jsonpointer==2.3 +jsonschema==2.6.0 +lazy-object-proxy==1.9.0 +lxml==4.9.1 +m2crypto==0.38.0 +markupsafe==2.1.2 +natsort==6.2.1 +netaddr==0.8.0 +netifaces==0.11.0 +pathtools==0.1.2 +pddf-platform==1.0 +pexpect==4.8.0 +pip==23.0.1 +prefixed==0.7.0 +prettyprinter==0.18.0 +protobuf==3.20.3 +psutil==5.9.4 +ptyprocess==0.7.0 +pyang==2.5.3 +pyangbind==0.8.1 +pycairo==1.23.0 +pycparser==2.21 +pycurl==7.43.0.6 +pygments==2.14.0 +pygobject==3.42.2 +pyroute2==0.5.19 +python-apt==2.2.1 +python-dateutil==2.8.2 +pyyaml==5.4.1 +redis==3.5.3 +regex==2022.10.31 +requests==2.28.2 +scapy==2.4.4 +semantic-version==2.10.0 +setuptools==49.6.0 +six==1.16.0 +systemd-python==235 +tabulate==0.8.2 +thrift==0.13.0 +toposort==1.6 +urllib3==1.26.14 +watchdog==0.10.3 +wcwidth==0.2.6 +websocket-client==1.5.1 +wheel==0.35.1 +www-authenticate==0.9.2 +xmltodict==0.12.0 diff --git a/files/build/versions/host-image/versions-py3-all-armhf b/files/build/versions/host-image/versions-py3-all-armhf new file mode 100644 index 000000000000..4b03e7899eb1 --- /dev/null +++ b/files/build/versions/host-image/versions-py3-all-armhf @@ -0,0 +1 @@ +cryptography==3.3.1 From 39c3f650a7a894ee5a8a2ba7708fdb136bc1062c Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Mon, 27 Feb 2023 12:26:14 +0800 Subject: [PATCH 18/46] [Ci] Support the SONiC reproducible build in Azure Pipelines (#13986) Why I did it [Ci] Support the SONiC reproducible build in Azure Pipelines Enable the reproducible build on master branch Enable the mirror snapshot based build on 202205+ which support snapshot build. How I did it Enable the build flag on Azure Pipelines. How to verify it --- .azure-pipelines/azure-pipelines-repd-build-variables.yml | 4 +--- .azure-pipelines/template-variables.yml | 1 + .github/workflows/label.yml | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.azure-pipelines/azure-pipelines-repd-build-variables.yml b/.azure-pipelines/azure-pipelines-repd-build-variables.yml index af77e97e2ff0..9c742ba19f45 100644 --- a/.azure-pipelines/azure-pipelines-repd-build-variables.yml +++ b/.azure-pipelines/azure-pipelines-repd-build-variables.yml @@ -1,7 +1,5 @@ variables: ${{ if eq(variables['Build.Reason'],'PullRequest') }}: VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=$([[ "$(System.PullRequest.TargetBranch)" =~ ^20[2-9][0-9]{3}$ ]] && echo deb,py2,py3,web,git,docker)' - ${{ elseif ne(variables['Build.SourceBranchName'],'master') }}: - VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' ${{ else }}: - VERSION_CONTROL_OPTIONS: '' + VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' diff --git a/.azure-pipelines/template-variables.yml b/.azure-pipelines/template-variables.yml index 42d46182d263..934693196807 100644 --- a/.azure-pipelines/template-variables.yml +++ b/.azure-pipelines/template-variables.yml @@ -6,3 +6,4 @@ variables: SONIC_BUILD_RETRY_INTERVAL: 600 DOCKER_BUILDKIT: 0 DOCKER_BUILD_TIMEOUT: 3600 + MIRROR_SNAPSHOT: y diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index b00d61870882..04601ca65f23 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -12,6 +12,7 @@ on: - opened - reopened branches: + - master - '202012' - '202[1-9][0-9][0-9]' - '20[3-9][0-9][0-9][0-9]' From 8d0d3e57baaaa8f2b1d4219fce71b3c86f9f1f51 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Mon, 27 Feb 2023 13:45:49 +0800 Subject: [PATCH 19/46] [ci/build]: Upgrade SONiC package versions (#13989) Upgrade SONiC Versions --- .../versions-deb-bullseye | 1 - .../versions-deb-bullseye-armhf | 1 - .../versions-py3-all-armhf | 1 + files/build/versions/default/versions-git | 8 +++---- files/build/versions/default/versions-mirror | 22 +++++++++---------- .../versions-deb-bullseye | 2 +- .../docker-base-buster/versions-deb-buster | 4 ++-- .../dockers/docker-ptf/versions-deb-buster | 12 +++++----- .../versions-deb-buster | 2 +- .../docker-sonic-mgmt-framework/versions-py3 | 2 +- .../dockers/docker-sonic-vs/versions-py3 | 2 +- .../versions-deb-bullseye | 20 ++++++++--------- .../sonic-slave-buster/versions-deb-buster | 18 +++++++-------- .../versions-deb-buster-arm64 | 2 -- .../versions-deb-buster-armhf | 2 -- .../dockers/sonic-slave-buster/versions-py3 | 2 +- .../versions/host-image/versions-deb-bullseye | 2 +- 17 files changed, 49 insertions(+), 54 deletions(-) diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye index de2195d8a82b..d5feb4c69733 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye @@ -40,7 +40,6 @@ linux-headers-5.10.0-18-2-common==5.10.140-1 lldpd==1.0.4-1 lm-sensors==1:3.6.0-7 mft==4.21.0-100 -mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 net-tools==1.60+git20181103.0eebece-1 python-thrift==0.11.0-4 python3-swsscommon==1.0.0 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf index e593594e45da..ea31993a2e6b 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf @@ -1,4 +1,3 @@ libnl-3-200==3.5.0-1 libnl-route-3-200==3.5.0-1 linux-headers-5.10.0-18-2-armmp==5.10.140-1 -mrvllibsai==1.10.2-1 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf index 361cc9f7c561..defcd2f93cb6 100644 --- a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf @@ -3,3 +3,4 @@ click==7.0 lxml==4.9.1 redis==3.5.3 requests==2.28.2 +zipp==1.2.0 diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git index 8456d414e394..9c65ba0d6da0 100644 --- a/files/build/versions/default/versions-git +++ b/files/build/versions/default/versions-git @@ -1,11 +1,11 @@ -https://chromium.googlesource.com/chromium/tools/depot_tools.git==4756d7c420fa4b6ecd8f9776638de7c7301f021b +https://chromium.googlesource.com/chromium/tools/depot_tools.git==9144b67c7f037577516ebdfe220997560bd01e14 https://github.com/aristanetworks/swi-tools.git==b5f087e4774168bf536360d43c9c509c8f14ad9f https://github.com/CESNET/libyang.git==d57c8888922d1663508ad0f0a5b66f8ad600276d https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 -https://github.com/flashrom/flashrom.git==f4ddd32343300fada0adddfce6c4cb4dc1e329b6 -https://github.com/FreeRADIUS/freeradius-server.git==79a2441f4f570ed4df2125ca2bb17740f51b1637 +https://github.com/flashrom/flashrom.git==3b16ce087ed3f4bfeed19db9d2115615b55097e5 +https://github.com/FreeRADIUS/freeradius-server.git==bdaf25704496c31ddb53af30074943cddcf60e14 https://github.com/FreeRADIUS/pam_radius.git==bcafcf535c763ee193ce7803a56cddb929db04cb https://github.com/jeroennijhof/pam_tacplus.git==7908a7faa0205beda9ea198bdd3aa37868be6da2 https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 @@ -14,7 +14,7 @@ https://github.com/Marvell-switching/mrvl-prestera.git==9dbae444204a2c27b33be698 https://github.com/Mellanox/libpsample.git==62bb27d9a49424e45191eee81df7ce0d8c74e774 https://github.com/p4lang/ptf.git==7494366607e2e4c171439df3585eba3c9769fad8 https://github.com/p4lang/scapy-vxlan.git==85ffe83da156568ee47a0750f638227e6e1d7479 -https://github.com/sflow/host-sflow==6889a0914b821c8dcfd0e37794196f5c7d017221 +https://github.com/sflow/host-sflow==e026e2b57f3c7736a75cd1278f7867fb5e5006ee https://github.com/sflow/sflowtool==8c914e79ecb7930adcba2e5296041c3f9eb8e450 https://github.com/thom311/libnl==cbafad9ddf24caef5230fef715d34f0539603be0 https://salsa.debian.org/debian/libteam.git==48142125234a665ad5367b724af36a58fb484d3d diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror index a5d51c7a31df..899a92992c8d 100644 --- a/files/build/versions/default/versions-mirror +++ b/files/build/versions/default/versions-mirror @@ -1,15 +1,15 @@ deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z -debian==20230222T000216Z -debian-security==20230222T000222Z -download.docker.com_linux_debian_dists_bullseye==2023-02-16T23:33:39Z +debian==20230225T000212Z +debian-security==20230225T000223Z +download.docker.com_linux_debian_dists_bullseye==2023-02-23T17:33:12Z download.docker.com_linux_debian_dists_buster==2023-02-16T23:33:39Z packages.microsoft.com_repos_sonic-dev_dists_jessie==2019-05-26T14:59:06Z -packages.trafficmanager.net_snapshot_debian-security_20230222T000222Z_dists_bullseye-security==2023-02-21T22:53:06Z -packages.trafficmanager.net_snapshot_debian-security_20230222T000222Z_dists_buster_updates==2023-02-21T22:53:06Z -packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_bullseye==2022-12-17T10:14:37Z -packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_bullseye-backports==2023-02-21T20:12:14Z -packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_bullseye-updates==2023-02-21T20:12:14Z -packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_buster==2022-09-10T11:30:54Z -packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_buster-backports==2023-02-21T20:12:14Z -packages.trafficmanager.net_snapshot_debian_20230222T000216Z_dists_buster-updates==2023-02-21T20:12:14Z +packages.trafficmanager.net_snapshot_debian-security_20230225T000223Z_dists_bullseye-security==2023-02-24T23:32:54Z +packages.trafficmanager.net_snapshot_debian-security_20230225T000223Z_dists_buster_updates==2023-02-24T23:32:54Z +packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_bullseye-backports==2023-02-24T20:13:02Z +packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_bullseye-updates==2023-02-24T20:13:02Z +packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_buster-backports==2023-02-24T20:13:02Z +packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_buster-updates==2023-02-24T20:13:02Z diff --git a/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye index b6eeef809d2c..348e4f2a9549 100644 --- a/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye @@ -72,7 +72,7 @@ python3.9-minimal==3.9.2-1 readline-common==8.1-1 redis-tools==5:6.0.16-1+deb11u2 rsync==3.2.3-4+deb11u1 -rsyslog==8.2212.0-1~bpo11+1 +rsyslog==8.2302.0-1~bpo11+1 socat==1.7.4.1-3 symcrypt-openssl==0.1 vim-common==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-base-buster/versions-deb-buster b/files/build/versions/dockers/docker-base-buster/versions-deb-buster index ebb633af4a85..1b2a7d3d3cec 100644 --- a/files/build/versions/dockers/docker-base-buster/versions-deb-buster +++ b/files/build/versions/dockers/docker-base-buster/versions-deb-buster @@ -1,9 +1,9 @@ ca-certificates==20200601~deb10u2 -curl==7.64.0-4+deb10u4 +curl==7.64.0-4+deb10u5 jq==1.5+dfsg-2+b1 less==487-0.1+b1 libatomic1==8.3.0-6 -libcurl4==7.64.0-4+deb10u4 +libcurl4==7.64.0-4+deb10u5 libdaemon0==0.14-7 libdbus-1-3==1.12.24-0+deb10u1 libestr0==0.1.10-2.1 diff --git a/files/build/versions/dockers/docker-ptf/versions-deb-buster b/files/build/versions/dockers/docker-ptf/versions-deb-buster index 6a366dfc8847..e8ac9d645db2 100644 --- a/files/build/versions/dockers/docker-ptf/versions-deb-buster +++ b/files/build/versions/dockers/docker-ptf/versions-deb-buster @@ -16,7 +16,7 @@ cmake-data==3.13.4-1 cpp==4:8.3.0-1 cpp-8==8.3.0-6 cron==3.0pl1-134+deb10u1 -curl==7.64.0-4+deb10u4 +curl==7.64.0-4+deb10u5 dbus==1.12.24-0+deb10u1 dh-python==3.20190308 dirmngr==2.2.12-1+deb10u2 @@ -41,8 +41,8 @@ gcc==4:8.3.0-1 gcc-8==8.3.0-6 gdb==8.2.1-2+b3 gir1.2-glib-2.0==1.58.3-2 -git==1:2.20.1-2+deb10u7 -git-man==1:2.20.1-2+deb10u7 +git==1:2.20.1-2+deb10u8 +git-man==1:2.20.1-2+deb10u8 gnupg==2.2.12-1+deb10u2 gnupg-l10n==2.2.12-1+deb10u2 gnupg-utils==2.2.12-1+deb10u2 @@ -88,8 +88,8 @@ libcryptsetup12==2:2.1.0-5+deb10u2 libcups2==2.2.10-6+deb10u6 libcupsfilters1==1.21.6-5 libcupsimage2==2.2.10-6+deb10u6 -libcurl3-gnutls==7.64.0-4+deb10u4 -libcurl4==7.64.0-4+deb10u4 +libcurl3-gnutls==7.64.0-4+deb10u5 +libcurl4==7.64.0-4+deb10u5 libdaemon0==0.14-7 libdata-dump-perl==1.23-1 libdatrie1==0.2.12-2 @@ -409,7 +409,7 @@ python3==3.7.3-1 python3-asn1crypto==0.24.0-1 python3-cffi-backend==1.12.2-1 python3-crypto==2.6.1-9+b1 -python3-cryptography==2.6.1-3+deb10u3 +python3-cryptography==2.6.1-3+deb10u4 python3-cycler==0.10.0-1 python3-dateutil==2.7.3-3 python3-dbus==1.2.8-3 diff --git a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster index d42e2ff2adf0..83853c32f130 100644 --- a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster +++ b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster @@ -4,7 +4,7 @@ libbabeltrace1==1.5.6-2+deb10u1 libbsd0==0.9.1-2+deb10u1 libcjson-dev==1.7.10-1.1+deb10u1 libcjson1==1.7.10-1.1+deb10u1 -libcurl3-gnutls==7.64.0-4+deb10u4 +libcurl3-gnutls==7.64.0-4+deb10u5 libdw1==0.176-1.1 libedit2==3.1-20181209-1 libglib2.0-0==2.58.3-2+deb10u4 diff --git a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 index 0ac9314dd692..c087795c6b30 100644 --- a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 +++ b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 @@ -29,4 +29,4 @@ six==1.11.0 typing_extensions==4.5.0 urllib3==1.26.5 werkzeug==2.2.3 -zipp==3.14.0 +zipp==3.15.0 diff --git a/files/build/versions/dockers/docker-sonic-vs/versions-py3 b/files/build/versions/dockers/docker-sonic-vs/versions-py3 index 96261a30e4b4..c4f1483a4f38 100644 --- a/files/build/versions/dockers/docker-sonic-vs/versions-py3 +++ b/files/build/versions/dockers/docker-sonic-vs/versions-py3 @@ -37,4 +37,4 @@ urllib3==1.26.14 wcwidth==0.2.6 websocket-client==1.5.1 www-authenticate==0.9.2 -zipp==3.14.0 +zipp==3.15.0 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye index dfea190aca87..f09cc65f3875 100644 --- a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye @@ -153,9 +153,9 @@ gir1.2-gtk-3.0==3.24.24-4+deb11u2 gir1.2-harfbuzz-0.0==2.7.4-1 gir1.2-packagekitglib-1.0==1.2.2-2 gir1.2-pango-1.0==1.46.2-3 -git==1:2.30.2-1+deb11u1 +git==1:2.30.2-1+deb11u2 git-buildpackage==0.9.22 -git-man==1:2.30.2-1+deb11u1 +git-man==1:2.30.2-1+deb11u2 glib-networking==2.66.0-2 glib-networking-common==2.66.0-2 glib-networking-services==2.66.0-2 @@ -1151,7 +1151,7 @@ libthai-dev==0.1.28-3 libthai0==0.1.28-3 libtheora0==1.1.1+dfsg.1-15 libtie-ixhash-perl==1.23-2.1 -libtiff5==4.2.0-1+deb11u3 +libtiff5==4.2.0-1+deb11u4 libtime-duration-perl==1.21-1 libtime-moment-perl==0.44-1+b3 libtimedate-perl==2.3300-2 @@ -1455,13 +1455,13 @@ php-timer==5.0.3-2 php-tokenizer==1.2.0-1 php-webmozart-assert==1.9.1-2 php-xml==2:7.4+76 -php7.4-cli==7.4.33-1+deb11u1 -php7.4-common==7.4.33-1+deb11u1 -php7.4-json==7.4.33-1+deb11u1 -php7.4-mbstring==7.4.33-1+deb11u1 -php7.4-opcache==7.4.33-1+deb11u1 -php7.4-readline==7.4.33-1+deb11u1 -php7.4-xml==7.4.33-1+deb11u1 +php7.4-cli==7.4.33-1+deb11u3 +php7.4-common==7.4.33-1+deb11u3 +php7.4-json==7.4.33-1+deb11u3 +php7.4-mbstring==7.4.33-1+deb11u3 +php7.4-opcache==7.4.33-1+deb11u3 +php7.4-readline==7.4.33-1+deb11u3 +php7.4-xml==7.4.33-1+deb11u3 phpunit==9.5.2-1 phpunit-cli-parser==1.0.1-1 phpunit-code-unit==1.0.8-1 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster index 1f975ea9705b..b9095496c4f2 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster @@ -56,7 +56,7 @@ cpp==4:8.3.0-1 cpp-8==8.3.0-6 cppcheck==1.86-1 cron==3.0pl1-134+deb10u1 -curl==7.64.0-4+deb10u4 +curl==7.64.0-4+deb10u5 dbus==1.12.24-0+deb10u1 dbus-user-session==1.12.24-0+deb10u1 dconf-gsettings-backend==0.30.1-2 @@ -154,9 +154,9 @@ gir1.2-gtk-3.0==3.24.5-1 gir1.2-harfbuzz-0.0==2.3.1-1 gir1.2-packagekitglib-1.0==1.1.12-5 gir1.2-pango-1.0==1.42.4-8~deb10u1 -git==1:2.20.1-2+deb10u7 +git==1:2.20.1-2+deb10u8 git-buildpackage==0.9.14 -git-man==1:2.20.1-2+deb10u7 +git-man==1:2.20.1-2+deb10u8 glib-networking==2.58.0-2+deb10u2 glib-networking-common==2.58.0-2+deb10u2 glib-networking-services==2.58.0-2+deb10u2 @@ -414,10 +414,10 @@ libcunit1-dev==2.1-3-dfsg-2+b12 libcups2==2.2.10-6+deb10u6 libcupsfilters1==1.21.6-5 libcupsimage2==2.2.10-6+deb10u6 -libcurl3-gnutls==7.64.0-4+deb10u4 -libcurl3-nss==7.64.0-4+deb10u4 -libcurl4==7.64.0-4+deb10u4 -libcurl4-nss-dev==7.64.0-4+deb10u4 +libcurl3-gnutls==7.64.0-4+deb10u5 +libcurl3-nss==7.64.0-4+deb10u5 +libcurl4==7.64.0-4+deb10u5 +libcurl4-nss-dev==7.64.0-4+deb10u5 libdaemon-dev==0.14-7 libdaemon0==0.14-7 libdata-dump-perl==1.23-1 @@ -1498,7 +1498,7 @@ python-constantly==15.1.0-1 python-cov-core==1.15.0-2 python-coverage==4.5.2+dfsg.1-1 python-crypto==2.6.1-9+b1 -python-cryptography==2.6.1-3+deb10u3 +python-cryptography==2.6.1-3+deb10u4 python-dbus==1.2.8-3 python-dev==2.7.16-1 python-docutils==0.14+dfsg-4 @@ -1590,7 +1590,7 @@ python3-chardet==3.0.4-3 python3-cov-core==1.15.0-2 python3-coverage==4.5.2+dfsg.1-1 python3-crypto==2.6.1-9+b1 -python3-cryptography==2.6.1-3+deb10u3 +python3-cryptography==2.6.1-3+deb10u4 python3-dateutil==2.7.3-3 python3-dbg==3.7.3-1 python3-dbus==1.2.8-3 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 index bc9abc9f92f5..36d10bb078b2 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 @@ -5,5 +5,3 @@ libdrm-tegra0==2.4.97-1 libtext-iconv-perl==1.7-5+b6 libxslt1-dev==1.1.32-2.2~deb10u2 nodejs==14.21.3-deb-1nodesource1 -python-cryptography==2.6.1-3+deb10u2 -python3-cryptography==2.6.1-3+deb10u2 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf index 4847dd8d2c16..0bc0aa6909b1 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf @@ -8,5 +8,3 @@ libgles2-mesa-dev==18.3.6-2+deb10u1 libxslt1-dev==1.1.32-2.2~deb10u2 linux-compiler-gcc-8-arm==4.19.269-1 nodejs==14.21.3-deb-1nodesource1 -python-cryptography==2.6.1-3+deb10u2 -python3-cryptography==2.6.1-3+deb10u2 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-py3 b/files/build/versions/dockers/sonic-slave-buster/versions-py3 index 940dbf658838..9e34cdb7f7e2 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-py3 +++ b/files/build/versions/dockers/sonic-slave-buster/versions-py3 @@ -78,4 +78,4 @@ unattended-upgrades==0.1 unidiff==0.5.4 urllib3==1.24.1 wheel==0.35.1 -zipp==3.14.0 +zipp==3.15.0 diff --git a/files/build/versions/host-image/versions-deb-bullseye b/files/build/versions/host-image/versions-deb-bullseye index 2afa586d76d0..6bffe05631da 100644 --- a/files/build/versions/host-image/versions-deb-bullseye +++ b/files/build/versions/host-image/versions-deb-bullseye @@ -298,7 +298,7 @@ rasdaemon==0.6.6-2 readline-common==8.1-1 resolvconf==1.87 rsync==3.2.3-4+deb11u1 -rsyslog==8.2212.0-1~bpo11+1 +rsyslog==8.2302.0-1~bpo11+1 runit-helper==2.10.3 screen==4.8.0-6 sensible-utils==0.0.14 From 36f374598838fabef7f4918227053f709664c9ae Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Mon, 27 Feb 2023 14:34:23 +0800 Subject: [PATCH 20/46] [ci] Fix SONiC cache build pipeline, which breaks for template change. (#13945) Why I did it It is affected by recent PR which changed pipeline template reference. pipeline failed. How I did it --- .azure-pipelines/official-build-cache.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.azure-pipelines/official-build-cache.yml b/.azure-pipelines/official-build-cache.yml index 94fd48ede501..99b36dbdff89 100644 --- a/.azure-pipelines/official-build-cache.yml +++ b/.azure-pipelines/official-build-cache.yml @@ -11,6 +11,14 @@ schedules: - master - 202012 +resources: + repositories: + - repository: buildimage + type: github + name: sonic-net/sonic-buildimage + ref: master + endpoint: sonic-net + trigger: none pr: none @@ -20,7 +28,8 @@ stages: variables: - name: CACHE_MODE value: cache - - template: azure-pipelines-repd-build-variables.yml + - template: .azure-pipelines/azure-pipelines-repd-build-variables.yml@buildimage + - template: .azure-pipelines/template-variables.yml@buildimage jobs: - template: azure-pipelines-build.yml parameters: From 2566f7869970c386e2053765a0f5f83b15364e71 Mon Sep 17 00:00:00 2001 From: Dror Prital <76714716+dprital@users.noreply.github.com> Date: Mon, 27 Feb 2023 19:33:14 +0200 Subject: [PATCH 21/46] [submodule] Advance sonic-linux-kernel pointer (#13955) Update sonic-linux-kernel submodule pointer to include the following: * 4c2d457 Fixes for emmc unreliability ([#270](https://github.com/sonic-net/sonic-linux-kernel/pull/270)) Signed-off-by: dprital --- 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 464d2cdbb9d6..4c2d4572cebc 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit 464d2cdbb9d6283124babcbb4b0df3aca0b53d68 +Subproject commit 4c2d4572cebc05222da515b1dcf08510197d9ae8 From f641c80c7c829ef1c091c6386bdf20e126368a06 Mon Sep 17 00:00:00 2001 From: Dror Prital <76714716+dprital@users.noreply.github.com> Date: Mon, 27 Feb 2023 19:33:39 +0200 Subject: [PATCH 22/46] [submodule] Advance sonic-platform-common pointer (#13952) Update sonic-platform-common submodule pointer to include the following: * 85c20cd Update host electrical interface for 2x100G AOC ([#346](https://github.com/sonic-net/sonic-platform-common/pull/346)) Signed-off-by: dprital From 94cfe83149c91e1721f7a94a7be5f783fd770ebb Mon Sep 17 00:00:00 2001 From: Dror Prital <76714716+dprital@users.noreply.github.com> Date: Mon, 27 Feb 2023 19:34:09 +0200 Subject: [PATCH 23/46] [submodule] Advance sonic-swss-common pointer (#13950) Update sonic-swss-common submodule pointer to include the following: * 565ad4b Fix common path issue ([#751](https://github.com/sonic-net/sonic-swss-common/pull/751)) * 3352881 Prevent sonic-db-cli generate core dump ([#749](https://github.com/sonic-net/sonic-swss-common/pull/749)) * 43cadec Add ProfileProvider class to support read profile config from PROFILE_DB. ([#683](https://github.com/sonic-net/sonic-swss-common/pull/683)) * 8b09f90 Update path to sairedis tests ([#747](https://github.com/sonic-net/sonic-swss-common/pull/747)) * 85f3776 Non recursive automake and Debian packaging changes ([#700](https://github.com/sonic-net/sonic-swss-common/pull/700)) Signed-off-by: dprital --- 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 6b6842a96905..565ad4ba30ce 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit 6b6842a9690507d300a5beb4c0baff47094c94a5 +Subproject commit 565ad4ba30ce4141229a00024afdab83e3ebc54e From 8883259673c6f18713d43e86dd50e7dde1e7450b Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Mon, 27 Feb 2023 15:41:22 -0800 Subject: [PATCH 24/46] [netlink] Increse netlink buffer size from 3MB to 16MB (#13965) #### Why I did it Following the PR https://github.com/sonic-net/sonic-swss-common/pull/739 increasing netlink buffer size in linux kernel As error is seen in fdbsyncd with netlink reports "out of memory on reading a netlink socket" It is seen when kernel is sending 10k remote mac to fdbsyncd. #### How I did it Increase the buffer size of the netlink buffer from 3MB to 16MB #### How to verify it Verified with 10k remote mac, and restarting the fdbsyncd process. So that kernel send the bridge fdb dump to the fdbsyncd. Verified that the netlink buffer error is not reported in the sys log. --- files/image_config/sysctl/sysctl-net.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/image_config/sysctl/sysctl-net.conf b/files/image_config/sysctl/sysctl-net.conf index 1a2cc35ad491..3e7c0811200a 100644 --- a/files/image_config/sysctl/sysctl-net.conf +++ b/files/image_config/sysctl/sysctl-net.conf @@ -34,7 +34,7 @@ net.ipv6.conf.all.keep_addr_on_down=1 net.ipv6.conf.eth0.keep_addr_on_down=1 net.ipv4.tcp_l3mdev_accept=1 net.ipv4.udp_l3mdev_accept=1 -net.core.rmem_max=3145728 -net.core.wmem_max=3145728 +net.core.rmem_max=16777216 +net.core.wmem_max=16777216 net.core.somaxconn=512 net.ipv4.fib_multipath_use_neigh=1 From 165e33b4e4b8415c357a20ff6613e7abeb798695 Mon Sep 17 00:00:00 2001 From: Zain Budhwani <99770260+zbud-msft@users.noreply.github.com> Date: Tue, 28 Feb 2023 15:56:54 -0800 Subject: [PATCH 25/46] Remove dialout as critical process (#14006) #### Why I did it Remove dialout as critical process as it is no longer used in prod. As part of future work, can remove dialout completely #### How I did it Remove from critical process list --- dockers/docker-sonic-telemetry/critical_processes | 1 - 1 file changed, 1 deletion(-) diff --git a/dockers/docker-sonic-telemetry/critical_processes b/dockers/docker-sonic-telemetry/critical_processes index 612a94d9edac..3baf6e268907 100644 --- a/dockers/docker-sonic-telemetry/critical_processes +++ b/dockers/docker-sonic-telemetry/critical_processes @@ -1,2 +1 @@ program:telemetry -program:dialout From fabb30f2e98db967064daed757aeb221bee0c323 Mon Sep 17 00:00:00 2001 From: Hua Liu <58683130+liuh-80@users.noreply.github.com> Date: Tue, 28 Feb 2023 18:01:49 -0800 Subject: [PATCH 26/46] Fix swsscommon psubscribe code break in frrcfgd (#13836) Fix swsscommon psubscribe code break in frrcfgd #### Why I did it Fix frrcfgd psubscribe code break: https://github.com/sonic-net/sonic-buildimage/issues/13109 The code issue caused by API change when migrate from swsssdk to swsscommon #### How I did it Fix frrcfgd code to use swsscommon psubscribe API. #### How to verify it Pass all UT. Manually check fixed code work correctly. --- .../frrcfgd/frrcfgd.py | 23 ++++++++++++++++--- .../tests/test_config.py | 6 ++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py b/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py index bb6d7730f141..6bee64a6d4ba 100755 --- a/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py +++ b/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py @@ -1445,6 +1445,7 @@ class ExtConfigDBConnector(ConfigDBConnector): def __init__(self, ns_attrs = None): super(ExtConfigDBConnector, self).__init__() self.nosort_attrs = ns_attrs if ns_attrs is not None else {} + self.__listen_thread_running = False def raw_to_typed(self, raw_data, table = ''): if len(raw_data) == 0: raw_data = None @@ -1469,12 +1470,28 @@ def sub_msg_handler(self, msg_item): except Exception as e: syslog.syslog(syslog.LOG_ERR, '[bgp cfgd] Failed handling config DB update with exception:' + str(e)) logging.exception(e) + + def listen_thread(self, timeout): + self.__listen_thread_running = True + sub_key_space = "__keyspace@{}__:*".format(self.get_dbid(self.db_name)) + self.pubsub.psubscribe(sub_key_space) + while self.__listen_thread_running: + msg = self.pubsub.get_message(timeout, True) + if msg: + self.sub_msg_handler(msg) + + self.pubsub.punsubscribe(sub_key_space) + def listen(self): """Start listen Redis keyspace events and will trigger corresponding handlers when content of a table changes. """ self.pubsub = self.get_redis_client(self.db_name).pubsub() - self.pubsub.psubscribe(**{"__keyspace@{}__:*".format(self.get_dbid(self.db_name)): self.sub_msg_handler}) - self.sub_thread = self.pubsub.run_in_thread(sleep_time = 0.01) + self.sub_thread = threading.Thread(target=self.listen_thread, args=(0.01,)) + self.sub_thread.start() + + def stop_listen(self): + self.__listen_thread_running = False + @staticmethod def get_table_key(table, key): return table + '&&' + key @@ -3774,7 +3791,7 @@ def start(self): self.subscribe_all() self.config_db.listen() def stop(self): - self.config_db.sub_thread.stop() + self.config_db.stop_listen() if self.config_db.sub_thread.is_alive(): self.config_db.sub_thread.join() diff --git a/src/sonic-frr-mgmt-framework/tests/test_config.py b/src/sonic-frr-mgmt-framework/tests/test_config.py index 02c5181c2ce5..02dbf391e99d 100644 --- a/src/sonic-frr-mgmt-framework/tests/test_config.py +++ b/src/sonic-frr-mgmt-framework/tests/test_config.py @@ -14,10 +14,10 @@ def test_contructor(): for table, hdlr in daemon.table_handler_list: daemon.config_db.subscribe.assert_any_call(table, hdlr) daemon.config_db.pubsub.psubscribe.assert_called_once() + assert(daemon.config_db.sub_thread.is_alive() == True) daemon.stop() - daemon.config_db.sub_thread.stop.assert_called() - daemon.config_db.sub_thread.is_alive.assert_called_once() - daemon.config_db.sub_thread.join.assert_called_once() + daemon.config_db.pubsub.punsubscribe.assert_called_once() + assert(daemon.config_db.sub_thread.is_alive() == False) class CmdMapTestInfo: data_buf = {} From bab8230444a62024a93680911c6125f5d338b94b Mon Sep 17 00:00:00 2001 From: Song Yuan <64041228+ysmanman@users.noreply.github.com> Date: Tue, 28 Feb 2023 20:43:12 -0800 Subject: [PATCH 27/46] Add QOS profiles for Arista SKUs (#13829) --- .../Arista-7800R3A-36D2-C36/0/buffers.json.j2 | 2 + .../0/buffers_defaults_t2.j2 | 37 +++++++++++++++++++ .../0/pg_profile_lookup.ini | 17 +++++++++ .../Arista-7800R3A-36D2-C36/0/qos.json.j2 | 1 + .../Arista-7800R3A-36D2-C36/1/buffers.json.j2 | 2 + .../1/buffers_defaults_t2.j2 | 37 +++++++++++++++++++ .../1/pg_profile_lookup.ini | 17 +++++++++ .../Arista-7800R3A-36D2-C36/1/qos.json.j2 | 1 + 8 files changed, 114 insertions(+) create mode 100644 device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers.json.j2 create mode 100644 device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers_defaults_t2.j2 create mode 100644 device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini create mode 100644 device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/qos.json.j2 create mode 100644 device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers.json.j2 create mode 100644 device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers_defaults_t2.j2 create mode 100644 device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini create mode 100644 device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/qos.json.j2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers.json.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers.json.j2 new file mode 100644 index 000000000000..f34a844f4a87 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers.json.j2 @@ -0,0 +1,2 @@ +{%- set default_topo = 't2' %} +{%- include 'buffers_config.j2' %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers_defaults_t2.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers_defaults_t2.j2 new file mode 100644 index 000000000000..e7af0aff4934 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers_defaults_t2.j2 @@ -0,0 +1,37 @@ +{%- set default_cable = '300m' %} + +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {%- for port_idx in range(0,144,8) %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} + {%- endfor %} +{%- endmacro %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "6441610000", + "type": "both", + "mode": "dynamic", + "xoff": "11354112" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"1280", + "xon_offset": "2560", + "dynamic_th":"0" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"33030144" + }, + "egress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"-1" + } + }, +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini new file mode 100644 index 000000000000..e8289ab03112 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 40000 300m 1280 2560 69632 0 1280 + 100000 300m 1280 2560 110592 0 1280 + 400000 300m 1280 2560 315392 0 1280 + 40000 1000m 1280 2560 114688 0 1280 + 100000 1000m 1280 2560 225280 0 1280 + 400000 1000m 1280 2560 778240 0 1280 + 40000 2000m 1280 2560 184320 0 1280 + 100000 2000m 1280 2560 393216 0 1280 + 400000 2000m 1280 2560 1445888 0 1280 + 40000 80000m 1280 2560 5369856 0 1280 + 100000 80000m 1280 2560 13357056 0 1280 + 400000 80000m 1280 2560 53305344 0 1280 + 40000 120000m 1280 2560 8028160 0 1280 + 100000 120000m 1280 2560 20004864 0 1280 + 400000 120000m 1280 2560 79900672 0 1280 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/qos.json.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/qos.json.j2 new file mode 100644 index 000000000000..3e548325ea30 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/qos.json.j2 @@ -0,0 +1 @@ +{%- include 'qos_config.j2' %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers.json.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers.json.j2 new file mode 100644 index 000000000000..f34a844f4a87 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers.json.j2 @@ -0,0 +1,2 @@ +{%- set default_topo = 't2' %} +{%- include 'buffers_config.j2' %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers_defaults_t2.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers_defaults_t2.j2 new file mode 100644 index 000000000000..3555175244d4 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers_defaults_t2.j2 @@ -0,0 +1,37 @@ +{%- set default_cable = '300m' %} + +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {%- for port_idx in range(144,288,8) %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} + {%- endfor %} +{%- endmacro %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "6441610000", + "type": "both", + "mode": "dynamic", + "xoff": "11354112" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"1280", + "xon_offset": "2560", + "dynamic_th":"0" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"33030144" + }, + "egress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"-1" + } + }, +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini new file mode 100644 index 000000000000..e8289ab03112 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 40000 300m 1280 2560 69632 0 1280 + 100000 300m 1280 2560 110592 0 1280 + 400000 300m 1280 2560 315392 0 1280 + 40000 1000m 1280 2560 114688 0 1280 + 100000 1000m 1280 2560 225280 0 1280 + 400000 1000m 1280 2560 778240 0 1280 + 40000 2000m 1280 2560 184320 0 1280 + 100000 2000m 1280 2560 393216 0 1280 + 400000 2000m 1280 2560 1445888 0 1280 + 40000 80000m 1280 2560 5369856 0 1280 + 100000 80000m 1280 2560 13357056 0 1280 + 400000 80000m 1280 2560 53305344 0 1280 + 40000 120000m 1280 2560 8028160 0 1280 + 100000 120000m 1280 2560 20004864 0 1280 + 400000 120000m 1280 2560 79900672 0 1280 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/qos.json.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/qos.json.j2 new file mode 100644 index 000000000000..3e548325ea30 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/qos.json.j2 @@ -0,0 +1 @@ +{%- include 'qos_config.j2' %} From 7781ae5a8ffd963da3861d4add71e233cacf0c40 Mon Sep 17 00:00:00 2001 From: StormLiangMS <89824293+StormLiangMS@users.noreply.github.com> Date: Wed, 1 Mar 2023 13:02:23 +0800 Subject: [PATCH 28/46] Advance sonic-utilities to b8173428 (#14020) b8173428 - [GCU] Add Sample Unit Test for RDMA Headroom Pool Size Tuning ([device/celestica] blacklist gpio_ich kernel module on haliburton #2692) (5 hours ago) [isabelmsft] 6f84aae7 - Add begin logs to config reload/config minigraph/warm-reboot/fast-reboot (RPC syncd docker image does not start RPC server automatically #2694) (27 hours ago) [Junchao-Mellanox] e98011f8 - Revert "Secure upgrade ([sonic-cfggen] Multi-key should be in form of (a,b) instead of 'a|b' #2337)" (Add Broadcom XLR/GTS ((BCM9COMX2XMC) support for Tomahawk switch (BCM956960K) #2675) (34 hours ago) [StormLiangMS] eda4e91b - [show][muxcable] add some new commands health, reset-cause, queue_info support for muxcable (DUT takes more than 7 seconds to finish update ip v6 neighbor #2414) (4 days ago) [vdahiya12] 54e26359 - Replace pickle by json (Add autoneg to 7170-Q59S20 #2636) (4 days ago) [Mai Bui] --- src/sonic-utilities | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-utilities b/src/sonic-utilities index 33e85d37f6ab..b81734289b7c 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit 33e85d37f6abd4e7707d4c2436c9014239ce8d06 +Subproject commit b81734289b7ca361b365cbf1c845d31b0a81657e From f801b8fb2dc33877278d325c1d0a6712d8de4c81 Mon Sep 17 00:00:00 2001 From: Ikki Zhu <79439153+qnos@users.noreply.github.com> Date: Wed, 1 Mar 2023 14:35:53 +0800 Subject: [PATCH 29/46] [Seastone] fix dx010 qsfp eeprom data write issue (#13930) Why I did it Platform cases test_tx_disable, test_tx_disable_channel, test_power_override failed in dx010. How I did it Add i2c access algorithm for CPLD i2c adapters. How to verify it Verify it with platform_tests/api/test_sfp.py::TestSfpApi test cases. --- .../sonic_platform/sfp.py | 2 +- .../dx010/modules/dx010_cpld.c | 206 +++++++++++++++--- 2 files changed, 174 insertions(+), 34 deletions(-) diff --git a/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp.py b/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp.py index ca2448c80dfd..0521ca56480a 100644 --- a/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp.py +++ b/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp.py @@ -1520,7 +1520,7 @@ def get_power_override(self): if dom_control_raw is not None: dom_control_data = sfpd_obj.parse_control_bytes( dom_control_raw, 0) - return ('On' == dom_control_data['data']['PowerOverride']) + return ('On' == dom_control_data['data']['PowerOverride']['value']) else: return False else: diff --git a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/dx010_cpld.c b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/dx010_cpld.c index d8142777c6e1..3cdfb3939558 100644 --- a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/dx010_cpld.c +++ b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/dx010_cpld.c @@ -1,7 +1,7 @@ /* * dx010_cpld.c - driver for SeaStone's CPLD * - * Copyright (C) 2017 Celestica Corp. + * Copyright (C) 2023 Celestica Corp. * * 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 @@ -120,11 +120,11 @@ #define SSRR_ID_BANK2 0x296 #define SSRR_ID_BANK3 0x396 -#define HST_CNTL2_QUICK 0x00 -#define HST_CNTL2_BYTE 0x01 -#define HST_CNTL2_BYTE_DATA 0x02 -#define HST_CNTL2_WORD_DATA 0x03 -#define HST_CNTL2_BLOCK 0x05 +#define SSRR_MASTER_ERR 0x80 +#define SSRR_BUS_BUSY 0x40 + +#define I2C_BAUD_RATE_100K 0x40 + struct dx010_i2c_data { int portid; @@ -610,6 +610,166 @@ static int i2c_read_eeprom(struct i2c_adapter *a, u16 addr, return error; } + +/** + * Read/Write eeprom of CPLD connected QSFP device. + * @param a i2c adapter. + * @param addr address to read. + * @param new_data QSFP port number struct. + * @param rw read/write flag + * @param cmd i2c command. + * @param size access size + * @return 0 if not error, else the error code. + */ +static int dx010_cpld_i2c_access(struct i2c_adapter *a, u16 addr, + struct dx010_i2c_data *new_data, char rw, + u8 cmd, int size, union i2c_smbus_data *data) +{ + u32 reg; + int ioBase=0; + char byte; + char data_len = 0; + short temp; + short portid, opcode, devaddr, cmdbyte0, ssrr, writedata, readdata; + __u16 word_data; + __u8 byte_data; + int error = -EIO; + + mutex_lock(&cpld_data->cpld_lock); + + if (((new_data->portid >= PORT_BANK1_START) + && (new_data->portid <= PORT_BANK1_END)) + || (new_data->portid == PORT_SFPP1) + || (new_data->portid == PORT_SFPP2)) + { + portid = PORT_ID_BANK1; + opcode = OPCODE_ID_BANK1; + devaddr = DEVADDR_ID_BANK1; + cmdbyte0 = CMDBYT_ID_BANK1; + ssrr = SSRR_ID_BANK1; + writedata = WRITE_ID_BANK1; + readdata = READ_ID_BANK1; + }else if ((new_data->portid >= PORT_BANK2_START) && (new_data->portid <= PORT_BANK2_END)){ + portid = PORT_ID_BANK2; + opcode = OPCODE_ID_BANK2; + devaddr = DEVADDR_ID_BANK2; + cmdbyte0 = CMDBYT_ID_BANK2; + ssrr = SSRR_ID_BANK2; + writedata = WRITE_ID_BANK2; + readdata = READ_ID_BANK2; + }else if ((new_data->portid >= PORT_BANK3_START) && (new_data->portid <= PORT_BANK3_END)){ + portid = PORT_ID_BANK3; + opcode = OPCODE_ID_BANK3; + devaddr = DEVADDR_ID_BANK3; + cmdbyte0 = CMDBYT_ID_BANK3; + ssrr = SSRR_ID_BANK3; + writedata = WRITE_ID_BANK3; + readdata = READ_ID_BANK3; + }else{ + /* Invalid parameter! */ + error = -EINVAL; + goto exit; + } + + if (size == I2C_SMBUS_BYTE || size == I2C_SMBUS_BYTE_DATA) + data_len = 1; + else if (size == I2C_SMBUS_WORD_DATA) + data_len = 2; + else { + error = -EINVAL; + goto exit; + } + + while ((inb(ioBase + ssrr) & SSRR_BUS_BUSY)); + if ((inb(ioBase + ssrr) & SSRR_MASTER_ERR) == SSRR_MASTER_ERR) { + error = -EIO; + /* Read error reset the port */ + outb(0x00, ioBase + ssrr); + udelay(3000); + outb(0x01, ioBase + ssrr); + goto exit; + } + + byte = I2C_BAUD_RATE_100K + new_data->portid; + reg = cmd; + outb(byte, ioBase + portid); + outb(reg, ioBase + cmdbyte0); + byte = (data_len << 4) | 0x1; + outb(byte, ioBase + opcode); + addr = addr << 1; + if (rw == I2C_SMBUS_READ) + { + addr |= 0x01; + outb(addr, ioBase + devaddr); + while ((inb(ioBase + ssrr) & SSRR_BUS_BUSY)) + { + udelay(100); + } + + if ((inb(ioBase + ssrr) & SSRR_MASTER_ERR) == SSRR_MASTER_ERR) { + /* Read error reset the port */ + error = -EIO; + outb(0x00, ioBase + ssrr); + udelay(3000); + outb(0x01, ioBase + ssrr); + goto exit; + } + + temp = ioBase + readdata; + if (data_len == 1) + { + byte_data = inb(temp); + data->byte = byte_data; + } + else if (data_len == 2) + { + word_data = inb(temp); + word_data |= (inb(++temp) << 8); + data->word = word_data; + } + } + else // do i2c write + { + temp = ioBase + writedata; + if (data_len == 1) + { + byte_data = data->byte; + outb(byte_data, temp); + } + else if (data_len == 2) + { + word_data = data->word; + outb((word_data & 0xff), temp); + outb((word_data >> 4), (++temp)); + } + // write dev addr + outb(addr, ioBase + devaddr); + + // check bus access status + while ((inb(ioBase + ssrr) & SSRR_BUS_BUSY)) + { + udelay(100); + } + + if ((inb(ioBase + ssrr) & SSRR_MASTER_ERR) == SSRR_MASTER_ERR) { + /* Read error reset the port */ + error = -EIO; + outb(0x00, ioBase + ssrr); + udelay(3000); + outb(0x01, ioBase + ssrr); + goto exit; + } + } + + mutex_unlock(&cpld_data->cpld_lock); + return 0; + +exit: + mutex_unlock(&cpld_data->cpld_lock); + return error; +} + + static int dx010_i2c_access(struct i2c_adapter *a, u16 addr, unsigned short flags, char rw, u8 cmd, int size, union i2c_smbus_data *data) @@ -624,39 +784,19 @@ static int dx010_i2c_access(struct i2c_adapter *a, u16 addr, /* Map the size to what the chip understands */ switch (size) { - case I2C_SMBUS_QUICK: - size = HST_CNTL2_QUICK; - break; case I2C_SMBUS_BYTE: - size = HST_CNTL2_BYTE; - break; case I2C_SMBUS_BYTE_DATA: - size = HST_CNTL2_BYTE_DATA; - break; case I2C_SMBUS_WORD_DATA: - size = HST_CNTL2_WORD_DATA; - break; - case I2C_SMBUS_BLOCK_DATA: - size = HST_CNTL2_BLOCK; - break; - default: - dev_warn(&a->dev, "Unsupported transaction %d\n", size); - error = -EOPNOTSUPP; - goto Done; - } - - switch (size) { - case HST_CNTL2_BYTE: /* Result put in SMBHSTDAT0 */ - break; - case HST_CNTL2_BYTE_DATA: - break; - case HST_CNTL2_WORD_DATA: - if( 0 == i2c_read_eeprom(a,addr,new_data,cmd,data)){ + if(0 == dx010_cpld_i2c_access(a, addr, new_data, rw, cmd, size, data)){ error = 0; }else{ error = -EIO; } break; + default: + dev_warn(&a->dev, "Unsupported transaction %d\n", size); + error = -EOPNOTSUPP; + goto Done; } Done: @@ -790,6 +930,6 @@ module_init(cel_dx010_lpc_init); module_exit(cel_dx010_lpc_exit); MODULE_AUTHOR("Pradchaya P "); -MODULE_VERSION("1.0.1"); +MODULE_VERSION("1.0.2"); MODULE_DESCRIPTION("Celestica SeaStone DX010 LPC Driver"); -MODULE_LICENSE("GPL"); \ No newline at end of file +MODULE_LICENSE("GPL"); From dcce42c40286e4b1bba361b32f97d3210196c8ba Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Thu, 2 Mar 2023 08:20:39 +0800 Subject: [PATCH 30/46] Check SONiC dependencies before installation. (#13850) Why I did it SONiC related packages shouldn't be intalled from Pypi. It is security compliance requirement. How I did it Check SONiC related packages when using setup.py. How to verify it --- src/sonic-config-engine/setup.py | 23 ++++++++++++++++++++++- src/system-health/setup.py | 22 +++++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/sonic-config-engine/setup.py b/src/sonic-config-engine/setup.py index 3f2b2a240a95..924a39a89ff4 100644 --- a/src/sonic-config-engine/setup.py +++ b/src/sonic-config-engine/setup.py @@ -1,7 +1,13 @@ +from __future__ import print_function import glob import sys from setuptools import setup +import pkg_resources +from packaging import version + +# sonic_dependencies, version requirement only supports '>=' +sonic_dependencies = ['sonic-py-common'] # Common dependencies for Python 2 and 3 dependencies = [ @@ -10,7 +16,6 @@ 'lxml==4.9.1', 'netaddr==0.8.0', 'pyyaml==5.4.1', - 'sonic-py-common', ] if sys.version_info.major == 3: @@ -21,6 +26,8 @@ # dependencies section of setuptools followed by uninstall of enum43 # 'pyangbind==0.8.1', 'Jinja2>=2.10', + ] + sonic_dependencies += [ 'sonic-yang-mgmt>=1.0', 'sonic-yang-models>=1.0' ] @@ -50,6 +57,20 @@ 'sonic_yang_cfg_generator' ] +dependencies += sonic_dependencies +for package in sonic_dependencies: + try: + package_dist = pkg_resources.get_distribution(package.split(">=")[0]) + except pkg_resources.DistributionNotFound: + print(package + " is not found!", file=sys.stderr) + print("Please build and install SONiC python wheels dependencies from sonic-buildimage", file=sys.stderr) + exit(1) + if ">=" in package: + if version.parse(package_dist.version) >= version.parse(package.split(">=")[1]): + continue + print(package + " version not match!", file=sys.stderr) + exit(1) + setup( name = 'sonic-config-engine', version = '1.0', diff --git a/src/system-health/setup.py b/src/system-health/setup.py index 62b02252e8c0..84944a6e72bc 100644 --- a/src/system-health/setup.py +++ b/src/system-health/setup.py @@ -1,11 +1,31 @@ +from __future__ import print_function from setuptools import setup +import sys +import pkg_resources +from packaging import version + +# sonic_dependencies, version requirement only supports '>=' +sonic_dependencies = ['sonic-py-common'] dependencies = [ 'natsort', - 'sonic_py_common', 'docker' ] +dependencies += sonic_dependencies +for package in sonic_dependencies: + try: + package_dist = pkg_resources.get_distribution(package.split(">=")[0]) + except pkg_resources.DistributionNotFound: + print(package + " is not found!", file=sys.stderr) + print("Please build and install SONiC python wheels dependencies from sonic-buildimage", file=sys.stderr) + exit(1) + if ">=" in package: + if version.parse(package_dist.version) >= version.parse(package.split(">=")[1]): + continue + print(package + " version not match!", file=sys.stderr) + exit(1) + setup( name='system-health', version='1.0', From b50977305950209978f6f874eb959da07b000e90 Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Thu, 2 Mar 2023 13:41:24 +0800 Subject: [PATCH 31/46] Revert "[submodule] Advance sonic-swss-common pointer (#13950)" (#14034) Reverts #13950 libswsscommon-dbg_1.0.0_amd64.deb package is not built in new submodule HEAD. PR validation passed because it didn't build debug image. 13950 breaks debug image build. --- 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 565ad4ba30ce..6b6842a96905 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit 565ad4ba30ce4141229a00024afdab83e3ebc54e +Subproject commit 6b6842a9690507d300a5beb4c0baff47094c94a5 From fffeec6ecc3307a48c3b4ad90101b32327b8663f Mon Sep 17 00:00:00 2001 From: Yakiv Huryk <62013282+Yakiv-Huryk@users.noreply.github.com> Date: Thu, 2 Mar 2023 09:48:47 +0200 Subject: [PATCH 32/46] [Mellanox] update sdk/fw build procedure (#14025) - Why I did it To optimize Mellanox platform build - How I did it sdk debs are now downloaded as Spectrum-SDK-Drivers-SONiC-Bins release sx kernel is downloaded as zip from Spectrum-SDK-Drivers - How to verify it configure/build for Mellanox platform Signed-off-by: Yakiv Huryk --- .gitmodules | 3 --- platform/mellanox/fw.mk | 9 ++++++--- platform/mellanox/sdk-src/sx-kernel/Makefile | 14 +++++++++++--- .../sdk-src/sx-kernel/Switch-SDK-drivers | 1 - platform/mellanox/sdk.mk | 17 ++++++++--------- 5 files changed, 25 insertions(+), 19 deletions(-) delete mode 160000 platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers diff --git a/.gitmodules b/.gitmodules index 55299d62fe75..b2fe3c4800b5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -71,9 +71,6 @@ [submodule "src/sonic-mgmt-framework"] path = src/sonic-mgmt-framework url = https://github.com/sonic-net/sonic-mgmt-framework -[submodule "Switch-SDK-drivers"] - path = platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers - url = https://github.com/Mellanox/Switch-SDK-drivers [submodule "src/sonic-ztp"] path = src/sonic-ztp url = https://github.com/sonic-net/sonic-ztp diff --git a/platform/mellanox/fw.mk b/platform/mellanox/fw.mk index 77e4daf589b6..6dff408031b7 100644 --- a/platform/mellanox/fw.mk +++ b/platform/mellanox/fw.mk @@ -23,10 +23,13 @@ MLNX_FW_BASE_URL = SIMX_VERSION = 5.1-1065 -ifneq ($(MLNX_FW_BASE_URL), ) FW_FROM_URL = y -else -FW_FROM_URL = n + +MLNX_FW_ASSETS_RELEASE_TAG = fw-2010.4150 +MLNX_FW_ASSETS_URL = $(MLNX_ASSETS_GITHUB_URL)/releases/download/$(MLNX_FW_ASSETS_RELEASE_TAG) + +ifeq ($(MLNX_FW_BASE_URL), ) +MLNX_FW_BASE_URL = $(MLNX_FW_ASSETS_URL) endif MLNX_SPC_FW_VERSION = 13.2010.4150 diff --git a/platform/mellanox/sdk-src/sx-kernel/Makefile b/platform/mellanox/sdk-src/sx-kernel/Makefile index 26ccbd02516a..12256fd4b725 100644 --- a/platform/mellanox/sdk-src/sx-kernel/Makefile +++ b/platform/mellanox/sdk-src/sx-kernel/Makefile @@ -5,6 +5,8 @@ MAIN_TARGET = sx-kernel_1.mlnx.$(MLNX_SDK_DEB_VERSION)_$(CONFIGURED_ARCH).deb DERIVED_TARGETS = sx-kernel-dev_1.mlnx.$(MLNX_SDK_DEB_VERSION)_$(CONFIGURED_ARCH).deb PACKAGE_NAME = sx_kernel +MLNX_SX_KERNEL_GITHUB_URL_BASE = https://github.com/Mellanox/Spectrum-SDK-Drivers/archive/refs/heads + $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : # get sources @@ -13,9 +15,15 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : wget -c $(MLNX_SDK_SOURCE_BASE_URL)/$(PACKAGE_NAME)-$(MLNX_SDK_VERSION)-$(MLNX_SDK_ISSU_VERSION).tar.gz -O - | tar -xz pushd sx_kernel-$(MLNX_SDK_VERSION)-$(MLNX_SDK_ISSU_VERSION) else - pushd Switch-SDK-drivers - git reset --hard - git clean -xfd + rm -rf Spectrum-SDK-Drivers-$(MLNX_SDK_VERSION) + wget -c $(MLNX_SX_KERNEL_GITHUB_URL_BASE)/$(MLNX_SDK_VERSION).zip + unzip $(MLNX_SDK_VERSION).zip + rm -rf $(MLNX_SDK_VERSION).zip + + pushd Spectrum-SDK-Drivers-$(MLNX_SDK_VERSION) + ln -s ./sx_scripts/Makefile ./Makefile + ln -s ./sx_scripts/makefile ./makefile + ln -s ./sx_scripts/configure ./configure fi # build diff --git a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers b/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers deleted file mode 160000 index c66b48a7aa60..000000000000 --- a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c66b48a7aa609b4e4a927c5f3fa9039d1a9bde28 diff --git a/platform/mellanox/sdk.mk b/platform/mellanox/sdk.mk index 8d2b43171fdd..5e1df75e9f07 100644 --- a/platform/mellanox/sdk.mk +++ b/platform/mellanox/sdk.mk @@ -14,11 +14,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # -MLNX_SDK_BASE_PATH = $(PLATFORM_PATH)/sdk-src/sx-kernel/Switch-SDK-drivers/bin/ -MLNX_SDK_PKG_BASE_PATH = $(MLNX_SDK_BASE_PATH)/$(BLDENV)/$(CONFIGURED_ARCH)/ MLNX_SDK_VERSION = 4.5.4150 MLNX_SDK_ISSU_VERSION = 101 +MLNX_ASSETS_GITHUB_URL = https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins +MLNX_SDK_ASSETS_RELEASE_TAG = sdk-$(MLNX_SDK_VERSION)-$(BLDENV)-$(CONFIGURED_ARCH) +MLNX_SDK_ASSETS_URL = $(MLNX_ASSETS_GITHUB_URL)/releases/download/$(MLNX_SDK_ASSETS_RELEASE_TAG) MLNX_SDK_DEB_VERSION = $(subst -,.,$(subst _,.,$(MLNX_SDK_VERSION))) # Place here URL where SDK sources exist @@ -30,7 +31,7 @@ else SDK_FROM_SRC = n endif -export MLNX_SDK_SOURCE_BASE_URL MLNX_SDK_VERSION MLNX_SDK_ISSU_VERSION MLNX_SDK_DEB_VERSION +export MLNX_SDK_SOURCE_BASE_URL MLNX_SDK_VERSION MLNX_SDK_ISSU_VERSION MLNX_SDK_DEB_VERSION MLNX_ASSETS_GITHUB_URL MLNX_SDK_RDEBS += $(APPLIBS) $(IPROUTE2_MLNX) $(SX_COMPLIB) $(SX_EXAMPLES) \ $(SX_GEN_UTILS) $(SX_SCEW) $(SXD_LIBS) $(WJH_LIBS) $(SX_ACL_HELPER) \ @@ -163,21 +164,19 @@ $(SX_KERNEL)_SRC_PATH = $(PLATFORM_PATH)/sdk-src/sx-kernel SX_KERNEL_DEV = sx-kernel-dev_1.mlnx.$(MLNX_SDK_DEB_VERSION)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(SX_KERNEL),$(SX_KERNEL_DEV))) -define make_path - $(1)_PATH = $(MLNX_SDK_PKG_BASE_PATH) +define make_url + $(1)_URL = $(MLNX_SDK_ASSETS_URL)/$(1) endef -$(eval $(foreach deb,$(MLNX_SDK_DEBS),$(call make_path,$(deb)))) -$(eval $(foreach deb,$(MLNX_SDK_RDEBS),$(call make_path,$(deb)))) -$(eval $(foreach deb,$(PYTHON_SDK_API) $(SX_KERNEL) $(SX_KERNEL_DEV),$(call make_path,$(deb)))) +$(eval $(foreach deb,$(MLNX_SDK_DEBS) $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API),$(call make_url,$(deb)))) SONIC_MAKE_DEBS += $(SX_KERNEL) ifeq ($(SDK_FROM_SRC), y) SONIC_MAKE_DEBS += $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API) else -SONIC_COPY_DEBS += $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API) +SONIC_ONLINE_DEBS += $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API) endif mlnx-sdk-packages: $(addprefix $(DEBS_PATH)/, $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API) $(SX_KERNEL)) From eca559944397b3e19aceb552f00596a234162a77 Mon Sep 17 00:00:00 2001 From: lmingz Date: Thu, 2 Mar 2023 11:18:05 -0800 Subject: [PATCH 33/46] [yang]Add FG-ECMP yang model (#14003) Why I did it Add yang model definition for FG_NHG_MEMBER, FG_NHG and FG_NHG_PREFIX from request: https://github.com/sonic-net/sonic-buildimage/issues/12457 How I did it Add yang model refereeing to description https://github.com/sonic-net/SONiC/blob/master/doc/ecmp/fine_grained_next_hop_hld.md How to verify it pyang tests --- src/sonic-yang-models/doc/Configuration.md | 54 +++ src/sonic-yang-models/setup.py | 2 + .../tests/files/sample_config_db.json | 40 ++ .../tests/fine-grained-ecmp.json | 59 +++ .../tests_config/fine_grained_ecmp.json | 395 ++++++++++++++++++ .../yang-models/sonic-fine-grained-ecmp.yang | 171 ++++++++ 6 files changed, 721 insertions(+) create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests/fine-grained-ecmp.json create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests_config/fine_grained_ecmp.json create mode 100644 src/sonic-yang-models/yang-models/sonic-fine-grained-ecmp.yang diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index a7726d8b5695..bfc97850bbfa 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -26,6 +26,9 @@ Table of Contents * [Device Metadata](#device-metadata) * [Device neighbor metada](#device-neighbor-metada) * [DSCP_TO_TC_MAP](#dscp_to_tc_map) + * [FG_NHG](#fg_nhg) + * [FG_NHG_MEMBER](#fg_nhg_member) + * [FG_NHG_PREFIX](#fg_nhg_prefix) * [FLEX_COUNTER_TABLE](#flex_counter_table) * [Hash](#hash) * [KDUMP](#kdump) @@ -892,6 +895,57 @@ instance is supported in SONiC. ``` +### FG_NHG + +The FG_NHG table provides information on Next Hop Groups, including a specified Hash Bucket Size (bucket_size) and match mode for each group. + +``` +"FG_NHG": { + "fgnhg_v4": { + "bucket_size": "120", + "match_mode": "nexthop-based" + }, + "fgnhg_v6": { + "bucket_size": "120", + "match_mode": "nexthop-based" + } +} +``` + +### FG_NHG_MEMBER + +The FG_NHG_MEMBER table provides information about the members of a next hop group, including the group name (FG_NHG), the index at which redistribution is performed (bank), and the link associated with the next-hop-ip (link). + +``` +"FG_NHG_MEMBER": { + "200.200.200.4": { + "FG_NHG": "fgnhg_v4", + "bank": "0", + "link": "Ethernet8" + }, + "200.200.200.5": { + "FG_NHG": "fgnhg_v4", + "bank": "1", + "link": "Ethernet12" + } +} +``` + +### FG_NHG_PREFIX + +The FG_NHG_PREFIX table provides the FG_NHG_PREFIX for which FG behavior is desired, and Fine Grained next-hop group name. + +``` +"FG_NHG_PREFIX": { + "100.50.25.12/32": { + "FG_NHG": "fgnhg_v4" + }, + "fc:05::/128": { + "FG_NHG": "fgnhg_v6" + } +} +``` + ### MPLS_TC_TO_TC_MAP ``` diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py index 2736465ead3e..26582723f132 100644 --- a/src/sonic-yang-models/setup.py +++ b/src/sonic-yang-models/setup.py @@ -116,6 +116,7 @@ def run(self): './yang-models/sonic-events-syncd.yang', './yang-models/sonic-extension.yang', './yang-models/sonic-flex_counter.yang', + './yang-models/sonic-fine-grained-ecmp.yang', './yang-models/sonic-feature.yang', './yang-models/sonic-hash.yang', './yang-models/sonic-system-defaults.yang', @@ -203,6 +204,7 @@ def run(self): './cvlyang-models/sonic-extension.yang', './cvlyang-models/sonic-flex_counter.yang', './cvlyang-models/sonic-feature.yang', + './cvlyang-models/sonic-fine-grained-ecmp.yang', './cvlyang-models/sonic-hash.yang', './cvlyang-models/sonic-system-defaults.yang', './cvlyang-models/sonic-interface.yang', diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index 8b80631f4fb4..e326ee07852b 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -2273,6 +2273,46 @@ "vni": "10", "guid":"guid-vnet1" } + }, + "FG_NHG": { + "nhg1": { + "bucket_size": "16", + "match_mode": "nexthop-based" + }, + "nhg2": { + "bucket_size": "32", + "match_mode": "route-based" + } + }, + "FG_NHG_PREFIX": { + "10.0.0.0/24": { + "FG_NHG": "nhg1" + }, + "192.168.0.0/16": { + "FG_NHG": "nhg2" + } + }, + "FG_NHG_MEMBER": { + "192.168.1.1": { + "FG_NHG": "nhg1", + "bank": "0", + "link": "Ethernet1" + }, + "192.168.1.2": { + "FG_NHG": "nhg1", + "bank": "0", + "link": "Ethernet2" + }, + "10.0.0.1": { + "FG_NHG": "nhg2", + "bank": "1", + "link": "PortChannel42" + }, + "10.0.0.2": { + "FG_NHG": "nhg2", + "bank": "1", + "link": "PortChannel2" + } } }, "SAMPLE_CONFIG_DB_UNKNOWN": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/fine-grained-ecmp.json b/src/sonic-yang-models/tests/yang_model_tests/tests/fine-grained-ecmp.json new file mode 100644 index 000000000000..2eed9fb8f34f --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/fine-grained-ecmp.json @@ -0,0 +1,59 @@ +{ + "FG_NHG_TEST": { + "desc": "Fine-grained ECMP next-hop group configuration in FG_NHG_LIST table." + }, + "FG_NHG_PREFIX_TEST": { + "desc": "Fine-grained ECMP prefix configuration in FG_NHG_PREFIX_LIST table." + }, + "FG_NHG_MEMBER_TEST": { + "desc": "Fine-grained ECMP next-hop member configuration in FG_NHG_MEMBER_LIST table." + }, + "FG_NHG_MEMBER_MULTI_LINK_TEST": { + "desc": "Fine-grained ECMP next-hop member configuration with multiple links in FG_NHG_MEMBER_LIST table." + }, + "FG_NHG_TEST_DUPLICATE_NAME": { + "desc": "Fine-grained ECMP next-hop group configuration with duplicate name in FG_NHG_LIST table.", + "eStr": "Duplicated instance of \"FG_NHG_LIST\" list." + }, + "FG_NHG_MEMBER_TEST_INVALID_IP": { + "desc": "Fine-grained ECMP next-hop member configuration with invalid IP value in FG_NHG_MEMBER_LIST table.", + "eStrKey": "InvalidValue", + "eStr": [ + "next_hop_ip" + ] + }, + "FG_NHG_PREFIX_TEST_INVALID_PREFIX": { + "desc": "Fine-grained ECMP prefix configuration with invalid prefix value in FG_NHG_PREFIX_LIST table.", + "eStrKey": "InvalidValue", + "eStr": [ + "ip_prefix" + ] + }, + "FG_NHG_MEMBER_TEST_INVALID_LINK": { + "desc": "Fine-grained ECMP next-hop member configuration with invalid link value in FG_NHG_MEMBER_LIST table.", + "eStrKey": "InvalidValue", + "eStr": [ + "link" + ] + }, + "FG_NHG_MEMBER_TEST_MISSING_FG_NHG_REF": { + "desc": "Fine-grained ECMP next-hop member configuration with missing FG_NHG reference in FG_NHG_MEMBER_LIST table.", + "eStr": "Missing required element \"FG_NHG\" in \"FG_NHG_MEMBER_LIST\". " + }, + "FG_NHG_PREFIX_TEST_MISSING_FG_NHG_REF": { + "desc": "Fine-grained ECMP prefix configuration with missing FG_NHG reference in FG_NHG_PREFIX_LIST table.", + "eStr": "Missing required element \"FG_NHG\" in \"FG_NHG_PREFIX_LIST\". " + }, + "FG_NHG_MEMBER_TEST_MISSING_BANK": { + "desc": "Fine-grained ECMP next-hop member configuration with missing bank in FG_NHG_MEMBER_LIST table.", + "eStr": "Missing required element \"bank\"" + }, + "FG_NHG_PREFIX_TEST_DUPLICATE_ENTRY": { + "desc": "Fine-grained ECMP prefix configuration with duplicate entry in FG_NHG_PREFIX_LIST table.", + "eStr": "Duplicated instance of \"FG_NHG_PREFIX_LIST\" list." + }, + "FG_NHG_MEMBER_TEST_DUPLICATE_MEMBER": { + "desc": "Fine-grained ECMP next-hop member configuration with duplicate member in FG_NHG_MEMBER_LIST table.", + "eStr": "Duplicated instance of \"FG_NHG_MEMBER_LIST\" list." + } +} \ No newline at end of file diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/fine_grained_ecmp.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/fine_grained_ecmp.json new file mode 100644 index 000000000000..2bfbbb6239c0 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/fine_grained_ecmp.json @@ -0,0 +1,395 @@ +{ + "FG_NHG_TEST": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + }, + { + "name": "group2", + "bucket_size": 20, + "match_mode": "route-based" + } + ] + } + } + }, + "FG_NHG_PREFIX_TEST": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + }, + { + "name": "group2", + "bucket_size": 20, + "match_mode": "route-based" + } + ] + }, + "sonic-fine-grained-ecmp:FG_NHG_PREFIX": { + "FG_NHG_PREFIX_LIST": [ + { + "ip_prefix": "10.0.0.0/24", + "FG_NHG": "group1" + }, + { + "ip_prefix": "10.1.0.0/24", + "FG_NHG": "group2" + }, + { + "ip_prefix": "fe80::/64", + "FG_NHG": "group1" + }, + { + "ip_prefix": "::/0", + "FG_NHG": "group2" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet1", + "tpid": "0x8100", + "speed": "25000" + } + ] + } + }, + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + }, + { + "name": "group2", + "bucket_size": 20, + "match_mode": "route-based" + } + ] + }, + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "bank": 1, + "link": "Ethernet1" + }, + { + "next_hop_ip": "10.0.0.2", + "FG_NHG": "group1", + "bank": 2, + "link": "Ethernet1" + }, + { + "next_hop_ip": "10.1.0.1", + "FG_NHG": "group2", + "bank": 3, + "link": "Ethernet1" + }, + { + "next_hop_ip": "2001:0db8:85a3:0000:0000:8a2e:0370:7334", + "FG_NHG": "group1", + "bank": 4, + "link": "Ethernet1" + }, + { + "next_hop_ip": "2001:db8::1", + "FG_NHG": "group2", + "bank": 5, + "link": "Ethernet1" + } + ] + } + } + }, + "FG_NHG_MEMBER_MULTI_LINK_TEST": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet1", + "tpid": "0x8100", + "speed": "25000" + }, + { + "admin_status": "up", + "alias": "eth1", + "description": "Ethernet1", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet2", + "tpid": "0x8100", + "speed": "25000" + } + ] + } + }, + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + }, + { + "name": "group2", + "bucket_size": 20, + "match_mode": "route-based" + } + ] + }, + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "bank": 1, + "link": "Ethernet1" + }, + { + "next_hop_ip": "10.0.0.2", + "FG_NHG": "group1", + "bank": 2, + "link": "Ethernet2" + }, + { + "next_hop_ip": "10.1.0.1", + "FG_NHG": "group2", + "bank": 3, + "link": "Ethernet1" + } + ] + } + } + }, + "FG_NHG_TEST_DUPLICATE_NAME": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + }, + { + "name": "group1", + "bucket_size": 20, + "match_mode": "route-based" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST_INVALID_IP": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "invalid_ip", + "FG_NHG": "group1", + "bank": 1, + "link": "Ethernet1" + } + ] + } + } + }, + "FG_NHG_PREFIX_TEST_INVALID_PREFIX": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_PREFIX": { + "FG_NHG_PREFIX_LIST": [ + { + "ip_prefix": "invalid_prefix", + "FG_NHG": "group1" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST_INVALID_LINK": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet1", + "tpid": "0x8100", + "speed": "25000" + } + ] + } + }, + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + } + ] + }, + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "bank": 1, + "link": "invalidLink" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST_MISSING_FG_NHG_REF": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet1", + "tpid": "0x8100", + "speed": "25000" + } + ] + } + }, + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "bank": 1, + "link": "Ethernet1" + } + ] + } + } + }, + "FG_NHG_PREFIX_TEST_MISSING_FG_NHG_REF": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_PREFIX": { + "FG_NHG_PREFIX_LIST": [ + { + "ip_prefix": "10.0.0.0/24" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST_MISSING_BANK": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet1", + "tpid": "0x8100", + "speed": "25000" + } + ] + } + }, + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + } + ] + }, + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "link": "Ethernet1" + } + ] + } + } + }, + "FG_NHG_PREFIX_TEST_DUPLICATE_ENTRY": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_PREFIX": { + "FG_NHG_PREFIX_LIST": [ + { + "ip_prefix": "10.0.0.0/24", + "FG_NHG": "group1" + }, + { + "ip_prefix": "10.0.0.0/24", + "FG_NHG": "group2" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST_DUPLICATE_MEMBER": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "bank": 1, + "link": "Ethernet1" + }, + { + "next_hop_ip": "10.0.0.2", + "FG_NHG": "group1", + "bank": 2, + "link": "Ethernet1" + }, + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "bank": 3, + "link": "Ethernet1" + } + ] + } + } + } +} \ No newline at end of file diff --git a/src/sonic-yang-models/yang-models/sonic-fine-grained-ecmp.yang b/src/sonic-yang-models/yang-models/sonic-fine-grained-ecmp.yang new file mode 100644 index 000000000000..b5811f06f0c3 --- /dev/null +++ b/src/sonic-yang-models/yang-models/sonic-fine-grained-ecmp.yang @@ -0,0 +1,171 @@ +module sonic-fine-grained-ecmp { + + yang-version 1.1; + + namespace "http://github.com/sonic-net/sonic-fine-grained-ecmp"; + prefix sfgecmp; + + import ietf-inet-types { + prefix inet; + } + + import sonic-portchannel { + prefix lag; + } + + import sonic-port { + prefix port; + } + + import sonic-types { + prefix stypes; + } + + organization + "SONiC"; + + contact + "SONiC"; + + description + "SONIC Fine Grained ECMP"; + + revision 2023-01-19 { + description "Initial revision."; + } + + typedef match-mode-name { + + type enumeration { + + enum route-based { + description + "Fine grained ecmp is used when the route prefix matches the FG_NHG_PREFIX prefix"; + } + + enum nexthop-based { + description + "Fine grained ecmp is used when the nexthop IPs match the FG_NHG_MEMBER IPs"; + } + + } + + description + "This enumeration type defines the method used to determine whether fine grained ecmp should be applied."; + } + + container sonic-fine-grained-ecmp { + + container FG_NHG { + + description "FG_NHG part of config_db.json"; + + list FG_NHG_LIST{ + + key "name"; + + leaf name{ + type string; + description "FG_NHG group name"; + } + + leaf bucket_size{ + type uint16; + mandatory true; + description "total hash bucket size desired, + recommended value of Lowest Common Multiple + of 1..{max # of next-hops}"; + } + + leaf match_mode{ + type match-mode-name; + mandatory true; + description " The filtering method used to identify + when to use Fine Grained vs regular route handling. + nexthop-based looks to next-hop IP to filter routes + and uses fine grained ecmp when nexthop IPs matches + FG_NHG_MEMBER IPs. route-based looks to prefix to + filter routes, and uses fine grained ecmp when the + route prefix matches the FG_NHG_PREFIX prefix."; + } + } + /* end of list FG_NHG_LIST */ + } + /* end of container FG_NHG */ + + container FG_NHG_PREFIX{ + + description "FG_NHG_PREFIX part of config_db.json"; + + list FG_NHG_PREFIX_LIST{ + + key "ip_prefix"; + + leaf ip_prefix{ + type stypes:sonic-ip-prefix; + description "FG_NHG_PREFIX for which FG behavior is + desired"; + } + + leaf FG_NHG{ + type leafref { + path "/sfgecmp:sonic-fine-grained-ecmp/sfgecmp:FG_NHG/sfgecmp:FG_NHG_LIST/sfgecmp:name"; + } + mandatory true; + description "Fine Grained next-hop group name"; + } + } + /* end of list FG_NHG_PREFIX_LIST */ + } + /* end of container FG_NHG_PREFIX */ + + container FG_NHG_MEMBER{ + + description "FG_NHG_MEMBER part of config_db.json"; + + list FG_NHG_MEMBER_LIST{ + + key "next_hop_ip"; + + leaf next_hop_ip{ + type inet:ip-address; + description "FG_NHG next-hop-ip member associated + with prefix"; + } + + leaf FG_NHG{ + type leafref { + path "/sfgecmp:sonic-fine-grained-ecmp/sfgecmp:FG_NHG/sfgecmp:FG_NHG_LIST/sfgecmp:name"; + } + mandatory true; + description "Fine Grained next-hop group name"; + } + + leaf bank{ + type uint16; + mandatory true; + description "An index which specifies a bank/group + in which the redistribution is performed"; + } + + leaf link{ + type union { + type leafref { + path "/port:sonic-port/port:PORT/port:PORT_LIST/port:name"; + } + type leafref { + path "/lag:sonic-portchannel/lag:PORTCHANNEL/lag:PORTCHANNEL_LIST/lag:name"; + } + } + description "Link associated with next-hop-ip, if + configured, enables next-hop withdrawal/addition + per link's operational state changes"; + } + } + /* end of list FG_NHG_MEMBER_LIST */ + } + /* end of container FG_NHG_MEMBER */ + } + /* end of container sonic-fine-grained-ecmp */ +} +/* end of module sonic-fine-grained-ecmp */ \ No newline at end of file From 764d0b93dab854d28b1635be77d0492b6d07f822 Mon Sep 17 00:00:00 2001 From: Sudharsan Dhamal Gopalarathnam Date: Thu, 2 Mar 2023 14:45:22 -0800 Subject: [PATCH 34/46] [yang]Add missing fields in PortChannel yang model (#14045) Fixing issue https://github.com/sonic-net/sonic-buildimage/issues/13983 #### Why I did it Added Missing fields in sonic-portchannel yang model. "fallback" and "fast_rate" fields are present in configuration schema but not in yang model. This leads to traceback when yang is validated sonic_yang(3):All Keys are not parsed in PORTCHANNEL dict_keys(['PortChannel100']) sonic_yang(3):exceptionList:["'fast_rate'"] sonic_yang(3):Data Loading Failed:All Keys are not parsed in PORTCHANNEL dict_keys(['PortChannel100']) exceptionList:["'fast_rate'"] Data Loading Failed All Keys are not parsed in PORTCHANNEL dict_keys(['PortChannel100']) exceptionList:["'fast_rate'"] ConfigMgmt Class creation failed Failed to break out Port. Error: Failed to load the config. Error: ConfigMgmtDPB Class creation failed #### How I did it Updated yang model #### How to verify it Added tests to verify #### Link to config_db schema for YANG module changes Part of the PR --- src/sonic-yang-models/doc/Configuration.md | 4 ++- .../tests/files/sample_config_db.json | 4 ++- .../yang_model_tests/tests/portchannel.json | 10 ++++++ .../tests_config/portchannel.json | 34 ++++++++++++++++++- .../yang-models/sonic-portchannel.yang | 9 +++++ 5 files changed, 58 insertions(+), 3 deletions(-) diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index bfc97850bbfa..6ce68ffdd5ef 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -1476,7 +1476,9 @@ name as object key and member list as attribute. "members": [ "Ethernet56" ], - "mtu": "9100" + "mtu": "9100", + "fallback": "false", + "fast_rate": "true" } } } 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 e326ee07852b..94b37260f6aa 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -108,7 +108,9 @@ "admin_status": "up", "min_links": "2", "mtu": "9100", - "tpid": "0x8100" + "tpid": "0x8100", + "fast_rate": "false", + "fallback" : "true" } }, "PORTCHANNEL_INTERFACE": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json b/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json index e69074bdfbf6..ae7a7dffd928 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json @@ -19,6 +19,16 @@ "eStrKey" : "Pattern", "eStr": ["0x8100|0x9100|0x9200|0x88a8|0x88A8"] }, + "PORT_CHANNEL_INVALID_FALLBACK": { + "desc": "INCORRECT PORTCHANNEL FALLBACK IN PORT_CHANNEL TABLE.", + "eStrKey" : "Pattern", + "eStr": ["false|true|False|True"] + }, + "PORT_CHANNEL_INVALID_FAST_RATE": { + "desc": "INCORRECT PORTCHANNEL FAST_RATE IN PORT_CHANNEL TABLE.", + "eStrKey" : "Pattern", + "eStr": ["false|true|False|True"] + }, "PORTCHANNEL_INTERFACE_IP_ADDR_TEST": { "desc": "Configure IP address on PORTCHANNEL_INTERFACE table." }, diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json index ba0762e5ebc6..36f2484fa3bf 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json @@ -25,7 +25,9 @@ "mtu": "9100", "tpid": "0x8100", "lacp_key": "auto", - "name": "PortChannel0001" + "name": "PortChannel0001", + "fast_rate": "false", + "fallback" : "false" } ] } @@ -116,6 +118,36 @@ } } }, + "PORT_CHANNEL_INVALID_FALLBACK": { + "sonic-portchannel:sonic-portchannel": { + "sonic-portchannel:PORTCHANNEL": { + "PORTCHANNEL_LIST": [ + { + "admin_status": "up", + "mtu": "9100", + "tpid": "0x9100", + "name": "PortChannel0001", + "fallback": "enabled" + } + ] + } + } + }, + "PORT_CHANNEL_INVALID_FAST_RATE": { + "sonic-portchannel:sonic-portchannel": { + "sonic-portchannel:PORTCHANNEL": { + "PORTCHANNEL_LIST": [ + { + "admin_status": "up", + "mtu": "9100", + "tpid": "0x9100", + "name": "PortChannel0001", + "fast_rate": "TRUE" + } + ] + } + } + }, "PORTCHANNEL_INTERFACE_IP_ADDR_TEST": { "sonic-portchannel:sonic-portchannel": { "sonic-portchannel:PORTCHANNEL": { diff --git a/src/sonic-yang-models/yang-models/sonic-portchannel.yang b/src/sonic-yang-models/yang-models/sonic-portchannel.yang index 96872eeadb1d..717e3924c420 100644 --- a/src/sonic-yang-models/yang-models/sonic-portchannel.yang +++ b/src/sonic-yang-models/yang-models/sonic-portchannel.yang @@ -102,6 +102,15 @@ module sonic-portchannel { type stypes:tpid_type; } + leaf fallback { + description "Enable LACP fallback feature"; + type stypes:boolean_type; + } + leaf fast_rate { + description "Enable LACP fast rate"; + type stypes:boolean_type; + } + } /* end of list PORTCHANNEL_LIST */ } /* end of container PORTCHANNEL */ From 538201af65cdfe366baeaffc0d39b771f90e360c Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Fri, 3 Mar 2023 10:45:12 +0800 Subject: [PATCH 35/46] [ci] Build debug image in PR checks. (#14058) Why I did it Add checks for debug image in PR checks. --- azure-pipelines.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f1004ab709d1..05b86c51ccb1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -55,6 +55,8 @@ stages: - stage: Build pool: sonicbld + variables: + INSTALL_DEBUG_TOOLS: y dependsOn: [] jobs: - template: .azure-pipelines/azure-pipelines-build.yml From ead3d124e494be0d4374fef3b94d6ade430243c1 Mon Sep 17 00:00:00 2001 From: xumia <59720581+xumia@users.noreply.github.com> Date: Fri, 3 Mar 2023 15:21:10 +0800 Subject: [PATCH 36/46] [Build] Support to use loosen version when failed to install python packages (#14013) Why I did it [Build] Support to use loosen version when failed to install python packages It is to fix the issue #14012 How I did it Try to use the installation command without constraint How to verify it --- src/sonic-build-hooks/scripts/buildinfo_base.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/sonic-build-hooks/scripts/buildinfo_base.sh b/src/sonic-build-hooks/scripts/buildinfo_base.sh index a04dbc150df5..da1bc54226f5 100755 --- a/src/sonic-build-hooks/scripts/buildinfo_base.sh +++ b/src/sonic-build-hooks/scripts/buildinfo_base.sh @@ -248,6 +248,11 @@ run_pip_command() $REAL_COMMAND "${parameters[@]}" local result=$? + if [ "$result" != 0 ]; then + echo "Failed to run the command with constraint, try to install with the original command" 1>&2 + $REAL_COMMAND "$@" + result=$? + fi rm $tmp_version_file return $result } From f80bf7783dad39f0ff7aa274ff27654c04d86679 Mon Sep 17 00:00:00 2001 From: Tejaswini Chadaga <85581939+tjchadaga@users.noreply.github.com> Date: Fri, 3 Mar 2023 09:28:57 -0800 Subject: [PATCH 37/46] Fix VOQ_CHASSIS_V6_PEER route-map config (#14055) * Fix typo in VOQ_CHASSIS_V6_PEER route-map config * Updated UT files with the changed config --- .../frr/bgpd/templates/voq_chassis/peer-group.conf.j2 | 4 ++-- .../tests/data/voq_chassis/peer-group.conf/result_all.conf | 4 ++-- .../tests/data/voq_chassis/peer-group.conf/result_base.conf | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/peer-group.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/peer-group.conf.j2 index ec563b380cc6..44a49587d039 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/peer-group.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/peer-group.conf.j2 @@ -20,8 +20,8 @@ neighbor VOQ_CHASSIS_V6_PEER activate neighbor VOQ_CHASSIS_V6_PEER addpath-tx-all-paths neighbor VOQ_CHASSIS_V6_PEER soft-reconfiguration inbound - neighbor VOQ_CHASSIS_V4_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in - neighbor VOQ_CHASSIS_V4_PEER route-map TO_VOQ_CHASSIS_V6_PEER out + neighbor VOQ_CHASSIS_V6_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in + neighbor VOQ_CHASSIS_V6_PEER route-map TO_VOQ_CHASSIS_V6_PEER out exit-address-family ! ! end of template: bgpd/templates/voq_chassis/peer-group.conf.j2 diff --git a/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_all.conf b/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_all.conf index 1ec1cffed952..cf5020ee49f8 100644 --- a/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_all.conf +++ b/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_all.conf @@ -16,8 +16,8 @@ neighbor VOQ_CHASSIS_V6_PEER activate neighbor VOQ_CHASSIS_V6_PEER addpath-tx-all-paths neighbor VOQ_CHASSIS_V6_PEER soft-reconfiguration inbound - neighbor VOQ_CHASSIS_V4_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in - neighbor VOQ_CHASSIS_V4_PEER route-map TO_VOQ_CHASSIS_V6_PEER out + neighbor VOQ_CHASSIS_V6_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in + neighbor VOQ_CHASSIS_V6_PEER route-map TO_VOQ_CHASSIS_V6_PEER out exit-address-family ! ! end of template: bgpd/templates/voq_chassis/peer-group.conf.j2 diff --git a/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_base.conf b/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_base.conf index a8f7a0eea528..61813254acc2 100644 --- a/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_base.conf +++ b/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_base.conf @@ -14,8 +14,8 @@ neighbor VOQ_CHASSIS_V6_PEER activate neighbor VOQ_CHASSIS_V6_PEER addpath-tx-all-paths neighbor VOQ_CHASSIS_V6_PEER soft-reconfiguration inbound - neighbor VOQ_CHASSIS_V4_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in - neighbor VOQ_CHASSIS_V4_PEER route-map TO_VOQ_CHASSIS_V6_PEER out + neighbor VOQ_CHASSIS_V6_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in + neighbor VOQ_CHASSIS_V6_PEER route-map TO_VOQ_CHASSIS_V6_PEER out exit-address-family ! ! end of template: bgpd/templates/voq_chassis/peer-group.conf.j2 From 860bc7492a7c9d30740543ac5e1edecb5e5246b9 Mon Sep 17 00:00:00 2001 From: Vaibhav Hemant Dixit Date: Fri, 3 Mar 2023 11:24:26 -0800 Subject: [PATCH 38/46] Add shellcheck and mock modules for running unit and linter test (#14062) --- dockers/docker-sonic-mgmt/Dockerfile.j2 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dockers/docker-sonic-mgmt/Dockerfile.j2 b/dockers/docker-sonic-mgmt/Dockerfile.j2 index 77b30ef784f8..f0865712a8d4 100755 --- a/dockers/docker-sonic-mgmt/Dockerfile.j2 +++ b/dockers/docker-sonic-mgmt/Dockerfile.j2 @@ -22,6 +22,7 @@ RUN apt-get update && apt-get install -y build-essential \ python3-pip \ python3-venv \ rsyslog \ + shellcheck \ snmp \ software-properties-common \ sshpass \ @@ -59,6 +60,7 @@ RUN pip install allure-pytest==2.8.22 \ jsonpatch \ lazy-object-proxy==1.6.0 \ lxml \ + mock \ msrest==0.6.21 \ natsort \ netaddr \ @@ -205,6 +207,7 @@ RUN python3 -m pip install aiohttp \ jsonpatch \ lxml \ markupsafe==2.0.1 \ + mock \ msrest==0.6.21 \ natsort \ ncclient \ From 4a93e4cfa4102bc2c7529d5c76f06d8c91c1ed94 Mon Sep 17 00:00:00 2001 From: anamehra <54692434+anamehra@users.noreply.github.com> Date: Fri, 3 Mar 2023 15:53:33 -0800 Subject: [PATCH 39/46] Add support for platform syncd pre shutdown plugin (#13564) Why I did it Vendor platform may require running platform specific pre-shutdown routine before shutting down the syncd process which runs the SAI and vendor sdk instance. How I did it Added a platform script hook which will be executed if the plugin script is provided by the platform in device//plugins/ --- files/scripts/syncd.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/files/scripts/syncd.sh b/files/scripts/syncd.sh index 2a3bd133c4af..8aacfe8f6c1a 100755 --- a/files/scripts/syncd.sh +++ b/files/scripts/syncd.sh @@ -105,6 +105,12 @@ function stopplatform1() { fi if [[ x$sonic_asic_platform != x"mellanox" ]] || [[ x$TYPE != x"cold" ]]; then + # Invoke platform specific pre shutdown routine. + PLATFORM=`$SONIC_DB_CLI CONFIG_DB hget 'DEVICE_METADATA|localhost' platform` + PLATFORM_PRE_SHUTDOWN="/usr/share/sonic/device/$PLATFORM/plugins/syncd_request_pre_shutdown" + [ -f $PLATFORM_PRE_SHUTDOWN ] && \ + /usr/bin/docker exec -i syncd$DEV /usr/share/sonic/platform/plugins/syncd_request_pre_shutdown --${TYPE} + debug "${TYPE} shutdown syncd process ..." /usr/bin/docker exec -i syncd$DEV /usr/bin/syncd_request_shutdown --${TYPE} From ac14a3a587dcd38b15cb3d32acdb5fcec995a228 Mon Sep 17 00:00:00 2001 From: StormLiangMS <89824293+StormLiangMS@users.noreply.github.com> Date: Sun, 5 Mar 2023 09:09:23 +0800 Subject: [PATCH 40/46] [submodule advance] advance sonic-swss 309df59 #14076 Why I did it submodule advance for master branch 309df59 - Revert "[aclorch] Fixed issue [Mellanox] Update SDK to v4.2.9102 #2204.Support IN_PORTS qualifer in MIRRORV6 table. (Cmd "config vlan member add " always adds interface as tagged #2668)" (Add warm/fast-boot feature processing for wedge100bf_32x/65x platforms #2687) (85 minutes ago) [StormLiangMS] ebe8de7 - [FDB]Fixing FDB consolidated flush for Remote MACs (pmon to stretch #2673) (2 days ago) [Sudharsan Dhamal Gopalarathnam] c9ae6aa - Fix issue: there is no retry while creating a RIF which is in removing state ([201811 sub-module] advance sub-modules: utilities, swss, swss-common #2679) (2 days ago) [Junchao-Mellanox] 79afcb3 - [Dual-ToR] handle 'mux_tunnel_egress_acl' attrib in order to change ACL configuration (drop on ingress/egress) on standby ToR (lm75 doesn't support written alarm to syslog. #2646) (3 days ago) [Andriy Yurkiv] c2b01ba - [orchagent]: Get bridge port ID from orchagent cache instead of SAI API ([201811 sub module] advance sairedis sub module #2657) (3 days ago) [Lawrence Lee] d8a1cb7 - [dualtor] Fix neighbor miss when mux is not ready ([mellanox] Fix in mlnx-ffb.sh #2676) (3 days ago) [Longxiang Lyu] 1531dff - [ci] Fix pipeline error about team5 not found. (Core dump in orchagent when assigning router interface to a vlan with untagged mode #2684) (4 days ago) [Liu Shilong] cfcd40c - [aclorch] Fixed issue [Mellanox] Update SDK to v4.2.9102 #2204.Support IN_PORTS qualifer in MIRRORV6 table. (Cmd "config vlan member add " always adds interface as tagged #2668) (4 days ago) [Rajkumar-Marvell] 35a7ab0 - swss: Fix Invalid port oid messages generated because of voq counters. (Failed to update FlexCounter, Segmentation fault #2653) (8 days ago) [Sambath Kumar Balasubramanian] How I did it How to verify it run PR test --- src/sonic-swss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-swss b/src/sonic-swss index baa302e232d6..309df59701ff 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit baa302e232d61a49880b23b3ef1098e47cf6d1ce +Subproject commit 309df59701ff77cd3be22917bd581207506c15c9 From de84eb98c757838c3540c3e8ca587cbc762e4e89 Mon Sep 17 00:00:00 2001 From: ppikh <70200079+ppikh@users.noreply.github.com> Date: Sun, 5 Mar 2023 03:47:42 +0200 Subject: [PATCH 41/46] [ptf]: Added package "wireshark-common" into PTF docker (#14070) It will allow us to have application called "mergecap" - which can merge multiple .pcap files into single .pcapng file and convert it to .pcap file Signed-off-by: Petro Pikh --- dockers/docker-ptf/Dockerfile.j2 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dockers/docker-ptf/Dockerfile.j2 b/dockers/docker-ptf/Dockerfile.j2 index 47ca3dd7ca52..60b537b2a639 100644 --- a/dockers/docker-ptf/Dockerfile.j2 +++ b/dockers/docker-ptf/Dockerfile.j2 @@ -73,7 +73,8 @@ RUN apt-get update \ libteam-utils \ gdb \ automake \ - iproute2 + iproute2 \ + wireshark-common # Install all python modules from pypi. python-scapy is exception, ptf debian package requires python-scapy # TODO: Clean up this step From 506f37253301d976140abc702e23368955a86686 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Sun, 5 Mar 2023 11:29:38 +0800 Subject: [PATCH 42/46] [ci/build]: Upgrade SONiC package versions (#14072) Upgrade SONiC Versions --- files/build/versions/default/versions-docker | 24 +++++++++---------- files/build/versions/default/versions-git | 8 +++---- files/build/versions/default/versions-mirror | 20 ++++++++-------- files/build/versions/default/versions-web | 24 +++++++++++++++++++ .../versions-deb-bullseye | 4 ++-- .../dockers/docker-base-bullseye/versions-py3 | 2 +- .../dockers/docker-base-buster/versions-py3 | 2 +- .../docker-database/versions-deb-bullseye | 2 +- .../docker-dhcp-relay/versions-deb-bullseye | 2 +- .../docker-eventd/versions-deb-bullseye | 2 +- .../docker-fpm-frr/versions-deb-bullseye | 2 +- .../versions-deb-bullseye | 2 +- .../versions-deb-bullseye | 2 +- .../docker-gbsyncd-vs/versions-deb-bullseye | 2 +- .../dockers/docker-lldp/versions-deb-bullseye | 2 +- .../docker-macsec/versions-deb-bullseye | 2 +- .../dockers/docker-mux/versions-deb-bullseye | 2 +- .../docker-orchagent/versions-deb-bullseye | 2 +- .../versions-deb-bullseye | 2 +- .../versions-deb-bullseye | 2 +- .../versions-deb-bullseye | 2 +- .../versions-deb-bullseye | 2 +- .../dockers/docker-snmp/versions-deb-bullseye | 2 +- .../versions-deb-bullseye | 2 +- .../docker-syncd-bfn/versions-deb-bullseye | 2 +- .../versions-deb-bullseye | 2 +- .../docker-syncd-brcm/versions-deb-bullseye | 2 +- .../docker-syncd-centec/versions-deb-bullseye | 2 +- .../docker-syncd-mlnx/versions-deb-bullseye | 2 +- .../docker-teamd/versions-deb-bullseye | 2 +- .../versions-deb-bullseye | 11 ++++----- .../sonic-slave-buster/versions-deb-buster | 15 ++++++------ .../versions/host-image/versions-deb-bullseye | 6 ++--- files/build/versions/host-image/versions-py3 | 2 +- 34 files changed, 93 insertions(+), 71 deletions(-) diff --git a/files/build/versions/default/versions-docker b/files/build/versions/default/versions-docker index a62ff7d2dd39..3b8b069c2c82 100644 --- a/files/build/versions/default/versions-docker +++ b/files/build/versions/default/versions-docker @@ -1,12 +1,12 @@ -amd64:amd64/debian:bullseye==sha256:749383b0a6d17fb745d397b108d2ea38b5832226586b25c9f5cf7fcde24458ab -amd64:amd64/debian:buster==sha256:b589ffbcc03bb272c9e0c0e699aedb2271a1ca65b2a3447057cbfd80d9eff9bf -amd64:debian:bullseye==sha256:43ef0c6c3585d5b406caa7a0f232ff5a19c1402aeb415f68bcd1cf9d10180af8 -amd64:debian:buster==sha256:233c3bbc892229c82da7231980d50adceba4db56a08c0b7053a4852782703459 -arm64:arm64v8/debian:bullseye==sha256:4951d5cf066cd4ff0558a7cc75816dc203eaeb2c634329d3832db76bbc7586b0 -arm64:arm64v8/debian:buster==sha256:88d3e537769c4ef5bc7961ad5460739dacb29d266d178e6f9befbe900afeb9b9 -arm64:debian:bullseye==sha256:43ef0c6c3585d5b406caa7a0f232ff5a19c1402aeb415f68bcd1cf9d10180af8 -arm64:debian:buster==sha256:233c3bbc892229c82da7231980d50adceba4db56a08c0b7053a4852782703459 -armhf:arm32v7/debian:bullseye==sha256:e514a20691c31e31760fbe7f9b0c3d3e7e19066c8a60a79a6306d494c66689a4 -armhf:arm32v7/debian:buster==sha256:d0a16ffa3bc4302a306263e5abffe04d0340ea964e0e037afef17a3e9765b48a -armhf:debian:bullseye==sha256:43ef0c6c3585d5b406caa7a0f232ff5a19c1402aeb415f68bcd1cf9d10180af8 -armhf:debian:buster==sha256:233c3bbc892229c82da7231980d50adceba4db56a08c0b7053a4852782703459 +amd64:amd64/debian:bullseye==sha256:6f1f698e20c8ae73b110eb614a2c6d13fbdb504bbbbcf2965c4d0b80b7bb7fb1 +amd64:amd64/debian:buster==sha256:c75d609d1d06a44ac87c52e9afe4102af856dd1c075f316b4d219f072af0b3b1 +amd64:debian:bullseye==sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430f +amd64:debian:buster==sha256:2d356e1e22c0902f88ef65cb7159ecd5a96feb62345747edfd4324b0d83a2923 +arm64:arm64v8/debian:bullseye==sha256:6509c82860a3b4158fb6537fdec1477443c367b7d5bf1b55dfcc40325aa588e6 +arm64:arm64v8/debian:buster==sha256:0100d882223b08bc979db07977fd493163c545abcac553086bba75a96aebe0bd +arm64:debian:bullseye==sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430f +arm64:debian:buster==sha256:2d356e1e22c0902f88ef65cb7159ecd5a96feb62345747edfd4324b0d83a2923 +armhf:arm32v7/debian:bullseye==sha256:758b1c750089fbcafcea7f4f643cd36d50c0e7673acc5e5674fc803fb52ce2c8 +armhf:arm32v7/debian:buster==sha256:43b845d5864322e89773a602535f5db85debe3356e50488c63dd99bf2cc16899 +armhf:debian:bullseye==sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430f +armhf:debian:buster==sha256:2d356e1e22c0902f88ef65cb7159ecd5a96feb62345747edfd4324b0d83a2923 diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git index 9c65ba0d6da0..47b811e067cd 100644 --- a/files/build/versions/default/versions-git +++ b/files/build/versions/default/versions-git @@ -1,11 +1,11 @@ -https://chromium.googlesource.com/chromium/tools/depot_tools.git==9144b67c7f037577516ebdfe220997560bd01e14 +https://chromium.googlesource.com/chromium/tools/depot_tools.git==c962e86f7bafddfc582922dec44cf7a843228abb https://github.com/aristanetworks/swi-tools.git==b5f087e4774168bf536360d43c9c509c8f14ad9f https://github.com/CESNET/libyang.git==d57c8888922d1663508ad0f0a5b66f8ad600276d https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 -https://github.com/flashrom/flashrom.git==3b16ce087ed3f4bfeed19db9d2115615b55097e5 -https://github.com/FreeRADIUS/freeradius-server.git==bdaf25704496c31ddb53af30074943cddcf60e14 +https://github.com/flashrom/flashrom.git==ec5848899cc6e3ac3ca05d621733b61ea5c37093 +https://github.com/FreeRADIUS/freeradius-server.git==975976645a0a964b7badc742f6ea11fe3cc35764 https://github.com/FreeRADIUS/pam_radius.git==bcafcf535c763ee193ce7803a56cddb929db04cb https://github.com/jeroennijhof/pam_tacplus.git==7908a7faa0205beda9ea198bdd3aa37868be6da2 https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 @@ -14,7 +14,7 @@ https://github.com/Marvell-switching/mrvl-prestera.git==9dbae444204a2c27b33be698 https://github.com/Mellanox/libpsample.git==62bb27d9a49424e45191eee81df7ce0d8c74e774 https://github.com/p4lang/ptf.git==7494366607e2e4c171439df3585eba3c9769fad8 https://github.com/p4lang/scapy-vxlan.git==85ffe83da156568ee47a0750f638227e6e1d7479 -https://github.com/sflow/host-sflow==e026e2b57f3c7736a75cd1278f7867fb5e5006ee +https://github.com/sflow/host-sflow==b7d12c7fe18f2c4b2377f1b34c1e848d1a5ea16c https://github.com/sflow/sflowtool==8c914e79ecb7930adcba2e5296041c3f9eb8e450 https://github.com/thom311/libnl==cbafad9ddf24caef5230fef715d34f0539603be0 https://salsa.debian.org/debian/libteam.git==48142125234a665ad5367b724af36a58fb484d3d diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror index 899a92992c8d..d01769d9d220 100644 --- a/files/build/versions/default/versions-mirror +++ b/files/build/versions/default/versions-mirror @@ -1,15 +1,15 @@ deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z -debian==20230225T000212Z -debian-security==20230225T000223Z +debian==20230303T000210Z +debian-security==20230303T000635Z download.docker.com_linux_debian_dists_bullseye==2023-02-23T17:33:12Z download.docker.com_linux_debian_dists_buster==2023-02-16T23:33:39Z packages.microsoft.com_repos_sonic-dev_dists_jessie==2019-05-26T14:59:06Z -packages.trafficmanager.net_snapshot_debian-security_20230225T000223Z_dists_bullseye-security==2023-02-24T23:32:54Z -packages.trafficmanager.net_snapshot_debian-security_20230225T000223Z_dists_buster_updates==2023-02-24T23:32:54Z -packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_bullseye==2022-12-17T10:14:37Z -packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_bullseye-backports==2023-02-24T20:13:02Z -packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_bullseye-updates==2023-02-24T20:13:02Z -packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_buster==2022-09-10T11:30:54Z -packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_buster-backports==2023-02-24T20:13:02Z -packages.trafficmanager.net_snapshot_debian_20230225T000212Z_dists_buster-updates==2023-02-24T20:13:02Z +packages.trafficmanager.net_snapshot_debian-security_20230303T000635Z_dists_bullseye-security==2023-03-02T15:33:06Z +packages.trafficmanager.net_snapshot_debian-security_20230303T000635Z_dists_buster_updates==2023-03-02T15:33:06Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_bullseye-backports==2023-03-02T20:11:01Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_bullseye-updates==2023-03-02T20:11:01Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_buster-backports==2023-03-02T20:11:01Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_buster-updates==2023-03-02T20:11:01Z diff --git a/files/build/versions/default/versions-web b/files/build/versions/default/versions-web index 7474b76a4288..5c7b0cd0a57c 100644 --- a/files/build/versions/default/versions-web +++ b/files/build/versions/default/versions-web @@ -41,6 +41,30 @@ https://github.com/CentecNetworks/sonic-binaries/raw/master/arm64/sai/libsai-dev https://github.com/CentecNetworks/sonic-binaries/raw/master/arm64/sai/libsai_1.11.0-1_arm64.deb==b5c30d03483a1c30b2c5b44a45c4a13f https://github.com/CumulusNetworks/ifupdown2/archive/3.0.0-1.tar.gz==755459b3a58fbc11625336846cea7420 https://github.com/Marvell-switching/sonic-marvell-binaries/raw/master/armhf/sai-plugin/mrvllibsai_1.10.2-1_armhf.deb==6d75ab5ec102247fd42aed43b4bf5da6 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/fw-2010.4150/fw-SPC-rel-13_2010_4150-EVB.mfa==597bd2f1b859413c9dc5f9835a0c26cf +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/fw-2010.4150/fw-SPC2-rel-29_2010_4150-EVB.mfa==3f88f2ccbcb05cd1691bc6865d8f0ce4 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/fw-2010.4150/fw-SPC3-rel-30_2010_4150-EVB.mfa==168181ac54c7fd4da4305dc112a583c1 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/applibs-dev_1.mlnx.4.5.4150_amd64.deb==a89ff63bc29fcd423a15606f98a02759 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/applibs_1.mlnx.4.5.4150_amd64.deb==9c61fb3282ad60e9f5b87654723cb065 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/iproute2-dev_1.mlnx.4.5.4150_amd64.deb==4378c3383f7bafb4441c94d9583d55d9 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/iproute2_1.mlnx.4.5.4150_amd64.deb==791af75b4d90bdd929c2982603c2d6d0 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/python-sdk-api_1.mlnx.4.5.4150_amd64.deb==35deac60f9a25d70737fbd92758d9402 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-acl-helper-dev_1.mlnx.4.5.4150_amd64.deb==cd93c79c798c90c7cc9e81ff6319800e +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-acl-helper_1.mlnx.4.5.4150_amd64.deb==b65e0e58a99af53346d629ec80861d83 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-complib-dev_1.mlnx.4.5.4150_amd64.deb==4e83bf929a5ab3a25a588074b40a71f7 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-complib_1.mlnx.4.5.4150_amd64.deb==eb8de2cc70801165fcdcf8cbaab70dc4 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-examples-dev_1.mlnx.4.5.4150_amd64.deb==b8366ee145fda5533a38adf371779706 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-examples_1.mlnx.4.5.4150_amd64.deb==c67c03e21cb265b542595036b50ffa3d +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-gen-utils-dev_1.mlnx.4.5.4150_amd64.deb==7f6f83237ec3a35e43342da6f293ff56 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-gen-utils_1.mlnx.4.5.4150_amd64.deb==97596613dec6c1f40246216a8066cc32 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-hash-calc_1.mlnx.4.5.4150_amd64.deb==c2e495d2d7ec8dc3cd856e9a32b9d365 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-scew-dev_1.mlnx.4.5.4150_amd64.deb==4aad8c2eb85ad57499179a52957b05cc +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-scew_1.mlnx.4.5.4150_amd64.deb==378c3a5f42b3b3aa3ce64675f662a833 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sxd-libs-dev_1.mlnx.4.5.4150_amd64.deb==f0599f5b479854feebf0d6d7a970320e +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sxd-libs_1.mlnx.4.5.4150_amd64.deb==80e6fc6f837b97b35ddf9f0ff2abb8c7 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/wjh-libs-dev_1.mlnx.4.5.4150_amd64.deb==e4fa10735f5733d7ef47e6e5d37ce62e +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/wjh-libs_1.mlnx.4.5.4150_amd64.deb==b158af6dfb1dcdcf526d8be6f64353c6 +https://github.com/Mellanox/Spectrum-SDK-Drivers/archive/refs/heads/4.5.4150.zip==aac717744c7794ee069930db71d4ec9f https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz==6f56ef28c93cee644e8c4aaaef7cfb55 https://launchpad.net/debian/+archive/primary/+sourcefiles/bash/5.1-2/bash_5.1-2.debian.tar.xz==9d0cbd5f463f461c840c95f62a64d61b https://launchpad.net/debian/+archive/primary/+sourcefiles/bash/5.1-2/bash_5.1-2.dsc==be44c5a9fc12fb567a486f54b842dd9e diff --git a/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye index 348e4f2a9549..474ef737c501 100644 --- a/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye @@ -1,5 +1,5 @@ ca-certificates==20210119 -curl==7.74.0-1.3+deb11u5 +curl==7.74.0-1.3+deb11u7 iproute2==5.10.0-4 jq==1.6-2.1 less==551-2 @@ -9,7 +9,7 @@ libbrotli1==1.0.9-2+b2 libbsd0==0.11.3-1 libcap2==1:2.44-1 libcap2-bin==1:2.44-1 -libcurl4==7.74.0-1.3+deb11u5 +libcurl4==7.74.0-1.3+deb11u7 libdaemon0==0.14-7.1 libdbus-1-3==1.12.24-0+deb11u1 libelf1==0.183-1 diff --git a/files/build/versions/dockers/docker-base-bullseye/versions-py3 b/files/build/versions/dockers/docker-base-bullseye/versions-py3 index 8e079eb8213c..a361f59bc20d 100644 --- a/files/build/versions/dockers/docker-base-bullseye/versions-py3 +++ b/files/build/versions/dockers/docker-base-bullseye/versions-py3 @@ -5,5 +5,5 @@ pip==23.0.1 setuptools==49.6.0 supervisor==4.2.1 supervisord-dependent-startup==1.4.0 -toposort==1.9 +toposort==1.10 wheel==0.35.1 diff --git a/files/build/versions/dockers/docker-base-buster/versions-py3 b/files/build/versions/dockers/docker-base-buster/versions-py3 index 8e079eb8213c..a361f59bc20d 100644 --- a/files/build/versions/dockers/docker-base-buster/versions-py3 +++ b/files/build/versions/dockers/docker-base-buster/versions-py3 @@ -5,5 +5,5 @@ pip==23.0.1 setuptools==49.6.0 supervisor==4.2.1 supervisord-dependent-startup==1.4.0 -toposort==1.9 +toposort==1.10 wheel==0.35.1 diff --git a/files/build/versions/dockers/docker-database/versions-deb-bullseye b/files/build/versions/dockers/docker-database/versions-deb-bullseye index 30c4555a4a59..7eaebfb1714b 100644 --- a/files/build/versions/dockers/docker-database/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-database/versions-deb-bullseye @@ -3,7 +3,7 @@ gdbserver==10.1-1.7 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye b/files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye index 1fcf6b10ed26..87e514e61d4c 100644 --- a/files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye @@ -6,7 +6,7 @@ libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libboost-thread1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdns-export1110==1:9.11.19+dfsg-2.1 libdw1==0.183-1 diff --git a/files/build/versions/dockers/docker-eventd/versions-deb-bullseye b/files/build/versions/dockers/docker-eventd/versions-deb-bullseye index b0cc49876cc5..aa38871d7122 100644 --- a/files/build/versions/dockers/docker-eventd/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-eventd/versions-deb-bullseye @@ -3,7 +3,7 @@ gdbserver==10.1-1.7 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye b/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye index 565d3f4b482b..1c4d2096e4e9 100644 --- a/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye @@ -9,7 +9,7 @@ libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libc-ares2==1.17.1-1+deb11u1 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye b/files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye index 49db0080adad..20d6577bfa8d 100644 --- a/files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye @@ -6,7 +6,7 @@ libc-dev-bin==2.31-13+deb11u5 libc6-dev==2.31-13+deb11u5 libcbor0==0.5.0+dfsg-2 libcrypt-dev==1:4.4.18-4 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye b/files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye index f43f6af10347..84573f1eb314 100644 --- a/files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye @@ -3,7 +3,7 @@ gdbserver==10.1-1.7 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye b/files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye index 38f0990353b6..2fe98116d51d 100644 --- a/files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye @@ -3,7 +3,7 @@ gdbserver==10.1-1.7 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-lldp/versions-deb-bullseye b/files/build/versions/dockers/docker-lldp/versions-deb-bullseye index a469d941fe9a..4fe4a5992dca 100644 --- a/files/build/versions/dockers/docker-lldp/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-lldp/versions-deb-bullseye @@ -3,7 +3,7 @@ gdbserver==10.1-1.7 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-macsec/versions-deb-bullseye b/files/build/versions/dockers/docker-macsec/versions-deb-bullseye index 18f13f9751ca..5f51e3838856 100644 --- a/files/build/versions/dockers/docker-macsec/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-macsec/versions-deb-bullseye @@ -3,7 +3,7 @@ gdbserver==10.1-1.7 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-mux/versions-deb-bullseye b/files/build/versions/dockers/docker-mux/versions-deb-bullseye index 5fcd545d33b9..b827eee958ac 100644 --- a/files/build/versions/dockers/docker-mux/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-mux/versions-deb-bullseye @@ -7,7 +7,7 @@ libboost-program-options1.74.0==1.74.0-9 libboost-regex1.74.0==1.74.0-9 libboost-thread1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-orchagent/versions-deb-bullseye b/files/build/versions/dockers/docker-orchagent/versions-deb-bullseye index 63124c839685..aa10342fcf62 100644 --- a/files/build/versions/dockers/docker-orchagent/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-orchagent/versions-deb-bullseye @@ -7,7 +7,7 @@ ifupdown==0.8.36 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye b/files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye index f4167c155d6b..63a235b8a176 100644 --- a/files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye @@ -16,7 +16,7 @@ libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcairo2==1.16.0-5 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdatrie1==0.2.13-1 libdbi1==0.9.0-6 libdebuginfod1==0.183-1 diff --git a/files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye b/files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye index 4d228a0f2d37..478b32e84519 100644 --- a/files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye @@ -3,7 +3,7 @@ gdbserver==10.1-1.7 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye b/files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye index a11011bf45ab..64bc00d8eb5f 100644 --- a/files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye @@ -9,7 +9,7 @@ libc-ares2==1.17.1-1+deb11u1 libc-dev-bin==2.31-13+deb11u5 libc6-dev==2.31-13+deb11u5 libcrypt-dev==1:4.4.18-4 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdbus-1-dev==1.12.24-0+deb11u1 libdouble-conversion3==3.1.5-6.1 libdpkg-perl==1.20.12 diff --git a/files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye b/files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye index f3bc02d3202b..d4cba04595a3 100644 --- a/files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye @@ -3,7 +3,7 @@ kmod==28-1 libbabeltrace1==1.5.8-1+b3 libboost-atomic1.74.0==1.74.0-9 libboost-regex1.74.0==1.74.0-9 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libglib2.0-0==2.66.8-1 diff --git a/files/build/versions/dockers/docker-snmp/versions-deb-bullseye b/files/build/versions/dockers/docker-snmp/versions-deb-bullseye index 64ee45bba6c0..27d2dff348be 100644 --- a/files/build/versions/dockers/docker-snmp/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-snmp/versions-deb-bullseye @@ -6,7 +6,7 @@ libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libc-l10n==2.31-13+deb11u5 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye b/files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye index 3e6070891453..2341ccbd487b 100644 --- a/files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye @@ -9,7 +9,7 @@ libc-dev-bin==2.31-13+deb11u5 libc6-dev==2.31-13+deb11u5 libcbor0==0.5.0+dfsg-2 libcrypt-dev==1:4.4.18-4 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye index 1af89e062939..ad702e9001a0 100644 --- a/files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye @@ -4,7 +4,7 @@ libc-ares2==1.17.1-1+deb11u1 libc-dev-bin==2.31-13+deb11u5 libc6-dev==2.31-13+deb11u5 libcrypt-dev==1:4.4.18-4 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdbus-1-dev==1.12.24-0+deb11u1 libdpkg-perl==1.20.12 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye index 6a65dc38b47a..dbb94382e400 100644 --- a/files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye @@ -5,7 +5,7 @@ kmod==28-1 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye index 443f2d55c221..6f9c216bc8d8 100644 --- a/files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye @@ -5,7 +5,7 @@ kmod==28-1 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye index eb97d63b7ba9..094359a99c1b 100644 --- a/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye @@ -4,7 +4,7 @@ kmod==28-1 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye index c46fec5c86da..5be840380412 100644 --- a/files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye @@ -10,7 +10,7 @@ libc-dev-bin==2.31-13+deb11u5 libc6-dev==2.31-13+deb11u5 libcbor0==0.5.0+dfsg-2 libcrypt-dev==1:4.4.18-4 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/docker-teamd/versions-deb-bullseye b/files/build/versions/dockers/docker-teamd/versions-deb-bullseye index 804b8cc73631..251f8ded3768 100644 --- a/files/build/versions/dockers/docker-teamd/versions-deb-bullseye +++ b/files/build/versions/dockers/docker-teamd/versions-deb-bullseye @@ -3,7 +3,7 @@ gdbserver==10.1-1.7 libbabeltrace1==1.5.8-1+b3 libboost-regex1.74.0==1.74.0-9 libcbor0==0.5.0+dfsg-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 libdebuginfod1==0.183-1 libdw1==0.183-1 libedit2==3.1-20191231-2+b1 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye index f09cc65f3875..01ed54b46e5d 100644 --- a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye @@ -58,7 +58,7 @@ cpp==4:10.2.1-1 cpp-10==10.2.1-6 cppcheck==2.3-1 cron==3.0pl1-137 -curl==7.74.0-1.3+deb11u5 +curl==7.74.0-1.3+deb11u7 dbus==1.12.24-0+deb11u1 dbus-user-session==1.12.24-0+deb11u1 dconf-gsettings-backend==0.38.0-2 @@ -430,10 +430,10 @@ libctf0==2.35.2-2 libcunit1==2.1-3-dfsg-2.3 libcunit1-dev==2.1-3-dfsg-2.3 libcups2==2.3.3op2-3+deb11u2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 -libcurl3-nss==7.74.0-1.3+deb11u5 -libcurl4==7.74.0-1.3+deb11u5 -libcurl4-nss-dev==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libcurl3-nss==7.74.0-1.3+deb11u7 +libcurl4==7.74.0-1.3+deb11u7 +libcurl4-nss-dev==7.74.0-1.3+deb11u7 libdaemon-dev==0.14-7.1 libdaemon0==0.14-7.1 libdata-dpath-perl==0.58-1 @@ -608,7 +608,6 @@ libgmock-dev==1.10.0.20201025-1.1 libgmp-dev==2:6.2.1+dfsg-1+deb11u1 libgmpxx4ldbl==2:6.2.1+dfsg-1+deb11u1 libgnutls-dane0==3.7.1-5+deb11u3 -libgnutls30==3.7.1-5+deb11u3 libgomp1==10.2.1-6 libgoogle-perftools4==2.8.1-1 libgpgme11==1.14.0-1+b2 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster index b9095496c4f2..f1c0d158e8b9 100644 --- a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster @@ -578,7 +578,6 @@ libgmpxx4ldbl==2:6.1.2+dfsg-4+deb10u1 libgnutls-dane0==3.6.7-4+deb10u10 libgnutls-openssl27==3.6.7-4+deb10u10 libgnutls28-dev==3.6.7-4+deb10u10 -libgnutls30==3.6.7-4+deb10u10 libgnutlsxx28==3.6.7-4+deb10u10 libgomp1==8.3.0-6 libgoogle-perftools4==2.7-1 @@ -1437,13 +1436,13 @@ php-token-stream==3.0.1-1 php-tokenizer==1.1.0-1 php-webmozart-assert==1.4.0-3 php-xml==2:7.3+69 -php7.3-cli==7.3.31-1~deb10u2 -php7.3-common==7.3.31-1~deb10u2 -php7.3-json==7.3.31-1~deb10u2 -php7.3-mbstring==7.3.31-1~deb10u2 -php7.3-opcache==7.3.31-1~deb10u2 -php7.3-readline==7.3.31-1~deb10u2 -php7.3-xml==7.3.31-1~deb10u2 +php7.3-cli==7.3.31-1~deb10u3 +php7.3-common==7.3.31-1~deb10u3 +php7.3-json==7.3.31-1~deb10u3 +php7.3-mbstring==7.3.31-1~deb10u3 +php7.3-opcache==7.3.31-1~deb10u3 +php7.3-readline==7.3.31-1~deb10u3 +php7.3-xml==7.3.31-1~deb10u3 phpunit==7.5.6-1 phpunit-code-unit-reverse-lookup==1.0.1-1 phpunit-comparator==3.0.2-1 diff --git a/files/build/versions/host-image/versions-deb-bullseye b/files/build/versions/host-image/versions-deb-bullseye index 6bffe05631da..2d393abfc454 100644 --- a/files/build/versions/host-image/versions-deb-bullseye +++ b/files/build/versions/host-image/versions-deb-bullseye @@ -24,7 +24,7 @@ cpp==4:10.2.1-1 cpp-10==10.2.1-6 cracklib-runtime==2.9.6-3.4 cron==3.0pl1-137 -curl==7.74.0-1.3+deb11u5 +curl==7.74.0-1.3+deb11u7 dbus==1.12.24-0+deb11u1 device-tree-compiler==1.6.0-1 dirmngr==2.2.27-2+deb11u2 @@ -111,8 +111,8 @@ libcrack2==2.9.6-3.4 libcryptsetup12==2:2.3.7-1+deb11u1 libctf-nobfd0==2.35.2-2 libctf0==2.35.2-2 -libcurl3-gnutls==7.74.0-1.3+deb11u5 -libcurl4==7.74.0-1.3+deb11u5 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libcurl4==7.74.0-1.3+deb11u7 libdbd-sqlite3-perl==1.66-1+b1 libdbi-perl==1.643-3+b1 libdbus-1-3==1.12.24-0+deb11u1 diff --git a/files/build/versions/host-image/versions-py3 b/files/build/versions/host-image/versions-py3 index 53bd5c1fba58..99f4463c3601 100644 --- a/files/build/versions/host-image/versions-py3 +++ b/files/build/versions/host-image/versions-py3 @@ -9,7 +9,7 @@ charset-normalizer==3.0.1 click==7.0 click-log==0.4.0 colorful==0.5.5 -cryptography==39.0.1 +cryptography==39.0.2 dbus-python==1.2.16 docker==5.0.3 docker-image-py==0.1.12 From f908dfe91944bd87eabf5fd9586890bcaefbd6de Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak <38952541+stepanblyschak@users.noreply.github.com> Date: Mon, 6 Mar 2023 13:36:43 +0200 Subject: [PATCH 43/46] [Mellanox] Place FW binaries under platform directory instead of squashfs (#13837) Fixes #13568 Upgrade from old image always requires squashfs mount to get the next image FW binary. This can be avoided if we put FW binary under platform directory which is easily accessible after installation: admin@r-spider-05:~$ ls /host/image-fw-new-loc.0-dirty-20230208.193534/platform/fw-SPC.mfa /host/image-fw-new-loc.0-dirty-20230208.193534/platform/fw-SPC.mfa admin@r-spider-05:~$ ls -al /tmp/image-fw-new-loc.0-dirty-20230208.193534-fs/etc/mlnx/fw-SPC.mfa lrwxrwxrwx 1 root root 66 Feb 8 17:57 /tmp/image-fw-new-loc.0-dirty-20230208.193534-fs/etc/mlnx/fw-SPC.mfa -> /host/image-fw-new-loc.0-dirty-20230208.193534/platform/fw-SPC.mfa - Why I did it 202211 and above uses different squashfs compression type that 201911 kernel can not handle. Therefore, we avoid mounting squashfs altogether with this change. - How I did it Place FW binary under /host/image-/platform/mlnx/, soft links in /etc/mlnx are created to avoid breaking existing scripts/automation. /etc/mlnx/fw-SPCX.mfa is a soft link always pointing to the FW that should be used in current image mlnx-fw-upgrade.sh is updated to prefer /host/image-/platform/mlnx location and fallback to /etc/mlnx in squashfs in case new location does not exist. This is necessary to do image downgrade. - How to verify it Upgrade from 201911 to master master to 201911 downgrade master -> master reboot ONIE -> master boot (First FW burn) Which release branch to backport (provide reason below if selected) --- .../build_templates/sonic_debian_extension.j2 | 16 ++++++--- platform/mellanox/mlnx-fw-upgrade.j2 | 35 +++++++++++++------ 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 1dc8bfe1e69e..848bf717c33f 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -928,10 +928,18 @@ sudo cp {{src}} $FILESYSTEM_ROOT/{{dst}} {% endfor -%} {% if sonic_asic_platform == "mellanox" %} -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 +declare -rA FW_FILE_MAP=( \ + [$MLNX_SPC_FW_FILE]="fw-SPC.mfa" \ + [$MLNX_SPC2_FW_FILE]="fw-SPC2.mfa" \ + [$MLNX_SPC3_FW_FILE]="fw-SPC3.mfa" \ +) +sudo mkdir -p $FILESYSTEM_ROOT/$PLATFORM_DIR/fw/asic/ +sudo mkdir -p $FILESYSTEM_ROOT_ETC/mlnx/ +for fw_file_name in ${!FW_FILE_MAP[@]}; do + sudo cp $files_path/$fw_file_name $FILESYSTEM_ROOT/$PLATFORM_DIR/fw/asic/${FW_FILE_MAP[$fw_file_name]} + # Link old FW location to not break existing automation/scripts + sudo ln -s /host/image-$SONIC_IMAGE_VERSION/$PLATFORM_DIR/fw/asic/${FW_FILE_MAP[$fw_file_name]} $FILESYSTEM_ROOT/etc/mlnx/${FW_FILE_MAP[$fw_file_name]} +done 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 diff --git a/platform/mellanox/mlnx-fw-upgrade.j2 b/platform/mellanox/mlnx-fw-upgrade.j2 index 1c650fd5ce63..676d07cf3e49 100755 --- a/platform/mellanox/mlnx-fw-upgrade.j2 +++ b/platform/mellanox/mlnx-fw-upgrade.j2 @@ -32,9 +32,9 @@ declare -r UNKN_ASIC="unknown" declare -r UNKN_MST="unknown" declare -rA FW_FILE_MAP=( \ - [$SPC1_ASIC]="/etc/mlnx/fw-SPC.mfa" \ - [$SPC2_ASIC]="/etc/mlnx/fw-SPC2.mfa" \ - [$SPC3_ASIC]="/etc/mlnx/fw-SPC3.mfa" \ + [$SPC1_ASIC]="fw-SPC.mfa" \ + [$SPC2_ASIC]="fw-SPC2.mfa" \ + [$SPC3_ASIC]="fw-SPC3.mfa" \ ) IMAGE_UPGRADE="${NO_PARAM}" @@ -221,17 +221,17 @@ function RunFwUpdateCmd() { } function UpgradeFW() { - local -r _FS_MOUNTPOINT="$1" + local -r _FW_BIN_PATH="$1" local -r _ASIC_TYPE="$(GetAsicType)" if [[ "${_ASIC_TYPE}" = "${UNKN_ASIC}" ]]; then ExitFailure "failed to detect ASIC type" fi - if [ ! -z "${_FS_MOUNTPOINT}" ]; then - local -r _FW_FILE="${_FS_MOUNTPOINT}/${FW_FILE_MAP[$_ASIC_TYPE]}" + if [ ! -z "${_FW_BIN_PATH}" ]; then + local -r _FW_FILE="${_FW_BIN_PATH}/${FW_FILE_MAP[$_ASIC_TYPE]}" else - local -r _FW_FILE="${FW_FILE_MAP[$_ASIC_TYPE]}" + local -r _FW_FILE="/etc/mlnx/${FW_FILE_MAP[$_ASIC_TYPE]}" fi if [ ! -f "${_FW_FILE}" ]; then @@ -274,16 +274,29 @@ function UpgradeFWFromImage() { local -r _NEXT_SONIC_IMAGE="$(sonic-installer list | grep "Next: " | cut -f2 -d' ')" local -r _CURRENT_SONIC_IMAGE="$(sonic-installer list | grep "Current: " | cut -f2 -d' ')" - local -r _FS_PATH="/host/image-${_NEXT_SONIC_IMAGE#SONiC-OS-}/fs.squashfs" - local -r _FS_MOUNTPOINT="/tmp/image-${_NEXT_SONIC_IMAGE#SONiC-OS-}-fs" - if [[ "${_CURRENT_SONIC_IMAGE}" == "${_NEXT_SONIC_IMAGE}" ]]; then ExitSuccess "firmware is up to date" + fi + + # /host/image-/platform/fw/asic is now the new location for FW binaries. + # Prefere this path and if it does not exist use squashfs as a fallback. + local -r _PLATFORM_FW_BIN_PATH="/host/image-${_NEXT_SONIC_IMAGE#SONiC-OS-}/platform/fw/asic/" + + if [[ -d "${_PLATFORM_FW_BIN_PATH}" ]]; then + LogInfo "Using FW binaries from ${_PLATFORM_FW_BIN_PATH}" + + UpgradeFW "${_PLATFORM_FW_BIN_PATH}" else + local -r _FS_PATH="/host/image-${_NEXT_SONIC_IMAGE#SONiC-OS-}/fs.squashfs" + local -r _FS_MOUNTPOINT="/tmp/image-${_NEXT_SONIC_IMAGE#SONiC-OS-}-fs" + local -r _FW_BIN_PATH="${_FS_MOUNTPOINT}/etc/mlnx/" + + LogInfo "Using FW binaries from ${_FW_BIN_PATH}" + mkdir -p "${_FS_MOUNTPOINT}" mount -t squashfs "${_FS_PATH}" "${_FS_MOUNTPOINT}" - UpgradeFW "${_FS_MOUNTPOINT}" + UpgradeFW "${_FW_BIN_PATH}" umount -rf "${_FS_MOUNTPOINT}" rm -rf "${_FS_MOUNTPOINT}" From 284ba61a86c208ec189046a9c1ae48005fd93a09 Mon Sep 17 00:00:00 2001 From: Yaqiang Zhu Date: Tue, 7 Mar 2023 02:48:25 +0800 Subject: [PATCH 44/46] [dhcp-relay] Add dhcp_relay show cli (#13614) Why I did it Currently the show and clear cli of dhcp_relayis may cause confusion. How I did it Add doc for it: [doc] Add docs for dhcp_relay show/clear cli sonic-utilities#2649 Add dhcp_relay config cli and test cases. show dhcp_relay ipv4 helper show dhcp_relay ipv6 destination show dhcp_relay ipv6 counters sonic-clear dhcp_relay ipv6 counters How to verify it Unit test all passed --- .../cli-plugin-tests/mock_config.py | 122 ++++++++++++- .../cli-plugin-tests/test_show_dhcp_relay.py | 163 ++++++++++++++++-- .../test_show_dhcpv6_helper.py | 41 ----- .../clear/plugins/clear_dhcp6relay_counter.py | 40 ++++- .../cli/show/plugins/show_dhcp_relay.py | 129 +++++++++++--- 5 files changed, 397 insertions(+), 98 deletions(-) delete mode 100644 dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcpv6_helper.py diff --git a/dockers/docker-dhcp-relay/cli-plugin-tests/mock_config.py b/dockers/docker-dhcp-relay/cli-plugin-tests/mock_config.py index ed04367fbba7..1549e1937e09 100644 --- a/dockers/docker-dhcp-relay/cli-plugin-tests/mock_config.py +++ b/dockers/docker-dhcp-relay/cli-plugin-tests/mock_config.py @@ -1,6 +1,6 @@ -TEST_DATA = [ +COMMON_TEST_DATA = [ [ - "DHCPv6_Helpers", + "ipv6_with_header", { "config_db": { "DHCP_RELAY": { @@ -12,7 +12,123 @@ "dhcpv6_option|rfc6939_support": "true" } } - }, + } }, ], + [ + "ipv6_without_header", + { + "config_db": { + "DHCP_RELAY": { + "Vlan1000": { + "dhcpv6_servers": [ + "fc02:2000::1", + "fc02:2000::2" + ], + "dhcpv6_option|rfc6939_support": "true" + } + } + } + }, + ], + [ + "ipv4_with_header", + { + "config_db": { + "VLAN": { + "Vlan1000": { + "dhcp_servers": [ + "192.0.0.1", + "192.0.0.2" + ] + } + } + } + } + ] +] + +NEW_ADDED_TEST_DATA = [ + [ + "ipv6", + { + "config_db": { + "DHCP_RELAY": { + "Vlan1000": { + "dhcpv6_servers": [ + "fc02:2000::1", + "fc02:2000::2" + ], + "dhcpv6_option|rfc6939_support": "true" + } + } + } + }, + ], + [ + "ipv4", + { + "config_db": { + "VLAN": { + "Vlan1000": { + "dhcp_servers": [ + "192.0.0.1", + "192.0.0.2" + ] + }, + "Vlan1001": { + "vlanid": "1001" + } + } + } + } + ] +] + +MULTI_TEST_DATA = [ + [ + "ipv6", + { + "config_db": { + "DHCP_RELAY": { + "Vlan1000": { + "dhcpv6_servers": [ + "fc02:2000::1", + "fc02:2000::2" + ], + "dhcpv6_option|rfc6939_support": "true" + }, + "Vlan1001": { + "dhcpv6_servers": [ + "fc02:2000::3", + "fc02:2000::4" + ], + "dhcpv6_option|rfc6939_support": "true" + } + } + } + }, + ], + [ + "ipv4", + { + "config_db": { + "VLAN": { + "Vlan1000": { + "dhcp_servers": [ + "192.0.0.1", + "192.0.0.2" + ] + }, + "Vlan1001": { + "vlanid": "1001", + "dhcp_servers": [ + "192.0.0.3", + "192.0.0.4" + ] + } + } + } + } + ] ] 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..de679972665f 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 @@ -1,28 +1,155 @@ -import os +import pytest import sys -import traceback +import os +sys.path.append('../cli/show/plugins/') +import show_dhcp_relay as show +import show.vlan as vlan +from swsscommon import swsscommon +from mock_config import COMMON_TEST_DATA, NEW_ADDED_TEST_DATA, MULTI_TEST_DATA +from parameterized import parameterized +from pyfakefs.fake_filesystem_unittest import patchfs from unittest import mock -from click.testing import CliRunner +try: + sys.path.insert(0, '../../../src/sonic-host-services/tests/common') + from mock_configdb import MockConfigDb + swsscommon.ConfigDBConnector = MockConfigDb +except KeyError: + pass + +expected_ipv6_table_with_header = """\ ++-------------+----------------------+ +| Interface | DHCP Relay Address | ++=============+======================+ +| Vlan1000 | fc02:2000::1 | +| | fc02:2000::2 | ++-------------+----------------------+ +""" + +expected_ipv4_table_with_header = """\ ++-------------+----------------------+ +| Interface | DHCP Relay Address | ++=============+======================+ +| Vlan1000 | 192.0.0.1 | +| | 192.0.0.2 | ++-------------+----------------------+ +""" + +expected_ipv6_table_without_header = """\ +-------- ------------ +Vlan1000 fc02:2000::1 + fc02:2000::2 +-------- ------------ +""" + +expected_ipv6_table_multi_with_header = """\ ++-------------+----------------------+ +| Interface | DHCP Relay Address | ++=============+======================+ +| Vlan1000 | fc02:2000::1 | +| | fc02:2000::2 | ++-------------+----------------------+ +| Vlan1001 | fc02:2000::3 | +| | fc02:2000::4 | ++-------------+----------------------+ +""" + +expected_ipv4_table_multi_with_header = """\ ++-------------+----------------------+ +| Interface | DHCP Relay Address | ++=============+======================+ +| Vlan1000 | 192.0.0.1 | +| | 192.0.0.2 | ++-------------+----------------------+ +| Vlan1001 | 192.0.0.3 | +| | 192.0.0.4 | ++-------------+----------------------+ +""" + +DBCONFIG_PATH = '/var/run/redis/sonic-db/database_config.json' + +IP_VER_TEST_PARAM_MAP = { + "ipv4": { + "entry": "dhcp_servers", + "table": "VLAN" + }, + "ipv6": { + "entry": "dhcpv6_servers", + "table": "DHCP_RELAY" + } +} + + +def test_plugin_registration(): + cli = mock.MagicMock() + show.register(cli) + assert 'DHCP Helper Address' in dict(vlan.VlanBrief.COLUMNS) + + +def test_dhcp_relay_column_output(): + ctx = ( + ({'Vlan1001': {'dhcp_servers': ['192.0.0.1', '192.168.0.2']}}, {}, {}), + (), + ) + assert show.get_dhcp_helper_address(ctx, 'Vlan1001') == '192.0.0.1\n192.168.0.2' -import show.vlan as vlan -from utilities_common.db import Db -sys.path.insert(0, '../cli/show/plugins/') -import show_dhcp_relay +@parameterized.expand(COMMON_TEST_DATA) +@patchfs +def test_show_dhcp_relay(test_name, test_data, fs): + if not os.path.exists(DBCONFIG_PATH): + fs.create_file(DBCONFIG_PATH) + MockConfigDb.set_config_db(test_data["config_db"]) + config_db = MockConfigDb() + ip_version = "ipv4" if "ipv4" in test_name else "ipv6" + table = config_db.get_table(IP_VER_TEST_PARAM_MAP[ip_version]["table"]) + if test_name == "ipv4_with_header": + result = show.get_dhcp_relay_data_with_header(table, IP_VER_TEST_PARAM_MAP[ip_version]["entry"]) + expected_output = expected_ipv4_table_with_header + elif test_name == "ipv6_with_header": + result = show.get_dhcp_relay_data_with_header(table, IP_VER_TEST_PARAM_MAP[ip_version]["entry"]) + expected_output = expected_ipv6_table_with_header + elif test_name == "ipv6_without_header": + result = show.get_data(table, "Vlan1000") + expected_output = expected_ipv6_table_without_header + assert result == expected_output -class TestVlanDhcpRelay(object): - def test_plugin_registration(self): - cli = mock.MagicMock() - show_dhcp_relay.register(cli) - assert 'DHCP Helper Address' in dict(vlan.VlanBrief.COLUMNS) +@parameterized.expand(NEW_ADDED_TEST_DATA) +@patchfs +def test_show_new_added_dhcp_relay(test_name, test_data, fs): + if not os.path.exists(DBCONFIG_PATH): + fs.create_file(DBCONFIG_PATH) + MockConfigDb.set_config_db(test_data["config_db"]) + config_db = MockConfigDb() + ip_version = test_name + table = config_db.get_table(IP_VER_TEST_PARAM_MAP[ip_version]["table"]) + if ip_version == "ipv4": + result = show.get_dhcp_relay_data_with_header(table, IP_VER_TEST_PARAM_MAP[ip_version]["entry"]) + expected_output = expected_ipv4_table_with_header + assert result == expected_output + else: + result = show.get_dhcp_relay_data_with_header(table, IP_VER_TEST_PARAM_MAP[ip_version]["entry"]) + expected_output = expected_ipv6_table_with_header + assert result == expected_output - def test_dhcp_relay_column_output(self): - ctx = ( - ({'Vlan100': {'dhcp_servers': ['192.0.0.1', '192.168.0.2']}}, {}, {}), - (), - ) - assert show_dhcp_relay.get_dhcp_helper_address(ctx, 'Vlan100') == '192.0.0.1\n192.168.0.2' + result = show.get_data(table, "Vlan1001") + expected_output = "" + assert result == expected_output +@parameterized.expand(MULTI_TEST_DATA) +@patchfs +def test_show_multi_dhcp_relay(test_name, test_data, fs): + if not os.path.exists(DBCONFIG_PATH): + fs.create_file(DBCONFIG_PATH) + MockConfigDb.set_config_db(test_data["config_db"]) + config_db = MockConfigDb() + ip_version = test_name + table = config_db.get_table(IP_VER_TEST_PARAM_MAP[ip_version]["table"]) + result = show.get_dhcp_relay_data_with_header(table, IP_VER_TEST_PARAM_MAP[ip_version]["entry"]) + if ip_version == "ipv4": + expected_output = expected_ipv4_table_multi_with_header + else: + expected_output = expected_ipv6_table_multi_with_header + assert result == expected_output diff --git a/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcpv6_helper.py b/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcpv6_helper.py deleted file mode 100644 index fcb15b98082d..000000000000 --- a/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcpv6_helper.py +++ /dev/null @@ -1,41 +0,0 @@ -import pytest -import sys -import os -sys.path.append('../cli/show/plugins/') -import show_dhcp_relay as show -from click.testing import CliRunner -from swsscommon import swsscommon -from mock_config import TEST_DATA -from parameterized import parameterized -from pyfakefs.fake_filesystem_unittest import patchfs - -try: - sys.path.insert(0, '../../../src/sonic-host-services/tests/common') - from mock_configdb import MockConfigDb - swsscommon.ConfigDBConnector = MockConfigDb -except KeyError: - pass - -expected_table = """\ --------- ------------ -Vlan1000 fc02:2000::1 - fc02:2000::2 --------- ------------ -""" - -DBCONFIG_PATH = '/var/run/redis/sonic-db/database_config.json' - -class TestDhcpRelayHelper(object): - - @parameterized.expand(TEST_DATA) - @patchfs - def test_show_dhcpv6_helper(self, test_name, test_data, fs): - if not os.path.exists(DBCONFIG_PATH): - fs.create_file(DBCONFIG_PATH) - MockConfigDb.set_config_db(test_data["config_db"]) - runner = CliRunner() - config_db = MockConfigDb() - table = config_db.get_table("DHCP_RELAY") - result = show.get_data(table, "Vlan1000") - assert result == expected_table - diff --git a/dockers/docker-dhcp-relay/cli/clear/plugins/clear_dhcp6relay_counter.py b/dockers/docker-dhcp-relay/cli/clear/plugins/clear_dhcp6relay_counter.py index 59bdbbf2cfb5..bfa5af45ae77 100644 --- a/dockers/docker-dhcp-relay/cli/clear/plugins/clear_dhcp6relay_counter.py +++ b/dockers/docker-dhcp-relay/cli/clear/plugins/clear_dhcp6relay_counter.py @@ -1,4 +1,3 @@ -import sys import click import importlib dhcp6_relay = importlib.import_module('show.plugins.dhcp-relay') @@ -6,27 +5,52 @@ import utilities_common.cli as clicommon +def clear_dhcp_relay_ipv6_counter(interface): + counter = dhcp6_relay.DHCPv6_Counter() + counter_intf = counter.get_interface() + + if interface: + counter.clear_table(interface) + else: + for intf in counter_intf: + counter.clear_table(intf) + + # sonic-clear dhcp6relay_counters @click.group(cls=clicommon.AliasedGroup) def dhcp6relay_clear(): pass + @dhcp6relay_clear.command('dhcp6relay_counters') @click.option('-i', '--interface', required=False) def dhcp6relay_clear_counters(interface): """ Clear dhcp6relay message counts """ + clear_dhcp_relay_ipv6_counter(interface) - counter = dhcp6_relay.DHCPv6_Counter() - counter_intf = counter.get_interface() - if interface: - counter.clear_table(interface) - else: - for intf in counter_intf: - counter.clear_table(intf) +@click.group(cls=clicommon.AliasedGroup, name="dhcp_relay") +def dhcp_relay(): + pass + + +@dhcp_relay.group(cls=clicommon.AliasedGroup, name="ipv6") +def dhcp_relay_ipv6(): + pass + + +@dhcp_relay_ipv6.command('counters') +@click.option('-i', '--interface', required=False) +def clear_dhcp_relay_ipv6_counters(interface): + """ Clear dhcp_relay ipv6 message counts """ + clear_dhcp_relay_ipv6_counter(interface) + def register(cli): cli.add_command(dhcp6relay_clear_counters) + cli.add_command(dhcp_relay) + if __name__ == '__main__': dhcp6relay_clear_counters() + dhcp_relay() 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 4178915fe0b2..d76d5f6fa6b8 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 @@ -1,7 +1,7 @@ import click from natsort import natsorted from tabulate import tabulate -import show.vlan as vlan +import show.vlan as show_vlan import utilities_common.cli as clicommon from swsscommon.swsscommon import ConfigDBConnector @@ -12,12 +12,17 @@ DHCPv6_COUNTER_TABLE = 'DHCPv6_COUNTER_TABLE' # DHCPv6 Counter Messages -messages = ["Unknown", "Solicit", "Advertise", "Request", "Confirm", "Renew", "Rebind", "Reply", "Release", "Decline", "Reconfigure", "Information-Request", "Relay-Forward", "Relay-Reply", "Malformed"] +messages = ["Unknown", "Solicit", "Advertise", "Request", "Confirm", "Renew", "Rebind", "Reply", "Release", "Decline", + "Reconfigure", "Information-Request", "Relay-Forward", "Relay-Reply", "Malformed"] # DHCP_RELAY Config Table DHCP_RELAY = 'DHCP_RELAY' +VLAN = "VLAN" +DHCPV6_SERVERS = "dhcpv6_servers" +DHCPV4_SERVERS = "dhcp_servers" config_db = ConfigDBConnector() + def get_dhcp_helper_address(ctx, vlan): cfg, _ = ctx vlan_dhcp_helper_data, _, _ = cfg @@ -30,7 +35,7 @@ def get_dhcp_helper_address(ctx, vlan): return '\n'.join(natsorted(dhcp_helpers)) -vlan.VlanBrief.register_column('DHCP Helper Address', get_dhcp_helper_address) +show_vlan.VlanBrief.register_column('DHCP Helper Address', get_dhcp_helper_address) class DHCPv6_Counter(object): @@ -39,7 +44,6 @@ def __init__(self): self.db.connect(self.db.STATE_DB) self.table_name = DHCPv6_COUNTER_TABLE + self.db.get_db_separator(self.db.STATE_DB) - def get_interface(self): """ Get all names of all interfaces in DHCPv6_COUNTER_TABLE """ vlans = [] @@ -47,7 +51,6 @@ def get_interface(self): if DHCPv6_COUNTER_TABLE in key: vlans.append(key[21:]) return vlans - def get_dhcp6relay_msg_count(self, interface, msg): """ Get count of a dhcp6relay message """ @@ -55,18 +58,18 @@ def get_dhcp6relay_msg_count(self, interface, msg): data = [str(msg), count] return data - def clear_table(self, interface): """ Reset all message counts to 0 """ for msg in messages: - self.db.set(self.db.STATE_DB, self.table_name + str(interface), str(msg), '0') + self.db.set(self.db.STATE_DB, self.table_name + str(interface), str(msg), '0') + def print_count(counter, intf): """Print count of each message""" data = [] for i in messages: data.append(counter.get_dhcp6relay_msg_count(intf, i)) - print(tabulate(data, headers = ["Message Type", intf], tablefmt='simple', stralign='right') + "\n") + print(tabulate(data, headers=["Message Type", intf], tablefmt='simple', stralign='right') + "\n") # @@ -80,13 +83,7 @@ def dhcp6relay_counters(): pass -# 'counts' subcommand ("show dhcp6relay_counters counts") -@dhcp6relay_counters.command('counts') -@click.option('-i', '--interface', required=False) -@click.option('--verbose', is_flag=True, help="Enable verbose output") -def counts(interface, verbose): - """Show dhcp6relay message counts""" - +def ipv6_counters(interface): counter = DHCPv6_Counter() counter_intf = counter.get_interface() @@ -94,38 +91,114 @@ def counts(interface, verbose): print_count(counter, interface) else: for intf in counter_intf: - print_count(counter, intf) + print_count(counter, intf) +# 'counts' subcommand ("show dhcp6relay_counters counts") +@dhcp6relay_counters.command('counts') +@click.option('-i', '--interface', required=False) +@click.option('--verbose', is_flag=True, help="Enable verbose output") +def counts(interface, verbose): + """Show dhcp6relay message counts""" + + ipv6_counters(interface) + @click.group(cls=clicommon.AliasedGroup, name="dhcprelay_helper") def dhcp_relay_helper(): """Show DHCP_Relay helper information""" pass + +def get_dhcp_relay_data_with_header(table_data, entry_name): + vlan_relay = {} + vlans = table_data.keys() + for vlan in vlans: + vlan_data = table_data.get(vlan) + dhcp_relay_data = vlan_data.get(entry_name) + if dhcp_relay_data is None or len(dhcp_relay_data) == 0: + continue + + vlan_relay[vlan] = [] + for address in dhcp_relay_data: + vlan_relay[vlan].append(address) + + dhcp_relay_vlan_keys = vlan_relay.keys() + relay_address_list = ["\n".join(vlan_relay[key]) for key in dhcp_relay_vlan_keys] + data = {"Interface": dhcp_relay_vlan_keys, "DHCP Relay Address": relay_address_list} + return tabulate(data, tablefmt='grid', stralign='right', headers='keys') + '\n' + + +def get_dhcp_relay(table_name, entry_name, with_header): + if config_db is None: + return + + config_db.connect() + table_data = config_db.get_table(table_name) + if table_data is None: + return + + if with_header: + output = get_dhcp_relay_data_with_header(table_data, entry_name) + print(output) + else: + vlans = config_db.get_keys(table_name) + for vlan in vlans: + output = get_data(table_data, vlan) + print(output) + + @dhcp_relay_helper.command('ipv6') def get_dhcpv6_helper_address(): """Parse through DHCP_RELAY table for each interface in config_db.json and print dhcpv6 helpers in table format""" - if config_db is not None: - config_db.connect() - table_data = config_db.get_table(DHCP_RELAY) - if table_data is not None: - vlans = config_db.get_keys(DHCP_RELAY) - for vlan in vlans: - output = get_data(table_data, vlan) - print(output) - + get_dhcp_relay(DHCP_RELAY, DHCPV6_SERVERS, with_header=False) + def get_data(table_data, vlan): - vlan_data = table_data.get(vlan) + vlan_data = table_data.get(vlan, {}) helpers_data = vlan_data.get('dhcpv6_servers') + addr = {vlan:[]} + output = '' if helpers_data is not None: - addr = {vlan:[]} for ip in helpers_data: addr[vlan].append(ip) - output = tabulate({'Interface':[vlan], vlan:addr.get(vlan)}, tablefmt='simple', stralign='right') + '\n' + output = tabulate({'Interface':[vlan], vlan:addr.get(vlan)}, tablefmt='simple', stralign='right') + '\n' return output + +@click.group(cls=clicommon.AliasedGroup, name="dhcp_relay") +def dhcp_relay(): + """show DHCP_Relay information""" + pass + + +@dhcp_relay.group(cls=clicommon.AliasedGroup, name="ipv6") +def dhcp_relay_ipv6(): + pass + + +@dhcp_relay.group(cls=clicommon.AliasedGroup, name="ipv4") +def dhcp_relay_ipv4(): + pass + + +@dhcp_relay_ipv4.command("helper") +def dhcp_relay_ipv4_destination(): + get_dhcp_relay(VLAN, DHCPV4_SERVERS, with_header=True) + + +@dhcp_relay_ipv6.command("destination") +def dhcp_relay_ipv6_destination(): + get_dhcp_relay(DHCP_RELAY, DHCPV6_SERVERS, with_header=True) + + +@dhcp_relay_ipv6.command("counters") +@click.option('-i', '--interface', required=False) +def dhcp_relay_ip6counters(interface): + ipv6_counters(interface) + + def register(cli): cli.add_command(dhcp6relay_counters) cli.add_command(dhcp_relay_helper) + cli.add_command(dhcp_relay) From ba30775d65e95376d17a4a9ed696c12b6de69dc5 Mon Sep 17 00:00:00 2001 From: Tejaswini Chadaga <85581939+tjchadaga@users.noreply.github.com> Date: Mon, 6 Mar 2023 19:24:12 -0800 Subject: [PATCH 45/46] Add yang model definition for CHASSIS_MODULE table (#14007) Why I did it Add yang model definition for CHASSIS_MODULE define and implemented for sonic chassis. HLD for this configuration is included in https://github.com/sonic-net/SONiC/blob/master/doc/pmon/pmon-chassis-design.md#configuration Fixes #12640 How I did it Added yang model definition, unit tests, sample config and documentation for the table How to verify it Validated config tree generation using "pyang -Vf tree -p /usr/local/share/yang/modules/ietf ./yang-models/sonic-voq-inband-interface.yang" Built the below python-wheels to validate unit tests and other changes target/python-wheels/bullseye/sonic_yang_mgmt-1.0-py3-none-any.whl target/python-wheels/bullseye/sonic_yang_models-1.0-py3-none-any.whl target/python-wheels/bullseye/sonic_config_engine-1.0-py3-none-any.whl --- src/sonic-yang-models/doc/Configuration.md | 20 +++++++ src/sonic-yang-models/setup.py | 1 + .../tests/files/sample_config_db.json | 8 +++ .../tests/chassis_module.json | 13 +++++ .../tests_config/chassis_module.json | 54 +++++++++++++++++++ .../yang-models/sonic-chassis-module.yang | 36 +++++++++++++ 6 files changed, 132 insertions(+) create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests/chassis_module.json create mode 100644 src/sonic-yang-models/tests/yang_model_tests/tests_config/chassis_module.json create mode 100644 src/sonic-yang-models/yang-models/sonic-chassis-module.yang diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index 6ce68ffdd5ef..7c9bce01de4f 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -18,6 +18,7 @@ Table of Contents * [Buffer port ingress profile list](#buffer-port-ingress-profile-list) * [Buffer port egress profile list](#buffer-port-egress-profile-list) * [Cable length](#cable-length) + * [Chassis module](#chassis-module) * [COPP_TABLE](#copp_table) * [Console](#console) * [CRM](#crm) @@ -648,6 +649,25 @@ This kind of profiles will be handled by buffer manager and won't be applied to ``` +### Chassis Module + +CHASSIS_MODULE table holds the list and configuration of linecard and fabric modules in a SONiC chassis. +It currently allows user to administratively bring down a line-card or fabric-card + +``` +{ + "CHASSIS_MODULE": { + "LINE-CARD0": { + "admin_status": "down" + }, + "FABRIC-CARD1": { + "admin_status": "down" + } + } +} + +``` + ### COPP_TABLE ``` diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py index 26582723f132..96899c055bda 100644 --- a/src/sonic-yang-models/setup.py +++ b/src/sonic-yang-models/setup.py @@ -97,6 +97,7 @@ def run(self): './yang-models/sonic-buffer-profile.yang', './yang-models/sonic-buffer-queue.yang', './yang-models/sonic-cable-length.yang', + './yang-models/sonic-chassis-module.yang', './yang-models/sonic-copp.yang', './yang-models/sonic-console.yang', './yang-models/sonic-crm.yang', diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index 94b37260f6aa..d6f35897285e 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -1631,6 +1631,14 @@ "prefix1|1|10.0.0.0/8|8..16": { } }, + "CHASSIS_MODULE": { + "LINE-CARD0": { + "admin_status": "down" + }, + "FABRIC-CARD1": { + "admin_status": "down" + } + }, "COPP_GROUP": { "queue1_group1": { "queue": "1", diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/chassis_module.json b/src/sonic-yang-models/tests/yang_model_tests/tests/chassis_module.json new file mode 100644 index 000000000000..cfdaa3733e84 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/chassis_module.json @@ -0,0 +1,13 @@ +{ + "CHASSIS_MODULE_WITH_DEFAULT_VALUES": { + "desc": "Load chassis module table with fields set to default values" + }, + "CHASSIS_MODULE_WITH_LINECARD_ADMIN_DOWN": { + "desc": "Load chassis module table with admin_status set to down" + }, + "CHASSIS_MODULE_WITH_LINECARD_ADMIN_INVALID_VALUE": { + "desc": "Load chassis module table with admin_status set to invalid value", + "eStrKey": "InvalidValue", + "eStr": ["admin_status"] + } +} diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/chassis_module.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/chassis_module.json new file mode 100644 index 000000000000..35c76c7c4d4e --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/chassis_module.json @@ -0,0 +1,54 @@ +{ + "CHASSIS_MODULE_WITH_DEFAULT_VALUES": { + "sonic-chassis-module:sonic-chassis-module": { + "sonic-chassis-module:CHASSIS_MODULE": { + "CHASSIS_MODULE_LIST": [ + { + "name": "LINE-CARD0", + "admin_status": "up" + }, + { + "name": "LINE-CARD1", + "admin_status": "up" + }, + { + "name": "FABRIC-CARD0", + "admin_status": "up" + }, + { + "name": "FABRIC-CARD1", + "admin_status": "up" + } + ] + } + } + }, + "CHASSIS_MODULE_WITH_LINECARD_ADMIN_DOWN": { + "sonic-chassis-module:sonic-chassis-module": { + "sonic-chassis-module:CHASSIS_MODULE": { + "CHASSIS_MODULE_LIST": [ + { + "name": "LINE-CARD0", + "admin_status": "down" + }, + { + "name": "FABRIC-CARD1", + "admin_status": "down" + } + ] + } + } + }, + "CHASSIS_MODULE_WITH_LINECARD_ADMIN_INVALID_VALUE": { + "sonic-chassis-module:sonic-chassis-module": { + "sonic-chassis-module:CHASSIS_MODULE": { + "CHASSIS_MODULE_LIST": [ + { + "name": "LINE-CARD0", + "admin_status": "false" + } + ] + } + } + } +} diff --git a/src/sonic-yang-models/yang-models/sonic-chassis-module.yang b/src/sonic-yang-models/yang-models/sonic-chassis-module.yang new file mode 100644 index 000000000000..e31c252d8a9d --- /dev/null +++ b/src/sonic-yang-models/yang-models/sonic-chassis-module.yang @@ -0,0 +1,36 @@ +module sonic-chassis-module { + + yang-version 1.1; + + namespace "http://github.com/sonic-net/sonic-chassis-module"; + prefix chassis_mod; + import sonic-types { + prefix stypes; + } + description "CHASSIS_MODULE YANG to administratively set SONIC modules state"; + + revision 2023-02-24 { + description "Initial version"; + } + + container sonic-chassis-module { + container CHASSIS_MODULE { + description "List of modules in the chassis"; + list CHASSIS_MODULE_LIST { + key "name"; + leaf name { + type string { + pattern "LINE-CARD[0-9]+|FABRIC-CARD[0-9]+"; + } + description "Line-card or fabric-card module name"; + } + + leaf admin_status { + type stypes:admin_status; + default up; + description "Administrative state of chassis module"; + } + } + } + } +} From 2ba2ff1398032dc39ce516f31390b0ec5fcf6657 Mon Sep 17 00:00:00 2001 From: Liu Shilong Date: Tue, 7 Mar 2023 21:14:04 +0800 Subject: [PATCH 46/46] [ci] Migrate test jobs to vmss agent pool to increase node limit. (#14127) Why I did it original ubuntu-20.04 agent pool has a node limit 35. Use vmss agent pool to get higher node limit. How I did it --- azure-pipelines.yml | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 05b86c51ccb1..ece3459196d1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -176,8 +176,7 @@ stages: section: part-2 - job: t0_testbedv2 - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 displayName: "kvmtest-t0 by TestbedV2" timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) @@ -190,8 +189,7 @@ stages: MAX_WORKER: $(T0_INSTANCE_NUM) - job: t0_2vlans_testbedv2 - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 displayName: "kvmtest-t0-2vlans by TestbedV2" timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) @@ -254,8 +252,7 @@ stages: vmtype: ceos - job: t1_lag_testbedv2 - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 displayName: "kvmtest-t1-lag by TestbedV2" timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) @@ -321,8 +318,7 @@ stages: - job: multi_asic_testbedv2 displayName: "kvmtest-multi-asic-t1-lag by TestbedV2" - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) continueOnError: false @@ -336,8 +332,7 @@ stages: NUM_ASIC: 4 - job: dualtor_testbedv2 - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 displayName: "kvmtest-dualtor-t0 by TestbedV2" timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) @@ -352,8 +347,7 @@ stages: - job: sonic_t0_testbedv2 displayName: "kvmtest-t0-sonic by TestbedV2" - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) continueOnError: false @@ -370,8 +364,7 @@ stages: - job: wan_testbedv2 displayName: "kvmtest-wan by TestbedV2" - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) continueOnError: false