diff --git a/.azure-pipelines/azure-pipelines-build.yml b/.azure-pipelines/azure-pipelines-build.yml index eb3c3aa21bb8..2b90f6bf3cd4 100644 --- a/.azure-pipelines/azure-pipelines-build.yml +++ b/.azure-pipelines/azure-pipelines-build.yml @@ -104,6 +104,11 @@ jobs: make $BUILD_OPTIONS INSTALL_DEBUG_TOOLS=y target/sonic-vs.img.gz && mv target/sonic-vs.img.gz target/sonic-vs-dbg.img.gz fi make $BUILD_OPTIONS target/docker-sonic-vs.gz target/sonic-vs.img.gz target/docker-ptf.gz + if [ $(Build.Reason) != 'PullRequest' ];then + gzip -kd target/sonic-vs.img.gz + SONIC_RUN_CMDS="qemu-img convert target/sonic-vs.img -O vhdx -o subformat=dynamic target/sonic-vs.vhdx" make sonic-slave-run + rm target/sonic-vs.img + fi else if [ $(dbg_image) == yes ]; then make $BUILD_OPTIONS INSTALL_DEBUG_TOOLS=y target/sonic-$(GROUP_NAME).bin && \ diff --git a/.azure-pipelines/docker-sonic-slave.yml b/.azure-pipelines/docker-sonic-slave.yml index a0a1993cd551..c9121df880b0 100644 --- a/.azure-pipelines/docker-sonic-slave.yml +++ b/.azure-pipelines/docker-sonic-slave.yml @@ -46,9 +46,9 @@ parameters: default: sonicdev variables: -- ${{ if and(startsWith(variables['Build.SourceBranchName'], '202'), eq(length(variables['Build.SourceBranchName']), 6)) }}: +- ${{ if eq(variables['Build.SourceBranchName'], '202012') }}: - name: BUILD_OPTIONS - value: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web' + value: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' stages: - stage: Build diff --git a/.gitmodules b/.gitmodules index f1c3b9e4fc36..357498ff1c54 100644 --- a/.gitmodules +++ b/.gitmodules @@ -91,3 +91,6 @@ path = platform/broadcom/saibcm-modules-dnx url = https://github.com/Azure/saibcm-modules.git branch = sdk-6.5.22-gpl-dnx +[submodule "platform/broadcom/sonic-platform-modules-nokia"] + path = platform/broadcom/sonic-platform-modules-nokia + url = https://github.com/nokia/sonic-platform.git diff --git a/Makefile b/Makefile index 3b8792bfb445..ace13582cbef 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ NOJESSIE ?= 1 NOSTRETCH ?= 0 NOBUSTER ?= 0 -NOBULLSEYE ?= 1 +NOBULLSEYE ?= 0 ifeq ($(NOJESSIE),0) BUILD_JESSIE=1 @@ -35,7 +35,7 @@ ifeq ($(NOSTRETCH), 0) EXTRA_DOCKER_TARGETS=$(notdir $@) BLDENV=stretch make -f Makefile.work stretch endif ifeq ($(NOBUSTER), 0) - BLDENV=buster make -f Makefile.work $@ + EXTRA_DOCKER_TARGETS=$(notdir $@) BLDENV=buster make -f Makefile.work buster endif ifeq ($(NOBULLSEYE), 0) BLDENV=bullseye make -f Makefile.work $@ diff --git a/Makefile.cache b/Makefile.cache index 4037222ffc93..cfea8afcf1bf 100644 --- a/Makefile.cache +++ b/Makefile.cache @@ -74,7 +74,8 @@ SONIC_COMMON_DPKG_LIST := debian/control debian/changelog debian/rules \ debian/compat debian/install debian/copyright SONIC_COMMON_BASE_FILES_LIST := sonic-slave-jessie/Dockerfile.j2 sonic-slave-jessie/Dockerfile.user.j2 \ sonic-slave-stretch/Dockerfile.j2 sonic-slave-stretch/Dockerfile.user.j2 \ - sonic-slave-buster/Dockerfile.j2 sonic-slave-buster/Dockerfile.user.j2 + sonic-slave-buster/Dockerfile.j2 sonic-slave-buster/Dockerfile.user.j2 \ + sonic-slave-bullseye/Dockerfile.j2 sonic-slave-bullseye/Dockerfile.user.j2 diff --git a/Makefile.work b/Makefile.work index 4a59067434fd..7716baf60b67 100644 --- a/Makefile.work +++ b/Makefile.work @@ -47,12 +47,13 @@ SHELL = /bin/bash USER := $(shell id -un) PWD := $(shell pwd) USER_LC := $(shell echo $(USER) | tr A-Z a-z) +DOCKER_MACHINE := $(shell docker run --rm debian:buster uname -m) comma := , -ifeq ($(shell uname -m), aarch64) +ifeq ($(DOCKER_MACHINE), aarch64) COMPILE_HOST_ARCH := arm64 -else ifeq ($(shell uname -m), armv7l) +else ifeq ($(shell echo $(DOCKER_MACHINE) | grep -qE "armv7l|armv8l" && echo y),y) COMPILE_HOST_ARCH := armhf else COMPILE_HOST_ARCH := amd64 @@ -279,6 +280,7 @@ SONIC_BUILD_INSTRUCTION := make \ SONIC_ENABLE_IMAGE_SIGNATURE=$(ENABLE_IMAGE_SIGNATURE) \ ENABLE_HOST_SERVICE_ON_START=$(ENABLE_HOST_SERVICE_ON_START) \ SLAVE_DIR=$(SLAVE_DIR) \ + BUILD_MULTIASIC_KVM=$(BUILD_MULTIASIC_KVM) \ $(SONIC_OVERRIDE_BUILD_VARS) .PHONY: sonic-slave-build sonic-slave-bash init reset @@ -286,7 +288,7 @@ SONIC_BUILD_INSTRUCTION := make \ .DEFAULT_GOAL := all %:: -ifneq (,$(filter $(CONFIGURED_ARCH), armhf arm64)) +ifeq ($(MULTIARCH_QEMU_ENVIRON), y) @$(DOCKER_MULTIARCH_CHECK) ifneq ($(BLDENV), ) @$(DOCKER_SERVICE_MULTIARCH_CHECK) @@ -361,7 +363,7 @@ reset : if [ $$ans == y ]; then echo "Resetting local repository. Please wait..."; $(DOCKER_RUN) $(SLAVE_IMAGE):$(SLAVE_TAG) sudo rm -rf fsroot; - if [[ "$(CONFIGURED_ARCH)" == "armhf" || "$(CONFIGURED_ARCH)" == "arm64" ]]; then + if [ "$(MULTIARCH_QEMU_ENVIRON)" == y ] && [[ "$(CONFIGURED_ARCH)" == "armhf" || "$(CONFIGURED_ARCH)" == "arm64" ]]; then echo "Stopping march $(CONFIGURED_ARCH) docker" sudo kill -9 `sudo cat /var/run/march/docker.pid` || true sudo rm -f /var/run/march/docker.pid || true diff --git a/README.md b/README.md index 988424f9bac5..aada8a53084b 100644 --- a/README.md +++ b/README.md @@ -67,24 +67,27 @@ Following is the instruction on how to build an [(ONIE)](https://github.com/opencomputeproject/onie) compatible network operating system (NOS) installer image for network switches, and also how to build docker images running inside the NOS. Note that SONiC image are build per ASIC platform. Switches using the same ASIC platform share a common image. For a list of supported switches and ASIC, please refer to this [list](https://github.com/Azure/SONiC/wiki/Supported-Devices-and-Platforms) # Hardware -Any server can be a build image server. We are using a server with 1T hard disk. The OS is Ubuntu 16.04. -## Prerequisites +Any server can be a build image server as long as it has: -Install pip and jinja in host build machine, execute below commands if j2/j2cli is not available: + * Multiple cores to increase build speed + * Plenty of RAM (less than 8 GiB is likely to cause issues) + * 300G of free disk space - sudo apt-get install -y python-pip - sudo python2 -m pip install -U pip==9.0.3 - sudo pip install --force-reinstall --upgrade jinja2>=2.10 - sudo pip install j2cli +A good choice of OS for building SONiC is currently Ubuntu 20.04. -Configure your system to allow running the 'docker' command without 'sudo': - Add current user to the docker group - `sudo gpasswd -a ${USER} docker` - Log out and log back in so that your group membership is re-evaluated +## Prerequisites -## SAI Version -Please refer to [SONiC roadmap](https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning) on the SAI version for each SONiC release. + * Install pip and jinja in host build machine, execute below commands if j2/j2cli is not available: + +``` +sudo apt install -y python3-pip +sudo pip3 install j2cli +``` + + * Install [Docker](https://docs.docker.com/engine/install/) and configure your system to allow running the 'docker' command without 'sudo': + * Add current user to the docker group: `sudo gpasswd -a ${USER} docker` + * Log out and log back in so that your group membership is re-evaluated ## Clone or fetch the code repository with all git submodules To clone the code repository recursively, assuming git version 1.9 or newer: @@ -110,8 +113,22 @@ To build SONiC installer image and docker images, run the following commands: # Execute make configure once to configure ASIC make configure PLATFORM=[ASIC_VENDOR] - # Build SONiC image - make all + # Build SONiC image with 4 jobs in parallel. + # Note: You can set this higher, but 4 is a good number for most cases + # and is well-tested. + make SONIC_BUILD_JOBS=4 all + + The supported ASIC vendors are: + +- PLATFORM=broadcom +- PLATFORM=marvell +- PLATFORM=mellanox +- PLATFORM=cavium +- PLATFORM=centec +- PLATFORM=nephos +- PLATFORM=innovium +- PLATFORM=p4 +- PLATFORM=vs ## Usage for ARM Architecture To build Arm32 bit for (ARMHF) platform @@ -147,7 +164,7 @@ To build Arm64 bit for platform **NOTE**: -- Recommend reserving 50G free space to build one platform. +- Recommend reserving at least 100G free space to build one platform with a single job. The build process will use more disk if you are setting `SONIC_BUILD_JOBS` to more than 1. - If Docker's workspace folder, `/var/lib/docker`, resides on a partition without sufficient free space, you may encounter an error like the following during a Docker container build job: `/usr/bin/tar: /path/to/sonic-buildimage/: Cannot write: No space left on device` @@ -156,17 +173,7 @@ To build Arm64 bit for platform - Use `http_proxy=[your_proxy] https_proxy=[your_proxy] no_proxy=[your_no_proxy] make` to enable http(s) proxy in the build process. - Add your user account to `docker` group and use your user account to make. `root` or `sudo` are not supported. -The SONiC installer contains all docker images needed. SONiC uses one image for all devices of a same ASIC vendor. The supported ASIC vendors are: - -- PLATFORM=broadcom -- PLATFORM=marvell -- PLATFORM=mellanox -- PLATFORM=cavium -- PLATFORM=centec -- PLATFORM=nephos -- PLATFORM=innovium -- PLATFORM=p4 -- PLATFORM=vs +The SONiC installer contains all docker images needed. SONiC uses one image for all devices of a same ASIC vendor. For Broadcom ASIC, we build ONIE and EOS image. EOS image is used for Arista devices, ONIE image is used for all other Broadcom ASIC based devices. @@ -198,6 +205,9 @@ It is recommended to use clean targets to clean all packages that are built toge ## Build debug dockers and debug SONiC installer image: SONiC build system supports building dockers and ONIE-image with debug tools and debug symbols, to help with live & core debugging. For details refer to [(SONiC Buildimage Guide)](https://github.com/Azure/sonic-buildimage/blob/master/README.buildsystem.md). +## SAI Version +Please refer to [SONiC roadmap](https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning) on the SAI version for each SONiC release. + ## Notes: - If you are running make for the first time, a sonic-slave-${USER} docker image will be built automatically. This may take a while, but it is a one-time action, so please be patient. diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 29fcb8b2ed44..53cee38e797a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -17,6 +17,7 @@ pr: include: - master - 202012 + - bullseye paths: exclude: - .github @@ -36,7 +37,7 @@ stages: variables: CACHE_MODE: rcache ${{ if eq(variables['Build.SourceBranchName'], '202012') }}: - VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web' + VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' jobs: - template: .azure-pipelines/azure-pipelines-build.yml parameters: @@ -71,7 +72,7 @@ stages: source: specific project: build pipeline: 9 - artifacts: sonic-swss-common.amd64.ubuntu20_04 + artifact: sonic-swss-common.amd64.ubuntu20_04 runVersion: 'latestFromBranch' runBranch: 'refs/heads/master' displayName: "Download sonic swss common deb packages" @@ -83,8 +84,8 @@ stages: - script: | set -x - sudo dpkg -i --force-confask,confnew ../sonic-swss-common.amd64.ubuntu20_04/libswsscommon_1.0.0_amd64.deb - sudo dpkg -i ../sonic-swss-common.amd64.ubuntu20_04/python3-swsscommon_1.0.0_amd64.deb + sudo dpkg -i --force-confask,confnew ../libswsscommon_1.0.0_amd64.deb + sudo dpkg -i ../python3-swsscommon_1.0.0_amd64.deb sudo docker load -i ../target/docker-sonic-vs.gz docker tag docker-sonic-vs:latest docker-sonic-vs:$(Build.BuildNumber) username=$(id -un) @@ -106,7 +107,7 @@ stages: - job: pool: sonictest displayName: "kvmtest-t0" - timeoutInMinutes: 240 + timeoutInMinutes: 300 steps: - template: .azure-pipelines/run-test-template.yml diff --git a/build_debian.sh b/build_debian.sh index 077388d941ff..f8217a0c162c 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -31,8 +31,8 @@ set -x -e CONFIGURED_ARCH=$([ -f .arch ] && cat .arch || echo amd64) ## docker engine version (with platform) -DOCKER_VERSION=5:18.09.8~3-0~debian-$IMAGE_DISTRO -LINUX_KERNEL_VERSION=4.19.0-12-2 +DOCKER_VERSION=5:20.10.7~3-0~debian-$IMAGE_DISTRO +LINUX_KERNEL_VERSION=5.10.0-8-2 ## Working directory to prepare the file system FILESYSTEM_ROOT=./fsroot @@ -281,8 +281,7 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in dbus \ ntpstat \ openssh-server \ - python \ - python-apt \ + python3-apt \ traceroute \ iputils-ping \ net-tools \ @@ -314,10 +313,10 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in ndisc6 \ makedumpfile \ conntrack \ - python-pip \ python3 \ python3-distutils \ python3-pip \ + python-is-python3 \ cron \ haveged \ jq @@ -348,12 +347,11 @@ sudo sed -i '/^#.* en_US.* /s/^#//' $FILESYSTEM_ROOT/etc/locale.gen && \ sudo LANG=en_US.UTF-8 DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT update-locale "LANG=en_US.UTF-8" sudo LANG=C chroot $FILESYSTEM_ROOT bash -c "find /usr/share/i18n/locales/ ! -name 'en_US' -type f -exec rm -f {} +" -# Install certain fundamental packages from $IMAGE_DISTRO-backports in order to get -# more up-to-date (but potentially less stable) versions -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y -t $IMAGE_DISTRO-backports install \ +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install \ picocom \ systemd \ - systemd-sysv + systemd-sysv \ + ntp if [[ $CONFIGURED_ARCH == amd64 ]]; then sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y download \ @@ -423,13 +421,10 @@ done < files/image_config/sysctl/sysctl-net.conf sudo augtool --autosave "$sysctl_net_cmd_string" -r $FILESYSTEM_ROOT # Upgrade pip via PyPI and uninstall the Debian version -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install --upgrade 'pip<21' sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install --upgrade pip -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python-pip python3-pip +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python3-pip # For building Python packages -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install 'setuptools==40.8.0' -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install 'wheel==0.35.1' sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'setuptools==49.6.00' sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'wheel==0.35.1' diff --git a/build_image.sh b/build_image.sh index 5353e85ab2f3..8ad484cdba39 100755 --- a/build_image.sh +++ b/build_image.sh @@ -25,6 +25,47 @@ fi IMAGE_VERSION="${SONIC_IMAGE_VERSION}" +generate_kvm_image() +{ + NUM_ASIC=$1 + if [ $NUM_ASIC == 4 ]; then + KVM_IMAGE=$OUTPUT_KVM_4ASIC_IMAGE + RECOVERY_ISO=$onie_recovery_kvm_4asic_image + elif [ $NUM_ASIC == 6 ]; then + KVM_IMAGE=$OUTPUT_KVM_6ASIC_IMAGE + RECOVERY_ISO=$onie_recovery_kvm_6asic_image + else + KVM_IMAGE=$OUTPUT_KVM_IMAGE + RECOVERY_ISO=$onie_recovery_image + NUM_ASIC=1 + fi + + echo "Build $NUM_ASIC-asic KVM image" + KVM_IMAGE_DISK=${KVM_IMAGE%.gz} + sudo rm -f $KVM_IMAGE_DISK $KVM_IMAGE_DISK.gz + + SONIC_USERNAME=$USERNAME PASSWD=$PASSWORD sudo -E ./scripts/build_kvm_image.sh $KVM_IMAGE_DISK $RECOVERY_ISO $OUTPUT_ONIE_IMAGE $KVM_IMAGE_DISK_SIZE + + if [ $? -ne 0 ]; then + echo "Error : build kvm image failed" + exit 1 + fi + + [ -r $KVM_IMAGE_DISK ] || { + echo "Error : $KVM_IMAGE_DISK not generated!" + exit 1 + } + + gzip $KVM_IMAGE_DISK + + [ -r $KVM_IMAGE_DISK.gz ] || { + echo "Error : gzip $KVM_IMAGE_DISK failed!" + exit 1 + } + + echo "The compressed kvm image is in $KVM_IMAGE_DISK.gz" +} + generate_onie_installer_image() { # Copy platform-specific ONIE installer config files where onie-mk-demo.sh expects them @@ -93,32 +134,16 @@ elif [ "$IMAGE_TYPE" = "raw" ]; then elif [ "$IMAGE_TYPE" = "kvm" ]; then - echo "Build KVM image" - KVM_IMAGE_DISK=${OUTPUT_KVM_IMAGE%.gz} - sudo rm -f $KVM_IMAGE_DISK $KVM_IMAGE_DISK.gz - generate_onie_installer_image - - SONIC_USERNAME=$USERNAME PASSWD=$PASSWORD sudo -E ./scripts/build_kvm_image.sh $KVM_IMAGE_DISK $onie_recovery_image $OUTPUT_ONIE_IMAGE $KVM_IMAGE_DISK_SIZE - - if [ $? -ne 0 ]; then - echo "Error : build kvm image failed" - exit 1 + # Generate single asic KVM image + generate_kvm_image + if [ "$BUILD_MULTIASIC_KVM" == "y" ]; then + # Genrate 4-asic KVM image + generate_kvm_image 4 + # Generate 6-asic KVM image + generate_kvm_image 6 fi - [ -r $KVM_IMAGE_DISK ] || { - echo "Error : $KVM_IMAGE_DISK not generated!" - exit 1 - } - - gzip $KVM_IMAGE_DISK - - [ -r $KVM_IMAGE_DISK.gz ] || { - echo "Error : gzip $KVM_IMAGE_DISK failed!" - exit 1 - } - - echo "The compressed kvm image is in $KVM_IMAGE_DISK.gz" ## Use 'aboot' as target machine category which includes Aboot as bootloader elif [ "$IMAGE_TYPE" = "aboot" ]; then diff --git a/device/accton/x86_64-accton_as4630_54pe-r0/plugins/sfputil.py b/device/accton/x86_64-accton_as4630_54pe-r0/plugins/sfputil.py index fd660ccdc245..e46722974fba 100755 --- a/device/accton/x86_64-accton_as4630_54pe-r0/plugins/sfputil.py +++ b/device/accton/x86_64-accton_as4630_54pe-r0/plugins/sfputil.py @@ -50,7 +50,7 @@ def port_end(self): @property def qsfp_ports(self): - return list(range(self.PORT_START, self.PORTS_IN_BLOCK + 1)) + return list(range(self.QSFP_START, self.PORTS_IN_BLOCK + 1)) @property def port_to_eeprom_mapping(self): @@ -147,7 +147,25 @@ def set_low_power_mode(self, port_num, lpmode): time.sleep(0.01) def reset(self, port_num): - raise NotImplementedError + if not port_num in self.qsfp_ports: + return False + + path = self.BASE_CPLD_PATH + "module_reset_" + str(port_num) + self.__port_to_mod_rst = path + try: + reg_file = open(self.__port_to_mod_rst, 'r+', buffering=0) + except IOError as e: + print( "Error: unable to open file: %s" % str(e)) + return False + + #toggle reset + reg_file.seek(0) + reg_file.write('1') + time.sleep(1) + reg_file.seek(0) + reg_file.write('0') + reg_file.close() + return True @property def _get_presence_bitmap(self): diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-Q16S64/td2-a7050-qx32-16x40G+32x10G+8x40G.config.bcm b/device/arista/x86_64-arista_7050_qx32/Arista-7050-Q16S64/td2-a7050-qx32-16x40G+32x10G+8x40G.config.bcm index d3ee2d5e3b0a..00714fbd400e 100644 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-Q16S64/td2-a7050-qx32-16x40G+32x10G+8x40G.config.bcm +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-Q16S64/td2-a7050-qx32-16x40G+32x10G+8x40G.config.bcm @@ -24,6 +24,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/td2-a7050-qx32-32x40G.config.bcm b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/td2-a7050-qx32-32x40G.config.bcm index 7537b36411f7..074cd523c072 100644 --- a/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/td2-a7050-qx32-32x40G.config.bcm +++ b/device/arista/x86_64-arista_7050_qx32/Arista-7050-QX32/td2-a7050-qx32-32x40G.config.bcm @@ -24,6 +24,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/hwsku.json b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/hwsku.json new file mode 100644 index 000000000000..a407ccd84052 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/hwsku.json @@ -0,0 +1,144 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x10G", + "port_type": "RJ45" + }, + "Ethernet1": { + "default_brkout_mode": "1x10G", + "port_type": "RJ45" + }, + "Ethernet2": { + "default_brkout_mode": "1x10G", + "port_type": "RJ45" + }, + "Ethernet3": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet4": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet8": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet12": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet16": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet20": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet24": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet28": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet32": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet36": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet40": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet44": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet48": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet52": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet56": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet60": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet64": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet68": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet72": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet76": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet80": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet84": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet88": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet92": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet96": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet100": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet104": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet108": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet112": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet116": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet120": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + }, + "Ethernet124": { + "default_brkout_mode": "1x40G", + "port_type": "QSFP+" + } + } +} diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/td2-a7050-q31s4-31x40G-4x10G.config.bcm b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/td2-a7050-q31s4-31x40G-4x10G.config.bcm index c5666bbc745d..1fa9817ff522 100644 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/td2-a7050-q31s4-31x40G-4x10G.config.bcm +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S-S4Q31/td2-a7050-q31s4-31x40G-4x10G.config.bcm @@ -4,6 +4,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku-init b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku-init new file mode 100755 index 000000000000..ffc913582aa7 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku-init @@ -0,0 +1,3 @@ +#!/bin/bash + +echo 1 > /sys/devices/pci0000:00/0000:00:02.2/0000:02:00.0/mux diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku.json b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku.json new file mode 100644 index 000000000000..9d29b9caa199 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/hwsku.json @@ -0,0 +1,100 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet4": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet8": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet12": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet16": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet20": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet24": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet28": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet32": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet36": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet40": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet44": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet48": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet52": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet56": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet60": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet64": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet68": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet72": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet76": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet80": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet84": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet88": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet92": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet96": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet100": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet104": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet108": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet112": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet116": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet120": { + "default_brkout_mode": "1x40G[10G]" + }, + "Ethernet124": { + "default_brkout_mode": "1x40G[10G]" + } + } +} \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/port_config.ini b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/port_config.ini new file mode 100644 index 000000000000..857b126bf833 --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/port_config.ini @@ -0,0 +1,33 @@ +# name lanes alias index speed +Ethernet0 9,10,11,12 Ethernet5/1 5 40000 +Ethernet4 13,14,15,16 Ethernet6/1 6 40000 +Ethernet8 17,18,19,20 Ethernet7/1 7 40000 +Ethernet12 21,22,23,24 Ethernet8/1 8 40000 +Ethernet16 29,30,31,32 Ethernet9/1 9 40000 +Ethernet20 25,26,27,28 Ethernet10/1 10 40000 +Ethernet24 33,34,35,36 Ethernet11/1 11 40000 +Ethernet28 37,38,39,40 Ethernet12/1 12 40000 +Ethernet32 45,46,47,48 Ethernet13/1 13 40000 +Ethernet36 41,42,43,44 Ethernet14/1 14 40000 +Ethernet40 49,50,51,52 Ethernet15/1 15 40000 +Ethernet44 53,54,55,56 Ethernet16/1 16 40000 +Ethernet48 69,70,71,72 Ethernet17/1 17 40000 +Ethernet52 65,66,67,68 Ethernet18/1 18 40000 +Ethernet56 73,74,75,76 Ethernet19/1 19 40000 +Ethernet60 77,78,79,80 Ethernet20/1 20 40000 +Ethernet64 93,94,95,96 Ethernet21/1 21 40000 +Ethernet68 89,90,91,92 Ethernet22/1 22 40000 +Ethernet72 97,98,99,100 Ethernet23/1 23 40000 +Ethernet76 101,102,103,104 Ethernet24/1 24 40000 +Ethernet80 109,110,111,112 Ethernet25/1 25 40000 +Ethernet84 105,106,107,108 Ethernet26/1 26 40000 +Ethernet88 121,122,123,124 Ethernet27/1 27 40000 +Ethernet92 125,126,127,128 Ethernet28/1 28 40000 +Ethernet96 61,62,63,64 Ethernet29 29 40000 +Ethernet100 57,58,59,60 Ethernet30 30 40000 +Ethernet104 81,82,83,84 Ethernet31 31 40000 +Ethernet108 85,86,87,88 Ethernet32 32 40000 +Ethernet112 117,118,119,120 Ethernet33 33 40000 +Ethernet116 113,114,115,116 Ethernet34 34 40000 +Ethernet120 1,2,3,4 Ethernet35 35 40000 +Ethernet124 5,6,7,8 Ethernet36 36 40000 diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/sai.profile b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/sai.profile new file mode 100644 index 000000000000..4790abaa671c --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX-32S/sai.profile @@ -0,0 +1,2 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/td2-a7050qx-32s-flex.config.bcm +SAI_NUM_ECMP_MEMBERS=64 diff --git a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/td2-a7050-qx32s-32x40G.config.bcm b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/td2-a7050-qx32s-32x40G.config.bcm index 31521e4c43ae..5ffd9530a7c9 100644 --- a/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/td2-a7050-qx32s-32x40G.config.bcm +++ b/device/arista/x86_64-arista_7050_qx32s/Arista-7050QX32S-Q32/td2-a7050-qx32s-32x40G.config.bcm @@ -18,6 +18,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/arista/x86_64-arista_7050_qx32s/platform.json b/device/arista/x86_64-arista_7050_qx32s/platform.json index 7d725b59fe13..0dd9b558d06f 100644 --- a/device/arista/x86_64-arista_7050_qx32s/platform.json +++ b/device/arista/x86_64-arista_7050_qx32s/platform.json @@ -193,5 +193,534 @@ } ] }, - "interfaces": {} -} \ No newline at end of file + "interfaces": { + "Ethernet0": { + "index": "5,5,5,5", + "lanes": "9,10,11,12", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet5/1" + ], + "2x20G[10G]": [ + "Ethernet5/1", + "Ethernet5/3" + ], + "4x10G": [ + "Ethernet5/1", + "Ethernet5/2", + "Ethernet5/3", + "Ethernet5/4" + ] + } + }, + "Ethernet4": { + "index": "6,6,6,6", + "lanes": "13,14,15,16", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet6/1" + ], + "2x20G[10G]": [ + "Ethernet6/1", + "Ethernet6/3" + ], + "4x10G": [ + "Ethernet6/1", + "Ethernet6/2", + "Ethernet6/3", + "Ethernet6/4" + ] + } + }, + "Ethernet8": { + "index": "7,7,7,7", + "lanes": "17,18,19,20", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet7/1" + ], + "2x20G[10G]": [ + "Ethernet7/1", + "Ethernet7/3" + ], + "4x10G": [ + "Ethernet7/1", + "Ethernet7/2", + "Ethernet7/3", + "Ethernet7/4" + ] + } + }, + "Ethernet12": { + "index": "8,8,8,8", + "lanes": "21,22,23,24", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet8/1" + ], + "2x20G[10G]": [ + "Ethernet8/1", + "Ethernet8/3" + ], + "4x10G": [ + "Ethernet8/1", + "Ethernet8/2", + "Ethernet8/3", + "Ethernet8/4" + ] + } + }, + "Ethernet16": { + "index": "9,9,9,9", + "lanes": "29,30,31,32", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet9/1" + ], + "2x20G[10G]": [ + "Ethernet9/1", + "Ethernet9/3" + ], + "4x10G": [ + "Ethernet9/1", + "Ethernet9/2", + "Ethernet9/3", + "Ethernet9/4" + ] + } + }, + "Ethernet20": { + "index": "10,10,10,10", + "lanes": "25,26,27,28", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet10/1" + ], + "2x20G[10G]": [ + "Ethernet10/1", + "Ethernet10/3" + ], + "4x10G": [ + "Ethernet10/1", + "Ethernet10/2", + "Ethernet10/3", + "Ethernet10/4" + ] + } + }, + "Ethernet24": { + "index": "11,11,11,11", + "lanes": "33,34,35,36", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet11/1" + ], + "2x20G[10G]": [ + "Ethernet11/1", + "Ethernet11/3" + ], + "4x10G": [ + "Ethernet11/1", + "Ethernet11/2", + "Ethernet11/3", + "Ethernet11/4" + ] + } + }, + "Ethernet28": { + "index": "12,12,12,12", + "lanes": "37,38,39,40", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet12/1" + ], + "2x20G[10G]": [ + "Ethernet12/1", + "Ethernet12/3" + ], + "4x10G": [ + "Ethernet12/1", + "Ethernet12/2", + "Ethernet12/3", + "Ethernet12/4" + ] + } + }, + "Ethernet32": { + "index": "13,13,13,13", + "lanes": "45,46,47,48", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet13/1" + ], + "2x20G[10G]": [ + "Ethernet13/1", + "Ethernet13/3" + ], + "4x10G": [ + "Ethernet13/1", + "Ethernet13/2", + "Ethernet13/3", + "Ethernet13/4" + ] + } + }, + "Ethernet36": { + "index": "14,14,14,14", + "lanes": "41,42,43,44", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet14/1" + ], + "2x20G[10G]": [ + "Ethernet14/1", + "Ethernet14/3" + ], + "4x10G": [ + "Ethernet14/1", + "Ethernet14/2", + "Ethernet14/3", + "Ethernet14/4" + ] + } + }, + "Ethernet40": { + "index": "15,15,15,15", + "lanes": "49,50,51,52", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet15/1" + ], + "2x20G[10G]": [ + "Ethernet15/1", + "Ethernet15/3" + ], + "4x10G": [ + "Ethernet15/1", + "Ethernet15/2", + "Ethernet15/3", + "Ethernet15/4" + ] + } + }, + "Ethernet44": { + "index": "16,16,16,16", + "lanes": "53,54,55,56", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet16/1" + ], + "2x20G[10G]": [ + "Ethernet16/1", + "Ethernet16/3" + ], + "4x10G": [ + "Ethernet16/1", + "Ethernet16/2", + "Ethernet16/3", + "Ethernet16/4" + ] + } + }, + "Ethernet48": { + "index": "17,17,17,17", + "lanes": "69,70,71,72", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet17/1" + ], + "2x20G[10G]": [ + "Ethernet17/1", + "Ethernet17/3" + ], + "4x10G": [ + "Ethernet17/1", + "Ethernet17/2", + "Ethernet17/3", + "Ethernet17/4" + ] + } + }, + "Ethernet52": { + "index": "18,18,18,18", + "lanes": "65,66,67,68", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet18/1" + ], + "2x20G[10G]": [ + "Ethernet18/1", + "Ethernet18/3" + ], + "4x10G": [ + "Ethernet18/1", + "Ethernet18/2", + "Ethernet18/3", + "Ethernet18/4" + ] + } + }, + "Ethernet56": { + "index": "19,19,19,19", + "lanes": "73,74,75,76", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet19/1" + ], + "2x20G[10G]": [ + "Ethernet19/1", + "Ethernet19/3" + ], + "4x10G": [ + "Ethernet19/1", + "Ethernet19/2", + "Ethernet19/3", + "Ethernet19/4" + ] + } + }, + "Ethernet60": { + "index": "20,20,20,20", + "lanes": "77,78,79,80", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet20/1" + ], + "2x20G[10G]": [ + "Ethernet20/1", + "Ethernet20/3" + ], + "4x10G": [ + "Ethernet20/1", + "Ethernet20/2", + "Ethernet20/3", + "Ethernet20/4" + ] + } + }, + "Ethernet64": { + "index": "21,21,21,21", + "lanes": "93,94,95,96", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet21/1" + ], + "2x20G[10G]": [ + "Ethernet21/1", + "Ethernet21/3" + ], + "4x10G": [ + "Ethernet21/1", + "Ethernet21/2", + "Ethernet21/3", + "Ethernet21/4" + ] + } + }, + "Ethernet68": { + "index": "22,22,22,22", + "lanes": "89,90,91,92", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet22/1" + ], + "2x20G[10G]": [ + "Ethernet22/1", + "Ethernet22/3" + ], + "4x10G": [ + "Ethernet22/1", + "Ethernet22/2", + "Ethernet22/3", + "Ethernet22/4" + ] + } + }, + "Ethernet72": { + "index": "23,23,23,23", + "lanes": "97,98,99,100", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet23/1" + ], + "2x20G[10G]": [ + "Ethernet23/1", + "Ethernet23/3" + ], + "4x10G": [ + "Ethernet23/1", + "Ethernet23/2", + "Ethernet23/3", + "Ethernet23/4" + ] + } + }, + "Ethernet76": { + "index": "24,24,24,24", + "lanes": "101,102,103,104", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet24/1" + ], + "2x20G[10G]": [ + "Ethernet24/1", + "Ethernet24/3" + ], + "4x10G": [ + "Ethernet24/1", + "Ethernet24/2", + "Ethernet24/3", + "Ethernet24/4" + ] + } + }, + "Ethernet80": { + "index": "25,25,25,25", + "lanes": "109,110,111,112", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet25/1" + ], + "2x20G[10G]": [ + "Ethernet25/1", + "Ethernet25/3" + ], + "4x10G": [ + "Ethernet25/1", + "Ethernet25/2", + "Ethernet25/3", + "Ethernet25/4" + ] + } + }, + "Ethernet84": { + "index": "26,26,26,26", + "lanes": "105,106,107,108", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet26/1" + ], + "2x20G[10G]": [ + "Ethernet26/1", + "Ethernet26/3" + ], + "4x10G": [ + "Ethernet26/1", + "Ethernet26/2", + "Ethernet26/3", + "Ethernet26/4" + ] + } + }, + "Ethernet88": { + "index": "27,27,27,27", + "lanes": "121,122,123,124", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet27/1" + ], + "2x20G[10G]": [ + "Ethernet27/1", + "Ethernet27/3" + ], + "4x10G": [ + "Ethernet27/1", + "Ethernet27/2", + "Ethernet27/3", + "Ethernet27/4" + ] + } + }, + "Ethernet92": { + "index": "28,28,28,28", + "lanes": "125,126,127,128", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet28/1" + ], + "2x20G[10G]": [ + "Ethernet28/1", + "Ethernet28/3" + ], + "4x10G": [ + "Ethernet28/1", + "Ethernet28/2", + "Ethernet28/3", + "Ethernet28/4" + ] + } + }, + "Ethernet96": { + "index": "29,29,29,29", + "lanes": "61,62,63,64", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet29" + ] + } + }, + "Ethernet100": { + "index": "30,30,30,30", + "lanes": "57,58,59,60", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet30" + ] + } + }, + "Ethernet104": { + "index": "31,31,31,31", + "lanes": "81,82,83,84", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet31" + ] + } + }, + "Ethernet108": { + "index": "32,32,32,32", + "lanes": "85,86,87,88", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet32" + ] + } + }, + "Ethernet112": { + "index": "33,33,33,33", + "lanes": "117,118,119,120", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet33" + ] + } + }, + "Ethernet116": { + "index": "34,34,34,34", + "lanes": "113,114,115,116", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet34" + ] + } + }, + "Ethernet120": { + "index": "35,35,35,35", + "lanes": "1,2,3,4", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet35" + ] + } + }, + "Ethernet124": { + "index": "36,36,36,36", + "lanes": "5,6,7,8", + "breakout_modes": { + "1x40G[10G]": [ + "Ethernet36" + ] + } + } + } +} diff --git a/device/arista/x86_64-arista_7050_qx32s/td2-a7050qx-32s-flex.config.bcm b/device/arista/x86_64-arista_7050_qx32s/td2-a7050qx-32s-flex.config.bcm new file mode 100644 index 000000000000..db021ab4bffe --- /dev/null +++ b/device/arista/x86_64-arista_7050_qx32s/td2-a7050qx-32s-flex.config.bcm @@ -0,0 +1,839 @@ +# ALPM enable +l3_alpm_enable=2 +ipv6_lpm_128b_enable=1 +l2_mem_entries=32768 +l3_mem_entries=16384 + +# From old config file +os=unix +higig2_hdr_mode=1 + +# Parity +parity_correction=1 +parity_enable=1 +stat_if_parity_enable=0 + +# l2 thread related config vars +l2xmsg_hostbuf_size=8192 +l2xmsg_mode=1 + +bcm_num_cos=10 +bcm_stat_interval=2000000 +lls_num_l2uc=12 +max_vp_lags=0 +miim_intr_enable=0 +mmu_lossless=0 +module_64ports=0 + +stable_size=0x2000000 + +schan_intr_enable=0 +tdma_timeout_usec=5000000 +tslam_timeout_usec=15000000 +cdma_timeout_usec=15000000 +dma_desc_timeout_usec=15000000 + +############################### +serdes_fiber_pref=1 +############################### +mdio_output_delay=0x0d +############################### +xgxs_lcpll_xtal_refclk=1 +tdma_intr_enable=1 +tslam_intr_enable=1 +table_dma_enable=1 + +pbmp_oversubscribe.0=0x1fffffffffffffffffffffffffe +pbmp_xport_xe.0=0x1fffffffffffffffffffffffffe +phy_an_c37_1.0=3 +phy_an_c37_2.0=3 +phy_an_c37_3.0=3 +phy_an_c37_4.0=3 +phy_an_c37_5.0=3 +phy_an_c37_6.0=3 +phy_an_c37_7.0=3 +phy_an_c37_8.0=3 +phy_an_c37_9.0=3 +phy_an_c37_10.0=3 +phy_an_c37_11.0=3 +phy_an_c37_12.0=3 +phy_an_c37_13.0=3 +phy_an_c37_14.0=3 +phy_an_c37_15.0=3 +phy_an_c37_16.0=3 +phy_an_c37_17.0=3 +phy_an_c37_18.0=3 +phy_an_c37_19.0=3 +phy_an_c37_20.0=3 +phy_an_c37_21.0=3 +phy_an_c37_22.0=3 +phy_an_c37_23.0=3 +phy_an_c37_24.0=3 +phy_an_c37_25.0=3 +phy_an_c37_26.0=3 +phy_an_c37_27.0=3 +phy_an_c37_28.0=3 +phy_an_c37_29.0=3 +phy_an_c37_30.0=3 +phy_an_c37_31.0=3 +phy_an_c37_32.0=3 +phy_an_c37_33.0=3 +phy_an_c37_34.0=3 +phy_an_c37_35.0=3 +phy_an_c37_36.0=3 +phy_an_c37_37.0=3 +phy_an_c37_38.0=3 +phy_an_c37_39.0=3 +phy_an_c37_40.0=3 +phy_an_c37_41.0=3 +phy_an_c37_42.0=3 +phy_an_c37_43.0=3 +phy_an_c37_44.0=3 +phy_an_c37_45.0=3 +phy_an_c37_46.0=3 +phy_an_c37_47.0=3 +phy_an_c37_48.0=3 +phy_an_c37_49.0=3 +phy_an_c37_50.0=3 +phy_an_c37_51.0=3 +phy_an_c37_52.0=3 +phy_an_c37_53.0=3 +phy_an_c37_54.0=3 +phy_an_c37_55.0=3 +phy_an_c37_56.0=3 +phy_an_c37_57.0=3 +phy_an_c37_58.0=3 +phy_an_c37_59.0=3 +phy_an_c37_60.0=3 +phy_an_c37_61.0=3 +phy_an_c37_62.0=3 +phy_an_c37_63.0=3 +phy_an_c37_64.0=3 +phy_an_c37_65.0=3 +phy_an_c37_66.0=3 +phy_an_c37_67.0=3 +phy_an_c37_68.0=3 +phy_an_c37_69.0=3 +phy_an_c37_70.0=3 +phy_an_c37_71.0=3 +phy_an_c37_72.0=3 +phy_an_c37_73.0=3 +phy_an_c37_74.0=3 +phy_an_c37_75.0=3 +phy_an_c37_76.0=3 +phy_an_c37_77.0=3 +phy_an_c37_78.0=3 +phy_an_c37_79.0=3 +phy_an_c37_80.0=3 +phy_an_c37_81.0=3 +phy_an_c37_82.0=3 +phy_an_c37_83.0=3 +phy_an_c37_84.0=3 +phy_an_c37_85.0=3 +phy_an_c37_86.0=3 +phy_an_c37_87.0=3 +phy_an_c37_88.0=3 +phy_an_c37_89.0=3 +phy_an_c37_90.0=3 +phy_an_c37_91.0=3 +phy_an_c37_92.0=3 +phy_an_c37_93.0=3 +phy_an_c37_94.0=3 +phy_an_c37_95.0=3 +phy_an_c37_96.0=3 +phy_an_c37_97.0=0 +phy_an_c37_98.0=0 +phy_an_c37_99.0=0 +phy_an_c37_100.0=0 +phy_an_c37_101.0=0 +phy_an_c37_102.0=0 +phy_an_c37_103.0=0 +phy_an_c37_104.0=0 +phy_an_c73_1.0=0 +phy_an_c73_2.0=0 +phy_an_c73_3.0=0 +phy_an_c73_4.0=0 +phy_an_c73_5.0=0 +phy_an_c73_6.0=0 +phy_an_c73_7.0=0 +phy_an_c73_8.0=0 +phy_an_c73_9.0=0 +phy_an_c73_10.0=0 +phy_an_c73_11.0=0 +phy_an_c73_12.0=0 +phy_an_c73_13.0=0 +phy_an_c73_14.0=0 +phy_an_c73_15.0=0 +phy_an_c73_16.0=0 +phy_an_c73_17.0=0 +phy_an_c73_18.0=0 +phy_an_c73_19.0=0 +phy_an_c73_20.0=0 +phy_an_c73_21.0=0 +phy_an_c73_22.0=0 +phy_an_c73_23.0=0 +phy_an_c73_24.0=0 +phy_an_c73_25.0=0 +phy_an_c73_26.0=0 +phy_an_c73_27.0=0 +phy_an_c73_28.0=0 +phy_an_c73_29.0=0 +phy_an_c73_30.0=0 +phy_an_c73_31.0=0 +phy_an_c73_32.0=0 +phy_an_c73_33.0=0 +phy_an_c73_34.0=0 +phy_an_c73_35.0=0 +phy_an_c73_36.0=0 +phy_an_c73_37.0=0 +phy_an_c73_38.0=0 +phy_an_c73_39.0=0 +phy_an_c73_40.0=0 +phy_an_c73_41.0=0 +phy_an_c73_42.0=0 +phy_an_c73_43.0=0 +phy_an_c73_44.0=0 +phy_an_c73_45.0=0 +phy_an_c73_46.0=0 +phy_an_c73_47.0=0 +phy_an_c73_48.0=0 +phy_an_c73_49.0=0 +phy_an_c73_50.0=0 +phy_an_c73_51.0=0 +phy_an_c73_52.0=0 +phy_an_c73_53.0=0 +phy_an_c73_54.0=0 +phy_an_c73_55.0=0 +phy_an_c73_56.0=0 +phy_an_c73_57.0=0 +phy_an_c73_58.0=0 +phy_an_c73_59.0=0 +phy_an_c73_60.0=0 +phy_an_c73_61.0=0 +phy_an_c73_62.0=0 +phy_an_c73_63.0=0 +phy_an_c73_64.0=0 +phy_an_c73_65.0=0 +phy_an_c73_66.0=0 +phy_an_c73_67.0=0 +phy_an_c73_68.0=0 +phy_an_c73_69.0=0 +phy_an_c73_70.0=0 +phy_an_c73_71.0=0 +phy_an_c73_72.0=0 +phy_an_c73_73.0=0 +phy_an_c73_74.0=0 +phy_an_c73_75.0=0 +phy_an_c73_76.0=0 +phy_an_c73_77.0=0 +phy_an_c73_78.0=0 +phy_an_c73_79.0=0 +phy_an_c73_80.0=0 +phy_an_c73_81.0=0 +phy_an_c73_82.0=0 +phy_an_c73_83.0=0 +phy_an_c73_84.0=0 +phy_an_c73_85.0=0 +phy_an_c73_86.0=0 +phy_an_c73_87.0=0 +phy_an_c73_88.0=0 +phy_an_c73_89.0=0 +phy_an_c73_90.0=0 +phy_an_c73_91.0=0 +phy_an_c73_92.0=0 +phy_an_c73_93.0=0 +phy_an_c73_94.0=0 +phy_an_c73_95.0=0 +phy_an_c73_96.0=0 +phy_an_c73_97.0=2 +phy_an_c73_98.0=2 +phy_an_c73_99.0=2 +phy_an_c73_100.0=2 +phy_an_c73_101.0=2 +phy_an_c73_102.0=2 +phy_an_c73_103.0=2 +phy_an_c73_104.0=2 +phy_xaui_rx_polarity_flip_1.0=0x0 +phy_xaui_rx_polarity_flip_2.0=0x0 +phy_xaui_rx_polarity_flip_3.0=0x0 +phy_xaui_rx_polarity_flip_4.0=0x0 +phy_xaui_rx_polarity_flip_5.0=0x0 +phy_xaui_rx_polarity_flip_6.0=0x0 +phy_xaui_rx_polarity_flip_7.0=0x0 +phy_xaui_rx_polarity_flip_8.0=0x0 +phy_xaui_rx_polarity_flip_9.0=0x0 +phy_xaui_rx_polarity_flip_10.0=0x0 +phy_xaui_rx_polarity_flip_11.0=0x1 +phy_xaui_rx_polarity_flip_12.0=0x0 +phy_xaui_rx_polarity_flip_13.0=0x0 +phy_xaui_rx_polarity_flip_14.0=0x0 +phy_xaui_rx_polarity_flip_15.0=0x0 +phy_xaui_rx_polarity_flip_16.0=0x0 +phy_xaui_rx_polarity_flip_17.0=0x1 +phy_xaui_rx_polarity_flip_18.0=0x1 +phy_xaui_rx_polarity_flip_19.0=0x0 +phy_xaui_rx_polarity_flip_20.0=0x1 +phy_xaui_rx_polarity_flip_21.0=0x1 +phy_xaui_rx_polarity_flip_22.0=0x1 +phy_xaui_rx_polarity_flip_23.0=0x0 +phy_xaui_rx_polarity_flip_24.0=0x0 +phy_xaui_rx_polarity_flip_25.0=0x1 +phy_xaui_rx_polarity_flip_26.0=0x1 +phy_xaui_rx_polarity_flip_27.0=0x0 +phy_xaui_rx_polarity_flip_28.0=0x1 +phy_xaui_rx_polarity_flip_29.0=0x1 +phy_xaui_rx_polarity_flip_30.0=0x1 +phy_xaui_rx_polarity_flip_31.0=0x1 +phy_xaui_rx_polarity_flip_32.0=0x1 +phy_xaui_rx_polarity_flip_33.0=0x1 +phy_xaui_rx_polarity_flip_34.0=0x1 +phy_xaui_rx_polarity_flip_35.0=0x0 +phy_xaui_rx_polarity_flip_36.0=0x1 +phy_xaui_rx_polarity_flip_37.0=0x1 +phy_xaui_rx_polarity_flip_38.0=0x1 +phy_xaui_rx_polarity_flip_39.0=0x0 +phy_xaui_rx_polarity_flip_40.0=0x0 +phy_xaui_rx_polarity_flip_41.0=0x1 +phy_xaui_rx_polarity_flip_42.0=0x1 +phy_xaui_rx_polarity_flip_43.0=0x0 +phy_xaui_rx_polarity_flip_44.0=0x1 +phy_xaui_rx_polarity_flip_45.0=0x0 +phy_xaui_rx_polarity_flip_46.0=0x0 +phy_xaui_rx_polarity_flip_47.0=0x0 +phy_xaui_rx_polarity_flip_48.0=0x0 +phy_xaui_rx_polarity_flip_49.0=0x0 +phy_xaui_rx_polarity_flip_50.0=0x0 +phy_xaui_rx_polarity_flip_51.0=0x1 +phy_xaui_rx_polarity_flip_52.0=0x0 +phy_xaui_rx_polarity_flip_53.0=0x0 +phy_xaui_rx_polarity_flip_54.0=0x0 +phy_xaui_rx_polarity_flip_55.0=0x1 +phy_xaui_rx_polarity_flip_56.0=0x1 +phy_xaui_rx_polarity_flip_57.0=0x0 +phy_xaui_rx_polarity_flip_58.0=0x0 +phy_xaui_rx_polarity_flip_59.0=0x1 +phy_xaui_rx_polarity_flip_60.0=0x0 +phy_xaui_rx_polarity_flip_61.0=0x0 +phy_xaui_rx_polarity_flip_62.0=0x0 +phy_xaui_rx_polarity_flip_63.0=0x0 +phy_xaui_rx_polarity_flip_64.0=0x0 +phy_xaui_rx_polarity_flip_65.0=0x1 +phy_xaui_rx_polarity_flip_66.0=0x1 +phy_xaui_rx_polarity_flip_67.0=0x0 +phy_xaui_rx_polarity_flip_68.0=0x1 +phy_xaui_rx_polarity_flip_69.0=0x1 +phy_xaui_rx_polarity_flip_70.0=0x1 +phy_xaui_rx_polarity_flip_71.0=0x0 +phy_xaui_rx_polarity_flip_72.0=0x0 +phy_xaui_rx_polarity_flip_73.0=0x1 +phy_xaui_rx_polarity_flip_74.0=0x1 +phy_xaui_rx_polarity_flip_75.0=0x0 +phy_xaui_rx_polarity_flip_76.0=0x1 +phy_xaui_rx_polarity_flip_77.0=0x1 +phy_xaui_rx_polarity_flip_78.0=0x1 +phy_xaui_rx_polarity_flip_79.0=0x1 +phy_xaui_rx_polarity_flip_80.0=0x1 +phy_xaui_rx_polarity_flip_81.0=0x1 +phy_xaui_rx_polarity_flip_82.0=0x1 +phy_xaui_rx_polarity_flip_83.0=0x0 +phy_xaui_rx_polarity_flip_84.0=0x1 +phy_xaui_rx_polarity_flip_85.0=0x1 +phy_xaui_rx_polarity_flip_86.0=0x1 +phy_xaui_rx_polarity_flip_87.0=0x0 +phy_xaui_rx_polarity_flip_88.0=0x0 +phy_xaui_rx_polarity_flip_89.0=0x0 +phy_xaui_rx_polarity_flip_90.0=0x0 +phy_xaui_rx_polarity_flip_91.0=0x1 +phy_xaui_rx_polarity_flip_92.0=0x0 +phy_xaui_rx_polarity_flip_93.0=0x0 +phy_xaui_rx_polarity_flip_94.0=0x0 +phy_xaui_rx_polarity_flip_95.0=0x0 +phy_xaui_rx_polarity_flip_96.0=0x0 +phy_xaui_rx_polarity_flip_97.0=0xb +phy_xaui_rx_polarity_flip_98.0=0x3 +phy_xaui_rx_polarity_flip_99.0=0x4 +phy_xaui_rx_polarity_flip_100.0=0x0 +phy_xaui_rx_polarity_flip_101.0=0x0 +phy_xaui_rx_polarity_flip_102.0=0xe +phy_xaui_rx_polarity_flip_103.0=0x0 +phy_xaui_rx_polarity_flip_104.0=0x0 +phy_xaui_tx_polarity_flip_1.0=0x0 +phy_xaui_tx_polarity_flip_2.0=0x0 +phy_xaui_tx_polarity_flip_3.0=0x0 +phy_xaui_tx_polarity_flip_4.0=0x0 +phy_xaui_tx_polarity_flip_5.0=0x0 +phy_xaui_tx_polarity_flip_6.0=0x0 +phy_xaui_tx_polarity_flip_7.0=0x0 +phy_xaui_tx_polarity_flip_8.0=0x0 +phy_xaui_tx_polarity_flip_9.0=0x0 +phy_xaui_tx_polarity_flip_10.0=0x1 +phy_xaui_tx_polarity_flip_11.0=0x0 +phy_xaui_tx_polarity_flip_12.0=0x0 +phy_xaui_tx_polarity_flip_13.0=0x0 +phy_xaui_tx_polarity_flip_14.0=0x0 +phy_xaui_tx_polarity_flip_15.0=0x0 +phy_xaui_tx_polarity_flip_16.0=0x0 +phy_xaui_tx_polarity_flip_17.0=0x1 +phy_xaui_tx_polarity_flip_18.0=0x0 +phy_xaui_tx_polarity_flip_19.0=0x1 +phy_xaui_tx_polarity_flip_20.0=0x1 +phy_xaui_tx_polarity_flip_21.0=0x0 +phy_xaui_tx_polarity_flip_22.0=0x0 +phy_xaui_tx_polarity_flip_23.0=0x1 +phy_xaui_tx_polarity_flip_24.0=0x1 +phy_xaui_tx_polarity_flip_25.0=0x1 +phy_xaui_tx_polarity_flip_26.0=0x0 +phy_xaui_tx_polarity_flip_27.0=0x1 +phy_xaui_tx_polarity_flip_28.0=0x1 +phy_xaui_tx_polarity_flip_29.0=0x1 +phy_xaui_tx_polarity_flip_30.0=0x1 +phy_xaui_tx_polarity_flip_31.0=0x1 +phy_xaui_tx_polarity_flip_32.0=0x1 +phy_xaui_tx_polarity_flip_33.0=0x1 +phy_xaui_tx_polarity_flip_34.0=0x0 +phy_xaui_tx_polarity_flip_35.0=0x1 +phy_xaui_tx_polarity_flip_36.0=0x1 +phy_xaui_tx_polarity_flip_37.0=0x0 +phy_xaui_tx_polarity_flip_38.0=0x0 +phy_xaui_tx_polarity_flip_39.0=0x1 +phy_xaui_tx_polarity_flip_40.0=0x1 +phy_xaui_tx_polarity_flip_41.0=0x1 +phy_xaui_tx_polarity_flip_42.0=0x0 +phy_xaui_tx_polarity_flip_43.0=0x1 +phy_xaui_tx_polarity_flip_44.0=0x1 +phy_xaui_tx_polarity_flip_45.0=0x0 +phy_xaui_tx_polarity_flip_46.0=0x0 +phy_xaui_tx_polarity_flip_47.0=0x0 +phy_xaui_tx_polarity_flip_48.0=0x0 +phy_xaui_tx_polarity_flip_49.0=0x0 +phy_xaui_tx_polarity_flip_50.0=0x1 +phy_xaui_tx_polarity_flip_51.0=0x0 +phy_xaui_tx_polarity_flip_52.0=0x0 +phy_xaui_tx_polarity_flip_53.0=0x1 +phy_xaui_tx_polarity_flip_54.0=0x1 +phy_xaui_tx_polarity_flip_55.0=0x0 +phy_xaui_tx_polarity_flip_56.0=0x0 +phy_xaui_tx_polarity_flip_57.0=0x0 +phy_xaui_tx_polarity_flip_58.0=0x1 +phy_xaui_tx_polarity_flip_59.0=0x0 +phy_xaui_tx_polarity_flip_60.0=0x0 +phy_xaui_tx_polarity_flip_61.0=0x0 +phy_xaui_tx_polarity_flip_62.0=0x0 +phy_xaui_tx_polarity_flip_63.0=0x0 +phy_xaui_tx_polarity_flip_64.0=0x0 +phy_xaui_tx_polarity_flip_65.0=0x1 +phy_xaui_tx_polarity_flip_66.0=0x0 +phy_xaui_tx_polarity_flip_67.0=0x1 +phy_xaui_tx_polarity_flip_68.0=0x1 +phy_xaui_tx_polarity_flip_69.0=0x0 +phy_xaui_tx_polarity_flip_70.0=0x0 +phy_xaui_tx_polarity_flip_71.0=0x1 +phy_xaui_tx_polarity_flip_72.0=0x1 +phy_xaui_tx_polarity_flip_73.0=0x1 +phy_xaui_tx_polarity_flip_74.0=0x0 +phy_xaui_tx_polarity_flip_75.0=0x1 +phy_xaui_tx_polarity_flip_76.0=0x1 +phy_xaui_tx_polarity_flip_77.0=0x1 +phy_xaui_tx_polarity_flip_78.0=0x1 +phy_xaui_tx_polarity_flip_79.0=0x1 +phy_xaui_tx_polarity_flip_80.0=0x1 +phy_xaui_tx_polarity_flip_81.0=0x1 +phy_xaui_tx_polarity_flip_82.0=0x0 +phy_xaui_tx_polarity_flip_83.0=0x1 +phy_xaui_tx_polarity_flip_84.0=0x1 +phy_xaui_tx_polarity_flip_85.0=0x0 +phy_xaui_tx_polarity_flip_86.0=0x0 +phy_xaui_tx_polarity_flip_87.0=0x1 +phy_xaui_tx_polarity_flip_88.0=0x1 +phy_xaui_tx_polarity_flip_89.0=0x0 +phy_xaui_tx_polarity_flip_90.0=0x1 +phy_xaui_tx_polarity_flip_91.0=0x0 +phy_xaui_tx_polarity_flip_92.0=0x0 +phy_xaui_tx_polarity_flip_93.0=0x0 +phy_xaui_tx_polarity_flip_94.0=0x0 +phy_xaui_tx_polarity_flip_95.0=0x0 +phy_xaui_tx_polarity_flip_96.0=0x0 +phy_xaui_tx_polarity_flip_97.0=0xd +phy_xaui_tx_polarity_flip_98.0=0xc +phy_xaui_tx_polarity_flip_99.0=0x2 +phy_xaui_tx_polarity_flip_100.0=0x0 +phy_xaui_tx_polarity_flip_101.0=0x0 +phy_xaui_tx_polarity_flip_102.0=0x7 +phy_xaui_tx_polarity_flip_103.0=0x2 +phy_xaui_tx_polarity_flip_104.0=0x0 +port_init_autoneg_1.0=0 +port_init_autoneg_2.0=0 +port_init_autoneg_3.0=0 +port_init_autoneg_4.0=0 +port_init_autoneg_5.0=0 +port_init_autoneg_6.0=0 +port_init_autoneg_7.0=0 +port_init_autoneg_8.0=0 +port_init_autoneg_9.0=0 +port_init_autoneg_10.0=0 +port_init_autoneg_11.0=0 +port_init_autoneg_12.0=0 +port_init_autoneg_13.0=0 +port_init_autoneg_14.0=0 +port_init_autoneg_15.0=0 +port_init_autoneg_16.0=0 +port_init_autoneg_17.0=0 +port_init_autoneg_18.0=0 +port_init_autoneg_19.0=0 +port_init_autoneg_20.0=0 +port_init_autoneg_21.0=0 +port_init_autoneg_22.0=0 +port_init_autoneg_23.0=0 +port_init_autoneg_24.0=0 +port_init_autoneg_25.0=0 +port_init_autoneg_26.0=0 +port_init_autoneg_27.0=0 +port_init_autoneg_28.0=0 +port_init_autoneg_29.0=0 +port_init_autoneg_30.0=0 +port_init_autoneg_31.0=0 +port_init_autoneg_32.0=0 +port_init_autoneg_33.0=0 +port_init_autoneg_34.0=0 +port_init_autoneg_35.0=0 +port_init_autoneg_36.0=0 +port_init_autoneg_37.0=0 +port_init_autoneg_38.0=0 +port_init_autoneg_39.0=0 +port_init_autoneg_40.0=0 +port_init_autoneg_41.0=0 +port_init_autoneg_42.0=0 +port_init_autoneg_43.0=0 +port_init_autoneg_44.0=0 +port_init_autoneg_45.0=0 +port_init_autoneg_46.0=0 +port_init_autoneg_47.0=0 +port_init_autoneg_48.0=0 +port_init_autoneg_49.0=0 +port_init_autoneg_50.0=0 +port_init_autoneg_51.0=0 +port_init_autoneg_52.0=0 +port_init_autoneg_53.0=0 +port_init_autoneg_54.0=0 +port_init_autoneg_55.0=0 +port_init_autoneg_56.0=0 +port_init_autoneg_57.0=0 +port_init_autoneg_58.0=0 +port_init_autoneg_59.0=0 +port_init_autoneg_60.0=0 +port_init_autoneg_61.0=0 +port_init_autoneg_62.0=0 +port_init_autoneg_63.0=0 +port_init_autoneg_64.0=0 +port_init_autoneg_65.0=0 +port_init_autoneg_66.0=0 +port_init_autoneg_67.0=0 +port_init_autoneg_68.0=0 +port_init_autoneg_69.0=0 +port_init_autoneg_70.0=0 +port_init_autoneg_71.0=0 +port_init_autoneg_72.0=0 +port_init_autoneg_73.0=0 +port_init_autoneg_74.0=0 +port_init_autoneg_75.0=0 +port_init_autoneg_76.0=0 +port_init_autoneg_77.0=0 +port_init_autoneg_78.0=0 +port_init_autoneg_79.0=0 +port_init_autoneg_80.0=0 +port_init_autoneg_81.0=0 +port_init_autoneg_82.0=0 +port_init_autoneg_83.0=0 +port_init_autoneg_84.0=0 +port_init_autoneg_85.0=0 +port_init_autoneg_86.0=0 +port_init_autoneg_87.0=0 +port_init_autoneg_88.0=0 +port_init_autoneg_89.0=0 +port_init_autoneg_90.0=0 +port_init_autoneg_91.0=0 +port_init_autoneg_92.0=0 +port_init_autoneg_93.0=0 +port_init_autoneg_94.0=0 +port_init_autoneg_95.0=0 +port_init_autoneg_96.0=0 +port_init_autoneg_97.0=0 +port_init_autoneg_98.0=0 +port_init_autoneg_99.0=0 +port_init_autoneg_100.0=0 +port_init_autoneg_101.0=0 +port_init_autoneg_102.0=0 +port_init_autoneg_103.0=0 +port_init_autoneg_104.0=0 +portmap_1.0=9:40 +portmap_2.0=10:10:i +portmap_3.0=11:10:i +portmap_4.0=12:10:i +portmap_5.0=13:40 +portmap_6.0=14:10:i +portmap_7.0=15:10:i +portmap_8.0=16:10:i +portmap_9.0=17:40 +portmap_10.0=18:10:i +portmap_11.0=19:10:i +portmap_12.0=20:10:i +portmap_13.0=21:40 +portmap_14.0=22:10:i +portmap_15.0=23:10:i +portmap_16.0=24:10:i +portmap_17.0=29:40 +portmap_18.0=30:10:i +portmap_19.0=31:10:i +portmap_20.0=32:10:i +portmap_21.0=25:40 +portmap_22.0=26:10:i +portmap_23.0=27:10:i +portmap_24.0=28:10:i +portmap_25.0=33:40 +portmap_26.0=34:10:i +portmap_27.0=35:10:i +portmap_28.0=36:10:i +portmap_29.0=37:40 +portmap_30.0=38:10:i +portmap_31.0=39:10:i +portmap_32.0=40:10:i +portmap_33.0=45:40 +portmap_34.0=46:10:i +portmap_35.0=47:10:i +portmap_36.0=48:10:i +portmap_37.0=41:40 +portmap_38.0=42:10:i +portmap_39.0=43:10:i +portmap_40.0=44:10:i +portmap_41.0=49:40 +portmap_42.0=50:10:i +portmap_43.0=51:10:i +portmap_44.0=52:10:i +portmap_45.0=53:40 +portmap_46.0=54:10:i +portmap_47.0=55:10:i +portmap_48.0=56:10:i +portmap_49.0=69:40 +portmap_50.0=70:10:i +portmap_51.0=71:10:i +portmap_52.0=72:10:i +portmap_53.0=65:40 +portmap_54.0=66:10:i +portmap_55.0=67:10:i +portmap_56.0=68:10:i +portmap_57.0=73:40 +portmap_58.0=74:10:i +portmap_59.0=75:10:i +portmap_60.0=76:10:i +portmap_61.0=77:40 +portmap_62.0=78:10:i +portmap_63.0=79:10:i +portmap_64.0=80:10:i +portmap_65.0=93:40 +portmap_66.0=94:10:i +portmap_67.0=95:10:i +portmap_68.0=96:10:i +portmap_69.0=89:40 +portmap_70.0=90:10:i +portmap_71.0=91:10:i +portmap_72.0=92:10:i +portmap_73.0=97:40 +portmap_74.0=98:10:i +portmap_75.0=99:10:i +portmap_76.0=100:10:i +portmap_77.0=101:40 +portmap_78.0=102:10:i +portmap_79.0=103:10:i +portmap_80.0=104:10:i +portmap_81.0=109:40 +portmap_82.0=110:10:i +portmap_83.0=111:10:i +portmap_84.0=112:10:i +portmap_85.0=105:40 +portmap_86.0=106:10:i +portmap_87.0=107:10:i +portmap_88.0=108:10:i +portmap_89.0=121:40 +portmap_90.0=122:10:i +portmap_91.0=123:10:i +portmap_92.0=124:10:i +portmap_93.0=125:40 +portmap_94.0=126:10:i +portmap_95.0=127:10:i +portmap_96.0=128:10:i +portmap_97.0=61:40 +portmap_98.0=57:40 +portmap_99.0=81:40 +portmap_100.0=85:40 +portmap_101.0=117:40 +portmap_102.0=113:40 +portmap_103.0=1:40 +portmap_104.0=5:40 +serdes_firmware_mode_1.0=2 +serdes_firmware_mode_2.0=2 +serdes_firmware_mode_3.0=2 +serdes_firmware_mode_4.0=2 +serdes_firmware_mode_5.0=2 +serdes_firmware_mode_6.0=2 +serdes_firmware_mode_7.0=2 +serdes_firmware_mode_8.0=2 +serdes_firmware_mode_9.0=2 +serdes_firmware_mode_10.0=2 +serdes_firmware_mode_11.0=2 +serdes_firmware_mode_12.0=2 +serdes_firmware_mode_13.0=2 +serdes_firmware_mode_14.0=2 +serdes_firmware_mode_15.0=2 +serdes_firmware_mode_16.0=2 +serdes_firmware_mode_17.0=2 +serdes_firmware_mode_18.0=2 +serdes_firmware_mode_19.0=2 +serdes_firmware_mode_20.0=2 +serdes_firmware_mode_21.0=2 +serdes_firmware_mode_22.0=2 +serdes_firmware_mode_23.0=2 +serdes_firmware_mode_24.0=2 +serdes_firmware_mode_25.0=2 +serdes_firmware_mode_26.0=2 +serdes_firmware_mode_27.0=2 +serdes_firmware_mode_28.0=2 +serdes_firmware_mode_29.0=2 +serdes_firmware_mode_30.0=2 +serdes_firmware_mode_31.0=2 +serdes_firmware_mode_32.0=2 +serdes_firmware_mode_33.0=2 +serdes_firmware_mode_34.0=2 +serdes_firmware_mode_35.0=2 +serdes_firmware_mode_36.0=2 +serdes_firmware_mode_37.0=2 +serdes_firmware_mode_38.0=2 +serdes_firmware_mode_39.0=2 +serdes_firmware_mode_40.0=2 +serdes_firmware_mode_41.0=2 +serdes_firmware_mode_42.0=2 +serdes_firmware_mode_43.0=2 +serdes_firmware_mode_44.0=2 +serdes_firmware_mode_45.0=2 +serdes_firmware_mode_46.0=2 +serdes_firmware_mode_47.0=2 +serdes_firmware_mode_48.0=2 +serdes_firmware_mode_49.0=2 +serdes_firmware_mode_50.0=2 +serdes_firmware_mode_51.0=2 +serdes_firmware_mode_52.0=2 +serdes_firmware_mode_53.0=2 +serdes_firmware_mode_54.0=2 +serdes_firmware_mode_55.0=2 +serdes_firmware_mode_56.0=2 +serdes_firmware_mode_57.0=2 +serdes_firmware_mode_58.0=2 +serdes_firmware_mode_59.0=2 +serdes_firmware_mode_60.0=2 +serdes_firmware_mode_61.0=2 +serdes_firmware_mode_62.0=2 +serdes_firmware_mode_63.0=2 +serdes_firmware_mode_64.0=2 +serdes_firmware_mode_65.0=2 +serdes_firmware_mode_66.0=2 +serdes_firmware_mode_67.0=2 +serdes_firmware_mode_68.0=2 +serdes_firmware_mode_69.0=2 +serdes_firmware_mode_70.0=2 +serdes_firmware_mode_71.0=2 +serdes_firmware_mode_72.0=2 +serdes_firmware_mode_73.0=2 +serdes_firmware_mode_74.0=2 +serdes_firmware_mode_75.0=2 +serdes_firmware_mode_76.0=2 +serdes_firmware_mode_77.0=2 +serdes_firmware_mode_78.0=2 +serdes_firmware_mode_79.0=2 +serdes_firmware_mode_80.0=2 +serdes_firmware_mode_81.0=2 +serdes_firmware_mode_82.0=2 +serdes_firmware_mode_83.0=2 +serdes_firmware_mode_84.0=2 +serdes_firmware_mode_85.0=2 +serdes_firmware_mode_86.0=2 +serdes_firmware_mode_87.0=2 +serdes_firmware_mode_88.0=2 +serdes_firmware_mode_89.0=2 +serdes_firmware_mode_90.0=2 +serdes_firmware_mode_91.0=2 +serdes_firmware_mode_92.0=2 +serdes_firmware_mode_93.0=2 +serdes_firmware_mode_94.0=2 +serdes_firmware_mode_95.0=2 +serdes_firmware_mode_96.0=2 +serdes_firmware_mode_97.0=2 +serdes_firmware_mode_98.0=2 +serdes_firmware_mode_99.0=2 +serdes_firmware_mode_100.0=2 +serdes_firmware_mode_101.0=2 +serdes_firmware_mode_102.0=2 +serdes_firmware_mode_103.0=2 +serdes_firmware_mode_104.0=2 +xgxs_rx_lane_map_1.0=0x3210 +xgxs_rx_lane_map_5.0=0x0321 +xgxs_rx_lane_map_9.0=0x1302 +xgxs_rx_lane_map_13.0=0x0213 +xgxs_rx_lane_map_17.0=0x1302 +xgxs_rx_lane_map_21.0=0x1302 +xgxs_rx_lane_map_25.0=0x1302 +xgxs_rx_lane_map_29.0=0x0213 +xgxs_rx_lane_map_33.0=0x1302 +xgxs_rx_lane_map_37.0=0x1302 +xgxs_rx_lane_map_41.0=0x1302 +xgxs_rx_lane_map_45.0=0x0213 +xgxs_rx_lane_map_49.0=0x1302 +xgxs_rx_lane_map_53.0=0x1302 +xgxs_rx_lane_map_57.0=0x1302 +xgxs_rx_lane_map_61.0=0x0213 +xgxs_rx_lane_map_65.0=0x1302 +xgxs_rx_lane_map_69.0=0x1302 +xgxs_rx_lane_map_73.0=0x1302 +xgxs_rx_lane_map_77.0=0x0213 +xgxs_rx_lane_map_81.0=0x1302 +xgxs_rx_lane_map_85.0=0x1302 +xgxs_rx_lane_map_89.0=0x1302 +xgxs_rx_lane_map_93.0=0x0213 +xgxs_rx_lane_map_97.0=0x1302 +xgxs_rx_lane_map_98.0=0x1302 +xgxs_rx_lane_map_99.0=0x1302 +xgxs_rx_lane_map_100.0=0x0213 +xgxs_rx_lane_map_101.0=0x0213 +xgxs_rx_lane_map_102.0=0x1302 +xgxs_rx_lane_map_103.0=0x0123 +xgxs_rx_lane_map_104.0=0x2031 +xgxs_tx_lane_map_1.0=0x0123 +xgxs_tx_lane_map_5.0=0x0321 +xgxs_tx_lane_map_9.0=0x2031 +xgxs_tx_lane_map_13.0=0x0213 +xgxs_tx_lane_map_17.0=0x2031 +xgxs_tx_lane_map_21.0=0x2031 +xgxs_tx_lane_map_25.0=0x2031 +xgxs_tx_lane_map_29.0=0x0213 +xgxs_tx_lane_map_33.0=0x2031 +xgxs_tx_lane_map_37.0=0x2031 +xgxs_tx_lane_map_41.0=0x2031 +xgxs_tx_lane_map_45.0=0x0213 +xgxs_tx_lane_map_49.0=0x2031 +xgxs_tx_lane_map_53.0=0x2031 +xgxs_tx_lane_map_57.0=0x2031 +xgxs_tx_lane_map_61.0=0x0213 +xgxs_tx_lane_map_65.0=0x2031 +xgxs_tx_lane_map_69.0=0x2031 +xgxs_tx_lane_map_73.0=0x2031 +xgxs_tx_lane_map_77.0=0x0213 +xgxs_tx_lane_map_81.0=0x2031 +xgxs_tx_lane_map_85.0=0x2031 +xgxs_tx_lane_map_89.0=0x2031 +xgxs_tx_lane_map_93.0=0x0213 +xgxs_tx_lane_map_97.0=0x2031 +xgxs_tx_lane_map_98.0=0x2031 +xgxs_tx_lane_map_99.0=0x2031 +xgxs_tx_lane_map_100.0=0x0213 +xgxs_tx_lane_map_101.0=0x0213 +xgxs_tx_lane_map_102.0=0x2031 +xgxs_tx_lane_map_103.0=0x3120 +xgxs_tx_lane_map_104.0=0x1302 diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/hwsku.json b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/hwsku.json new file mode 100644 index 000000000000..45f3379c2fe6 --- /dev/null +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/hwsku.json @@ -0,0 +1,106 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet4": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet8": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet12": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet16": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet20": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet24": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet28": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet36": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet40": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet44": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet48": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet52": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet56": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet60": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet64": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet68": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet72": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet76": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet80": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet84": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet88": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet92": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet96": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet100": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet104": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet108": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet112": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet116": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet120": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet124": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet128": { + "default_brkout_mode": "1x10G" + }, + "Ethernet132": { + "default_brkout_mode": "1x10G" + } + } +} \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/port_config.ini b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/port_config.ini new file mode 100644 index 000000000000..4b96b8cf87c9 --- /dev/null +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/port_config.ini @@ -0,0 +1,35 @@ +# name lanes alias index speed +Ethernet0 1,2,3,4 Ethernet1/1 1 100000 +Ethernet4 5,6,7,8 Ethernet2/1 2 100000 +Ethernet8 9,10,11,12 Ethernet3/1 3 100000 +Ethernet12 13,14,15,16 Ethernet4/1 4 100000 +Ethernet16 21,22,23,24 Ethernet5/1 5 100000 +Ethernet20 17,18,19,20 Ethernet6/1 6 100000 +Ethernet24 25,26,27,28 Ethernet7/1 7 100000 +Ethernet28 29,30,31,32 Ethernet8/1 8 100000 +Ethernet32 37,38,39,40 Ethernet9/1 9 100000 +Ethernet36 33,34,35,36 Ethernet10/1 10 100000 +Ethernet40 41,42,43,44 Ethernet11/1 11 100000 +Ethernet44 45,46,47,48 Ethernet12/1 12 100000 +Ethernet48 53,54,55,56 Ethernet13/1 13 100000 +Ethernet52 49,50,51,52 Ethernet14/1 14 100000 +Ethernet56 57,58,59,60 Ethernet15/1 15 100000 +Ethernet60 61,62,63,64 Ethernet16/1 16 100000 +Ethernet64 69,70,71,72 Ethernet17/1 17 100000 +Ethernet68 65,66,67,68 Ethernet18/1 18 100000 +Ethernet72 73,74,75,76 Ethernet19/1 19 100000 +Ethernet76 77,78,79,80 Ethernet20/1 20 100000 +Ethernet80 85,86,87,88 Ethernet21/1 21 100000 +Ethernet84 81,82,83,84 Ethernet22/1 22 100000 +Ethernet88 89,90,91,92 Ethernet23/1 23 100000 +Ethernet92 93,94,95,96 Ethernet24/1 24 100000 +Ethernet96 101,102,103,104 Ethernet25/1 25 100000 +Ethernet100 97,98,99,100 Ethernet26/1 26 100000 +Ethernet104 105,106,107,108 Ethernet27/1 27 100000 +Ethernet108 109,110,111,112 Ethernet28/1 28 100000 +Ethernet112 117,118,119,120 Ethernet29/1 29 100000 +Ethernet116 113,114,115,116 Ethernet30/1 30 100000 +Ethernet120 121,122,123,124 Ethernet31/1 31 100000 +Ethernet124 125,126,127,128 Ethernet32/1 32 100000 +Ethernet128 129 Ethernet33 33 10000 +Ethernet132 128 Ethernet34 34 10000 diff --git a/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/sai.profile b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/sai.profile new file mode 100644 index 000000000000..2ea1c26e0c45 --- /dev/null +++ b/device/arista/x86_64-arista_7050cx3_32s/Arista-7050CX3-32S/sai.profile @@ -0,0 +1,2 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/td3-a7050cx3-32s-flex.config.bcm +SAI_NUM_ECMP_MEMBERS=64 diff --git a/device/arista/x86_64-arista_7050cx3_32s/platform.json b/device/arista/x86_64-arista_7050cx3_32s/platform.json index 632747ad2333..6a417e320e6c 100644 --- a/device/arista/x86_64-arista_7050cx3_32s/platform.json +++ b/device/arista/x86_64-arista_7050cx3_32s/platform.json @@ -187,5 +187,632 @@ } ] }, - "interfaces": {} + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1", + "lanes": "1,2,3,4", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet1/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/3" + ], + "4x25G[10G]": [ + "Ethernet1/1", + "Ethernet1/2", + "Ethernet1/3", + "Ethernet1/4" + ] + } + }, + "Ethernet4": { + "index": "2,2,2,2", + "lanes": "5,6,7,8", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet2/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/3" + ], + "4x25G[10G]": [ + "Ethernet2/1", + "Ethernet2/2", + "Ethernet2/3", + "Ethernet2/4" + ] + } + }, + "Ethernet8": { + "index": "3,3,3,3", + "lanes": "9,10,11,12", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet3/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/3" + ], + "4x25G[10G]": [ + "Ethernet3/1", + "Ethernet3/2", + "Ethernet3/3", + "Ethernet3/4" + ] + } + }, + "Ethernet12": { + "index": "4,4,4,4", + "lanes": "13,14,15,16", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet4/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/3" + ], + "4x25G[10G]": [ + "Ethernet4/1", + "Ethernet4/2", + "Ethernet4/3", + "Ethernet4/4" + ] + } + }, + "Ethernet16": { + "index": "5,5,5,5", + "lanes": "21,22,23,24", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet5/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/3" + ], + "4x25G[10G]": [ + "Ethernet5/1", + "Ethernet5/2", + "Ethernet5/3", + "Ethernet5/4" + ] + } + }, + "Ethernet20": { + "index": "6,6,6,6", + "lanes": "17,18,19,20", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet6/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/3" + ], + "4x25G[10G]": [ + "Ethernet6/1", + "Ethernet6/2", + "Ethernet6/3", + "Ethernet6/4" + ] + } + }, + "Ethernet24": { + "index": "7,7,7,7", + "lanes": "25,26,27,28", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet7/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/3" + ], + "4x25G[10G]": [ + "Ethernet7/1", + "Ethernet7/2", + "Ethernet7/3", + "Ethernet7/4" + ] + } + }, + "Ethernet28": { + "index": "8,8,8,8", + "lanes": "29,30,31,32", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet8/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/3" + ], + "4x25G[10G]": [ + "Ethernet8/1", + "Ethernet8/2", + "Ethernet8/3", + "Ethernet8/4" + ] + } + }, + "Ethernet32": { + "index": "9,9,9,9", + "lanes": "37,38,39,40", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet9/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/3" + ], + "4x25G[10G]": [ + "Ethernet9/1", + "Ethernet9/2", + "Ethernet9/3", + "Ethernet9/4" + ] + } + }, + "Ethernet36": { + "index": "10,10,10,10", + "lanes": "33,34,35,36", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet10/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/3" + ], + "4x25G[10G]": [ + "Ethernet10/1", + "Ethernet10/2", + "Ethernet10/3", + "Ethernet10/4" + ] + } + }, + "Ethernet40": { + "index": "11,11,11,11", + "lanes": "41,42,43,44", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet11/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/3" + ], + "4x25G[10G]": [ + "Ethernet11/1", + "Ethernet11/2", + "Ethernet11/3", + "Ethernet11/4" + ] + } + }, + "Ethernet44": { + "index": "12,12,12,12", + "lanes": "45,46,47,48", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet12/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/3" + ], + "4x25G[10G]": [ + "Ethernet12/1", + "Ethernet12/2", + "Ethernet12/3", + "Ethernet12/4" + ] + } + }, + "Ethernet48": { + "index": "13,13,13,13", + "lanes": "53,54,55,56", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet13/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/3" + ], + "4x25G[10G]": [ + "Ethernet13/1", + "Ethernet13/2", + "Ethernet13/3", + "Ethernet13/4" + ] + } + }, + "Ethernet52": { + "index": "14,14,14,14", + "lanes": "49,50,51,52", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet14/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/3" + ], + "4x25G[10G]": [ + "Ethernet14/1", + "Ethernet14/2", + "Ethernet14/3", + "Ethernet14/4" + ] + } + }, + "Ethernet56": { + "index": "15,15,15,15", + "lanes": "57,58,59,60", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet15/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/3" + ], + "4x25G[10G]": [ + "Ethernet15/1", + "Ethernet15/2", + "Ethernet15/3", + "Ethernet15/4" + ] + } + }, + "Ethernet60": { + "index": "16,16,16,16", + "lanes": "61,62,63,64", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet16/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/3" + ], + "4x25G[10G]": [ + "Ethernet16/1", + "Ethernet16/2", + "Ethernet16/3", + "Ethernet16/4" + ] + } + }, + "Ethernet64": { + "index": "17,17,17,17", + "lanes": "69,70,71,72", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet17/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/3" + ], + "4x25G[10G]": [ + "Ethernet17/1", + "Ethernet17/2", + "Ethernet17/3", + "Ethernet17/4" + ] + } + }, + "Ethernet68": { + "index": "18,18,18,18", + "lanes": "65,66,67,68", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet18/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/3" + ], + "4x25G[10G]": [ + "Ethernet18/1", + "Ethernet18/2", + "Ethernet18/3", + "Ethernet18/4" + ] + } + }, + "Ethernet72": { + "index": "19,19,19,19", + "lanes": "73,74,75,76", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet19/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/3" + ], + "4x25G[10G]": [ + "Ethernet19/1", + "Ethernet19/2", + "Ethernet19/3", + "Ethernet19/4" + ] + } + }, + "Ethernet76": { + "index": "20,20,20,20", + "lanes": "77,78,79,80", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet20/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/3" + ], + "4x25G[10G]": [ + "Ethernet20/1", + "Ethernet20/2", + "Ethernet20/3", + "Ethernet20/4" + ] + } + }, + "Ethernet80": { + "index": "21,21,21,21", + "lanes": "85,86,87,88", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet21/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/3" + ], + "4x25G[10G]": [ + "Ethernet21/1", + "Ethernet21/2", + "Ethernet21/3", + "Ethernet21/4" + ] + } + }, + "Ethernet84": { + "index": "22,22,22,22", + "lanes": "81,82,83,84", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet22/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/3" + ], + "4x25G[10G]": [ + "Ethernet22/1", + "Ethernet22/2", + "Ethernet22/3", + "Ethernet22/4" + ] + } + }, + "Ethernet88": { + "index": "23,23,23,23", + "lanes": "89,90,91,92", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet23/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/3" + ], + "4x25G[10G]": [ + "Ethernet23/1", + "Ethernet23/2", + "Ethernet23/3", + "Ethernet23/4" + ] + } + }, + "Ethernet92": { + "index": "24,24,24,24", + "lanes": "93,94,95,96", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet24/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/3" + ], + "4x25G[10G]": [ + "Ethernet24/1", + "Ethernet24/2", + "Ethernet24/3", + "Ethernet24/4" + ] + } + }, + "Ethernet96": { + "index": "25,25,25,25", + "lanes": "101,102,103,104", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet25/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/3" + ], + "4x25G[10G]": [ + "Ethernet25/1", + "Ethernet25/2", + "Ethernet25/3", + "Ethernet25/4" + ] + } + }, + "Ethernet100": { + "index": "26,26,26,26", + "lanes": "97,98,99,100", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet26/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/3" + ], + "4x25G[10G]": [ + "Ethernet26/1", + "Ethernet26/2", + "Ethernet26/3", + "Ethernet26/4" + ] + } + }, + "Ethernet104": { + "index": "27,27,27,27", + "lanes": "105,106,107,108", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet27/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/3" + ], + "4x25G[10G]": [ + "Ethernet27/1", + "Ethernet27/2", + "Ethernet27/3", + "Ethernet27/4" + ] + } + }, + "Ethernet108": { + "index": "28,28,28,28", + "lanes": "109,110,111,112", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet28/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/3" + ], + "4x25G[10G]": [ + "Ethernet28/1", + "Ethernet28/2", + "Ethernet28/3", + "Ethernet28/4" + ] + } + }, + "Ethernet112": { + "index": "29,29,29,29", + "lanes": "117,118,119,120", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet29/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/3" + ], + "4x25G[10G]": [ + "Ethernet29/1", + "Ethernet29/2", + "Ethernet29/3", + "Ethernet29/4" + ] + } + }, + "Ethernet116": { + "index": "30,30,30,30", + "lanes": "113,114,115,116", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet30/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/3" + ], + "4x25G[10G]": [ + "Ethernet30/1", + "Ethernet30/2", + "Ethernet30/3", + "Ethernet30/4" + ] + } + }, + "Ethernet120": { + "index": "31,31,31,31", + "lanes": "121,122,123,124", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet31/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/3" + ], + "4x25G[10G]": [ + "Ethernet31/1", + "Ethernet31/2", + "Ethernet31/3", + "Ethernet31/4" + ] + } + }, + "Ethernet124": { + "index": "32,32,32,32", + "lanes": "125,126,127,128", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet32/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/3" + ], + "4x25G[10G]": [ + "Ethernet32/1", + "Ethernet32/2", + "Ethernet32/3", + "Ethernet32/4" + ] + } + }, + "Ethernet128": { + "index": "33", + "lanes": "129", + "breakout_modes": { + "1x10G": [ + "Ethernet33" + ] + } + }, + "Ethernet132": { + "index": "34", + "lanes": "128", + "breakout_modes": { + "1x10G": [ + "Ethernet34" + ] + } + } + } } \ No newline at end of file diff --git a/device/arista/x86_64-arista_7050cx3_32s/td3-a7050cx3-32s-flex.config.bcm b/device/arista/x86_64-arista_7050cx3_32s/td3-a7050cx3-32s-flex.config.bcm new file mode 100644 index 000000000000..29ecbf08ccee --- /dev/null +++ b/device/arista/x86_64-arista_7050cx3_32s/td3-a7050cx3-32s-flex.config.bcm @@ -0,0 +1,468 @@ +PHY_AN_ALLOW_PLL_CHANGE=1 +arl_clean_timeout_usec=15000000 +asf_mem_profile=2 +bcm_num_cos=8 +bcm_stat_flags=1 +bcm_stat_jumbo=9236 +bcm_tunnel_term_compatible_mode=1 +cdma_timeout_usec=15000000 +core_clock_frequency=1525 +dma_desc_timeout_usec=15000000 +dpp_clock_ratio=2:3 +flow_init_mode=1 +fpem_mem_entries=0 +higig2_hdr_mode=1 +host_as_route_disable=1 +ifp_inports_support_enable=1 +ipv6_lpm_128b_enable=0 +l2xmsg_mode=1 +l2_mem_entries=32768 +l3_alpm_enable=2 +l3_ecmp_levels=3 +l3_max_ecmp_mode=1 +l3_mem_entries=16384 +max_vp_lags=0 +miim_intr_enable=0 +module_64ports=1 +multicast_l2_range=16383 +multicast_l3_range=0 +os=unix +oversubscribe_mode=1 +pbmp_xport_xe=0x4888888888888888c2222222222222222 +phy_an_c37_66=2 +phy_an_c37_130=2 +phy_an_c73=0 +phy_chain_rx_lane_map_physical{1.0}=0x1302 +phy_chain_rx_lane_map_physical{5.0}=0x3120 +phy_chain_rx_lane_map_physical{9.0}=0x3120 +phy_chain_rx_lane_map_physical{13.0}=0x3120 +phy_chain_rx_lane_map_physical{17.0}=0x1203 +phy_chain_rx_lane_map_physical{21.0}=0x3120 +phy_chain_rx_lane_map_physical{25.0}=0x3120 +phy_chain_rx_lane_map_physical{29.0}=0x3120 +phy_chain_rx_lane_map_physical{33.0}=0x1203 +phy_chain_rx_lane_map_physical{37.0}=0x3120 +phy_chain_rx_lane_map_physical{41.0}=0x3120 +phy_chain_rx_lane_map_physical{45.0}=0x3120 +phy_chain_rx_lane_map_physical{49.0}=0x1203 +phy_chain_rx_lane_map_physical{53.0}=0x3120 +phy_chain_rx_lane_map_physical{57.0}=0x3120 +phy_chain_rx_lane_map_physical{61.0}=0x3120 +phy_chain_rx_lane_map_physical{65.0}=0x2130 +phy_chain_rx_lane_map_physical{69.0}=0x0213 +phy_chain_rx_lane_map_physical{73.0}=0x2031 +phy_chain_rx_lane_map_physical{77.0}=0x0213 +phy_chain_rx_lane_map_physical{81.0}=0x2130 +phy_chain_rx_lane_map_physical{85.0}=0x0213 +phy_chain_rx_lane_map_physical{89.0}=0x2031 +phy_chain_rx_lane_map_physical{93.0}=0x0213 +phy_chain_rx_lane_map_physical{97.0}=0x2130 +phy_chain_rx_lane_map_physical{101.0}=0x0213 +phy_chain_rx_lane_map_physical{105.0}=0x2031 +phy_chain_rx_lane_map_physical{109.0}=0x0213 +phy_chain_rx_lane_map_physical{113.0}=0x2130 +phy_chain_rx_lane_map_physical{117.0}=0x0213 +phy_chain_rx_lane_map_physical{121.0}=0x2031 +phy_chain_rx_lane_map_physical{125.0}=0x0213 +phy_chain_rx_lane_map_physical{129.0}=0x3210 +phy_chain_rx_polarity_flip_physical{1.0}=0x0 +phy_chain_rx_polarity_flip_physical{2.0}=0x0 +phy_chain_rx_polarity_flip_physical{3.0}=0x0 +phy_chain_rx_polarity_flip_physical{4.0}=0x1 +phy_chain_rx_polarity_flip_physical{5.0}=0x0 +phy_chain_rx_polarity_flip_physical{6.0}=0x1 +phy_chain_rx_polarity_flip_physical{7.0}=0x0 +phy_chain_rx_polarity_flip_physical{8.0}=0x0 +phy_chain_rx_polarity_flip_physical{9.0}=0x0 +phy_chain_rx_polarity_flip_physical{10.0}=0x0 +phy_chain_rx_polarity_flip_physical{11.0}=0x1 +phy_chain_rx_polarity_flip_physical{12.0}=0x1 +phy_chain_rx_polarity_flip_physical{13.0}=0x1 +phy_chain_rx_polarity_flip_physical{14.0}=0x1 +phy_chain_rx_polarity_flip_physical{15.0}=0x0 +phy_chain_rx_polarity_flip_physical{16.0}=0x0 +phy_chain_rx_polarity_flip_physical{17.0}=0x0 +phy_chain_rx_polarity_flip_physical{18.0}=0x0 +phy_chain_rx_polarity_flip_physical{19.0}=0x1 +phy_chain_rx_polarity_flip_physical{20.0}=0x0 +phy_chain_rx_polarity_flip_physical{21.0}=0x1 +phy_chain_rx_polarity_flip_physical{22.0}=0x1 +phy_chain_rx_polarity_flip_physical{23.0}=0x0 +phy_chain_rx_polarity_flip_physical{24.0}=0x0 +phy_chain_rx_polarity_flip_physical{25.0}=0x0 +phy_chain_rx_polarity_flip_physical{26.0}=0x1 +phy_chain_rx_polarity_flip_physical{27.0}=0x1 +phy_chain_rx_polarity_flip_physical{28.0}=0x0 +phy_chain_rx_polarity_flip_physical{29.0}=0x1 +phy_chain_rx_polarity_flip_physical{30.0}=0x1 +phy_chain_rx_polarity_flip_physical{31.0}=0x0 +phy_chain_rx_polarity_flip_physical{32.0}=0x0 +phy_chain_rx_polarity_flip_physical{33.0}=0x0 +phy_chain_rx_polarity_flip_physical{34.0}=0x0 +phy_chain_rx_polarity_flip_physical{35.0}=0x1 +phy_chain_rx_polarity_flip_physical{36.0}=0x0 +phy_chain_rx_polarity_flip_physical{37.0}=0x1 +phy_chain_rx_polarity_flip_physical{38.0}=0x1 +phy_chain_rx_polarity_flip_physical{39.0}=0x0 +phy_chain_rx_polarity_flip_physical{40.0}=0x0 +phy_chain_rx_polarity_flip_physical{41.0}=0x0 +phy_chain_rx_polarity_flip_physical{42.0}=0x0 +phy_chain_rx_polarity_flip_physical{43.0}=0x1 +phy_chain_rx_polarity_flip_physical{44.0}=0x1 +phy_chain_rx_polarity_flip_physical{45.0}=0x1 +phy_chain_rx_polarity_flip_physical{46.0}=0x1 +phy_chain_rx_polarity_flip_physical{47.0}=0x0 +phy_chain_rx_polarity_flip_physical{48.0}=0x0 +phy_chain_rx_polarity_flip_physical{49.0}=0x0 +phy_chain_rx_polarity_flip_physical{50.0}=0x0 +phy_chain_rx_polarity_flip_physical{51.0}=0x1 +phy_chain_rx_polarity_flip_physical{52.0}=0x0 +phy_chain_rx_polarity_flip_physical{53.0}=0x1 +phy_chain_rx_polarity_flip_physical{54.0}=0x1 +phy_chain_rx_polarity_flip_physical{55.0}=0x0 +phy_chain_rx_polarity_flip_physical{56.0}=0x0 +phy_chain_rx_polarity_flip_physical{57.0}=0x0 +phy_chain_rx_polarity_flip_physical{58.0}=0x0 +phy_chain_rx_polarity_flip_physical{59.0}=0x1 +phy_chain_rx_polarity_flip_physical{60.0}=0x1 +phy_chain_rx_polarity_flip_physical{61.0}=0x1 +phy_chain_rx_polarity_flip_physical{62.0}=0x1 +phy_chain_rx_polarity_flip_physical{63.0}=0x0 +phy_chain_rx_polarity_flip_physical{64.0}=0x0 +phy_chain_rx_polarity_flip_physical{65.0}=0x1 +phy_chain_rx_polarity_flip_physical{66.0}=0x1 +phy_chain_rx_polarity_flip_physical{67.0}=0x0 +phy_chain_rx_polarity_flip_physical{68.0}=0x1 +phy_chain_rx_polarity_flip_physical{69.0}=0x0 +phy_chain_rx_polarity_flip_physical{70.0}=0x0 +phy_chain_rx_polarity_flip_physical{71.0}=0x1 +phy_chain_rx_polarity_flip_physical{72.0}=0x1 +phy_chain_rx_polarity_flip_physical{73.0}=0x1 +phy_chain_rx_polarity_flip_physical{74.0}=0x1 +phy_chain_rx_polarity_flip_physical{75.0}=0x1 +phy_chain_rx_polarity_flip_physical{76.0}=0x0 +phy_chain_rx_polarity_flip_physical{77.0}=0x0 +phy_chain_rx_polarity_flip_physical{78.0}=0x0 +phy_chain_rx_polarity_flip_physical{79.0}=0x1 +phy_chain_rx_polarity_flip_physical{80.0}=0x1 +phy_chain_rx_polarity_flip_physical{81.0}=0x1 +phy_chain_rx_polarity_flip_physical{82.0}=0x1 +phy_chain_rx_polarity_flip_physical{83.0}=0x0 +phy_chain_rx_polarity_flip_physical{84.0}=0x1 +phy_chain_rx_polarity_flip_physical{85.0}=0x0 +phy_chain_rx_polarity_flip_physical{86.0}=0x0 +phy_chain_rx_polarity_flip_physical{87.0}=0x1 +phy_chain_rx_polarity_flip_physical{88.0}=0x1 +phy_chain_rx_polarity_flip_physical{89.0}=0x1 +phy_chain_rx_polarity_flip_physical{90.0}=0x1 +phy_chain_rx_polarity_flip_physical{91.0}=0x1 +phy_chain_rx_polarity_flip_physical{92.0}=0x0 +phy_chain_rx_polarity_flip_physical{93.0}=0x0 +phy_chain_rx_polarity_flip_physical{94.0}=0x0 +phy_chain_rx_polarity_flip_physical{95.0}=0x1 +phy_chain_rx_polarity_flip_physical{96.0}=0x1 +phy_chain_rx_polarity_flip_physical{97.0}=0x1 +phy_chain_rx_polarity_flip_physical{98.0}=0x1 +phy_chain_rx_polarity_flip_physical{99.0}=0x0 +phy_chain_rx_polarity_flip_physical{100.0}=0x1 +phy_chain_rx_polarity_flip_physical{101.0}=0x1 +phy_chain_rx_polarity_flip_physical{102.0}=0x0 +phy_chain_rx_polarity_flip_physical{103.0}=0x0 +phy_chain_rx_polarity_flip_physical{104.0}=0x1 +phy_chain_rx_polarity_flip_physical{105.0}=0x1 +phy_chain_rx_polarity_flip_physical{106.0}=0x1 +phy_chain_rx_polarity_flip_physical{107.0}=0x1 +phy_chain_rx_polarity_flip_physical{108.0}=0x0 +phy_chain_rx_polarity_flip_physical{109.0}=0x0 +phy_chain_rx_polarity_flip_physical{110.0}=0x0 +phy_chain_rx_polarity_flip_physical{111.0}=0x1 +phy_chain_rx_polarity_flip_physical{112.0}=0x1 +phy_chain_rx_polarity_flip_physical{113.0}=0x1 +phy_chain_rx_polarity_flip_physical{114.0}=0x1 +phy_chain_rx_polarity_flip_physical{115.0}=0x0 +phy_chain_rx_polarity_flip_physical{116.0}=0x1 +phy_chain_rx_polarity_flip_physical{117.0}=0x0 +phy_chain_rx_polarity_flip_physical{118.0}=0x0 +phy_chain_rx_polarity_flip_physical{119.0}=0x1 +phy_chain_rx_polarity_flip_physical{120.0}=0x1 +phy_chain_rx_polarity_flip_physical{121.0}=0x1 +phy_chain_rx_polarity_flip_physical{122.0}=0x1 +phy_chain_rx_polarity_flip_physical{123.0}=0x1 +phy_chain_rx_polarity_flip_physical{124.0}=0x0 +phy_chain_rx_polarity_flip_physical{125.0}=0x0 +phy_chain_rx_polarity_flip_physical{126.0}=0x0 +phy_chain_rx_polarity_flip_physical{127.0}=0x1 +phy_chain_rx_polarity_flip_physical{128.0}=0x1 +phy_chain_rx_polarity_flip_physical{129.0}=0x0 +phy_chain_tx_lane_map_physical{1.0}=0x3021 +phy_chain_tx_lane_map_physical{5.0}=0x1203 +phy_chain_tx_lane_map_physical{9.0}=0x0213 +phy_chain_tx_lane_map_physical{13.0}=0x0213 +phy_chain_tx_lane_map_physical{17.0}=0x2031 +phy_chain_tx_lane_map_physical{21.0}=0x0213 +phy_chain_tx_lane_map_physical{25.0}=0x2031 +phy_chain_tx_lane_map_physical{29.0}=0x1203 +phy_chain_tx_lane_map_physical{33.0}=0x2031 +phy_chain_tx_lane_map_physical{37.0}=0x0213 +phy_chain_tx_lane_map_physical{41.0}=0x2031 +phy_chain_tx_lane_map_physical{45.0}=0x1203 +phy_chain_tx_lane_map_physical{49.0}=0x2031 +phy_chain_tx_lane_map_physical{53.0}=0x0213 +phy_chain_tx_lane_map_physical{57.0}=0x2031 +phy_chain_tx_lane_map_physical{61.0}=0x1203 +phy_chain_tx_lane_map_physical{65.0}=0x1302 +phy_chain_tx_lane_map_physical{69.0}=0x1302 +phy_chain_tx_lane_map_physical{73.0}=0x1302 +phy_chain_tx_lane_map_physical{77.0}=0x2130 +phy_chain_tx_lane_map_physical{81.0}=0x1302 +phy_chain_tx_lane_map_physical{85.0}=0x3120 +phy_chain_tx_lane_map_physical{89.0}=0x1302 +phy_chain_tx_lane_map_physical{93.0}=0x2130 +phy_chain_tx_lane_map_physical{97.0}=0x1302 +phy_chain_tx_lane_map_physical{101.0}=0x3120 +phy_chain_tx_lane_map_physical{105.0}=0x1302 +phy_chain_tx_lane_map_physical{109.0}=0x2130 +phy_chain_tx_lane_map_physical{113.0}=0x1302 +phy_chain_tx_lane_map_physical{117.0}=0x3120 +phy_chain_tx_lane_map_physical{121.0}=0x1302 +phy_chain_tx_lane_map_physical{125.0}=0x3120 +phy_chain_tx_lane_map_physical{129.0}=0x3210 +phy_chain_tx_polarity_flip_physical{1.0}=0x1 +phy_chain_tx_polarity_flip_physical{2.0}=0x1 +phy_chain_tx_polarity_flip_physical{3.0}=0x0 +phy_chain_tx_polarity_flip_physical{4.0}=0x0 +phy_chain_tx_polarity_flip_physical{5.0}=0x1 +phy_chain_tx_polarity_flip_physical{6.0}=0x1 +phy_chain_tx_polarity_flip_physical{7.0}=0x0 +phy_chain_tx_polarity_flip_physical{8.0}=0x1 +phy_chain_tx_polarity_flip_physical{9.0}=0x1 +phy_chain_tx_polarity_flip_physical{10.0}=0x1 +phy_chain_tx_polarity_flip_physical{11.0}=0x0 +phy_chain_tx_polarity_flip_physical{12.0}=0x0 +phy_chain_tx_polarity_flip_physical{13.0}=0x1 +phy_chain_tx_polarity_flip_physical{14.0}=0x1 +phy_chain_tx_polarity_flip_physical{15.0}=0x0 +phy_chain_tx_polarity_flip_physical{16.0}=0x1 +phy_chain_tx_polarity_flip_physical{17.0}=0x0 +phy_chain_tx_polarity_flip_physical{18.0}=0x0 +phy_chain_tx_polarity_flip_physical{19.0}=0x0 +phy_chain_tx_polarity_flip_physical{20.0}=0x0 +phy_chain_tx_polarity_flip_physical{21.0}=0x1 +phy_chain_tx_polarity_flip_physical{22.0}=0x1 +phy_chain_tx_polarity_flip_physical{23.0}=0x0 +phy_chain_tx_polarity_flip_physical{24.0}=0x0 +phy_chain_tx_polarity_flip_physical{25.0}=0x0 +phy_chain_tx_polarity_flip_physical{26.0}=0x0 +phy_chain_tx_polarity_flip_physical{27.0}=0x1 +phy_chain_tx_polarity_flip_physical{28.0}=0x0 +phy_chain_tx_polarity_flip_physical{29.0}=0x0 +phy_chain_tx_polarity_flip_physical{30.0}=0x0 +phy_chain_tx_polarity_flip_physical{31.0}=0x1 +phy_chain_tx_polarity_flip_physical{32.0}=0x1 +phy_chain_tx_polarity_flip_physical{33.0}=0x1 +phy_chain_tx_polarity_flip_physical{34.0}=0x1 +phy_chain_tx_polarity_flip_physical{35.0}=0x1 +phy_chain_tx_polarity_flip_physical{36.0}=0x1 +phy_chain_tx_polarity_flip_physical{37.0}=0x0 +phy_chain_tx_polarity_flip_physical{38.0}=0x0 +phy_chain_tx_polarity_flip_physical{39.0}=0x1 +phy_chain_tx_polarity_flip_physical{40.0}=0x1 +phy_chain_tx_polarity_flip_physical{41.0}=0x0 +phy_chain_tx_polarity_flip_physical{42.0}=0x1 +phy_chain_tx_polarity_flip_physical{43.0}=0x1 +phy_chain_tx_polarity_flip_physical{44.0}=0x1 +phy_chain_tx_polarity_flip_physical{45.0}=0x0 +phy_chain_tx_polarity_flip_physical{46.0}=0x0 +phy_chain_tx_polarity_flip_physical{47.0}=0x1 +phy_chain_tx_polarity_flip_physical{48.0}=0x1 +phy_chain_tx_polarity_flip_physical{49.0}=0x1 +phy_chain_tx_polarity_flip_physical{50.0}=0x1 +phy_chain_tx_polarity_flip_physical{51.0}=0x1 +phy_chain_tx_polarity_flip_physical{52.0}=0x1 +phy_chain_tx_polarity_flip_physical{53.0}=0x0 +phy_chain_tx_polarity_flip_physical{54.0}=0x0 +phy_chain_tx_polarity_flip_physical{55.0}=0x1 +phy_chain_tx_polarity_flip_physical{56.0}=0x1 +phy_chain_tx_polarity_flip_physical{57.0}=0x0 +phy_chain_tx_polarity_flip_physical{58.0}=0x1 +phy_chain_tx_polarity_flip_physical{59.0}=0x1 +phy_chain_tx_polarity_flip_physical{60.0}=0x1 +phy_chain_tx_polarity_flip_physical{61.0}=0x0 +phy_chain_tx_polarity_flip_physical{62.0}=0x0 +phy_chain_tx_polarity_flip_physical{63.0}=0x1 +phy_chain_tx_polarity_flip_physical{64.0}=0x1 +phy_chain_tx_polarity_flip_physical{65.0}=0x1 +phy_chain_tx_polarity_flip_physical{66.0}=0x1 +phy_chain_tx_polarity_flip_physical{67.0}=0x1 +phy_chain_tx_polarity_flip_physical{68.0}=0x1 +phy_chain_tx_polarity_flip_physical{69.0}=0x0 +phy_chain_tx_polarity_flip_physical{70.0}=0x1 +phy_chain_tx_polarity_flip_physical{71.0}=0x1 +phy_chain_tx_polarity_flip_physical{72.0}=0x1 +phy_chain_tx_polarity_flip_physical{73.0}=0x0 +phy_chain_tx_polarity_flip_physical{74.0}=0x1 +phy_chain_tx_polarity_flip_physical{75.0}=0x1 +phy_chain_tx_polarity_flip_physical{76.0}=0x1 +phy_chain_tx_polarity_flip_physical{77.0}=0x0 +phy_chain_tx_polarity_flip_physical{78.0}=0x0 +phy_chain_tx_polarity_flip_physical{79.0}=0x1 +phy_chain_tx_polarity_flip_physical{80.0}=0x1 +phy_chain_tx_polarity_flip_physical{81.0}=0x1 +phy_chain_tx_polarity_flip_physical{82.0}=0x1 +phy_chain_tx_polarity_flip_physical{83.0}=0x1 +phy_chain_tx_polarity_flip_physical{84.0}=0x1 +phy_chain_tx_polarity_flip_physical{85.0}=0x0 +phy_chain_tx_polarity_flip_physical{86.0}=0x0 +phy_chain_tx_polarity_flip_physical{87.0}=0x1 +phy_chain_tx_polarity_flip_physical{88.0}=0x1 +phy_chain_tx_polarity_flip_physical{89.0}=0x0 +phy_chain_tx_polarity_flip_physical{90.0}=0x1 +phy_chain_tx_polarity_flip_physical{91.0}=0x1 +phy_chain_tx_polarity_flip_physical{92.0}=0x1 +phy_chain_tx_polarity_flip_physical{93.0}=0x0 +phy_chain_tx_polarity_flip_physical{94.0}=0x0 +phy_chain_tx_polarity_flip_physical{95.0}=0x1 +phy_chain_tx_polarity_flip_physical{96.0}=0x1 +phy_chain_tx_polarity_flip_physical{97.0}=0x1 +phy_chain_tx_polarity_flip_physical{98.0}=0x1 +phy_chain_tx_polarity_flip_physical{99.0}=0x1 +phy_chain_tx_polarity_flip_physical{100.0}=0x1 +phy_chain_tx_polarity_flip_physical{101.0}=0x0 +phy_chain_tx_polarity_flip_physical{102.0}=0x1 +phy_chain_tx_polarity_flip_physical{103.0}=0x1 +phy_chain_tx_polarity_flip_physical{104.0}=0x0 +phy_chain_tx_polarity_flip_physical{105.0}=0x1 +phy_chain_tx_polarity_flip_physical{106.0}=0x0 +phy_chain_tx_polarity_flip_physical{107.0}=0x0 +phy_chain_tx_polarity_flip_physical{108.0}=0x0 +phy_chain_tx_polarity_flip_physical{109.0}=0x1 +phy_chain_tx_polarity_flip_physical{110.0}=0x1 +phy_chain_tx_polarity_flip_physical{111.0}=0x0 +phy_chain_tx_polarity_flip_physical{112.0}=0x0 +phy_chain_tx_polarity_flip_physical{113.0}=0x0 +phy_chain_tx_polarity_flip_physical{114.0}=0x0 +phy_chain_tx_polarity_flip_physical{115.0}=0x0 +phy_chain_tx_polarity_flip_physical{116.0}=0x0 +phy_chain_tx_polarity_flip_physical{117.0}=0x1 +phy_chain_tx_polarity_flip_physical{118.0}=0x1 +phy_chain_tx_polarity_flip_physical{119.0}=0x0 +phy_chain_tx_polarity_flip_physical{120.0}=0x0 +phy_chain_tx_polarity_flip_physical{121.0}=0x1 +phy_chain_tx_polarity_flip_physical{122.0}=0x0 +phy_chain_tx_polarity_flip_physical{123.0}=0x0 +phy_chain_tx_polarity_flip_physical{124.0}=0x0 +phy_chain_tx_polarity_flip_physical{125.0}=0x1 +phy_chain_tx_polarity_flip_physical{126.0}=0x1 +phy_chain_tx_polarity_flip_physical{127.0}=0x0 +phy_chain_tx_polarity_flip_physical{128.0}=0x0 +phy_chain_tx_polarity_flip_physical{129.0}=0x0 +portmap_1=1:100 +portmap_5=5:100 +portmap_9=9:100 +portmap_13=13:100 +portmap_17=17:100 +portmap_21=21:100 +portmap_25=25:100 +portmap_29=29:100 +portmap_33=33:100 +portmap_37=37:100 +portmap_41=41:100 +portmap_45=45:100 +portmap_49=49:100 +portmap_53=53:100 +portmap_57=57:100 +portmap_61=61:100 +portmap_66=129:10:m +portmap_67=65:100 +portmap_71=69:100 +portmap_75=73:100 +portmap_79=77:100 +portmap_83=81:100 +portmap_87=85:100 +portmap_91=89:100 +portmap_95=93:100 +portmap_99=97:100 +portmap_103=101:100 +portmap_107=105:100 +portmap_111=109:100 +portmap_115=113:100 +portmap_119=117:100 +portmap_123=121:100 +portmap_127=125:100 +portmap_130=128:10:m +port_flex_enable=1 +port_phy_addr=0xff +robust_hash_disable_egress_vlan=1 +robust_hash_disable_mpls=1 +robust_hash_disable_vlan=1 +sai_load_hw_config=/etc/bcm/flex/bcm56870_a0_issu/b870.6.4.1/ +sai_tunnel_support=1 +serdes_core_rx_polarity_flip_physical{1}=0x8 +serdes_core_rx_polarity_flip_physical{5}=0x2 +serdes_core_rx_polarity_flip_physical{9}=0xc +serdes_core_rx_polarity_flip_physical{13}=0x3 +serdes_core_rx_polarity_flip_physical{17}=0x4 +serdes_core_rx_polarity_flip_physical{21}=0x3 +serdes_core_rx_polarity_flip_physical{25}=0x6 +serdes_core_rx_polarity_flip_physical{29}=0x3 +serdes_core_rx_polarity_flip_physical{33}=0x4 +serdes_core_rx_polarity_flip_physical{37}=0x3 +serdes_core_rx_polarity_flip_physical{41}=0xc +serdes_core_rx_polarity_flip_physical{45}=0x3 +serdes_core_rx_polarity_flip_physical{49}=0x4 +serdes_core_rx_polarity_flip_physical{53}=0x3 +serdes_core_rx_polarity_flip_physical{57}=0xc +serdes_core_rx_polarity_flip_physical{61}=0x3 +serdes_core_rx_polarity_flip_physical{65}=0xb +serdes_core_rx_polarity_flip_physical{69}=0xc +serdes_core_rx_polarity_flip_physical{73}=0x7 +serdes_core_rx_polarity_flip_physical{77}=0xc +serdes_core_rx_polarity_flip_physical{81}=0xb +serdes_core_rx_polarity_flip_physical{85}=0xc +serdes_core_rx_polarity_flip_physical{89}=0x7 +serdes_core_rx_polarity_flip_physical{93}=0xc +serdes_core_rx_polarity_flip_physical{97}=0xb +serdes_core_rx_polarity_flip_physical{101}=0x9 +serdes_core_rx_polarity_flip_physical{105}=0x7 +serdes_core_rx_polarity_flip_physical{109}=0xc +serdes_core_rx_polarity_flip_physical{113}=0xb +serdes_core_rx_polarity_flip_physical{117}=0xc +serdes_core_rx_polarity_flip_physical{121}=0x7 +serdes_core_rx_polarity_flip_physical{125}=0xc +serdes_core_rx_polarity_flip_physical{129}=0x0 +serdes_core_tx_polarity_flip_physical{1}=0x3 +serdes_core_tx_polarity_flip_physical{5}=0xb +serdes_core_tx_polarity_flip_physical{9}=0x3 +serdes_core_tx_polarity_flip_physical{13}=0xb +serdes_core_tx_polarity_flip_physical{17}=0x0 +serdes_core_tx_polarity_flip_physical{21}=0x3 +serdes_core_tx_polarity_flip_physical{25}=0x4 +serdes_core_tx_polarity_flip_physical{29}=0xc +serdes_core_tx_polarity_flip_physical{33}=0xf +serdes_core_tx_polarity_flip_physical{37}=0xc +serdes_core_tx_polarity_flip_physical{41}=0xe +serdes_core_tx_polarity_flip_physical{45}=0xc +serdes_core_tx_polarity_flip_physical{49}=0xf +serdes_core_tx_polarity_flip_physical{53}=0xc +serdes_core_tx_polarity_flip_physical{57}=0xe +serdes_core_tx_polarity_flip_physical{61}=0xc +serdes_core_tx_polarity_flip_physical{65}=0xf +serdes_core_tx_polarity_flip_physical{69}=0xe +serdes_core_tx_polarity_flip_physical{73}=0xe +serdes_core_tx_polarity_flip_physical{77}=0xc +serdes_core_tx_polarity_flip_physical{81}=0xf +serdes_core_tx_polarity_flip_physical{85}=0xc +serdes_core_tx_polarity_flip_physical{89}=0xe +serdes_core_tx_polarity_flip_physical{93}=0xc +serdes_core_tx_polarity_flip_physical{97}=0xf +serdes_core_tx_polarity_flip_physical{101}=0x6 +serdes_core_tx_polarity_flip_physical{105}=0x1 +serdes_core_tx_polarity_flip_physical{109}=0x3 +serdes_core_tx_polarity_flip_physical{113}=0x0 +serdes_core_tx_polarity_flip_physical{117}=0x3 +serdes_core_tx_polarity_flip_physical{121}=0x1 +serdes_core_tx_polarity_flip_physical{125}=0x3 +serdes_core_tx_polarity_flip_physical{129}=0x0 +stable_size=0x5500000 +tdma_timeout_usec=15000000 +tslam_timeout_usec=15000000 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/th-a7060-cx32s-32x100G-t1.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/th-a7060-cx32s-32x100G-t1.config.bcm index 95a947003fbc..adbb21ca3b83 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/th-a7060-cx32s-32x100G-t1.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-C32/th-a7060-cx32s-32x100G-t1.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/th-a7060-cx32s-8x100G+48x50G.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/th-a7060-cx32s-8x100G+48x50G.config.bcm index 5c70d324dbb3..b496399451ce 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/th-a7060-cx32s-8x100G+48x50G.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-D48C8/th-a7060-cx32s-8x100G+48x50G.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q24C8/th-a7060-cx32s-8x100G+24x40G.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q24C8/th-a7060-cx32s-8x100G+24x40G.config.bcm index 05908a259c48..1c7f37618d5f 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q24C8/th-a7060-cx32s-8x100G+24x40G.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q24C8/th-a7060-cx32s-8x100G+24x40G.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t0.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t0.config.bcm index c011ad93f4d7..6a3011ca516c 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t0.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t0.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t1.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t1.config.bcm index 65a7d57b5513..90046651bf16 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t1.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-Q32/th-a7060-cx32s-32x40G-t1.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-T96C8/th-a7060-cx32s-8x100G+96x25G.config.bcm b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-T96C8/th-a7060-cx32s-8x100G+96x25G.config.bcm index 467d428830c9..94ac99e3e3e3 100644 --- a/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-T96C8/th-a7060-cx32s-8x100G+96x25G.config.bcm +++ b/device/arista/x86_64-arista_7060_cx32s/Arista-7060CX-32S-T96C8/th-a7060-cx32s-8x100G+96x25G.config.bcm @@ -1,5 +1,8 @@ # Arista 7060CX-32S +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + phy_an_allow_pll_change=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/hwsku.json b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/hwsku.json new file mode 100644 index 000000000000..713a01025ba8 --- /dev/null +++ b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/hwsku.json @@ -0,0 +1,106 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet256": { + "default_brkout_mode": "1x10G" + }, + "Ethernet260": { + "default_brkout_mode": "1x10G" + } + } +} \ No newline at end of file diff --git a/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/port_config.ini b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/port_config.ini new file mode 100644 index 000000000000..45ef9b7754b9 --- /dev/null +++ b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/port_config.ini @@ -0,0 +1,35 @@ +# name lanes alias index speed +Ethernet0 1,2,3,4,5,6,7,8 Ethernet1/1 1 400000 +Ethernet8 9,10,11,12,13,14,15,16 Ethernet2/1 2 400000 +Ethernet16 17,18,19,20,21,22,23,24 Ethernet3/1 3 400000 +Ethernet24 25,26,27,28,29,30,31,32 Ethernet4/1 4 400000 +Ethernet32 33,34,35,36,37,38,39,40 Ethernet5/1 5 400000 +Ethernet40 41,42,43,44,45,46,47,48 Ethernet6/1 6 400000 +Ethernet48 49,50,51,52,53,54,55,56 Ethernet7/1 7 400000 +Ethernet56 57,58,59,60,61,62,63,64 Ethernet8/1 8 400000 +Ethernet64 65,66,67,68,69,70,71,72 Ethernet9/1 9 400000 +Ethernet72 73,74,75,76,77,78,79,80 Ethernet10/1 10 400000 +Ethernet80 81,82,83,84,85,86,87,88 Ethernet11/1 11 400000 +Ethernet88 89,90,91,92,93,94,95,96 Ethernet12/1 12 400000 +Ethernet96 97,98,99,100,101,102,103,104 Ethernet13/1 13 400000 +Ethernet104 105,106,107,108,109,110,111,112 Ethernet14/1 14 400000 +Ethernet112 113,114,115,116,117,118,119,120 Ethernet15/1 15 400000 +Ethernet120 121,122,123,124,125,126,127,128 Ethernet16/1 16 400000 +Ethernet128 129,130,131,132,133,134,135,136 Ethernet17/1 17 400000 +Ethernet136 137,138,139,140,141,142,143,144 Ethernet18/1 18 400000 +Ethernet144 145,146,147,148,149,150,151,152 Ethernet19/1 19 400000 +Ethernet152 153,154,155,156,157,158,159,160 Ethernet20/1 20 400000 +Ethernet160 161,162,163,164,165,166,167,168 Ethernet21/1 21 400000 +Ethernet168 169,170,171,172,173,174,175,176 Ethernet22/1 22 400000 +Ethernet176 177,178,179,180,181,182,183,184 Ethernet23/1 23 400000 +Ethernet184 185,186,187,188,189,190,191,192 Ethernet24/1 24 400000 +Ethernet192 193,194,195,196,197,198,199,200 Ethernet25/1 25 400000 +Ethernet200 201,202,203,204,205,206,207,208 Ethernet26/1 26 400000 +Ethernet208 209,210,211,212,213,214,215,216 Ethernet27/1 27 400000 +Ethernet216 217,218,219,220,221,222,223,224 Ethernet28/1 28 400000 +Ethernet224 225,226,227,228,229,230,231,232 Ethernet29/1 29 400000 +Ethernet232 233,234,235,236,237,238,239,240 Ethernet30/1 30 400000 +Ethernet240 241,242,243,244,245,246,247,248 Ethernet31/1 31 400000 +Ethernet248 249,250,251,252,253,254,255,256 Ethernet32/1 32 400000 +Ethernet256 258 Ethernet33 33 10000 +Ethernet260 257 Ethernet34 34 10000 diff --git a/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/sai.profile b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/sai.profile new file mode 100644 index 000000000000..fc720c364ecb --- /dev/null +++ b/device/arista/x86_64-arista_7060dx4_32/Arista-7060DX4-32/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/th3-a7060dx4-32-flex.config.bcm diff --git a/device/arista/x86_64-arista_7060dx4_32/platform.json b/device/arista/x86_64-arista_7060dx4_32/platform.json index d37370b0d948..7a38cbe3d9f3 100644 --- a/device/arista/x86_64-arista_7060dx4_32/platform.json +++ b/device/arista/x86_64-arista_7060dx4_32/platform.json @@ -219,5 +219,632 @@ } ] }, - "interfaces": {} + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet1/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/3", + "Ethernet1/5", + "Ethernet1/7" + ] + } + }, + "Ethernet8": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet2/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/3", + "Ethernet2/5", + "Ethernet2/7" + ] + } + }, + "Ethernet16": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet3/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/3", + "Ethernet3/5", + "Ethernet3/7" + ] + } + }, + "Ethernet24": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet4/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/3", + "Ethernet4/5", + "Ethernet4/7" + ] + } + }, + "Ethernet32": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet5/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/3", + "Ethernet5/5", + "Ethernet5/7" + ] + } + }, + "Ethernet40": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet6/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/3", + "Ethernet6/5", + "Ethernet6/7" + ] + } + }, + "Ethernet48": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet7/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/3", + "Ethernet7/5", + "Ethernet7/7" + ] + } + }, + "Ethernet56": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet8/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/3", + "Ethernet8/5", + "Ethernet8/7" + ] + } + }, + "Ethernet64": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet9/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/3", + "Ethernet9/5", + "Ethernet9/7" + ] + } + }, + "Ethernet72": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet10/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/3", + "Ethernet10/5", + "Ethernet10/7" + ] + } + }, + "Ethernet80": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet11/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/3", + "Ethernet11/5", + "Ethernet11/7" + ] + } + }, + "Ethernet88": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet12/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/3", + "Ethernet12/5", + "Ethernet12/7" + ] + } + }, + "Ethernet96": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet13/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/3", + "Ethernet13/5", + "Ethernet13/7" + ] + } + }, + "Ethernet104": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet14/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/3", + "Ethernet14/5", + "Ethernet14/7" + ] + } + }, + "Ethernet112": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet15/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/3", + "Ethernet15/5", + "Ethernet15/7" + ] + } + }, + "Ethernet120": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet16/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/3", + "Ethernet16/5", + "Ethernet16/7" + ] + } + }, + "Ethernet128": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet17/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/3", + "Ethernet17/5", + "Ethernet17/7" + ] + } + }, + "Ethernet136": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "137,138,139,140,141,142,143,144", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet18/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/3", + "Ethernet18/5", + "Ethernet18/7" + ] + } + }, + "Ethernet144": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "145,146,147,148,149,150,151,152", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet19/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/3", + "Ethernet19/5", + "Ethernet19/7" + ] + } + }, + "Ethernet152": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "153,154,155,156,157,158,159,160", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet20/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/3", + "Ethernet20/5", + "Ethernet20/7" + ] + } + }, + "Ethernet160": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "161,162,163,164,165,166,167,168", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet21/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/3", + "Ethernet21/5", + "Ethernet21/7" + ] + } + }, + "Ethernet168": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "169,170,171,172,173,174,175,176", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet22/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/3", + "Ethernet22/5", + "Ethernet22/7" + ] + } + }, + "Ethernet176": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "177,178,179,180,181,182,183,184", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet23/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/3", + "Ethernet23/5", + "Ethernet23/7" + ] + } + }, + "Ethernet184": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "185,186,187,188,189,190,191,192", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet24/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/3", + "Ethernet24/5", + "Ethernet24/7" + ] + } + }, + "Ethernet192": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "193,194,195,196,197,198,199,200", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet25/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/3", + "Ethernet25/5", + "Ethernet25/7" + ] + } + }, + "Ethernet200": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "201,202,203,204,205,206,207,208", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet26/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/3", + "Ethernet26/5", + "Ethernet26/7" + ] + } + }, + "Ethernet208": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "209,210,211,212,213,214,215,216", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet27/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/3", + "Ethernet27/5", + "Ethernet27/7" + ] + } + }, + "Ethernet216": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "217,218,219,220,221,222,223,224", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet28/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/3", + "Ethernet28/5", + "Ethernet28/7" + ] + } + }, + "Ethernet224": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "225,226,227,228,229,230,231,232", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet29/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/3", + "Ethernet29/5", + "Ethernet29/7" + ] + } + }, + "Ethernet232": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "233,234,235,236,237,238,239,240", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet30/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/3", + "Ethernet30/5", + "Ethernet30/7" + ] + } + }, + "Ethernet240": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "241,242,243,244,245,246,247,248", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet31/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/3", + "Ethernet31/5", + "Ethernet31/7" + ] + } + }, + "Ethernet248": { + "index": "32,32,32,32,32,32,32,32", + "lanes": "249,250,251,252,253,254,255,256", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet32/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/3", + "Ethernet32/5", + "Ethernet32/7" + ] + } + }, + "Ethernet256": { + "index": "33", + "lanes": "258", + "breakout_modes": { + "1x10G": [ + "Ethernet33" + ] + } + }, + "Ethernet260": { + "index": "34", + "lanes": "257", + "breakout_modes": { + "1x10G": [ + "Ethernet34" + ] + } + } + } } diff --git a/device/arista/x86_64-arista_7060dx4_32/th3-a7060dx4-32-flex.config.bcm b/device/arista/x86_64-arista_7060dx4_32/th3-a7060dx4-32-flex.config.bcm new file mode 100644 index 000000000000..2eae80ff1180 --- /dev/null +++ b/device/arista/x86_64-arista_7060dx4_32/th3-a7060dx4-32-flex.config.bcm @@ -0,0 +1,752 @@ +arl_clean_timeout_usec=15000000 +asf_mem_profile.0=2 +bcm_num_cos.0=8 +bcm_stat_flags=1 +bcm_stat_jumbo.0=9236 +cdma_timeout_usec.0=15000000 +disable_pcie_firmware_check.0=1 +dma_desc_timeout_usec.0=15000000 +dpr_clock_frequency.0=1000 +l2xmsg_mode.0=1 +l2_mem_entries.0=8192 +l3_alpm_enable.0=2 +l3_mem_entries.0=16384 +max_vp_lags.0=0 +miim_intr_enable.0=0 +module_64ports.0=1 +multicast_l2_range.0=511 +oversubscribe_mode=1 +parity_correction=1 +parity_enable=1 +pbmp_xport_xe.0=0x3ffffffffffffffffffffffffffffffffffffffe +phy_an_c37_38.0=2 +phy_an_c37_118.0=2 +phy_an_c73=1 +phy_an_c73_38.0=0 +phy_an_c73_118.0=0 +phy_chain_rx_lane_map_physical{1.0}=0x42537160 +phy_chain_rx_lane_map_physical{9.0}=0x60715342 +phy_chain_rx_lane_map_physical{17.0}=0x06173425 +phy_chain_rx_lane_map_physical{25.0}=0x02471356 +phy_chain_rx_lane_map_physical{33.0}=0x27160534 +phy_chain_rx_lane_map_physical{41.0}=0x02461357 +phy_chain_rx_lane_map_physical{49.0}=0x26150437 +phy_chain_rx_lane_map_physical{57.0}=0x02461357 +phy_chain_rx_lane_map_physical{65.0}=0x27140536 +phy_chain_rx_lane_map_physical{73.0}=0x02471356 +phy_chain_rx_lane_map_physical{81.0}=0x27140536 +phy_chain_rx_lane_map_physical{89.0}=0x02471356 +phy_chain_rx_lane_map_physical{97.0}=0x02461357 +phy_chain_rx_lane_map_physical{105.0}=0x57124603 +phy_chain_rx_lane_map_physical{113.0}=0x17243506 +phy_chain_rx_lane_map_physical{121.0}=0x46315720 +phy_chain_rx_lane_map_physical{129.0}=0x60534271 +phy_chain_rx_lane_map_physical{137.0}=0x02461357 +phy_chain_rx_lane_map_physical{145.0}=0x27140536 +phy_chain_rx_lane_map_physical{153.0}=0x50271463 +phy_chain_rx_lane_map_physical{161.0}=0x31652074 +phy_chain_rx_lane_map_physical{169.0}=0x02461357 +phy_chain_rx_lane_map_physical{177.0}=0x26140537 +phy_chain_rx_lane_map_physical{185.0}=0x02461357 +phy_chain_rx_lane_map_physical{193.0}=0x26140537 +phy_chain_rx_lane_map_physical{201.0}=0x02461357 +phy_chain_rx_lane_map_physical{209.0}=0x27140536 +phy_chain_rx_lane_map_physical{217.0}=0x02641357 +phy_chain_rx_lane_map_physical{225.0}=0x60734251 +phy_chain_rx_lane_map_physical{233.0}=0x31462057 +phy_chain_rx_lane_map_physical{241.0}=0x60715342 +phy_chain_rx_lane_map_physical{249.0}=0x35216047 +phy_chain_rx_lane_map_physical{257.0}=0x3210 +phy_chain_rx_polarity_flip_physical{1.0}=0x1 +phy_chain_rx_polarity_flip_physical{2.0}=0x0 +phy_chain_rx_polarity_flip_physical{3.0}=0x0 +phy_chain_rx_polarity_flip_physical{4.0}=0x1 +phy_chain_rx_polarity_flip_physical{5.0}=0x0 +phy_chain_rx_polarity_flip_physical{6.0}=0x1 +phy_chain_rx_polarity_flip_physical{7.0}=0x1 +phy_chain_rx_polarity_flip_physical{8.0}=0x0 +phy_chain_rx_polarity_flip_physical{9.0}=0x1 +phy_chain_rx_polarity_flip_physical{10.0}=0x0 +phy_chain_rx_polarity_flip_physical{11.0}=0x0 +phy_chain_rx_polarity_flip_physical{12.0}=0x1 +phy_chain_rx_polarity_flip_physical{13.0}=0x0 +phy_chain_rx_polarity_flip_physical{14.0}=0x1 +phy_chain_rx_polarity_flip_physical{15.0}=0x1 +phy_chain_rx_polarity_flip_physical{16.0}=0x0 +phy_chain_rx_polarity_flip_physical{17.0}=0x0 +phy_chain_rx_polarity_flip_physical{18.0}=0x0 +phy_chain_rx_polarity_flip_physical{19.0}=0x1 +phy_chain_rx_polarity_flip_physical{20.0}=0x0 +phy_chain_rx_polarity_flip_physical{21.0}=0x0 +phy_chain_rx_polarity_flip_physical{22.0}=0x1 +phy_chain_rx_polarity_flip_physical{23.0}=0x1 +phy_chain_rx_polarity_flip_physical{24.0}=0x1 +phy_chain_rx_polarity_flip_physical{25.0}=0x0 +phy_chain_rx_polarity_flip_physical{26.0}=0x1 +phy_chain_rx_polarity_flip_physical{27.0}=0x0 +phy_chain_rx_polarity_flip_physical{28.0}=0x0 +phy_chain_rx_polarity_flip_physical{29.0}=0x0 +phy_chain_rx_polarity_flip_physical{30.0}=0x1 +phy_chain_rx_polarity_flip_physical{31.0}=0x1 +phy_chain_rx_polarity_flip_physical{32.0}=0x0 +phy_chain_rx_polarity_flip_physical{33.0}=0x1 +phy_chain_rx_polarity_flip_physical{34.0}=0x1 +phy_chain_rx_polarity_flip_physical{35.0}=0x0 +phy_chain_rx_polarity_flip_physical{36.0}=0x0 +phy_chain_rx_polarity_flip_physical{37.0}=0x1 +phy_chain_rx_polarity_flip_physical{38.0}=0x1 +phy_chain_rx_polarity_flip_physical{39.0}=0x0 +phy_chain_rx_polarity_flip_physical{40.0}=0x0 +phy_chain_rx_polarity_flip_physical{41.0}=0x0 +phy_chain_rx_polarity_flip_physical{42.0}=0x1 +phy_chain_rx_polarity_flip_physical{43.0}=0x1 +phy_chain_rx_polarity_flip_physical{44.0}=0x0 +phy_chain_rx_polarity_flip_physical{45.0}=0x0 +phy_chain_rx_polarity_flip_physical{46.0}=0x1 +phy_chain_rx_polarity_flip_physical{47.0}=0x1 +phy_chain_rx_polarity_flip_physical{48.0}=0x0 +phy_chain_rx_polarity_flip_physical{49.0}=0x0 +phy_chain_rx_polarity_flip_physical{50.0}=0x0 +phy_chain_rx_polarity_flip_physical{51.0}=0x1 +phy_chain_rx_polarity_flip_physical{52.0}=0x0 +phy_chain_rx_polarity_flip_physical{53.0}=0x0 +phy_chain_rx_polarity_flip_physical{54.0}=0x1 +phy_chain_rx_polarity_flip_physical{55.0}=0x0 +phy_chain_rx_polarity_flip_physical{56.0}=0x0 +phy_chain_rx_polarity_flip_physical{57.0}=0x0 +phy_chain_rx_polarity_flip_physical{58.0}=0x1 +phy_chain_rx_polarity_flip_physical{59.0}=0x1 +phy_chain_rx_polarity_flip_physical{60.0}=0x0 +phy_chain_rx_polarity_flip_physical{61.0}=0x0 +phy_chain_rx_polarity_flip_physical{62.0}=0x1 +phy_chain_rx_polarity_flip_physical{63.0}=0x1 +phy_chain_rx_polarity_flip_physical{64.0}=0x0 +phy_chain_rx_polarity_flip_physical{65.0}=0x1 +phy_chain_rx_polarity_flip_physical{66.0}=0x1 +phy_chain_rx_polarity_flip_physical{67.0}=0x0 +phy_chain_rx_polarity_flip_physical{68.0}=0x0 +phy_chain_rx_polarity_flip_physical{69.0}=0x1 +phy_chain_rx_polarity_flip_physical{70.0}=0x1 +phy_chain_rx_polarity_flip_physical{71.0}=0x0 +phy_chain_rx_polarity_flip_physical{72.0}=0x0 +phy_chain_rx_polarity_flip_physical{73.0}=0x1 +phy_chain_rx_polarity_flip_physical{74.0}=0x1 +phy_chain_rx_polarity_flip_physical{75.0}=0x0 +phy_chain_rx_polarity_flip_physical{76.0}=0x0 +phy_chain_rx_polarity_flip_physical{77.0}=0x0 +phy_chain_rx_polarity_flip_physical{78.0}=0x1 +phy_chain_rx_polarity_flip_physical{79.0}=0x1 +phy_chain_rx_polarity_flip_physical{80.0}=0x0 +phy_chain_rx_polarity_flip_physical{81.0}=0x1 +phy_chain_rx_polarity_flip_physical{82.0}=0x1 +phy_chain_rx_polarity_flip_physical{83.0}=0x0 +phy_chain_rx_polarity_flip_physical{84.0}=0x0 +phy_chain_rx_polarity_flip_physical{85.0}=0x1 +phy_chain_rx_polarity_flip_physical{86.0}=0x1 +phy_chain_rx_polarity_flip_physical{87.0}=0x0 +phy_chain_rx_polarity_flip_physical{88.0}=0x0 +phy_chain_rx_polarity_flip_physical{89.0}=0x1 +phy_chain_rx_polarity_flip_physical{90.0}=0x1 +phy_chain_rx_polarity_flip_physical{91.0}=0x0 +phy_chain_rx_polarity_flip_physical{92.0}=0x0 +phy_chain_rx_polarity_flip_physical{93.0}=0x0 +phy_chain_rx_polarity_flip_physical{94.0}=0x1 +phy_chain_rx_polarity_flip_physical{95.0}=0x1 +phy_chain_rx_polarity_flip_physical{96.0}=0x0 +phy_chain_rx_polarity_flip_physical{97.0}=0x0 +phy_chain_rx_polarity_flip_physical{98.0}=0x1 +phy_chain_rx_polarity_flip_physical{99.0}=0x1 +phy_chain_rx_polarity_flip_physical{100.0}=0x1 +phy_chain_rx_polarity_flip_physical{101.0}=0x1 +phy_chain_rx_polarity_flip_physical{102.0}=0x0 +phy_chain_rx_polarity_flip_physical{103.0}=0x0 +phy_chain_rx_polarity_flip_physical{104.0}=0x0 +phy_chain_rx_polarity_flip_physical{105.0}=0x1 +phy_chain_rx_polarity_flip_physical{106.0}=0x1 +phy_chain_rx_polarity_flip_physical{107.0}=0x0 +phy_chain_rx_polarity_flip_physical{108.0}=0x0 +phy_chain_rx_polarity_flip_physical{109.0}=0x0 +phy_chain_rx_polarity_flip_physical{110.0}=0x1 +phy_chain_rx_polarity_flip_physical{111.0}=0x1 +phy_chain_rx_polarity_flip_physical{112.0}=0x0 +phy_chain_rx_polarity_flip_physical{113.0}=0x1 +phy_chain_rx_polarity_flip_physical{114.0}=0x1 +phy_chain_rx_polarity_flip_physical{115.0}=0x0 +phy_chain_rx_polarity_flip_physical{116.0}=0x1 +phy_chain_rx_polarity_flip_physical{117.0}=0x1 +phy_chain_rx_polarity_flip_physical{118.0}=0x0 +phy_chain_rx_polarity_flip_physical{119.0}=0x1 +phy_chain_rx_polarity_flip_physical{120.0}=0x1 +phy_chain_rx_polarity_flip_physical{121.0}=0x1 +phy_chain_rx_polarity_flip_physical{122.0}=0x0 +phy_chain_rx_polarity_flip_physical{123.0}=0x0 +phy_chain_rx_polarity_flip_physical{124.0}=0x1 +phy_chain_rx_polarity_flip_physical{125.0}=0x0 +phy_chain_rx_polarity_flip_physical{126.0}=0x1 +phy_chain_rx_polarity_flip_physical{127.0}=0x1 +phy_chain_rx_polarity_flip_physical{128.0}=0x0 +phy_chain_rx_polarity_flip_physical{129.0}=0x0 +phy_chain_rx_polarity_flip_physical{130.0}=0x0 +phy_chain_rx_polarity_flip_physical{131.0}=0x1 +phy_chain_rx_polarity_flip_physical{132.0}=0x0 +phy_chain_rx_polarity_flip_physical{133.0}=0x0 +phy_chain_rx_polarity_flip_physical{134.0}=0x1 +phy_chain_rx_polarity_flip_physical{135.0}=0x0 +phy_chain_rx_polarity_flip_physical{136.0}=0x0 +phy_chain_rx_polarity_flip_physical{137.0}=0x0 +phy_chain_rx_polarity_flip_physical{138.0}=0x1 +phy_chain_rx_polarity_flip_physical{139.0}=0x1 +phy_chain_rx_polarity_flip_physical{140.0}=0x0 +phy_chain_rx_polarity_flip_physical{141.0}=0x0 +phy_chain_rx_polarity_flip_physical{142.0}=0x1 +phy_chain_rx_polarity_flip_physical{143.0}=0x1 +phy_chain_rx_polarity_flip_physical{144.0}=0x0 +phy_chain_rx_polarity_flip_physical{145.0}=0x1 +phy_chain_rx_polarity_flip_physical{146.0}=0x1 +phy_chain_rx_polarity_flip_physical{147.0}=0x0 +phy_chain_rx_polarity_flip_physical{148.0}=0x0 +phy_chain_rx_polarity_flip_physical{149.0}=0x1 +phy_chain_rx_polarity_flip_physical{150.0}=0x1 +phy_chain_rx_polarity_flip_physical{151.0}=0x0 +phy_chain_rx_polarity_flip_physical{152.0}=0x0 +phy_chain_rx_polarity_flip_physical{153.0}=0x0 +phy_chain_rx_polarity_flip_physical{154.0}=0x1 +phy_chain_rx_polarity_flip_physical{155.0}=0x0 +phy_chain_rx_polarity_flip_physical{156.0}=0x1 +phy_chain_rx_polarity_flip_physical{157.0}=0x1 +phy_chain_rx_polarity_flip_physical{158.0}=0x0 +phy_chain_rx_polarity_flip_physical{159.0}=0x1 +phy_chain_rx_polarity_flip_physical{160.0}=0x0 +phy_chain_rx_polarity_flip_physical{161.0}=0x1 +phy_chain_rx_polarity_flip_physical{162.0}=0x1 +phy_chain_rx_polarity_flip_physical{163.0}=0x1 +phy_chain_rx_polarity_flip_physical{164.0}=0x1 +phy_chain_rx_polarity_flip_physical{165.0}=0x0 +phy_chain_rx_polarity_flip_physical{166.0}=0x0 +phy_chain_rx_polarity_flip_physical{167.0}=0x0 +phy_chain_rx_polarity_flip_physical{168.0}=0x0 +phy_chain_rx_polarity_flip_physical{169.0}=0x0 +phy_chain_rx_polarity_flip_physical{170.0}=0x1 +phy_chain_rx_polarity_flip_physical{171.0}=0x1 +phy_chain_rx_polarity_flip_physical{172.0}=0x0 +phy_chain_rx_polarity_flip_physical{173.0}=0x0 +phy_chain_rx_polarity_flip_physical{174.0}=0x1 +phy_chain_rx_polarity_flip_physical{175.0}=0x1 +phy_chain_rx_polarity_flip_physical{176.0}=0x0 +phy_chain_rx_polarity_flip_physical{177.0}=0x0 +phy_chain_rx_polarity_flip_physical{178.0}=0x0 +phy_chain_rx_polarity_flip_physical{179.0}=0x0 +phy_chain_rx_polarity_flip_physical{180.0}=0x0 +phy_chain_rx_polarity_flip_physical{181.0}=0x1 +phy_chain_rx_polarity_flip_physical{182.0}=0x1 +phy_chain_rx_polarity_flip_physical{183.0}=0x0 +phy_chain_rx_polarity_flip_physical{184.0}=0x0 +phy_chain_rx_polarity_flip_physical{185.0}=0x0 +phy_chain_rx_polarity_flip_physical{186.0}=0x1 +phy_chain_rx_polarity_flip_physical{187.0}=0x1 +phy_chain_rx_polarity_flip_physical{188.0}=0x0 +phy_chain_rx_polarity_flip_physical{189.0}=0x0 +phy_chain_rx_polarity_flip_physical{190.0}=0x1 +phy_chain_rx_polarity_flip_physical{191.0}=0x1 +phy_chain_rx_polarity_flip_physical{192.0}=0x0 +phy_chain_rx_polarity_flip_physical{193.0}=0x0 +phy_chain_rx_polarity_flip_physical{194.0}=0x0 +phy_chain_rx_polarity_flip_physical{195.0}=0x0 +phy_chain_rx_polarity_flip_physical{196.0}=0x0 +phy_chain_rx_polarity_flip_physical{197.0}=0x1 +phy_chain_rx_polarity_flip_physical{198.0}=0x1 +phy_chain_rx_polarity_flip_physical{199.0}=0x0 +phy_chain_rx_polarity_flip_physical{200.0}=0x0 +phy_chain_rx_polarity_flip_physical{201.0}=0x0 +phy_chain_rx_polarity_flip_physical{202.0}=0x1 +phy_chain_rx_polarity_flip_physical{203.0}=0x1 +phy_chain_rx_polarity_flip_physical{204.0}=0x0 +phy_chain_rx_polarity_flip_physical{205.0}=0x0 +phy_chain_rx_polarity_flip_physical{206.0}=0x1 +phy_chain_rx_polarity_flip_physical{207.0}=0x1 +phy_chain_rx_polarity_flip_physical{208.0}=0x0 +phy_chain_rx_polarity_flip_physical{209.0}=0x1 +phy_chain_rx_polarity_flip_physical{210.0}=0x1 +phy_chain_rx_polarity_flip_physical{211.0}=0x0 +phy_chain_rx_polarity_flip_physical{212.0}=0x0 +phy_chain_rx_polarity_flip_physical{213.0}=0x1 +phy_chain_rx_polarity_flip_physical{214.0}=0x1 +phy_chain_rx_polarity_flip_physical{215.0}=0x0 +phy_chain_rx_polarity_flip_physical{216.0}=0x0 +phy_chain_rx_polarity_flip_physical{217.0}=0x0 +phy_chain_rx_polarity_flip_physical{218.0}=0x1 +phy_chain_rx_polarity_flip_physical{219.0}=0x1 +phy_chain_rx_polarity_flip_physical{220.0}=0x0 +phy_chain_rx_polarity_flip_physical{221.0}=0x0 +phy_chain_rx_polarity_flip_physical{222.0}=0x1 +phy_chain_rx_polarity_flip_physical{223.0}=0x1 +phy_chain_rx_polarity_flip_physical{224.0}=0x0 +phy_chain_rx_polarity_flip_physical{225.0}=0x0 +phy_chain_rx_polarity_flip_physical{226.0}=0x0 +phy_chain_rx_polarity_flip_physical{227.0}=0x1 +phy_chain_rx_polarity_flip_physical{228.0}=0x0 +phy_chain_rx_polarity_flip_physical{229.0}=0x0 +phy_chain_rx_polarity_flip_physical{230.0}=0x1 +phy_chain_rx_polarity_flip_physical{231.0}=0x0 +phy_chain_rx_polarity_flip_physical{232.0}=0x0 +phy_chain_rx_polarity_flip_physical{233.0}=0x0 +phy_chain_rx_polarity_flip_physical{234.0}=0x1 +phy_chain_rx_polarity_flip_physical{235.0}=0x1 +phy_chain_rx_polarity_flip_physical{236.0}=0x0 +phy_chain_rx_polarity_flip_physical{237.0}=0x1 +phy_chain_rx_polarity_flip_physical{238.0}=0x0 +phy_chain_rx_polarity_flip_physical{239.0}=0x0 +phy_chain_rx_polarity_flip_physical{240.0}=0x1 +phy_chain_rx_polarity_flip_physical{241.0}=0x1 +phy_chain_rx_polarity_flip_physical{242.0}=0x0 +phy_chain_rx_polarity_flip_physical{243.0}=0x0 +phy_chain_rx_polarity_flip_physical{244.0}=0x0 +phy_chain_rx_polarity_flip_physical{245.0}=0x0 +phy_chain_rx_polarity_flip_physical{246.0}=0x1 +phy_chain_rx_polarity_flip_physical{247.0}=0x1 +phy_chain_rx_polarity_flip_physical{248.0}=0x1 +phy_chain_rx_polarity_flip_physical{249.0}=0x1 +phy_chain_rx_polarity_flip_physical{250.0}=0x1 +phy_chain_rx_polarity_flip_physical{251.0}=0x0 +phy_chain_rx_polarity_flip_physical{252.0}=0x0 +phy_chain_rx_polarity_flip_physical{253.0}=0x0 +phy_chain_rx_polarity_flip_physical{254.0}=0x0 +phy_chain_rx_polarity_flip_physical{255.0}=0x1 +phy_chain_rx_polarity_flip_physical{256.0}=0x1 +phy_chain_rx_polarity_flip_physical{257.0}=0x0 +phy_chain_rx_polarity_flip_physical{258.0}=0x0 +phy_chain_tx_lane_map_physical{1.0}=0x30451627 +phy_chain_tx_lane_map_physical{9.0}=0x74532610 +phy_chain_tx_lane_map_physical{17.0}=0x51407362 +phy_chain_tx_lane_map_physical{25.0}=0x27160435 +phy_chain_tx_lane_map_physical{33.0}=0x65347021 +phy_chain_tx_lane_map_physical{41.0}=0x16072435 +phy_chain_tx_lane_map_physical{49.0}=0x75126430 +phy_chain_tx_lane_map_physical{57.0}=0x26071435 +phy_chain_tx_lane_map_physical{65.0}=0x75026431 +phy_chain_tx_lane_map_physical{73.0}=0x26071435 +phy_chain_tx_lane_map_physical{81.0}=0x75026431 +phy_chain_tx_lane_map_physical{89.0}=0x26071435 +phy_chain_tx_lane_map_physical{97.0}=0x03746521 +phy_chain_tx_lane_map_physical{105.0}=0x06142735 +phy_chain_tx_lane_map_physical{113.0}=0x56237014 +phy_chain_tx_lane_map_physical{121.0}=0x01426375 +phy_chain_tx_lane_map_physical{129.0}=0x12673450 +phy_chain_tx_lane_map_physical{137.0}=0x45062731 +phy_chain_tx_lane_map_physical{145.0}=0x56237014 +phy_chain_tx_lane_map_physical{153.0}=0x56012437 +phy_chain_tx_lane_map_physical{161.0}=0x76215430 +phy_chain_tx_lane_map_physical{169.0}=0x57362410 +phy_chain_tx_lane_map_physical{177.0}=0x76215430 +phy_chain_tx_lane_map_physical{185.0}=0x57362410 +phy_chain_tx_lane_map_physical{193.0}=0x76215430 +phy_chain_tx_lane_map_physical{201.0}=0x57362410 +phy_chain_tx_lane_map_physical{209.0}=0x76215430 +phy_chain_tx_lane_map_physical{217.0}=0x57261430 +phy_chain_tx_lane_map_physical{225.0}=0x65217430 +phy_chain_tx_lane_map_physical{233.0}=0x45063721 +phy_chain_tx_lane_map_physical{241.0}=0x75216430 +phy_chain_tx_lane_map_physical{249.0}=0x64275130 +phy_chain_tx_lane_map_physical{257.0}=0x3210 +phy_chain_tx_polarity_flip_physical{1.0}=0x1 +phy_chain_tx_polarity_flip_physical{2.0}=0x1 +phy_chain_tx_polarity_flip_physical{3.0}=0x0 +phy_chain_tx_polarity_flip_physical{4.0}=0x1 +phy_chain_tx_polarity_flip_physical{5.0}=0x1 +phy_chain_tx_polarity_flip_physical{6.0}=0x1 +phy_chain_tx_polarity_flip_physical{7.0}=0x1 +phy_chain_tx_polarity_flip_physical{8.0}=0x0 +phy_chain_tx_polarity_flip_physical{9.0}=0x1 +phy_chain_tx_polarity_flip_physical{10.0}=0x0 +phy_chain_tx_polarity_flip_physical{11.0}=0x1 +phy_chain_tx_polarity_flip_physical{12.0}=0x1 +phy_chain_tx_polarity_flip_physical{13.0}=0x0 +phy_chain_tx_polarity_flip_physical{14.0}=0x0 +phy_chain_tx_polarity_flip_physical{15.0}=0x1 +phy_chain_tx_polarity_flip_physical{16.0}=0x0 +phy_chain_tx_polarity_flip_physical{17.0}=0x1 +phy_chain_tx_polarity_flip_physical{18.0}=0x0 +phy_chain_tx_polarity_flip_physical{19.0}=0x0 +phy_chain_tx_polarity_flip_physical{20.0}=0x1 +phy_chain_tx_polarity_flip_physical{21.0}=0x0 +phy_chain_tx_polarity_flip_physical{22.0}=0x1 +phy_chain_tx_polarity_flip_physical{23.0}=0x1 +phy_chain_tx_polarity_flip_physical{24.0}=0x0 +phy_chain_tx_polarity_flip_physical{25.0}=0x1 +phy_chain_tx_polarity_flip_physical{26.0}=0x0 +phy_chain_tx_polarity_flip_physical{27.0}=0x0 +phy_chain_tx_polarity_flip_physical{28.0}=0x1 +phy_chain_tx_polarity_flip_physical{29.0}=0x0 +phy_chain_tx_polarity_flip_physical{30.0}=0x1 +phy_chain_tx_polarity_flip_physical{31.0}=0x1 +phy_chain_tx_polarity_flip_physical{32.0}=0x0 +phy_chain_tx_polarity_flip_physical{33.0}=0x0 +phy_chain_tx_polarity_flip_physical{34.0}=0x0 +phy_chain_tx_polarity_flip_physical{35.0}=0x0 +phy_chain_tx_polarity_flip_physical{36.0}=0x1 +phy_chain_tx_polarity_flip_physical{37.0}=0x1 +phy_chain_tx_polarity_flip_physical{38.0}=0x1 +phy_chain_tx_polarity_flip_physical{39.0}=0x1 +phy_chain_tx_polarity_flip_physical{40.0}=0x0 +phy_chain_tx_polarity_flip_physical{41.0}=0x0 +phy_chain_tx_polarity_flip_physical{42.0}=0x0 +phy_chain_tx_polarity_flip_physical{43.0}=0x1 +phy_chain_tx_polarity_flip_physical{44.0}=0x1 +phy_chain_tx_polarity_flip_physical{45.0}=0x0 +phy_chain_tx_polarity_flip_physical{46.0}=0x0 +phy_chain_tx_polarity_flip_physical{47.0}=0x1 +phy_chain_tx_polarity_flip_physical{48.0}=0x1 +phy_chain_tx_polarity_flip_physical{49.0}=0x1 +phy_chain_tx_polarity_flip_physical{50.0}=0x1 +phy_chain_tx_polarity_flip_physical{51.0}=0x1 +phy_chain_tx_polarity_flip_physical{52.0}=0x1 +phy_chain_tx_polarity_flip_physical{53.0}=0x0 +phy_chain_tx_polarity_flip_physical{54.0}=0x0 +phy_chain_tx_polarity_flip_physical{55.0}=0x1 +phy_chain_tx_polarity_flip_physical{56.0}=0x1 +phy_chain_tx_polarity_flip_physical{57.0}=0x0 +phy_chain_tx_polarity_flip_physical{58.0}=0x1 +phy_chain_tx_polarity_flip_physical{59.0}=0x0 +phy_chain_tx_polarity_flip_physical{60.0}=0x1 +phy_chain_tx_polarity_flip_physical{61.0}=0x0 +phy_chain_tx_polarity_flip_physical{62.0}=0x0 +phy_chain_tx_polarity_flip_physical{63.0}=0x1 +phy_chain_tx_polarity_flip_physical{64.0}=0x1 +phy_chain_tx_polarity_flip_physical{65.0}=0x1 +phy_chain_tx_polarity_flip_physical{66.0}=0x1 +phy_chain_tx_polarity_flip_physical{67.0}=0x0 +phy_chain_tx_polarity_flip_physical{68.0}=0x0 +phy_chain_tx_polarity_flip_physical{69.0}=0x0 +phy_chain_tx_polarity_flip_physical{70.0}=0x0 +phy_chain_tx_polarity_flip_physical{71.0}=0x1 +phy_chain_tx_polarity_flip_physical{72.0}=0x1 +phy_chain_tx_polarity_flip_physical{73.0}=0x0 +phy_chain_tx_polarity_flip_physical{74.0}=0x1 +phy_chain_tx_polarity_flip_physical{75.0}=0x0 +phy_chain_tx_polarity_flip_physical{76.0}=0x1 +phy_chain_tx_polarity_flip_physical{77.0}=0x0 +phy_chain_tx_polarity_flip_physical{78.0}=0x0 +phy_chain_tx_polarity_flip_physical{79.0}=0x1 +phy_chain_tx_polarity_flip_physical{80.0}=0x1 +phy_chain_tx_polarity_flip_physical{81.0}=0x1 +phy_chain_tx_polarity_flip_physical{82.0}=0x1 +phy_chain_tx_polarity_flip_physical{83.0}=0x0 +phy_chain_tx_polarity_flip_physical{84.0}=0x0 +phy_chain_tx_polarity_flip_physical{85.0}=0x0 +phy_chain_tx_polarity_flip_physical{86.0}=0x0 +phy_chain_tx_polarity_flip_physical{87.0}=0x1 +phy_chain_tx_polarity_flip_physical{88.0}=0x1 +phy_chain_tx_polarity_flip_physical{89.0}=0x0 +phy_chain_tx_polarity_flip_physical{90.0}=0x1 +phy_chain_tx_polarity_flip_physical{91.0}=0x0 +phy_chain_tx_polarity_flip_physical{92.0}=0x1 +phy_chain_tx_polarity_flip_physical{93.0}=0x0 +phy_chain_tx_polarity_flip_physical{94.0}=0x0 +phy_chain_tx_polarity_flip_physical{95.0}=0x1 +phy_chain_tx_polarity_flip_physical{96.0}=0x1 +phy_chain_tx_polarity_flip_physical{97.0}=0x0 +phy_chain_tx_polarity_flip_physical{98.0}=0x0 +phy_chain_tx_polarity_flip_physical{99.0}=0x0 +phy_chain_tx_polarity_flip_physical{100.0}=0x0 +phy_chain_tx_polarity_flip_physical{101.0}=0x1 +phy_chain_tx_polarity_flip_physical{102.0}=0x1 +phy_chain_tx_polarity_flip_physical{103.0}=0x1 +phy_chain_tx_polarity_flip_physical{104.0}=0x0 +phy_chain_tx_polarity_flip_physical{105.0}=0x1 +phy_chain_tx_polarity_flip_physical{106.0}=0x0 +phy_chain_tx_polarity_flip_physical{107.0}=0x0 +phy_chain_tx_polarity_flip_physical{108.0}=0x1 +phy_chain_tx_polarity_flip_physical{109.0}=0x1 +phy_chain_tx_polarity_flip_physical{110.0}=0x0 +phy_chain_tx_polarity_flip_physical{111.0}=0x1 +phy_chain_tx_polarity_flip_physical{112.0}=0x0 +phy_chain_tx_polarity_flip_physical{113.0}=0x0 +phy_chain_tx_polarity_flip_physical{114.0}=0x1 +phy_chain_tx_polarity_flip_physical{115.0}=0x0 +phy_chain_tx_polarity_flip_physical{116.0}=0x0 +phy_chain_tx_polarity_flip_physical{117.0}=0x1 +phy_chain_tx_polarity_flip_physical{118.0}=0x0 +phy_chain_tx_polarity_flip_physical{119.0}=0x0 +phy_chain_tx_polarity_flip_physical{120.0}=0x0 +phy_chain_tx_polarity_flip_physical{121.0}=0x0 +phy_chain_tx_polarity_flip_physical{122.0}=0x0 +phy_chain_tx_polarity_flip_physical{123.0}=0x1 +phy_chain_tx_polarity_flip_physical{124.0}=0x1 +phy_chain_tx_polarity_flip_physical{125.0}=0x1 +phy_chain_tx_polarity_flip_physical{126.0}=0x1 +phy_chain_tx_polarity_flip_physical{127.0}=0x0 +phy_chain_tx_polarity_flip_physical{128.0}=0x0 +phy_chain_tx_polarity_flip_physical{129.0}=0x0 +phy_chain_tx_polarity_flip_physical{130.0}=0x1 +phy_chain_tx_polarity_flip_physical{131.0}=0x0 +phy_chain_tx_polarity_flip_physical{132.0}=0x0 +phy_chain_tx_polarity_flip_physical{133.0}=0x1 +phy_chain_tx_polarity_flip_physical{134.0}=0x0 +phy_chain_tx_polarity_flip_physical{135.0}=0x0 +phy_chain_tx_polarity_flip_physical{136.0}=0x0 +phy_chain_tx_polarity_flip_physical{137.0}=0x0 +phy_chain_tx_polarity_flip_physical{138.0}=0x0 +phy_chain_tx_polarity_flip_physical{139.0}=0x1 +phy_chain_tx_polarity_flip_physical{140.0}=0x1 +phy_chain_tx_polarity_flip_physical{141.0}=0x1 +phy_chain_tx_polarity_flip_physical{142.0}=0x1 +phy_chain_tx_polarity_flip_physical{143.0}=0x0 +phy_chain_tx_polarity_flip_physical{144.0}=0x0 +phy_chain_tx_polarity_flip_physical{145.0}=0x0 +phy_chain_tx_polarity_flip_physical{146.0}=0x1 +phy_chain_tx_polarity_flip_physical{147.0}=0x0 +phy_chain_tx_polarity_flip_physical{148.0}=0x0 +phy_chain_tx_polarity_flip_physical{149.0}=0x1 +phy_chain_tx_polarity_flip_physical{150.0}=0x0 +phy_chain_tx_polarity_flip_physical{151.0}=0x0 +phy_chain_tx_polarity_flip_physical{152.0}=0x0 +phy_chain_tx_polarity_flip_physical{153.0}=0x0 +phy_chain_tx_polarity_flip_physical{154.0}=0x0 +phy_chain_tx_polarity_flip_physical{155.0}=0x0 +phy_chain_tx_polarity_flip_physical{156.0}=0x1 +phy_chain_tx_polarity_flip_physical{157.0}=0x0 +phy_chain_tx_polarity_flip_physical{158.0}=0x1 +phy_chain_tx_polarity_flip_physical{159.0}=0x1 +phy_chain_tx_polarity_flip_physical{160.0}=0x0 +phy_chain_tx_polarity_flip_physical{161.0}=0x0 +phy_chain_tx_polarity_flip_physical{162.0}=0x1 +phy_chain_tx_polarity_flip_physical{163.0}=0x1 +phy_chain_tx_polarity_flip_physical{164.0}=0x0 +phy_chain_tx_polarity_flip_physical{165.0}=0x0 +phy_chain_tx_polarity_flip_physical{166.0}=0x0 +phy_chain_tx_polarity_flip_physical{167.0}=0x0 +phy_chain_tx_polarity_flip_physical{168.0}=0x0 +phy_chain_tx_polarity_flip_physical{169.0}=0x1 +phy_chain_tx_polarity_flip_physical{170.0}=0x0 +phy_chain_tx_polarity_flip_physical{171.0}=0x0 +phy_chain_tx_polarity_flip_physical{172.0}=0x1 +phy_chain_tx_polarity_flip_physical{173.0}=0x0 +phy_chain_tx_polarity_flip_physical{174.0}=0x1 +phy_chain_tx_polarity_flip_physical{175.0}=0x1 +phy_chain_tx_polarity_flip_physical{176.0}=0x0 +phy_chain_tx_polarity_flip_physical{177.0}=0x0 +phy_chain_tx_polarity_flip_physical{178.0}=0x1 +phy_chain_tx_polarity_flip_physical{179.0}=0x1 +phy_chain_tx_polarity_flip_physical{180.0}=0x0 +phy_chain_tx_polarity_flip_physical{181.0}=0x0 +phy_chain_tx_polarity_flip_physical{182.0}=0x0 +phy_chain_tx_polarity_flip_physical{183.0}=0x0 +phy_chain_tx_polarity_flip_physical{184.0}=0x0 +phy_chain_tx_polarity_flip_physical{185.0}=0x1 +phy_chain_tx_polarity_flip_physical{186.0}=0x0 +phy_chain_tx_polarity_flip_physical{187.0}=0x0 +phy_chain_tx_polarity_flip_physical{188.0}=0x1 +phy_chain_tx_polarity_flip_physical{189.0}=0x0 +phy_chain_tx_polarity_flip_physical{190.0}=0x1 +phy_chain_tx_polarity_flip_physical{191.0}=0x1 +phy_chain_tx_polarity_flip_physical{192.0}=0x0 +phy_chain_tx_polarity_flip_physical{193.0}=0x0 +phy_chain_tx_polarity_flip_physical{194.0}=0x1 +phy_chain_tx_polarity_flip_physical{195.0}=0x1 +phy_chain_tx_polarity_flip_physical{196.0}=0x0 +phy_chain_tx_polarity_flip_physical{197.0}=0x0 +phy_chain_tx_polarity_flip_physical{198.0}=0x0 +phy_chain_tx_polarity_flip_physical{199.0}=0x0 +phy_chain_tx_polarity_flip_physical{200.0}=0x0 +phy_chain_tx_polarity_flip_physical{201.0}=0x1 +phy_chain_tx_polarity_flip_physical{202.0}=0x0 +phy_chain_tx_polarity_flip_physical{203.0}=0x0 +phy_chain_tx_polarity_flip_physical{204.0}=0x1 +phy_chain_tx_polarity_flip_physical{205.0}=0x0 +phy_chain_tx_polarity_flip_physical{206.0}=0x1 +phy_chain_tx_polarity_flip_physical{207.0}=0x1 +phy_chain_tx_polarity_flip_physical{208.0}=0x0 +phy_chain_tx_polarity_flip_physical{209.0}=0x0 +phy_chain_tx_polarity_flip_physical{210.0}=0x1 +phy_chain_tx_polarity_flip_physical{211.0}=0x1 +phy_chain_tx_polarity_flip_physical{212.0}=0x0 +phy_chain_tx_polarity_flip_physical{213.0}=0x0 +phy_chain_tx_polarity_flip_physical{214.0}=0x0 +phy_chain_tx_polarity_flip_physical{215.0}=0x0 +phy_chain_tx_polarity_flip_physical{216.0}=0x0 +phy_chain_tx_polarity_flip_physical{217.0}=0x0 +phy_chain_tx_polarity_flip_physical{218.0}=0x1 +phy_chain_tx_polarity_flip_physical{219.0}=0x0 +phy_chain_tx_polarity_flip_physical{220.0}=0x1 +phy_chain_tx_polarity_flip_physical{221.0}=0x0 +phy_chain_tx_polarity_flip_physical{222.0}=0x1 +phy_chain_tx_polarity_flip_physical{223.0}=0x1 +phy_chain_tx_polarity_flip_physical{224.0}=0x0 +phy_chain_tx_polarity_flip_physical{225.0}=0x0 +phy_chain_tx_polarity_flip_physical{226.0}=0x1 +phy_chain_tx_polarity_flip_physical{227.0}=0x1 +phy_chain_tx_polarity_flip_physical{228.0}=0x0 +phy_chain_tx_polarity_flip_physical{229.0}=0x0 +phy_chain_tx_polarity_flip_physical{230.0}=0x1 +phy_chain_tx_polarity_flip_physical{231.0}=0x1 +phy_chain_tx_polarity_flip_physical{232.0}=0x0 +phy_chain_tx_polarity_flip_physical{233.0}=0x0 +phy_chain_tx_polarity_flip_physical{234.0}=0x1 +phy_chain_tx_polarity_flip_physical{235.0}=0x1 +phy_chain_tx_polarity_flip_physical{236.0}=0x0 +phy_chain_tx_polarity_flip_physical{237.0}=0x1 +phy_chain_tx_polarity_flip_physical{238.0}=0x1 +phy_chain_tx_polarity_flip_physical{239.0}=0x0 +phy_chain_tx_polarity_flip_physical{240.0}=0x0 +phy_chain_tx_polarity_flip_physical{241.0}=0x0 +phy_chain_tx_polarity_flip_physical{242.0}=0x1 +phy_chain_tx_polarity_flip_physical{243.0}=0x1 +phy_chain_tx_polarity_flip_physical{244.0}=0x0 +phy_chain_tx_polarity_flip_physical{245.0}=0x0 +phy_chain_tx_polarity_flip_physical{246.0}=0x0 +phy_chain_tx_polarity_flip_physical{247.0}=0x1 +phy_chain_tx_polarity_flip_physical{248.0}=0x1 +phy_chain_tx_polarity_flip_physical{249.0}=0x1 +phy_chain_tx_polarity_flip_physical{250.0}=0x1 +phy_chain_tx_polarity_flip_physical{251.0}=0x0 +phy_chain_tx_polarity_flip_physical{252.0}=0x0 +phy_chain_tx_polarity_flip_physical{253.0}=0x0 +phy_chain_tx_polarity_flip_physical{254.0}=0x0 +phy_chain_tx_polarity_flip_physical{255.0}=0x1 +phy_chain_tx_polarity_flip_physical{256.0}=0x1 +phy_chain_tx_polarity_flip_physical{257.0}=0x0 +phy_chain_tx_polarity_flip_physical{258.0}=0x0 +portmap_1.0=1:400 +portmap_5.0=9:400 +portmap_9.0=17:400 +portmap_13.0=25:400 +portmap_20.0=33:400 +portmap_24.0=41:400 +portmap_28.0=49:400 +portmap_32.0=57:400 +portmap_38.0=257:10 +portmap_40.0=65:400 +portmap_44.0=73:400 +portmap_48.0=81:400 +portmap_52.0=89:400 +portmap_60.0=97:400 +portmap_64.0=105:400 +portmap_68.0=113:400 +portmap_72.0=121:400 +portmap_80.0=129:400 +portmap_84.0=137:400 +portmap_88.0=145:400 +portmap_92.0=153:400 +portmap_100.0=161:400 +portmap_104.0=169:400 +portmap_108.0=177:400 +portmap_112.0=185:400 +portmap_118.0=258:10 +portmap_120.0=193:400 +portmap_124.0=201:400 +portmap_128.0=209:400 +portmap_132.0=217:400 +portmap_140.0=225:400 +portmap_144.0=233:400 +portmap_148.0=241:400 +portmap_152.0=249:400 +port_flex_enable.0=1 +port_init_autoneg=0 +port_phy_addr=0xff +robust_hash_disable_egress_vlan.0=1 +robust_hash_disable_mpls.0=1 +robust_hash_disable_vlan.0=1 +tdma_timeout_usec.0=15000000 +tslam_timeout_usec.0=15000000 + +# Tuning +serdes_core_rx_polarity_flip_physical{1}=0x96 +serdes_core_rx_polarity_flip_physical{9}=0x69 +serdes_core_rx_polarity_flip_physical{17}=0x93 +serdes_core_rx_polarity_flip_physical{25}=0xd3 +serdes_core_rx_polarity_flip_physical{33}=0xcc +serdes_core_rx_polarity_flip_physical{41}=0xc3 +serdes_core_rx_polarity_flip_physical{49}=0x99 +serdes_core_rx_polarity_flip_physical{57}=0xc3 +serdes_core_rx_polarity_flip_physical{65}=0xcc +serdes_core_rx_polarity_flip_physical{73}=0xd2 +serdes_core_rx_polarity_flip_physical{81}=0xcc +serdes_core_rx_polarity_flip_physical{89}=0xd2 +serdes_core_rx_polarity_flip_physical{97}=0xc3 +serdes_core_rx_polarity_flip_physical{105}=0xd2 +serdes_core_rx_polarity_flip_physical{113}=0x66 +serdes_core_rx_polarity_flip_physical{121}=0xf0 +serdes_core_rx_polarity_flip_physical{129}=0x99 +serdes_core_rx_polarity_flip_physical{137}=0xc3 +serdes_core_rx_polarity_flip_physical{145}=0xcc +serdes_core_rx_polarity_flip_physical{153}=0x99 +serdes_core_rx_polarity_flip_physical{161}=0xd2 +serdes_core_rx_polarity_flip_physical{169}=0xc3 +serdes_core_rx_polarity_flip_physical{177}=0x8d +serdes_core_rx_polarity_flip_physical{185}=0xc3 +serdes_core_rx_polarity_flip_physical{193}=0x8d +serdes_core_rx_polarity_flip_physical{201}=0xc3 +serdes_core_rx_polarity_flip_physical{209}=0xcc +serdes_core_rx_polarity_flip_physical{217}=0xc3 +serdes_core_rx_polarity_flip_physical{225}=0x66 +serdes_core_rx_polarity_flip_physical{233}=0xf +serdes_core_rx_polarity_flip_physical{241}=0x69 +serdes_core_rx_polarity_flip_physical{249}=0x9a +serdes_core_rx_polarity_flip_physical{257}=0x0 +serdes_core_tx_polarity_flip_physical{1}=0xac +serdes_core_tx_polarity_flip_physical{9}=0xa9 +serdes_core_tx_polarity_flip_physical{17}=0x99 +serdes_core_tx_polarity_flip_physical{25}=0xc9 +serdes_core_tx_polarity_flip_physical{33}=0x4e +serdes_core_tx_polarity_flip_physical{41}=0x39 +serdes_core_tx_polarity_flip_physical{49}=0xd1 +serdes_core_tx_polarity_flip_physical{57}=0xb1 +serdes_core_tx_polarity_flip_physical{65}=0xf0 +serdes_core_tx_polarity_flip_physical{73}=0xb1 +serdes_core_tx_polarity_flip_physical{81}=0xf0 +serdes_core_tx_polarity_flip_physical{89}=0xb1 +serdes_core_tx_polarity_flip_physical{97}=0x6e +serdes_core_tx_polarity_flip_physical{105}=0xd8 +serdes_core_tx_polarity_flip_physical{113}=0xac +serdes_core_tx_polarity_flip_physical{121}=0x6c +serdes_core_tx_polarity_flip_physical{129}=0xac +serdes_core_tx_polarity_flip_physical{137}=0x6c +serdes_core_tx_polarity_flip_physical{145}=0xac +serdes_core_tx_polarity_flip_physical{153}=0xe9 +serdes_core_tx_polarity_flip_physical{161}=0xa9 +serdes_core_tx_polarity_flip_physical{169}=0xc9 +serdes_core_tx_polarity_flip_physical{177}=0xa9 +serdes_core_tx_polarity_flip_physical{185}=0xc9 +serdes_core_tx_polarity_flip_physical{193}=0xa9 +serdes_core_tx_polarity_flip_physical{201}=0xc9 +serdes_core_tx_polarity_flip_physical{209}=0xa9 +serdes_core_tx_polarity_flip_physical{217}=0xe1 +serdes_core_tx_polarity_flip_physical{225}=0x69 +serdes_core_tx_polarity_flip_physical{233}=0x66 +serdes_core_tx_polarity_flip_physical{241}=0xe1 +serdes_core_tx_polarity_flip_physical{249}=0xc6 +serdes_core_tx_polarity_flip_physical{257}=0x0 +serdes_tx_taps_cd0=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd1=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd2=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd3=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd4=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd5=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd6=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd7=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd8=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd9=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd10=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd11=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd12=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd13=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd14=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd15=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd16=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd17=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd18=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd19=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd20=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd21=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd22=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd23=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd24=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd25=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd26=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd27=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd28=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd29=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd30=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd31=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd32=pam4:1:34:9:0:0:0 +serdes_tx_taps_cd33=pam4:1:34:9:0:0:0 diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/hwsku.json b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/hwsku.json new file mode 100644 index 000000000000..713a01025ba8 --- /dev/null +++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/hwsku.json @@ -0,0 +1,106 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]" + }, + "Ethernet256": { + "default_brkout_mode": "1x10G" + }, + "Ethernet260": { + "default_brkout_mode": "1x10G" + } + } +} \ No newline at end of file diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/port_config.ini b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/port_config.ini new file mode 100644 index 000000000000..45ef9b7754b9 --- /dev/null +++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/port_config.ini @@ -0,0 +1,35 @@ +# name lanes alias index speed +Ethernet0 1,2,3,4,5,6,7,8 Ethernet1/1 1 400000 +Ethernet8 9,10,11,12,13,14,15,16 Ethernet2/1 2 400000 +Ethernet16 17,18,19,20,21,22,23,24 Ethernet3/1 3 400000 +Ethernet24 25,26,27,28,29,30,31,32 Ethernet4/1 4 400000 +Ethernet32 33,34,35,36,37,38,39,40 Ethernet5/1 5 400000 +Ethernet40 41,42,43,44,45,46,47,48 Ethernet6/1 6 400000 +Ethernet48 49,50,51,52,53,54,55,56 Ethernet7/1 7 400000 +Ethernet56 57,58,59,60,61,62,63,64 Ethernet8/1 8 400000 +Ethernet64 65,66,67,68,69,70,71,72 Ethernet9/1 9 400000 +Ethernet72 73,74,75,76,77,78,79,80 Ethernet10/1 10 400000 +Ethernet80 81,82,83,84,85,86,87,88 Ethernet11/1 11 400000 +Ethernet88 89,90,91,92,93,94,95,96 Ethernet12/1 12 400000 +Ethernet96 97,98,99,100,101,102,103,104 Ethernet13/1 13 400000 +Ethernet104 105,106,107,108,109,110,111,112 Ethernet14/1 14 400000 +Ethernet112 113,114,115,116,117,118,119,120 Ethernet15/1 15 400000 +Ethernet120 121,122,123,124,125,126,127,128 Ethernet16/1 16 400000 +Ethernet128 129,130,131,132,133,134,135,136 Ethernet17/1 17 400000 +Ethernet136 137,138,139,140,141,142,143,144 Ethernet18/1 18 400000 +Ethernet144 145,146,147,148,149,150,151,152 Ethernet19/1 19 400000 +Ethernet152 153,154,155,156,157,158,159,160 Ethernet20/1 20 400000 +Ethernet160 161,162,163,164,165,166,167,168 Ethernet21/1 21 400000 +Ethernet168 169,170,171,172,173,174,175,176 Ethernet22/1 22 400000 +Ethernet176 177,178,179,180,181,182,183,184 Ethernet23/1 23 400000 +Ethernet184 185,186,187,188,189,190,191,192 Ethernet24/1 24 400000 +Ethernet192 193,194,195,196,197,198,199,200 Ethernet25/1 25 400000 +Ethernet200 201,202,203,204,205,206,207,208 Ethernet26/1 26 400000 +Ethernet208 209,210,211,212,213,214,215,216 Ethernet27/1 27 400000 +Ethernet216 217,218,219,220,221,222,223,224 Ethernet28/1 28 400000 +Ethernet224 225,226,227,228,229,230,231,232 Ethernet29/1 29 400000 +Ethernet232 233,234,235,236,237,238,239,240 Ethernet30/1 30 400000 +Ethernet240 241,242,243,244,245,246,247,248 Ethernet31/1 31 400000 +Ethernet248 249,250,251,252,253,254,255,256 Ethernet32/1 32 400000 +Ethernet256 258 Ethernet33 33 10000 +Ethernet260 257 Ethernet34 34 10000 diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/sai.profile b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/sai.profile new file mode 100644 index 000000000000..0c126bab5a5f --- /dev/null +++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-32/sai.profile @@ -0,0 +1,2 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/th3-a7060px4-32-flex.config.bcm +SAI_NUM_ECMP_MEMBERS=64 diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm index 52e3424aaf55..eb2c7bc0f5fb 100644 --- a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm +++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-C64/th3-a7060px4-32-64x100G.config.bcm @@ -1,3 +1,5 @@ +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 arl_clean_timeout_usec=15000000 asf_mem_profile.0=2 bcm_num_cos.0=8 diff --git a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm index 0cf9ae8f3a65..f9e731e58823 100644 --- a/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm +++ b/device/arista/x86_64-arista_7060px4_32/Arista-7060PX4-O32/th3-a7060px4-o32-32x400G.config.bcm @@ -1,3 +1,5 @@ +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 arl_clean_timeout_usec=15000000 asf_mem_profile.0=2 bcm_num_cos.0=8 diff --git a/device/arista/x86_64-arista_7060px4_32/platform.json b/device/arista/x86_64-arista_7060px4_32/platform.json index b486b9152c06..ed46f0b72f7f 100644 --- a/device/arista/x86_64-arista_7060px4_32/platform.json +++ b/device/arista/x86_64-arista_7060px4_32/platform.json @@ -219,5 +219,632 @@ } ] }, - "interfaces": {} -} \ No newline at end of file + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet1/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/3", + "Ethernet1/5", + "Ethernet1/7" + ] + } + }, + "Ethernet8": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet2/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/3", + "Ethernet2/5", + "Ethernet2/7" + ] + } + }, + "Ethernet16": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet3/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/3", + "Ethernet3/5", + "Ethernet3/7" + ] + } + }, + "Ethernet24": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet4/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/3", + "Ethernet4/5", + "Ethernet4/7" + ] + } + }, + "Ethernet32": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet5/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/3", + "Ethernet5/5", + "Ethernet5/7" + ] + } + }, + "Ethernet40": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet6/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/3", + "Ethernet6/5", + "Ethernet6/7" + ] + } + }, + "Ethernet48": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet7/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/3", + "Ethernet7/5", + "Ethernet7/7" + ] + } + }, + "Ethernet56": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet8/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/3", + "Ethernet8/5", + "Ethernet8/7" + ] + } + }, + "Ethernet64": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet9/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/3", + "Ethernet9/5", + "Ethernet9/7" + ] + } + }, + "Ethernet72": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet10/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/3", + "Ethernet10/5", + "Ethernet10/7" + ] + } + }, + "Ethernet80": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet11/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/3", + "Ethernet11/5", + "Ethernet11/7" + ] + } + }, + "Ethernet88": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet12/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/3", + "Ethernet12/5", + "Ethernet12/7" + ] + } + }, + "Ethernet96": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet13/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/3", + "Ethernet13/5", + "Ethernet13/7" + ] + } + }, + "Ethernet104": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet14/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/3", + "Ethernet14/5", + "Ethernet14/7" + ] + } + }, + "Ethernet112": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet15/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/3", + "Ethernet15/5", + "Ethernet15/7" + ] + } + }, + "Ethernet120": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet16/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/3", + "Ethernet16/5", + "Ethernet16/7" + ] + } + }, + "Ethernet128": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet17/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/3", + "Ethernet17/5", + "Ethernet17/7" + ] + } + }, + "Ethernet136": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "137,138,139,140,141,142,143,144", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet18/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/3", + "Ethernet18/5", + "Ethernet18/7" + ] + } + }, + "Ethernet144": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "145,146,147,148,149,150,151,152", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet19/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/3", + "Ethernet19/5", + "Ethernet19/7" + ] + } + }, + "Ethernet152": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "153,154,155,156,157,158,159,160", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet20/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/3", + "Ethernet20/5", + "Ethernet20/7" + ] + } + }, + "Ethernet160": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "161,162,163,164,165,166,167,168", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet21/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/3", + "Ethernet21/5", + "Ethernet21/7" + ] + } + }, + "Ethernet168": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "169,170,171,172,173,174,175,176", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet22/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/3", + "Ethernet22/5", + "Ethernet22/7" + ] + } + }, + "Ethernet176": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "177,178,179,180,181,182,183,184", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet23/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/3", + "Ethernet23/5", + "Ethernet23/7" + ] + } + }, + "Ethernet184": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "185,186,187,188,189,190,191,192", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet24/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/3", + "Ethernet24/5", + "Ethernet24/7" + ] + } + }, + "Ethernet192": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "193,194,195,196,197,198,199,200", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet25/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/3", + "Ethernet25/5", + "Ethernet25/7" + ] + } + }, + "Ethernet200": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "201,202,203,204,205,206,207,208", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet26/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/3", + "Ethernet26/5", + "Ethernet26/7" + ] + } + }, + "Ethernet208": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "209,210,211,212,213,214,215,216", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet27/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/3", + "Ethernet27/5", + "Ethernet27/7" + ] + } + }, + "Ethernet216": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "217,218,219,220,221,222,223,224", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet28/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/3", + "Ethernet28/5", + "Ethernet28/7" + ] + } + }, + "Ethernet224": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "225,226,227,228,229,230,231,232", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet29/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/3", + "Ethernet29/5", + "Ethernet29/7" + ] + } + }, + "Ethernet232": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "233,234,235,236,237,238,239,240", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet30/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/3", + "Ethernet30/5", + "Ethernet30/7" + ] + } + }, + "Ethernet240": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "241,242,243,244,245,246,247,248", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet31/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/3", + "Ethernet31/5", + "Ethernet31/7" + ] + } + }, + "Ethernet248": { + "index": "32,32,32,32,32,32,32,32", + "lanes": "249,250,251,252,253,254,255,256", + "breakout_modes": { + "1x400G[200G,100G,50G,40G,25G,10G]": [ + "Ethernet32/1" + ], + "2x200G[100G,50G,40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/5" + ], + "4x100G[50G,40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/3", + "Ethernet32/5", + "Ethernet32/7" + ] + } + }, + "Ethernet256": { + "index": "33", + "lanes": "258", + "breakout_modes": { + "1x10G": [ + "Ethernet33" + ] + } + }, + "Ethernet260": { + "index": "34", + "lanes": "257", + "breakout_modes": { + "1x10G": [ + "Ethernet34" + ] + } + } + } +} diff --git a/device/arista/x86_64-arista_7060px4_32/th3-a7060px4-32-flex.config.bcm b/device/arista/x86_64-arista_7060px4_32/th3-a7060px4-32-flex.config.bcm new file mode 100644 index 000000000000..b7018cf7c46f --- /dev/null +++ b/device/arista/x86_64-arista_7060px4_32/th3-a7060px4-32-flex.config.bcm @@ -0,0 +1,752 @@ +arl_clean_timeout_usec=15000000 +asf_mem_profile.0=2 +bcm_num_cos.0=8 +bcm_stat_flags=1 +bcm_stat_jumbo.0=9236 +cdma_timeout_usec.0=15000000 +disable_pcie_firmware_check.0=1 +dma_desc_timeout_usec.0=15000000 +dpr_clock_frequency.0=1000 +l2xmsg_mode.0=1 +l2_mem_entries.0=8192 +l3_alpm_enable.0=2 +l3_mem_entries.0=16384 +max_vp_lags.0=0 +miim_intr_enable.0=0 +module_64ports.0=1 +multicast_l2_range.0=511 +oversubscribe_mode=1 +parity_correction=1 +parity_enable=1 +pbmp_xport_xe.0=0x3ffffffffffffffffffffffffffffffffffffffe +phy_an_c37_38.0=2 +phy_an_c37_118.0=2 +phy_an_c73=1 +phy_an_c73_38.0=0 +phy_an_c73_118.0=0 +phy_chain_rx_lane_map_physical{1.0}=0x72634150 +phy_chain_rx_lane_map_physical{9.0}=0x63725041 +phy_chain_rx_lane_map_physical{17.0}=0x23071465 +phy_chain_rx_lane_map_physical{25.0}=0x03125746 +phy_chain_rx_lane_map_physical{33.0}=0x12063574 +phy_chain_rx_lane_map_physical{41.0}=0x03125647 +phy_chain_rx_lane_map_physical{49.0}=0x12053467 +phy_chain_rx_lane_map_physical{57.0}=0x03125647 +phy_chain_rx_lane_map_physical{65.0}=0x12043576 +phy_chain_rx_lane_map_physical{73.0}=0x03125746 +phy_chain_rx_lane_map_physical{81.0}=0x12043576 +phy_chain_rx_lane_map_physical{89.0}=0x03125746 +phy_chain_rx_lane_map_physical{97.0}=0x40165327 +phy_chain_rx_lane_map_physical{105.0}=0x56470213 +phy_chain_rx_lane_map_physical{113.0}=0x21340576 +phy_chain_rx_lane_map_physical{121.0}=0x47562130 +phy_chain_rx_lane_map_physical{129.0}=0x56437201 +phy_chain_rx_lane_map_physical{137.0}=0x03125647 +phy_chain_rx_lane_map_physical{145.0}=0x12043576 +phy_chain_rx_lane_map_physical{153.0}=0x54106723 +phy_chain_rx_lane_map_physical{161.0}=0x63257014 +phy_chain_rx_lane_map_physical{169.0}=0x03125647 +phy_chain_rx_lane_map_physical{177.0}=0x12043567 +phy_chain_rx_lane_map_physical{185.0}=0x03125647 +phy_chain_rx_lane_map_physical{193.0}=0x12043567 +phy_chain_rx_lane_map_physical{201.0}=0x03125647 +phy_chain_rx_lane_map_physical{209.0}=0x12043576 +phy_chain_rx_lane_map_physical{217.0}=0x03125467 +phy_chain_rx_lane_map_physical{225.0}=0x12073465 +phy_chain_rx_lane_map_physical{233.0}=0x30215647 +phy_chain_rx_lane_map_physical{241.0}=0x23071564 +phy_chain_rx_lane_map_physical{249.0}=0x72634150 +phy_chain_rx_lane_map_physical{257.0}=0x3210 +phy_chain_rx_polarity_flip_physical{1.0}=0x1 +phy_chain_rx_polarity_flip_physical{2.0}=0x0 +phy_chain_rx_polarity_flip_physical{3.0}=0x0 +phy_chain_rx_polarity_flip_physical{4.0}=0x1 +phy_chain_rx_polarity_flip_physical{5.0}=0x0 +phy_chain_rx_polarity_flip_physical{6.0}=0x1 +phy_chain_rx_polarity_flip_physical{7.0}=0x1 +phy_chain_rx_polarity_flip_physical{8.0}=0x0 +phy_chain_rx_polarity_flip_physical{9.0}=0x1 +phy_chain_rx_polarity_flip_physical{10.0}=0x0 +phy_chain_rx_polarity_flip_physical{11.0}=0x0 +phy_chain_rx_polarity_flip_physical{12.0}=0x1 +phy_chain_rx_polarity_flip_physical{13.0}=0x0 +phy_chain_rx_polarity_flip_physical{14.0}=0x1 +phy_chain_rx_polarity_flip_physical{15.0}=0x1 +phy_chain_rx_polarity_flip_physical{16.0}=0x0 +phy_chain_rx_polarity_flip_physical{17.0}=0x0 +phy_chain_rx_polarity_flip_physical{18.0}=0x0 +phy_chain_rx_polarity_flip_physical{19.0}=0x1 +phy_chain_rx_polarity_flip_physical{20.0}=0x0 +phy_chain_rx_polarity_flip_physical{21.0}=0x0 +phy_chain_rx_polarity_flip_physical{22.0}=0x1 +phy_chain_rx_polarity_flip_physical{23.0}=0x1 +phy_chain_rx_polarity_flip_physical{24.0}=0x1 +phy_chain_rx_polarity_flip_physical{25.0}=0x0 +phy_chain_rx_polarity_flip_physical{26.0}=0x1 +phy_chain_rx_polarity_flip_physical{27.0}=0x0 +phy_chain_rx_polarity_flip_physical{28.0}=0x0 +phy_chain_rx_polarity_flip_physical{29.0}=0x0 +phy_chain_rx_polarity_flip_physical{30.0}=0x1 +phy_chain_rx_polarity_flip_physical{31.0}=0x1 +phy_chain_rx_polarity_flip_physical{32.0}=0x0 +phy_chain_rx_polarity_flip_physical{33.0}=0x1 +phy_chain_rx_polarity_flip_physical{34.0}=0x1 +phy_chain_rx_polarity_flip_physical{35.0}=0x0 +phy_chain_rx_polarity_flip_physical{36.0}=0x0 +phy_chain_rx_polarity_flip_physical{37.0}=0x1 +phy_chain_rx_polarity_flip_physical{38.0}=0x1 +phy_chain_rx_polarity_flip_physical{39.0}=0x0 +phy_chain_rx_polarity_flip_physical{40.0}=0x0 +phy_chain_rx_polarity_flip_physical{41.0}=0x0 +phy_chain_rx_polarity_flip_physical{42.0}=0x1 +phy_chain_rx_polarity_flip_physical{43.0}=0x1 +phy_chain_rx_polarity_flip_physical{44.0}=0x0 +phy_chain_rx_polarity_flip_physical{45.0}=0x0 +phy_chain_rx_polarity_flip_physical{46.0}=0x1 +phy_chain_rx_polarity_flip_physical{47.0}=0x1 +phy_chain_rx_polarity_flip_physical{48.0}=0x0 +phy_chain_rx_polarity_flip_physical{49.0}=0x0 +phy_chain_rx_polarity_flip_physical{50.0}=0x0 +phy_chain_rx_polarity_flip_physical{51.0}=0x1 +phy_chain_rx_polarity_flip_physical{52.0}=0x0 +phy_chain_rx_polarity_flip_physical{53.0}=0x0 +phy_chain_rx_polarity_flip_physical{54.0}=0x1 +phy_chain_rx_polarity_flip_physical{55.0}=0x0 +phy_chain_rx_polarity_flip_physical{56.0}=0x0 +phy_chain_rx_polarity_flip_physical{57.0}=0x0 +phy_chain_rx_polarity_flip_physical{58.0}=0x1 +phy_chain_rx_polarity_flip_physical{59.0}=0x1 +phy_chain_rx_polarity_flip_physical{60.0}=0x0 +phy_chain_rx_polarity_flip_physical{61.0}=0x0 +phy_chain_rx_polarity_flip_physical{62.0}=0x1 +phy_chain_rx_polarity_flip_physical{63.0}=0x1 +phy_chain_rx_polarity_flip_physical{64.0}=0x0 +phy_chain_rx_polarity_flip_physical{65.0}=0x1 +phy_chain_rx_polarity_flip_physical{66.0}=0x1 +phy_chain_rx_polarity_flip_physical{67.0}=0x0 +phy_chain_rx_polarity_flip_physical{68.0}=0x0 +phy_chain_rx_polarity_flip_physical{69.0}=0x1 +phy_chain_rx_polarity_flip_physical{70.0}=0x1 +phy_chain_rx_polarity_flip_physical{71.0}=0x0 +phy_chain_rx_polarity_flip_physical{72.0}=0x0 +phy_chain_rx_polarity_flip_physical{73.0}=0x1 +phy_chain_rx_polarity_flip_physical{74.0}=0x1 +phy_chain_rx_polarity_flip_physical{75.0}=0x0 +phy_chain_rx_polarity_flip_physical{76.0}=0x0 +phy_chain_rx_polarity_flip_physical{77.0}=0x0 +phy_chain_rx_polarity_flip_physical{78.0}=0x1 +phy_chain_rx_polarity_flip_physical{79.0}=0x1 +phy_chain_rx_polarity_flip_physical{80.0}=0x0 +phy_chain_rx_polarity_flip_physical{81.0}=0x1 +phy_chain_rx_polarity_flip_physical{82.0}=0x1 +phy_chain_rx_polarity_flip_physical{83.0}=0x0 +phy_chain_rx_polarity_flip_physical{84.0}=0x0 +phy_chain_rx_polarity_flip_physical{85.0}=0x1 +phy_chain_rx_polarity_flip_physical{86.0}=0x1 +phy_chain_rx_polarity_flip_physical{87.0}=0x0 +phy_chain_rx_polarity_flip_physical{88.0}=0x0 +phy_chain_rx_polarity_flip_physical{89.0}=0x1 +phy_chain_rx_polarity_flip_physical{90.0}=0x1 +phy_chain_rx_polarity_flip_physical{91.0}=0x0 +phy_chain_rx_polarity_flip_physical{92.0}=0x0 +phy_chain_rx_polarity_flip_physical{93.0}=0x0 +phy_chain_rx_polarity_flip_physical{94.0}=0x1 +phy_chain_rx_polarity_flip_physical{95.0}=0x1 +phy_chain_rx_polarity_flip_physical{96.0}=0x0 +phy_chain_rx_polarity_flip_physical{97.0}=0x0 +phy_chain_rx_polarity_flip_physical{98.0}=0x1 +phy_chain_rx_polarity_flip_physical{99.0}=0x1 +phy_chain_rx_polarity_flip_physical{100.0}=0x1 +phy_chain_rx_polarity_flip_physical{101.0}=0x1 +phy_chain_rx_polarity_flip_physical{102.0}=0x0 +phy_chain_rx_polarity_flip_physical{103.0}=0x0 +phy_chain_rx_polarity_flip_physical{104.0}=0x0 +phy_chain_rx_polarity_flip_physical{105.0}=0x1 +phy_chain_rx_polarity_flip_physical{106.0}=0x1 +phy_chain_rx_polarity_flip_physical{107.0}=0x0 +phy_chain_rx_polarity_flip_physical{108.0}=0x0 +phy_chain_rx_polarity_flip_physical{109.0}=0x0 +phy_chain_rx_polarity_flip_physical{110.0}=0x1 +phy_chain_rx_polarity_flip_physical{111.0}=0x1 +phy_chain_rx_polarity_flip_physical{112.0}=0x0 +phy_chain_rx_polarity_flip_physical{113.0}=0x1 +phy_chain_rx_polarity_flip_physical{114.0}=0x1 +phy_chain_rx_polarity_flip_physical{115.0}=0x0 +phy_chain_rx_polarity_flip_physical{116.0}=0x1 +phy_chain_rx_polarity_flip_physical{117.0}=0x1 +phy_chain_rx_polarity_flip_physical{118.0}=0x0 +phy_chain_rx_polarity_flip_physical{119.0}=0x1 +phy_chain_rx_polarity_flip_physical{120.0}=0x1 +phy_chain_rx_polarity_flip_physical{121.0}=0x1 +phy_chain_rx_polarity_flip_physical{122.0}=0x0 +phy_chain_rx_polarity_flip_physical{123.0}=0x0 +phy_chain_rx_polarity_flip_physical{124.0}=0x1 +phy_chain_rx_polarity_flip_physical{125.0}=0x0 +phy_chain_rx_polarity_flip_physical{126.0}=0x1 +phy_chain_rx_polarity_flip_physical{127.0}=0x1 +phy_chain_rx_polarity_flip_physical{128.0}=0x0 +phy_chain_rx_polarity_flip_physical{129.0}=0x0 +phy_chain_rx_polarity_flip_physical{130.0}=0x0 +phy_chain_rx_polarity_flip_physical{131.0}=0x1 +phy_chain_rx_polarity_flip_physical{132.0}=0x0 +phy_chain_rx_polarity_flip_physical{133.0}=0x0 +phy_chain_rx_polarity_flip_physical{134.0}=0x1 +phy_chain_rx_polarity_flip_physical{135.0}=0x0 +phy_chain_rx_polarity_flip_physical{136.0}=0x0 +phy_chain_rx_polarity_flip_physical{137.0}=0x0 +phy_chain_rx_polarity_flip_physical{138.0}=0x1 +phy_chain_rx_polarity_flip_physical{139.0}=0x1 +phy_chain_rx_polarity_flip_physical{140.0}=0x0 +phy_chain_rx_polarity_flip_physical{141.0}=0x0 +phy_chain_rx_polarity_flip_physical{142.0}=0x1 +phy_chain_rx_polarity_flip_physical{143.0}=0x1 +phy_chain_rx_polarity_flip_physical{144.0}=0x0 +phy_chain_rx_polarity_flip_physical{145.0}=0x1 +phy_chain_rx_polarity_flip_physical{146.0}=0x1 +phy_chain_rx_polarity_flip_physical{147.0}=0x0 +phy_chain_rx_polarity_flip_physical{148.0}=0x0 +phy_chain_rx_polarity_flip_physical{149.0}=0x1 +phy_chain_rx_polarity_flip_physical{150.0}=0x1 +phy_chain_rx_polarity_flip_physical{151.0}=0x0 +phy_chain_rx_polarity_flip_physical{152.0}=0x0 +phy_chain_rx_polarity_flip_physical{153.0}=0x0 +phy_chain_rx_polarity_flip_physical{154.0}=0x1 +phy_chain_rx_polarity_flip_physical{155.0}=0x0 +phy_chain_rx_polarity_flip_physical{156.0}=0x1 +phy_chain_rx_polarity_flip_physical{157.0}=0x1 +phy_chain_rx_polarity_flip_physical{158.0}=0x0 +phy_chain_rx_polarity_flip_physical{159.0}=0x1 +phy_chain_rx_polarity_flip_physical{160.0}=0x0 +phy_chain_rx_polarity_flip_physical{161.0}=0x1 +phy_chain_rx_polarity_flip_physical{162.0}=0x1 +phy_chain_rx_polarity_flip_physical{163.0}=0x1 +phy_chain_rx_polarity_flip_physical{164.0}=0x1 +phy_chain_rx_polarity_flip_physical{165.0}=0x0 +phy_chain_rx_polarity_flip_physical{166.0}=0x0 +phy_chain_rx_polarity_flip_physical{167.0}=0x0 +phy_chain_rx_polarity_flip_physical{168.0}=0x0 +phy_chain_rx_polarity_flip_physical{169.0}=0x0 +phy_chain_rx_polarity_flip_physical{170.0}=0x1 +phy_chain_rx_polarity_flip_physical{171.0}=0x1 +phy_chain_rx_polarity_flip_physical{172.0}=0x0 +phy_chain_rx_polarity_flip_physical{173.0}=0x0 +phy_chain_rx_polarity_flip_physical{174.0}=0x1 +phy_chain_rx_polarity_flip_physical{175.0}=0x1 +phy_chain_rx_polarity_flip_physical{176.0}=0x0 +phy_chain_rx_polarity_flip_physical{177.0}=0x0 +phy_chain_rx_polarity_flip_physical{178.0}=0x0 +phy_chain_rx_polarity_flip_physical{179.0}=0x0 +phy_chain_rx_polarity_flip_physical{180.0}=0x0 +phy_chain_rx_polarity_flip_physical{181.0}=0x1 +phy_chain_rx_polarity_flip_physical{182.0}=0x1 +phy_chain_rx_polarity_flip_physical{183.0}=0x0 +phy_chain_rx_polarity_flip_physical{184.0}=0x0 +phy_chain_rx_polarity_flip_physical{185.0}=0x0 +phy_chain_rx_polarity_flip_physical{186.0}=0x1 +phy_chain_rx_polarity_flip_physical{187.0}=0x1 +phy_chain_rx_polarity_flip_physical{188.0}=0x0 +phy_chain_rx_polarity_flip_physical{189.0}=0x0 +phy_chain_rx_polarity_flip_physical{190.0}=0x1 +phy_chain_rx_polarity_flip_physical{191.0}=0x1 +phy_chain_rx_polarity_flip_physical{192.0}=0x0 +phy_chain_rx_polarity_flip_physical{193.0}=0x0 +phy_chain_rx_polarity_flip_physical{194.0}=0x0 +phy_chain_rx_polarity_flip_physical{195.0}=0x0 +phy_chain_rx_polarity_flip_physical{196.0}=0x0 +phy_chain_rx_polarity_flip_physical{197.0}=0x1 +phy_chain_rx_polarity_flip_physical{198.0}=0x1 +phy_chain_rx_polarity_flip_physical{199.0}=0x0 +phy_chain_rx_polarity_flip_physical{200.0}=0x0 +phy_chain_rx_polarity_flip_physical{201.0}=0x0 +phy_chain_rx_polarity_flip_physical{202.0}=0x1 +phy_chain_rx_polarity_flip_physical{203.0}=0x1 +phy_chain_rx_polarity_flip_physical{204.0}=0x0 +phy_chain_rx_polarity_flip_physical{205.0}=0x0 +phy_chain_rx_polarity_flip_physical{206.0}=0x1 +phy_chain_rx_polarity_flip_physical{207.0}=0x1 +phy_chain_rx_polarity_flip_physical{208.0}=0x0 +phy_chain_rx_polarity_flip_physical{209.0}=0x1 +phy_chain_rx_polarity_flip_physical{210.0}=0x1 +phy_chain_rx_polarity_flip_physical{211.0}=0x0 +phy_chain_rx_polarity_flip_physical{212.0}=0x0 +phy_chain_rx_polarity_flip_physical{213.0}=0x1 +phy_chain_rx_polarity_flip_physical{214.0}=0x1 +phy_chain_rx_polarity_flip_physical{215.0}=0x0 +phy_chain_rx_polarity_flip_physical{216.0}=0x0 +phy_chain_rx_polarity_flip_physical{217.0}=0x0 +phy_chain_rx_polarity_flip_physical{218.0}=0x1 +phy_chain_rx_polarity_flip_physical{219.0}=0x1 +phy_chain_rx_polarity_flip_physical{220.0}=0x0 +phy_chain_rx_polarity_flip_physical{221.0}=0x0 +phy_chain_rx_polarity_flip_physical{222.0}=0x1 +phy_chain_rx_polarity_flip_physical{223.0}=0x1 +phy_chain_rx_polarity_flip_physical{224.0}=0x0 +phy_chain_rx_polarity_flip_physical{225.0}=0x0 +phy_chain_rx_polarity_flip_physical{226.0}=0x0 +phy_chain_rx_polarity_flip_physical{227.0}=0x1 +phy_chain_rx_polarity_flip_physical{228.0}=0x0 +phy_chain_rx_polarity_flip_physical{229.0}=0x0 +phy_chain_rx_polarity_flip_physical{230.0}=0x1 +phy_chain_rx_polarity_flip_physical{231.0}=0x0 +phy_chain_rx_polarity_flip_physical{232.0}=0x0 +phy_chain_rx_polarity_flip_physical{233.0}=0x0 +phy_chain_rx_polarity_flip_physical{234.0}=0x1 +phy_chain_rx_polarity_flip_physical{235.0}=0x1 +phy_chain_rx_polarity_flip_physical{236.0}=0x0 +phy_chain_rx_polarity_flip_physical{237.0}=0x1 +phy_chain_rx_polarity_flip_physical{238.0}=0x0 +phy_chain_rx_polarity_flip_physical{239.0}=0x0 +phy_chain_rx_polarity_flip_physical{240.0}=0x1 +phy_chain_rx_polarity_flip_physical{241.0}=0x1 +phy_chain_rx_polarity_flip_physical{242.0}=0x0 +phy_chain_rx_polarity_flip_physical{243.0}=0x0 +phy_chain_rx_polarity_flip_physical{244.0}=0x0 +phy_chain_rx_polarity_flip_physical{245.0}=0x0 +phy_chain_rx_polarity_flip_physical{246.0}=0x1 +phy_chain_rx_polarity_flip_physical{247.0}=0x1 +phy_chain_rx_polarity_flip_physical{248.0}=0x1 +phy_chain_rx_polarity_flip_physical{249.0}=0x1 +phy_chain_rx_polarity_flip_physical{250.0}=0x1 +phy_chain_rx_polarity_flip_physical{251.0}=0x0 +phy_chain_rx_polarity_flip_physical{252.0}=0x0 +phy_chain_rx_polarity_flip_physical{253.0}=0x0 +phy_chain_rx_polarity_flip_physical{254.0}=0x0 +phy_chain_rx_polarity_flip_physical{255.0}=0x1 +phy_chain_rx_polarity_flip_physical{256.0}=0x1 +phy_chain_rx_polarity_flip_physical{257.0}=0x0 +phy_chain_rx_polarity_flip_physical{258.0}=0x0 +phy_chain_tx_lane_map_physical{1.0}=0x13245076 +phy_chain_tx_lane_map_physical{9.0}=0x76501423 +phy_chain_tx_lane_map_physical{17.0}=0x75643120 +phy_chain_tx_lane_map_physical{25.0}=0x74653201 +phy_chain_tx_lane_map_physical{33.0}=0x75603124 +phy_chain_tx_lane_map_physical{41.0}=0x64753120 +phy_chain_tx_lane_map_physical{49.0}=0x65741032 +phy_chain_tx_lane_map_physical{57.0}=0x64753210 +phy_chain_tx_lane_map_physical{65.0}=0x65740132 +phy_chain_tx_lane_map_physical{73.0}=0x64753210 +phy_chain_tx_lane_map_physical{81.0}=0x65740132 +phy_chain_tx_lane_map_physical{89.0}=0x64753210 +phy_chain_tx_lane_map_physical{97.0}=0x63057124 +phy_chain_tx_lane_map_physical{105.0}=0x67453021 +phy_chain_tx_lane_map_physical{113.0}=0x76502413 +phy_chain_tx_lane_map_physical{121.0}=0x13257064 +phy_chain_tx_lane_map_physical{129.0}=0x32146057 +phy_chain_tx_lane_map_physical{137.0}=0x57613420 +phy_chain_tx_lane_map_physical{145.0}=0x76502413 +phy_chain_tx_lane_map_physical{153.0}=0x64173520 +phy_chain_tx_lane_map_physical{161.0}=0x56742031 +phy_chain_tx_lane_map_physical{169.0}=0x74601523 +phy_chain_tx_lane_map_physical{177.0}=0x56742031 +phy_chain_tx_lane_map_physical{185.0}=0x74601523 +phy_chain_tx_lane_map_physical{193.0}=0x56742031 +phy_chain_tx_lane_map_physical{201.0}=0x74601523 +phy_chain_tx_lane_map_physical{209.0}=0x56742031 +phy_chain_tx_lane_map_physical{217.0}=0x74603512 +phy_chain_tx_lane_map_physical{225.0}=0x75642031 +phy_chain_tx_lane_map_physical{233.0}=0x57612430 +phy_chain_tx_lane_map_physical{241.0}=0x65742031 +phy_chain_tx_lane_map_physical{249.0}=0x52316470 +phy_chain_tx_lane_map_physical{257.0}=0x3210 +phy_chain_tx_polarity_flip_physical{1.0}=0x1 +phy_chain_tx_polarity_flip_physical{2.0}=0x1 +phy_chain_tx_polarity_flip_physical{3.0}=0x0 +phy_chain_tx_polarity_flip_physical{4.0}=0x1 +phy_chain_tx_polarity_flip_physical{5.0}=0x1 +phy_chain_tx_polarity_flip_physical{6.0}=0x1 +phy_chain_tx_polarity_flip_physical{7.0}=0x1 +phy_chain_tx_polarity_flip_physical{8.0}=0x0 +phy_chain_tx_polarity_flip_physical{9.0}=0x1 +phy_chain_tx_polarity_flip_physical{10.0}=0x0 +phy_chain_tx_polarity_flip_physical{11.0}=0x1 +phy_chain_tx_polarity_flip_physical{12.0}=0x1 +phy_chain_tx_polarity_flip_physical{13.0}=0x0 +phy_chain_tx_polarity_flip_physical{14.0}=0x0 +phy_chain_tx_polarity_flip_physical{15.0}=0x1 +phy_chain_tx_polarity_flip_physical{16.0}=0x0 +phy_chain_tx_polarity_flip_physical{17.0}=0x1 +phy_chain_tx_polarity_flip_physical{18.0}=0x0 +phy_chain_tx_polarity_flip_physical{19.0}=0x0 +phy_chain_tx_polarity_flip_physical{20.0}=0x1 +phy_chain_tx_polarity_flip_physical{21.0}=0x0 +phy_chain_tx_polarity_flip_physical{22.0}=0x1 +phy_chain_tx_polarity_flip_physical{23.0}=0x1 +phy_chain_tx_polarity_flip_physical{24.0}=0x0 +phy_chain_tx_polarity_flip_physical{25.0}=0x1 +phy_chain_tx_polarity_flip_physical{26.0}=0x0 +phy_chain_tx_polarity_flip_physical{27.0}=0x0 +phy_chain_tx_polarity_flip_physical{28.0}=0x1 +phy_chain_tx_polarity_flip_physical{29.0}=0x0 +phy_chain_tx_polarity_flip_physical{30.0}=0x1 +phy_chain_tx_polarity_flip_physical{31.0}=0x1 +phy_chain_tx_polarity_flip_physical{32.0}=0x0 +phy_chain_tx_polarity_flip_physical{33.0}=0x0 +phy_chain_tx_polarity_flip_physical{34.0}=0x0 +phy_chain_tx_polarity_flip_physical{35.0}=0x0 +phy_chain_tx_polarity_flip_physical{36.0}=0x1 +phy_chain_tx_polarity_flip_physical{37.0}=0x1 +phy_chain_tx_polarity_flip_physical{38.0}=0x1 +phy_chain_tx_polarity_flip_physical{39.0}=0x1 +phy_chain_tx_polarity_flip_physical{40.0}=0x0 +phy_chain_tx_polarity_flip_physical{41.0}=0x0 +phy_chain_tx_polarity_flip_physical{42.0}=0x0 +phy_chain_tx_polarity_flip_physical{43.0}=0x1 +phy_chain_tx_polarity_flip_physical{44.0}=0x1 +phy_chain_tx_polarity_flip_physical{45.0}=0x0 +phy_chain_tx_polarity_flip_physical{46.0}=0x0 +phy_chain_tx_polarity_flip_physical{47.0}=0x1 +phy_chain_tx_polarity_flip_physical{48.0}=0x1 +phy_chain_tx_polarity_flip_physical{49.0}=0x1 +phy_chain_tx_polarity_flip_physical{50.0}=0x1 +phy_chain_tx_polarity_flip_physical{51.0}=0x1 +phy_chain_tx_polarity_flip_physical{52.0}=0x1 +phy_chain_tx_polarity_flip_physical{53.0}=0x0 +phy_chain_tx_polarity_flip_physical{54.0}=0x0 +phy_chain_tx_polarity_flip_physical{55.0}=0x1 +phy_chain_tx_polarity_flip_physical{56.0}=0x1 +phy_chain_tx_polarity_flip_physical{57.0}=0x0 +phy_chain_tx_polarity_flip_physical{58.0}=0x1 +phy_chain_tx_polarity_flip_physical{59.0}=0x0 +phy_chain_tx_polarity_flip_physical{60.0}=0x1 +phy_chain_tx_polarity_flip_physical{61.0}=0x0 +phy_chain_tx_polarity_flip_physical{62.0}=0x0 +phy_chain_tx_polarity_flip_physical{63.0}=0x1 +phy_chain_tx_polarity_flip_physical{64.0}=0x1 +phy_chain_tx_polarity_flip_physical{65.0}=0x1 +phy_chain_tx_polarity_flip_physical{66.0}=0x1 +phy_chain_tx_polarity_flip_physical{67.0}=0x0 +phy_chain_tx_polarity_flip_physical{68.0}=0x0 +phy_chain_tx_polarity_flip_physical{69.0}=0x0 +phy_chain_tx_polarity_flip_physical{70.0}=0x0 +phy_chain_tx_polarity_flip_physical{71.0}=0x1 +phy_chain_tx_polarity_flip_physical{72.0}=0x1 +phy_chain_tx_polarity_flip_physical{73.0}=0x0 +phy_chain_tx_polarity_flip_physical{74.0}=0x1 +phy_chain_tx_polarity_flip_physical{75.0}=0x0 +phy_chain_tx_polarity_flip_physical{76.0}=0x1 +phy_chain_tx_polarity_flip_physical{77.0}=0x0 +phy_chain_tx_polarity_flip_physical{78.0}=0x0 +phy_chain_tx_polarity_flip_physical{79.0}=0x1 +phy_chain_tx_polarity_flip_physical{80.0}=0x1 +phy_chain_tx_polarity_flip_physical{81.0}=0x1 +phy_chain_tx_polarity_flip_physical{82.0}=0x1 +phy_chain_tx_polarity_flip_physical{83.0}=0x0 +phy_chain_tx_polarity_flip_physical{84.0}=0x0 +phy_chain_tx_polarity_flip_physical{85.0}=0x0 +phy_chain_tx_polarity_flip_physical{86.0}=0x0 +phy_chain_tx_polarity_flip_physical{87.0}=0x1 +phy_chain_tx_polarity_flip_physical{88.0}=0x1 +phy_chain_tx_polarity_flip_physical{89.0}=0x0 +phy_chain_tx_polarity_flip_physical{90.0}=0x1 +phy_chain_tx_polarity_flip_physical{91.0}=0x0 +phy_chain_tx_polarity_flip_physical{92.0}=0x1 +phy_chain_tx_polarity_flip_physical{93.0}=0x0 +phy_chain_tx_polarity_flip_physical{94.0}=0x0 +phy_chain_tx_polarity_flip_physical{95.0}=0x1 +phy_chain_tx_polarity_flip_physical{96.0}=0x1 +phy_chain_tx_polarity_flip_physical{97.0}=0x0 +phy_chain_tx_polarity_flip_physical{98.0}=0x0 +phy_chain_tx_polarity_flip_physical{99.0}=0x0 +phy_chain_tx_polarity_flip_physical{100.0}=0x0 +phy_chain_tx_polarity_flip_physical{101.0}=0x1 +phy_chain_tx_polarity_flip_physical{102.0}=0x1 +phy_chain_tx_polarity_flip_physical{103.0}=0x1 +phy_chain_tx_polarity_flip_physical{104.0}=0x0 +phy_chain_tx_polarity_flip_physical{105.0}=0x1 +phy_chain_tx_polarity_flip_physical{106.0}=0x0 +phy_chain_tx_polarity_flip_physical{107.0}=0x0 +phy_chain_tx_polarity_flip_physical{108.0}=0x1 +phy_chain_tx_polarity_flip_physical{109.0}=0x1 +phy_chain_tx_polarity_flip_physical{110.0}=0x0 +phy_chain_tx_polarity_flip_physical{111.0}=0x1 +phy_chain_tx_polarity_flip_physical{112.0}=0x0 +phy_chain_tx_polarity_flip_physical{113.0}=0x0 +phy_chain_tx_polarity_flip_physical{114.0}=0x1 +phy_chain_tx_polarity_flip_physical{115.0}=0x0 +phy_chain_tx_polarity_flip_physical{116.0}=0x0 +phy_chain_tx_polarity_flip_physical{117.0}=0x1 +phy_chain_tx_polarity_flip_physical{118.0}=0x0 +phy_chain_tx_polarity_flip_physical{119.0}=0x0 +phy_chain_tx_polarity_flip_physical{120.0}=0x0 +phy_chain_tx_polarity_flip_physical{121.0}=0x0 +phy_chain_tx_polarity_flip_physical{122.0}=0x0 +phy_chain_tx_polarity_flip_physical{123.0}=0x1 +phy_chain_tx_polarity_flip_physical{124.0}=0x1 +phy_chain_tx_polarity_flip_physical{125.0}=0x1 +phy_chain_tx_polarity_flip_physical{126.0}=0x1 +phy_chain_tx_polarity_flip_physical{127.0}=0x0 +phy_chain_tx_polarity_flip_physical{128.0}=0x0 +phy_chain_tx_polarity_flip_physical{129.0}=0x0 +phy_chain_tx_polarity_flip_physical{130.0}=0x1 +phy_chain_tx_polarity_flip_physical{131.0}=0x0 +phy_chain_tx_polarity_flip_physical{132.0}=0x0 +phy_chain_tx_polarity_flip_physical{133.0}=0x1 +phy_chain_tx_polarity_flip_physical{134.0}=0x0 +phy_chain_tx_polarity_flip_physical{135.0}=0x0 +phy_chain_tx_polarity_flip_physical{136.0}=0x0 +phy_chain_tx_polarity_flip_physical{137.0}=0x0 +phy_chain_tx_polarity_flip_physical{138.0}=0x0 +phy_chain_tx_polarity_flip_physical{139.0}=0x1 +phy_chain_tx_polarity_flip_physical{140.0}=0x1 +phy_chain_tx_polarity_flip_physical{141.0}=0x1 +phy_chain_tx_polarity_flip_physical{142.0}=0x1 +phy_chain_tx_polarity_flip_physical{143.0}=0x0 +phy_chain_tx_polarity_flip_physical{144.0}=0x0 +phy_chain_tx_polarity_flip_physical{145.0}=0x0 +phy_chain_tx_polarity_flip_physical{146.0}=0x1 +phy_chain_tx_polarity_flip_physical{147.0}=0x0 +phy_chain_tx_polarity_flip_physical{148.0}=0x0 +phy_chain_tx_polarity_flip_physical{149.0}=0x1 +phy_chain_tx_polarity_flip_physical{150.0}=0x0 +phy_chain_tx_polarity_flip_physical{151.0}=0x0 +phy_chain_tx_polarity_flip_physical{152.0}=0x0 +phy_chain_tx_polarity_flip_physical{153.0}=0x0 +phy_chain_tx_polarity_flip_physical{154.0}=0x0 +phy_chain_tx_polarity_flip_physical{155.0}=0x0 +phy_chain_tx_polarity_flip_physical{156.0}=0x1 +phy_chain_tx_polarity_flip_physical{157.0}=0x0 +phy_chain_tx_polarity_flip_physical{158.0}=0x1 +phy_chain_tx_polarity_flip_physical{159.0}=0x1 +phy_chain_tx_polarity_flip_physical{160.0}=0x0 +phy_chain_tx_polarity_flip_physical{161.0}=0x0 +phy_chain_tx_polarity_flip_physical{162.0}=0x1 +phy_chain_tx_polarity_flip_physical{163.0}=0x1 +phy_chain_tx_polarity_flip_physical{164.0}=0x0 +phy_chain_tx_polarity_flip_physical{165.0}=0x0 +phy_chain_tx_polarity_flip_physical{166.0}=0x0 +phy_chain_tx_polarity_flip_physical{167.0}=0x0 +phy_chain_tx_polarity_flip_physical{168.0}=0x0 +phy_chain_tx_polarity_flip_physical{169.0}=0x1 +phy_chain_tx_polarity_flip_physical{170.0}=0x0 +phy_chain_tx_polarity_flip_physical{171.0}=0x0 +phy_chain_tx_polarity_flip_physical{172.0}=0x1 +phy_chain_tx_polarity_flip_physical{173.0}=0x0 +phy_chain_tx_polarity_flip_physical{174.0}=0x1 +phy_chain_tx_polarity_flip_physical{175.0}=0x1 +phy_chain_tx_polarity_flip_physical{176.0}=0x0 +phy_chain_tx_polarity_flip_physical{177.0}=0x0 +phy_chain_tx_polarity_flip_physical{178.0}=0x1 +phy_chain_tx_polarity_flip_physical{179.0}=0x1 +phy_chain_tx_polarity_flip_physical{180.0}=0x0 +phy_chain_tx_polarity_flip_physical{181.0}=0x0 +phy_chain_tx_polarity_flip_physical{182.0}=0x0 +phy_chain_tx_polarity_flip_physical{183.0}=0x0 +phy_chain_tx_polarity_flip_physical{184.0}=0x0 +phy_chain_tx_polarity_flip_physical{185.0}=0x1 +phy_chain_tx_polarity_flip_physical{186.0}=0x0 +phy_chain_tx_polarity_flip_physical{187.0}=0x0 +phy_chain_tx_polarity_flip_physical{188.0}=0x1 +phy_chain_tx_polarity_flip_physical{189.0}=0x0 +phy_chain_tx_polarity_flip_physical{190.0}=0x1 +phy_chain_tx_polarity_flip_physical{191.0}=0x1 +phy_chain_tx_polarity_flip_physical{192.0}=0x0 +phy_chain_tx_polarity_flip_physical{193.0}=0x0 +phy_chain_tx_polarity_flip_physical{194.0}=0x1 +phy_chain_tx_polarity_flip_physical{195.0}=0x1 +phy_chain_tx_polarity_flip_physical{196.0}=0x0 +phy_chain_tx_polarity_flip_physical{197.0}=0x0 +phy_chain_tx_polarity_flip_physical{198.0}=0x0 +phy_chain_tx_polarity_flip_physical{199.0}=0x0 +phy_chain_tx_polarity_flip_physical{200.0}=0x0 +phy_chain_tx_polarity_flip_physical{201.0}=0x1 +phy_chain_tx_polarity_flip_physical{202.0}=0x0 +phy_chain_tx_polarity_flip_physical{203.0}=0x0 +phy_chain_tx_polarity_flip_physical{204.0}=0x1 +phy_chain_tx_polarity_flip_physical{205.0}=0x0 +phy_chain_tx_polarity_flip_physical{206.0}=0x1 +phy_chain_tx_polarity_flip_physical{207.0}=0x1 +phy_chain_tx_polarity_flip_physical{208.0}=0x0 +phy_chain_tx_polarity_flip_physical{209.0}=0x0 +phy_chain_tx_polarity_flip_physical{210.0}=0x1 +phy_chain_tx_polarity_flip_physical{211.0}=0x1 +phy_chain_tx_polarity_flip_physical{212.0}=0x0 +phy_chain_tx_polarity_flip_physical{213.0}=0x0 +phy_chain_tx_polarity_flip_physical{214.0}=0x0 +phy_chain_tx_polarity_flip_physical{215.0}=0x0 +phy_chain_tx_polarity_flip_physical{216.0}=0x0 +phy_chain_tx_polarity_flip_physical{217.0}=0x0 +phy_chain_tx_polarity_flip_physical{218.0}=0x1 +phy_chain_tx_polarity_flip_physical{219.0}=0x0 +phy_chain_tx_polarity_flip_physical{220.0}=0x1 +phy_chain_tx_polarity_flip_physical{221.0}=0x0 +phy_chain_tx_polarity_flip_physical{222.0}=0x1 +phy_chain_tx_polarity_flip_physical{223.0}=0x1 +phy_chain_tx_polarity_flip_physical{224.0}=0x0 +phy_chain_tx_polarity_flip_physical{225.0}=0x0 +phy_chain_tx_polarity_flip_physical{226.0}=0x1 +phy_chain_tx_polarity_flip_physical{227.0}=0x1 +phy_chain_tx_polarity_flip_physical{228.0}=0x0 +phy_chain_tx_polarity_flip_physical{229.0}=0x0 +phy_chain_tx_polarity_flip_physical{230.0}=0x1 +phy_chain_tx_polarity_flip_physical{231.0}=0x1 +phy_chain_tx_polarity_flip_physical{232.0}=0x0 +phy_chain_tx_polarity_flip_physical{233.0}=0x0 +phy_chain_tx_polarity_flip_physical{234.0}=0x1 +phy_chain_tx_polarity_flip_physical{235.0}=0x1 +phy_chain_tx_polarity_flip_physical{236.0}=0x0 +phy_chain_tx_polarity_flip_physical{237.0}=0x1 +phy_chain_tx_polarity_flip_physical{238.0}=0x1 +phy_chain_tx_polarity_flip_physical{239.0}=0x0 +phy_chain_tx_polarity_flip_physical{240.0}=0x0 +phy_chain_tx_polarity_flip_physical{241.0}=0x0 +phy_chain_tx_polarity_flip_physical{242.0}=0x1 +phy_chain_tx_polarity_flip_physical{243.0}=0x1 +phy_chain_tx_polarity_flip_physical{244.0}=0x0 +phy_chain_tx_polarity_flip_physical{245.0}=0x0 +phy_chain_tx_polarity_flip_physical{246.0}=0x0 +phy_chain_tx_polarity_flip_physical{247.0}=0x1 +phy_chain_tx_polarity_flip_physical{248.0}=0x1 +phy_chain_tx_polarity_flip_physical{249.0}=0x1 +phy_chain_tx_polarity_flip_physical{250.0}=0x1 +phy_chain_tx_polarity_flip_physical{251.0}=0x0 +phy_chain_tx_polarity_flip_physical{252.0}=0x0 +phy_chain_tx_polarity_flip_physical{253.0}=0x0 +phy_chain_tx_polarity_flip_physical{254.0}=0x0 +phy_chain_tx_polarity_flip_physical{255.0}=0x1 +phy_chain_tx_polarity_flip_physical{256.0}=0x1 +phy_chain_tx_polarity_flip_physical{257.0}=0x0 +phy_chain_tx_polarity_flip_physical{258.0}=0x0 +portmap_1.0=1:400 +portmap_5.0=9:400 +portmap_9.0=17:400 +portmap_13.0=25:400 +portmap_20.0=33:400 +portmap_24.0=41:400 +portmap_28.0=49:400 +portmap_32.0=57:400 +portmap_38.0=257:10 +portmap_40.0=65:400 +portmap_44.0=73:400 +portmap_48.0=81:400 +portmap_52.0=89:400 +portmap_60.0=97:400 +portmap_64.0=105:400 +portmap_68.0=113:400 +portmap_72.0=121:400 +portmap_80.0=129:400 +portmap_84.0=137:400 +portmap_88.0=145:400 +portmap_92.0=153:400 +portmap_100.0=161:400 +portmap_104.0=169:400 +portmap_108.0=177:400 +portmap_112.0=185:400 +portmap_118.0=258:10 +portmap_120.0=193:400 +portmap_124.0=201:400 +portmap_128.0=209:400 +portmap_132.0=217:400 +portmap_140.0=225:400 +portmap_144.0=233:400 +portmap_148.0=241:400 +portmap_152.0=249:400 +port_flex_enable.0=1 +port_init_autoneg=0 +port_phy_addr=0xff +robust_hash_disable_egress_vlan.0=1 +robust_hash_disable_mpls.0=1 +robust_hash_disable_vlan.0=1 +tdma_timeout_usec.0=15000000 +tslam_timeout_usec.0=15000000 + +# Tuning +serdes_core_rx_polarity_flip_physical{1}=0x69 +serdes_core_rx_polarity_flip_physical{9}=0x69 +serdes_core_rx_polarity_flip_physical{17}=0xe4 +serdes_core_rx_polarity_flip_physical{25}=0x62 +serdes_core_rx_polarity_flip_physical{33}=0x33 +serdes_core_rx_polarity_flip_physical{41}=0x66 +serdes_core_rx_polarity_flip_physical{49}=0x24 +serdes_core_rx_polarity_flip_physical{57}=0x66 +serdes_core_rx_polarity_flip_physical{65}=0x33 +serdes_core_rx_polarity_flip_physical{73}=0x63 +serdes_core_rx_polarity_flip_physical{81}=0x33 +serdes_core_rx_polarity_flip_physical{89}=0x63 +serdes_core_rx_polarity_flip_physical{97}=0x1e +serdes_core_rx_polarity_flip_physical{105}=0x63 +serdes_core_rx_polarity_flip_physical{113}=0xdb +serdes_core_rx_polarity_flip_physical{121}=0x69 +serdes_core_rx_polarity_flip_physical{129}=0x24 +serdes_core_rx_polarity_flip_physical{137}=0x66 +serdes_core_rx_polarity_flip_physical{145}=0x33 +serdes_core_rx_polarity_flip_physical{153}=0x5a +serdes_core_rx_polarity_flip_physical{161}=0xf +serdes_core_rx_polarity_flip_physical{169}=0x66 +serdes_core_rx_polarity_flip_physical{177}=0x30 +serdes_core_rx_polarity_flip_physical{185}=0x66 +serdes_core_rx_polarity_flip_physical{193}=0x30 +serdes_core_rx_polarity_flip_physical{201}=0x66 +serdes_core_rx_polarity_flip_physical{209}=0x33 +serdes_core_rx_polarity_flip_physical{217}=0x66 +serdes_core_rx_polarity_flip_physical{225}=0x24 +serdes_core_rx_polarity_flip_physical{233}=0x96 +serdes_core_rx_polarity_flip_physical{241}=0xe1 +serdes_core_rx_polarity_flip_physical{249}=0xc3 +serdes_core_rx_polarity_flip_physical{257}=0x0 +serdes_core_tx_polarity_flip_physical{1}=0x7b +serdes_core_tx_polarity_flip_physical{9}=0x4d +serdes_core_tx_polarity_flip_physical{17}=0x69 +serdes_core_tx_polarity_flip_physical{25}=0x69 +serdes_core_tx_polarity_flip_physical{33}=0x78 +serdes_core_tx_polarity_flip_physical{41}=0xcc +serdes_core_tx_polarity_flip_physical{49}=0xcf +serdes_core_tx_polarity_flip_physical{57}=0xca +serdes_core_tx_polarity_flip_physical{65}=0xc3 +serdes_core_tx_polarity_flip_physical{73}=0xca +serdes_core_tx_polarity_flip_physical{81}=0xc3 +serdes_core_tx_polarity_flip_physical{89}=0xca +serdes_core_tx_polarity_flip_physical{97}=0x70 +serdes_core_tx_polarity_flip_physical{105}=0x59 +serdes_core_tx_polarity_flip_physical{113}=0x12 +serdes_core_tx_polarity_flip_physical{121}=0x3c +serdes_core_tx_polarity_flip_physical{129}=0x12 +serdes_core_tx_polarity_flip_physical{137}=0x3c +serdes_core_tx_polarity_flip_physical{145}=0x12 +serdes_core_tx_polarity_flip_physical{153}=0x68 +serdes_core_tx_polarity_flip_physical{161}=0x6 +serdes_core_tx_polarity_flip_physical{169}=0x69 +serdes_core_tx_polarity_flip_physical{177}=0x6 +serdes_core_tx_polarity_flip_physical{185}=0x69 +serdes_core_tx_polarity_flip_physical{193}=0x6 +serdes_core_tx_polarity_flip_physical{201}=0x69 +serdes_core_tx_polarity_flip_physical{209}=0x6 +serdes_core_tx_polarity_flip_physical{217}=0x6a +serdes_core_tx_polarity_flip_physical{225}=0x66 +serdes_core_tx_polarity_flip_physical{233}=0x36 +serdes_core_tx_polarity_flip_physical{241}=0xc6 +serdes_core_tx_polarity_flip_physical{249}=0xc3 +serdes_core_tx_polarity_flip_physical{257}=0x0 +serdes_tx_taps_cd0=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd1=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd2=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd3=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd4=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd5=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd6=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd7=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd8=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd9=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd10=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd11=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd12=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd13=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd14=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd15=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd16=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd17=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd18=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd19=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd20=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd21=pam4:-28:124:0:4:0:0 +serdes_tx_taps_cd22=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd23=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd24=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd25=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd26=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd27=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd28=pam4:-28:120:-4:4:0:0 +serdes_tx_taps_cd29=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd30=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd31=pam4:-28:124:-12:4:0:0 +serdes_tx_taps_cd32=pam4:1:34:9:0:0:0 +serdes_tx_taps_cd33=pam4:1:34:9:0:0:0 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/hwsku.json b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/hwsku.json new file mode 100644 index 000000000000..88c76d345678 --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/hwsku.json @@ -0,0 +1,202 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet4": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet8": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet12": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet16": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet20": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet24": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet28": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet36": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet40": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet44": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet48": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet52": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet56": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet60": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet64": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet68": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet72": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet76": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet80": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet84": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet88": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet92": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet96": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet100": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet104": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet108": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet112": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet116": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet120": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet124": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet128": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet132": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet136": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet140": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet144": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet148": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet152": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet156": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet160": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet164": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet168": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet172": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet176": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet180": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet184": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet188": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet192": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet196": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet200": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet204": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet212": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet220": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet228": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet236": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet244": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet252": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet256": { + "default_brkout_mode": "1x10G" + }, + "Ethernet260": { + "default_brkout_mode": "1x10G" + } + } +} \ No newline at end of file diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/port_config.ini b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/port_config.ini new file mode 100644 index 000000000000..3940948a3541 --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/port_config.ini @@ -0,0 +1,67 @@ +# name lanes alias index speed +Ethernet0 77,78,79,80 Ethernet1/1 1 100000 +Ethernet4 65,66,67,68 Ethernet2/1 2 100000 +Ethernet8 85,86,87,88 Ethernet3/1 3 100000 +Ethernet12 89,90,91,92 Ethernet4/1 4 100000 +Ethernet16 109,110,111,112 Ethernet5/1 5 100000 +Ethernet20 97,98,99,100 Ethernet6/1 6 100000 +Ethernet24 5,6,7,8 Ethernet7/1 7 100000 +Ethernet28 13,14,15,16 Ethernet8/1 8 100000 +Ethernet32 25,26,27,28 Ethernet9/1 9 100000 +Ethernet36 21,22,23,24 Ethernet10/1 10 100000 +Ethernet40 37,38,39,40 Ethernet11/1 11 100000 +Ethernet44 45,46,47,48 Ethernet12/1 12 100000 +Ethernet48 57,58,59,60 Ethernet13/1 13 100000 +Ethernet52 53,54,55,56 Ethernet14/1 14 100000 +Ethernet56 117,118,119,120 Ethernet15/1 15 100000 +Ethernet60 121,122,123,124 Ethernet16/1 16 100000 +Ethernet64 141,142,143,144 Ethernet17/1 17 100000 +Ethernet68 133,134,135,136 Ethernet18/1 18 100000 +Ethernet72 197,198,199,200 Ethernet19/1 19 100000 +Ethernet76 205,206,207,208 Ethernet20/1 20 100000 +Ethernet80 217,218,219,220 Ethernet21/1 21 100000 +Ethernet84 213,214,215,216 Ethernet22/1 22 100000 +Ethernet88 229,230,231,232 Ethernet23/1 23 100000 +Ethernet92 237,238,239,240 Ethernet24/1 24 100000 +Ethernet96 249,250,251,252 Ethernet25/1 25 100000 +Ethernet100 245,246,247,248 Ethernet26/1 26 100000 +Ethernet104 149,150,151,152 Ethernet27/1 27 100000 +Ethernet108 153,154,155,156 Ethernet28/1 28 100000 +Ethernet112 173,174,175,176 Ethernet29/1 29 100000 +Ethernet116 161,162,163,164 Ethernet30/1 30 100000 +Ethernet120 181,182,183,184 Ethernet31/1 31 100000 +Ethernet124 185,186,187,188 Ethernet32/1 32 100000 +Ethernet128 69,70,71,72 Ethernet33/1 33 100000 +Ethernet132 73,74,75,76 Ethernet34/1 34 100000 +Ethernet136 93,94,95,96 Ethernet35/1 35 100000 +Ethernet140 81,82,83,84 Ethernet36/1 36 100000 +Ethernet144 101,102,103,104 Ethernet37/1 37 100000 +Ethernet148 105,106,107,108 Ethernet38/1 38 100000 +Ethernet152 9,10,11,12 Ethernet39/1 39 100000 +Ethernet156 1,2,3,4 Ethernet40/1 40 100000 +Ethernet160 17,18,19,20 Ethernet41/1 41 100000 +Ethernet164 29,30,31,32 Ethernet42/1 42 100000 +Ethernet168 41,42,43,44 Ethernet43/1 43 100000 +Ethernet172 33,34,35,36 Ethernet44/1 44 100000 +Ethernet176 49,50,51,52 Ethernet45/1 45 100000 +Ethernet180 61,62,63,64 Ethernet46/1 46 100000 +Ethernet184 125,126,127,128 Ethernet47/1 47 100000 +Ethernet188 113,114,115,116 Ethernet48/1 48 100000 +Ethernet192 129,130,131,132 Ethernet49/1 49 100000 +Ethernet196 137,138,139,140 Ethernet50/1 50 100000 +Ethernet200 201,202,203,204 Ethernet51/1 51 100000 +Ethernet204 193,194,195,196 Ethernet52/1 52 100000 +Ethernet208 209,210,211,212 Ethernet53/1 53 100000 +Ethernet212 221,222,223,224 Ethernet54/1 54 100000 +Ethernet216 233,234,235,236 Ethernet55/1 55 100000 +Ethernet220 225,226,227,228 Ethernet56/1 56 100000 +Ethernet224 241,242,243,244 Ethernet57/1 57 100000 +Ethernet228 253,254,255,256 Ethernet58/1 58 100000 +Ethernet232 157,158,159,160 Ethernet59/1 59 100000 +Ethernet236 145,146,147,148 Ethernet60/1 60 100000 +Ethernet240 165,166,167,168 Ethernet61/1 61 100000 +Ethernet244 169,170,171,172 Ethernet62/1 62 100000 +Ethernet248 189,190,191,192 Ethernet63/1 63 100000 +Ethernet252 177,178,179,180 Ethernet64/1 64 100000 +Ethernet256 257 Ethernet65 65 10000 +Ethernet260 259 Ethernet66 66 10000 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/sai.profile b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/sai.profile new file mode 100644 index 000000000000..f31c68e79ea1 --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-64/sai.profile @@ -0,0 +1,2 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/th2-a7260cx3-64-flex.config.bcm +SAI_NUM_ECMP_MEMBERS=64 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 index 94e6560dc211..38bc9f3dc1d2 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-C64/config.bcm.j2 @@ -13,13 +13,13 @@ {%- if 'dualtor' in switch_subtype.lower() %} {%- set IPinIP_sock = 'sai_tunnel_support=1 host_as_route_disable=1 - sai_adjust_acl_drop_in_rx_drop=1 l3_ecmp_levels=2' -%} {%- endif %} {%- endif %} {%- endif %} {# The following is the common soc properties that used to be named "th2-a7260cx3-64-64x100G-t1.config.bcm" #} +sai_adjust_acl_drop_in_rx_drop=1 PHY_AN_ALLOW_PLL_CHANGE=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 index 6218ad9b0879..b2ef1cdf4977 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-D108C8/config.bcm.j2 @@ -5,11 +5,11 @@ {%- if 'dualtor' in switch_subtype.lower() %} {%- set IPinIP_sock = 'sai_tunnel_support=1 host_as_route_disable=1 - sai_adjust_acl_drop_in_rx_drop=1 l3_ecmp_levels=2' -%} {%- endif %} {%- endif %} {# The following is the common soc properties that used to be named "th2-a7260cx3-64-112x50G+8x100G.config.bcm" #} +sai_adjust_acl_drop_in_rx_drop=1 PHY_AN_ALLOW_PLL_CHANGE=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 index f9649f52d09b..e8d3bd322993 100644 --- a/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 +++ b/device/arista/x86_64-arista_7260cx3_64/Arista-7260CX3-Q64/config.bcm.j2 @@ -13,12 +13,12 @@ {%- if 'dualtor' in switch_subtype.lower() %} {%- set IPinIP_sock = 'sai_tunnel_support=1 host_as_route_disable=1 - sai_adjust_acl_drop_in_rx_drop=1 l3_ecmp_levels=2' -%} {%- endif %} {%- endif %} {%- endif %} {# The following is the common soc properties that used to be named "th2-a7260cx3-64-64x40G.config.bcm" #} +sai_adjust_acl_drop_in_rx_drop=1 PHY_AN_ALLOW_PLL_CHANGE=1 arl_clean_timeout_usec=15000000 asf_mem_profile=2 diff --git a/device/arista/x86_64-arista_7260cx3_64/platform.json b/device/arista/x86_64-arista_7260cx3_64/platform.json index d489bd9506c9..a646ce80945e 100644 --- a/device/arista/x86_64-arista_7260cx3_64/platform.json +++ b/device/arista/x86_64-arista_7260cx3_64/platform.json @@ -292,5 +292,1240 @@ } ] }, - "interfaces": {} + "interfaces": { + "Ethernet0": { + "index": "1,1,1,1", + "lanes": "77,78,79,80", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet1/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet1/1", + "Ethernet1/3" + ], + "4x25G[10G]": [ + "Ethernet1/1", + "Ethernet1/2", + "Ethernet1/3", + "Ethernet1/4" + ] + } + }, + "Ethernet4": { + "index": "2,2,2,2", + "lanes": "65,66,67,68", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet2/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet2/1", + "Ethernet2/3" + ], + "4x25G[10G]": [ + "Ethernet2/1", + "Ethernet2/2", + "Ethernet2/3", + "Ethernet2/4" + ] + } + }, + "Ethernet8": { + "index": "3,3,3,3", + "lanes": "85,86,87,88", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet3/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet3/1", + "Ethernet3/3" + ], + "4x25G[10G]": [ + "Ethernet3/1", + "Ethernet3/2", + "Ethernet3/3", + "Ethernet3/4" + ] + } + }, + "Ethernet12": { + "index": "4,4,4,4", + "lanes": "89,90,91,92", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet4/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet4/1", + "Ethernet4/3" + ], + "4x25G[10G]": [ + "Ethernet4/1", + "Ethernet4/2", + "Ethernet4/3", + "Ethernet4/4" + ] + } + }, + "Ethernet16": { + "index": "5,5,5,5", + "lanes": "109,110,111,112", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet5/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet5/1", + "Ethernet5/3" + ], + "4x25G[10G]": [ + "Ethernet5/1", + "Ethernet5/2", + "Ethernet5/3", + "Ethernet5/4" + ] + } + }, + "Ethernet20": { + "index": "6,6,6,6", + "lanes": "97,98,99,100", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet6/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet6/1", + "Ethernet6/3" + ], + "4x25G[10G]": [ + "Ethernet6/1", + "Ethernet6/2", + "Ethernet6/3", + "Ethernet6/4" + ] + } + }, + "Ethernet24": { + "index": "7,7,7,7", + "lanes": "5,6,7,8", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet7/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet7/1", + "Ethernet7/3" + ], + "4x25G[10G]": [ + "Ethernet7/1", + "Ethernet7/2", + "Ethernet7/3", + "Ethernet7/4" + ] + } + }, + "Ethernet28": { + "index": "8,8,8,8", + "lanes": "13,14,15,16", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet8/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet8/1", + "Ethernet8/3" + ], + "4x25G[10G]": [ + "Ethernet8/1", + "Ethernet8/2", + "Ethernet8/3", + "Ethernet8/4" + ] + } + }, + "Ethernet32": { + "index": "9,9,9,9", + "lanes": "25,26,27,28", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet9/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet9/1", + "Ethernet9/3" + ], + "4x25G[10G]": [ + "Ethernet9/1", + "Ethernet9/2", + "Ethernet9/3", + "Ethernet9/4" + ] + } + }, + "Ethernet36": { + "index": "10,10,10,10", + "lanes": "21,22,23,24", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet10/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet10/1", + "Ethernet10/3" + ], + "4x25G[10G]": [ + "Ethernet10/1", + "Ethernet10/2", + "Ethernet10/3", + "Ethernet10/4" + ] + } + }, + "Ethernet40": { + "index": "11,11,11,11", + "lanes": "37,38,39,40", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet11/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet11/1", + "Ethernet11/3" + ], + "4x25G[10G]": [ + "Ethernet11/1", + "Ethernet11/2", + "Ethernet11/3", + "Ethernet11/4" + ] + } + }, + "Ethernet44": { + "index": "12,12,12,12", + "lanes": "45,46,47,48", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet12/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet12/1", + "Ethernet12/3" + ], + "4x25G[10G]": [ + "Ethernet12/1", + "Ethernet12/2", + "Ethernet12/3", + "Ethernet12/4" + ] + } + }, + "Ethernet48": { + "index": "13,13,13,13", + "lanes": "57,58,59,60", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet13/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet13/1", + "Ethernet13/3" + ], + "4x25G[10G]": [ + "Ethernet13/1", + "Ethernet13/2", + "Ethernet13/3", + "Ethernet13/4" + ] + } + }, + "Ethernet52": { + "index": "14,14,14,14", + "lanes": "53,54,55,56", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet14/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet14/1", + "Ethernet14/3" + ], + "4x25G[10G]": [ + "Ethernet14/1", + "Ethernet14/2", + "Ethernet14/3", + "Ethernet14/4" + ] + } + }, + "Ethernet56": { + "index": "15,15,15,15", + "lanes": "117,118,119,120", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet15/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet15/1", + "Ethernet15/3" + ], + "4x25G[10G]": [ + "Ethernet15/1", + "Ethernet15/2", + "Ethernet15/3", + "Ethernet15/4" + ] + } + }, + "Ethernet60": { + "index": "16,16,16,16", + "lanes": "121,122,123,124", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet16/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet16/1", + "Ethernet16/3" + ], + "4x25G[10G]": [ + "Ethernet16/1", + "Ethernet16/2", + "Ethernet16/3", + "Ethernet16/4" + ] + } + }, + "Ethernet64": { + "index": "17,17,17,17", + "lanes": "141,142,143,144", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet17/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet17/1", + "Ethernet17/3" + ], + "4x25G[10G]": [ + "Ethernet17/1", + "Ethernet17/2", + "Ethernet17/3", + "Ethernet17/4" + ] + } + }, + "Ethernet68": { + "index": "18,18,18,18", + "lanes": "133,134,135,136", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet18/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet18/1", + "Ethernet18/3" + ], + "4x25G[10G]": [ + "Ethernet18/1", + "Ethernet18/2", + "Ethernet18/3", + "Ethernet18/4" + ] + } + }, + "Ethernet72": { + "index": "19,19,19,19", + "lanes": "197,198,199,200", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet19/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet19/1", + "Ethernet19/3" + ], + "4x25G[10G]": [ + "Ethernet19/1", + "Ethernet19/2", + "Ethernet19/3", + "Ethernet19/4" + ] + } + }, + "Ethernet76": { + "index": "20,20,20,20", + "lanes": "205,206,207,208", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet20/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet20/1", + "Ethernet20/3" + ], + "4x25G[10G]": [ + "Ethernet20/1", + "Ethernet20/2", + "Ethernet20/3", + "Ethernet20/4" + ] + } + }, + "Ethernet80": { + "index": "21,21,21,21", + "lanes": "217,218,219,220", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet21/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet21/1", + "Ethernet21/3" + ], + "4x25G[10G]": [ + "Ethernet21/1", + "Ethernet21/2", + "Ethernet21/3", + "Ethernet21/4" + ] + } + }, + "Ethernet84": { + "index": "22,22,22,22", + "lanes": "213,214,215,216", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet22/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet22/1", + "Ethernet22/3" + ], + "4x25G[10G]": [ + "Ethernet22/1", + "Ethernet22/2", + "Ethernet22/3", + "Ethernet22/4" + ] + } + }, + "Ethernet88": { + "index": "23,23,23,23", + "lanes": "229,230,231,232", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet23/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet23/1", + "Ethernet23/3" + ], + "4x25G[10G]": [ + "Ethernet23/1", + "Ethernet23/2", + "Ethernet23/3", + "Ethernet23/4" + ] + } + }, + "Ethernet92": { + "index": "24,24,24,24", + "lanes": "237,238,239,240", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet24/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet24/1", + "Ethernet24/3" + ], + "4x25G[10G]": [ + "Ethernet24/1", + "Ethernet24/2", + "Ethernet24/3", + "Ethernet24/4" + ] + } + }, + "Ethernet96": { + "index": "25,25,25,25", + "lanes": "249,250,251,252", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet25/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet25/1", + "Ethernet25/3" + ], + "4x25G[10G]": [ + "Ethernet25/1", + "Ethernet25/2", + "Ethernet25/3", + "Ethernet25/4" + ] + } + }, + "Ethernet100": { + "index": "26,26,26,26", + "lanes": "245,246,247,248", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet26/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet26/1", + "Ethernet26/3" + ], + "4x25G[10G]": [ + "Ethernet26/1", + "Ethernet26/2", + "Ethernet26/3", + "Ethernet26/4" + ] + } + }, + "Ethernet104": { + "index": "27,27,27,27", + "lanes": "149,150,151,152", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet27/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet27/1", + "Ethernet27/3" + ], + "4x25G[10G]": [ + "Ethernet27/1", + "Ethernet27/2", + "Ethernet27/3", + "Ethernet27/4" + ] + } + }, + "Ethernet108": { + "index": "28,28,28,28", + "lanes": "153,154,155,156", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet28/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet28/1", + "Ethernet28/3" + ], + "4x25G[10G]": [ + "Ethernet28/1", + "Ethernet28/2", + "Ethernet28/3", + "Ethernet28/4" + ] + } + }, + "Ethernet112": { + "index": "29,29,29,29", + "lanes": "173,174,175,176", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet29/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet29/1", + "Ethernet29/3" + ], + "4x25G[10G]": [ + "Ethernet29/1", + "Ethernet29/2", + "Ethernet29/3", + "Ethernet29/4" + ] + } + }, + "Ethernet116": { + "index": "30,30,30,30", + "lanes": "161,162,163,164", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet30/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet30/1", + "Ethernet30/3" + ], + "4x25G[10G]": [ + "Ethernet30/1", + "Ethernet30/2", + "Ethernet30/3", + "Ethernet30/4" + ] + } + }, + "Ethernet120": { + "index": "31,31,31,31", + "lanes": "181,182,183,184", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet31/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet31/1", + "Ethernet31/3" + ], + "4x25G[10G]": [ + "Ethernet31/1", + "Ethernet31/2", + "Ethernet31/3", + "Ethernet31/4" + ] + } + }, + "Ethernet124": { + "index": "32,32,32,32", + "lanes": "185,186,187,188", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet32/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet32/1", + "Ethernet32/3" + ], + "4x25G[10G]": [ + "Ethernet32/1", + "Ethernet32/2", + "Ethernet32/3", + "Ethernet32/4" + ] + } + }, + "Ethernet128": { + "index": "33,33,33,33", + "lanes": "69,70,71,72", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet33/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet33/1", + "Ethernet33/3" + ], + "4x25G[10G]": [ + "Ethernet33/1", + "Ethernet33/2", + "Ethernet33/3", + "Ethernet33/4" + ] + } + }, + "Ethernet132": { + "index": "34,34,34,34", + "lanes": "73,74,75,76", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet34/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet34/1", + "Ethernet34/3" + ], + "4x25G[10G]": [ + "Ethernet34/1", + "Ethernet34/2", + "Ethernet34/3", + "Ethernet34/4" + ] + } + }, + "Ethernet136": { + "index": "35,35,35,35", + "lanes": "93,94,95,96", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet35/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet35/1", + "Ethernet35/3" + ], + "4x25G[10G]": [ + "Ethernet35/1", + "Ethernet35/2", + "Ethernet35/3", + "Ethernet35/4" + ] + } + }, + "Ethernet140": { + "index": "36,36,36,36", + "lanes": "81,82,83,84", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet36/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet36/1", + "Ethernet36/3" + ], + "4x25G[10G]": [ + "Ethernet36/1", + "Ethernet36/2", + "Ethernet36/3", + "Ethernet36/4" + ] + } + }, + "Ethernet144": { + "index": "37,37,37,37", + "lanes": "101,102,103,104", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet37/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet37/1", + "Ethernet37/3" + ], + "4x25G[10G]": [ + "Ethernet37/1", + "Ethernet37/2", + "Ethernet37/3", + "Ethernet37/4" + ] + } + }, + "Ethernet148": { + "index": "38,38,38,38", + "lanes": "105,106,107,108", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet38/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet38/1", + "Ethernet38/3" + ], + "4x25G[10G]": [ + "Ethernet38/1", + "Ethernet38/2", + "Ethernet38/3", + "Ethernet38/4" + ] + } + }, + "Ethernet152": { + "index": "39,39,39,39", + "lanes": "9,10,11,12", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet39/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet39/1", + "Ethernet39/3" + ], + "4x25G[10G]": [ + "Ethernet39/1", + "Ethernet39/2", + "Ethernet39/3", + "Ethernet39/4" + ] + } + }, + "Ethernet156": { + "index": "40,40,40,40", + "lanes": "1,2,3,4", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet40/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet40/1", + "Ethernet40/3" + ], + "4x25G[10G]": [ + "Ethernet40/1", + "Ethernet40/2", + "Ethernet40/3", + "Ethernet40/4" + ] + } + }, + "Ethernet160": { + "index": "41,41,41,41", + "lanes": "17,18,19,20", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet41/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet41/1", + "Ethernet41/3" + ], + "4x25G[10G]": [ + "Ethernet41/1", + "Ethernet41/2", + "Ethernet41/3", + "Ethernet41/4" + ] + } + }, + "Ethernet164": { + "index": "42,42,42,42", + "lanes": "29,30,31,32", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet42/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet42/1", + "Ethernet42/3" + ], + "4x25G[10G]": [ + "Ethernet42/1", + "Ethernet42/2", + "Ethernet42/3", + "Ethernet42/4" + ] + } + }, + "Ethernet168": { + "index": "43,43,43,43", + "lanes": "41,42,43,44", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet43/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet43/1", + "Ethernet43/3" + ], + "4x25G[10G]": [ + "Ethernet43/1", + "Ethernet43/2", + "Ethernet43/3", + "Ethernet43/4" + ] + } + }, + "Ethernet172": { + "index": "44,44,44,44", + "lanes": "33,34,35,36", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet44/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet44/1", + "Ethernet44/3" + ], + "4x25G[10G]": [ + "Ethernet44/1", + "Ethernet44/2", + "Ethernet44/3", + "Ethernet44/4" + ] + } + }, + "Ethernet176": { + "index": "45,45,45,45", + "lanes": "49,50,51,52", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet45/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet45/1", + "Ethernet45/3" + ], + "4x25G[10G]": [ + "Ethernet45/1", + "Ethernet45/2", + "Ethernet45/3", + "Ethernet45/4" + ] + } + }, + "Ethernet180": { + "index": "46,46,46,46", + "lanes": "61,62,63,64", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet46/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet46/1", + "Ethernet46/3" + ], + "4x25G[10G]": [ + "Ethernet46/1", + "Ethernet46/2", + "Ethernet46/3", + "Ethernet46/4" + ] + } + }, + "Ethernet184": { + "index": "47,47,47,47", + "lanes": "125,126,127,128", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet47/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet47/1", + "Ethernet47/3" + ], + "4x25G[10G]": [ + "Ethernet47/1", + "Ethernet47/2", + "Ethernet47/3", + "Ethernet47/4" + ] + } + }, + "Ethernet188": { + "index": "48,48,48,48", + "lanes": "113,114,115,116", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet48/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet48/1", + "Ethernet48/3" + ], + "4x25G[10G]": [ + "Ethernet48/1", + "Ethernet48/2", + "Ethernet48/3", + "Ethernet48/4" + ] + } + }, + "Ethernet192": { + "index": "49,49,49,49", + "lanes": "129,130,131,132", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet49/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet49/1", + "Ethernet49/3" + ], + "4x25G[10G]": [ + "Ethernet49/1", + "Ethernet49/2", + "Ethernet49/3", + "Ethernet49/4" + ] + } + }, + "Ethernet196": { + "index": "50,50,50,50", + "lanes": "137,138,139,140", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet50/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet50/1", + "Ethernet50/3" + ], + "4x25G[10G]": [ + "Ethernet50/1", + "Ethernet50/2", + "Ethernet50/3", + "Ethernet50/4" + ] + } + }, + "Ethernet200": { + "index": "51,51,51,51", + "lanes": "201,202,203,204", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet51/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet51/1", + "Ethernet51/3" + ], + "4x25G[10G]": [ + "Ethernet51/1", + "Ethernet51/2", + "Ethernet51/3", + "Ethernet51/4" + ] + } + }, + "Ethernet204": { + "index": "52,52,52,52", + "lanes": "193,194,195,196", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet52/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet52/1", + "Ethernet52/3" + ], + "4x25G[10G]": [ + "Ethernet52/1", + "Ethernet52/2", + "Ethernet52/3", + "Ethernet52/4" + ] + } + }, + "Ethernet208": { + "index": "53,53,53,53", + "lanes": "209,210,211,212", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet53/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet53/1", + "Ethernet53/3" + ], + "4x25G[10G]": [ + "Ethernet53/1", + "Ethernet53/2", + "Ethernet53/3", + "Ethernet53/4" + ] + } + }, + "Ethernet212": { + "index": "54,54,54,54", + "lanes": "221,222,223,224", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet54/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet54/1", + "Ethernet54/3" + ], + "4x25G[10G]": [ + "Ethernet54/1", + "Ethernet54/2", + "Ethernet54/3", + "Ethernet54/4" + ] + } + }, + "Ethernet216": { + "index": "55,55,55,55", + "lanes": "233,234,235,236", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet55/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet55/1", + "Ethernet55/3" + ], + "4x25G[10G]": [ + "Ethernet55/1", + "Ethernet55/2", + "Ethernet55/3", + "Ethernet55/4" + ] + } + }, + "Ethernet220": { + "index": "56,56,56,56", + "lanes": "225,226,227,228", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet56/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet56/1", + "Ethernet56/3" + ], + "4x25G[10G]": [ + "Ethernet56/1", + "Ethernet56/2", + "Ethernet56/3", + "Ethernet56/4" + ] + } + }, + "Ethernet224": { + "index": "57,57,57,57", + "lanes": "241,242,243,244", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet57/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet57/1", + "Ethernet57/3" + ], + "4x25G[10G]": [ + "Ethernet57/1", + "Ethernet57/2", + "Ethernet57/3", + "Ethernet57/4" + ] + } + }, + "Ethernet228": { + "index": "58,58,58,58", + "lanes": "253,254,255,256", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet58/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet58/1", + "Ethernet58/3" + ], + "4x25G[10G]": [ + "Ethernet58/1", + "Ethernet58/2", + "Ethernet58/3", + "Ethernet58/4" + ] + } + }, + "Ethernet232": { + "index": "59,59,59,59", + "lanes": "157,158,159,160", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet59/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet59/1", + "Ethernet59/3" + ], + "4x25G[10G]": [ + "Ethernet59/1", + "Ethernet59/2", + "Ethernet59/3", + "Ethernet59/4" + ] + } + }, + "Ethernet236": { + "index": "60,60,60,60", + "lanes": "145,146,147,148", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet60/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet60/1", + "Ethernet60/3" + ], + "4x25G[10G]": [ + "Ethernet60/1", + "Ethernet60/2", + "Ethernet60/3", + "Ethernet60/4" + ] + } + }, + "Ethernet240": { + "index": "61,61,61,61", + "lanes": "165,166,167,168", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet61/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet61/1", + "Ethernet61/3" + ], + "4x25G[10G]": [ + "Ethernet61/1", + "Ethernet61/2", + "Ethernet61/3", + "Ethernet61/4" + ] + } + }, + "Ethernet244": { + "index": "62,62,62,62", + "lanes": "169,170,171,172", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet62/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet62/1", + "Ethernet62/3" + ], + "4x25G[10G]": [ + "Ethernet62/1", + "Ethernet62/2", + "Ethernet62/3", + "Ethernet62/4" + ] + } + }, + "Ethernet248": { + "index": "63,63,63,63", + "lanes": "189,190,191,192", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet63/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet63/1", + "Ethernet63/3" + ], + "4x25G[10G]": [ + "Ethernet63/1", + "Ethernet63/2", + "Ethernet63/3", + "Ethernet63/4" + ] + } + }, + "Ethernet252": { + "index": "64,64,64,64", + "lanes": "177,178,179,180", + "breakout_modes": { + "1x100G[50G,40G,25G,10G]": [ + "Ethernet64/1" + ], + "2x50G[40G,25G,10G]": [ + "Ethernet64/1", + "Ethernet64/3" + ], + "4x25G[10G]": [ + "Ethernet64/1", + "Ethernet64/2", + "Ethernet64/3", + "Ethernet64/4" + ] + } + }, + "Ethernet256": { + "index": "65", + "lanes": "257", + "breakout_modes": { + "1x10G": [ + "Ethernet65" + ] + } + }, + "Ethernet260": { + "index": "66", + "lanes": "259", + "breakout_modes": { + "1x10G": [ + "Ethernet66" + ] + } + } + } } \ No newline at end of file diff --git a/device/arista/x86_64-arista_7260cx3_64/th2-a7260cx3-64-flex.config.bcm b/device/arista/x86_64-arista_7260cx3_64/th2-a7260cx3-64-flex.config.bcm new file mode 100644 index 000000000000..6348e6c390cd --- /dev/null +++ b/device/arista/x86_64-arista_7260cx3_64/th2-a7260cx3-64-flex.config.bcm @@ -0,0 +1,876 @@ +PHY_AN_ALLOW_PLL_CHANGE=1 +arl_clean_timeout_usec=15000000 +asf_mem_profile=2 +bcm_num_cos=10 +bcm_stat_flags=1 +bcm_stat_jumbo=9236 +cdma_timeout_usec=15000000 +core_clock_frequency=1700 +dma_desc_timeout_usec=15000000 +dpp_clock_ratio=2:3 +higig2_hdr_mode=1 +ipv6_lpm_128b_enable=1 +l2xmsg_mode=1 +l3_alpm_enable=2 +lpm_scaling_enable=0 +max_vp_lags=0 +mem_scan_enable=1 +miim_intr_enable=0 +module_64ports=1 +os=unix +oversubscribe_mode=1 +pbmp_xport_xe=0x3fffd0000ffff40003fffc0001fffe +phy_an_allow_pll_change_hg=0 +phy_an_c37_66=2 +phy_an_c37_100=2 +phy_an_c73_1=1 +phy_an_c73_2=1 +phy_an_c73_3=1 +phy_an_c73_4=1 +phy_an_c73_5=1 +phy_an_c73_6=1 +phy_an_c73_7=1 +phy_an_c73_8=1 +phy_an_c73_9=1 +phy_an_c73_10=1 +phy_an_c73_11=1 +phy_an_c73_12=1 +phy_an_c73_13=1 +phy_an_c73_14=1 +phy_an_c73_15=1 +phy_an_c73_16=1 +phy_an_c73_17=1 +phy_an_c73_18=1 +phy_an_c73_19=1 +phy_an_c73_20=1 +phy_an_c73_21=1 +phy_an_c73_22=1 +phy_an_c73_23=1 +phy_an_c73_24=1 +phy_an_c73_25=1 +phy_an_c73_26=1 +phy_an_c73_27=1 +phy_an_c73_28=1 +phy_an_c73_29=1 +phy_an_c73_30=1 +phy_an_c73_31=1 +phy_an_c73_32=1 +phy_an_c73_34=1 +phy_an_c73_35=1 +phy_an_c73_36=1 +phy_an_c73_37=1 +phy_an_c73_38=1 +phy_an_c73_39=1 +phy_an_c73_40=1 +phy_an_c73_41=1 +phy_an_c73_42=1 +phy_an_c73_43=1 +phy_an_c73_44=1 +phy_an_c73_45=1 +phy_an_c73_46=1 +phy_an_c73_47=1 +phy_an_c73_48=1 +phy_an_c73_49=1 +phy_an_c73_50=1 +phy_an_c73_51=1 +phy_an_c73_52=1 +phy_an_c73_53=1 +phy_an_c73_54=1 +phy_an_c73_55=1 +phy_an_c73_56=1 +phy_an_c73_57=1 +phy_an_c73_58=1 +phy_an_c73_59=1 +phy_an_c73_60=1 +phy_an_c73_61=1 +phy_an_c73_62=1 +phy_an_c73_63=1 +phy_an_c73_64=1 +phy_an_c73_65=1 +phy_an_c73_66=0 +phy_an_c73_68=1 +phy_an_c73_69=1 +phy_an_c73_70=1 +phy_an_c73_71=1 +phy_an_c73_72=1 +phy_an_c73_73=1 +phy_an_c73_74=1 +phy_an_c73_75=1 +phy_an_c73_76=1 +phy_an_c73_77=1 +phy_an_c73_78=1 +phy_an_c73_79=1 +phy_an_c73_80=1 +phy_an_c73_81=1 +phy_an_c73_82=1 +phy_an_c73_83=1 +phy_an_c73_84=1 +phy_an_c73_85=1 +phy_an_c73_86=1 +phy_an_c73_87=1 +phy_an_c73_88=1 +phy_an_c73_89=1 +phy_an_c73_90=1 +phy_an_c73_91=1 +phy_an_c73_92=1 +phy_an_c73_93=1 +phy_an_c73_94=1 +phy_an_c73_95=1 +phy_an_c73_96=1 +phy_an_c73_97=1 +phy_an_c73_98=1 +phy_an_c73_99=1 +phy_an_c73_100=0 +phy_an_c73_102=1 +phy_an_c73_103=1 +phy_an_c73_104=1 +phy_an_c73_105=1 +phy_an_c73_106=1 +phy_an_c73_107=1 +phy_an_c73_108=1 +phy_an_c73_109=1 +phy_an_c73_110=1 +phy_an_c73_111=1 +phy_an_c73_112=1 +phy_an_c73_113=1 +phy_an_c73_114=1 +phy_an_c73_115=1 +phy_an_c73_116=1 +phy_an_c73_117=1 +phy_an_c73_118=1 +phy_an_c73_119=1 +phy_an_c73_120=1 +phy_an_c73_121=1 +phy_an_c73_122=1 +phy_an_c73_123=1 +phy_an_c73_124=1 +phy_an_c73_125=1 +phy_an_c73_126=1 +phy_an_c73_127=1 +phy_an_c73_128=1 +phy_an_c73_129=1 +phy_an_c73_130=1 +phy_an_c73_131=1 +phy_an_c73_132=1 +phy_an_c73_133=1 +phy_chain_rx_lane_map_physical{1.0}=0x3210 +phy_chain_rx_lane_map_physical{5.0}=0x3201 +phy_chain_rx_lane_map_physical{9.0}=0x0321 +phy_chain_rx_lane_map_physical{13.0}=0x0321 +phy_chain_rx_lane_map_physical{17.0}=0x3210 +phy_chain_rx_lane_map_physical{21.0}=0x3021 +phy_chain_rx_lane_map_physical{25.0}=0x2301 +phy_chain_rx_lane_map_physical{29.0}=0x3021 +phy_chain_rx_lane_map_physical{33.0}=0x1302 +phy_chain_rx_lane_map_physical{37.0}=0x2031 +phy_chain_rx_lane_map_physical{41.0}=0x3021 +phy_chain_rx_lane_map_physical{45.0}=0x1023 +phy_chain_rx_lane_map_physical{49.0}=0x0213 +phy_chain_rx_lane_map_physical{53.0}=0x3201 +phy_chain_rx_lane_map_physical{57.0}=0x2013 +phy_chain_rx_lane_map_physical{61.0}=0x0213 +phy_chain_rx_lane_map_physical{65.0}=0x1203 +phy_chain_rx_lane_map_physical{69.0}=0x0213 +phy_chain_rx_lane_map_physical{73.0}=0x0213 +phy_chain_rx_lane_map_physical{77.0}=0x3120 +phy_chain_rx_lane_map_physical{81.0}=0x0213 +phy_chain_rx_lane_map_physical{85.0}=0x2031 +phy_chain_rx_lane_map_physical{89.0}=0x2031 +phy_chain_rx_lane_map_physical{93.0}=0x3120 +phy_chain_rx_lane_map_physical{97.0}=0x1203 +phy_chain_rx_lane_map_physical{101.0}=0x0123 +phy_chain_rx_lane_map_physical{105.0}=0x0123 +phy_chain_rx_lane_map_physical{109.0}=0x0123 +phy_chain_rx_lane_map_physical{113.0}=0x2301 +phy_chain_rx_lane_map_physical{117.0}=0x3210 +phy_chain_rx_lane_map_physical{121.0}=0x3210 +phy_chain_rx_lane_map_physical{125.0}=0x1203 +phy_chain_rx_lane_map_physical{129.0}=0x3210 +phy_chain_rx_lane_map_physical{133.0}=0x1032 +phy_chain_rx_lane_map_physical{137.0}=0x3210 +phy_chain_rx_lane_map_physical{141.0}=0x0123 +phy_chain_rx_lane_map_physical{145.0}=0x3210 +phy_chain_rx_lane_map_physical{149.0}=0x2310 +phy_chain_rx_lane_map_physical{153.0}=0x0132 +phy_chain_rx_lane_map_physical{157.0}=0x1302 +phy_chain_rx_lane_map_physical{161.0}=0x3021 +phy_chain_rx_lane_map_physical{165.0}=0x2031 +phy_chain_rx_lane_map_physical{169.0}=0x2031 +phy_chain_rx_lane_map_physical{173.0}=0x1302 +phy_chain_rx_lane_map_physical{177.0}=0x2031 +phy_chain_rx_lane_map_physical{181.0}=0x0213 +phy_chain_rx_lane_map_physical{185.0}=0x0213 +phy_chain_rx_lane_map_physical{189.0}=0x1302 +phy_chain_rx_lane_map_physical{193.0}=0x3120 +phy_chain_rx_lane_map_physical{197.0}=0x0231 +phy_chain_rx_lane_map_physical{201.0}=0x2031 +phy_chain_rx_lane_map_physical{205.0}=0x0213 +phy_chain_rx_lane_map_physical{209.0}=0x2013 +phy_chain_rx_lane_map_physical{213.0}=0x3021 +phy_chain_rx_lane_map_physical{217.0}=0x0231 +phy_chain_rx_lane_map_physical{221.0}=0x2031 +phy_chain_rx_lane_map_physical{225.0}=0x1203 +phy_chain_rx_lane_map_physical{229.0}=0x1230 +phy_chain_rx_lane_map_physical{233.0}=0x3021 +phy_chain_rx_lane_map_physical{237.0}=0x1032 +phy_chain_rx_lane_map_physical{241.0}=0x2301 +phy_chain_rx_lane_map_physical{245.0}=0x0321 +phy_chain_rx_lane_map_physical{249.0}=0x2301 +phy_chain_rx_lane_map_physical{253.0}=0x2301 +phy_chain_rx_lane_map_physical{257.0}=0x3210 +phy_chain_rx_polarity_flip_physical{1.0}=0x1 +phy_chain_rx_polarity_flip_physical{2.0}=0x0 +phy_chain_rx_polarity_flip_physical{3.0}=0x1 +phy_chain_rx_polarity_flip_physical{4.0}=0x0 +phy_chain_rx_polarity_flip_physical{5.0}=0x1 +phy_chain_rx_polarity_flip_physical{6.0}=0x0 +phy_chain_rx_polarity_flip_physical{7.0}=0x0 +phy_chain_rx_polarity_flip_physical{8.0}=0x1 +phy_chain_rx_polarity_flip_physical{9.0}=0x1 +phy_chain_rx_polarity_flip_physical{10.0}=0x0 +phy_chain_rx_polarity_flip_physical{11.0}=0x1 +phy_chain_rx_polarity_flip_physical{12.0}=0x1 +phy_chain_rx_polarity_flip_physical{13.0}=0x1 +phy_chain_rx_polarity_flip_physical{14.0}=0x0 +phy_chain_rx_polarity_flip_physical{15.0}=0x1 +phy_chain_rx_polarity_flip_physical{16.0}=0x0 +phy_chain_rx_polarity_flip_physical{17.0}=0x1 +phy_chain_rx_polarity_flip_physical{18.0}=0x0 +phy_chain_rx_polarity_flip_physical{19.0}=0x1 +phy_chain_rx_polarity_flip_physical{20.0}=0x0 +phy_chain_rx_polarity_flip_physical{21.0}=0x0 +phy_chain_rx_polarity_flip_physical{22.0}=0x0 +phy_chain_rx_polarity_flip_physical{23.0}=0x1 +phy_chain_rx_polarity_flip_physical{24.0}=0x0 +phy_chain_rx_polarity_flip_physical{25.0}=0x1 +phy_chain_rx_polarity_flip_physical{26.0}=0x0 +phy_chain_rx_polarity_flip_physical{27.0}=0x1 +phy_chain_rx_polarity_flip_physical{28.0}=0x0 +phy_chain_rx_polarity_flip_physical{29.0}=0x0 +phy_chain_rx_polarity_flip_physical{30.0}=0x0 +phy_chain_rx_polarity_flip_physical{31.0}=0x0 +phy_chain_rx_polarity_flip_physical{32.0}=0x1 +phy_chain_rx_polarity_flip_physical{33.0}=0x0 +phy_chain_rx_polarity_flip_physical{34.0}=0x0 +phy_chain_rx_polarity_flip_physical{35.0}=0x1 +phy_chain_rx_polarity_flip_physical{36.0}=0x1 +phy_chain_rx_polarity_flip_physical{37.0}=0x1 +phy_chain_rx_polarity_flip_physical{38.0}=0x1 +phy_chain_rx_polarity_flip_physical{39.0}=0x0 +phy_chain_rx_polarity_flip_physical{40.0}=0x0 +phy_chain_rx_polarity_flip_physical{41.0}=0x0 +phy_chain_rx_polarity_flip_physical{42.0}=0x1 +phy_chain_rx_polarity_flip_physical{43.0}=0x1 +phy_chain_rx_polarity_flip_physical{44.0}=0x1 +phy_chain_rx_polarity_flip_physical{45.0}=0x1 +phy_chain_rx_polarity_flip_physical{46.0}=0x0 +phy_chain_rx_polarity_flip_physical{47.0}=0x0 +phy_chain_rx_polarity_flip_physical{48.0}=0x1 +phy_chain_rx_polarity_flip_physical{49.0}=0x1 +phy_chain_rx_polarity_flip_physical{50.0}=0x1 +phy_chain_rx_polarity_flip_physical{51.0}=0x0 +phy_chain_rx_polarity_flip_physical{52.0}=0x0 +phy_chain_rx_polarity_flip_physical{53.0}=0x0 +phy_chain_rx_polarity_flip_physical{54.0}=0x0 +phy_chain_rx_polarity_flip_physical{55.0}=0x1 +phy_chain_rx_polarity_flip_physical{56.0}=0x0 +phy_chain_rx_polarity_flip_physical{57.0}=0x0 +phy_chain_rx_polarity_flip_physical{58.0}=0x0 +phy_chain_rx_polarity_flip_physical{59.0}=0x1 +phy_chain_rx_polarity_flip_physical{60.0}=0x1 +phy_chain_rx_polarity_flip_physical{61.0}=0x0 +phy_chain_rx_polarity_flip_physical{62.0}=0x0 +phy_chain_rx_polarity_flip_physical{63.0}=0x1 +phy_chain_rx_polarity_flip_physical{64.0}=0x1 +phy_chain_rx_polarity_flip_physical{65.0}=0x1 +phy_chain_rx_polarity_flip_physical{66.0}=0x1 +phy_chain_rx_polarity_flip_physical{67.0}=0x0 +phy_chain_rx_polarity_flip_physical{68.0}=0x1 +phy_chain_rx_polarity_flip_physical{69.0}=0x0 +phy_chain_rx_polarity_flip_physical{70.0}=0x0 +phy_chain_rx_polarity_flip_physical{71.0}=0x1 +phy_chain_rx_polarity_flip_physical{72.0}=0x1 +phy_chain_rx_polarity_flip_physical{73.0}=0x1 +phy_chain_rx_polarity_flip_physical{74.0}=0x1 +phy_chain_rx_polarity_flip_physical{75.0}=0x0 +phy_chain_rx_polarity_flip_physical{76.0}=0x0 +phy_chain_rx_polarity_flip_physical{77.0}=0x0 +phy_chain_rx_polarity_flip_physical{78.0}=0x0 +phy_chain_rx_polarity_flip_physical{79.0}=0x1 +phy_chain_rx_polarity_flip_physical{80.0}=0x1 +phy_chain_rx_polarity_flip_physical{81.0}=0x1 +phy_chain_rx_polarity_flip_physical{82.0}=0x1 +phy_chain_rx_polarity_flip_physical{83.0}=0x0 +phy_chain_rx_polarity_flip_physical{84.0}=0x0 +phy_chain_rx_polarity_flip_physical{85.0}=0x1 +phy_chain_rx_polarity_flip_physical{86.0}=0x1 +phy_chain_rx_polarity_flip_physical{87.0}=0x0 +phy_chain_rx_polarity_flip_physical{88.0}=0x0 +phy_chain_rx_polarity_flip_physical{89.0}=0x0 +phy_chain_rx_polarity_flip_physical{90.0}=0x0 +phy_chain_rx_polarity_flip_physical{91.0}=0x1 +phy_chain_rx_polarity_flip_physical{92.0}=0x1 +phy_chain_rx_polarity_flip_physical{93.0}=0x0 +phy_chain_rx_polarity_flip_physical{94.0}=0x0 +phy_chain_rx_polarity_flip_physical{95.0}=0x1 +phy_chain_rx_polarity_flip_physical{96.0}=0x0 +phy_chain_rx_polarity_flip_physical{97.0}=0x1 +phy_chain_rx_polarity_flip_physical{98.0}=0x1 +phy_chain_rx_polarity_flip_physical{99.0}=0x0 +phy_chain_rx_polarity_flip_physical{100.0}=0x1 +phy_chain_rx_polarity_flip_physical{101.0}=0x1 +phy_chain_rx_polarity_flip_physical{102.0}=0x0 +phy_chain_rx_polarity_flip_physical{103.0}=0x1 +phy_chain_rx_polarity_flip_physical{104.0}=0x0 +phy_chain_rx_polarity_flip_physical{105.0}=0x1 +phy_chain_rx_polarity_flip_physical{106.0}=0x0 +phy_chain_rx_polarity_flip_physical{107.0}=0x1 +phy_chain_rx_polarity_flip_physical{108.0}=0x0 +phy_chain_rx_polarity_flip_physical{109.0}=0x0 +phy_chain_rx_polarity_flip_physical{110.0}=0x1 +phy_chain_rx_polarity_flip_physical{111.0}=0x0 +phy_chain_rx_polarity_flip_physical{112.0}=0x1 +phy_chain_rx_polarity_flip_physical{113.0}=0x1 +phy_chain_rx_polarity_flip_physical{114.0}=0x0 +phy_chain_rx_polarity_flip_physical{115.0}=0x1 +phy_chain_rx_polarity_flip_physical{116.0}=0x0 +phy_chain_rx_polarity_flip_physical{117.0}=0x0 +phy_chain_rx_polarity_flip_physical{118.0}=0x0 +phy_chain_rx_polarity_flip_physical{119.0}=0x1 +phy_chain_rx_polarity_flip_physical{120.0}=0x0 +phy_chain_rx_polarity_flip_physical{121.0}=0x1 +phy_chain_rx_polarity_flip_physical{122.0}=0x0 +phy_chain_rx_polarity_flip_physical{123.0}=0x1 +phy_chain_rx_polarity_flip_physical{124.0}=0x0 +phy_chain_rx_polarity_flip_physical{125.0}=0x0 +phy_chain_rx_polarity_flip_physical{126.0}=0x1 +phy_chain_rx_polarity_flip_physical{127.0}=0x1 +phy_chain_rx_polarity_flip_physical{128.0}=0x1 +phy_chain_rx_polarity_flip_physical{129.0}=0x0 +phy_chain_rx_polarity_flip_physical{130.0}=0x1 +phy_chain_rx_polarity_flip_physical{131.0}=0x1 +phy_chain_rx_polarity_flip_physical{132.0}=0x0 +phy_chain_rx_polarity_flip_physical{133.0}=0x1 +phy_chain_rx_polarity_flip_physical{134.0}=0x1 +phy_chain_rx_polarity_flip_physical{135.0}=0x1 +phy_chain_rx_polarity_flip_physical{136.0}=0x0 +phy_chain_rx_polarity_flip_physical{137.0}=0x0 +phy_chain_rx_polarity_flip_physical{138.0}=0x0 +phy_chain_rx_polarity_flip_physical{139.0}=0x1 +phy_chain_rx_polarity_flip_physical{140.0}=0x0 +phy_chain_rx_polarity_flip_physical{141.0}=0x1 +phy_chain_rx_polarity_flip_physical{142.0}=0x0 +phy_chain_rx_polarity_flip_physical{143.0}=0x1 +phy_chain_rx_polarity_flip_physical{144.0}=0x0 +phy_chain_rx_polarity_flip_physical{145.0}=0x1 +phy_chain_rx_polarity_flip_physical{146.0}=0x0 +phy_chain_rx_polarity_flip_physical{147.0}=0x1 +phy_chain_rx_polarity_flip_physical{148.0}=0x0 +phy_chain_rx_polarity_flip_physical{149.0}=0x0 +phy_chain_rx_polarity_flip_physical{150.0}=0x1 +phy_chain_rx_polarity_flip_physical{151.0}=0x1 +phy_chain_rx_polarity_flip_physical{152.0}=0x0 +phy_chain_rx_polarity_flip_physical{153.0}=0x0 +phy_chain_rx_polarity_flip_physical{154.0}=0x1 +phy_chain_rx_polarity_flip_physical{155.0}=0x1 +phy_chain_rx_polarity_flip_physical{156.0}=0x0 +phy_chain_rx_polarity_flip_physical{157.0}=0x0 +phy_chain_rx_polarity_flip_physical{158.0}=0x0 +phy_chain_rx_polarity_flip_physical{159.0}=0x1 +phy_chain_rx_polarity_flip_physical{160.0}=0x0 +phy_chain_rx_polarity_flip_physical{161.0}=0x1 +phy_chain_rx_polarity_flip_physical{162.0}=0x1 +phy_chain_rx_polarity_flip_physical{163.0}=0x0 +phy_chain_rx_polarity_flip_physical{164.0}=0x1 +phy_chain_rx_polarity_flip_physical{165.0}=0x0 +phy_chain_rx_polarity_flip_physical{166.0}=0x0 +phy_chain_rx_polarity_flip_physical{167.0}=0x1 +phy_chain_rx_polarity_flip_physical{168.0}=0x1 +phy_chain_rx_polarity_flip_physical{169.0}=0x1 +phy_chain_rx_polarity_flip_physical{170.0}=0x1 +phy_chain_rx_polarity_flip_physical{171.0}=0x0 +phy_chain_rx_polarity_flip_physical{172.0}=0x0 +phy_chain_rx_polarity_flip_physical{173.0}=0x0 +phy_chain_rx_polarity_flip_physical{174.0}=0x0 +phy_chain_rx_polarity_flip_physical{175.0}=0x1 +phy_chain_rx_polarity_flip_physical{176.0}=0x1 +phy_chain_rx_polarity_flip_physical{177.0}=0x1 +phy_chain_rx_polarity_flip_physical{178.0}=0x1 +phy_chain_rx_polarity_flip_physical{179.0}=0x0 +phy_chain_rx_polarity_flip_physical{180.0}=0x0 +phy_chain_rx_polarity_flip_physical{181.0}=0x1 +phy_chain_rx_polarity_flip_physical{182.0}=0x1 +phy_chain_rx_polarity_flip_physical{183.0}=0x0 +phy_chain_rx_polarity_flip_physical{184.0}=0x0 +phy_chain_rx_polarity_flip_physical{185.0}=0x0 +phy_chain_rx_polarity_flip_physical{186.0}=0x0 +phy_chain_rx_polarity_flip_physical{187.0}=0x1 +phy_chain_rx_polarity_flip_physical{188.0}=0x1 +phy_chain_rx_polarity_flip_physical{189.0}=0x0 +phy_chain_rx_polarity_flip_physical{190.0}=0x0 +phy_chain_rx_polarity_flip_physical{191.0}=0x1 +phy_chain_rx_polarity_flip_physical{192.0}=0x0 +phy_chain_rx_polarity_flip_physical{193.0}=0x0 +phy_chain_rx_polarity_flip_physical{194.0}=0x0 +phy_chain_rx_polarity_flip_physical{195.0}=0x1 +phy_chain_rx_polarity_flip_physical{196.0}=0x1 +phy_chain_rx_polarity_flip_physical{197.0}=0x1 +phy_chain_rx_polarity_flip_physical{198.0}=0x1 +phy_chain_rx_polarity_flip_physical{199.0}=0x0 +phy_chain_rx_polarity_flip_physical{200.0}=0x0 +phy_chain_rx_polarity_flip_physical{201.0}=0x0 +phy_chain_rx_polarity_flip_physical{202.0}=0x0 +phy_chain_rx_polarity_flip_physical{203.0}=0x1 +phy_chain_rx_polarity_flip_physical{204.0}=0x0 +phy_chain_rx_polarity_flip_physical{205.0}=0x1 +phy_chain_rx_polarity_flip_physical{206.0}=0x1 +phy_chain_rx_polarity_flip_physical{207.0}=0x0 +phy_chain_rx_polarity_flip_physical{208.0}=0x0 +phy_chain_rx_polarity_flip_physical{209.0}=0x1 +phy_chain_rx_polarity_flip_physical{210.0}=0x1 +phy_chain_rx_polarity_flip_physical{211.0}=0x0 +phy_chain_rx_polarity_flip_physical{212.0}=0x0 +phy_chain_rx_polarity_flip_physical{213.0}=0x0 +phy_chain_rx_polarity_flip_physical{214.0}=0x0 +phy_chain_rx_polarity_flip_physical{215.0}=0x1 +phy_chain_rx_polarity_flip_physical{216.0}=0x0 +phy_chain_rx_polarity_flip_physical{217.0}=0x0 +phy_chain_rx_polarity_flip_physical{218.0}=0x0 +phy_chain_rx_polarity_flip_physical{219.0}=0x1 +phy_chain_rx_polarity_flip_physical{220.0}=0x1 +phy_chain_rx_polarity_flip_physical{221.0}=0x0 +phy_chain_rx_polarity_flip_physical{222.0}=0x0 +phy_chain_rx_polarity_flip_physical{223.0}=0x1 +phy_chain_rx_polarity_flip_physical{224.0}=0x1 +phy_chain_rx_polarity_flip_physical{225.0}=0x1 +phy_chain_rx_polarity_flip_physical{226.0}=0x0 +phy_chain_rx_polarity_flip_physical{227.0}=0x0 +phy_chain_rx_polarity_flip_physical{228.0}=0x1 +phy_chain_rx_polarity_flip_physical{229.0}=0x0 +phy_chain_rx_polarity_flip_physical{230.0}=0x0 +phy_chain_rx_polarity_flip_physical{231.0}=0x1 +phy_chain_rx_polarity_flip_physical{232.0}=0x1 +phy_chain_rx_polarity_flip_physical{233.0}=0x1 +phy_chain_rx_polarity_flip_physical{234.0}=0x0 +phy_chain_rx_polarity_flip_physical{235.0}=0x0 +phy_chain_rx_polarity_flip_physical{236.0}=0x0 +phy_chain_rx_polarity_flip_physical{237.0}=0x1 +phy_chain_rx_polarity_flip_physical{238.0}=0x0 +phy_chain_rx_polarity_flip_physical{239.0}=0x1 +phy_chain_rx_polarity_flip_physical{240.0}=0x0 +phy_chain_rx_polarity_flip_physical{241.0}=0x1 +phy_chain_rx_polarity_flip_physical{242.0}=0x0 +phy_chain_rx_polarity_flip_physical{243.0}=0x1 +phy_chain_rx_polarity_flip_physical{244.0}=0x0 +phy_chain_rx_polarity_flip_physical{245.0}=0x1 +phy_chain_rx_polarity_flip_physical{246.0}=0x1 +phy_chain_rx_polarity_flip_physical{247.0}=0x1 +phy_chain_rx_polarity_flip_physical{248.0}=0x0 +phy_chain_rx_polarity_flip_physical{249.0}=0x0 +phy_chain_rx_polarity_flip_physical{250.0}=0x1 +phy_chain_rx_polarity_flip_physical{251.0}=0x0 +phy_chain_rx_polarity_flip_physical{252.0}=0x1 +phy_chain_rx_polarity_flip_physical{253.0}=0x1 +phy_chain_rx_polarity_flip_physical{254.0}=0x0 +phy_chain_rx_polarity_flip_physical{255.0}=0x1 +phy_chain_rx_polarity_flip_physical{256.0}=0x0 +phy_chain_rx_polarity_flip_physical{257.0}=0x0 +phy_chain_rx_polarity_flip_physical{259.0}=0x0 +phy_chain_tx_lane_map_physical{1.0}=0x2031 +phy_chain_tx_lane_map_physical{5.0}=0x2301 +phy_chain_tx_lane_map_physical{9.0}=0x3012 +phy_chain_tx_lane_map_physical{13.0}=0x3021 +phy_chain_tx_lane_map_physical{17.0}=0x1032 +phy_chain_tx_lane_map_physical{21.0}=0x0213 +phy_chain_tx_lane_map_physical{25.0}=0x0231 +phy_chain_tx_lane_map_physical{29.0}=0x1230 +phy_chain_tx_lane_map_physical{33.0}=0x1032 +phy_chain_tx_lane_map_physical{37.0}=0x0123 +phy_chain_tx_lane_map_physical{41.0}=0x0213 +phy_chain_tx_lane_map_physical{45.0}=0x0132 +phy_chain_tx_lane_map_physical{49.0}=0x2031 +phy_chain_tx_lane_map_physical{53.0}=0x2301 +phy_chain_tx_lane_map_physical{57.0}=0x2031 +phy_chain_tx_lane_map_physical{61.0}=0x2031 +phy_chain_tx_lane_map_physical{65.0}=0x1230 +phy_chain_tx_lane_map_physical{69.0}=0x2013 +phy_chain_tx_lane_map_physical{73.0}=0x0213 +phy_chain_tx_lane_map_physical{77.0}=0x2310 +phy_chain_tx_lane_map_physical{81.0}=0x0321 +phy_chain_tx_lane_map_physical{85.0}=0x2013 +phy_chain_tx_lane_map_physical{89.0}=0x0213 +phy_chain_tx_lane_map_physical{93.0}=0x3102 +phy_chain_tx_lane_map_physical{97.0}=0x3210 +phy_chain_tx_lane_map_physical{101.0}=0x1023 +phy_chain_tx_lane_map_physical{105.0}=0x1302 +phy_chain_tx_lane_map_physical{109.0}=0x0321 +phy_chain_tx_lane_map_physical{113.0}=0x2301 +phy_chain_tx_lane_map_physical{117.0}=0x3120 +phy_chain_tx_lane_map_physical{121.0}=0x3102 +phy_chain_tx_lane_map_physical{125.0}=0x3210 +phy_chain_tx_lane_map_physical{129.0}=0x1023 +phy_chain_tx_lane_map_physical{133.0}=0x3210 +phy_chain_tx_lane_map_physical{137.0}=0x2031 +phy_chain_tx_lane_map_physical{141.0}=0x1302 +phy_chain_tx_lane_map_physical{145.0}=0x3210 +phy_chain_tx_lane_map_physical{149.0}=0x0213 +phy_chain_tx_lane_map_physical{153.0}=0x3210 +phy_chain_tx_lane_map_physical{157.0}=0x1320 +phy_chain_tx_lane_map_physical{161.0}=0x3210 +phy_chain_tx_lane_map_physical{165.0}=0x0231 +phy_chain_tx_lane_map_physical{169.0}=0x3120 +phy_chain_tx_lane_map_physical{173.0}=0x0312 +phy_chain_tx_lane_map_physical{177.0}=0x0231 +phy_chain_tx_lane_map_physical{181.0}=0x3210 +phy_chain_tx_lane_map_physical{185.0}=0x3210 +phy_chain_tx_lane_map_physical{189.0}=0x1320 +phy_chain_tx_lane_map_physical{193.0}=0x0321 +phy_chain_tx_lane_map_physical{197.0}=0x3120 +phy_chain_tx_lane_map_physical{201.0}=0x3120 +phy_chain_tx_lane_map_physical{205.0}=0x0123 +phy_chain_tx_lane_map_physical{209.0}=0x3120 +phy_chain_tx_lane_map_physical{213.0}=0x3021 +phy_chain_tx_lane_map_physical{217.0}=0x0312 +phy_chain_tx_lane_map_physical{221.0}=0x2301 +phy_chain_tx_lane_map_physical{225.0}=0x0123 +phy_chain_tx_lane_map_physical{229.0}=0x2031 +phy_chain_tx_lane_map_physical{233.0}=0x0231 +phy_chain_tx_lane_map_physical{237.0}=0x0213 +phy_chain_tx_lane_map_physical{241.0}=0x1320 +phy_chain_tx_lane_map_physical{245.0}=0x2031 +phy_chain_tx_lane_map_physical{249.0}=0x3120 +phy_chain_tx_lane_map_physical{253.0}=0x0321 +phy_chain_tx_lane_map_physical{257.0}=0x3210 +phy_chain_tx_polarity_flip_physical{1.0}=0x0 +phy_chain_tx_polarity_flip_physical{2.0}=0x1 +phy_chain_tx_polarity_flip_physical{3.0}=0x1 +phy_chain_tx_polarity_flip_physical{4.0}=0x1 +phy_chain_tx_polarity_flip_physical{5.0}=0x1 +phy_chain_tx_polarity_flip_physical{6.0}=0x1 +phy_chain_tx_polarity_flip_physical{7.0}=0x1 +phy_chain_tx_polarity_flip_physical{8.0}=0x0 +phy_chain_tx_polarity_flip_physical{9.0}=0x0 +phy_chain_tx_polarity_flip_physical{10.0}=0x1 +phy_chain_tx_polarity_flip_physical{11.0}=0x1 +phy_chain_tx_polarity_flip_physical{12.0}=0x0 +phy_chain_tx_polarity_flip_physical{13.0}=0x0 +phy_chain_tx_polarity_flip_physical{14.0}=0x1 +phy_chain_tx_polarity_flip_physical{15.0}=0x0 +phy_chain_tx_polarity_flip_physical{16.0}=0x0 +phy_chain_tx_polarity_flip_physical{17.0}=0x0 +phy_chain_tx_polarity_flip_physical{18.0}=0x1 +phy_chain_tx_polarity_flip_physical{19.0}=0x1 +phy_chain_tx_polarity_flip_physical{20.0}=0x1 +phy_chain_tx_polarity_flip_physical{21.0}=0x0 +phy_chain_tx_polarity_flip_physical{22.0}=0x0 +phy_chain_tx_polarity_flip_physical{23.0}=0x0 +phy_chain_tx_polarity_flip_physical{24.0}=0x0 +phy_chain_tx_polarity_flip_physical{25.0}=0x1 +phy_chain_tx_polarity_flip_physical{26.0}=0x0 +phy_chain_tx_polarity_flip_physical{27.0}=0x0 +phy_chain_tx_polarity_flip_physical{28.0}=0x0 +phy_chain_tx_polarity_flip_physical{29.0}=0x1 +phy_chain_tx_polarity_flip_physical{30.0}=0x1 +phy_chain_tx_polarity_flip_physical{31.0}=0x1 +phy_chain_tx_polarity_flip_physical{32.0}=0x0 +phy_chain_tx_polarity_flip_physical{33.0}=0x0 +phy_chain_tx_polarity_flip_physical{34.0}=0x0 +phy_chain_tx_polarity_flip_physical{35.0}=0x0 +phy_chain_tx_polarity_flip_physical{36.0}=0x1 +phy_chain_tx_polarity_flip_physical{37.0}=0x1 +phy_chain_tx_polarity_flip_physical{38.0}=0x1 +phy_chain_tx_polarity_flip_physical{39.0}=0x1 +phy_chain_tx_polarity_flip_physical{40.0}=0x0 +phy_chain_tx_polarity_flip_physical{41.0}=0x0 +phy_chain_tx_polarity_flip_physical{42.0}=0x0 +phy_chain_tx_polarity_flip_physical{43.0}=0x0 +phy_chain_tx_polarity_flip_physical{44.0}=0x0 +phy_chain_tx_polarity_flip_physical{45.0}=0x1 +phy_chain_tx_polarity_flip_physical{46.0}=0x0 +phy_chain_tx_polarity_flip_physical{47.0}=0x1 +phy_chain_tx_polarity_flip_physical{48.0}=0x1 +phy_chain_tx_polarity_flip_physical{49.0}=0x0 +phy_chain_tx_polarity_flip_physical{50.0}=0x0 +phy_chain_tx_polarity_flip_physical{51.0}=0x0 +phy_chain_tx_polarity_flip_physical{52.0}=0x1 +phy_chain_tx_polarity_flip_physical{53.0}=0x0 +phy_chain_tx_polarity_flip_physical{54.0}=0x1 +phy_chain_tx_polarity_flip_physical{55.0}=0x1 +phy_chain_tx_polarity_flip_physical{56.0}=0x0 +phy_chain_tx_polarity_flip_physical{57.0}=0x0 +phy_chain_tx_polarity_flip_physical{58.0}=0x1 +phy_chain_tx_polarity_flip_physical{59.0}=0x1 +phy_chain_tx_polarity_flip_physical{60.0}=0x1 +phy_chain_tx_polarity_flip_physical{61.0}=0x0 +phy_chain_tx_polarity_flip_physical{62.0}=0x1 +phy_chain_tx_polarity_flip_physical{63.0}=0x1 +phy_chain_tx_polarity_flip_physical{64.0}=0x1 +phy_chain_tx_polarity_flip_physical{65.0}=0x0 +phy_chain_tx_polarity_flip_physical{66.0}=0x1 +phy_chain_tx_polarity_flip_physical{67.0}=0x1 +phy_chain_tx_polarity_flip_physical{68.0}=0x0 +phy_chain_tx_polarity_flip_physical{69.0}=0x1 +phy_chain_tx_polarity_flip_physical{70.0}=0x1 +phy_chain_tx_polarity_flip_physical{71.0}=0x1 +phy_chain_tx_polarity_flip_physical{72.0}=0x0 +phy_chain_tx_polarity_flip_physical{73.0}=0x1 +phy_chain_tx_polarity_flip_physical{74.0}=0x0 +phy_chain_tx_polarity_flip_physical{75.0}=0x0 +phy_chain_tx_polarity_flip_physical{76.0}=0x0 +phy_chain_tx_polarity_flip_physical{77.0}=0x0 +phy_chain_tx_polarity_flip_physical{78.0}=0x0 +phy_chain_tx_polarity_flip_physical{79.0}=0x1 +phy_chain_tx_polarity_flip_physical{80.0}=0x0 +phy_chain_tx_polarity_flip_physical{81.0}=0x1 +phy_chain_tx_polarity_flip_physical{82.0}=0x1 +phy_chain_tx_polarity_flip_physical{83.0}=0x1 +phy_chain_tx_polarity_flip_physical{84.0}=0x0 +phy_chain_tx_polarity_flip_physical{85.0}=0x1 +phy_chain_tx_polarity_flip_physical{86.0}=0x0 +phy_chain_tx_polarity_flip_physical{87.0}=0x0 +phy_chain_tx_polarity_flip_physical{88.0}=0x0 +phy_chain_tx_polarity_flip_physical{89.0}=0x1 +phy_chain_tx_polarity_flip_physical{90.0}=0x1 +phy_chain_tx_polarity_flip_physical{91.0}=0x1 +phy_chain_tx_polarity_flip_physical{92.0}=0x0 +phy_chain_tx_polarity_flip_physical{93.0}=0x0 +phy_chain_tx_polarity_flip_physical{94.0}=0x0 +phy_chain_tx_polarity_flip_physical{95.0}=0x0 +phy_chain_tx_polarity_flip_physical{96.0}=0x0 +phy_chain_tx_polarity_flip_physical{97.0}=0x0 +phy_chain_tx_polarity_flip_physical{98.0}=0x1 +phy_chain_tx_polarity_flip_physical{99.0}=0x1 +phy_chain_tx_polarity_flip_physical{100.0}=0x0 +phy_chain_tx_polarity_flip_physical{101.0}=0x0 +phy_chain_tx_polarity_flip_physical{102.0}=0x1 +phy_chain_tx_polarity_flip_physical{103.0}=0x0 +phy_chain_tx_polarity_flip_physical{104.0}=0x0 +phy_chain_tx_polarity_flip_physical{105.0}=0x0 +phy_chain_tx_polarity_flip_physical{106.0}=0x1 +phy_chain_tx_polarity_flip_physical{107.0}=0x1 +phy_chain_tx_polarity_flip_physical{108.0}=0x1 +phy_chain_tx_polarity_flip_physical{109.0}=0x0 +phy_chain_tx_polarity_flip_physical{110.0}=0x0 +phy_chain_tx_polarity_flip_physical{111.0}=0x0 +phy_chain_tx_polarity_flip_physical{112.0}=0x1 +phy_chain_tx_polarity_flip_physical{113.0}=0x1 +phy_chain_tx_polarity_flip_physical{114.0}=0x1 +phy_chain_tx_polarity_flip_physical{115.0}=0x1 +phy_chain_tx_polarity_flip_physical{116.0}=0x0 +phy_chain_tx_polarity_flip_physical{117.0}=0x1 +phy_chain_tx_polarity_flip_physical{118.0}=0x0 +phy_chain_tx_polarity_flip_physical{119.0}=0x0 +phy_chain_tx_polarity_flip_physical{120.0}=0x0 +phy_chain_tx_polarity_flip_physical{121.0}=0x0 +phy_chain_tx_polarity_flip_physical{122.0}=0x0 +phy_chain_tx_polarity_flip_physical{123.0}=0x0 +phy_chain_tx_polarity_flip_physical{124.0}=0x1 +phy_chain_tx_polarity_flip_physical{125.0}=0x0 +phy_chain_tx_polarity_flip_physical{126.0}=0x1 +phy_chain_tx_polarity_flip_physical{127.0}=0x1 +phy_chain_tx_polarity_flip_physical{128.0}=0x1 +phy_chain_tx_polarity_flip_physical{129.0}=0x1 +phy_chain_tx_polarity_flip_physical{130.0}=0x0 +phy_chain_tx_polarity_flip_physical{131.0}=0x1 +phy_chain_tx_polarity_flip_physical{132.0}=0x0 +phy_chain_tx_polarity_flip_physical{133.0}=0x1 +phy_chain_tx_polarity_flip_physical{134.0}=0x1 +phy_chain_tx_polarity_flip_physical{135.0}=0x1 +phy_chain_tx_polarity_flip_physical{136.0}=0x1 +phy_chain_tx_polarity_flip_physical{137.0}=0x1 +phy_chain_tx_polarity_flip_physical{138.0}=0x1 +phy_chain_tx_polarity_flip_physical{139.0}=0x1 +phy_chain_tx_polarity_flip_physical{140.0}=0x1 +phy_chain_tx_polarity_flip_physical{141.0}=0x0 +phy_chain_tx_polarity_flip_physical{142.0}=0x1 +phy_chain_tx_polarity_flip_physical{143.0}=0x1 +phy_chain_tx_polarity_flip_physical{144.0}=0x1 +phy_chain_tx_polarity_flip_physical{145.0}=0x1 +phy_chain_tx_polarity_flip_physical{146.0}=0x1 +phy_chain_tx_polarity_flip_physical{147.0}=0x1 +phy_chain_tx_polarity_flip_physical{148.0}=0x0 +phy_chain_tx_polarity_flip_physical{149.0}=0x1 +phy_chain_tx_polarity_flip_physical{150.0}=0x0 +phy_chain_tx_polarity_flip_physical{151.0}=0x0 +phy_chain_tx_polarity_flip_physical{152.0}=0x0 +phy_chain_tx_polarity_flip_physical{153.0}=0x1 +phy_chain_tx_polarity_flip_physical{154.0}=0x0 +phy_chain_tx_polarity_flip_physical{155.0}=0x0 +phy_chain_tx_polarity_flip_physical{156.0}=0x0 +phy_chain_tx_polarity_flip_physical{157.0}=0x0 +phy_chain_tx_polarity_flip_physical{158.0}=0x0 +phy_chain_tx_polarity_flip_physical{159.0}=0x0 +phy_chain_tx_polarity_flip_physical{160.0}=0x0 +phy_chain_tx_polarity_flip_physical{161.0}=0x0 +phy_chain_tx_polarity_flip_physical{162.0}=0x1 +phy_chain_tx_polarity_flip_physical{163.0}=0x1 +phy_chain_tx_polarity_flip_physical{164.0}=0x0 +phy_chain_tx_polarity_flip_physical{165.0}=0x1 +phy_chain_tx_polarity_flip_physical{166.0}=0x1 +phy_chain_tx_polarity_flip_physical{167.0}=0x1 +phy_chain_tx_polarity_flip_physical{168.0}=0x0 +phy_chain_tx_polarity_flip_physical{169.0}=0x0 +phy_chain_tx_polarity_flip_physical{170.0}=0x1 +phy_chain_tx_polarity_flip_physical{171.0}=0x1 +phy_chain_tx_polarity_flip_physical{172.0}=0x1 +phy_chain_tx_polarity_flip_physical{173.0}=0x0 +phy_chain_tx_polarity_flip_physical{174.0}=0x0 +phy_chain_tx_polarity_flip_physical{175.0}=0x1 +phy_chain_tx_polarity_flip_physical{176.0}=0x0 +phy_chain_tx_polarity_flip_physical{177.0}=0x1 +phy_chain_tx_polarity_flip_physical{178.0}=0x0 +phy_chain_tx_polarity_flip_physical{179.0}=0x0 +phy_chain_tx_polarity_flip_physical{180.0}=0x0 +phy_chain_tx_polarity_flip_physical{181.0}=0x0 +phy_chain_tx_polarity_flip_physical{182.0}=0x0 +phy_chain_tx_polarity_flip_physical{183.0}=0x0 +phy_chain_tx_polarity_flip_physical{184.0}=0x1 +phy_chain_tx_polarity_flip_physical{185.0}=0x0 +phy_chain_tx_polarity_flip_physical{186.0}=0x1 +phy_chain_tx_polarity_flip_physical{187.0}=0x1 +phy_chain_tx_polarity_flip_physical{188.0}=0x1 +phy_chain_tx_polarity_flip_physical{189.0}=0x0 +phy_chain_tx_polarity_flip_physical{190.0}=0x0 +phy_chain_tx_polarity_flip_physical{191.0}=0x0 +phy_chain_tx_polarity_flip_physical{192.0}=0x0 +phy_chain_tx_polarity_flip_physical{193.0}=0x1 +phy_chain_tx_polarity_flip_physical{194.0}=0x1 +phy_chain_tx_polarity_flip_physical{195.0}=0x1 +phy_chain_tx_polarity_flip_physical{196.0}=0x0 +phy_chain_tx_polarity_flip_physical{197.0}=0x0 +phy_chain_tx_polarity_flip_physical{198.0}=0x1 +phy_chain_tx_polarity_flip_physical{199.0}=0x1 +phy_chain_tx_polarity_flip_physical{200.0}=0x1 +phy_chain_tx_polarity_flip_physical{201.0}=0x1 +phy_chain_tx_polarity_flip_physical{202.0}=0x1 +phy_chain_tx_polarity_flip_physical{203.0}=0x1 +phy_chain_tx_polarity_flip_physical{204.0}=0x1 +phy_chain_tx_polarity_flip_physical{205.0}=0x0 +phy_chain_tx_polarity_flip_physical{206.0}=0x1 +phy_chain_tx_polarity_flip_physical{207.0}=0x1 +phy_chain_tx_polarity_flip_physical{208.0}=0x1 +phy_chain_tx_polarity_flip_physical{209.0}=0x1 +phy_chain_tx_polarity_flip_physical{210.0}=0x1 +phy_chain_tx_polarity_flip_physical{211.0}=0x1 +phy_chain_tx_polarity_flip_physical{212.0}=0x0 +phy_chain_tx_polarity_flip_physical{213.0}=0x0 +phy_chain_tx_polarity_flip_physical{214.0}=0x1 +phy_chain_tx_polarity_flip_physical{215.0}=0x0 +phy_chain_tx_polarity_flip_physical{216.0}=0x1 +phy_chain_tx_polarity_flip_physical{217.0}=0x1 +phy_chain_tx_polarity_flip_physical{218.0}=0x1 +phy_chain_tx_polarity_flip_physical{219.0}=0x0 +phy_chain_tx_polarity_flip_physical{220.0}=0x1 +phy_chain_tx_polarity_flip_physical{221.0}=0x0 +phy_chain_tx_polarity_flip_physical{222.0}=0x0 +phy_chain_tx_polarity_flip_physical{223.0}=0x0 +phy_chain_tx_polarity_flip_physical{224.0}=0x1 +phy_chain_tx_polarity_flip_physical{225.0}=0x1 +phy_chain_tx_polarity_flip_physical{226.0}=0x1 +phy_chain_tx_polarity_flip_physical{227.0}=0x1 +phy_chain_tx_polarity_flip_physical{228.0}=0x0 +phy_chain_tx_polarity_flip_physical{229.0}=0x0 +phy_chain_tx_polarity_flip_physical{230.0}=0x1 +phy_chain_tx_polarity_flip_physical{231.0}=0x1 +phy_chain_tx_polarity_flip_physical{232.0}=0x1 +phy_chain_tx_polarity_flip_physical{233.0}=0x0 +phy_chain_tx_polarity_flip_physical{234.0}=0x0 +phy_chain_tx_polarity_flip_physical{235.0}=0x0 +phy_chain_tx_polarity_flip_physical{236.0}=0x0 +phy_chain_tx_polarity_flip_physical{237.0}=0x1 +phy_chain_tx_polarity_flip_physical{238.0}=0x1 +phy_chain_tx_polarity_flip_physical{239.0}=0x1 +phy_chain_tx_polarity_flip_physical{240.0}=0x0 +phy_chain_tx_polarity_flip_physical{241.0}=0x1 +phy_chain_tx_polarity_flip_physical{242.0}=0x1 +phy_chain_tx_polarity_flip_physical{243.0}=0x1 +phy_chain_tx_polarity_flip_physical{244.0}=0x0 +phy_chain_tx_polarity_flip_physical{245.0}=0x1 +phy_chain_tx_polarity_flip_physical{246.0}=0x1 +phy_chain_tx_polarity_flip_physical{247.0}=0x1 +phy_chain_tx_polarity_flip_physical{248.0}=0x1 +phy_chain_tx_polarity_flip_physical{249.0}=0x1 +phy_chain_tx_polarity_flip_physical{250.0}=0x0 +phy_chain_tx_polarity_flip_physical{251.0}=0x0 +phy_chain_tx_polarity_flip_physical{252.0}=0x0 +phy_chain_tx_polarity_flip_physical{253.0}=0x1 +phy_chain_tx_polarity_flip_physical{254.0}=0x1 +phy_chain_tx_polarity_flip_physical{255.0}=0x1 +phy_chain_tx_polarity_flip_physical{256.0}=0x0 +phy_chain_tx_polarity_flip_physical{257.0}=0x0 +phy_chain_tx_polarity_flip_physical{259.0}=0x0 +portmap_1=5:100 +portmap_3=13:100 +portmap_5=25:100 +portmap_7=21:100 +portmap_9=37:100 +portmap_11=45:100 +portmap_13=57:100 +portmap_15=53:100 +portmap_17=9:100 +portmap_19=1:100 +portmap_21=17:100 +portmap_23=29:100 +portmap_25=41:100 +portmap_27=33:100 +portmap_29=49:100 +portmap_31=61:100 +portmap_34=77:100 +portmap_36=65:100 +portmap_38=85:100 +portmap_40=89:100 +portmap_42=109:100 +portmap_44=97:100 +portmap_46=117:100 +portmap_48=121:100 +portmap_50=69:100 +portmap_52=73:100 +portmap_54=93:100 +portmap_56=81:100 +portmap_58=101:100 +portmap_60=105:100 +portmap_62=125:100 +portmap_64=113:100 +portmap_66=257:10 +portmap_68=141:100 +portmap_70=133:100 +portmap_72=149:100 +portmap_74=153:100 +portmap_76=173:100 +portmap_78=161:100 +portmap_80=181:100 +portmap_82=185:100 +portmap_84=129:100 +portmap_86=137:100 +portmap_88=157:100 +portmap_90=145:100 +portmap_92=165:100 +portmap_94=169:100 +portmap_96=189:100 +portmap_98=177:100 +portmap_100=259:10 +portmap_102=197:100 +portmap_104=205:100 +portmap_106=217:100 +portmap_108=213:100 +portmap_110=229:100 +portmap_112=237:100 +portmap_114=249:100 +portmap_116=245:100 +portmap_118=201:100 +portmap_120=193:100 +portmap_122=209:100 +portmap_124=221:100 +portmap_126=233:100 +portmap_128=225:100 +portmap_130=241:100 +portmap_132=253:100 +port_flex_enable=1 +port_init_autoneg=0 +robust_hash_disable_egress_vlan=1 +robust_hash_disable_mpls=1 +robust_hash_disable_vlan=1 +stable_size=0x5500000 +stable_size=0x5500000 +tdma_timeout_usec=15000000 +tslam_timeout_usec=15000000 diff --git a/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C32P4/port_config.ini b/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C32P4/port_config.ini index 914fbbdf1652..b2220fee7029 100644 --- a/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C32P4/port_config.ini +++ b/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C32P4/port_config.ini @@ -1,37 +1,37 @@ -# name lanes alias index speed -Ethernet0 0,1 Ethernet1/1 1 100000 -Ethernet4 2,3 Ethernet2/1 2 100000 -Ethernet8 4,5 Ethernet3/1 3 100000 -Ethernet12 6,7 Ethernet4/1 4 100000 -Ethernet16 8,9 Ethernet5/1 5 100000 -Ethernet20 10,11 Ethernet6/1 6 100000 -Ethernet24 12,13 Ethernet7/1 7 100000 -Ethernet28 14,15 Ethernet8/1 8 100000 -Ethernet32 16,17 Ethernet9/1 9 100000 -Ethernet36 18,19 Ethernet10/1 10 100000 -Ethernet40 20,21 Ethernet11/1 11 100000 -Ethernet44 22,23 Ethernet12/1 12 100000 -Ethernet48 24,25 Ethernet13/1 13 100000 -Ethernet52 26,27 Ethernet14/1 14 100000 -Ethernet56 28,29 Ethernet15/1 15 100000 -Ethernet60 30,31 Ethernet16/1 16 100000 -Ethernet64 72,73 Ethernet17/1 17 100000 -Ethernet68 74,75 Ethernet18/1 18 100000 -Ethernet72 76,77 Ethernet19/1 19 100000 -Ethernet76 78,79 Ethernet20/1 20 100000 -Ethernet80 64,65 Ethernet21/1 21 100000 -Ethernet84 66,67 Ethernet22/1 22 100000 -Ethernet88 68,69 Ethernet23/1 23 100000 -Ethernet92 70,71 Ethernet24/1 24 100000 -Ethernet96 56,57 Ethernet25/1 25 100000 -Ethernet100 58,59 Ethernet26/1 26 100000 -Ethernet104 60,61 Ethernet27/1 27 100000 -Ethernet108 62,63 Ethernet28/1 28 100000 -Ethernet112 48,49 Ethernet29/1 29 100000 -Ethernet116 50,51 Ethernet30/1 30 100000 -Ethernet120 52,53 Ethernet31/1 31 100000 -Ethernet124 54,55 Ethernet32/1 32 100000 -Ethernet128 32,33,34,35,36,37,38,39 Ethernet33/1 33 400000 -Ethernet136 40,41,42,43,44,45,46,47 Ethernet34/1 34 400000 -Ethernet144 88,89,90,91,92,93,94,95 Ethernet35/1 35 400000 -Ethernet152 80,81,82,83,84,85,86,87 Ethernet36/1 36 400000 +# name lanes alias index speed fec +Ethernet0 0,1 Ethernet1/1 1 100000 rs +Ethernet4 2,3 Ethernet2/1 2 100000 rs +Ethernet8 4,5 Ethernet3/1 3 100000 rs +Ethernet12 6,7 Ethernet4/1 4 100000 rs +Ethernet16 8,9 Ethernet5/1 5 100000 rs +Ethernet20 10,11 Ethernet6/1 6 100000 rs +Ethernet24 12,13 Ethernet7/1 7 100000 rs +Ethernet28 14,15 Ethernet8/1 8 100000 rs +Ethernet32 16,17 Ethernet9/1 9 100000 rs +Ethernet36 18,19 Ethernet10/1 10 100000 rs +Ethernet40 20,21 Ethernet11/1 11 100000 rs +Ethernet44 22,23 Ethernet12/1 12 100000 rs +Ethernet48 24,25 Ethernet13/1 13 100000 rs +Ethernet52 26,27 Ethernet14/1 14 100000 rs +Ethernet56 28,29 Ethernet15/1 15 100000 rs +Ethernet60 30,31 Ethernet16/1 16 100000 rs +Ethernet64 72,73 Ethernet17/1 17 100000 rs +Ethernet68 74,75 Ethernet18/1 18 100000 rs +Ethernet72 76,77 Ethernet19/1 19 100000 rs +Ethernet76 78,79 Ethernet20/1 20 100000 rs +Ethernet80 64,65 Ethernet21/1 21 100000 rs +Ethernet84 66,67 Ethernet22/1 22 100000 rs +Ethernet88 68,69 Ethernet23/1 23 100000 rs +Ethernet92 70,71 Ethernet24/1 24 100000 rs +Ethernet96 56,57 Ethernet25/1 25 100000 rs +Ethernet100 58,59 Ethernet26/1 26 100000 rs +Ethernet104 60,61 Ethernet27/1 27 100000 rs +Ethernet108 62,63 Ethernet28/1 28 100000 rs +Ethernet112 48,49 Ethernet29/1 29 100000 rs +Ethernet116 50,51 Ethernet30/1 30 100000 rs +Ethernet120 52,53 Ethernet31/1 31 100000 rs +Ethernet124 54,55 Ethernet32/1 32 100000 rs +Ethernet128 32,33,34,35,36,37,38,39 Ethernet33/1 33 400000 none +Ethernet136 40,41,42,43,44,45,46,47 Ethernet34/1 34 400000 none +Ethernet144 88,89,90,91,92,93,94,95 Ethernet35/1 35 400000 none +Ethernet152 80,81,82,83,84,85,86,87 Ethernet36/1 36 400000 none diff --git a/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C40/port_config.ini b/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C40/port_config.ini index 2ba638aee50d..57067b1875dc 100644 --- a/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C40/port_config.ini +++ b/device/arista/x86_64-arista_7280cr3_32p4/Arista-7280CR3-C40/port_config.ini @@ -1,41 +1,41 @@ -# name lanes alias index speed -Ethernet0 0,1 Ethernet1/1 1 100000 -Ethernet4 2,3 Ethernet2/1 2 100000 -Ethernet8 4,5 Ethernet3/1 3 100000 -Ethernet12 6,7 Ethernet4/1 4 100000 -Ethernet16 8,9 Ethernet5/1 5 100000 -Ethernet20 10,11 Ethernet6/1 6 100000 -Ethernet24 12,13 Ethernet7/1 7 100000 -Ethernet28 14,15 Ethernet8/1 8 100000 -Ethernet32 16,17 Ethernet9/1 9 100000 -Ethernet36 18,19 Ethernet10/1 10 100000 -Ethernet40 20,21 Ethernet11/1 11 100000 -Ethernet44 22,23 Ethernet12/1 12 100000 -Ethernet48 24,25 Ethernet13/1 13 100000 -Ethernet52 26,27 Ethernet14/1 14 100000 -Ethernet56 28,29 Ethernet15/1 15 100000 -Ethernet60 30,31 Ethernet16/1 16 100000 -Ethernet64 72,73 Ethernet17/1 17 100000 -Ethernet68 74,75 Ethernet18/1 18 100000 -Ethernet72 76,77 Ethernet19/1 19 100000 -Ethernet76 78,79 Ethernet20/1 20 100000 -Ethernet80 64,65 Ethernet21/1 21 100000 -Ethernet84 66,67 Ethernet22/1 22 100000 -Ethernet88 68,69 Ethernet23/1 23 100000 -Ethernet92 70,71 Ethernet24/1 24 100000 -Ethernet96 56,57 Ethernet25/1 25 100000 -Ethernet100 58,59 Ethernet26/1 26 100000 -Ethernet104 60,61 Ethernet27/1 27 100000 -Ethernet108 62,63 Ethernet28/1 28 100000 -Ethernet112 48,49 Ethernet29/1 29 100000 -Ethernet116 50,51 Ethernet30/1 30 100000 -Ethernet120 52,53 Ethernet31/1 31 100000 -Ethernet124 54,55 Ethernet32/1 32 100000 -Ethernet128 32,33,34,35 Ethernet33/1 33 100000 -Ethernet132 36,37,38,39 Ethernet33/5 33 100000 -Ethernet136 40,41,42,43 Ethernet34/1 34 100000 -Ethernet140 44,45,46,47 Ethernet34/5 34 100000 -Ethernet144 88,89,90,91 Ethernet35/1 35 100000 -Ethernet148 92,93,94,95 Ethernet35/5 35 100000 -Ethernet152 80,81,82,83 Ethernet36/1 36 100000 -Ethernet156 84,85,86,87 Ethernet36/5 36 100000 +# name lanes alias index speed fec +Ethernet0 0,1 Ethernet1/1 1 100000 rs +Ethernet4 2,3 Ethernet2/1 2 100000 rs +Ethernet8 4,5 Ethernet3/1 3 100000 rs +Ethernet12 6,7 Ethernet4/1 4 100000 rs +Ethernet16 8,9 Ethernet5/1 5 100000 rs +Ethernet20 10,11 Ethernet6/1 6 100000 rs +Ethernet24 12,13 Ethernet7/1 7 100000 rs +Ethernet28 14,15 Ethernet8/1 8 100000 rs +Ethernet32 16,17 Ethernet9/1 9 100000 rs +Ethernet36 18,19 Ethernet10/1 10 100000 rs +Ethernet40 20,21 Ethernet11/1 11 100000 rs +Ethernet44 22,23 Ethernet12/1 12 100000 rs +Ethernet48 24,25 Ethernet13/1 13 100000 rs +Ethernet52 26,27 Ethernet14/1 14 100000 rs +Ethernet56 28,29 Ethernet15/1 15 100000 rs +Ethernet60 30,31 Ethernet16/1 16 100000 rs +Ethernet64 72,73 Ethernet17/1 17 100000 rs +Ethernet68 74,75 Ethernet18/1 18 100000 rs +Ethernet72 76,77 Ethernet19/1 19 100000 rs +Ethernet76 78,79 Ethernet20/1 20 100000 rs +Ethernet80 64,65 Ethernet21/1 21 100000 rs +Ethernet84 66,67 Ethernet22/1 22 100000 rs +Ethernet88 68,69 Ethernet23/1 23 100000 rs +Ethernet92 70,71 Ethernet24/1 24 100000 rs +Ethernet96 56,57 Ethernet25/1 25 100000 rs +Ethernet100 58,59 Ethernet26/1 26 100000 rs +Ethernet104 60,61 Ethernet27/1 27 100000 rs +Ethernet108 62,63 Ethernet28/1 28 100000 rs +Ethernet112 48,49 Ethernet29/1 29 100000 rs +Ethernet116 50,51 Ethernet30/1 30 100000 rs +Ethernet120 52,53 Ethernet31/1 31 100000 rs +Ethernet124 54,55 Ethernet32/1 32 100000 rs +Ethernet128 32,33,34,35 Ethernet33/1 33 100000 rs +Ethernet132 36,37,38,39 Ethernet33/5 33 100000 rs +Ethernet136 40,41,42,43 Ethernet34/1 34 100000 rs +Ethernet140 44,45,46,47 Ethernet34/5 34 100000 rs +Ethernet144 88,89,90,91 Ethernet35/1 35 100000 rs +Ethernet148 92,93,94,95 Ethernet35/5 35 100000 rs +Ethernet152 80,81,82,83 Ethernet36/1 36 100000 rs +Ethernet156 84,85,86,87 Ethernet36/5 36 100000 rs diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/context_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/context_config.json new file mode 120000 index 000000000000..90fc4ca62c1c --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/context_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_100G_PAM4.xml b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_100G_PAM4.xml new file mode 120000 index 000000000000..276998df2445 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_100G_PAM4.xml @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_config.json new file mode 120000 index 000000000000..ed855d2e88c1 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/gearbox_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy1_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy1_config.json new file mode 120000 index 000000000000..fe73eb8b8773 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy1_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy2_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy2_config.json new file mode 120000 index 000000000000..8fc0064f920f --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy2_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy3_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy3_config.json new file mode 120000 index 000000000000..27eb5a421f48 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy3_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy4_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy4_config.json new file mode 120000 index 000000000000..cdd9304b825e --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy4_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy5_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy5_config.json new file mode 120000 index 000000000000..f5ea25131fe8 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy5_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy6_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy6_config.json new file mode 120000 index 000000000000..469436d7eecf --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy6_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy7_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy7_config.json new file mode 120000 index 000000000000..8f1034899d4e --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy7_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy8_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy8_config.json new file mode 120000 index 000000000000..125290aac078 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/phy8_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/psai.profile b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/psai.profile new file mode 120000 index 000000000000..52a039b345ee --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C32D4/psai.profile @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/context_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/context_config.json new file mode 120000 index 000000000000..90fc4ca62c1c --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/context_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml new file mode 120000 index 000000000000..276998df2445 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_config.json new file mode 120000 index 000000000000..ed855d2e88c1 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/gearbox_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy1_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy1_config.json new file mode 120000 index 000000000000..fe73eb8b8773 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy1_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy2_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy2_config.json new file mode 120000 index 000000000000..8fc0064f920f --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy2_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy3_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy3_config.json new file mode 120000 index 000000000000..27eb5a421f48 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy3_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy4_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy4_config.json new file mode 120000 index 000000000000..cdd9304b825e --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy4_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy5_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy5_config.json new file mode 120000 index 000000000000..f5ea25131fe8 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy5_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy6_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy6_config.json new file mode 120000 index 000000000000..469436d7eecf --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy6_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy7_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy7_config.json new file mode 120000 index 000000000000..8f1034899d4e --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy7_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy8_config.json b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy8_config.json new file mode 120000 index 000000000000..125290aac078 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/phy8_config.json @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/psai.profile b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/psai.profile new file mode 120000 index 000000000000..52a039b345ee --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/Arista-7280CR3-C40/psai.profile @@ -0,0 +1 @@ +../../x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32d4/gbsyncd.ini b/device/arista/x86_64-arista_7280cr3mk_32d4/gbsyncd.ini new file mode 120000 index 000000000000..035a4cfa28b4 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32d4/gbsyncd.ini @@ -0,0 +1 @@ +../x86_64-arista_7280cr3mk_32p4/gbsyncd.ini \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/context_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/context_config.json new file mode 120000 index 000000000000..279d1cd99183 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/context_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/context_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_100G_PAM4.xml b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_100G_PAM4.xml new file mode 120000 index 000000000000..125f50435dcf --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_100G_PAM4.xml @@ -0,0 +1 @@ +../Arista-7280CR3-C40/gearbox_100G_PAM4.xml \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_config.json new file mode 120000 index 000000000000..382d52f02dcb --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/gearbox_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/gearbox_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy1_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy1_config.json new file mode 120000 index 000000000000..6be5e17d3254 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy1_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy1_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy2_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy2_config.json new file mode 120000 index 000000000000..24e2e4ddbea3 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy2_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy2_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy3_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy3_config.json new file mode 120000 index 000000000000..5daaba2cdb00 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy3_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy3_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy4_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy4_config.json new file mode 120000 index 000000000000..9df86a655a9d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy4_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy4_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy5_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy5_config.json new file mode 120000 index 000000000000..fa8c742a147d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy5_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy5_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy6_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy6_config.json new file mode 120000 index 000000000000..0d778d751ae6 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy6_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy6_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy7_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy7_config.json new file mode 120000 index 000000000000..fce069a8c272 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy7_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy7_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy8_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy8_config.json new file mode 120000 index 000000000000..100626bec46d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/phy8_config.json @@ -0,0 +1 @@ +../Arista-7280CR3-C40/phy8_config.json \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/psai.profile b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/psai.profile new file mode 120000 index 000000000000..38ed33ce216d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C32P4/psai.profile @@ -0,0 +1 @@ +../Arista-7280CR3-C40/psai.profile \ No newline at end of file diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json new file mode 100644 index 000000000000..db31a23c45fd --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/context_config.json @@ -0,0 +1,66 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "asic0", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable" : false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "" + } + ] + }, + { + "guid" : 1, + "name" : "phys", + "dbAsic" : "GB_ASIC_DB", + "dbCounters" : "GB_COUNTERS_DB", + "dbFlex": "GB_FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable" : false, + "zmq_endpoint": "tcp://127.0.0.1:5565", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5566", + "switches": [ + { + "index" : 0, + "hwinfo" : "mdio0_0_0/0" + }, + { + "index" : 1, + "hwinfo" : "mdio1_0_0/0" + }, + { + "index" : 2, + "hwinfo" : "mdio2_0_0/0" + }, + { + "index" : 3, + "hwinfo" : "mdio3_0_0/0" + }, + { + "index" : 4, + "hwinfo" : "mdio4_0_0/0" + }, + { + "index" : 5, + "hwinfo" : "mdio5_0_0/0" + }, + { + "index" : 6, + "hwinfo" : "mdio6_0_0/0" + }, + { + "index" : 7, + "hwinfo" : "mdio7_0_0/0" + } + ] + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml new file mode 100644 index 000000000000..95e20b91787e --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_100G_PAM4.xml @@ -0,0 +1,37 @@ + + + CSDK-B52 + 0 + gearbox + 2 + + 2,-8,17,0,0 + 0,-8,17,0,0 + + 0,0,1,0,0 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json new file mode 100644 index 000000000000..90c075f6a641 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/gearbox_config.json @@ -0,0 +1,334 @@ +{ + "phys": [ + { + "phy_id": 1, + "name": "phy1", + "address": "1", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy1_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio0_0_0/0" + }, + { + "phy_id": 2, + "name": "phy2", + "address": "2", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy2_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio1_0_0/0" + }, + { + "phy_id": 3, + "name": "phy3", + "address": "3", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy3_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio2_0_0/0" + }, + { + "phy_id": 4, + "name": "phy4", + "address": "4", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy4_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio3_0_0/0" + }, + { + "phy_id": 5, + "name": "phy5", + "address": "5", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy5_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio4_0_0/0" + }, + { + "phy_id": 6, + "name": "phy6", + "address": "6", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy6_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio5_0_0/0" + }, + { + "phy_id": 7, + "name": "phy7", + "address": "7", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy7_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio6_0_0/0" + }, + { + "phy_id": 8, + "name": "phy8", + "address": "8", + "lib_name": "", + "firmware_path": "/usr/etc/credo/firmware/owl.lz4.fw.1.92.1.bin", + "config_file": "/usr/share/sonic/hwsku/phy8_config.json", + "sai_init_config_file": "", + "phy_access": "mdio", + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio7_0_0/0" + } + ], + "interfaces": [ + { + "name": "Ethernet0", + "index": 1, + "phy_id": 1, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet4", + "index": 2, + "phy_id": 1, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet8", + "index": 3, + "phy_id": 1, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet12", + "index": 4, + "phy_id": 1, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet16", + "index": 5, + "phy_id": 2, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet20", + "index": 6, + "phy_id": 2, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet24", + "index": 7, + "phy_id": 2, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet28", + "index": 8, + "phy_id": 2, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet32", + "index": 9, + "phy_id": 3, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet36", + "index": 10, + "phy_id": 3, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet40", + "index": 11, + "phy_id": 3, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet44", + "index": 12, + "phy_id": 3, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet48", + "index": 13, + "phy_id": 4, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet52", + "index": 14, + "phy_id": 4, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet56", + "index": 15, + "phy_id": 4, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet60", + "index": 16, + "phy_id": 4, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet64", + "index": 17, + "phy_id": 5, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet68", + "index": 18, + "phy_id": 5, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet72", + "index": 19, + "phy_id": 5, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet76", + "index": 20, + "phy_id": 5, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet80", + "index": 21, + "phy_id": 6, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet84", + "index": 22, + "phy_id": 6, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet88", + "index": 23, + "phy_id": 6, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet92", + "index": 24, + "phy_id": 6, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet96", + "index": 25, + "phy_id": 7, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet100", + "index": 26, + "phy_id": 7, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet104", + "index": 27, + "phy_id": 7, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet108", + "index": 28, + "phy_id": 7, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + }, + { + "name": "Ethernet112", + "index": 29, + "phy_id": 8, + "system_lanes": [4,5], + "line_lanes": [20,21,22,23] + }, + { + "name": "Ethernet116", + "index": 30, + "phy_id": 8, + "system_lanes": [6,7], + "line_lanes": [8,9,10,11] + }, + { + "name": "Ethernet120", + "index": 31, + "phy_id": 8, + "system_lanes": [0,1], + "line_lanes": [12,13,14,15] + }, + { + "name": "Ethernet124", + "index": 32, + "phy_id": 8, + "system_lanes": [2,3], + "line_lanes": [16,17,18,19] + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json new file mode 100644 index 000000000000..14c7bd4dd373 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy1_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 1, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 2, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 3, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 4, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json new file mode 100644 index 000000000000..d3723ca2c96d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy2_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 5, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 6, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 7, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 8, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json new file mode 100644 index 000000000000..6be7eed4e33d --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy3_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 9, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 10, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 11, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 12, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json new file mode 100644 index 000000000000..ca8dfca226f8 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy4_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 13, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 14, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 15, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 16, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json new file mode 100644 index 000000000000..fac78adecf09 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy5_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 17, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 18, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 19, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 20, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json new file mode 100644 index 000000000000..ad70c69489eb --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy6_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 21, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 22, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 23, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 24, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json new file mode 100644 index 000000000000..1b927fa78c88 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy7_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 25, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 26, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 27, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 28, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json new file mode 100644 index 000000000000..1a6d8cf3a43c --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/phy8_config.json @@ -0,0 +1,101 @@ +{ + "lanes": [ + { + "index": 200, + "local_lane_id": 0, + "system_side": true, + "tx_polarity": 0, + "rx_polarity": 0, + "line_tx_lanemap": 0, + "line_rx_lanemap": 0, + "line_to_system_lanemap": 0, + "mdio_addr": "" + } + ], + "ports": [ + { + "index": 29, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 30, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 31, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + }, + { + "index": 32, + "mdio_addr": "", + "system_speed": 50000, + "system_fec": "rs", + "system_auto_neg": false, + "system_loopback": "none", + "system_training": false, + "line_speed": 25000, + "line_fec": "rs", + "line_auto_neg": false, + "line_loopback": "none", + "line_training": false, + "line_media_type": "fiber", + "line_intf_type": "none", + "line_adver_speed": [], + "line_adver_fec": [], + "line_adver_auto_neg": false, + "line_adver_asym_pause": false, + "line_adver_media_type": "fiber" + } + ] +} diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile new file mode 100644 index 000000000000..da589793cf08 --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/Arista-7280CR3-C40/psai.profile @@ -0,0 +1 @@ +SAI_KEY_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/gearbox_100G_PAM4.xml diff --git a/device/arista/x86_64-arista_7280cr3mk_32p4/gbsyncd.ini b/device/arista/x86_64-arista_7280cr3mk_32p4/gbsyncd.ini new file mode 100644 index 000000000000..9bd130dff9ef --- /dev/null +++ b/device/arista/x86_64-arista_7280cr3mk_32p4/gbsyncd.ini @@ -0,0 +1 @@ +platform=gbsyncd-credo diff --git a/device/arista/x86_64-arista_7800_sup/chassisdb.conf b/device/arista/x86_64-arista_7800_sup/chassisdb.conf index 3918a00c4ee9..221b9e9c27b2 100644 --- a/device/arista/x86_64-arista_7800_sup/chassisdb.conf +++ b/device/arista/x86_64-arista_7800_sup/chassisdb.conf @@ -1,2 +1,5 @@ start_chassis_db=1 chassis_db_address=127.100.1.1 + +lag_id_start=1 +lag_id_end=128 diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini index 2ffd64c9a9a5..34ddd34c2806 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini @@ -1,51 +1,51 @@ -# name lanes alias index role speed -Ethernet0 6,7 Ethernet1/1 1 Ext 100000 -Ethernet4 2,3 Ethernet2/1 2 Ext 100000 -Ethernet8 4,5 Ethernet3/1 3 Ext 100000 -Ethernet12 0,1 Ethernet4/1 4 Ext 100000 -Ethernet16 14,15 Ethernet5/1 5 Ext 100000 -Ethernet20 10,11 Ethernet6/1 6 Ext 100000 -Ethernet24 12,13 Ethernet7/1 7 Ext 100000 -Ethernet28 8,9 Ethernet8/1 8 Ext 100000 -Ethernet32 22,23 Ethernet9/1 9 Ext 100000 -Ethernet36 18,19 Ethernet10/1 10 Ext 100000 -Ethernet40 20,21 Ethernet11/1 11 Ext 100000 -Ethernet44 16,17 Ethernet12/1 12 Ext 100000 -Ethernet48 30,31 Ethernet13/1 13 Ext 100000 -Ethernet52 26,27 Ethernet14/1 14 Ext 100000 -Ethernet56 28,29 Ethernet15/1 15 Ext 100000 -Ethernet60 24,25 Ethernet16/1 16 Ext 100000 -Ethernet64 38,39 Ethernet17/1 17 Ext 100000 -Ethernet68 34,35 Ethernet18/1 18 Ext 100000 -Ethernet72 36,37 Ethernet19/1 19 Ext 100000 -Ethernet76 32,33 Ethernet20/1 20 Ext 100000 -Ethernet80 46,47 Ethernet21/1 21 Ext 100000 -Ethernet84 42,43 Ethernet22/1 22 Ext 100000 -Ethernet88 44,45 Ethernet23/1 23 Ext 100000 -Ethernet92 40,41 Ethernet24/1 24 Ext 100000 -Ethernet96 94,95 Ethernet25/1 25 Ext 100000 -Ethernet100 90,91 Ethernet26/1 26 Ext 100000 -Ethernet104 92,93 Ethernet27/1 27 Ext 100000 -Ethernet108 88,89 Ethernet28/1 28 Ext 100000 -Ethernet112 86,87 Ethernet29/1 29 Ext 100000 -Ethernet116 82,83 Ethernet30/1 30 Ext 100000 -Ethernet120 84,85 Ethernet31/1 31 Ext 100000 -Ethernet124 80,81 Ethernet32/1 32 Ext 100000 -Ethernet128 78,79 Ethernet33/1 33 Ext 100000 -Ethernet132 74,75 Ethernet34/1 34 Ext 100000 -Ethernet136 76,77 Ethernet35/1 35 Ext 100000 -Ethernet140 72,73 Ethernet36/1 36 Ext 100000 -Ethernet144 70,71 Ethernet37/1 37 Ext 100000 -Ethernet148 66,67 Ethernet38/1 38 Ext 100000 -Ethernet152 68,69 Ethernet39/1 39 Ext 100000 -Ethernet156 64,65 Ethernet40/1 40 Ext 100000 -Ethernet160 62,63 Ethernet41/1 41 Ext 100000 -Ethernet164 58,59 Ethernet42/1 42 Ext 100000 -Ethernet168 60,61 Ethernet43/1 43 Ext 100000 -Ethernet172 56,57 Ethernet44/1 44 Ext 100000 -Ethernet176 54,55 Ethernet45/1 45 Ext 100000 -Ethernet180 50,51 Ethernet46/1 46 Ext 100000 -Ethernet184 52,53 Ethernet47/1 47 Ext 100000 -Ethernet188 48,49 Ethernet48/1 48 Ext 100000 -Recirc0 221 Recirc0/0 51 Rec 400000 -Recirc1 222 Recirc0/1 52 Rec 400000 +# name lanes alias index role speed coreId corePortId numVoq +Ethernet0 6,7 Ethernet1/1 1 Ext 100000 0 1 8 +Ethernet4 2,3 Ethernet2/1 2 Ext 100000 0 2 8 +Ethernet8 4,5 Ethernet3/1 3 Ext 100000 0 3 8 +Ethernet12 0,1 Ethernet4/1 4 Ext 100000 0 4 8 +Ethernet16 14,15 Ethernet5/1 5 Ext 100000 0 5 8 +Ethernet20 10,11 Ethernet6/1 6 Ext 100000 0 6 8 +Ethernet24 12,13 Ethernet7/1 7 Ext 100000 0 7 8 +Ethernet28 8,9 Ethernet8/1 8 Ext 100000 0 8 8 +Ethernet32 22,23 Ethernet9/1 9 Ext 100000 0 9 8 +Ethernet36 18,19 Ethernet10/1 10 Ext 100000 0 10 8 +Ethernet40 20,21 Ethernet11/1 11 Ext 100000 0 11 8 +Ethernet44 16,17 Ethernet12/1 12 Ext 100000 0 12 8 +Ethernet48 30,31 Ethernet13/1 13 Ext 100000 0 13 8 +Ethernet52 26,27 Ethernet14/1 14 Ext 100000 0 14 8 +Ethernet56 28,29 Ethernet15/1 15 Ext 100000 0 15 8 +Ethernet60 24,25 Ethernet16/1 16 Ext 100000 0 16 8 +Ethernet64 38,39 Ethernet17/1 17 Ext 100000 0 17 8 +Ethernet68 34,35 Ethernet18/1 18 Ext 100000 0 18 8 +Ethernet72 36,37 Ethernet19/1 19 Ext 100000 0 19 8 +Ethernet76 32,33 Ethernet20/1 20 Ext 100000 0 20 8 +Ethernet80 46,47 Ethernet21/1 21 Ext 100000 0 21 8 +Ethernet84 42,43 Ethernet22/1 22 Ext 100000 0 22 8 +Ethernet88 44,45 Ethernet23/1 23 Ext 100000 0 23 8 +Ethernet92 40,41 Ethernet24/1 24 Ext 100000 0 24 8 +Ethernet96 94,95 Ethernet25/1 25 Ext 100000 1 25 8 +Ethernet100 90,91 Ethernet26/1 26 Ext 100000 1 26 8 +Ethernet104 92,93 Ethernet27/1 27 Ext 100000 1 27 8 +Ethernet108 88,89 Ethernet28/1 28 Ext 100000 1 28 8 +Ethernet112 86,87 Ethernet29/1 29 Ext 100000 1 29 8 +Ethernet116 82,83 Ethernet30/1 30 Ext 100000 1 30 8 +Ethernet120 84,85 Ethernet31/1 31 Ext 100000 1 31 8 +Ethernet124 80,81 Ethernet32/1 32 Ext 100000 1 32 8 +Ethernet128 78,79 Ethernet33/1 33 Ext 100000 1 33 8 +Ethernet132 74,75 Ethernet34/1 34 Ext 100000 1 34 8 +Ethernet136 76,77 Ethernet35/1 35 Ext 100000 1 35 8 +Ethernet140 72,73 Ethernet36/1 36 Ext 100000 1 36 8 +Ethernet144 70,71 Ethernet37/1 37 Ext 100000 1 37 8 +Ethernet148 66,67 Ethernet38/1 38 Ext 100000 1 38 8 +Ethernet152 68,69 Ethernet39/1 39 Ext 100000 1 39 8 +Ethernet156 64,65 Ethernet40/1 40 Ext 100000 1 40 8 +Ethernet160 62,63 Ethernet41/1 41 Ext 100000 1 41 8 +Ethernet164 58,59 Ethernet42/1 42 Ext 100000 1 42 8 +Ethernet168 60,61 Ethernet43/1 43 Ext 100000 1 43 8 +Ethernet172 56,57 Ethernet44/1 44 Ext 100000 1 44 8 +Ethernet176 54,55 Ethernet45/1 45 Ext 100000 1 45 8 +Ethernet180 50,51 Ethernet46/1 46 Ext 100000 1 46 8 +Ethernet184 52,53 Ethernet47/1 47 Ext 100000 1 47 8 +Ethernet188 48,49 Ethernet48/1 48 Ext 100000 1 48 8 +Ethernet-Rec0 221 Recirc0/0 51 Rec 400000 0 221 8 +Ethernet-IB0 222 Recirc0/1 52 Inb 400000 1 222 8 diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/default_sku b/device/arista/x86_64-arista_7800r3_48cq2_lc/default_sku new file mode 100644 index 000000000000..47d37c0d9108 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/default_sku @@ -0,0 +1 @@ +Arista-7800R3-48CQ2-C48 t1 diff --git a/device/arista/x86_64-arista_7800r3_48cqm2_lc/default_sku b/device/arista/x86_64-arista_7800r3_48cqm2_lc/default_sku new file mode 100644 index 000000000000..055cc867926c --- /dev/null +++ b/device/arista/x86_64-arista_7800r3_48cqm2_lc/default_sku @@ -0,0 +1 @@ +Arista-7800R3-48CQM2-C48 t1 diff --git a/device/arista/x86_64-arista_common/system_health_monitoring_config.json b/device/arista/x86_64-arista_common/system_health_monitoring_config.json index 5ceec23fd26f..3f7e937d032a 100644 --- a/device/arista/x86_64-arista_common/system_health_monitoring_config.json +++ b/device/arista/x86_64-arista_common/system_health_monitoring_config.json @@ -3,6 +3,7 @@ "devices_to_ignore": [ "asic", "psu.temperature", + "psu.voltage", "PSU2 Fan", "PSU1 Fan" ], diff --git a/device/barefoot/x86_64-accton_as9516_32d-r0/platform_components.json b/device/barefoot/x86_64-accton_as9516_32d-r0/platform_components.json new file mode 100644 index 000000000000..43874566a3ad --- /dev/null +++ b/device/barefoot/x86_64-accton_as9516_32d-r0/platform_components.json @@ -0,0 +1,8 @@ +{ + "chassis": { + "Newport": { + "component": { + } + } + } +} \ No newline at end of file diff --git a/device/barefoot/x86_64-accton_wedge100bf_32x-r0/platform_components.json b/device/barefoot/x86_64-accton_wedge100bf_32x-r0/platform_components.json new file mode 100644 index 000000000000..df77fa3e1bf9 --- /dev/null +++ b/device/barefoot/x86_64-accton_wedge100bf_32x-r0/platform_components.json @@ -0,0 +1,8 @@ +{ + "chassis": { + "Wedge100BF-32X-O-AC-F-BF": { + "component": { + } + } + } +} \ No newline at end of file diff --git a/device/barefoot/x86_64-accton_wedge100bf_65x-r0/platform_components.json b/device/barefoot/x86_64-accton_wedge100bf_65x-r0/platform_components.json new file mode 100644 index 000000000000..74e851a7c4b6 --- /dev/null +++ b/device/barefoot/x86_64-accton_wedge100bf_65x-r0/platform_components.json @@ -0,0 +1,8 @@ +{ + "chassis": { + "Wedge100BF-65X-O-AC-F-BF": { + "component": { + } + } + } +} \ No newline at end of file diff --git a/device/broadcom/x86_64-bcm_xlr-r0/BCM956960K/th_32x100.config.bcm b/device/broadcom/x86_64-bcm_xlr-r0/BCM956960K/th_32x100.config.bcm index 16f18dcd2fd0..772db95d7f34 100644 --- a/device/broadcom/x86_64-bcm_xlr-r0/BCM956960K/th_32x100.config.bcm +++ b/device/broadcom/x86_64-bcm_xlr-r0/BCM956960K/th_32x100.config.bcm @@ -1,3 +1,6 @@ +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + portmap_1=1:100 portmap_2=5:100 portmap_3=9:100 diff --git a/device/celestica/x86_64-cel_e1031-r0/Celestica-E1031-T48S4/helix4-e1031-48x1G+4x10G.config.bcm b/device/celestica/x86_64-cel_e1031-r0/Celestica-E1031-T48S4/helix4-e1031-48x1G+4x10G.config.bcm index c7942d6fc0b8..e7272ea9d12a 100644 --- a/device/celestica/x86_64-cel_e1031-r0/Celestica-E1031-T48S4/helix4-e1031-48x1G+4x10G.config.bcm +++ b/device/celestica/x86_64-cel_e1031-r0/Celestica-E1031-T48S4/helix4-e1031-48x1G+4x10G.config.bcm @@ -1,3 +1,6 @@ +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + bcm56340_4x10=1 bcm56340_config=1 dport_map_direct=0 diff --git a/device/celestica/x86_64-cel_e1031-r0/system_health_monitoring_config.json b/device/celestica/x86_64-cel_e1031-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..1733fcffdba3 --- /dev/null +++ b/device/celestica/x86_64-cel_e1031-r0/system_health_monitoring_config.json @@ -0,0 +1,16 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": [ + "asic", + "psu.temperature", + "PSU2 Fan", + "PSU1 Fan" + ], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "orange", + "normal": "green", + "booting": "orange_blink" + } +} diff --git a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t0.config.bcm b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t0.config.bcm index 7c315460dc8e..f05fabce5822 100644 --- a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t0.config.bcm +++ b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t0.config.bcm @@ -17,6 +17,9 @@ l3_alpm_enable=2 ipv6_lpm_128b_enable=1 mmu_lossless=0 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + ################################################################################### # Celestica Customize for SeaStone ################################################################################### diff --git a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t1.config.bcm b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t1.config.bcm index effdfb5d7570..96c03d184a0c 100644 --- a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t1.config.bcm +++ b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-C32/th-seastone-dx010-32x100G-t1.config.bcm @@ -17,6 +17,9 @@ l3_alpm_enable=2 ipv6_lpm_128b_enable=1 mmu_lossless=0 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + ################################################################################### # Celestica Customize for SeaStone ################################################################################### diff --git a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/th-seastone-dx010-48x50G+8x100G.config.bcm b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/th-seastone-dx010-48x50G+8x100G.config.bcm index 6707aa71df09..b848052c6511 100644 --- a/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/th-seastone-dx010-48x50G+8x100G.config.bcm +++ b/device/celestica/x86_64-cel_seastone-r0/Celestica-DX010-D48C8/th-seastone-dx010-48x50G+8x100G.config.bcm @@ -1,3 +1,6 @@ +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + os=unix l2xmsg_mode=1 parity_enable=0 diff --git a/device/celestica/x86_64-cel_seastone-r0/th-seastone-dx010-config-flex-all.bcm b/device/celestica/x86_64-cel_seastone-r0/th-seastone-dx010-config-flex-all.bcm index dc2cdf1c200d..ed5c1b6d9b19 100644 --- a/device/celestica/x86_64-cel_seastone-r0/th-seastone-dx010-config-flex-all.bcm +++ b/device/celestica/x86_64-cel_seastone-r0/th-seastone-dx010-config-flex-all.bcm @@ -19,6 +19,9 @@ ipv6_lpm_128b_enable=1 #Use MMU lossy configuration mmu_lossless=0 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + ################################################################################### # SeaStone customized configuration ################################################################################### diff --git a/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini index ed6bcff2331c..1596faa8af96 100644 --- a/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini +++ b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini @@ -30,4 +30,5 @@ Ethernet108 109,110,111,112 QSFP28 rs 28 100000 Ethernet112 113,114,115,116 QSFP29 rs 29 100000 Ethernet116 117,118,119,120 QSFP30 rs 30 100000 Ethernet120 121,122,123,124 QSFP31 rs 31 100000 -Ethernet124 125,126,127,128 QSFP32 rs 32 100000 \ No newline at end of file +Ethernet124 125,126,127,128 QSFP32 rs 32 100000 +Ethernet128 129 SFP1 none 33 10000 diff --git a/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/td3-seastone_2-32x100G.config.bcm b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/td3-seastone_2-32x100G.config.bcm index 62bcdbc58840..a7ee4a93ea04 100644 --- a/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/td3-seastone_2-32x100G.config.bcm +++ b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/td3-seastone_2-32x100G.config.bcm @@ -18,7 +18,7 @@ serdes_lane_config_dfe=on #serdes_fec_enable=1 serdes_if_type_ce=14 pbmp_gport_stack.0=0x0000000000000000000000000000000000000000000000000000000000000000 -pbmp_xport_xe=0x88888888888888882222222222222222 +pbmp_xport_xe=0x888888888888888c2222222222222222 ptp_ts_pll_fref=50000000 ptp_bs_fref_0=50000000 @@ -40,6 +40,7 @@ portmap_49.0=49:100 portmap_53.0=53:100 portmap_57.0=57:100 portmap_61.0=61:100 + portmap_67.0=65:100 portmap_71.0=69:100 portmap_75.0=73:100 @@ -56,7 +57,7 @@ portmap_115.0=113:100 portmap_119.0=117:100 portmap_123.0=121:100 portmap_127.0=125:100 -#portmap_66.0=129:10:m +portmap_66.0=129:10:m #portmap_130.0=128:10:m #wc0 lane swap @@ -189,7 +190,7 @@ phy_chain_rx_lane_map_physical{125.0}=0x3210 #MC lane swap phy_chain_tx_lane_map_physical{129.0}=0x3210 -phy_chain_rx_lane_map_physical{129.0}=0x3210 +phy_chain_rx_lane_map_physical{129.0}=0x0231 #wc0 P/N flip @@ -513,7 +514,7 @@ phy_chain_tx_polarity_flip_physical{128.0}=0x0 phy_chain_rx_polarity_flip_physical{128.0}=0x0 #MC P/N flip -phy_chain_tx_polarity_flip_physical{129.0}=0x0 +phy_chain_tx_polarity_flip_physical{129.0}=0x1 phy_chain_rx_polarity_flip_physical{129.0}=0x0 phy_chain_tx_polarity_flip_physical{130.0}=0x0 phy_chain_rx_polarity_flip_physical{130.0}=0x0 @@ -554,7 +555,7 @@ dport_map_port_115=29 dport_map_port_119=30 dport_map_port_123=31 dport_map_port_127=32 -#dport_map_port_66=33 +dport_map_port_66=33 #dport_map_port_130=34 # configuration for 100G optical module diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/td2-s6000-20x40G-48x10G.config.bcm b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/td2-s6000-20x40G-48x10G.config.bcm index d63f589d4fc9..ca155cb83041 100755 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/td2-s6000-20x40G-48x10G.config.bcm +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q20S48/td2-s6000-20x40G-48x10G.config.bcm @@ -10,6 +10,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/td2-s6000-24x40G-32x10G.config.bcm b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/td2-s6000-24x40G-32x10G.config.bcm index 5734e9ee5b1d..32d86d8474b3 100755 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/td2-s6000-24x40G-32x10G.config.bcm +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q24S32/td2-s6000-24x40G-32x10G.config.bcm @@ -10,6 +10,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/td2-s6000-28x40G-16x10G.config.bcm b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/td2-s6000-28x40G-16x10G.config.bcm index e0ebfd96f00b..af18c034fdd2 100755 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/td2-s6000-28x40G-16x10G.config.bcm +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000-Q28S16/td2-s6000-28x40G-16x10G.config.bcm @@ -10,6 +10,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/td2-s6000-32x40G.config.bcm b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/td2-s6000-32x40G.config.bcm index 0e25b4d4232d..2626674d67ca 100644 --- a/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/td2-s6000-32x40G.config.bcm +++ b/device/dell/x86_64-dell_s6000_s1220-r0/Force10-S6000/td2-s6000-32x40G.config.bcm @@ -10,6 +10,9 @@ ipv6_lpm_128b_enable=1 l2_mem_entries=32768 l3_mem_entries=16384 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + # From old config file os=unix higig2_hdr_mode=1 diff --git a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t0.config.bcm b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t0.config.bcm index 7fa577052635..dac4967f8a5f 100644 --- a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t0.config.bcm +++ b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t0.config.bcm @@ -1,4 +1,7 @@ #TH S6100 64x40 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + l3_alpm_enable=2 pfc_deadlock_seq_control=1 bcm_stat_interval=2000000 diff --git a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t1.config.bcm b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t1.config.bcm index f55fb9d3ab51..20234ea9a66c 100644 --- a/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t1.config.bcm +++ b/device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/th-s6100-64x40G-t1.config.bcm @@ -1,4 +1,7 @@ #TH S6100 64x40 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + l3_alpm_enable=2 pfc_deadlock_seq_control=1 bcm_stat_interval=2000000 diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C32/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C32/pg_profile_lookup.ini index aedda37a8878..a8cf083ec04d 100644 --- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C32/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C32/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 1248 2288 35776 -3 2288 - 25000 5m 1248 2288 53248 -3 2288 - 40000 5m 1248 2288 66560 -3 2288 - 50000 5m 1248 2288 90272 -3 2288 - 100000 5m 1248 2288 165568 -3 2288 - 10000 40m 1248 2288 37024 -3 2288 - 25000 40m 1248 2288 53248 -3 2288 - 40000 40m 1248 2288 71552 -3 2288 - 50000 40m 1248 2288 96096 -3 2288 - 100000 40m 1248 2288 177632 -3 2288 - 10000 300m 1248 2288 46176 -3 2288 - 25000 300m 1248 2288 79040 -3 2288 - 40000 300m 1248 2288 108160 -3 2288 - 50000 300m 1248 2288 141856 -3 2288 - 100000 300m 1248 2288 268736 -3 2288 +# speed cable size xon xoff threshold xon_offset + 10000 5m 1024 2048 46080 -3 2048 + 25000 5m 1024 2048 65024 -3 2048 + 40000 5m 1024 2048 77056 -3 2048 + 50000 5m 1024 2048 93440 -3 2048 + 100000 5m 1024 2048 162048 -3 2048 + 10000 40m 1024 2048 47360 -3 2048 + 25000 40m 1024 2048 67840 -3 2048 + 40000 40m 1024 2048 81664 -3 2048 + 50000 40m 1024 2048 99072 -3 2048 + 100000 40m 1024 2048 173568 -3 2048 + 10000 300m 1024 2048 57088 -3 2048 + 25000 300m 1024 2048 92672 -3 2048 + 40000 300m 1024 2048 121344 -3 2048 + 50000 300m 1024 2048 148736 -3 2048 + 100000 300m 1024 2048 272640 -3 2048 diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini index aedda37a8878..a8cf083ec04d 100644 --- a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-C8D48/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 1248 2288 35776 -3 2288 - 25000 5m 1248 2288 53248 -3 2288 - 40000 5m 1248 2288 66560 -3 2288 - 50000 5m 1248 2288 90272 -3 2288 - 100000 5m 1248 2288 165568 -3 2288 - 10000 40m 1248 2288 37024 -3 2288 - 25000 40m 1248 2288 53248 -3 2288 - 40000 40m 1248 2288 71552 -3 2288 - 50000 40m 1248 2288 96096 -3 2288 - 100000 40m 1248 2288 177632 -3 2288 - 10000 300m 1248 2288 46176 -3 2288 - 25000 300m 1248 2288 79040 -3 2288 - 40000 300m 1248 2288 108160 -3 2288 - 50000 300m 1248 2288 141856 -3 2288 - 100000 300m 1248 2288 268736 -3 2288 +# speed cable size xon xoff threshold xon_offset + 10000 5m 1024 2048 46080 -3 2048 + 25000 5m 1024 2048 65024 -3 2048 + 40000 5m 1024 2048 77056 -3 2048 + 50000 5m 1024 2048 93440 -3 2048 + 100000 5m 1024 2048 162048 -3 2048 + 10000 40m 1024 2048 47360 -3 2048 + 25000 40m 1024 2048 67840 -3 2048 + 40000 40m 1024 2048 81664 -3 2048 + 50000 40m 1024 2048 99072 -3 2048 + 100000 40m 1024 2048 173568 -3 2048 + 10000 300m 1024 2048 57088 -3 2048 + 25000 300m 1024 2048 92672 -3 2048 + 40000 300m 1024 2048 121344 -3 2048 + 50000 300m 1024 2048 148736 -3 2048 + 100000 300m 1024 2048 272640 -3 2048 diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-100G/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-100G/pg_profile_lookup.ini new file mode 100644 index 000000000000..a8cf083ec04d --- /dev/null +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-100G/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 10000 5m 1024 2048 46080 -3 2048 + 25000 5m 1024 2048 65024 -3 2048 + 40000 5m 1024 2048 77056 -3 2048 + 50000 5m 1024 2048 93440 -3 2048 + 100000 5m 1024 2048 162048 -3 2048 + 10000 40m 1024 2048 47360 -3 2048 + 25000 40m 1024 2048 67840 -3 2048 + 40000 40m 1024 2048 81664 -3 2048 + 50000 40m 1024 2048 99072 -3 2048 + 100000 40m 1024 2048 173568 -3 2048 + 10000 300m 1024 2048 57088 -3 2048 + 25000 300m 1024 2048 92672 -3 2048 + 40000 300m 1024 2048 121344 -3 2048 + 50000 300m 1024 2048 148736 -3 2048 + 100000 300m 1024 2048 272640 -3 2048 diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-10G/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-10G/pg_profile_lookup.ini new file mode 100644 index 000000000000..a8cf083ec04d --- /dev/null +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-10G/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 10000 5m 1024 2048 46080 -3 2048 + 25000 5m 1024 2048 65024 -3 2048 + 40000 5m 1024 2048 77056 -3 2048 + 50000 5m 1024 2048 93440 -3 2048 + 100000 5m 1024 2048 162048 -3 2048 + 10000 40m 1024 2048 47360 -3 2048 + 25000 40m 1024 2048 67840 -3 2048 + 40000 40m 1024 2048 81664 -3 2048 + 50000 40m 1024 2048 99072 -3 2048 + 100000 40m 1024 2048 173568 -3 2048 + 10000 300m 1024 2048 57088 -3 2048 + 25000 300m 1024 2048 92672 -3 2048 + 40000 300m 1024 2048 121344 -3 2048 + 50000 300m 1024 2048 148736 -3 2048 + 100000 300m 1024 2048 272640 -3 2048 diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-25G/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-25G/pg_profile_lookup.ini new file mode 100644 index 000000000000..a8cf083ec04d --- /dev/null +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/DellEMC-S5232f-P-25G/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 10000 5m 1024 2048 46080 -3 2048 + 25000 5m 1024 2048 65024 -3 2048 + 40000 5m 1024 2048 77056 -3 2048 + 50000 5m 1024 2048 93440 -3 2048 + 100000 5m 1024 2048 162048 -3 2048 + 10000 40m 1024 2048 47360 -3 2048 + 25000 40m 1024 2048 67840 -3 2048 + 40000 40m 1024 2048 81664 -3 2048 + 50000 40m 1024 2048 99072 -3 2048 + 100000 40m 1024 2048 173568 -3 2048 + 10000 300m 1024 2048 57088 -3 2048 + 25000 300m 1024 2048 92672 -3 2048 + 40000 300m 1024 2048 121344 -3 2048 + 50000 300m 1024 2048 148736 -3 2048 + 100000 300m 1024 2048 272640 -3 2048 diff --git a/device/dell/x86_64-dellemc_s5232f_c3538-r0/system_health_monitoring_config.json b/device/dell/x86_64-dellemc_s5232f_c3538-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..315deec90b0a --- /dev/null +++ b/device/dell/x86_64-dellemc_s5232f_c3538-r0/system_health_monitoring_config.json @@ -0,0 +1,11 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": ["fan.speed"], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault" : "amber", + "normal" : "green", + "booting": "blinking_green" + } +} diff --git a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C64/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C64/pg_profile_lookup.ini index aedda37a8878..eeb1322d6ee8 100644 --- a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C64/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C64/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 1248 2288 35776 -3 2288 - 25000 5m 1248 2288 53248 -3 2288 - 40000 5m 1248 2288 66560 -3 2288 - 50000 5m 1248 2288 90272 -3 2288 - 100000 5m 1248 2288 165568 -3 2288 - 10000 40m 1248 2288 37024 -3 2288 - 25000 40m 1248 2288 53248 -3 2288 - 40000 40m 1248 2288 71552 -3 2288 - 50000 40m 1248 2288 96096 -3 2288 - 100000 40m 1248 2288 177632 -3 2288 - 10000 300m 1248 2288 46176 -3 2288 - 25000 300m 1248 2288 79040 -3 2288 - 40000 300m 1248 2288 108160 -3 2288 - 50000 300m 1248 2288 141856 -3 2288 - 100000 300m 1248 2288 268736 -3 2288 +# speed cable size xon xoff threshold xon_offset + 10000 5m 1248 2288 38064 -3 2288 + 25000 5m 1248 2288 52000 -3 2288 + 40000 5m 1248 2288 64728 -3 2288 + 50000 5m 1248 2288 77168 -3 2288 + 100000 5m 1248 2288 136032 -3 2288 + 10000 40m 1248 2288 39104 -3 2288 + 25000 40m 1248 2288 54288 -3 2288 + 40000 40m 1248 2288 69472 -3 2288 + 50000 40m 1248 2288 81744 -3 2288 + 100000 40m 1248 2288 145392 -3 2288 + 10000 300m 1248 2288 47216 -3 2288 + 25000 300m 1248 2288 74464 -3 2288 + 40000 300m 1248 2288 101712 -3 2288 + 50000 300m 1248 2288 122096 -3 2288 + 100000 300m 1248 2288 225680 -3 2288 diff --git a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C8D112/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C8D112/pg_profile_lookup.ini index aedda37a8878..eeb1322d6ee8 100644 --- a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C8D112/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-C8D112/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 1248 2288 35776 -3 2288 - 25000 5m 1248 2288 53248 -3 2288 - 40000 5m 1248 2288 66560 -3 2288 - 50000 5m 1248 2288 90272 -3 2288 - 100000 5m 1248 2288 165568 -3 2288 - 10000 40m 1248 2288 37024 -3 2288 - 25000 40m 1248 2288 53248 -3 2288 - 40000 40m 1248 2288 71552 -3 2288 - 50000 40m 1248 2288 96096 -3 2288 - 100000 40m 1248 2288 177632 -3 2288 - 10000 300m 1248 2288 46176 -3 2288 - 25000 300m 1248 2288 79040 -3 2288 - 40000 300m 1248 2288 108160 -3 2288 - 50000 300m 1248 2288 141856 -3 2288 - 100000 300m 1248 2288 268736 -3 2288 +# speed cable size xon xoff threshold xon_offset + 10000 5m 1248 2288 38064 -3 2288 + 25000 5m 1248 2288 52000 -3 2288 + 40000 5m 1248 2288 64728 -3 2288 + 50000 5m 1248 2288 77168 -3 2288 + 100000 5m 1248 2288 136032 -3 2288 + 10000 40m 1248 2288 39104 -3 2288 + 25000 40m 1248 2288 54288 -3 2288 + 40000 40m 1248 2288 69472 -3 2288 + 50000 40m 1248 2288 81744 -3 2288 + 100000 40m 1248 2288 145392 -3 2288 + 10000 300m 1248 2288 47216 -3 2288 + 25000 300m 1248 2288 74464 -3 2288 + 40000 300m 1248 2288 101712 -3 2288 + 50000 300m 1248 2288 122096 -3 2288 + 100000 300m 1248 2288 225680 -3 2288 diff --git a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-Q64/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-Q64/pg_profile_lookup.ini index aedda37a8878..eeb1322d6ee8 100644 --- a/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-Q64/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_z9264f_c3538-r0/DellEMC-Z9264f-Q64/pg_profile_lookup.ini @@ -1,17 +1,17 @@ # PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 1248 2288 35776 -3 2288 - 25000 5m 1248 2288 53248 -3 2288 - 40000 5m 1248 2288 66560 -3 2288 - 50000 5m 1248 2288 90272 -3 2288 - 100000 5m 1248 2288 165568 -3 2288 - 10000 40m 1248 2288 37024 -3 2288 - 25000 40m 1248 2288 53248 -3 2288 - 40000 40m 1248 2288 71552 -3 2288 - 50000 40m 1248 2288 96096 -3 2288 - 100000 40m 1248 2288 177632 -3 2288 - 10000 300m 1248 2288 46176 -3 2288 - 25000 300m 1248 2288 79040 -3 2288 - 40000 300m 1248 2288 108160 -3 2288 - 50000 300m 1248 2288 141856 -3 2288 - 100000 300m 1248 2288 268736 -3 2288 +# speed cable size xon xoff threshold xon_offset + 10000 5m 1248 2288 38064 -3 2288 + 25000 5m 1248 2288 52000 -3 2288 + 40000 5m 1248 2288 64728 -3 2288 + 50000 5m 1248 2288 77168 -3 2288 + 100000 5m 1248 2288 136032 -3 2288 + 10000 40m 1248 2288 39104 -3 2288 + 25000 40m 1248 2288 54288 -3 2288 + 40000 40m 1248 2288 69472 -3 2288 + 50000 40m 1248 2288 81744 -3 2288 + 100000 40m 1248 2288 145392 -3 2288 + 10000 300m 1248 2288 47216 -3 2288 + 25000 300m 1248 2288 74464 -3 2288 + 40000 300m 1248 2288 101712 -3 2288 + 50000 300m 1248 2288 122096 -3 2288 + 100000 300m 1248 2288 225680 -3 2288 diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm index c9e8698436de..c1101797b021 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-C32/th3-z9332f-32x100G.config.bcm @@ -1,8 +1,12 @@ +sai_tunnel_global_sip_mask_enable=1 core_clock_frequency=1325 dpr_clock_frequency=1000 device_clock_frequency=1325 port_flex_enable=1 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + #firmware load method, use fast load load_firmware=0x2 @@ -516,3 +520,4 @@ serdes_lane_config_media_type_24=copper sai_preinit_cmd_file=/usr/share/sonic/hwsku/sai_preinit_cmd.soc sai_postinit_cmd_file=/usr/share/sonic/hwsku/sai_postinit_cmd.soc +led_fw_path=/usr/share/sonic/hwsku/ diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t0.j2 b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t0.j2 index 5ecbe788e3ab..33aaea75935d 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t0.j2 +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t0.j2 @@ -4,18 +4,18 @@ {# Generate list of ports #} {%- for port_idx in range(0,12) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 2) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 4) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 6) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 2) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 4) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 6) %}{%- endif %} {%- endfor %} {%- for port_idx in range(12,16) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} {%- endfor %} {%- for port_idx in range(16,20) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 2) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 4) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 6) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 2) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 4) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 6) %}{%- endif %} {%- endfor %} {%- for port_idx in range(20,32) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t1.j2 b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t1.j2 index 5ecbe788e3ab..33aaea75935d 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t1.j2 +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/buffers_defaults_t1.j2 @@ -4,18 +4,18 @@ {# Generate list of ports #} {%- for port_idx in range(0,12) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 2) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 4) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 6) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 2) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 4) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 6) %}{%- endif %} {%- endfor %} {%- for port_idx in range(12,16) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} {%- endfor %} {%- for port_idx in range(16,20) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 2) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 4) %}{%- endif %} - {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 2) + 6) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 2) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 4) %}{%- endif %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8) + 6) %}{%- endif %} {%- endfor %} {%- for port_idx in range(20,32) %} {%- if PORT_ALL.append("Ethernet%d" % (port_idx * 8)) %}{%- endif %} diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/pg_profile_lookup.ini index b8bb10af9685..06d19555c746 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/pg_profile_lookup.ini @@ -5,8 +5,8 @@ 100000 300m 2540 2540 117348 -2 2540 100000 1000m 2540 2540 233172 -2 2540 100000 2000m 2540 2540 398526 -2 2540 - 400000 5m 2540 2540 35776 -2 2540 - 400000 40m 2540 2540 53248 -2 2540 - 400000 300m 2540 2540 66560 -2 2540 - 400000 1000m 2540 2540 79872 -2 2540 - 400000 2000m 2540 2540 54528 -2 2540 + 400000 5m 2540 2540 178562 -2 2540 + 400000 40m 2540 2540 201930 -2 2540 + 400000 300m 2540 2540 373888 -2 2540 + 400000 1000m 2540 2540 836676 -2 2540 + 400000 2000m 2540 2540 1498092 -2 2540 diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/sai_postinit_cmd.soc b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/sai_postinit_cmd.soc index 4a5b5ffcad9a..3222a4906bdf 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/sai_postinit_cmd.soc +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/sai_postinit_cmd.soc @@ -373,6 +373,7 @@ phy $port TXFIR_TAP_CTL4r.3 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.3 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.3 TXFIR_TAP_LOAD=0x1 +local port ce18 #*** lane 4 *** phy $port TXFIR_TAP_CTL0r.4 TXFIR_TAP0_COEFF=0 phy $port TXFIR_TAP_CTL1r.4 TXFIR_TAP1_COEFF=0x1E8 @@ -382,8 +383,6 @@ phy $port TXFIR_TAP_CTL4r.4 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.4 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.4 TXFIR_TAP_LOAD=0x1 - -local port ce18 #*** lane 5 *** phy $port TXFIR_TAP_CTL0r.5 TXFIR_TAP0_COEFF=0 phy $port TXFIR_TAP_CTL1r.5 TXFIR_TAP1_COEFF=0x1E8 @@ -393,6 +392,7 @@ phy $port TXFIR_TAP_CTL4r.5 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.5 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.5 TXFIR_TAP_LOAD=0x1 +local port ce19 #*** lane 6 *** phy $port TXFIR_TAP_CTL0r.6 TXFIR_TAP0_COEFF=0 phy $port TXFIR_TAP_CTL1r.6 TXFIR_TAP1_COEFF=0x1E8 @@ -402,7 +402,6 @@ phy $port TXFIR_TAP_CTL4r.6 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.6 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.6 TXFIR_TAP_LOAD=0x1 -local port ce19 #*** lane 7 *** phy $port TXFIR_TAP_CTL0r.7 TXFIR_TAP0_COEFF=4 phy $port TXFIR_TAP_CTL1r.7 TXFIR_TAP1_COEFF=0x1E4 @@ -974,6 +973,7 @@ phy $port TXFIR_TAP_CTL4r.5 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.5 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.5 TXFIR_TAP_LOAD=0x1 +local port ce47 #*** lane 6 *** phy $port TXFIR_TAP_CTL0r.6 TXFIR_TAP0_COEFF=0 phy $port TXFIR_TAP_CTL1r.6 TXFIR_TAP1_COEFF=0x1E8 @@ -983,7 +983,6 @@ phy $port TXFIR_TAP_CTL4r.6 TXFIR_TAP4_COEFF=0 phy $port TXFIR_TAP_CTL5r.6 TXFIR_TAP5_COEFF=0 phy $port TXFIR_TAP_CTL0r.6 TXFIR_TAP_LOAD=0x1 -local port ce47 #*** lane 7 *** phy $port TXFIR_TAP_CTL0r.7 TXFIR_TAP0_COEFF=4 phy $port TXFIR_TAP_CTL1r.7 TXFIR_TAP1_COEFF=0x1E4 diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm index 1a41367d9410..17f2d565c26a 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-M-O16C64/th3-z9332f-16x400G-64x100G.config.bcm @@ -1,8 +1,12 @@ +sai_tunnel_global_sip_mask_enable=1 core_clock_frequency=1325 dpr_clock_frequency=1000 device_clock_frequency=1325 port_flex_enable=1 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + #firmware load method, use fast load load_firmware=0x2 @@ -578,3 +582,4 @@ serdes_lane_config_media_type_24=copper sai_preinit_cmd_file=/usr/share/sonic/hwsku/sai_preinit_cmd.soc sai_postinit_cmd_file=/usr/share/sonic/hwsku/sai_postinit_cmd.soc +led_fw_path=/usr/share/sonic/hwsku/ diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/pg_profile_lookup.ini b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/pg_profile_lookup.ini index b8bb10af9685..06d19555c746 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/pg_profile_lookup.ini +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/pg_profile_lookup.ini @@ -5,8 +5,8 @@ 100000 300m 2540 2540 117348 -2 2540 100000 1000m 2540 2540 233172 -2 2540 100000 2000m 2540 2540 398526 -2 2540 - 400000 5m 2540 2540 35776 -2 2540 - 400000 40m 2540 2540 53248 -2 2540 - 400000 300m 2540 2540 66560 -2 2540 - 400000 1000m 2540 2540 79872 -2 2540 - 400000 2000m 2540 2540 54528 -2 2540 + 400000 5m 2540 2540 178562 -2 2540 + 400000 40m 2540 2540 201930 -2 2540 + 400000 300m 2540 2540 373888 -2 2540 + 400000 1000m 2540 2540 836676 -2 2540 + 400000 2000m 2540 2540 1498092 -2 2540 diff --git a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm index a189a8b1731f..9f33e13cc225 100644 --- a/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm +++ b/device/dell/x86_64-dellemc_z9332f_d1508-r0/DellEMC-Z9332f-O32/th3-z9332f-32x400G.config.bcm @@ -1,8 +1,12 @@ +sai_tunnel_global_sip_mask_enable=1 core_clock_frequency=1325 dpr_clock_frequency=1000 device_clock_frequency=1325 port_flex_enable=1 +# Disable Counting ACL Drop towards interface RX_DRP counter +sai_adjust_acl_drop_in_rx_drop=1 + #firmware load method, use fast load load_firmware=0x2 @@ -518,3 +522,4 @@ serdes_lane_config_media_type_24=copper sai_preinit_cmd_file=/usr/share/sonic/hwsku/sai_preinit_cmd.soc sai_postinit_cmd_file=/usr/share/sonic/hwsku/sai_postinit_cmd.soc +led_fw_path=/usr/share/sonic/hwsku/ diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers.json.j2 b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers.json.j2 new file mode 120000 index 000000000000..add8bf8bb7c2 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers.json.j2 @@ -0,0 +1 @@ +../../x86_64-mlnx_msn2700-r0/ACS-MSN2700/buffers.json.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t0.j2 b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t0.j2 new file mode 100644 index 000000000000..df453006bd12 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t0.j2 @@ -0,0 +1,100 @@ +{% set default_cable = '5m' %} +{% set ingress_lossless_pool_size = '20664320' %} +{% set ingress_lossless_xoff_size = '3321856' %} +{% set egress_lossless_pool_size = '34287552' %} +{% set egress_lossy_pool_size = '20664320' %} + +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {%- for port_idx in range(0, 32) %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} + {%- endfor %} +{%- endmacro %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "{{ ingress_lossless_pool_size }}", + "xoff": "{{ ingress_lossless_xoff_size }}", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "{{ egress_lossless_pool_size }}", + "type": "egress", + "mode": "dynamic" + }, + "egress_lossy_pool": { + "size": "{{ egress_lossy_pool_size }}", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"9216", + "dynamic_th":"7" + }, + "q_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + } + }, +{%- endmacro %} + +{%- macro generate_profile_lists(port_names) %} + "BUFFER_PORT_INGRESS_PROFILE_LIST": { +{% for port in port_names.split(',') %} + "{{ port }}": { + "profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "BUFFER_PORT_EGRESS_PROFILE_LIST": { +{% for port in port_names.split(',') %} + "{{ port }}": { + "profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +{%- endmacro %} + +{%- macro generate_queue_buffers(port_names) %} + "BUFFER_QUEUE": { +{% for port in port_names.split(',') %} + "{{ port }}|3-4": { + "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" + }, +{% endfor %} +{% for port in port_names.split(',') %} + "{{ port }}|0-2": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + }, +{% endfor %} +{% for port in port_names.split(',') %} + "{{ port }}|5-6": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +{%- endmacro %} diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t1.j2 b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..d75ccfe4fed9 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_defaults_t1.j2 @@ -0,0 +1,100 @@ +{% set default_cable = '5m' %} +{% set ingress_lossless_pool_size = '19601408' %} +{% set ingress_lossless_xoff_size = '4384768' %} +{% set egress_lossless_pool_size = '34287552' %} +{% set egress_lossy_pool_size = '19601408' %} + +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {%- for port_idx in range(0, 32) %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} + {%- endfor %} +{%- endmacro %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "{{ ingress_lossless_pool_size }}", + "xoff": "{{ ingress_lossless_xoff_size }}", + "type": "ingress", + "mode": "dynamic" + }, + "egress_lossless_pool": { + "size": "{{ egress_lossless_pool_size }}", + "type": "egress", + "mode": "dynamic" + }, + "egress_lossy_pool": { + "size": "{{ egress_lossy_pool_size }}", + "type": "egress", + "mode": "dynamic" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "ingress_lossy_profile": { + "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "size":"0", + "dynamic_th":"3" + }, + "egress_lossless_profile": { + "pool":"[BUFFER_POOL|egress_lossless_pool]", + "size":"0", + "dynamic_th":"7" + }, + "egress_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"9216", + "dynamic_th":"7" + }, + "q_lossy_profile": { + "pool":"[BUFFER_POOL|egress_lossy_pool]", + "size":"0", + "dynamic_th":"3" + } + }, +{%- endmacro %} + +{%- macro generate_profile_lists(port_names) %} + "BUFFER_PORT_INGRESS_PROFILE_LIST": { +{% for port in port_names.split(',') %} + "{{ port }}": { + "profile_list" : "[BUFFER_PROFILE|ingress_lossless_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "BUFFER_PORT_EGRESS_PROFILE_LIST": { +{% for port in port_names.split(',') %} + "{{ port }}": { + "profile_list" : "[BUFFER_PROFILE|egress_lossless_profile],[BUFFER_PROFILE|egress_lossy_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +{%- endmacro %} + +{%- macro generate_queue_buffers(port_names) %} + "BUFFER_QUEUE": { +{% for port in port_names.split(',') %} + "{{ port }}|3-4": { + "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" + }, +{% endfor %} +{% for port in port_names.split(',') %} + "{{ port }}|0-2": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + }, +{% endfor %} +{% for port in port_names.split(',') %} + "{{ port }}|5-6": { + "profile" : "[BUFFER_PROFILE|q_lossy_profile]" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +{%- endmacro %} diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_dynamic.json.j2 b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_dynamic.json.j2 new file mode 120000 index 000000000000..8c4117c66214 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/buffers_dynamic.json.j2 @@ -0,0 +1 @@ +../../x86_64-mlnx_msn2700-r0/ACS-MSN2700/buffers_dynamic.json.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json new file mode 100644 index 000000000000..2b1d5d322282 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/hwsku.json @@ -0,0 +1,346 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet2": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet4": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet6": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet8": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet10": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet12": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet14": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet16": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet18": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet20": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet22": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet24": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet26": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet28": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet30": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet32": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet34": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet36": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet38": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet40": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet42": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet44": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet46": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet48": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet50": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet52": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet54": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet56": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet58": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet60": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet62": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet64": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet66": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet68": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet70": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet72": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet74": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet76": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet78": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet80": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet82": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet84": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet86": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet88": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet90": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet92": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet94": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet96": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet98": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet100": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet102": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet104": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet106": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet108": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet110": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet112": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet114": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet116": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet118": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet120": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet122": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet124": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet126": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet128": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet130": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet132": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet134": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet136": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet138": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet140": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet142": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet144": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet146": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet148": { + "default_brkout_mode": "1x10G[100G,50G,40G,25G]" + }, + "Ethernet152": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet154": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet156": { + "default_brkout_mode": "1x10G[100G,50G,40G,25G]" + }, + "Ethernet160": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet162": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet164": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet166": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet168": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet170": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet172": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet174": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet176": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet178": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet180": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet182": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet184": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet186": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet188": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet190": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet192": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet194": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet196": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet198": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet200": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet202": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet204": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet206": { + "default_brkout_mode": "2x50G[25G,10G]" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet212": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet220": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet228": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet236": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet244": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + }, + "Ethernet252": { + "default_brkout_mode": "1x100G[50G,40G,25G,10G]" + } + } +} diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/pg_profile_lookup.ini b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/pg_profile_lookup.ini new file mode 120000 index 000000000000..ccbbfa44cd9c --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/pg_profile_lookup.ini @@ -0,0 +1 @@ +../Mellanox-SN3800-D112C8/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/port_config.ini b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/port_config.ini new file mode 100644 index 000000000000..535556ebfb3b --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/port_config.ini @@ -0,0 +1,115 @@ +# name lanes alias index speed +Ethernet0 0,1 etp1a 1 50000 +Ethernet2 2,3 etp1b 1 50000 +Ethernet4 4,5 etp2a 2 50000 +Ethernet6 6,7 etp2b 2 50000 +Ethernet8 8,9 etp3a 3 50000 +Ethernet10 10,11 etp3b 3 50000 +Ethernet12 12,13 etp4a 4 50000 +Ethernet14 14,15 etp4b 4 50000 +Ethernet16 16,17 etp5a 5 50000 +Ethernet18 18,19 etp5b 5 50000 +Ethernet20 20,21 etp6a 6 50000 +Ethernet22 22,23 etp6b 6 50000 +Ethernet24 24,25 etp7a 7 50000 +Ethernet26 26,27 etp7b 7 50000 +Ethernet28 28,29 etp8a 8 50000 +Ethernet30 30,31 etp8b 8 50000 +Ethernet32 32,33 etp9a 9 50000 +Ethernet34 34,35 etp9b 9 50000 +Ethernet36 36,37 etp10a 10 50000 +Ethernet38 38,39 etp10b 10 50000 +Ethernet40 40,41 etp11a 11 50000 +Ethernet42 42,43 etp11b 11 50000 +Ethernet44 44,45 etp12a 12 50000 +Ethernet46 46,47 etp12b 12 50000 +Ethernet48 48,49 etp13a 13 50000 +Ethernet50 50,51 etp13b 13 50000 +Ethernet52 52,53 etp14a 14 50000 +Ethernet54 54,55 etp14b 14 50000 +Ethernet56 56,57 etp15a 15 50000 +Ethernet58 58,59 etp15b 15 50000 +Ethernet60 60,61 etp16a 16 50000 +Ethernet62 62,63 etp16b 16 50000 +Ethernet64 64,65 etp17a 17 50000 +Ethernet66 66,67 etp17b 17 50000 +Ethernet68 68,69 etp18a 18 50000 +Ethernet70 70,71 etp18b 18 50000 +Ethernet72 72,73 etp19a 19 50000 +Ethernet74 74,75 etp19b 19 50000 +Ethernet76 76,77 etp20a 20 50000 +Ethernet78 78,79 etp20b 20 50000 +Ethernet80 80,81 etp21a 21 50000 +Ethernet82 82,83 etp21b 21 50000 +Ethernet84 84,85 etp22a 22 50000 +Ethernet86 86,87 etp22b 22 50000 +Ethernet88 88,89 etp23a 23 50000 +Ethernet90 90,91 etp23b 23 50000 +Ethernet92 92,93 etp24a 24 50000 +Ethernet94 94,95 etp24b 24 50000 +Ethernet96 96,97 etp25a 25 50000 +Ethernet98 98,99 etp25b 25 50000 +Ethernet100 100,101 etp26a 26 50000 +Ethernet102 102,103 etp26b 26 50000 +Ethernet104 104,105 etp27a 27 50000 +Ethernet106 106,107 etp27b 27 50000 +Ethernet108 108,109 etp28a 28 50000 +Ethernet110 110,111 etp28b 28 50000 +Ethernet112 112,113 etp29a 29 50000 +Ethernet114 114,115 etp29b 29 50000 +Ethernet116 116,117 etp30a 30 50000 +Ethernet118 118,119 etp30b 30 50000 +Ethernet120 120,121 etp31a 31 50000 +Ethernet122 122,123 etp31b 31 50000 +Ethernet124 124,125 etp32a 32 50000 +Ethernet126 126,127 etp32b 32 50000 +Ethernet128 128,129 etp33a 33 50000 +Ethernet130 130,131 etp33b 33 50000 +Ethernet132 132,133 etp34a 34 50000 +Ethernet134 134,135 etp34b 34 50000 +Ethernet136 136,137 etp35a 35 50000 +Ethernet138 138,139 etp35b 35 50000 +Ethernet140 140,141 etp36a 36 50000 +Ethernet142 142,143 etp36b 36 50000 +Ethernet144 144,145 etp37a 37 50000 +Ethernet146 146,147 etp37b 37 50000 +Ethernet148 148,149,150,151 etp38 38 10000 +Ethernet152 152,153 etp39a 39 50000 +Ethernet154 154,155 etp39b 39 50000 +Ethernet156 156,157,158,159 etp40 40 10000 +Ethernet160 160,161 etp41a 41 50000 +Ethernet162 162,163 etp41b 41 50000 +Ethernet164 164,165 etp42a 42 50000 +Ethernet166 166,167 etp42b 42 50000 +Ethernet168 168,169 etp43a 43 50000 +Ethernet170 170,171 etp43b 43 50000 +Ethernet172 172,173 etp44a 44 50000 +Ethernet174 174,175 etp44b 44 50000 +Ethernet176 176,177 etp45a 45 50000 +Ethernet178 178,179 etp45b 45 50000 +Ethernet180 180,181 etp46a 46 50000 +Ethernet182 182,183 etp46b 46 50000 +Ethernet184 184,185 etp47a 47 50000 +Ethernet186 186,187 etp47b 47 50000 +Ethernet188 188,189 etp48a 48 50000 +Ethernet190 190,191 etp48b 48 50000 +Ethernet192 192,193 etp49a 49 50000 +Ethernet194 194,195 etp49b 49 50000 +Ethernet196 196,197 etp50a 50 50000 +Ethernet198 198,199 etp50b 50 50000 +Ethernet200 200,201 etp51a 51 50000 +Ethernet202 202,203 etp51b 51 50000 +Ethernet204 204,205 etp52a 52 50000 +Ethernet206 206,207 etp52b 52 50000 +Ethernet208 208,209,210,211 etp53 53 100000 +Ethernet212 212,213,214,215 etp54 54 100000 +Ethernet216 216,217,218,219 etp55 55 100000 +Ethernet220 220,221,222,223 etp56 56 100000 +Ethernet224 224,225,226,227 etp57 57 100000 +Ethernet228 228,229,230,231 etp58 58 100000 +Ethernet232 232,233,234,235 etp59 59 100000 +Ethernet236 236,237,238,239 etp60 60 100000 +Ethernet240 240,241,242,243 etp61 61 100000 +Ethernet244 244,245,246,247 etp62 62 100000 +Ethernet248 248,249,250,251 etp63 63 100000 +Ethernet252 252,253,254,255 etp64 64 100000 diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/qos.json.j2 b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/qos.json.j2 new file mode 120000 index 000000000000..eccf286dc879 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/qos.json.j2 @@ -0,0 +1 @@ +../../x86_64-mlnx_msn2700-r0/ACS-MSN2700/qos.json.j2 \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai.profile b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai.profile new file mode 100644 index 000000000000..5543225b55f5 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai.profile @@ -0,0 +1,2 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/sai_3800_2x10g_100x50g_12x100g.xml +SAI_VXLAN_SRCPORT_RANGE_ENABLE=1 diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai_3800_2x10g_100x50g_12x100g.xml b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai_3800_2x10g_100x50g_12x100g.xml new file mode 100644 index 000000000000..bf0fa4ca6909 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/Mellanox-SN3800-D100C12S2/sai_3800_2x10g_100x50g_12x100g.xml @@ -0,0 +1,521 @@ + + + + + + 00:02:03:04:05:00 + + + 1 + + + 64 + + + + + 1 + 4 + 48 + + + 3 + + + 384 + 2 + + + 3 + 4 + 49 + 1 + 384 + 2 + + + 5 + 4 + 50 + 3 + 384 + 2 + + + 7 + 4 + 51 + 1 + 384 + 2 + + + 9 + 4 + 52 + 3 + 384 + 2 + + + 11 + 4 + 53 + 1 + 384 + 2 + + + 13 + 4 + 54 + 3 + 384 + 2 + + + 15 + 4 + 55 + 1 + 384 + 2 + + + 17 + 4 + 56 + 3 + 384 + 2 + + + 19 + 4 + 57 + 1 + 384 + 2 + + + 21 + 4 + 58 + 3 + 384 + 2 + + + 23 + 4 + 59 + 1 + 384 + 2 + + + 25 + 4 + 60 + 3 + 384 + 2 + + + 27 + 4 + 61 + 1 + 384 + 2 + + + 29 + 4 + 62 + 3 + 384 + 2 + + + 31 + 4 + 63 + 1 + 384 + 2 + + + 33 + 4 + 12 + 3 + 384 + 2 + + + 35 + 4 + 13 + 1 + 384 + 2 + + + 37 + 4 + 14 + 3 + 384 + 2 + + + 39 + 4 + 15 + 1 + 384 + 2 + + + 41 + 4 + 8 + 3 + 384 + 2 + + + 43 + 4 + 9 + 1 + 384 + 2 + + + 45 + 4 + 10 + 3 + 384 + 2 + + + 47 + 4 + 11 + 1 + 384 + 2 + + + 49 + 4 + 4 + 3 + 384 + 2 + + + 51 + 4 + 5 + 1 + 384 + 2 + + + 53 + 4 + 6 + 3 + 384 + 2 + + + 55 + 4 + 7 + 1 + 384 + 2 + + + 57 + 4 + 0 + 3 + 384 + 2 + + + 59 + 4 + 1 + 1 + 384 + 2 + + + 61 + 4 + 2 + 3 + 384 + 2 + + + 63 + 4 + 3 + 1 + 384 + 2 + + + 65 + 4 + 44 + 3 + 384 + 2 + + + 67 + 4 + 45 + 1 + 384 + 2 + + + 69 + 4 + 46 + 3 + 384 + 2 + + + 71 + 4 + 47 + 1 + 384 + 2 + + + 73 + 4 + 40 + 3 + 384 + 2 + + + 75 + 4 + 41 + 1 + 16 + + + 77 + 4 + 42 + 3 + 384 + 2 + + + 79 + 4 + 43 + 1 + 16 + + + 81 + 4 + 36 + 3 + 384 + 2 + + + 83 + 4 + 37 + 1 + 384 + 2 + + + 85 + 4 + 38 + 3 + 384 + 2 + + + 87 + 4 + 39 + 1 + 384 + 2 + + + 89 + 4 + 32 + 3 + 384 + 2 + + + 91 + 4 + 33 + 1 + 384 + 2 + + + 93 + 4 + 34 + 3 + 384 + 2 + + + 95 + 4 + 35 + 1 + 384 + 2 + + + 97 + 4 + 16 + 3 + 384 + 2 + + + 99 + 4 + 17 + 1 + 384 + 2 + + + 101 + 4 + 18 + 3 + 384 + 2 + + + 103 + 4 + 19 + 1 + 384 + 2 + + + 105 + 4 + 20 + 3 + 1536 + + + 107 + 4 + 21 + 1 + 1536 + + + 109 + 4 + 22 + 3 + 1536 + + + 111 + 4 + 23 + 1 + 1536 + + + 113 + 4 + 24 + 3 + 1536 + + + 115 + 4 + 25 + 1 + 1536 + + + 117 + 4 + 26 + 3 + 1536 + + + 119 + 4 + 27 + 1 + 1536 + + + 121 + 4 + 28 + 3 + 1536 + + + 123 + 4 + 29 + 1 + 1536 + + + 125 + 4 + 30 + 3 + 1536 + + + 127 + 4 + 31 + 1 + 1536 + + + + + diff --git a/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json b/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json index db273059482c..92865e228ee5 100644 --- a/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json +++ b/device/mellanox/x86_64-mlnx_msn3800-r0/platform.json @@ -725,6 +725,7 @@ "lanes": "0,1,2,3", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp1"], + "1x10G[100G,50G,40G,25G]": ["etp1"], "2x50G[25G,10G]": ["etp1a", "etp1b"] } }, @@ -733,6 +734,7 @@ "lanes": "4,5,6,7", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp2"], + "1x10G[100G,50G,40G,25G]": ["etp2"], "2x50G[25G,10G]": ["etp2a", "etp2b"] } }, @@ -741,6 +743,7 @@ "lanes": "8,9,10,11", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp3"], + "1x10G[100G,50G,40G,25G]": ["etp3"], "2x50G[25G,10G]": ["etp3a", "etp3b"] } }, @@ -749,6 +752,7 @@ "lanes": "12,13,14,15", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp4"], + "1x10G[100G,50G,40G,25G]": ["etp4"], "2x50G[25G,10G]": ["etp4a", "etp4b"] } }, @@ -757,6 +761,7 @@ "lanes": "16,17,18,19", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp5"], + "1x10G[100G,50G,40G,25G]": ["etp5"], "2x50G[25G,10G]": ["etp5a", "etp5b"] } }, @@ -765,6 +770,7 @@ "lanes": "20,21,22,23", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp6"], + "1x10G[100G,50G,40G,25G]": ["etp6"], "2x50G[25G,10G]": ["etp6a", "etp6b"] } }, @@ -773,6 +779,7 @@ "lanes": "24,25,26,27", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp7"], + "1x10G[100G,50G,40G,25G]": ["etp7"], "2x50G[25G,10G]": ["etp7a", "etp7b"] } }, @@ -781,6 +788,7 @@ "lanes": "28,29,30,31", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp8"], + "1x10G[100G,50G,40G,25G]": ["etp8"], "2x50G[25G,10G]": ["etp8a", "etp8b"] } }, @@ -789,6 +797,7 @@ "lanes": "32,33,34,35", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp9"], + "1x10G[100G,50G,40G,25G]": ["etp9"], "2x50G[25G,10G]": ["etp9a", "etp9b"] } }, @@ -797,6 +806,7 @@ "lanes": "36,37,38,39", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp10"], + "1x10G[100G,50G,40G,25G]": ["etp10"], "2x50G[25G,10G]": ["etp10a", "etp10b"] } }, @@ -805,6 +815,7 @@ "lanes": "40,41,42,43", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp11"], + "1x10G[100G,50G,40G,25G]": ["etp11"], "2x50G[25G,10G]": ["etp11a", "etp11b"] } }, @@ -813,6 +824,7 @@ "lanes": "44,45,46,47", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp12"], + "1x10G[100G,50G,40G,25G]": ["etp12"], "2x50G[25G,10G]": ["etp12a", "etp12b"] } }, @@ -821,6 +833,7 @@ "lanes": "48,49,50,51", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp13"], + "1x10G[100G,50G,40G,25G]": ["etp13"], "2x50G[25G,10G]": ["etp13a", "etp13b"] } }, @@ -829,6 +842,7 @@ "lanes": "52,53,54,55", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp14"], + "1x10G[100G,50G,40G,25G]": ["etp14"], "2x50G[25G,10G]": ["etp14a", "etp14b"] } }, @@ -837,6 +851,7 @@ "lanes": "56,57,58,59", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp15"], + "1x10G[100G,50G,40G,25G]": ["etp15"], "2x50G[25G,10G]": ["etp15a", "etp15b"] } }, @@ -845,6 +860,7 @@ "lanes": "60,61,62,63", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp16"], + "1x10G[100G,50G,40G,25G]": ["etp16"], "2x50G[25G,10G]": ["etp16a", "etp16b"] } }, @@ -853,6 +869,7 @@ "lanes": "64,65,66,67", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp17"], + "1x10G[100G,50G,40G,25G]": ["etp17"], "2x50G[25G,10G]": ["etp17a", "etp17b"] } }, @@ -861,6 +878,7 @@ "lanes": "68,69,70,71", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp18"], + "1x10G[100G,50G,40G,25G]": ["etp18"], "2x50G[25G,10G]": ["etp18a", "etp18b"] } }, @@ -869,6 +887,7 @@ "lanes": "72,73,74,75", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp19"], + "1x10G[100G,50G,40G,25G]": ["etp19"], "2x50G[25G,10G]": ["etp19a", "etp19b"] } }, @@ -877,6 +896,7 @@ "lanes": "76,77,78,79", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp20"], + "1x10G[100G,50G,40G,25G]": ["etp20"], "2x50G[25G,10G]": ["etp20a", "etp20b"] } }, @@ -885,6 +905,7 @@ "lanes": "80,81,82,83", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp21"], + "1x10G[100G,50G,40G,25G]": ["etp21"], "2x50G[25G,10G]": ["etp21a", "etp21b"] } }, @@ -893,6 +914,7 @@ "lanes": "84,85,86,87", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp22"], + "1x10G[100G,50G,40G,25G]": ["etp22"], "2x50G[25G,10G]": ["etp22a", "etp22b"] } }, @@ -901,6 +923,7 @@ "lanes": "88,89,90,91", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp23"], + "1x10G[100G,50G,40G,25G]": ["etp23"], "2x50G[25G,10G]": ["etp23a", "etp23b"] } }, @@ -909,6 +932,7 @@ "lanes": "92,93,94,95", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp24"], + "1x10G[100G,50G,40G,25G]": ["etp24"], "2x50G[25G,10G]": ["etp24a", "etp24b"] } }, @@ -917,6 +941,7 @@ "lanes": "96,97,98,99", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp25"], + "1x10G[100G,50G,40G,25G]": ["etp25"], "2x50G[25G,10G]": ["etp25a", "etp25b"] } }, @@ -925,6 +950,7 @@ "lanes": "100,101,102,103", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp26"], + "1x10G[100G,50G,40G,25G]": ["etp26"], "2x50G[25G,10G]": ["etp26a", "etp26b"] } }, @@ -933,6 +959,7 @@ "lanes": "104,105,106,107", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp27"], + "1x10G[100G,50G,40G,25G]": ["etp27"], "2x50G[25G,10G]": ["etp27a", "etp27b"] } }, @@ -941,6 +968,7 @@ "lanes": "108,109,110,111", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp28"], + "1x10G[100G,50G,40G,25G]": ["etp28"], "2x50G[25G,10G]": ["etp28a", "etp28b"] } }, @@ -949,6 +977,7 @@ "lanes": "112,113,114,115", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp29"], + "1x10G[100G,50G,40G,25G]": ["etp29"], "2x50G[25G,10G]": ["etp29a", "etp29b"] } }, @@ -957,6 +986,7 @@ "lanes": "116,117,118,119", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp30"], + "1x10G[100G,50G,40G,25G]": ["etp30"], "2x50G[25G,10G]": ["etp30a", "etp30b"] } }, @@ -965,6 +995,7 @@ "lanes": "120,121,122,123", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp31"], + "1x10G[100G,50G,40G,25G]": ["etp31"], "2x50G[25G,10G]": ["etp31a", "etp31b"] } }, @@ -973,6 +1004,7 @@ "lanes": "124,125,126,127", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp32"], + "1x10G[100G,50G,40G,25G]": ["etp32"], "2x50G[25G,10G]": ["etp32a", "etp32b"] } }, @@ -981,6 +1013,7 @@ "lanes": "128,129,130,131", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp33"], + "1x10G[100G,50G,40G,25G]": ["etp33"], "2x50G[25G,10G]": ["etp33a", "etp33b"] } }, @@ -989,6 +1022,7 @@ "lanes": "132,133,134,135", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp34"], + "1x10G[100G,50G,40G,25G]": ["etp34"], "2x50G[25G,10G]": ["etp34a", "etp34b"] } }, @@ -997,6 +1031,7 @@ "lanes": "136,137,138,139", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp35"], + "1x10G[100G,50G,40G,25G]": ["etp35"], "2x50G[25G,10G]": ["etp35a", "etp35b"] } }, @@ -1005,6 +1040,7 @@ "lanes": "140,141,142,143", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp36"], + "1x10G[100G,50G,40G,25G]": ["etp36"], "2x50G[25G,10G]": ["etp36a", "etp36b"] } }, @@ -1013,6 +1049,7 @@ "lanes": "144,145,146,147", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp37"], + "1x10G[100G,50G,40G,25G]": ["etp37"], "2x50G[25G,10G]": ["etp37a", "etp37b"] } }, @@ -1021,6 +1058,7 @@ "lanes": "148,149,150,151", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp38"], + "1x10G[100G,50G,40G,25G]": ["etp38"], "2x50G[25G,10G]": ["etp38a", "etp38b"] } }, @@ -1029,6 +1067,7 @@ "lanes": "152,153,154,155", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp39"], + "1x10G[100G,50G,40G,25G]": ["etp39"], "2x50G[25G,10G]": ["etp39a", "etp39b"] } }, @@ -1037,6 +1076,7 @@ "lanes": "156,157,158,159", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp40"], + "1x10G[100G,50G,40G,25G]": ["etp40"], "2x50G[25G,10G]": ["etp40a", "etp40b"] } }, @@ -1045,6 +1085,7 @@ "lanes": "160,161,162,163", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp41"], + "1x10G[100G,50G,40G,25G]": ["etp41"], "2x50G[25G,10G]": ["etp41a", "etp41b"] } }, @@ -1053,6 +1094,7 @@ "lanes": "164,165,166,167", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp42"], + "1x10G[100G,50G,40G,25G]": ["etp42"], "2x50G[25G,10G]": ["etp42a", "etp42b"] } }, @@ -1061,6 +1103,7 @@ "lanes": "168,169,170,171", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp43"], + "1x10G[100G,50G,40G,25G]": ["etp43"], "2x50G[25G,10G]": ["etp43a", "etp43b"] } }, @@ -1069,6 +1112,7 @@ "lanes": "172,173,174,175", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp44"], + "1x10G[100G,50G,40G,25G]": ["etp44"], "2x50G[25G,10G]": ["etp44a", "etp44b"] } }, @@ -1077,6 +1121,7 @@ "lanes": "176,177,178,179", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp45"], + "1x10G[100G,50G,40G,25G]": ["etp45"], "2x50G[25G,10G]": ["etp45a", "etp45b"] } }, @@ -1085,6 +1130,7 @@ "lanes": "180,181,182,183", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp46"], + "1x10G[100G,50G,40G,25G]": ["etp46"], "2x50G[25G,10G]": ["etp46a", "etp46b"] } }, @@ -1093,6 +1139,7 @@ "lanes": "184,185,186,187", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp47"], + "1x10G[100G,50G,40G,25G]": ["etp47"], "2x50G[25G,10G]": ["etp47a", "etp47b"] } }, @@ -1101,6 +1148,7 @@ "lanes": "188,189,190,191", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp48"], + "1x10G[100G,50G,40G,25G]": ["etp48"], "2x50G[25G,10G]": ["etp48a", "etp48b"] } }, @@ -1109,6 +1157,7 @@ "lanes": "192,193,194,195", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp49"], + "1x10G[100G,50G,40G,25G]": ["etp49"], "2x50G[25G,10G]": ["etp49a", "etp49b"] } }, @@ -1117,6 +1166,7 @@ "lanes": "196,197,198,199", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp50"], + "1x10G[100G,50G,40G,25G]": ["etp50"], "2x50G[25G,10G]": ["etp50a", "etp50b"] } }, @@ -1125,6 +1175,7 @@ "lanes": "200,201,202,203", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp51"], + "1x10G[100G,50G,40G,25G]": ["etp51"], "2x50G[25G,10G]": ["etp51a", "etp51b"] } }, @@ -1133,6 +1184,7 @@ "lanes": "204,205,206,207", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp52"], + "1x10G[100G,50G,40G,25G]": ["etp52"], "2x50G[25G,10G]": ["etp52a", "etp52b"] } }, @@ -1141,6 +1193,7 @@ "lanes": "208,209,210,211", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp53"], + "1x10G[100G,50G,40G,25G]": ["etp53"], "2x50G[25G,10G]": ["etp53a", "etp53b"] } }, @@ -1149,6 +1202,7 @@ "lanes": "212,213,214,215", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp54"], + "1x10G[100G,50G,40G,25G]": ["etp54"], "2x50G[25G,10G]": ["etp54a", "etp54b"] } }, @@ -1157,6 +1211,7 @@ "lanes": "216,217,218,219", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp55"], + "1x10G[100G,50G,40G,25G]": ["etp55"], "2x50G[25G,10G]": ["etp55a", "etp55b"] } }, @@ -1165,6 +1220,7 @@ "lanes": "220,221,222,223", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp56"], + "1x10G[100G,50G,40G,25G]": ["etp56"], "2x50G[25G,10G]": ["etp56a", "etp56b"] } }, @@ -1173,6 +1229,7 @@ "lanes": "224,225,226,227", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp57"], + "1x10G[100G,50G,40G,25G]": ["etp57"], "2x50G[25G,10G]": ["etp57a", "etp57b"] } }, @@ -1181,6 +1238,7 @@ "lanes": "228,229,230,231", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp58"], + "1x10G[100G,50G,40G,25G]": ["etp58"], "2x50G[25G,10G]": ["etp58a", "etp58b"] } }, @@ -1189,6 +1247,7 @@ "lanes": "232,233,234,235", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp59"], + "1x10G[100G,50G,40G,25G]": ["etp59"], "2x50G[25G,10G]": ["etp59a", "etp59b"] } }, @@ -1197,6 +1256,7 @@ "lanes": "236,237,238,239", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp60"], + "1x10G[100G,50G,40G,25G]": ["etp60"], "2x50G[25G,10G]": ["etp60a", "etp60b"] } }, @@ -1205,6 +1265,7 @@ "lanes": "240,241,242,243", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp61"], + "1x10G[100G,50G,40G,25G]": ["etp61"], "2x50G[25G,10G]": ["etp61a", "etp61b"] } }, @@ -1213,6 +1274,7 @@ "lanes": "244,245,246,247", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp62"], + "1x10G[100G,50G,40G,25G]": ["etp62"], "2x50G[25G,10G]": ["etp62a", "etp62b"] } }, @@ -1221,6 +1283,7 @@ "lanes": "248,249,250,251", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp63"], + "1x10G[100G,50G,40G,25G]": ["etp63"], "2x50G[25G,10G]": ["etp63a", "etp63b"] } }, @@ -1229,6 +1292,7 @@ "lanes": "252,253,254,255", "breakout_modes": { "1x100G[50G,40G,25G,10G]": ["etp64"], + "1x10G[100G,50G,40G,25G]": ["etp64"], "2x50G[25G,10G]": ["etp64a", "etp64b"] } } diff --git a/device/mellanox/x86_64-mlnx_msn4410-r0/ACS-MSN4410/port_config.ini b/device/mellanox/x86_64-mlnx_msn4410-r0/ACS-MSN4410/port_config.ini index 5b76c3a59d40..3df8315b49ef 100644 --- a/device/mellanox/x86_64-mlnx_msn4410-r0/ACS-MSN4410/port_config.ini +++ b/device/mellanox/x86_64-mlnx_msn4410-r0/ACS-MSN4410/port_config.ini @@ -1,28 +1,28 @@ # name lanes alias index -Ethernet0 0,1,2,3 etp1 1 -Ethernet8 8,9,10,11 etp2 2 -Ethernet16 16,17,18,19 etp3 3 -Ethernet24 24,25,26,27 etp4 4 -Ethernet32 32,33,34,35 etp5 5 -Ethernet40 40,41,42,43 etp6 6 -Ethernet48 48,49,50,51 etp7 7 -Ethernet56 56,57,58,59 etp8 8 -Ethernet64 64,65,66,67 etp9 9 -Ethernet72 72,73,74,75 etp10 10 -Ethernet80 80,81,82,83 etp11 11 -Ethernet88 88,89,90,91 etp12 12 -Ethernet96 96,97,98,99 etp13 13 -Ethernet104 104,105,106,107 etp14 14 -Ethernet112 112,113,114,115 etp15 15 -Ethernet120 120,121,122,123 etp16 16 -Ethernet128 128,129,130,131 etp17 17 -Ethernet136 136,137,138,139 etp18 18 -Ethernet144 144,145,146,147 etp19 19 -Ethernet152 152,153,154,155 etp20 20 -Ethernet160 160,161,162,163 etp21 21 -Ethernet168 168,169,170,171 etp22 22 -Ethernet176 176,177,178,179 etp23 23 -Ethernet184 184,185,186,187 etp24 24 +Ethernet0 0,1,2,3,4,5,6,7 etp1 1 +Ethernet8 8,9,10,11,12,13,14,15 etp2 2 +Ethernet16 16,17,18,19,20,21,22,23 etp3 3 +Ethernet24 24,25,26,27,28,29,30,31 etp4 4 +Ethernet32 32,33,34,35,36,37,38,39 etp5 5 +Ethernet40 40,41,42,43,44,45,46,47 etp6 6 +Ethernet48 48,49,50,51,52,53,54,55 etp7 7 +Ethernet56 56,57,58,59,60,61,62,63 etp8 8 +Ethernet64 64,65,66,67,68,69,70,71 etp9 9 +Ethernet72 72,73,74,75,76,77,78,79 etp10 10 +Ethernet80 80,81,82,83,84,85,86,87 etp11 11 +Ethernet88 88,89,90,91,92,93,94,95 etp12 12 +Ethernet96 96,97,98,99,100,101,102,103 etp13 13 +Ethernet104 104,105,106,107,108,109,110,111 etp14 14 +Ethernet112 112,113,114,115,116,117,118,119 etp15 15 +Ethernet120 120,121,122,123,124,125,126,127 etp16 16 +Ethernet128 128,129,130,131,132,133,134,135 etp17 17 +Ethernet136 136,137,138,139,140,141,142,143 etp18 18 +Ethernet144 144,145,146,147,148,149,150,151 etp19 19 +Ethernet152 152,153,154,155,156,157,158,159 etp20 20 +Ethernet160 160,161,162,163,164,165,166,167 etp21 21 +Ethernet168 168,169,170,171,172.173,174,175 etp22 22 +Ethernet176 176,177,178,179,180,181,182,183 etp23 23 +Ethernet184 184,185,186,187,188,189,190,191 etp24 24 Ethernet192 192,193,194,195,196,197,198,199 etp25 25 Ethernet200 200,201,202,203,204,205,206,207 etp26 26 Ethernet208 208,209,210,211,212,213,214,215 etp27 27 @@ -30,4 +30,4 @@ Ethernet216 216,217,218,219,220,221,222,223 etp28 28 Ethernet224 224,225,226,227,228,229,230,231 etp29 29 Ethernet232 232,233,234,235,236,237,238,239 etp30 30 Ethernet240 240,241,242,243,244,245,246,247 etp31 31 -Ethernet248 248,249,250,251,252,253,254,255 etp32 32 \ No newline at end of file +Ethernet248 248,249,250,251,252,253,254,255 etp32 32 diff --git a/device/mellanox/x86_64-mlnx_msn4600-r0/get_sensors_conf_path b/device/mellanox/x86_64-mlnx_msn4410-r0/get_sensors_conf_path similarity index 100% rename from device/mellanox/x86_64-mlnx_msn4600-r0/get_sensors_conf_path rename to device/mellanox/x86_64-mlnx_msn4410-r0/get_sensors_conf_path diff --git a/device/mellanox/x86_64-mlnx_msn4410-r0/platform.json b/device/mellanox/x86_64-mlnx_msn4410-r0/platform.json index 75722fd0d5e3..80c532b175e4 100644 --- a/device/mellanox/x86_64-mlnx_msn4410-r0/platform.json +++ b/device/mellanox/x86_64-mlnx_msn4410-r0/platform.json @@ -408,219 +408,219 @@ }, "interfaces": { "Ethernet0": { - "index": "1,1,1,1", - "lanes": "0,1,2,3", + "index": "1,1,1,1,1,1,1,1", + "lanes": "0,1,2,3,4,5,6,7", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp1"], - "2x50G[25G,10G,1G]": ["etp1a", "etp1b"], - "4x25G[10G,1G]": ["etp1a", "etp1b", "etp1c", "etp1d"] + "2x100G[50G,25G,10G,1G]": ["etp1a", "etp1b"], + "4x50G[25G,10G,1G]": ["etp1a", "etp1b", "etp1c", "etp1d"] } }, "Ethernet8": { - "index": "2,2,2,2", - "lanes": "8,9,10,11", + "index": "2,2,2,2,2,2,2,2", + "lanes": "8,9,10,11,12,13,14,15", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp2"], - "2x50G[25G,10G,1G]": ["etp2a", "etp2b"], - "4x25G[10G,1G]": ["etp2a", "etp2b", "etp2c", "etp2d"] + "2x100G[50G,25G,10G,1G]": ["etp2a", "etp2b"], + "4x50G[25G,10G,1G]": ["etp2a", "etp2b", "etp2c", "etp2d"] } }, "Ethernet16": { - "index": "3,3,3,3", - "lanes": "16,17,18,19", + "index": "3,3,3,3,3,3,3,3", + "lanes": "16,17,18,19,20,21,22,23", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp3"], - "2x50G[25G,10G,1G]": ["etp3a", "etp3b"], - "4x25G[10G,1G]": ["etp3a", "etp3b", "etp3c", "etp3d"] + "2x100G[50G,25G,10G,1G]": ["etp3a", "etp3b"], + "4x50G[25G,10G,1G]": ["etp3a", "etp3b", "etp3c", "etp3d"] } }, "Ethernet24": { - "index": "4,4,4,4", - "lanes": "24,25,26,27", + "index": "4,4,4,4,4,4,4,4", + "lanes": "24,25,26,27,28,29,30,31", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp4"], - "2x50G[25G,10G,1G]": ["etp4a", "etp4b"], - "4x25G[10G,1G]": ["etp4a", "etp4b", "etp4c", "etp4d"] + "2x100G[50G,25G,10G,1G]": ["etp4a", "etp4b"], + "4x50G[25G,10G,1G]": ["etp4a", "etp4b", "etp4c", "etp4d"] } }, "Ethernet32": { - "index": "5,5,5,5", - "lanes": "32,33,34,35", + "index": "5,5,5,5,5,5,5,5,5", + "lanes": "32,33,34,35,36,37,38,39", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp5"], - "2x50G[25G,10G,1G]": ["etp5a", "etp5b"], - "4x25G[10G,1G]": ["etp5a", "etp5b", "etp5c", "etp5d"] + "2x100G[50G,25G,10G,1G]": ["etp5a", "etp5b"], + "4x50G[25G,10G,1G]": ["etp5a", "etp5b", "etp5c", "etp5d"] } }, "Ethernet40": { - "index": "6,6,6,6", - "lanes": "40,41,42,43", + "index": "6,6,6,6,6,6,6,6", + "lanes": "40,41,42,43,44,45,46,47", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp6"], - "2x50G[25G,10G,1G]": ["etp6a", "etp6b"], - "4x25G[10G,1G]": ["etp6a", "etp6b", "etp6c", "etp6d"] + "2x100G[50G,25G,10G,1G]": ["etp6a", "etp6b"], + "4x50G[25G,10G,1G]": ["etp6a", "etp6b", "etp6c", "etp6d"] } }, "Ethernet48": { - "index": "7,7,7,7", - "lanes": "48,49,50,51", + "index": "7,7,7,7,7,7,7,7", + "lanes": "48,49,50,51,52,53,54,55", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp7"], - "2x50G[25G,10G,1G]": ["etp7a", "etp7b"], - "4x25G[10G,1G]": ["etp7a", "etp7b", "etp7c", "etp7d"] + "2x100G[50G,25G,10G,1G]": ["etp7a", "etp7b"], + "4x50G[25G,10G,1G]": ["etp7a", "etp7b", "etp7c", "etp7d"] } }, "Ethernet56": { - "index": "8,8,8,8", - "lanes": "56,57,58,59", + "index": "8,8,8,8,8,8,8,8", + "lanes": "56,57,58,59,60,61,62,63", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp8"], - "2x50G[25G,10G,1G]": ["etp8a", "etp8b"], - "4x25G[10G,1G]": ["etp8a", "etp8b", "etp8c", "etp8d"] + "2x100G[50G,25G,10G,1G]": ["etp8a", "etp8b"], + "4x50G[25G,10G,1G]": ["etp8a", "etp8b", "etp8c", "etp8d"] } }, "Ethernet64": { - "index": "9,9,9,9", - "lanes": "64,65,66,67", + "index": "9,9,9,9,9,9,9,9", + "lanes": "64,65,66,67,68,69,70,71", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp9"], - "2x50G[25G,10G,1G]": ["etp9a", "etp9b"], - "4x25G[10G,1G]": ["etp9a", "etp9b", "etp9c", "etp9d"] + "2x100G[50G,25G,10G,1G]": ["etp9a", "etp9b"], + "4x50G[25G,10G,1G]": ["etp9a", "etp9b", "etp9c", "etp9d"] } }, "Ethernet72": { - "index": "10,10,10,10", - "lanes": "72,73,74,75", + "index": "10,10,10,10,10,10,10,10", + "lanes": "72,73,74,75,76,77,78,79", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp10"], - "2x50G[25G,10G,1G]": ["etp10a", "etp10b"], - "4x25G[10G,1G]": ["etp10a", "etp10b", "etp10c", "etp10d"] + "2x100G[50G,25G,10G,1G]": ["etp10a", "etp10b"], + "4x50G[25G,10G,1G]": ["etp10a", "etp10b", "etp10c", "etp10d"] } }, "Ethernet80": { - "index": "11,11,11,11", - "lanes": "80,81,82,83", + "index": "11,11,11,11,11,11,11,11", + "lanes": "80,81,82,83,84,85,86,87", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp11"], - "2x50G[25G,10G,1G]": ["etp11a", "etp11b"], - "4x25G[10G,1G]": ["etp11a", "etp11b", "etp11c", "etp11d"] + "2x100G[50G,25G,10G,1G]": ["etp11a", "etp11b"], + "4x50G[25G,10G,1G]": ["etp11a", "etp11b", "etp11c", "etp11d"] } }, "Ethernet88": { - "index": "12,12,12,12", - "lanes": "88,89,90,91", + "index": "12,12,12,12,12,12,12,12", + "lanes": "88,89,90,91,92,93,94,95", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp12"], - "2x50G[25G,10G,1G]": ["etp12a", "etp12b"], - "4x25G[10G,1G]": ["etp12a", "etp12b", "etp12c", "etp12d"] + "2x100G[50G,25G,10G,1G]": ["etp12a", "etp12b"], + "4x50G[25G,10G,1G]": ["etp12a", "etp12b", "etp12c", "etp12d"] } }, "Ethernet96": { - "index": "13,13,13,13", - "lanes": "96,97,98,99", + "index": "13,13,13,13,13,13,13,13", + "lanes": "96,97,98,99,100,101,102,103", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp13"], - "2x50G[25G,10G,1G]": ["etp13a", "etp13b"], - "4x25G[10G,1G]": ["etp13a", "etp13b", "etp13c", "etp13d"] + "2x100G[50G,25G,10G,1G]": ["etp13a", "etp13b"], + "4x50G[25G,10G,1G]": ["etp13a", "etp13b", "etp13c", "etp13d"] } }, "Ethernet104": { - "index": "14,14,14,14", - "lanes": "104,105,106,107", + "index": "14,14,14,14,14,14,14,14", + "lanes": "104,105,106,107,108,109,110,111", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp14"], - "2x50G[25G,10G,1G]": ["etp14a", "etp14b"], - "4x25G[10G,1G]": ["etp14a", "etp14b", "etp14c", "etp14d"] + "2x100G[50G,25G,10G,1G]": ["etp14a", "etp14b"], + "4x50G[25G,10G,1G]": ["etp14a", "etp14b", "etp14c", "etp14d"] } }, "Ethernet112": { - "index": "15,15,15,15", - "lanes": "112,113,114,115", + "index": "15,15,15,15,15,15,15,15", + "lanes": "112,113,114,115,116,117,118,119", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp15"], - "2x50G[25G,10G,1G]": ["etp15a", "etp15b"], - "4x25G[10G,1G]": ["etp15a", "etp15b", "etp15c", "etp15d"] + "2x100G[50G,25G,10G,1G]": ["etp15a", "etp15b"], + "4x50G[25G,10G,1G]": ["etp15a", "etp15b", "etp15c", "etp15d"] } }, "Ethernet120": { - "index": "16,16,16,16", - "lanes": "120,121,122,123", + "index": "16,16,16,16,16,16,16,16", + "lanes": "120,121,122,123,124,125,126,127", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp16"], - "2x50G[25G,10G,1G]": ["etp16a", "etp16b"], - "4x25G[10G,1G]": ["etp16a", "etp16b", "etp16c", "etp16d"] + "2x100G[50G,25G,10G,1G]": ["etp16a", "etp16b"], + "4x50G[25G,10G,1G]": ["etp16a", "etp16b", "etp16c", "etp16d"] } }, "Ethernet128": { - "index": "17,17,17,17", - "lanes": "128,129,130,131", + "index": "17,17,17,17,17,17,17,17", + "lanes": "128,129,130,131,132,133,134,135", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp17"], - "2x50G[25G,10G,1G]": ["etp17a", "etp17b"], - "4x25G[10G,1G]": ["etp17a", "etp17b", "etp17c", "etp17d"] + "2x100G[50G,25G,10G,1G]": ["etp17a", "etp17b"], + "4x50G[25G,10G,1G]": ["etp17a", "etp17b", "etp17c", "etp17d"] } }, "Ethernet136": { - "index": "18,18,18,18", - "lanes": "136,137,138,139", + "index": "18,18,18,18,18,18,18,18", + "lanes": "136,137,138,139,140,141,142,143", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp18"], - "2x50G[25G,10G,1G]": ["etp18a", "etp18b"], - "4x25G[10G,1G]": ["etp18a", "etp18b", "etp18c", "etp18d"] + "2x100G[50G,25G,10G,1G]": ["etp18a", "etp18b"], + "4x50G[25G,10G,1G]": ["etp18a", "etp18b", "etp18c", "etp18d"] } }, "Ethernet144": { - "index": "19,19,19,19", - "lanes": "144,145,146,147", + "index": "19,19,19,19,19,19,19,19", + "lanes": "144,145,146,147,148,149,150,151", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp19"], - "2x50G[25G,10G,1G]": ["etp19a", "etp19b"], - "4x25G[10G,1G]": ["etp19a", "etp19b", "etp19c", "etp19d"] + "2x100G[50G,25G,10G,1G]": ["etp19a", "etp19b"], + "4x50G[25G,10G,1G]": ["etp19a", "etp19b", "etp19c", "etp19d"] } }, "Ethernet152": { - "index": "20,20,20,20", - "lanes": "152,153,154,155", + "index": "20,20,20,20,20,20,20,20", + "lanes": "152,153,154,155,156,157,158,159", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp20"], - "2x50G[25G,10G,1G]": ["etp20a", "etp20b"], - "4x25G[10G,1G]": ["etp20a", "etp20b", "etp20c", "etp20d"] + "2x100G[50G,25G,10G,1G]": ["etp20a", "etp20b"], + "4x50G[25G,10G,1G]": ["etp20a", "etp20b", "etp20c", "etp20d"] } }, "Ethernet160": { - "index": "21,21,21,21", - "lanes": "160,161,162,163", + "index": "21,21,21,21,21,21,21,21", + "lanes": "160,161,162,163,164,165,166,167", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp21"], - "2x50G[25G,10G,1G]": ["etp21a", "etp21b"], - "4x25G[10G,1G]": ["etp21a", "etp21b", "etp21c", "etp21d"] + "2x100G[50G,25G,10G,1G]": ["etp21a", "etp21b"], + "4x50G[25G,10G,1G]": ["etp21a", "etp21b", "etp21c", "etp21d"] } }, "Ethernet168": { - "index": "22,22,22,22", - "lanes": "168,169,170,171", + "index": "22,22,22,22,22,22,22,22", + "lanes": "168,169,170,171,172,173,174,175", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp22"], - "2x50G[25G,10G,1G]": ["etp22a", "etp22b"], - "4x25G[10G,1G]": ["etp22a", "etp22b", "etp22c", "etp22d"] + "2x100G[50G,25G,10G,1G]": ["etp22a", "etp22b"], + "4x50G[25G,10G,1G]": ["etp22a", "etp22b", "etp22c", "etp22d"] } }, "Ethernet176": { - "index": "23,23,23,23", - "lanes": "176,177,178,179", + "index": "23,23,23,23,23,23,23,23", + "lanes": "176,177,178,179,180,181,182,183", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp23"], - "2x50G[25G,10G,1G]": ["etp23a", "etp23b"], - "4x25G[10G,1G]": ["etp23a", "etp23b", "etp23c", "etp23d"] + "2x100G[50G,25G,10G,1G]": ["etp23a", "etp23b"], + "4x50G[25G,10G,1G]": ["etp23a", "etp23b", "etp23c", "etp23d"] } }, "Ethernet184": { - "index": "24,24,24,24", - "lanes": "184,185,186,187", + "index": "24,24,24,24,24,24,24,24", + "lanes": "184,185,186,187,188,189,190,191", "breakout_modes": { "1x100G[50G,40G,25G,10G,1G]": ["etp24"], - "2x50G[25G,10G,1G]": ["etp24a", "etp24b"], - "4x25G[10G,1G]": ["etp24a", "etp24b", "etp24c", "etp24d"] + "2x100G[50G,25G,10G,1G]": ["etp24a", "etp24b"], + "4x50G[25G,10G,1G]": ["etp24a", "etp24b", "etp24c", "etp24d"] } }, "Ethernet192": { diff --git a/device/mellanox/x86_64-mlnx_msn4410-r0/sensors.conf.a1 b/device/mellanox/x86_64-mlnx_msn4410-r0/sensors.conf.a1 new file mode 120000 index 000000000000..4605d556f315 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn4410-r0/sensors.conf.a1 @@ -0,0 +1 @@ +../x86_64-mlnx_msn4700-r0/sensors.conf.a1 \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf b/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf index da05cd94bf9f..dfe848ca8aa4 100644 --- a/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf +++ b/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf @@ -21,134 +21,78 @@ bus "i2c-15" "i2c-1-mux (chan_id 6)" # Power controllers bus "i2c-5" "i2c-1-mux (chan_id 4)" - chip "xdpe12284-i2c-*-62" - label in1 "PMIC-1 PSU 12V Rail (in)" - ignore in2 - label in3 "PMIC-1 ASIC 0.8V VCORE_MAIN Rail (out)" - ignore in4 + chip "mp2975-i2c-*-62" + label in1 "PMIC-1 PSU 12V Rail (in1)" + label in2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail (out)" label temp1 "PMIC-1 Temp 1" - label temp2 "PMIC-1 Temp 2" - label power1 "PMIC-1 ASIC 12V VCORE_MAIN Rail Pwr (in)" - ignore power2 - label power3 "PMIC-1 ASIC 0.8V VCORE_MAIN Rail Pwr (out)" - ignore power4 - label curr1 "PMIC-1 ASIC 12V VCORE_MAIN Rail Curr (in)" - ignore curr2 - label curr3 "PMIC-1 ASIC 0.8V VCORE_MAIN Rail Curr (out)" - ignore curr4 - chip "xdpe12284-i2c-*-64" - label in1 "PMIC-2 PSU 12V Rail_1 (in)" - label in2 "PMIC-2 PSU 12V Rail_2 (in)" - label in3 "PMIC-2 ASIC 1.8V Rail_1 (out)" - label in4 "PMIC-2 ASIC 1.2V Rail_2 (out)" + label power1 "PMIC-1 PSU 12V Rail Pwr (in1)" + label power2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail Pwr (out)" + label curr1 "PMIC-1 PSU 12V Rail Curr (in1)" + label curr2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail Curr (out)" + chip "mp2975-i2c-*-64" + label in1 "PMIC-2 PSU 12V Rail (in1)" + label in2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail (out)" + label in3 "PMIC-2 ASIC 1.2V VCORE MAIN Rail (out)" label temp1 "PMIC-2 Temp 1" - label temp2 "PMIC-2 Temp 2" - label power1 "PMIC-2 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-2 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-2 ASIC 1.8V Rail_1 Pwr (out)" - label power4 "PMIC-2 ASIC 1.2V Rail_2 Pwr (out)" - label curr1 "PMIC-2 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-2 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-2 ASIC 1.8V Rail_1 Curr (out)" - label curr4 "PMIC-2 ASIC 1.2V Rail_2 Curr (out)" - chip "xdpe12284-i2c-*-66" - label in1 "PMIC-3 PSU 12V Rail_1 (in)" - label in2 "PMIC-3 PSU 12V Rail_2 (in)" - label in3 "PMIC-3 ASIC 0.85V Rail_1 T0_1 (out)" - label in4 "PMIC-3 ASIC 1.8V Rail_2 T0_1 (out)" + label power1 "PMIC-2 PSU 12V Rail Pwr (in1)" + label power2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail Pwr (out)" + label curr1 "PMIC-2 PSU 12V Rail Curr (in1)" + label curr2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail Curr (out)" + label curr3 "PMIC-2 ASIC 1.2V VCORE MAIN Rail Curr (out)" + chip "mp2975-i2c-*-66" + label in1 "PMIC-3 PSU 12V Rail (in1)" + label in2 "PMIC-3 ASIC 0.85V T0_1 Rail (out)" + label in3 "PMIC-3 ASIC 1.8V T0_1 Rail (out)" label temp1 "PMIC-3 Temp 1" - label temp2 "PMIC-3 Temp 2" - label power1 "PMIC-3 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-3 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-3 ASIC 0.85V Rail_1 T0_1 Pwr (out)" - label power4 "PMIC-3 ASIC 1.8V Rail_2 T0_1 Pwr (out)" - label curr1 "PMIC-3 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-3 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-3 ASIC 0.85V Rail_1 T0_1 Curr (out)" - label curr4 "PMIC-3 ASIC 1.8V Rail_2 T0_1 Curr (out)" - chip "xdpe12284-i2c-*-68" - label in1 "PMIC-4 PSU 12V Rail_1 (in)" - label in2 "PMIC-4 PSU 12V Rail_2 (in)" - label in3 "PMIC-4 ASIC 0.85V Rail_1 T2_3 (out)" - label in4 "PMIC-4 ASIC 1.8V Rail_2 T2_3 (out)" + label power1 "PMIC-3 PSU 12V Rail Pwr (in1)" + label power2 "PMIC-3 ASIC 0.85V T0_1 Rail Pwr (out)" + label curr1 "PMIC-3 PSU 12V Rail Curr (in1)" + label curr2 "PMIC-3 ASIC 0.85V T0_1 Rail Curr (out)" + label curr3 "PMIC-3 ASIC 1.8V T0_1 Rail Curr (out)" + chip "mp2975-i2c-*-6a" + label in1 "PMIC-4 PSU 12V Rail (in1)" + label in2 "PMIC-4 ASIC 0.85V T2_3 Rail (out)" + label in3 "PMIC-4 ASIC 1.8V T2_3 Rail (out)" label temp1 "PMIC-4 Temp 1" - label temp2 "PMIC-4 Temp 2" - label power1 "PMIC-4 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-4 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-4 ASIC 0.85V Rail_1 T2_3 Pwr (out)" - label power4 "PMIC-4 ASIC 1.8V Rail_2 T2_3 Pwr (out)" - label curr1 "PMIC-4 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-4 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-4 ASIC 0.85V Rail_1 T2_3 Curr (out)" - label curr4 "PMIC-4 ASIC 1.8V Rail_2 T2_3 Curr (out)" - chip "xdpe12284-i2c-*-6a" - label in1 "PMIC-5 PSU 12V Rail_1 (in)" - label in2 "PMIC-5 PSU 12V Rail_2 (in)" - label in3 "PMIC-5 ASIC 0.85V Rail_1 T4_5 (out)" - label in4 "PMIC-5 ASIC 1.8V Rail_2 T4_5 (out)" + label power1 "PMIC-4 PSU 12V Rail Pwr (in1)" + label power2 "PMIC-4 ASIC 0.85V T2_3 Rail Pwr (out)" + label curr1 "PMIC-4 PSU 12V Rail Curr (in1)" + label curr2 "PMIC-4 ASIC 0.85V T2_3 Rail Curr (out)" + label curr3 "PMIC-4 ASIC 1.8V T2_3 Rail Curr (out)" + chip "mp2975-i2c-*-6e" + label in1 "PMIC-5 PSU 12V Rail (in1)" + label in2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 (out)" + label in3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 (out)" label temp1 "PMIC-5 Temp 1" - label temp2 "PMIC-5 Temp 2" - label power1 "PMIC-5 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-5 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-5 ASIC 0.85V Rail_1 T4_5 Pwr (out)" - label power4 "PMIC-5 ASIC 1.8V Rail_2 T4_5 Pwr (out)" - label curr1 "PMIC-5 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-5 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-5 ASIC 0.85V Rail_1 T4_5 Curr (out)" - label curr4 "PMIC-5 ASIC 1.8V Rail_2 T4_5 Curr (out)" - chip "xdpe12284-i2c-*-6c" - label in1 "PMIC-6 PSU 12V Rail_1 (in)" - label in2 "PMIC-6 PSU 12V Rail_2 (in)" - label in3 "PMIC-6 ASIC 0.85V Rail_1 T6_7 (out)" - label in4 "PMIC-6 ASIC 1.8V Rail_2 T6_7 (out)" - label temp1 "PMIC-6 Temp 1" - label temp2 "PMIC-6 Temp 2" - label power1 "PMIC-6 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-6 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-6 ASIC 0.85V Rail_1 T6_7 Pwr (out)" - label power4 "PMIC-6 ASIC 1.8V Rail_2 T6_7 Pwr (out)" - label curr1 "PMIC-6 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-6 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-6 ASIC 0.85V Rail_1 T6_7 Curr (out)" - label curr4 "PMIC-6 ASIC 1.8V Rail_2 T6_7 Curr (out)" - chip "xdpe12284-i2c-*-6e" - label in1 "PMIC-7 PSU 12V Rail_1 (in)" - label in2 "PMIC-7 PSU 12V Rail_2 (in)" - label in3 "PMIC-7 ASIC 1.2V Rail_1 T0_3 (out)" - label in4 "PMIC-7 ASIC 1.2V Rail_2 T4_7 (out)" - label temp1 "PMIC-7 Temp 1" - label temp2 "PMIC-7 Temp 2" - label power1 "PMIC-7 ASIC 12V Rail_1 Pwr (in)" - label power2 "PMIC-7 ASIC 12V Rail_2 Pwr (in)" - label power3 "PMIC-7 ASIC 1.2V Rail_1 T0_3 Pwr (out)" - label power4 "PMIC-7 ASIC 1.2V Rail_2 T4_7 Pwr (out)" - label curr1 "PMIC-7 ASIC 12V Rail_1 Curr (in)" - label curr2 "PMIC-7 ASIC 12V Rail_2 Curr (in)" - label curr3 "PMIC-7 ASIC 1.2V Rail_1 T0_3 Curr (out)" - label curr4 "PMIC-7 ASIC 1.2V Rail_2 T4_7 Curr (out)" + label power1 "PMIC-5 PSU 12V Rail Pwr (in1)" + label power2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 Pwr (out)" + label power3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 Pwr (out)" + label curr1 "PMIC-5 PSU 12V Rail Curr (in1)" + label curr2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 Curr (out)" + label curr3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 Curr (out)" bus "i2c-15" "i2c-1-mux (chan_id 6)" chip "tps53679-i2c-*-58" - label in1 "PMIC-8 PSU 12V Rail (in1)" - label in2 "PMIC-8 PSU 12V Rail (in2)" - label in3 "PMIC-8 COMEX 1.8V Rail (out)" - label in4 "PMIC-8 COMEX 1.05V Rail (out)" - label temp1 "PMIC-8 Temp 1" - label temp2 "PMIC-8 Temp 2" - label power1 "PMIC-8 COMEX 1.8V Rail Pwr (out)" - label power2 "PMIC-8 COMEX 1.05V Rail Pwr (out)" - label curr1 "PMIC-8 COMEX 1.8V Rail Curr (out)" - label curr2 "PMIC-8 COMEX 1.05V Rail Curr (out)" + label in1 "PMIC-6 PSU 12V Rail (in1)" + label in2 "PMIC-6 PSU 12V Rail (in2)" + label in3 "PMIC-6 COMEX 1.8V Rail (out)" + label in4 "PMIC-6 COMEX 1.05V Rail (out)" + label temp1 "PMIC-6 Temp 1" + label temp2 "PMIC-6 Temp 2" + label power1 "PMIC-6 COMEX 1.8V Rail Pwr (out)" + label power2 "PMIC-6 COMEX 1.05V Rail Pwr (out)" + label curr1 "PMIC-6 COMEX 1.8V Rail Curr (out)" + label curr2 "PMIC-6 COMEX 1.05V Rail Curr (out)" chip "tps53679-i2c-*-61" - label in1 "PMIC-9 PSU 12V Rail (in1)" - label in2 "PMIC-9 PSU 12V Rail (in2)" - label in3 "PMIC-9 COMEX 1.2V Rail (out)" + label in1 "PMIC-7 PSU 12V Rail (in1)" + label in2 "PMIC-7 PSU 12V Rail (in2)" + label in3 "PMIC-7 COMEX 1.2V Rail (out)" ignore in4 - label temp1 "PMIC-9 Temp 1" - label temp2 "PMIC-9 Temp 2" - label power1 "PMIC-9 COMEX 1.2V Rail Pwr (out)" + label temp1 "PMIC-7 Temp 1" + label temp2 "PMIC-7 Temp 2" + label power1 "PMIC-7 COMEX 1.2V Rail Pwr (out)" ignore power2 - label curr1 "PMIC-9 COMEX 1.2V Rail Curr (out)" + label curr1 "PMIC-7 COMEX 1.2V Rail Curr (out)" ignore curr2 # Power supplies diff --git a/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf.a1 b/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf.a1 deleted file mode 100644 index dfe848ca8aa4..000000000000 --- a/device/mellanox/x86_64-mlnx_msn4600-r0/sensors.conf.a1 +++ /dev/null @@ -1,133 +0,0 @@ -################################################################################ -# Copyright (c) 2021 Mellanox Technologies -# -# Platform specific sensors config for SN4600 -################################################################################ - -# Temperature sensors -bus "i2c-2" "i2c-1-mux (chan_id 1)" - chip "mlxsw-i2c-*-48" - label temp1 "Ambient ASIC Temp" - -bus "i2c-7" "i2c-1-mux (chan_id 6)" - chip "tmp102-i2c-*-49" - label temp1 "Ambient Fan Side Temp (air intake)" - chip "tmp102-i2c-*-4a" - label temp1 "Ambient Port Side Temp (air exhaust)" - -bus "i2c-15" "i2c-1-mux (chan_id 6)" - chip "tmp102-i2c-15-49" - label temp1 "Ambient COMEX Temp" - -# Power controllers -bus "i2c-5" "i2c-1-mux (chan_id 4)" - chip "mp2975-i2c-*-62" - label in1 "PMIC-1 PSU 12V Rail (in1)" - label in2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail (out)" - label temp1 "PMIC-1 Temp 1" - label power1 "PMIC-1 PSU 12V Rail Pwr (in1)" - label power2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail Pwr (out)" - label curr1 "PMIC-1 PSU 12V Rail Curr (in1)" - label curr2 "PMIC-1 ASIC 0.8V VCORE MAIN Rail Curr (out)" - chip "mp2975-i2c-*-64" - label in1 "PMIC-2 PSU 12V Rail (in1)" - label in2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail (out)" - label in3 "PMIC-2 ASIC 1.2V VCORE MAIN Rail (out)" - label temp1 "PMIC-2 Temp 1" - label power1 "PMIC-2 PSU 12V Rail Pwr (in1)" - label power2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail Pwr (out)" - label curr1 "PMIC-2 PSU 12V Rail Curr (in1)" - label curr2 "PMIC-2 ASIC 1.8V VCORE MAIN Rail Curr (out)" - label curr3 "PMIC-2 ASIC 1.2V VCORE MAIN Rail Curr (out)" - chip "mp2975-i2c-*-66" - label in1 "PMIC-3 PSU 12V Rail (in1)" - label in2 "PMIC-3 ASIC 0.85V T0_1 Rail (out)" - label in3 "PMIC-3 ASIC 1.8V T0_1 Rail (out)" - label temp1 "PMIC-3 Temp 1" - label power1 "PMIC-3 PSU 12V Rail Pwr (in1)" - label power2 "PMIC-3 ASIC 0.85V T0_1 Rail Pwr (out)" - label curr1 "PMIC-3 PSU 12V Rail Curr (in1)" - label curr2 "PMIC-3 ASIC 0.85V T0_1 Rail Curr (out)" - label curr3 "PMIC-3 ASIC 1.8V T0_1 Rail Curr (out)" - chip "mp2975-i2c-*-6a" - label in1 "PMIC-4 PSU 12V Rail (in1)" - label in2 "PMIC-4 ASIC 0.85V T2_3 Rail (out)" - label in3 "PMIC-4 ASIC 1.8V T2_3 Rail (out)" - label temp1 "PMIC-4 Temp 1" - label power1 "PMIC-4 PSU 12V Rail Pwr (in1)" - label power2 "PMIC-4 ASIC 0.85V T2_3 Rail Pwr (out)" - label curr1 "PMIC-4 PSU 12V Rail Curr (in1)" - label curr2 "PMIC-4 ASIC 0.85V T2_3 Rail Curr (out)" - label curr3 "PMIC-4 ASIC 1.8V T2_3 Rail Curr (out)" - chip "mp2975-i2c-*-6e" - label in1 "PMIC-5 PSU 12V Rail (in1)" - label in2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 (out)" - label in3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 (out)" - label temp1 "PMIC-5 Temp 1" - label power1 "PMIC-5 PSU 12V Rail Pwr (in1)" - label power2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 Pwr (out)" - label power3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 Pwr (out)" - label curr1 "PMIC-5 PSU 12V Rail Curr (in1)" - label curr2 "PMIC-5 ASIC 1.2V T0_3 Rail_1 Curr (out)" - label curr3 "PMIC-5 ASIC 1.2V T4_7 Rail_2 Curr (out)" - -bus "i2c-15" "i2c-1-mux (chan_id 6)" - chip "tps53679-i2c-*-58" - label in1 "PMIC-6 PSU 12V Rail (in1)" - label in2 "PMIC-6 PSU 12V Rail (in2)" - label in3 "PMIC-6 COMEX 1.8V Rail (out)" - label in4 "PMIC-6 COMEX 1.05V Rail (out)" - label temp1 "PMIC-6 Temp 1" - label temp2 "PMIC-6 Temp 2" - label power1 "PMIC-6 COMEX 1.8V Rail Pwr (out)" - label power2 "PMIC-6 COMEX 1.05V Rail Pwr (out)" - label curr1 "PMIC-6 COMEX 1.8V Rail Curr (out)" - label curr2 "PMIC-6 COMEX 1.05V Rail Curr (out)" - chip "tps53679-i2c-*-61" - label in1 "PMIC-7 PSU 12V Rail (in1)" - label in2 "PMIC-7 PSU 12V Rail (in2)" - label in3 "PMIC-7 COMEX 1.2V Rail (out)" - ignore in4 - label temp1 "PMIC-7 Temp 1" - label temp2 "PMIC-7 Temp 2" - label power1 "PMIC-7 COMEX 1.2V Rail Pwr (out)" - ignore power2 - label curr1 "PMIC-7 COMEX 1.2V Rail Curr (out)" - ignore curr2 - -# Power supplies -bus "i2c-4" "i2c-1-mux (chan_id 3)" - chip "dps460-i2c-*-58" - label in1 "PSU-1(L) 220V Rail (in)" - ignore in2 - label in3 "PSU-1(L) 12V Rail (out)" - label fan1 "PSU-1(L) Fan 1" - ignore fan2 - ignore fan3 - label temp1 "PSU-1(L) Temp 1" - label temp2 "PSU-1(L) Temp 2" - label temp3 "PSU-1(L) Temp 3" - label power1 "PSU-1(L) 220V Rail Pwr (in)" - label power2 "PSU-1(L) 12V Rail Pwr (out)" - label curr1 "PSU-1(L) 220V Rail Curr (in)" - label curr2 "PSU-1(L) 12V Rail Curr (out)" - chip "dps460-i2c-*-59" - label in1 "PSU-2(R) 220V Rail (in)" - ignore in2 - label in3 "PSU-2(R) 12V Rail (out)" - label fan1 "PSU-2(R) Fan 1" - ignore fan2 - ignore fan3 - label temp1 "PSU-2(R) Temp 1" - label temp2 "PSU-2(R) Temp 2" - label temp3 "PSU-2(R) Temp 3" - label power1 "PSU-2(R) 220V Rail Pwr (in)" - label power2 "PSU-2(R) 12V Rail Pwr (out)" - label curr1 "PSU-2(R) 220V Rail Curr (in)" - label curr2 "PSU-2(R) 12V Rail Curr (out)" - -# Chassis fans -chip "mlxreg_fan-isa-*" - label fan1 "Chassis Fan Drawer-1" - label fan2 "Chassis Fan Drawer-2" - label fan3 "Chassis Fan Drawer-3" diff --git a/device/mellanox/x86_64-mlnx_msn4700_simx-r0/syseeprom.hex b/device/mellanox/x86_64-mlnx_msn4700_simx-r0/syseeprom.hex index b50ffa5a0231..06b57892e98e 100644 --- a/device/mellanox/x86_64-mlnx_msn4700_simx-r0/syseeprom.hex +++ b/device/mellanox/x86_64-mlnx_msn4700_simx-r0/syseeprom.hex @@ -1,42 +1,42 @@ 54 6c 76 49 6e 66 6f 00 01 02 53 21 40 4d 53 4e -33 37 30 30 00 00 00 00 00 00 00 00 00 00 00 00 +34 37 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 14 4d -53 4e 33 37 30 30 2d 56 53 32 46 00 00 00 00 00 -00 00 00 23 18 4d 54 31 38 35 31 58 30 32 39 36 -31 00 00 00 00 00 00 00 00 00 00 00 00 24 06 98 -03 9b 94 d4 80 25 13 31 32 2f 32 38 2f 32 30 31 -38 20 30 34 3a 34 32 3a 31 38 26 01 00 2a 02 00 +53 4e 34 37 30 30 2d 57 53 32 46 4f 00 00 00 00 +00 00 00 23 18 4d 54 32 30 32 32 58 30 38 35 39 +37 00 00 00 00 00 00 00 00 00 00 00 00 24 06 1c +34 da 1d 42 00 25 13 30 37 2f 30 32 2f 32 30 32 +30 20 30 32 3a 33 38 3a 32 36 26 01 00 2a 02 00 fe 2b 08 4d 65 6c 6c 61 6e 6f 78 fd 24 00 00 81 19 00 16 01 01 00 56 00 00 4d 4c 4e 58 02 01 0c 05 0e 02 10 06 12 07 00 00 00 00 00 00 00 00 00 -00 fd a4 00 00 81 19 00 92 00 03 01 01 00 00 4d -54 31 38 35 31 58 30 32 39 36 31 00 00 00 00 00 -00 00 00 00 00 00 00 4d 53 4e 33 37 30 30 2d 56 -53 32 46 00 00 00 00 00 00 00 00 41 32 00 00 00 -3a 82 b8 41 6e 61 63 6f 6e 64 61 20 45 74 68 20 -32 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 fd a4 00 00 81 19 00 92 00 03 01 8a 00 00 4d +54 32 30 32 32 58 30 38 35 39 37 00 00 00 00 00 +00 00 00 00 00 00 00 4d 53 4e 34 37 30 30 2d 57 +53 32 46 4f 00 00 00 00 00 00 00 41 37 00 00 00 +82 a2 c4 4c 65 6f 70 61 72 64 20 45 74 68 20 34 +30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 70 00 00 00 0e 74 4d 53 4e 33 37 +00 00 00 00 00 7a 00 00 00 12 5c 4d 53 4e 34 37 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 24 00 00 81 19 00 10 00 03 05 e8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 24 00 -00 81 19 00 1e 00 11 02 85 00 00 0d 00 00 00 00 -00 00 00 98 03 9b 94 d4 80 00 fe 98 03 9b 03 00 -94 d4 80 fd 24 00 00 81 19 00 12 00 01 06 81 00 -00 00 46 00 00 08 00 06 06 06 06 00 00 00 00 00 +00 81 19 00 1e 00 11 02 af 00 00 0d 00 00 00 00 +00 00 00 1c 34 da 1d 42 00 00 fe 1c 34 da 03 00 +1d 42 00 fd 24 00 00 81 19 00 12 00 01 06 7d 00 +00 00 46 00 00 08 00 07 07 07 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 14 00 00 81 19 00 0e 00 02 07 99 00 00 30 00 20 00 00 00 00 00 28 40 78 38 36 5f 36 34 2d 6d 6c 6e 78 5f 6d 73 6e -33 37 30 30 2d 72 30 00 00 00 00 00 00 00 00 00 +34 37 30 30 2d 72 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 29 15 32 30 31 38 2e 31 31 2d 35 2e 32 2e 30 -30 30 38 2d 39 36 30 30 fe 04 89 cb 82 5b 00 00 -00 00 00 fe 04 72 60 7f 13 00 00 00 00 00 00 00 +00 29 15 32 30 32 30 2e 31 31 2d 35 2e 33 2e 30 +30 30 35 2d 39 36 30 30 fe 04 12 38 c7 41 d3 2a +00 00 00 fe 04 4f b8 08 f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/device/mellanox/x86_64-mlnx_msn4800-r0/pcie.yaml b/device/mellanox/x86_64-mlnx_msn4800-r0/pcie.yaml index a86731abe935..15567004fb9d 100644 --- a/device/mellanox/x86_64-mlnx_msn4800-r0/pcie.yaml +++ b/device/mellanox/x86_64-mlnx_msn4800-r0/pcie.yaml @@ -1,111 +1,191 @@ - bus: '00' dev: '00' fn: '0' - id: 3e10 - name: 'Host bridge : Intel Corporation Device (rev 07)' + id: 3ec4 + name: 'Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers + (rev 07)' - bus: '00' dev: '01' fn: '0' - id: 1901 - name: 'PCI bridge : Intel Corporation Skylake PCIe Controller (x16) (rev 07) - (prog-if 00 [Normal decode])' + id: '1901' + name: 'PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 07)' - bus: '00' - dev: '08' + dev: 08 fn: '0' - id: 1911 - name: 'System peripheral : Intel Corporation Skylake Gaussian Mixture Model' + id: '1911' + name: 'System peripheral: Intel Corporation Skylake Gaussian Mixture Model' - bus: '00' dev: '12' fn: '0' id: a379 - name: 'Signal processing controller : Intel Corporation Device (rev 10)' + name: 'Signal processing controller: Intel Corporation Cannon Lake PCH Thermal Controller + (rev 10)' - bus: '00' dev: '14' fn: '0' id: a36d - name: 'USB controller : Intel Corporation Device (rev 10) (prog-if 30 [XHCI])' + name: 'USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller + (rev 10)' - bus: '00' dev: '14' fn: '2' id: a36f - name: 'RAM memory : Intel Corporation Device (rev 10)' + name: 'RAM memory: Intel Corporation Cannon Lake PCH Shared SRAM (rev 10)' - bus: '00' dev: '15' fn: '0' id: a368 - name: 'Serial bus controller : Intel Corporation Device (rev 10)' + name: 'Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH Serial IO + I2C Controller (rev 10)' - bus: '00' dev: '16' fn: '0' id: a360 - name: 'Communication controller : Intel Corporation Device (rev 10)' + name: 'Communication controller: Intel Corporation Cannon Lake PCH HECI Controller + (rev 10)' - bus: '00' dev: '17' fn: '0' id: a353 - name: 'SATA controller : Intel Corporation Device (rev 10) (prog-if 01 [AHCI 1.0])' + name: 'SATA controller: Intel Corporation Cannon Lake Mobile PCH SATA AHCI Controller + (rev 10)' - bus: '00' - dev: '1b' + dev: 1b fn: '0' id: a340 - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1b' + dev: 1b fn: '2' id: a342 - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1b' + dev: 1b fn: '4' id: a32c - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1c' + dev: 1c fn: '0' id: a33d - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1c' + dev: 1c fn: '6' id: a33e - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1c' + dev: 1c fn: '7' id: a33f - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1d' + dev: 1d fn: '0' id: a334 - name: 'PCI bridge : Intel Corporation Device (rev f0) (prog-if 00 [Normal decode])' + name: 'PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port (rev + f0)' - bus: '00' - dev: '1e' + dev: 1e fn: '0' id: a328 - name: 'Communication controller : Intel Corporation Device (rev 10)' + name: 'Communication controller: Intel Corporation Cannon Lake PCH Serial IO UART + Host Controller (rev 10)' - bus: '00' - dev: '1f' + dev: 1f fn: '0' id: a30e - name: 'ISA bridge : Intel Corporation Device (rev 10)' + name: 'ISA bridge: Intel Corporation Cannon Lake LPC Controller (rev 10)' - bus: '00' - dev: '1f' + dev: 1f fn: '4' id: a323 - name: 'SMBus : Intel Corporation Device (rev 10)' + name: 'SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)' - bus: '00' - dev: '1f' + dev: 1f fn: '5' id: a324 - name: 'Serial bus controller : Intel Corporation Device (rev 10)' + name: 'Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH SPI Controller + (rev 10)' - bus: '00' - dev: '1f' + dev: 1f fn: '6' id: 15bb - name: 'Ethernet controller : Intel Corporation Device (rev 10)' + name: 'Ethernet controller: Intel Corporation Ethernet Connection (7) I219-LM (rev + 10)' - bus: '01' dev: '00' fn: '0' - id: cf6c - name: 'Ethernet controller : Mellanox Technologies Device' + id: cf70 + name: 'Ethernet controller: Mellanox Technologies Spectrum-3' +- bus: '03' + dev: '00' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '04' + dev: '00' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '04' + dev: '02' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '05' + dev: '00' + fn: '0' + id: 101b + name: 'Ethernet controller: Mellanox Technologies MT28908 Family [ConnectX-6]' +- bus: '06' + dev: '00' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: '00' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: '02' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: '04' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: '06' + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: 08 + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: 0a + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: 0c + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' +- bus: '07' + dev: 0e + fn: '0' + id: '1976' + name: 'PCI bridge: Mellanox Technologies MT28908 Family [ConnectX-6 PCIe Bridge]' diff --git a/device/mellanox/x86_64-mlnx_msn4800-r0/platform.json b/device/mellanox/x86_64-mlnx_msn4800-r0/platform.json index 78f94767a2b6..2b75ae2ab775 100644 --- a/device/mellanox/x86_64-mlnx_msn4800-r0/platform.json +++ b/device/mellanox/x86_64-mlnx_msn4800-r0/platform.json @@ -19,6 +19,9 @@ }, { "name": "CPLD3" + }, + { + "name": "CPLD4" } ], "fans": [], @@ -28,42 +31,46 @@ "fans": [ { "name": "fan1" - }, + } + ] + }, + { + "name": "drawer2", + "fans": [ { "name": "fan2" } ] }, { - "name": "drawer2", + "name": "drawer3", "fans": [ { "name": "fan3" - }, + } + ] + }, + { + "name": "drawer4", + "fans": [ { "name": "fan4" } ] }, { - "name": "drawer3", + "name": "drawer5", "fans": [ { "name": "fan5" - }, - { - "name": "fan6" } ] }, { - "name": "drawer4", + "name": "drawer6", "fans": [ { - "name": "fan7" - }, - { - "name": "fan8" + "name": "fan6" } ] } @@ -73,7 +80,7 @@ "name": "PSU 1", "fans": [ { - "name": "psu_1_fan_1" + "name": "psu1_fan1" } ], "thermals": [ @@ -85,13 +92,39 @@ { "name": "PSU 2", "fans": [ + { + "name": "psu2_fan1" + } + ], + "thermals": [ { "name": "PSU-2 Temp" } + ] + }, + { + "name": "PSU 3", + "fans": [ + { + "name": "psu3_fan1" + } ], "thermals": [ { - "name": "xSFP module 1 Temp" + "name": "PSU-3 Temp" + } + ] + }, + { + "name": "PSU 4", + "fans": [ + { + "name": "psu4_fan1" + } + ], + "thermals": [ + { + "name": "PSU-4 Temp" } ] } @@ -112,6 +145,18 @@ { "name": "CPU Core 1 Temp" }, + { + "name": "CPU Core 2 Temp" + }, + { + "name": "CPU Core 3 Temp" + }, + { + "name": "CPU Core 4 Temp" + }, + { + "name": "CPU Core 5 Temp" + }, { "name": "CPU Pack Temp" } diff --git a/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait b/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait deleted file mode 120000 index 4b30bd429854..000000000000 --- a/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait +++ /dev/null @@ -1 +0,0 @@ -../x86_64-mlnx_msn2700-r0/platform_wait \ No newline at end of file diff --git a/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait b/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait new file mode 100755 index 000000000000..b8445bfeca44 --- /dev/null +++ b/device/mellanox/x86_64-mlnx_msn4800-r0/platform_wait @@ -0,0 +1,4 @@ +#!/bin/bash + +declare -r EXIT_SUCCESS="0" +exit "${EXIT_SUCCESS}" diff --git a/device/mellanox/x86_64-mlnx_msn4800-r0/sensors.conf b/device/mellanox/x86_64-mlnx_msn4800-r0/sensors.conf index f5d5d4763d5f..f4c981f5ecac 100644 --- a/device/mellanox/x86_64-mlnx_msn4800-r0/sensors.conf +++ b/device/mellanox/x86_64-mlnx_msn4800-r0/sensors.conf @@ -1,12 +1,53 @@ ################################################################################ -# Copyright (c) 2021 Mellanox Technologies +# Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Platform specific sensors config for SN4800 ################################################################################ +# Line card power manager devices (bus is variable) +bus "i2c-59" "i2c-34-mux (chan_id 4)" + chip "mp2975-i2c-59-62" + label in1 "Linecard PMIC-1 PSU 12V Rail (in)" + label in2 "Linecard PMIC-1 AGB VCORE Rail(out1)" + label in3 "Linecard PMIC-1 AGB 1.2V Rail(out2)" + ignore in4 + label temp1 "Linecard PMIC-1 AGB VCORE_1.2V Ambient Temp 1" + ignore temp2 + label power1 "Linecard PMIC-1 12V AGB VCORE_1.2V Rail Pwr (in)" + label power2 "Linecard PMIC-1 AGB VCORE Rail Pwr (out)" + label power3 "Linecard PMIC-1 AGB 1.2V Rail Pwr (out)" + ignore power4 + label curr1 "Linecard PMIC-1 12V AGB VCORE_1.2V Rail Curr (in)" + label curr2 "Linecard PMIC-1 AGB VCORE Rail Curr (out)" + label curr3 "Linecard PMIC-1 AGB 1.2V Rail Curr (out)" + ignore curr4 + chip "mp2975-i2c-59-64" + label in1 "Linecard PMIC-2 PSU 12V Rail (in)" + label in2 "Linecard PMIC-2 PORTS 3.3V Rail(out1)" + label in3 "Linecard PMIC-2 AGB 1.8V Rail(out2)" + ignore in4 + label temp1 "Linecard PMIC-2 PORTS_3.3V_AGB_1.8V Ambient Temp 1" + ignore temp2 + label power1 "Linecard PMIC-2 12V PORTS_3.3V_AGB_1.8V Rail Pwr (in)" + label power2 "Linecard PMIC-2 PORTS 3.3V Rail Pwr (out)" + label power3 "Linecard PMIC-2 AGB 1.8V Rail Pwr (out)" + ignore power4 + label curr1 "Linecard PMIC-2 12V PORTS_3.3V_AGB_1.8V Rail Curr (in)" + label curr2 "Linecard PMIC-2 PORTS 3.3V Rail Curr (out)" + label curr3 "Linecard PMIC-2 AGB 1.8V Rail Curr (out)" + ignore curr4 + +# Memory sensors +bus "i2c-0" "SMBus I801 adapter at efa0" + chip "jc42-i2c-0-1c" + label temp1 "Ambient SODIMM Temp" + + chip "jc42-i2c-0-1a" + label temp1 "Ambient SODIMM Temp" + # Temperature sensors -bus "i2c-2" "i2c-1-mux (chan_id 1)" - chip "mlxsw-i2c-*-48" +bus "i2c-3" "i2c-1-mux (chan_id 1)" + chip "mlxsw-i2c-*-37" label temp1 "Ambient ASIC Temp" bus "i2c-7" "i2c-1-mux (chan_id 6)" @@ -15,121 +56,117 @@ bus "i2c-7" "i2c-1-mux (chan_id 6)" chip "tmp102-i2c-*-4a" label temp1 "Ambient Port Side Temp (air exhaust)" -bus "i2c-15" "i2c-1-mux (chan_id 6)" - chip "tmp102-i2c-15-49" - label temp1 "Ambient COMEX Temp" +bus "i2c-14" "i2c-1-mux (chan_id 12)" + chip "tmp421-i2c-*-1f" + ignore temp1 + label temp2 "Ambient PCIe switch Temp" # Power controllers -bus "i2c-5" "i2c-1-mux (chan_id 4)" - chip "mp2975-i2c-*-62" - label in1 "PMIC-1 PSU 12V Rail (in1)" - label in2 "PMIC-1 OSFP PORTS_P01_P08 Rail (out1)" - compute in2 (2)*@, @/(2) - label in3 "PMIC-1 OSFP PORTS_P09_P16 Rail (out2)" - compute in3 (2)*@, @/(2) - label temp1 "PMIC-1 OSFP PORTS_P01_P08 Temp 1" - label temp2 "PMIC-1 OSFP PORTS_P09_P16 Temp 2" - label power1 "PMIC-1 12V OSFP PORT_P01_P16 (in)" - label power2 "PMIC-1 OSFP P01_P08 Rail Pwr (out1)" - label power3 "PMIC-1 OSFP P09_P16 Rail Pwr (out2)" - label curr1 "PMIC-1 12V OSFP P01_P08 Rail Curr (in1)" - label curr2 "PMIC-1 OSFP P01_P8 Rail Curr (out1)" - label curr3 "PMIC-1 OSFP P09_P16 Rail Curr (out2)" - - chip "mp2975-i2c-*-64" - label in1 "PMIC-2 PSU 12V Rail (in1)" - label in2 "PMIC-2 OSFP PORTS_P17_P24 Rail (out1)" - compute in2 (2)*@, @/(2) - label in3 "PMIC-2 OSFP PORTS_P25_P32 Rail (out2)" - compute in3 (2)*@, @/(2) - label temp1 "PMIC-2 OSFP PORTS_P17_P24 Temp 1" - label temp2 "PMIC-2 OSFP PORTS_P25_P32 Temp 2" - label power1 "PMIC-2 12V OSFP PORT_P17_P32 (in)" - label power2 "PMIC-2 OSFP P17_P24 Rail Pwr (out1)" - label power3 "PMIC-2 OSFP P25_P32 Rail Pwr (out2)" - label curr1 "PMIC-2 12V OSFP P17_P24 Rail Curr (in1)" - label curr2 "PMIC-2 OSFP P17_P24 Rail Curr (out1)" - label curr3 "PMIC-2 OSFP P25_P32 Rail Curr (out2)" - - chip "mp2888-i2c-*-66" - label in1 "PMIC-3 PSU 12V Rail (in1)" - label in2 "PMIC-3 ASIC VCORE_MAIN Rail (out1)" +bus "i2c-5" "i2c-1-mux (chan_id 3)" + chip "mp2975-i2c-5-62" + label in1 "PMIC-1 PSU 12V Rail (in)" + label in2 "PMIC-1 ASIC VCORE_MAIN Rail (out)" ignore in3 - ignore in4 - label temp1 "PMIC-3 ASIC VCORE_MAIN Temp 1" + ignore in4 + label temp1 "PMIC-1 ASIC VCORE_MAIN Temp 1" ignore temp2 - label power1 "PMIC-3 12V ASIC VCORE_MAIN Rail Pwr (in)" - label power2 "PMIC-3 ASIC VCORE_MAIN Rail Pwr (out1)" - ignore power3 + label power1 "PMIC-1 12V ASIC VCORE_MAIN Rail Pwr (in)" + label power2 "PMIC-1 ASIC VCORE_MAIN Rail Pwr (out)" + ignore power3 + ignore power4 + label curr1 "PMIC-1 12V ASIC VCORE_MAIN Rail Curr (in)" + label curr2 "PMIC-1 ASIC VCORE_MAIN Rail Curr (out)" + ignore curr3 + ignore curr4 + chip "mp2975-i2c-5-64" + label in1 "PMIC-2 PSU 12V Rail (in)" + label in2 "PMIC-2 ASIC 1.8V_MAIN Rail (out1)" + label in3 "PMIC-2 ASIC 1.2V_T0_3 Rail (out2)" + ignore in4 + label temp1 "PMIC-2 ASIC 1.8V_MAIN_1.2V_T0_3 Temp 1" + ignore temp2 + label power1 "PMIC-2 12V ASIC 1.8V_MAIN_1.2V_T0_3 Rail Pwr (in)" + label power2 "PMIC-2 ASIC 1.8V_MAIN Rail Pwr (out)" + label power3 "PMIC-2 ASIC 1.2V_T0_3 Rail Pwr (out)" ignore power4 - label curr1 "PMIC-3 12V ASIC VCORE_MAIN Rail Curr (in1)" - label curr2 "PMIC-3 ASIC VCORE_MAIN Rail Curr (out1)" - ignore curr3 + label curr1 "PMIC-2 12V ASIC 1.8V_MAIN_1.2V_T0_3 Rail Curr (in)" + label curr2 "PMIC-2 ASIC 1.8V_MAIN Rail Curr (out1)" + label curr3 "PMIC-2 ASIC 1.2V_T0_3 Rail Curr (out2)" + ignore curr4 + chip "mp2975-i2c-*-66" + label in1 "PMIC-3 PSU 12V Rail (in)" + label in2 "PMIC-3 ASIC VCORE_T0_3 Rail (out1)" + label in3 "PMIC-3 ASIC 1.8V_T0_3 Rail (out2)" + ignore in4 + label temp1 "PMIC-3 ASIC VCORE_1.8V_T0_3 Temp 1" + ignore temp2 + label power1 "PMIC-3 12V ASIC VCORE_1.8V_T0_3 Rail Pwr (in)" + label power2 "PMIC-3 ASIC VCORE_T0_3 Rail Pwr (out)" + label power3 "PMIC-3 ASIC 1.8V_T0_3 Rail Pwr (out)" + ignore power4 + label curr1 "PMIC-3 12V ASIC VCORE_1.8V_T0_3 Rail Curr (in)" + label curr2 "PMIC-3 ASIC VCORE_T0_3 Rail Curr (out1)" + label curr3 "PMIC-3 ASIC 1.8V_T0_3 Rail Curr (out2)" ignore curr4 - chip "mp2975-i2c-*-68" - label in1 "PMIC-4 PSU 12V Rail (in)" - label in2 "PMIC-4 HVDD 1.2V EAST Rail (out1)" - label in3 "PMIC-4 DVDD 0.9V EAST Rail (out2)" - label temp1 "PMIC-4 HVDD 1.2V EAST Rail Temp" - label power1 "PMIC-4 12V HVDD_1.2V DVDD_0.9V EAST (in)" - label power2 "PMIC-4 HVDD 1.2V EAST Rail Pwr (out1)" - label power3 "PMIC-4 DVDD 0.9V EAST Rail Pwr (out2)" - label curr1 "PMIC-4 12V HVDD 1.2V EAST Rail Curr (in)" - label curr2 "PMIC-4 HVDD 1.2V EAST Rail Curr (out1)" - label curr3 "PMIC-4 DVDD 0.9V EAST Rail Curr (out2)" - - chip "mp2975-i2c-*-6c" - label in1 "PMIC-5 PSU 12V Rail (in)" - label in2 "PMIC-5 HVDD 1.2V WEST Rail (out1)" - label in3 "PMIC-5 DVDD 0.9V WEST Rail (out2)" - label temp1 "PMIC-5 HVDD 1.2V WEST Rail Temp" - label power1 "PMIC-5 12V HVDD_1.2V DVDD_0.9V WEST (in)" - label power2 "PMIC-5 HVDD 1.2V WEST Rail Pwr (out1)" - label power3 "PMIC-5 DVDD 0.9V WEST Rail Pwr (out2)" - label curr1 "PMIC-5 12V HVDD 1.2V WEST Rail Curr (in)" - label curr2 "PMIC-5 HVDD 1.2V WEST Rail Curr (out1)" - label curr3 "PMIC-5 DVDD 0.9V WEST Rail Curr (out2)" - -bus "i2c-15" "i2c-1-mux (chan_id 6)" - chip "tps53679-i2c-*-58" - label in1 "PMIC-8 PSU 12V Rail (in1)" - label in2 "PMIC-8 PSU 12V Rail (in2)" - label in3 "PMIC-8 COMEX 1.8V Rail (out)" - label in4 "PMIC-8 COMEX 1.05V Rail (out)" - label temp1 "PMIC-8 Temp 1" - label temp2 "PMIC-8 Temp 2" - label power1 "PMIC-8 COMEX 1.8V Rail Pwr (out)" - label power2 "PMIC-8 COMEX 1.05V Rail Pwr (out)" - label curr1 "PMIC-8 COMEX 1.8V Rail Curr (out)" - label curr2 "PMIC-8 COMEX 1.05V Rail Curr (out)" - chip "tps53679-i2c-*-61" - label in1 "PMIC-9 PSU 12V Rail (in1)" - label in2 "PMIC-9 PSU 12V Rail (in2)" - label in3 "PMIC-9 COMEX 1.2V Rail (out)" + label in1 "PMIC-4 PSU 12V Rail (in)" + label in2 "PMIC-4 ASIC VCORE_T4_7 Rail (out1)" + label in3 "PMIC-4 ASIC 1.8V_T4_7 Rail (out2)" + ignore in4 + label temp1 "PMIC-4 ASIC VCORE_1.8V_T4_7 Temp 1" + ignore temp2 + label power1 "PMIC-4 12V ASIC VCORE_1.8V_T4_7 Rail Pwr (in)" + label power2 "PMIC-4 ASIC VCORE_T4_7 Rail Pwr (out)" + label power3 "PMIC-3 ASIC 1.8V_T4_7 Rail Pwr (out)" + ignore power4 + label curr1 "PMIC-4 12V ASIC VCORE_1.8V_T4_7 Rail Curr (in)" + label curr2 "PMIC-4 ASIC VCORE_T4_7 Rail Curr (out1)" + label curr3 "PMIC-4 ASIC 1.8V_T4_7 Rail Curr (out2)" + ignore curr4 + chip "mp2975-i2c-*-6a" + label in1 "PMIC-5 PSU 12V Rail (in)" + label in2 "PMIC-5 ASIC 1.2V_MAIN Rail (out1)" + label in3 "PMIC-5 ASIC 1.2V_T4_7 Rail (out2)" ignore in4 - label temp1 "PMIC-9 Temp 1" - label temp2 "PMIC-9 Temp 2" - label power1 "PMIC-9 COMEX 1.2V Rail Pwr (out)" - ignore power2 - label curr1 "PMIC-9 COMEX 1.2V Rail Curr (out)" - ignore curr2 + label temp1 "PMIC-5 ASIC 1.2V_MAIN_1.2V_T4_7 Temp 1" + ignore temp2 + label power1 "PMIC-5 12V ASIC 1.2V_MAIN_1.2V_T4_7 Rail Pwr (in)" + label power2 "PMIC-5 ASIC 1.2V_MAIN Rail Pwr (out)" + label power3 "PMIC-5 1.2V_T4_7 Rail Pwr (out)" + ignore power4 + label curr1 "PMIC-5 12V ASIC 1.2V_MAIN_1.2V_T4_7 Rail Curr (in)" + label curr2 "PMIC-5 ASIC 1.2V_MAIN Rail Curr (out1)" + label curr3 "PMIC-5 ASIC 1.2V_T4_7 Rail Curr (out2)" + ignore curr4 + ignore curr4 +bus "i2c-56" "i2c-1-mux (chan_id 6)" + chip "mp2975-i2c-*-6b" + label in1 "PMIC-6 PSU 12V Rail (in1)" + label in2 "PMIC-6 PSU 12V Rail (in2)" + label in3 "PMIC-6 COMEX 1.8V Rail (out1)" + label in4 "PMIC-6 COMEX 1.05V Rail (out2)" + label temp1 "PMIC-6 Temp 1" + label temp2 "PMIC-6 Temp 2" + label power1 "PMIC-6 COMEX 1.8V Rail Pwr (out1)" + label power2 "PMIC-6 COMEX 1.05V Rail Pwr (out2)" + label curr1 "PMIC-6 COMEX 1.8V Rail Curr (out1)" + label curr2 "PMIC-6 COMEX 1.05V Rail Curr (out2)" # Power supplies bus "i2c-4" "i2c-1-mux (chan_id 3)" - chip "dps460-i2c-*-58" - label in1 "PSU-1(L) 220V Rail (in)" - ignore in2 - label in3 "PSU-1(L) 12V Rail (out)" - label fan1 "PSU-1(L) Fan 1" - label temp1 "PSU-1(L) Temp 1" - label temp2 "PSU-1(L) Temp 2" - label temp3 "PSU-1(L) Temp 3" - label power1 "PSU-1(L) 220V Rail Pwr (in)" - label power2 "PSU-1(L) 12V Rail Pwr (out)" - label curr1 "PSU-1(L) 220V Rail Curr (in)" - label curr2 "PSU-1(L) 12V Rail Curr (out)" chip "dps460-i2c-*-59" + label in1 "PSU-1(R) 220V Rail (in)" + ignore in2 + label in3 "PSU-1(R) 12V Rail (out)" + label fan1 "PSU-1(R) Fan 1" + label temp1 "PSU-1(R) Temp 1" + label temp2 "PSU-1(R) Temp 2" + label temp3 "PSU-1(R) Temp 3" + label power1 "PSU-1(R) 220V Rail Pwr (in)" + label power2 "PSU-1(R) 12V Rail Pwr (out)" + label curr1 "PSU-1(R) 220V Rail Curr (in)" + label curr2 "PSU-1(R) 12V Rail Curr (out)" + chip "dps460-i2c-*-58" label in1 "PSU-2(R) 220V Rail (in)" ignore in2 label in3 "PSU-2(R) 12V Rail (out)" @@ -141,49 +178,47 @@ bus "i2c-4" "i2c-1-mux (chan_id 3)" label power2 "PSU-2(R) 12V Rail Pwr (out)" label curr1 "PSU-2(R) 220V Rail Curr (in)" label curr2 "PSU-2(R) 12V Rail Curr (out)" - - chip "d1u54p_w_2000_12-i2c-*-58" - label in1 "PSU-1(L) 220V Rail (in)" + chip "dps460-i2c-*-5b" + label in1 "PSU-3(L) 220V Rail (in)" ignore in2 - label in3 "PSU-1(L) 12V Rail (out)" - label fan1 "PSU-1(L) Fan 1" - label temp1 "PSU-1(L) Temp 1" - label temp2 "PSU-1(L) Temp 2" - label temp3 "PSU-1(L) Temp 3" - label power1 "PSU-1(L) 220V Rail Pwr (in)" - label power2 "PSU-1(L) 12V Rail Pwr (out)" - label curr1 "PSU-1(L) 220V Rail Curr (in)" - label curr2 "PSU-1(L) 12V Rail Curr (out)" - chip "d1u54p_w_2000_12-i2c-*-59" - label in1 "PSU-2(R) 220V Rail (in)" + label in3 "PSU-3(L) 12V Rail (out)" + label fan1 "PSU-3(L) Fan 1" + label temp1 "PSU-3(L) Temp 1" + label temp2 "PSU-3(L) Temp 2" + label temp3 "PSU-3(L) Temp 3" + label power1 "PSU-3(L) 220V Rail Pwr (in)" + label power2 "PSU-3(L) 12V Rail Pwr (out)" + label curr1 "PSU-3(L) 220V Rail Curr (in)" + label curr2 "PSU-3(L) 12V Rail Curr (out)" + chip "dps460-i2c-*-5a" + label in1 "PSU-4(L) 220V Rail (in)" ignore in2 - label in3 "PSU-2(R) 12V Rail (out)" - label fan1 "PSU-2(R) Fan 1" - label temp1 "PSU-2(R) Temp 1" - label temp2 "PSU-2(R) Temp 2" - label temp3 "PSU-2(R) Temp 3" - label power1 "PSU-2(R) 220V Rail Pwr (in)" - label power2 "PSU-2(R) 12V Rail Pwr (out)" - label curr1 "PSU-2(R) 220V Rail Curr (in)" - label curr2 "PSU-2(R) 12V Rail Curr (out)" + label in3 "PSU-4(L) 12V Rail (out)" + label fan1 "PSU-4(L) Fan 1" + label temp1 "PSU-4(L) Temp 1" + label temp2 "PSU-4(L) Temp 2" + label temp3 "PSU-4(L) Temp 3" + label power1 "PSU-4(L) 220V Rail Pwr (in)" + label power2 "PSU-4(L) 12V Rail Pwr (out)" + label curr1 "PSU-4(L) 220V Rail Curr (in)" + label curr2 "PSU-4(L) 12V Rail Curr (out)" # Chassis fans chip "mlxreg_fan-isa-*" label fan1 "Chassis Fan Drawer-1 Tach 1" - label fan2 "Chassis Fan Drawer-1 Tach 2" - label fan3 "Chassis Fan Drawer-2 Tach 1" - label fan4 "Chassis Fan Drawer-2 Tach 2" - label fan5 "Chassis Fan Drawer-3 Tach 1" - label fan6 "Chassis Fan Drawer-3 Tach 2" - label fan7 "Chassis Fan Drawer-4 Tach 1" - label fan8 "Chassis Fan Drawer-4 Tach 2" - label fan9 "Chassis Fan Drawer-5 Tach 1" - label fan10 "Chassis Fan Drawer-5 Tach 2" - label fan11 "Chassis Fan Drawer-6 Tach 1" - label fan12 "Chassis Fan Drawer-6 Tach 2" - label fan13 "Chassis Fan Drawer-7 Tach 1" - label fan14 "Chassis Fan Drawer-7 Tach 2" + label fan2 "Chassis Fan Drawer-2 Tach 1" + label fan3 "Chassis Fan Drawer-3 Tach 1" + label fan4 "Chassis Fan Drawer-4 Tach 1" + label fan5 "Chassis Fan Drawer-5 Tach 1" + label fan6 "Chassis Fan Drawer-6 Tach 1" -# Miscellaneous -chip "*-virtual-*" - ignore temp1 +# Line card hotswap device (bus is variable, any above 63) + chip "lm25066-i2c-*-15" + label in1 "Linecard Hotswap 12V_IN Rail(vin)" + ignore in2 + label in3 "Linecard Hotswap 12V Rail(vout)" + label power1 "Linecard Hotswap 12V_IN (pin)" + label power2 "Linecard Hotswap 12V (pout)" + label curr1 "Linecard Hotswap 12V_IN (iin)" + label curr2 "Linecard Hotswap 12V (iout)" + ignore temp1 diff --git a/device/mellanox/x86_64-mlnx_msn4800_simx-r0/syseeprom.hex b/device/mellanox/x86_64-mlnx_msn4800_simx-r0/syseeprom.hex index b50ffa5a0231..13bba49e7446 100644 --- a/device/mellanox/x86_64-mlnx_msn4800_simx-r0/syseeprom.hex +++ b/device/mellanox/x86_64-mlnx_msn4800_simx-r0/syseeprom.hex @@ -1,42 +1,42 @@ -54 6c 76 49 6e 66 6f 00 01 02 53 21 40 4d 53 4e -33 37 30 30 00 00 00 00 00 00 00 00 00 00 00 00 +54 6c 76 49 6e 66 6f 00 01 02 5e 21 40 4d 53 4e +34 38 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 14 4d -53 4e 33 37 30 30 2d 56 53 32 46 00 00 00 00 00 -00 00 00 23 18 4d 54 31 38 35 31 58 30 32 39 36 -31 00 00 00 00 00 00 00 00 00 00 00 00 24 06 98 -03 9b 94 d4 80 25 13 31 32 2f 32 38 2f 32 30 31 -38 20 30 34 3a 34 32 3a 31 38 26 01 00 2a 02 00 +53 4e 34 38 30 30 2d 57 53 34 46 00 00 00 00 00 +00 00 00 23 18 4d 54 32 31 32 31 58 31 32 32 30 +34 00 00 00 00 00 00 00 00 00 00 00 00 24 06 1c +34 da c1 df 00 25 13 30 35 2f 32 34 2f 32 30 32 +31 20 30 30 3a 32 37 3a 32 37 26 01 00 2a 02 00 fe 2b 08 4d 65 6c 6c 61 6e 6f 78 fd 24 00 00 81 19 00 16 01 01 00 56 00 00 4d 4c 4e 58 02 01 0c 05 0e 02 10 06 12 07 00 00 00 00 00 00 00 00 00 -00 fd a4 00 00 81 19 00 92 00 03 01 01 00 00 4d -54 31 38 35 31 58 30 32 39 36 31 00 00 00 00 00 -00 00 00 00 00 00 00 4d 53 4e 33 37 30 30 2d 56 -53 32 46 00 00 00 00 00 00 00 00 41 32 00 00 00 -3a 82 b8 41 6e 61 63 6f 6e 64 61 20 45 74 68 20 -32 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 fd a4 00 00 81 19 00 92 00 03 01 e2 00 00 4d +54 32 31 32 31 58 31 32 32 30 34 00 00 00 00 00 +00 00 00 00 00 00 00 4d 53 4e 34 38 30 30 2d 57 +53 34 46 00 00 00 00 00 00 00 00 41 31 00 00 00 +bf cb cb 42 75 66 66 61 6c 6f 20 4d 6f 64 75 6c +61 72 20 45 74 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 70 00 00 00 0e 74 4d 53 4e 33 37 +00 00 00 00 00 7e 00 00 00 12 c0 4d 53 4e 34 38 30 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 24 00 00 81 19 00 10 00 03 05 e8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 24 00 -00 81 19 00 1e 00 11 02 85 00 00 0d 00 00 00 00 -00 00 00 98 03 9b 94 d4 80 00 fe 98 03 9b 03 00 -94 d4 80 fd 24 00 00 81 19 00 12 00 01 06 81 00 -00 00 46 00 00 08 00 06 06 06 06 00 00 00 00 00 +00 81 19 00 1e 00 11 02 2d 00 00 0d 00 00 00 00 +00 00 00 1c 34 da c1 df 00 00 fe 1c 34 da 03 00 +c1 df 00 fd 24 00 00 81 19 00 12 00 01 06 7d 00 +00 00 46 00 00 08 00 07 07 07 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd 14 00 00 81 19 00 0e 00 02 07 99 00 00 30 00 20 00 00 00 00 00 28 40 78 38 36 5f 36 34 2d 6d 6c 6e 78 5f 6d 73 6e -33 37 30 30 2d 72 30 00 00 00 00 00 00 00 00 00 +34 38 30 30 2d 72 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 29 15 32 30 31 38 2e 31 31 2d 35 2e 32 2e 30 -30 30 38 2d 39 36 30 30 fe 04 89 cb 82 5b 00 00 -00 00 00 fe 04 72 60 7f 13 00 00 00 00 00 00 00 +00 29 20 35 2e 33 2e 30 30 30 35 00 00 00 00 00 +00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +00 00 00 fe 04 7b 10 a3 b8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/device/nokia/armhf-nokia_ixs7215_52x-r0/Nokia-7215/hwsku.json b/device/nokia/armhf-nokia_ixs7215_52x-r0/Nokia-7215/hwsku.json new file mode 100644 index 000000000000..4ae62e8d4b01 --- /dev/null +++ b/device/nokia/armhf-nokia_ixs7215_52x-r0/Nokia-7215/hwsku.json @@ -0,0 +1,212 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet1": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet2": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet3": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet4": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet5": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet6": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet7": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet8": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet9": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet10": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet11": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet12": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet13": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet14": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet15": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet16": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet17": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet18": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet19": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet20": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet21": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet22": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet23": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet24": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet25": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet26": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet27": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet28": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet29": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet30": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet31": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet32": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet33": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet34": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet35": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet36": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet37": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet38": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet39": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet40": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet41": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet42": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet43": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet44": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet45": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet46": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet47": { + "default_brkout_mode": "1x1G", + "port_type": "RJ45" + }, + "Ethernet48": { + "default_brkout_mode": "1x10G", + "port_type": "SFP+" + }, + "Ethernet49": { + "default_brkout_mode": "1x10G", + "port_type": "SFP+" + }, + "Ethernet50": { + "default_brkout_mode": "1x10G", + "port_type": "SFP+" + }, + "Ethernet51": { + "default_brkout_mode": "1x10G", + "port_type": "SFP+" + } + } +} diff --git a/device/nokia/armhf-nokia_ixs7215_52x-r0/plugins/sfputil.py b/device/nokia/armhf-nokia_ixs7215_52x-r0/plugins/sfputil.py index 1ca3b9ec6f2d..3280ffdc92b9 100755 --- a/device/nokia/armhf-nokia_ixs7215_52x-r0/plugins/sfputil.py +++ b/device/nokia/armhf-nokia_ixs7215_52x-r0/plugins/sfputil.py @@ -1,4 +1,5 @@ try: + import glob import sonic_platform.platform import sonic_platform.chassis from sonic_sfp.sfputilbase import SfpUtilBase @@ -14,6 +15,12 @@ class SfpUtil(SfpUtilBase): ports_in_block = 4 _port_to_eeprom_mapping = {} + port_to_i2c_mapping = { + 49: 2, + 50: 3, + 51: 4, + 52: 5 + } _changed_ports = [0, 0, 0, 0] @property @@ -33,10 +40,21 @@ def port_to_eeprom_mapping(self): return self._port_to_eeprom_mapping def __init__(self): - # print " SfpUtil(SfpUtilBase) re-directed to chassis PMON 2.0 " + # Mux Ordering + mux_dev = sorted(glob.glob("/sys/class/i2c-adapter/i2c-0/i2c-[0-9]")) + eeprom_path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom" + y = 0 + for x in range(self.port_start, self.port_end + 1): + mux_dev_num = mux_dev[y] + self.port_to_i2c_mapping[x] = mux_dev_num[-1] + y = y + 1 + port_eeprom_path = eeprom_path.format(self.port_to_i2c_mapping[x]) + self.port_to_eeprom_mapping[x] = port_eeprom_path + self._port_to_eeprom_mapping[x] = port_eeprom_path SfpUtilBase.__init__(self) - self.chassis = sonic_platform.platform.Platform().get_chassis() + self.chassis = sonic_platform.platform.Platform().get_chassis() + def reset(self, port_num): # print " SfpUtil(SfpUtilBase) re-directed to chassis PMON 2.0 " if self.chassis is not None: diff --git a/device/nokia/armhf-nokia_ixs7215_52x-r0/system_health_monitoring_config.json b/device/nokia/armhf-nokia_ixs7215_52x-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..fb16658c840c --- /dev/null +++ b/device/nokia/armhf-nokia_ixs7215_52x-r0/system_health_monitoring_config.json @@ -0,0 +1,14 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": [ + "asic", + "psu" + ], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "amber", + "normal": "green", + "booting": "blinking green" + } +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/context_config.json new file mode 100644 index 000000000000..5a8e83c7c92e --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd0", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "06:00.0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/port_config.ini b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/port_config.ini new file mode 100644 index 000000000000..c05fc0a12dd2 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/port_config.ini @@ -0,0 +1,20 @@ +# name lanes alias index asic_port_name role speed coreid coreportid numvoq +Ethernet0 72,73,74,75,76,77,78,79 Ethernet0 1 Eth0-ASIC0 Ext 400000 1 0 8 +Ethernet1 80,81,82,83,84,85,86,87 Ethernet1 2 Eth1-ASIC0 Ext 400000 1 1 8 +Ethernet2 88,89,90,91,92,93,94,95 Ethernet2 3 Eth2-ASIC0 Ext 400000 1 2 8 +Ethernet3 96,97,98,99,100,101,102,103 Ethernet3 4 Eth3-ASIC0 Ext 400000 1 3 8 +Ethernet4 104,105,106,107,108,109,110,111 Ethernet4 5 Eth4-ASIC0 Ext 400000 1 4 8 +Ethernet5 112,113,114,115,116,117,118,119 Ethernet5 6 Eth5-ASIC0 Ext 400000 1 5 8 +Ethernet6 120,121,122,123,124,125,126,127 Ethernet6 7 Eth6-ASIC0 Ext 400000 1 6 8 +Ethernet7 128,129,130,131,132,133,134,135 Ethernet7 8 Eth7-ASIC0 Ext 400000 1 7 8 +Ethernet8 136,137,138,139,140,141,142,143 Ethernet8 9 Eth8-ASIC0 Ext 400000 1 8 8 +Ethernet9 64,65,66,67,68,69,70,71 Ethernet9 10 Eth9-ASIC0 Ext 400000 0 1 8 +Ethernet10 56,57,58,59,60,61,62,63 Ethernet10 11 Eth10-ASIC0 Ext 400000 0 2 8 +Ethernet11 48,49,50,51,52,53,54,55 Ethernet11 12 Eth11-ASIC0 Ext 400000 0 3 8 +Ethernet12 40,41,42,43,44,45,46,47 Ethernet12 13 Eth12-ASIC0 Ext 400000 0 4 8 +Ethernet13 32,33,34,35,36,37,38,39 Ethernet13 14 Eth13-ASIC0 Ext 400000 0 5 8 +Ethernet14 24,25,26,27,28,29,30,31 Ethernet14 15 Eth14-ASIC0 Ext 400000 0 6 8 +Ethernet15 16,17,18,19,20,21,22,23 Ethernet15 16 Eth15-ASIC0 Ext 400000 0 7 8 +Ethernet16 8,9,10,11,12,13,14,15 Ethernet16 17 Eth16-ASIC0 Ext 400000 0 8 8 +Ethernet17 0,1,2,3,4,5,6,7 Ethernet17 18 Eth17-ASIC0 Ext 400000 0 9 8 +Ethernet-IB0 115 Ethernet-IB0 37 Rcy-ASIC0 Int 10000 0 10 8 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/sai.profile new file mode 100644 index 000000000000..c75b59a02b6d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/0/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/jr2cp-nokia-18x400g-config.bcm diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/context_config.json new file mode 100644 index 000000000000..5caa2e8eef88 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd1", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 1, + "hwinfo" : "07:00.0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/port_config.ini b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/port_config.ini new file mode 100644 index 000000000000..9f043d832eda --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/port_config.ini @@ -0,0 +1,20 @@ +# name lanes alias index asic_port_name role speed coreid coreportid numvoq +Ethernet18 72,73,74,75,76,77,78,79 Ethernet18 19 Eth0-ASIC1 Ext 400000 1 0 8 +Ethernet19 80,81,82,83,84,85,86,87 Ethernet19 20 Eth1-ASIC1 Ext 400000 1 1 8 +Ethernet20 88,89,90,91,92,93,94,95 Ethernet20 21 Eth2-ASIC1 Ext 400000 1 2 8 +Ethernet21 96,97,98,99,100,101,102,103 Ethernet21 22 Eth3-ASIC1 Ext 400000 1 3 8 +Ethernet22 104,105,106,107,108,109,110,111 Ethernet22 23 Eth4-ASIC1 Ext 400000 1 4 8 +Ethernet23 112,113,114,115,116,117,118,119 Ethernet23 24 Eth5-ASIC1 Ext 400000 1 5 8 +Ethernet24 120,121,122,123,124,125,126,127 Ethernet24 25 Eth6-ASIC1 Ext 400000 1 6 8 +Ethernet25 128,129,130,131,132,133,134,135 Ethernet25 26 Eth7-ASIC1 Ext 400000 1 7 8 +Ethernet26 136,137,138,139,140,141,142,143 Ethernet26 27 Eth8-ASIC1 Ext 400000 1 8 8 +Ethernet27 64,65,66,67,68,69,70,71 Ethernet27 28 Eth9-ASIC1 Ext 400000 0 1 8 +Ethernet28 56,57,58,59,60,61,62,63 Ethernet28 29 Eth10-ASIC1 Ext 400000 0 2 8 +Ethernet29 48,49,50,51,52,53,54,55 Ethernet29 30 Eth11-ASIC1 Ext 400000 0 3 8 +Ethernet30 40,41,42,43,44,45,46,47 Ethernet30 31 Eth12-ASIC1 Ext 400000 0 4 8 +Ethernet31 32,33,34,35,36,37,38,39 Ethernet31 32 Eth13-ASIC1 Ext 400000 0 5 8 +Ethernet32 24,25,26,27,28,29,30,31 Ethernet32 33 Eth14-ASIC1 Ext 400000 0 6 8 +Ethernet33 16,17,18,19,20,21,22,23 Ethernet33 34 Eth15-ASIC1 Ext 400000 0 7 8 +Ethernet34 8,9,10,11,12,13,14,15 Ethernet34 35 Eth16-ASIC1 Ext 400000 0 8 8 +Ethernet35 0,1,2,3,4,5,6,7 Ethernet35 36 Eth17-ASIC1 Ext 400000 0 9 8 +Ethernet-IB1 115 Ethernet-IB1 38 Rcy-ASIC1 Int 10000 0 10 8 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/sai.profile new file mode 100644 index 000000000000..c75b59a02b6d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/Nokia-IXR7250E-36x400G/1/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/jr2cp-nokia-18x400g-config.bcm diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/asic.conf b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/asic.conf new file mode 100644 index 000000000000..3e123ed50a13 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/asic.conf @@ -0,0 +1,3 @@ +NUM_ASIC=2 +DEV_ID_ASIC_0=06:00.0 +DEV_ID_ASIC_1=07:00.0 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/chassisdb.conf b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/chassisdb.conf new file mode 100644 index 000000000000..cb602c6eb4d8 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/chassisdb.conf @@ -0,0 +1 @@ +chassis_db_address=10.0.5.16 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/default_sku b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/default_sku new file mode 100644 index 000000000000..7aba1887899d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/default_sku @@ -0,0 +1 @@ +Nokia-IXR7250E-36x400G empty diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/installer.conf b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/installer.conf new file mode 100644 index 000000000000..7580ad94c4cf --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/installer.conf @@ -0,0 +1,4 @@ +CONSOLE_PORT=0x3f8 +CONSOLE_DEV=0 +CONSOLE_SPEED=115200 +ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="amd_iommu=off pci=resource_alignment=48@00:03.1" diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pcie.yaml b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pcie.yaml new file mode 100644 index 000000000000..2c8257a4872f --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pcie.yaml @@ -0,0 +1,220 @@ +- bus: '00' + dev: '00' + fn: '0' + id: '1450' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Root Complex' +- bus: '00' + dev: '00' + fn: '2' + id: '1451' + name: 'IOMMU: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) I/O Memory Management Unit' +- bus: '00' + dev: '01' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '01' + fn: '1' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '01' + fn: '2' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '02' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '03' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '03' + fn: '1' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '04' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '07' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '07' + fn: '1' + id: '1454' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B' +- bus: '00' + dev: '08' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '08' + fn: '1' + id: '1454' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B' +- bus: '00' + dev: '14' + fn: '0' + id: '790b' + name: 'SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 59)' +- bus: '00' + dev: '14' + fn: '3' + id: '790e' + name: 'ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)' +- bus: '00' + dev: '18' + fn: '0' + id: '1460' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 0' +- bus: '00' + dev: '18' + fn: '1' + id: '1461' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 1' +- bus: '00' + dev: '18' + fn: '2' + id: '1462' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 2' +- bus: '00' + dev: '18' + fn: '3' + id: '1463' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 3' +- bus: '00' + dev: '18' + fn: '4' + id: '1464' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 4' +- bus: '00' + dev: '18' + fn: '5' + id: '1465' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 5' +- bus: '00' + dev: '18' + fn: '6' + id: '1466' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 6' +- bus: '00' + dev: '18' + fn: '7' + id: '1467' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 7' +- bus: '01' + dev: '00' + fn: '0' + id: '157b' + name: 'Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)' +- bus: '02' + dev: '00' + fn: '0' + id: '2001' + name: 'Unassigned class [ff00]: Alcatel Device 2001' +- bus: '03' + dev: '00' + fn: '0' + id: '8562' + name: 'PCI bridge: PMC-Sierra Inc. Device 8562' +- bus: '03' + dev: '00' + fn: '1' + id: '8562' + name: 'Memory controller: PMC-Sierra Inc. Device 8562' +- bus: '04' + dev: '00' + fn: '0' + id: '8562' + name: 'PCI bridge: PMC-Sierra Inc. Device 8562' +- bus: '04' + dev: '01' + fn: '0' + id: '8562' + name: 'PCI bridge: PMC-Sierra Inc. Device 8562' +- bus: '04' + dev: '02' + fn: '0' + id: '8562' + name: 'PCI bridge: PMC-Sierra Inc. Device 8562' +- bus: '04' + dev: '03' + fn: '0' + id: '8562' + name: 'PCI bridge: PMC-Sierra Inc. Device 8562' +- bus: '05' + dev: '00' + fn: '0' + id: '001a' + name: 'Unassigned class [ff00]: Alcatel Device 001a (rev 35)' +- bus: '06' + dev: '00' + fn: '0' + id: '8850' + name: 'Ethernet controller: Broadcom Limited Device 8850 (rev 01)' +- bus: '07' + dev: '00' + fn: '0' + id: '8850' + name: 'Ethernet controller: Broadcom Limited Device 8850 (rev 01)' +- bus: '08' + dev: '00' + fn: '0' + id: '7028' + name: 'Memory controller: Xilinx Corporation Device 7028' +- bus: '09' + dev: '00' + fn: '0' + id: '145a' + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Raven/Raven2 PCIe Dummy Function' +- bus: '09' + dev: '00' + fn: '2' + id: '1456' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Platform Security Processor' +- bus: '09' + dev: '00' + fn: '3' + id: '145f' + name: 'USB controller: Advanced Micro Devices, Inc. [AMD] Zeppelin USB 3.0 Host controller' +- bus: '0a' + dev: '00' + fn: '0' + id: '1455' + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Renoir PCIe Dummy Function' +- bus: '0a' + dev: '00' + fn: '1' + id: '1468' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Zeppelin Cryptographic Coprocessor NTBCCP' +- bus: '0a' + dev: '00' + fn: '2' + id: '7901' + name: 'SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)' +- bus: '0a' + dev: '00' + fn: '3' + id: '1457' + name: 'Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller' +- bus: '0a' + dev: '00' + fn: '4' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1458' +- bus: '0a' + dev: '00' + fn: '5' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1458' diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform.json new file mode 100644 index 000000000000..ad911fb609b0 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform.json @@ -0,0 +1,161 @@ +{ + "chassis": { + "name": "Nokia-IXR7250E-36x400G", + "components": [ + { + "name": "BIOS" + }, + { + "name": "FPGA1" + }, + { + "name": "FPGA2" + } + ], + + "fans": [], + "fan_drawers": [], + "master_psu_led_color": [], + "psus": [], + "thermals": [ + { + "name": "temp_1(fan)" + }, + { + "name": "temp_2(fan)" + }, + { + "name": "temp_3" + }, + { + "name": "temp_4" + }, + { + "name": "temp_5" + }, + { + "name": "temp_6" + }, + { + "name": "temp_7" + }, + { + "name": "temp_8" + }, + { + "name": "temp_9" + } + ], + "sfps": [ + { + "name": "QSFPDD_1" + }, + { + "name": "QSFPDD_2" + }, + { + "name": "QSFPDD_3" + }, + { + "name": "QSFPDD_4" + }, + { + "name": "QSFPDD_5" + }, + { + "name": "QSFPDD_6" + }, + { + "name": "QSFPDD_7" + }, + { + "name": "QSFPDD_8" + }, + { + "name": "QSFPDD_9" + }, + { + "name": "QSFPDD_10" + }, + { + "name": "QSFPDD_11" + }, + { + "name": "QSFPDD_12" + }, + { + "name": "QSFPDD_13" + }, + { + "name": "QSFPDD_14" + }, + { + "name": "QSFPDD_15" + }, + { + "name": "QSFPDD_16" + }, + { + "name": "QSFPDD_17" + }, + { + "name": "QSFPDD_18" + }, + { + "name": "QSFPDD_19" + }, + { + "name": "QSFPDD_20" + }, + { + "name": "QSFPDD_21" + }, + { + "name": "QSFPDD_22" + }, + { + "name": "QSFPDD_23" + }, + { + "name": "QSFPDD_24" + }, + { + "name": "QSFPDD_25" + }, + { + "name": "QSFPDD_26" + }, + { + "name": "QSFPDD_27" + }, + { + "name": "QSFPDD_28" + }, + { + "name": "QSFPDD_29" + }, + { + "name": "QSFPDD_30" + }, + { + "name": "QSFPDD_31" + }, + { + "name": "QSFPDD_32" + }, + { + "name": "QSFPDD_33" + }, + { + "name": "QSFPDD_34" + }, + { + "name": "QSFPDD_35" + }, + { + "name": "QSFPDD_36" + } + ] + }, + "interfaces": {} +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_env.conf b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_env.conf new file mode 100644 index 000000000000..45697fe72fc1 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_env.conf @@ -0,0 +1,3 @@ +usemsi=1 +dmasize=512M +default_mtu=9100 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_ndk.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_ndk.json new file mode 100644 index 000000000000..92a206bb490b --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_ndk.json @@ -0,0 +1,32 @@ +{ + "options": [ + { + "key": "sfp_init_tx_en", + "stringval": "yes" + }, + { + "key": "midplane_subnet", + "stringval": "10.0.5.0" + }, + { + "key": "midplane_monitor", + "stringval": "yes" + }, + { + "key": "monitor_action", + "stringval": "reboot" + }, + { + "key": "grpc_thermal_monitor", + "stringval": "yes" + }, + { + "key": "disable_vfio", + "intval": 1 + }, + { + "key": "sonic_bdb_mode", + "intval": 0 + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot new file mode 100755 index 000000000000..65cba5185eb1 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/platform_reboot @@ -0,0 +1,9 @@ +#!/bin/bash + +systemctl stop nokia-watchdog.service +sleep 2 +echo "w" > /dev/watchdog +kick_date=`date -u` +echo "last watchdog kick $kick_date" > /var/log/nokia-watchdog-last.log +sync +/sbin/reboot diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/__init__.py b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/led_control.py b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/led_control.py new file mode 100644 index 000000000000..58c8c0893272 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/plugins/led_control.py @@ -0,0 +1,17 @@ +# +# Name: led_control.py, version: 1.0 +# +# Description: Module contains the Nokia specific LED control +# class object creation. +# +# Copyright (c) 2019, Nokia +# All rights reserved. +# + +try: + from platform_ndk import nokia_led_mgmt + +except ImportError as e: + raise ImportError("%s - required module not found" % e) + +LedControl = nokia_led_mgmt.getLedControl() diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pmon_daemon_control.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pmon_daemon_control.json new file mode 100644 index 000000000000..74ade4eb97a7 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/pmon_daemon_control.json @@ -0,0 +1,3 @@ +{ + "skip_psud": true +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/system_health_monitoring_config.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..57006d67ecf5 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/system_health_monitoring_config.json @@ -0,0 +1,15 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": [ + "asic", + "fan", + "psu" + ], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "red", + "normal": "green", + "booting": "amber" + } +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/thermal_policy.json b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/thermal_policy.json new file mode 100644 index 000000000000..8536b369aa7d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_36x400g-r0/thermal_policy.json @@ -0,0 +1,28 @@ +{ + "thermal_control_algorithm": { + "run_at_boot_up": "false" + }, + "info_types": [ + { + "type": "thermal_info" + }, + { + "type": "chassis_info" + } + ], + "policies": [ + { + "name": "pusblish thermal to platform", + "conditions": [ + { + "type": "thermal.chassis.collect" + } + ], + "actions": [ + { + "type": "thermal.platform.publish" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/context_config.json new file mode 100644 index 000000000000..2845886a6760 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd0", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:1:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/sai.profile new file mode 100644 index 000000000000..dbc60e3ef133 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/0/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-1-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/context_config.json new file mode 100644 index 000000000000..899c4e4c1524 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd1", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:1:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/sai.profile new file mode 100644 index 000000000000..05a77cb79cc7 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/1/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-1-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/context_config.json new file mode 100644 index 000000000000..ccaed3ae8666 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd10", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:6:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/sai.profile new file mode 100644 index 000000000000..e8dd14d895a5 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/10/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-6-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/context_config.json new file mode 100644 index 000000000000..f1caf87569c0 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd11", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:6:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/sai.profile new file mode 100644 index 000000000000..5c7864acd28d --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/11/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-6-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/context_config.json new file mode 100644 index 000000000000..04893d944a39 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd12", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:7:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/sai.profile new file mode 100644 index 000000000000..7e9833014a26 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/12/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-7-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/context_config.json new file mode 100644 index 000000000000..9ff440ee08a4 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd13", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:7:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/sai.profile new file mode 100644 index 000000000000..4267d04184fa --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/13/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-7-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/context_config.json new file mode 100644 index 000000000000..436f0ce557da --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd14", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:8:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/sai.profile new file mode 100644 index 000000000000..3c5e8f1304ed --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/14/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-8-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/context_config.json new file mode 100644 index 000000000000..b279ea8e6da2 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd15", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:8:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/sai.profile new file mode 100644 index 000000000000..ee44f77cd6f0 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/15/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-8-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/context_config.json new file mode 100644 index 000000000000..a134bc076c79 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd2", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:2:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/sai.profile new file mode 100644 index 000000000000..8abeb9043e4b --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/2/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-2-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/context_config.json new file mode 100644 index 000000000000..6abdd85fd275 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd3", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:2:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/sai.profile new file mode 100644 index 000000000000..b2c7ec1ada38 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/3/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-2-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/context_config.json new file mode 100644 index 000000000000..14526c17d086 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd4", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:3:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/sai.profile new file mode 100644 index 000000000000..5bbb453aa484 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/4/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-3-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/context_config.json new file mode 100644 index 000000000000..7877cf627e23 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd5", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:3:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/sai.profile new file mode 100644 index 000000000000..705ab7c27097 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/5/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-3-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/context_config.json new file mode 100644 index 000000000000..90c8f542c9a5 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd6", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:4:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/sai.profile new file mode 100644 index 000000000000..ca86e9b298ec --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/6/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-4-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/context_config.json new file mode 100644 index 000000000000..409431f7aeb7 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd7", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:4:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/sai.profile new file mode 100644 index 000000000000..8adb0b842a03 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/7/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-4-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/context_config.json new file mode 100644 index 000000000000..fab414b6e8c1 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd8", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:5:0" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/sai.profile new file mode 100644 index 000000000000..f4cd51ebc0d9 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/8/sai.profile @@ -0,0 +1,4 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-5-0.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb + diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/context_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/context_config.json new file mode 100644 index 000000000000..0497ac77d1bb --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/context_config.json @@ -0,0 +1,21 @@ +{ + "CONTEXTS": [ + { + "guid" : 0, + "name" : "syncd9", + "dbAsic" : "ASIC_DB", + "dbCounters" : "COUNTERS_DB", + "dbFlex": "FLEX_COUNTER_DB", + "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", + "switches": [ + { + "index" : 0, + "hwinfo" : "nokia-bdb:5:1" + } + ] + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/sai.profile b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/sai.profile new file mode 100644 index 000000000000..5b610fe3b349 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/9/sai.profile @@ -0,0 +1,3 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/config-ramon-5-1.bcm +SAI_CUSTOM_USER_BDE_NAME=nokia-kernel-bdb +SAI_CUSTOM_KERNEL_BDE_NAME=nokia-kernel-bdb diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/platform.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/platform.json new file mode 100644 index 000000000000..ec96ac39ae09 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/Nokia-IXR7250E-SUP-10/platform.json @@ -0,0 +1,252 @@ +{ + "chassis": { + "name": "Nokia-IXR7250E-SUP-10", + "components": [ + { + "name": "BIOS" + }, + { + "name": "FPGA1" + } + ], + "fans": [], + "fan_drawers": [ + { + "name": "FanTray0", + "num_fans": 1, + "fans": [ + { + "name": "Fan0" + } + ] + }, + { + "name": "FanTray1", + "num_fans": 1, + "fans": [ + { + "name": "Fan1" + } + ] + }, + { + "name": "FanTray2", + "num_fans": 1, + "fans": [ + { + "name": "Fan2" + } + ] + }, + { + "name": "FanTray3", + "num_fans": 1, + "fans": [ + { + "name": "Fan3" + } + ] + } + ], + "master_psu_led_color": ["green", "red"], + "psus": [ + { + "name": "PSU1", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU2", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU3", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU4", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU5", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU6", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU7", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU8", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU9", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU10", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU11", + "led": "N/A", + "fans": [] + }, + { + "name": "PSU12", + "led": "N/A", + "fans": [] + } + ], + "thermals": [ + { + "name": "temp_1" + }, + { + "name": "temp_2" + }, + { + "name": "temp_3(fan)" + }, + { + "name": "temp_4(fan)" + }, + { + "name": "sfm1_1(fan)" + }, + { + "name": "sfm1_2" + }, + { + "name": "sfm1_3" + }, + { + "name": "sfm1_4" + }, + { + "name": "sfm1_5" + }, + { + "name": "sfm2_1(fan)" + }, + { + "name": "sfm2_2" + }, + { + "name": "sfm2_3" + }, + { + "name": "sfm2_4" + }, + { + "name": "sfm2_5" + }, + { + "name": "sfm3_1(fan)" + }, + { + "name": "sfm3_2" + }, + { + "name": "sfm3_3" + }, + { + "name": "sfm3_4" + }, + { + "name": "sfm3_5" + }, + { + "name": "sfm4_1(fan)" + }, + { + "name": "sfm4_2" + }, + { + "name": "sfm4_3" + }, + { + "name": "sfm4_4" + }, + { + "name": "sfm4_5" + }, + { + "name": "sfm5_1(fan)" + }, + { + "name": "sfm5_2" + }, + { + "name": "sfm5_3" + }, + { + "name": "sfm5_4" + }, + { + "name": "sfm5_5" + }, + { + "name": "sfm6_1(fan)" + }, + { + "name": "sfm6_2" + }, + { + "name": "sfm6_3" + }, + { + "name": "sfm6_4" + }, + { + "name": "sfm6_5" + }, + { + "name": "sfm7_1(fan)" + }, + { + "name": "sfm7_2" + }, + { + "name": "sfm7_3" + }, + { + "name": "sfm7_4" + }, + { + "name": "sfm7_5" + }, + { + "name": "sfm8_1(fan)" + }, + { + "name": "sfm8_2" + }, + { + "name": "sfm8_3" + }, + { + "name": "sfm8_4" + }, + { + "name": "sfm8_5" + } + ], + "sfps": [ + ] + }, + "interfaces": {} +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/asic.conf b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/asic.conf new file mode 100644 index 000000000000..7d0f9b9c4782 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/asic.conf @@ -0,0 +1,18 @@ +NUM_ASIC=16 +DEV_ID_ASIC_0=nokia-bdb:1:0 +DEV_ID_ASIC_1=nokia-bdb:1:1 +DEV_ID_ASIC_2=nokia-bdb:2:0 +DEV_ID_ASIC_3=nokia-bdb:2:1 +DEV_ID_ASIC_4=nokia-bdb:3:0 +DEV_ID_ASIC_5=nokia-bdb:3:1 +DEV_ID_ASIC_6=nokia-bdb:4:0 +DEV_ID_ASIC_7=nokia-bdb:4:1 +DEV_ID_ASIC_8=nokia-bdb:5:0 +DEV_ID_ASIC_9=nokia-bdb:5:1 +DEV_ID_ASIC_10=nokia-bdb:6:0 +DEV_ID_ASIC_11=nokia-bdb:6:1 +DEV_ID_ASIC_12=nokia-bdb:7:0 +DEV_ID_ASIC_13=nokia-bdb:7:1 +DEV_ID_ASIC_14=nokia-bdb:8:0 +DEV_ID_ASIC_15=nokia-bdb:8:1 + diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/chassisdb.conf b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/chassisdb.conf new file mode 100644 index 000000000000..26fefcd1827f --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/chassisdb.conf @@ -0,0 +1,4 @@ +start_chassis_db=1 +chassis_db_address=10.0.5.16 +lag_id_start=1 +lag_id_end=512 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/default_sku b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/default_sku new file mode 100644 index 000000000000..41c4fc890130 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/default_sku @@ -0,0 +1 @@ +Nokia-IXR7250E-SUP-10 empty diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/installer.conf b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/installer.conf new file mode 100644 index 000000000000..21bc03a020bc --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/installer.conf @@ -0,0 +1,4 @@ +CONSOLE_PORT=0x3f8 +CONSOLE_DEV=0 +CONSOLE_SPEED=115200 +ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="amd_iommu=off pci=resource_alignment=26@00:01.4" \ No newline at end of file diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pcie.yaml b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pcie.yaml new file mode 100644 index 000000000000..7d587abbdab8 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pcie.yaml @@ -0,0 +1,210 @@ +- bus: '00' + dev: '00' + fn: '0' + id: '1450' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Root Complex' +- bus: '00' + dev: '00' + fn: '2' + id: '1451' + name: 'IOMMU: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) I/O Memory Management Unit' +- bus: '00' + dev: '01' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '01' + fn: '2' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '01' + fn: '3' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '01' + fn: '4' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '01' + fn: '5' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '02' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '03' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '03' + fn: '2' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '03' + fn: '3' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '03' + fn: '4' + id: '1453' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe GPP Bridge' +- bus: '00' + dev: '04' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '07' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '07' + fn: '1' + id: '1454' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B' +- bus: '00' + dev: '08' + fn: '0' + id: '1452' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge' +- bus: '00' + dev: '08' + fn: '1' + id: '1454' + name: 'PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Internal PCIe GPP Bridge 0 to Bus B' +- bus: '00' + dev: '14' + fn: '0' + id: '790b' + name: 'SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 59)' +- bus: '00' + dev: '14' + fn: '3' + id: 790e' + name: 'ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)' +- bus: '00' + dev: '18' + fn: '0' + id: '1460' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 0' +- bus: '00' + dev: '18' + fn: '1' + id: '1461' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 1' +- bus: '00' + dev: '18' + fn: '2' + id: '1462' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 2' +- bus: '00' + dev: '18' + fn: '3' + id: '1463' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 3' +- bus: '00' + dev: '18' + fn: '4' + id: '1464' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 4' +- bus: '00' + dev: '18' + fn: '5' + id: '1465' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 5' +- bus: '00' + dev: '18' + fn: '6' + id: '1466' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 6' +- bus: '00' + dev: '18' + fn: '7 ' + id: '1467' + name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Data Fabric: Device 18h; Function 7' +- bus: '01' + dev: '00' + fn: '0' + id: '0025' + name: 'Unassigned class [ff00]: Alcatel Device 0025 (rev 35)' +- bus: '03' + dev: '00' + fn: '0' + id: '157b' + name: 'Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)' +- bus: '04' + dev: '00' + fn: '0' + id: '8454' + name: 'Ethernet controller: Broadcom Limited Device 8454 (rev 01)' +- bus: '04' + dev: '00' + fn: '1' + id: '8454' + name: 'Ethernet controller: Broadcom Limited Device 8454 (rev 01)' +- bus: '08' + dev: '00' + fn: '0' + id: '145a' + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Raven/Raven2 PCIe Dummy Function' +- bus: '08' + dev: '00' + fn: '2' + id: '1456' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) Platform Security Processor' +- bus: '08' + dev: '00' + fn: '3' + id: '145f' + name: 'USB controller: Advanced Micro Devices, Inc. [AMD] Zeppelin USB 3.0 Host controller' +- bus: '09' + dev: '00' + fn: '0' + id: '1455' + name: 'Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Renoir PCIe Dummy Function' +- bus: '09' + dev: '00' + fn: '1' + id: '1468' + name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Zeppelin Cryptographic Coprocessor NTBCCP' +- bus: '09' + dev: '00' + fn: '2' + id: '7901' + name: 'SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)' +- bus: '09' + dev: '00' + fn: '3' + id: '1457' + name: 'Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller' +- bus: '09' + dev: '00' + fn: '4' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1458' +- bus: '09' + dev: '00' + fn: '5' + id: '1458' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1458' +- bus: '09' + dev: '00' + fn: '6' + id: '1459' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1459' +- bus: '09' + dev: '00' + fn: '7' + id: '1459' + name: 'Ethernet controller: Advanced Micro Devices, Inc. [AMD] Device 1459' diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_env.conf b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_env.conf new file mode 100644 index 000000000000..d4a267afb984 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_env.conf @@ -0,0 +1,4 @@ +usemsi=1 +dmasize=128M +default_mtu=9100 +supervisor=1 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_ndk.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_ndk.json new file mode 100644 index 000000000000..db906ccff28a --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_ndk.json @@ -0,0 +1,24 @@ +{ + "options": [ + { + "key": "midplane_subnet", + "stringval": "10.0.5.0" + }, + { + "key": "midplane_monitor", + "stringval": "yes" + }, + { + "key": "monitor_action", + "stringval": "warn" + }, + { + "key": "sonic_bdb_mode", + "intval": 1 + }, + { + "intval": 1, + "key": "disable_vfio" + } + ] +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot new file mode 100755 index 000000000000..65cba5185eb1 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/platform_reboot @@ -0,0 +1,9 @@ +#!/bin/bash + +systemctl stop nokia-watchdog.service +sleep 2 +echo "w" > /dev/watchdog +kick_date=`date -u` +echo "last watchdog kick $kick_date" > /var/log/nokia-watchdog-last.log +sync +/sbin/reboot diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/plugins/__init__.py b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/plugins/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pmon_daemon_control.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pmon_daemon_control.json new file mode 100644 index 000000000000..f4e27b89854c --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/pmon_daemon_control.json @@ -0,0 +1,4 @@ +{ + "skip_ledd": true, + "skip_xcvrd": true +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/system_health_monitoring_config.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..8309b1dcc8ae --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/system_health_monitoring_config.json @@ -0,0 +1,13 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": [ + "asic" + ], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "red", + "normal": "green", + "booting": "amber" + } +} diff --git a/device/nokia/x86_64-nokia_ixr7250e_sup-r0/thermal_policy.json b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/thermal_policy.json new file mode 100644 index 000000000000..8313ab148ce3 --- /dev/null +++ b/device/nokia/x86_64-nokia_ixr7250e_sup-r0/thermal_policy.json @@ -0,0 +1,63 @@ +{ + "thermal_control_algorithm": { + "run_at_boot_up": "false" + }, + "info_types": [ + { + "type": "thermal_info" + }, + { + "type": "chassis_info" + }, + { + "type": "fan_info" + } + ], + "policies": [ + { + "name": "pusblish thermal to platform", + "conditions": [ + { + "type": "thermal.chassis.collect" + } + ], + "actions": [ + { + "type": "thermal.platform.publish" + } + ] + }, + { + "name": "override platform fan-algo", + "conditions": [ + { + "type": "fan.platform_algorithm.override" + } + ], + "actions": [ + { + "type": "fan.all.disable_algorithm", + "status": "true" + }, + { + "type": "fan.all.set_speed", + "speed": "100" + } + ] + }, + { + "name": "default platform fan-algo", + "conditions": [ + { + "type": "fan.platform_algorithm.allow" + } + ], + "actions": [ + { + "type": "fan.all.disable_algorithm", + "status": "false" + } + ] + } + ] +} diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/port_config.ini b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/port_config.ini new file mode 100644 index 000000000000..38a55bd9e63e --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/port_config.ini @@ -0,0 +1,65 @@ +# name lanes alias index speed +Ethernet1 9,10,11,12 hundredGigE1 0 100000 +Ethernet2 13,14,15,16 hundredGigE2 1 100000 +Ethernet3 25,26,27,28 hundredGigE3 2 100000 +Ethernet4 29,30,31,32 hundredGigE4 3 100000 +Ethernet5 41,42,43,44 hundredGigE5 4 100000 +Ethernet6 45,46,47,48 hundredGigE6 5 100000 +Ethernet7 57,58,59,60 hundredGigE7 6 100000 +Ethernet8 61,62,63,64 hundredGigE8 7 100000 +Ethernet9 73,74,75,76 hundredGigE9 8 100000 +Ethernet10 77,78,79,80 hundredGigE10 9 100000 +Ethernet11 89,90,91,92 hundredGigE11 10 100000 +Ethernet12 93,94,95,96 hundredGigE12 11 100000 +Ethernet13 105,106,107,108 hundredGigE13 12 100000 +Ethernet14 109,110,111,112 hundredGigE14 13 100000 +Ethernet15 121,122,123,124 hundredGigE15 14 100000 +Ethernet16 125,126,127,128 hundredGigE16 15 100000 +Ethernet17 137,138,139,140 hundredGigE17 16 100000 +Ethernet18 141,142,143,144 hundredGigE18 17 100000 +Ethernet19 153,154,155,156 hundredGigE19 18 100000 +Ethernet20 157,158,159,160 hundredGigE20 19 100000 +Ethernet21 169,170,171,172 hundredGigE21 20 100000 +Ethernet22 173,174,175,176 hundredGigE22 21 100000 +Ethernet23 185,186,187,188 hundredGigE23 22 100000 +Ethernet24 189,190,191,192 hundredGigE24 23 100000 +Ethernet25 201,202,203,204 hundredGigE25 24 100000 +Ethernet26 205,206,207,208 hundredGigE26 25 100000 +Ethernet27 217,218,219,220 hundredGigE27 26 100000 +Ethernet28 221,222,223,224 hundredGigE28 27 100000 +Ethernet29 233,234,235,236 hundredGigE29 28 100000 +Ethernet30 237,238,239,240 hundredGigE30 29 100000 +Ethernet31 249,250,251,252 hundredGigE31 30 100000 +Ethernet32 253,254,255,256 hundredGigE32 31 100000 +Ethernet33 1,2,3,4 hundredGigE33 32 100000 +Ethernet34 5,6,7,8 hundredGigE34 33 100000 +Ethernet35 17,18,19,20 hundredGigE35 34 100000 +Ethernet36 21,22,23,24 hundredGigE36 35 100000 +Ethernet37 33,34,35,36 hundredGigE37 36 100000 +Ethernet38 37,38,39,40 hundredGigE38 37 100000 +Ethernet39 49,50,51,52 hundredGigE39 38 100000 +Ethernet40 53,54,55,56 hundredGigE40 39 100000 +Ethernet41 65,66,67,68 hundredGigE41 40 100000 +Ethernet42 69,70,71,72 hundredGigE42 41 100000 +Ethernet43 81,82,83,84 hundredGigE43 42 100000 +Ethernet44 85,86,87,88 hundredGigE44 43 100000 +Ethernet45 97,98,99,100 hundredGigE45 44 100000 +Ethernet46 101,102,103,104 hundredGigE46 45 100000 +Ethernet47 113,114,115,116 hundredGigE47 46 100000 +Ethernet48 117,118,119,120 hundredGigE48 47 100000 +Ethernet49 129,130,131,132 hundredGigE49 48 100000 +Ethernet50 133,134,135,136 hundredGigE50 49 100000 +Ethernet51 145,146,147,148 hundredGigE51 50 100000 +Ethernet52 149,150,151,152 hundredGigE52 51 100000 +Ethernet53 161,162,163,164 hundredGigE53 52 100000 +Ethernet54 165,166,167,168 hundredGigE54 53 100000 +Ethernet55 177,178,179,180 hundredGigE55 54 100000 +Ethernet56 181,182,183,184 hundredGigE56 55 100000 +Ethernet57 193,194,195,196 hundredGigE57 56 100000 +Ethernet58 197,198,199,200 hundredGigE58 57 100000 +Ethernet59 209,210,211,212 hundredGigE59 58 100000 +Ethernet60 213,214,215,216 hundredGigE60 59 100000 +Ethernet61 225,226,227,228 hundredGigE61 60 100000 +Ethernet62 229,230,231,232 hundredGigE62 61 100000 +Ethernet63 241,242,243,244 hundredGigE63 62 100000 +Ethernet64 245,246,247,248 hundredGigE64 63 100000 \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/sai.profile b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/sai.profile new file mode 100644 index 000000000000..3e996d3bea3e --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/th2-ra-b6910-64c-64x100G.config.bcm diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/th2-ra-b6910-64c-64x100G.config.bcm b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/th2-ra-b6910-64c-64x100G.config.bcm new file mode 100644 index 000000000000..787c851bcc2e --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/RA-B6910-64C/th2-ra-b6910-64c-64x100G.config.bcm @@ -0,0 +1,976 @@ +core_clock_frequency=1700 +dpp_clock_ratio=2:3 +table_dma_enable=1 +tslam_dma_enable=1 +tdma_intr_enable=0 +tslam_intr_enable=0 +miim_intr_enable=0 +portmap_1=9:100 +#portmap_2=10:25:i +#portmap_3=11:25:i +#portmap_4=12:25:i +portmap_5=13:100 +#portmap_6=14:25:i +#portmap_7=15:25:i +#portmap_8=16:25:i +portmap_9=1:100 +#portmap_10=2:25:i +#portmap_11=3:25:i +#portmap_12=4:25:i +portmap_13=5:100 +#portmap_14=6:25:i +#portmap_15=7:25:i +#portmap_16=8:25:i +portmap_17=25:100 +#portmap_18=26:25:i +#portmap_19=27:25:i +#portmap_20=28:25:i +portmap_21=29:100 +portmap_22=17:100 +portmap_23=21:100 +portmap_24=41:100 +portmap_25=45:100 +portmap_26=33:100 +portmap_27=37:100 +portmap_28=57:100 +portmap_29=61:100 +portmap_30=49:100 +portmap_31=53:100 + +portmap_34=73:100 +#portmap_35=74:25:i +#portmap_36=75:25:i +#portmap_37=76:25:i +portmap_38=77:100 +#portmap_39=78:25:i +#portmap_40=79:25:i +#portmap_41=80:25:i +portmap_42=65:100 +#portmap_43=66:25:i +#portmap_44=67:25:i +#portmap_45=68:25:i +portmap_46=69:100 +#portmap_47=70:25:i +#portmap_48=71:25:i +#portmap_49=72:25:i +portmap_50=89:100 +#portmap_51=90:25:i +#portmap_52=91:25:i +#portmap_53=92:25:i +portmap_54=93:100 +portmap_55=81:100 +portmap_56=85:100 +portmap_57=105:100 +portmap_58=109:100 +portmap_59=97:100 +portmap_60=101:100 +portmap_61=121:100 +portmap_62=125:100 +portmap_63=113:100 +portmap_64=117:100 + +portmap_68=137:100 +#portmap_69=138:25:i +#portmap_70=139:25:i +#portmap_71=140:25:i +portmap_72=141:100 +#portmap_73=142:25:i +#portmap_74=143:25:i +#portmap_75=144:25:i +portmap_76=129:100 +#portmap_77=130:25:i +#portmap_78=131:25:i +#portmap_79=132:25:i +portmap_80=133:100 +#portmap_81=134:25:i +#portmap_82=135:25:i +#portmap_83=136:25:i +portmap_84=153:100 +#portmap_85=154:25:i +#portmap_86=155:25:i +#portmap_87=156:25:i +portmap_88=157:100 +portmap_89=145:100 +portmap_90=149:100 +portmap_91=169:100 +portmap_92=173:100 +portmap_93=161:100 +portmap_94=165:100 +portmap_95=185:100 +portmap_96=189:100 +portmap_97=177:100 +portmap_98=181:100 + +portmap_102=201:100 +#portmap_103=202:25:i +#portmap_104=203:25:i +#portmap_105=204:25:i +portmap_106=205:100 +#portmap_107=206:25:i +#portmap_108=207:25:i +#portmap_109=208:25:i +portmap_110=193:100 +#portmap_111=194:25:i +#portmap_112=195:25:i +#portmap_113=196:25:i +portmap_114=197:100 +#portmap_115=198:25:i +#portmap_116=199:25:i +#portmap_117=200:25:i +portmap_118=217:100 +#portmap_119=218:25:i +#portmap_120=219:25:i +#portmap_121=220:25:i +portmap_122=221:100 +portmap_123=209:100 +portmap_124=213:100 +portmap_125=233:100 +portmap_126=237:100 +portmap_127=225:100 +portmap_128=229:100 +portmap_129=249:100 +portmap_130=253:100 +portmap_131=241:100 +portmap_132=245:100 + +pbmp_xport_xe=0x3ffc444447ff111113ffc44444ffe22222 +oversubscribe_mode=1 + +port_flex_enable=1 +#L2/L3 only use dedicated table (8K) each +#FPEM occupy 2 banks +#fpem_mem_entries=65536 +l3_mem_entries=49152 +l2_mem_entries=32768 +l3_alpm_enable=2 +ipv6_lpm_128b_enable=1 + +l2xmsg_mode=0 + +phy_chain_tx_lane_map_physical{1.0}=0x0213 +phy_chain_tx_lane_map_physical{5.0}=0x0123 +phy_chain_tx_lane_map_physical{9.0}=0x2130 +phy_chain_tx_lane_map_physical{13.0}=0x3012 +phy_chain_tx_lane_map_physical{17.0}=0x0213 +phy_chain_tx_lane_map_physical{21.0}=0x1203 +phy_chain_tx_lane_map_physical{25.0}=0x2130 +phy_chain_tx_lane_map_physical{29.0}=0x1230 +phy_chain_tx_lane_map_physical{33.0}=0x1302 +phy_chain_tx_lane_map_physical{37.0}=0x1203 +phy_chain_tx_lane_map_physical{41.0}=0x1302 +phy_chain_tx_lane_map_physical{45.0}=0x3021 +phy_chain_tx_lane_map_physical{49.0}=0x3012 +phy_chain_tx_lane_map_physical{53.0}=0x1302 +phy_chain_tx_lane_map_physical{57.0}=0x0213 +phy_chain_tx_lane_map_physical{61.0}=0x3021 +phy_chain_tx_lane_map_physical{65.0}=0x3012 +phy_chain_tx_lane_map_physical{69.0}=0x0213 +phy_chain_tx_lane_map_physical{73.0}=0x1302 +phy_chain_tx_lane_map_physical{77.0}=0x3021 +phy_chain_tx_lane_map_physical{81.0}=0x3012 +phy_chain_tx_lane_map_physical{85.0}=0x1302 +phy_chain_tx_lane_map_physical{89.0}=0x0213 +phy_chain_tx_lane_map_physical{93.0}=0x3021 +phy_chain_tx_lane_map_physical{97.0}=0x3012 +phy_chain_tx_lane_map_physical{101.0}=0x3120 +phy_chain_tx_lane_map_physical{105.0}=0x3210 +phy_chain_tx_lane_map_physical{109.0}=0x0213 +phy_chain_tx_lane_map_physical{113.0}=0x1230 +phy_chain_tx_lane_map_physical{117.0}=0x3120 +phy_chain_tx_lane_map_physical{121.0}=0x0321 +phy_chain_tx_lane_map_physical{125.0}=0x0213 +phy_chain_tx_lane_map_physical{129.0}=0x2103 +phy_chain_tx_lane_map_physical{133.0}=0x1302 +phy_chain_tx_lane_map_physical{137.0}=0x1230 +phy_chain_tx_lane_map_physical{141.0}=0x3120 +phy_chain_tx_lane_map_physical{145.0}=0x2103 +phy_chain_tx_lane_map_physical{149.0}=0x0213 +phy_chain_tx_lane_map_physical{153.0}=0x0123 +phy_chain_tx_lane_map_physical{157.0}=0x2103 +phy_chain_tx_lane_map_physical{161.0}=0x3012 +phy_chain_tx_lane_map_physical{165.0}=0x3210 +phy_chain_tx_lane_map_physical{169.0}=0x2031 +phy_chain_tx_lane_map_physical{173.0}=0x1230 +phy_chain_tx_lane_map_physical{177.0}=0x3012 +phy_chain_tx_lane_map_physical{181.0}=0x1032 +phy_chain_tx_lane_map_physical{185.0}=0x3120 +phy_chain_tx_lane_map_physical{189.0}=0x2103 +phy_chain_tx_lane_map_physical{193.0}=0x3012 +phy_chain_tx_lane_map_physical{197.0}=0x3210 +phy_chain_tx_lane_map_physical{201.0}=0x2031 +phy_chain_tx_lane_map_physical{205.0}=0x2103 +phy_chain_tx_lane_map_physical{209.0}=0x3012 +phy_chain_tx_lane_map_physical{213.0}=0x1032 +phy_chain_tx_lane_map_physical{217.0}=0x3120 +phy_chain_tx_lane_map_physical{221.0}=0x0213 +phy_chain_tx_lane_map_physical{225.0}=0x3120 +phy_chain_tx_lane_map_physical{229.0}=0x2031 +phy_chain_tx_lane_map_physical{233.0}=0x1203 +phy_chain_tx_lane_map_physical{237.0}=0x3210 +phy_chain_tx_lane_map_physical{241.0}=0x3021 +phy_chain_tx_lane_map_physical{245.0}=0x2031 +phy_chain_tx_lane_map_physical{249.0}=0x0213 +phy_chain_tx_lane_map_physical{253.0}=0x2103 + +phy_chain_rx_lane_map_physical{1.0}=0x2301 +phy_chain_rx_lane_map_physical{5.0}=0x1032 +phy_chain_rx_lane_map_physical{9.0}=0x2103 +phy_chain_rx_lane_map_physical{13.0}=0x2301 +phy_chain_rx_lane_map_physical{17.0}=0x1032 +phy_chain_rx_lane_map_physical{21.0}=0x2031 +phy_chain_rx_lane_map_physical{25.0}=0x0321 +phy_chain_rx_lane_map_physical{29.0}=0x1032 +phy_chain_rx_lane_map_physical{33.0}=0x3102 +phy_chain_rx_lane_map_physical{37.0}=0x3102 +phy_chain_rx_lane_map_physical{41.0}=0x2130 +phy_chain_rx_lane_map_physical{45.0}=0x2031 +phy_chain_rx_lane_map_physical{49.0}=0x3102 +phy_chain_rx_lane_map_physical{53.0}=0x0231 +phy_chain_rx_lane_map_physical{57.0}=0x3021 +phy_chain_rx_lane_map_physical{61.0}=0x2031 +phy_chain_rx_lane_map_physical{65.0}=0x3102 +phy_chain_rx_lane_map_physical{69.0}=0x3102 +phy_chain_rx_lane_map_physical{73.0}=0x2130 +phy_chain_rx_lane_map_physical{77.0}=0x2031 +phy_chain_rx_lane_map_physical{81.0}=0x3102 +phy_chain_rx_lane_map_physical{85.0}=0x0231 +phy_chain_rx_lane_map_physical{89.0}=0x3021 +phy_chain_rx_lane_map_physical{93.0}=0x2031 +phy_chain_rx_lane_map_physical{97.0}=0x0231 +phy_chain_rx_lane_map_physical{101.0}=0x0132 +phy_chain_rx_lane_map_physical{105.0}=0x3012 +phy_chain_rx_lane_map_physical{109.0}=0x3210 +phy_chain_rx_lane_map_physical{113.0}=0x2301 +phy_chain_rx_lane_map_physical{117.0}=0x1023 +phy_chain_rx_lane_map_physical{121.0}=0x0321 +phy_chain_rx_lane_map_physical{125.0}=0x2310 +phy_chain_rx_lane_map_physical{129.0}=0x2301 +phy_chain_rx_lane_map_physical{133.0}=0x2310 +phy_chain_rx_lane_map_physical{137.0}=0x2103 +phy_chain_rx_lane_map_physical{141.0}=0x2310 +phy_chain_rx_lane_map_physical{145.0}=0x2301 +phy_chain_rx_lane_map_physical{149.0}=0x1023 +phy_chain_rx_lane_map_physical{153.0}=0x2103 +phy_chain_rx_lane_map_physical{157.0}=0x0213 +phy_chain_rx_lane_map_physical{161.0}=0x0231 +phy_chain_rx_lane_map_physical{165.0}=0x0231 +phy_chain_rx_lane_map_physical{169.0}=0x0132 +phy_chain_rx_lane_map_physical{173.0}=0x0213 +phy_chain_rx_lane_map_physical{177.0}=0x0231 +phy_chain_rx_lane_map_physical{181.0}=0x3102 +phy_chain_rx_lane_map_physical{185.0}=0x3201 +phy_chain_rx_lane_map_physical{189.0}=0x0213 +phy_chain_rx_lane_map_physical{193.0}=0x0231 +phy_chain_rx_lane_map_physical{197.0}=0x0231 +phy_chain_rx_lane_map_physical{201.0}=0x0132 +phy_chain_rx_lane_map_physical{205.0}=0x0213 +phy_chain_rx_lane_map_physical{209.0}=0x0231 +phy_chain_rx_lane_map_physical{213.0}=0x3102 +phy_chain_rx_lane_map_physical{217.0}=0x3201 +phy_chain_rx_lane_map_physical{221.0}=0x0213 +phy_chain_rx_lane_map_physical{225.0}=0x0213 +phy_chain_rx_lane_map_physical{229.0}=0x0123 +phy_chain_rx_lane_map_physical{233.0}=0x3012 +phy_chain_rx_lane_map_physical{237.0}=0x3210 +phy_chain_rx_lane_map_physical{241.0}=0x2301 +phy_chain_rx_lane_map_physical{245.0}=0x0123 +phy_chain_rx_lane_map_physical{249.0}=0x1320 +phy_chain_rx_lane_map_physical{253.0}=0x2301 + + +phy_chain_rx_polarity_flip_physical{1.0}=0x0 +phy_chain_rx_polarity_flip_physical{2.0}=0x1 +phy_chain_rx_polarity_flip_physical{3.0}=0x0 +phy_chain_rx_polarity_flip_physical{4.0}=0x1 +phy_chain_rx_polarity_flip_physical{5.0}=0x1 +phy_chain_rx_polarity_flip_physical{6.0}=0x0 +phy_chain_rx_polarity_flip_physical{7.0}=0x1 +phy_chain_rx_polarity_flip_physical{8.0}=0x0 +phy_chain_rx_polarity_flip_physical{9.0}=0x1 +phy_chain_rx_polarity_flip_physical{10.0}=0x0 +phy_chain_rx_polarity_flip_physical{11.0}=0x1 +phy_chain_rx_polarity_flip_physical{12.0}=0x0 +phy_chain_rx_polarity_flip_physical{13.0}=0x1 +phy_chain_rx_polarity_flip_physical{14.0}=0x0 +phy_chain_rx_polarity_flip_physical{15.0}=0x1 +phy_chain_rx_polarity_flip_physical{16.0}=0x0 +phy_chain_rx_polarity_flip_physical{17.0}=0x1 +phy_chain_rx_polarity_flip_physical{18.0}=0x0 +phy_chain_rx_polarity_flip_physical{19.0}=0x1 +phy_chain_rx_polarity_flip_physical{20.0}=0x0 +phy_chain_rx_polarity_flip_physical{21.0}=0x0 +phy_chain_rx_polarity_flip_physical{22.0}=0x0 +phy_chain_rx_polarity_flip_physical{23.0}=0x1 +phy_chain_rx_polarity_flip_physical{24.0}=0x1 +phy_chain_rx_polarity_flip_physical{25.0}=0x0 +phy_chain_rx_polarity_flip_physical{26.0}=0x0 +phy_chain_rx_polarity_flip_physical{27.0}=0x1 +phy_chain_rx_polarity_flip_physical{28.0}=0x1 +phy_chain_rx_polarity_flip_physical{29.0}=0x1 +phy_chain_rx_polarity_flip_physical{30.0}=0x1 +phy_chain_rx_polarity_flip_physical{31.0}=0x1 +phy_chain_rx_polarity_flip_physical{32.0}=0x0 +phy_chain_rx_polarity_flip_physical{33.0}=0x0 +phy_chain_rx_polarity_flip_physical{34.0}=0x0 +phy_chain_rx_polarity_flip_physical{35.0}=0x1 +phy_chain_rx_polarity_flip_physical{36.0}=0x1 +phy_chain_rx_polarity_flip_physical{37.0}=0x1 +phy_chain_rx_polarity_flip_physical{38.0}=0x1 +phy_chain_rx_polarity_flip_physical{39.0}=0x0 +phy_chain_rx_polarity_flip_physical{40.0}=0x0 +phy_chain_rx_polarity_flip_physical{41.0}=0x1 +phy_chain_rx_polarity_flip_physical{42.0}=0x0 +phy_chain_rx_polarity_flip_physical{43.0}=0x0 +phy_chain_rx_polarity_flip_physical{44.0}=0x1 +phy_chain_rx_polarity_flip_physical{45.0}=0x1 +phy_chain_rx_polarity_flip_physical{46.0}=0x1 +phy_chain_rx_polarity_flip_physical{47.0}=0x0 +phy_chain_rx_polarity_flip_physical{48.0}=0x0 +phy_chain_rx_polarity_flip_physical{49.0}=0x0 +phy_chain_rx_polarity_flip_physical{50.0}=0x0 +phy_chain_rx_polarity_flip_physical{51.0}=0x1 +phy_chain_rx_polarity_flip_physical{52.0}=0x1 +phy_chain_rx_polarity_flip_physical{53.0}=0x0 +phy_chain_rx_polarity_flip_physical{54.0}=0x0 +phy_chain_rx_polarity_flip_physical{55.0}=0x1 +phy_chain_rx_polarity_flip_physical{56.0}=0x1 +phy_chain_rx_polarity_flip_physical{57.0}=0x0 +phy_chain_rx_polarity_flip_physical{58.0}=0x1 +phy_chain_rx_polarity_flip_physical{59.0}=0x1 +phy_chain_rx_polarity_flip_physical{60.0}=0x0 +phy_chain_rx_polarity_flip_physical{61.0}=0x1 +phy_chain_rx_polarity_flip_physical{62.0}=0x1 +phy_chain_rx_polarity_flip_physical{63.0}=0x0 +phy_chain_rx_polarity_flip_physical{64.0}=0x0 +phy_chain_rx_polarity_flip_physical{65.0}=0x0 +phy_chain_rx_polarity_flip_physical{66.0}=0x0 +phy_chain_rx_polarity_flip_physical{67.0}=0x1 +phy_chain_rx_polarity_flip_physical{68.0}=0x1 +phy_chain_rx_polarity_flip_physical{69.0}=0x1 +phy_chain_rx_polarity_flip_physical{70.0}=0x1 +phy_chain_rx_polarity_flip_physical{71.0}=0x0 +phy_chain_rx_polarity_flip_physical{72.0}=0x0 +phy_chain_rx_polarity_flip_physical{73.0}=0x1 +phy_chain_rx_polarity_flip_physical{74.0}=0x0 +phy_chain_rx_polarity_flip_physical{75.0}=0x0 +phy_chain_rx_polarity_flip_physical{76.0}=0x1 +phy_chain_rx_polarity_flip_physical{77.0}=0x1 +phy_chain_rx_polarity_flip_physical{78.0}=0x1 +phy_chain_rx_polarity_flip_physical{79.0}=0x0 +phy_chain_rx_polarity_flip_physical{80.0}=0x0 +phy_chain_rx_polarity_flip_physical{81.0}=0x0 +phy_chain_rx_polarity_flip_physical{82.0}=0x0 +phy_chain_rx_polarity_flip_physical{83.0}=0x1 +phy_chain_rx_polarity_flip_physical{84.0}=0x1 +phy_chain_rx_polarity_flip_physical{85.0}=0x0 +phy_chain_rx_polarity_flip_physical{86.0}=0x0 +phy_chain_rx_polarity_flip_physical{87.0}=0x1 +phy_chain_rx_polarity_flip_physical{88.0}=0x1 +phy_chain_rx_polarity_flip_physical{89.0}=0x0 +phy_chain_rx_polarity_flip_physical{90.0}=0x1 +phy_chain_rx_polarity_flip_physical{91.0}=0x1 +phy_chain_rx_polarity_flip_physical{92.0}=0x0 +phy_chain_rx_polarity_flip_physical{93.0}=0x1 +phy_chain_rx_polarity_flip_physical{94.0}=0x1 +phy_chain_rx_polarity_flip_physical{95.0}=0x0 +phy_chain_rx_polarity_flip_physical{96.0}=0x0 +phy_chain_rx_polarity_flip_physical{97.0}=0x1 +phy_chain_rx_polarity_flip_physical{98.0}=0x1 +phy_chain_rx_polarity_flip_physical{99.0}=0x0 +phy_chain_rx_polarity_flip_physical{100.0}=0x0 +phy_chain_rx_polarity_flip_physical{101.0}=0x0 +phy_chain_rx_polarity_flip_physical{102.0}=0x1 +phy_chain_rx_polarity_flip_physical{103.0}=0x1 +phy_chain_rx_polarity_flip_physical{104.0}=0x0 +phy_chain_rx_polarity_flip_physical{105.0}=0x1 +phy_chain_rx_polarity_flip_physical{106.0}=0x1 +phy_chain_rx_polarity_flip_physical{107.0}=0x0 +phy_chain_rx_polarity_flip_physical{108.0}=0x1 +phy_chain_rx_polarity_flip_physical{109.0}=0x1 +phy_chain_rx_polarity_flip_physical{110.0}=0x0 +phy_chain_rx_polarity_flip_physical{111.0}=0x1 +phy_chain_rx_polarity_flip_physical{112.0}=0x0 +phy_chain_rx_polarity_flip_physical{113.0}=0x1 +phy_chain_rx_polarity_flip_physical{114.0}=0x0 +phy_chain_rx_polarity_flip_physical{115.0}=0x1 +phy_chain_rx_polarity_flip_physical{116.0}=0x0 +phy_chain_rx_polarity_flip_physical{117.0}=0x1 +phy_chain_rx_polarity_flip_physical{118.0}=0x0 +phy_chain_rx_polarity_flip_physical{119.0}=0x0 +phy_chain_rx_polarity_flip_physical{120.0}=0x1 +phy_chain_rx_polarity_flip_physical{121.0}=0x0 +phy_chain_rx_polarity_flip_physical{122.0}=0x1 +phy_chain_rx_polarity_flip_physical{123.0}=0x0 +phy_chain_rx_polarity_flip_physical{124.0}=0x1 +phy_chain_rx_polarity_flip_physical{125.0}=0x1 +phy_chain_rx_polarity_flip_physical{126.0}=0x0 +phy_chain_rx_polarity_flip_physical{127.0}=0x0 +phy_chain_rx_polarity_flip_physical{128.0}=0x1 +phy_chain_rx_polarity_flip_physical{129.0}=0x0 +phy_chain_rx_polarity_flip_physical{130.0}=0x1 +phy_chain_rx_polarity_flip_physical{131.0}=0x0 +phy_chain_rx_polarity_flip_physical{132.0}=0x1 +phy_chain_rx_polarity_flip_physical{133.0}=0x1 +phy_chain_rx_polarity_flip_physical{134.0}=0x0 +phy_chain_rx_polarity_flip_physical{135.0}=0x0 +phy_chain_rx_polarity_flip_physical{136.0}=0x1 +phy_chain_rx_polarity_flip_physical{137.0}=0x1 +phy_chain_rx_polarity_flip_physical{138.0}=0x0 +phy_chain_rx_polarity_flip_physical{139.0}=0x1 +phy_chain_rx_polarity_flip_physical{140.0}=0x0 +phy_chain_rx_polarity_flip_physical{141.0}=0x0 +phy_chain_rx_polarity_flip_physical{142.0}=0x1 +phy_chain_rx_polarity_flip_physical{143.0}=0x1 +phy_chain_rx_polarity_flip_physical{144.0}=0x0 +phy_chain_rx_polarity_flip_physical{145.0}=0x0 +phy_chain_rx_polarity_flip_physical{146.0}=0x1 +phy_chain_rx_polarity_flip_physical{147.0}=0x0 +phy_chain_rx_polarity_flip_physical{148.0}=0x1 +phy_chain_rx_polarity_flip_physical{149.0}=0x0 +phy_chain_rx_polarity_flip_physical{150.0}=0x1 +phy_chain_rx_polarity_flip_physical{151.0}=0x1 +phy_chain_rx_polarity_flip_physical{152.0}=0x0 +phy_chain_rx_polarity_flip_physical{153.0}=0x1 +phy_chain_rx_polarity_flip_physical{154.0}=0x0 +phy_chain_rx_polarity_flip_physical{155.0}=0x1 +phy_chain_rx_polarity_flip_physical{156.0}=0x0 +phy_chain_rx_polarity_flip_physical{157.0}=0x1 +phy_chain_rx_polarity_flip_physical{158.0}=0x1 +phy_chain_rx_polarity_flip_physical{159.0}=0x0 +phy_chain_rx_polarity_flip_physical{160.0}=0x0 +phy_chain_rx_polarity_flip_physical{161.0}=0x1 +phy_chain_rx_polarity_flip_physical{162.0}=0x1 +phy_chain_rx_polarity_flip_physical{163.0}=0x0 +phy_chain_rx_polarity_flip_physical{164.0}=0x0 +phy_chain_rx_polarity_flip_physical{165.0}=0x0 +phy_chain_rx_polarity_flip_physical{166.0}=0x0 +phy_chain_rx_polarity_flip_physical{167.0}=0x1 +phy_chain_rx_polarity_flip_physical{168.0}=0x1 +phy_chain_rx_polarity_flip_physical{169.0}=0x1 +phy_chain_rx_polarity_flip_physical{170.0}=0x0 +phy_chain_rx_polarity_flip_physical{171.0}=0x0 +phy_chain_rx_polarity_flip_physical{172.0}=0x1 +phy_chain_rx_polarity_flip_physical{173.0}=0x1 +phy_chain_rx_polarity_flip_physical{174.0}=0x1 +phy_chain_rx_polarity_flip_physical{175.0}=0x0 +phy_chain_rx_polarity_flip_physical{176.0}=0x0 +phy_chain_rx_polarity_flip_physical{177.0}=0x1 +phy_chain_rx_polarity_flip_physical{178.0}=0x1 +phy_chain_rx_polarity_flip_physical{179.0}=0x0 +phy_chain_rx_polarity_flip_physical{180.0}=0x0 +phy_chain_rx_polarity_flip_physical{181.0}=0x1 +phy_chain_rx_polarity_flip_physical{182.0}=0x1 +phy_chain_rx_polarity_flip_physical{183.0}=0x0 +phy_chain_rx_polarity_flip_physical{184.0}=0x0 +phy_chain_rx_polarity_flip_physical{185.0}=0x0 +phy_chain_rx_polarity_flip_physical{186.0}=0x1 +phy_chain_rx_polarity_flip_physical{187.0}=0x1 +phy_chain_rx_polarity_flip_physical{188.0}=0x0 +phy_chain_rx_polarity_flip_physical{189.0}=0x1 +phy_chain_rx_polarity_flip_physical{190.0}=0x1 +phy_chain_rx_polarity_flip_physical{191.0}=0x0 +phy_chain_rx_polarity_flip_physical{192.0}=0x0 +phy_chain_rx_polarity_flip_physical{193.0}=0x1 +phy_chain_rx_polarity_flip_physical{194.0}=0x1 +phy_chain_rx_polarity_flip_physical{195.0}=0x0 +phy_chain_rx_polarity_flip_physical{196.0}=0x0 +phy_chain_rx_polarity_flip_physical{197.0}=0x0 +phy_chain_rx_polarity_flip_physical{198.0}=0x0 +phy_chain_rx_polarity_flip_physical{199.0}=0x1 +phy_chain_rx_polarity_flip_physical{200.0}=0x1 +phy_chain_rx_polarity_flip_physical{201.0}=0x1 +phy_chain_rx_polarity_flip_physical{202.0}=0x0 +phy_chain_rx_polarity_flip_physical{203.0}=0x0 +phy_chain_rx_polarity_flip_physical{204.0}=0x1 +phy_chain_rx_polarity_flip_physical{205.0}=0x1 +phy_chain_rx_polarity_flip_physical{206.0}=0x1 +phy_chain_rx_polarity_flip_physical{207.0}=0x0 +phy_chain_rx_polarity_flip_physical{208.0}=0x0 +phy_chain_rx_polarity_flip_physical{209.0}=0x1 +phy_chain_rx_polarity_flip_physical{210.0}=0x1 +phy_chain_rx_polarity_flip_physical{211.0}=0x0 +phy_chain_rx_polarity_flip_physical{212.0}=0x0 +phy_chain_rx_polarity_flip_physical{213.0}=0x1 +phy_chain_rx_polarity_flip_physical{214.0}=0x1 +phy_chain_rx_polarity_flip_physical{215.0}=0x0 +phy_chain_rx_polarity_flip_physical{216.0}=0x0 +phy_chain_rx_polarity_flip_physical{217.0}=0x0 +phy_chain_rx_polarity_flip_physical{218.0}=0x1 +phy_chain_rx_polarity_flip_physical{219.0}=0x1 +phy_chain_rx_polarity_flip_physical{220.0}=0x0 +phy_chain_rx_polarity_flip_physical{221.0}=0x1 +phy_chain_rx_polarity_flip_physical{222.0}=0x1 +phy_chain_rx_polarity_flip_physical{223.0}=0x0 +phy_chain_rx_polarity_flip_physical{224.0}=0x0 +phy_chain_rx_polarity_flip_physical{225.0}=0x1 +phy_chain_rx_polarity_flip_physical{226.0}=0x1 +phy_chain_rx_polarity_flip_physical{227.0}=0x0 +phy_chain_rx_polarity_flip_physical{228.0}=0x0 +phy_chain_rx_polarity_flip_physical{229.0}=0x1 +phy_chain_rx_polarity_flip_physical{230.0}=0x0 +phy_chain_rx_polarity_flip_physical{231.0}=0x1 +phy_chain_rx_polarity_flip_physical{232.0}=0x0 +phy_chain_rx_polarity_flip_physical{233.0}=0x1 +phy_chain_rx_polarity_flip_physical{234.0}=0x0 +phy_chain_rx_polarity_flip_physical{235.0}=0x1 +phy_chain_rx_polarity_flip_physical{236.0}=0x0 +phy_chain_rx_polarity_flip_physical{237.0}=0x1 +phy_chain_rx_polarity_flip_physical{238.0}=0x0 +phy_chain_rx_polarity_flip_physical{239.0}=0x1 +phy_chain_rx_polarity_flip_physical{240.0}=0x0 +phy_chain_rx_polarity_flip_physical{241.0}=0x1 +phy_chain_rx_polarity_flip_physical{242.0}=0x0 +phy_chain_rx_polarity_flip_physical{243.0}=0x1 +phy_chain_rx_polarity_flip_physical{244.0}=0x0 +phy_chain_rx_polarity_flip_physical{245.0}=0x1 +phy_chain_rx_polarity_flip_physical{246.0}=0x0 +phy_chain_rx_polarity_flip_physical{247.0}=0x1 +phy_chain_rx_polarity_flip_physical{248.0}=0x0 +phy_chain_rx_polarity_flip_physical{249.0}=0x1 +phy_chain_rx_polarity_flip_physical{250.0}=0x1 +phy_chain_rx_polarity_flip_physical{251.0}=0x0 +phy_chain_rx_polarity_flip_physical{252.0}=0x0 +phy_chain_rx_polarity_flip_physical{253.0}=0x0 +phy_chain_rx_polarity_flip_physical{254.0}=0x1 +phy_chain_rx_polarity_flip_physical{255.0}=0x0 +phy_chain_rx_polarity_flip_physical{256.0}=0x1 + + +phy_chain_tx_polarity_flip_physical{1.0}=0x0 +phy_chain_tx_polarity_flip_physical{2.0}=0x0 +phy_chain_tx_polarity_flip_physical{3.0}=0x1 +phy_chain_tx_polarity_flip_physical{4.0}=0x1 +phy_chain_tx_polarity_flip_physical{5.0}=0x0 +phy_chain_tx_polarity_flip_physical{6.0}=0x1 +phy_chain_tx_polarity_flip_physical{7.0}=0x0 +phy_chain_tx_polarity_flip_physical{8.0}=0x1 +phy_chain_tx_polarity_flip_physical{9.0}=0x0 +phy_chain_tx_polarity_flip_physical{10.0}=0x1 +phy_chain_tx_polarity_flip_physical{11.0}=0x1 +phy_chain_tx_polarity_flip_physical{12.0}=0x0 +phy_chain_tx_polarity_flip_physical{13.0}=0x0 +phy_chain_tx_polarity_flip_physical{14.0}=0x1 +phy_chain_tx_polarity_flip_physical{15.0}=0x0 +phy_chain_tx_polarity_flip_physical{16.0}=0x1 +phy_chain_tx_polarity_flip_physical{17.0}=0x0 +phy_chain_tx_polarity_flip_physical{18.0}=0x0 +phy_chain_tx_polarity_flip_physical{19.0}=0x1 +phy_chain_tx_polarity_flip_physical{20.0}=0x1 +phy_chain_tx_polarity_flip_physical{21.0}=0x0 +phy_chain_tx_polarity_flip_physical{22.0}=0x1 +phy_chain_tx_polarity_flip_physical{23.0}=0x1 +phy_chain_tx_polarity_flip_physical{24.0}=0x0 +phy_chain_tx_polarity_flip_physical{25.0}=0x0 +phy_chain_tx_polarity_flip_physical{26.0}=0x1 +phy_chain_tx_polarity_flip_physical{27.0}=0x1 +phy_chain_tx_polarity_flip_physical{28.0}=0x0 +phy_chain_tx_polarity_flip_physical{29.0}=0x0 +phy_chain_tx_polarity_flip_physical{30.0}=0x1 +phy_chain_tx_polarity_flip_physical{31.0}=0x0 +phy_chain_tx_polarity_flip_physical{32.0}=0x1 +phy_chain_tx_polarity_flip_physical{33.0}=0x0 +phy_chain_tx_polarity_flip_physical{34.0}=0x0 +phy_chain_tx_polarity_flip_physical{35.0}=0x1 +phy_chain_tx_polarity_flip_physical{36.0}=0x1 +phy_chain_tx_polarity_flip_physical{37.0}=0x0 +phy_chain_tx_polarity_flip_physical{38.0}=0x1 +phy_chain_tx_polarity_flip_physical{39.0}=0x1 +phy_chain_tx_polarity_flip_physical{40.0}=0x0 +phy_chain_tx_polarity_flip_physical{41.0}=0x1 +phy_chain_tx_polarity_flip_physical{42.0}=0x1 +phy_chain_tx_polarity_flip_physical{43.0}=0x0 +phy_chain_tx_polarity_flip_physical{44.0}=0x0 +phy_chain_tx_polarity_flip_physical{45.0}=0x1 +phy_chain_tx_polarity_flip_physical{46.0}=0x0 +phy_chain_tx_polarity_flip_physical{47.0}=0x0 +phy_chain_tx_polarity_flip_physical{48.0}=0x1 +phy_chain_tx_polarity_flip_physical{49.0}=0x0 +phy_chain_tx_polarity_flip_physical{50.0}=0x1 +phy_chain_tx_polarity_flip_physical{51.0}=0x0 +phy_chain_tx_polarity_flip_physical{52.0}=0x1 +phy_chain_tx_polarity_flip_physical{53.0}=0x1 +phy_chain_tx_polarity_flip_physical{54.0}=0x1 +phy_chain_tx_polarity_flip_physical{55.0}=0x0 +phy_chain_tx_polarity_flip_physical{56.0}=0x0 +phy_chain_tx_polarity_flip_physical{57.0}=0x0 +phy_chain_tx_polarity_flip_physical{58.0}=0x0 +phy_chain_tx_polarity_flip_physical{59.0}=0x1 +phy_chain_tx_polarity_flip_physical{60.0}=0x1 +phy_chain_tx_polarity_flip_physical{61.0}=0x1 +phy_chain_tx_polarity_flip_physical{62.0}=0x0 +phy_chain_tx_polarity_flip_physical{63.0}=0x0 +phy_chain_tx_polarity_flip_physical{64.0}=0x1 +phy_chain_tx_polarity_flip_physical{65.0}=0x0 +phy_chain_tx_polarity_flip_physical{66.0}=0x1 +phy_chain_tx_polarity_flip_physical{67.0}=0x0 +phy_chain_tx_polarity_flip_physical{68.0}=0x1 +phy_chain_tx_polarity_flip_physical{69.0}=0x0 +phy_chain_tx_polarity_flip_physical{70.0}=0x0 +phy_chain_tx_polarity_flip_physical{71.0}=0x1 +phy_chain_tx_polarity_flip_physical{72.0}=0x1 +phy_chain_tx_polarity_flip_physical{73.0}=0x1 +phy_chain_tx_polarity_flip_physical{74.0}=0x1 +phy_chain_tx_polarity_flip_physical{75.0}=0x0 +phy_chain_tx_polarity_flip_physical{76.0}=0x0 +phy_chain_tx_polarity_flip_physical{77.0}=0x1 +phy_chain_tx_polarity_flip_physical{78.0}=0x0 +phy_chain_tx_polarity_flip_physical{79.0}=0x0 +phy_chain_tx_polarity_flip_physical{80.0}=0x1 +phy_chain_tx_polarity_flip_physical{81.0}=0x0 +phy_chain_tx_polarity_flip_physical{82.0}=0x1 +phy_chain_tx_polarity_flip_physical{83.0}=0x0 +phy_chain_tx_polarity_flip_physical{84.0}=0x1 +phy_chain_tx_polarity_flip_physical{85.0}=0x1 +phy_chain_tx_polarity_flip_physical{86.0}=0x1 +phy_chain_tx_polarity_flip_physical{87.0}=0x0 +phy_chain_tx_polarity_flip_physical{88.0}=0x0 +phy_chain_tx_polarity_flip_physical{89.0}=0x0 +phy_chain_tx_polarity_flip_physical{90.0}=0x0 +phy_chain_tx_polarity_flip_physical{91.0}=0x1 +phy_chain_tx_polarity_flip_physical{92.0}=0x1 +phy_chain_tx_polarity_flip_physical{93.0}=0x1 +phy_chain_tx_polarity_flip_physical{94.0}=0x0 +phy_chain_tx_polarity_flip_physical{95.0}=0x0 +phy_chain_tx_polarity_flip_physical{96.0}=0x1 +phy_chain_tx_polarity_flip_physical{97.0}=0x0 +phy_chain_tx_polarity_flip_physical{98.0}=0x1 +phy_chain_tx_polarity_flip_physical{99.0}=0x0 +phy_chain_tx_polarity_flip_physical{100.0}=0x1 +phy_chain_tx_polarity_flip_physical{101.0}=0x0 +phy_chain_tx_polarity_flip_physical{102.0}=0x0 +phy_chain_tx_polarity_flip_physical{103.0}=0x0 +phy_chain_tx_polarity_flip_physical{104.0}=0x1 +phy_chain_tx_polarity_flip_physical{105.0}=0x1 +phy_chain_tx_polarity_flip_physical{106.0}=0x0 +phy_chain_tx_polarity_flip_physical{107.0}=0x1 +phy_chain_tx_polarity_flip_physical{108.0}=0x0 +phy_chain_tx_polarity_flip_physical{109.0}=0x0 +phy_chain_tx_polarity_flip_physical{110.0}=0x0 +phy_chain_tx_polarity_flip_physical{111.0}=0x1 +phy_chain_tx_polarity_flip_physical{112.0}=0x1 +phy_chain_tx_polarity_flip_physical{113.0}=0x0 +phy_chain_tx_polarity_flip_physical{114.0}=0x1 +phy_chain_tx_polarity_flip_physical{115.0}=0x0 +phy_chain_tx_polarity_flip_physical{116.0}=0x1 +phy_chain_tx_polarity_flip_physical{117.0}=0x0 +phy_chain_tx_polarity_flip_physical{118.0}=0x0 +phy_chain_tx_polarity_flip_physical{119.0}=0x1 +phy_chain_tx_polarity_flip_physical{120.0}=0x1 +phy_chain_tx_polarity_flip_physical{121.0}=0x0 +phy_chain_tx_polarity_flip_physical{122.0}=0x1 +phy_chain_tx_polarity_flip_physical{123.0}=0x0 +phy_chain_tx_polarity_flip_physical{124.0}=0x1 +phy_chain_tx_polarity_flip_physical{125.0}=0x0 +phy_chain_tx_polarity_flip_physical{126.0}=0x0 +phy_chain_tx_polarity_flip_physical{127.0}=0x1 +phy_chain_tx_polarity_flip_physical{128.0}=0x1 +phy_chain_tx_polarity_flip_physical{129.0}=0x0 +phy_chain_tx_polarity_flip_physical{130.0}=0x1 +phy_chain_tx_polarity_flip_physical{131.0}=0x0 +phy_chain_tx_polarity_flip_physical{132.0}=0x1 +phy_chain_tx_polarity_flip_physical{133.0}=0x1 +phy_chain_tx_polarity_flip_physical{134.0}=0x1 +phy_chain_tx_polarity_flip_physical{135.0}=0x0 +phy_chain_tx_polarity_flip_physical{136.0}=0x0 +phy_chain_tx_polarity_flip_physical{137.0}=0x0 +phy_chain_tx_polarity_flip_physical{138.0}=0x1 +phy_chain_tx_polarity_flip_physical{139.0}=0x0 +phy_chain_tx_polarity_flip_physical{140.0}=0x1 +phy_chain_tx_polarity_flip_physical{141.0}=0x0 +phy_chain_tx_polarity_flip_physical{142.0}=0x0 +phy_chain_tx_polarity_flip_physical{143.0}=0x1 +phy_chain_tx_polarity_flip_physical{144.0}=0x1 +phy_chain_tx_polarity_flip_physical{145.0}=0x0 +phy_chain_tx_polarity_flip_physical{146.0}=0x1 +phy_chain_tx_polarity_flip_physical{147.0}=0x0 +phy_chain_tx_polarity_flip_physical{148.0}=0x1 +phy_chain_tx_polarity_flip_physical{149.0}=0x0 +phy_chain_tx_polarity_flip_physical{150.0}=0x0 +phy_chain_tx_polarity_flip_physical{151.0}=0x1 +phy_chain_tx_polarity_flip_physical{152.0}=0x1 +phy_chain_tx_polarity_flip_physical{153.0}=0x1 +phy_chain_tx_polarity_flip_physical{154.0}=0x0 +phy_chain_tx_polarity_flip_physical{155.0}=0x0 +phy_chain_tx_polarity_flip_physical{156.0}=0x1 +phy_chain_tx_polarity_flip_physical{157.0}=0x1 +phy_chain_tx_polarity_flip_physical{158.0}=0x0 +phy_chain_tx_polarity_flip_physical{159.0}=0x1 +phy_chain_tx_polarity_flip_physical{160.0}=0x0 +phy_chain_tx_polarity_flip_physical{161.0}=0x0 +phy_chain_tx_polarity_flip_physical{162.0}=0x1 +phy_chain_tx_polarity_flip_physical{163.0}=0x0 +phy_chain_tx_polarity_flip_physical{164.0}=0x1 +phy_chain_tx_polarity_flip_physical{165.0}=0x1 +phy_chain_tx_polarity_flip_physical{166.0}=0x0 +phy_chain_tx_polarity_flip_physical{167.0}=0x1 +phy_chain_tx_polarity_flip_physical{168.0}=0x0 +phy_chain_tx_polarity_flip_physical{169.0}=0x0 +phy_chain_tx_polarity_flip_physical{170.0}=0x0 +phy_chain_tx_polarity_flip_physical{171.0}=0x1 +phy_chain_tx_polarity_flip_physical{172.0}=0x1 +phy_chain_tx_polarity_flip_physical{173.0}=0x0 +phy_chain_tx_polarity_flip_physical{174.0}=0x1 +phy_chain_tx_polarity_flip_physical{175.0}=0x0 +phy_chain_tx_polarity_flip_physical{176.0}=0x1 +phy_chain_tx_polarity_flip_physical{177.0}=0x0 +phy_chain_tx_polarity_flip_physical{178.0}=0x1 +phy_chain_tx_polarity_flip_physical{179.0}=0x0 +phy_chain_tx_polarity_flip_physical{180.0}=0x1 +phy_chain_tx_polarity_flip_physical{181.0}=0x1 +phy_chain_tx_polarity_flip_physical{182.0}=0x0 +phy_chain_tx_polarity_flip_physical{183.0}=0x1 +phy_chain_tx_polarity_flip_physical{184.0}=0x0 +phy_chain_tx_polarity_flip_physical{185.0}=0x1 +phy_chain_tx_polarity_flip_physical{186.0}=0x1 +phy_chain_tx_polarity_flip_physical{187.0}=0x0 +phy_chain_tx_polarity_flip_physical{188.0}=0x0 +phy_chain_tx_polarity_flip_physical{189.0}=0x1 +phy_chain_tx_polarity_flip_physical{190.0}=0x0 +phy_chain_tx_polarity_flip_physical{191.0}=0x1 +phy_chain_tx_polarity_flip_physical{192.0}=0x0 +phy_chain_tx_polarity_flip_physical{193.0}=0x0 +phy_chain_tx_polarity_flip_physical{194.0}=0x1 +phy_chain_tx_polarity_flip_physical{195.0}=0x0 +phy_chain_tx_polarity_flip_physical{196.0}=0x1 +phy_chain_tx_polarity_flip_physical{197.0}=0x1 +phy_chain_tx_polarity_flip_physical{198.0}=0x0 +phy_chain_tx_polarity_flip_physical{199.0}=0x1 +phy_chain_tx_polarity_flip_physical{200.0}=0x0 +phy_chain_tx_polarity_flip_physical{201.0}=0x0 +phy_chain_tx_polarity_flip_physical{202.0}=0x0 +phy_chain_tx_polarity_flip_physical{203.0}=0x1 +phy_chain_tx_polarity_flip_physical{204.0}=0x1 +phy_chain_tx_polarity_flip_physical{205.0}=0x1 +phy_chain_tx_polarity_flip_physical{206.0}=0x0 +phy_chain_tx_polarity_flip_physical{207.0}=0x1 +phy_chain_tx_polarity_flip_physical{208.0}=0x0 +phy_chain_tx_polarity_flip_physical{209.0}=0x0 +phy_chain_tx_polarity_flip_physical{210.0}=0x1 +phy_chain_tx_polarity_flip_physical{211.0}=0x0 +phy_chain_tx_polarity_flip_physical{212.0}=0x1 +phy_chain_tx_polarity_flip_physical{213.0}=0x1 +phy_chain_tx_polarity_flip_physical{214.0}=0x0 +phy_chain_tx_polarity_flip_physical{215.0}=0x1 +phy_chain_tx_polarity_flip_physical{216.0}=0x0 +phy_chain_tx_polarity_flip_physical{217.0}=0x1 +phy_chain_tx_polarity_flip_physical{218.0}=0x1 +phy_chain_tx_polarity_flip_physical{219.0}=0x0 +phy_chain_tx_polarity_flip_physical{220.0}=0x0 +phy_chain_tx_polarity_flip_physical{221.0}=0x1 +phy_chain_tx_polarity_flip_physical{222.0}=0x1 +phy_chain_tx_polarity_flip_physical{223.0}=0x0 +phy_chain_tx_polarity_flip_physical{224.0}=0x0 +phy_chain_tx_polarity_flip_physical{225.0}=0x0 +phy_chain_tx_polarity_flip_physical{226.0}=0x0 +phy_chain_tx_polarity_flip_physical{227.0}=0x1 +phy_chain_tx_polarity_flip_physical{228.0}=0x1 +phy_chain_tx_polarity_flip_physical{229.0}=0x1 +phy_chain_tx_polarity_flip_physical{230.0}=0x1 +phy_chain_tx_polarity_flip_physical{231.0}=0x0 +phy_chain_tx_polarity_flip_physical{232.0}=0x0 +phy_chain_tx_polarity_flip_physical{233.0}=0x0 +phy_chain_tx_polarity_flip_physical{234.0}=0x1 +phy_chain_tx_polarity_flip_physical{235.0}=0x1 +phy_chain_tx_polarity_flip_physical{236.0}=0x0 +phy_chain_tx_polarity_flip_physical{237.0}=0x1 +phy_chain_tx_polarity_flip_physical{238.0}=0x0 +phy_chain_tx_polarity_flip_physical{239.0}=0x1 +phy_chain_tx_polarity_flip_physical{240.0}=0x0 +phy_chain_tx_polarity_flip_physical{241.0}=0x1 +phy_chain_tx_polarity_flip_physical{242.0}=0x0 +phy_chain_tx_polarity_flip_physical{243.0}=0x0 +phy_chain_tx_polarity_flip_physical{244.0}=0x1 +phy_chain_tx_polarity_flip_physical{245.0}=0x1 +phy_chain_tx_polarity_flip_physical{246.0}=0x1 +phy_chain_tx_polarity_flip_physical{247.0}=0x0 +phy_chain_tx_polarity_flip_physical{248.0}=0x0 +phy_chain_tx_polarity_flip_physical{249.0}=0x0 +phy_chain_tx_polarity_flip_physical{250.0}=0x0 +phy_chain_tx_polarity_flip_physical{251.0}=0x1 +phy_chain_tx_polarity_flip_physical{252.0}=0x1 +phy_chain_tx_polarity_flip_physical{253.0}=0x0 +phy_chain_tx_polarity_flip_physical{254.0}=0x1 +phy_chain_tx_polarity_flip_physical{255.0}=0x0 +phy_chain_tx_polarity_flip_physical{256.0}=0x1 + + +serdes_driver_current_lane0=0xf +serdes_driver_current_lane1=0xf +serdes_driver_current_lane2=0xf +serdes_driver_current_lane3=0xf + +dport_map_port_1=1 +dport_map_port_5=2 +dport_map_port_17=3 +dport_map_port_21=4 +dport_map_port_24=5 +dport_map_port_25=6 +dport_map_port_28=7 +dport_map_port_29=8 +dport_map_port_34=9 +dport_map_port_38=10 +dport_map_port_50=11 +dport_map_port_54=12 +dport_map_port_57=13 +dport_map_port_58=14 +dport_map_port_61=15 +dport_map_port_62=16 +dport_map_port_68=17 +dport_map_port_72=18 +dport_map_port_84=19 +dport_map_port_88=20 +dport_map_port_91=21 +dport_map_port_92=22 +dport_map_port_95=23 +dport_map_port_96=24 +dport_map_port_102=25 +dport_map_port_106=26 +dport_map_port_118=27 +dport_map_port_122=28 +dport_map_port_125=29 +dport_map_port_126=30 +dport_map_port_129=31 +dport_map_port_130=32 +dport_map_port_9=33 +dport_map_port_13=34 +dport_map_port_22=35 +dport_map_port_23=36 +dport_map_port_26=37 +dport_map_port_27=38 +dport_map_port_30=39 +dport_map_port_31=40 +dport_map_port_42=41 +dport_map_port_46=42 +dport_map_port_55=43 +dport_map_port_56=44 +dport_map_port_59=45 +dport_map_port_60=46 +dport_map_port_63=47 +dport_map_port_64=48 +dport_map_port_76=49 +dport_map_port_80=50 +dport_map_port_89=51 +dport_map_port_90=52 +dport_map_port_93=53 +dport_map_port_94=54 +dport_map_port_97=55 +dport_map_port_98=56 +dport_map_port_110=57 +dport_map_port_114=58 +dport_map_port_123=59 +dport_map_port_124=60 +dport_map_port_127=61 +dport_map_port_128=62 +dport_map_port_131=63 +dport_map_port_132=64 + +serdes_if_type_1=14 +serdes_if_type_5=14 +serdes_if_type_17=14 +serdes_if_type_21=14 +serdes_if_type_24=14 +serdes_if_type_25=14 +serdes_if_type_28=14 +serdes_if_type_29=14 +serdes_if_type_34=14 +serdes_if_type_38=14 +serdes_if_type_50=14 +serdes_if_type_54=14 +serdes_if_type_57=14 +serdes_if_type_58=14 +serdes_if_type_61=14 +serdes_if_type_62=14 +serdes_if_type_68=14 +serdes_if_type_72=14 +serdes_if_type_84=14 +serdes_if_type_88=14 +serdes_if_type_91=14 +serdes_if_type_92=14 +serdes_if_type_95=14 +serdes_if_type_96=14 +serdes_if_type_102=14 +serdes_if_type_106=14 +serdes_if_type_118=14 +serdes_if_type_122=14 +serdes_if_type_125=14 +serdes_if_type_126=14 +serdes_if_type_129=14 +serdes_if_type_130=14 +serdes_if_type_9=14 +serdes_if_type_13=14 +serdes_if_type_22=14 +serdes_if_type_23=14 +serdes_if_type_26=14 +serdes_if_type_27=14 +serdes_if_type_30=14 +serdes_if_type_31=14 +serdes_if_type_42=14 +serdes_if_type_46=14 +serdes_if_type_55=14 +serdes_if_type_56=14 +serdes_if_type_59=14 +serdes_if_type_60=14 +serdes_if_type_63=14 +serdes_if_type_64=14 +serdes_if_type_76=14 +serdes_if_type_80=14 +serdes_if_type_89=14 +serdes_if_type_90=14 +serdes_if_type_93=14 +serdes_if_type_94=14 +serdes_if_type_97=14 +serdes_if_type_98=14 +serdes_if_type_110=14 +serdes_if_type_114=14 +serdes_if_type_123=14 +serdes_if_type_124=14 +serdes_if_type_127=14 +serdes_if_type_128=14 + +###################user module area ################### + +bcm_tunnel_term_compatible_mode=1 +bcm_num_cos=8 +mmu_lossless=0 +mmu_config_override=0 + +buf.prigroup.guarantee=0 +buf.prigroup.device_headroom_enable=1 +buf.prigroup.pool_resume=1664B +buf.prigroup.pool_scale=8 + +buf.prigroup.port_guarantee_enable=1 +buf.prigroup.port_max_enable=1 +buf.prigroup.flow_control_enable=0 + +buf.queue.pool_scale=8 +buf.mqueue.pool_scale=0.125 +buf.queue.pool_scale_hg=8 +buf.mqueue.pool_scale_hg=8 +buf.mqueue.pool_scale_cpu=0.015625 +buf.queue.qgroup_guarantee_enable=0 +profile_pg_1hdrm_8shared=0 + +buf.map.pri.prigroup=0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7 +num_queues_pci=46 +num_queues_uc0=1 +num_queues_uc1=1 +flow_init_mode=1 +# Protobuf relateed properties +ctr_evict_enable=0 +udp_port=22000 +# Exact match related properties +multi_hash_recurse_depth_exact_match=2 +robust_hash_seed_exact_match=0x12345 +# E-INT related properties +my_udp_port_int=5566 +server_udp_port_int=7788 +probe_marker1_int=0xAAAAAAAA +probe_marker2_int=0xBBBBBBBB +hoplimit_int=8 +lb_port_pipe0_int=1 +lb_port_pipe1_int=67 +ing_origin_id_device_id_mask=0x7FFF80 +egr_origin_id_device_id_mask=0x7FFF80 +port_count_in_pb_stream=1 + diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm.rc b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm.rc new file mode 100644 index 000000000000..7f69f10d3bda --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm.rc @@ -0,0 +1 @@ +rcload /usr/share/sonic/platform/led_proc_init.soc diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm_pre.rc b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/bcm_pre.rc new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/default_sku b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/default_sku new file mode 100644 index 000000000000..f586bdef9f3a --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/default_sku @@ -0,0 +1 @@ +RA-B6910-64C t1 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/dev.xml b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/dev.xml new file mode 100644 index 000000000000..55d37fffd8eb --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/dev.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/installer.conf b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/installer.conf new file mode 100644 index 000000000000..5e62742c11bf --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/installer.conf @@ -0,0 +1 @@ +CONSOLE_SPEED=115200 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/led_proc_init.soc b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/led_proc_init.soc new file mode 100644 index 000000000000..f5c182517e27 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/led_proc_init.soc @@ -0,0 +1,23 @@ + +led 0 stop +led 0 prog 02 01 60 F1 02 00 60 F2 06 E1 80 D2 21 71 10 E0 60 E1 E9 D2 10 75 18 81 61 E3 02 34 67 5C 02 30 67 5C 02 3C 67 5C 02 38 67 5C 02 24 67 5C 02 20 67 5C 02 2C 67 5C 02 28 67 5C 02 14 67 5C 02 10 67 5C 02 1C 67 5C 02 18 67 5C 02 04 67 5C 02 00 67 5C 02 0C 67 5C 02 08 67 5C 3A 40 28 67 67 75 CA 67 75 71 D8 77 D1 12 A0 F8 15 1A 00 57 12 A0 F8 15 1A 02 57 32 00 32 01 B7 97 57 26 F2 87 26 F2 87 26 F2 87 26 F1 87 57 26 F2 87 26 F1 87 26 F1 87 26 F1 87 57 26 F2 87 26 F2 87 26 F2 87 26 F2 87 57 26 F2 87 26 F1 87 26 F1 87 26 F2 87 57 26 F2 87 26 F2 87 26 F2 87 26 E3 87 57 26 F2 87 26 F1 87 26 F1 87 26 E3 87 57 67 6E 71 7C 77 89 57 67 6E 71 96 77 A3 57 67 6E 71 B0 77 BD 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +led 0 start +led auto on + +led 1 stop +led 1 prog 02 01 60 F1 02 00 60 F2 06 E1 80 D2 21 71 10 E0 60 E1 E9 D2 10 75 18 81 61 E3 02 34 67 5C 02 30 67 5C 02 3C 67 5C 02 38 67 5C 02 24 67 5C 02 20 67 5C 02 2C 67 5C 02 28 67 5C 02 14 67 5C 02 10 67 5C 02 1C 67 5C 02 18 67 5C 02 04 67 5C 02 00 67 5C 02 0C 67 5C 02 08 67 5C 3A 40 28 67 67 75 CA 67 75 71 D8 77 D1 12 A0 F8 15 1A 00 57 12 A0 F8 15 1A 02 57 32 00 32 01 B7 97 57 26 F2 87 26 F2 87 26 F2 87 26 F1 87 57 26 F2 87 26 F1 87 26 F1 87 26 F1 87 57 26 F2 87 26 F2 87 26 F2 87 26 F2 87 57 26 F2 87 26 F1 87 26 F1 87 26 F2 87 57 26 F2 87 26 F2 87 26 F2 87 26 E3 87 57 26 F2 87 26 F1 87 26 F1 87 26 E3 87 57 67 6E 71 7C 77 89 57 67 6E 71 96 77 A3 57 67 6E 71 B0 77 BD 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +led 1 start +led auto on + +led 2 stop +led 2 prog 02 01 60 F1 02 00 60 F2 06 E1 80 D2 21 71 10 E0 60 E1 E9 D2 10 75 18 81 61 E3 02 34 67 5C 02 30 67 5C 02 3C 67 5C 02 38 67 5C 02 24 67 5C 02 20 67 5C 02 2C 67 5C 02 28 67 5C 02 14 67 5C 02 10 67 5C 02 1C 67 5C 02 18 67 5C 02 04 67 5C 02 00 67 5C 02 0C 67 5C 02 08 67 5C 3A 40 28 67 67 75 CA 67 75 71 D8 77 D1 12 A0 F8 15 1A 00 57 12 A0 F8 15 1A 02 57 32 00 32 01 B7 97 57 26 F2 87 26 F2 87 26 F2 87 26 F1 87 57 26 F2 87 26 F1 87 26 F1 87 26 F1 87 57 26 F2 87 26 F2 87 26 F2 87 26 F2 87 57 26 F2 87 26 F1 87 26 F1 87 26 F2 87 57 26 F2 87 26 F2 87 26 F2 87 26 E3 87 57 26 F2 87 26 F1 87 26 F1 87 26 E3 87 57 67 6E 71 7C 77 89 57 67 6E 71 96 77 A3 57 67 6E 71 B0 77 BD 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +led 2 start +led auto on + +led 3 stop +led 3 prog 02 01 60 F1 02 00 60 F2 06 E1 80 D2 21 71 10 E0 60 E1 E9 D2 10 75 18 81 61 E3 02 34 67 5C 02 30 67 5C 02 3C 67 5C 02 38 67 5C 02 24 67 5C 02 20 67 5C 02 2C 67 5C 02 28 67 5C 02 14 67 5C 02 10 67 5C 02 1C 67 5C 02 18 67 5C 02 04 67 5C 02 00 67 5C 02 0C 67 5C 02 08 67 5C 3A 40 28 67 67 75 CA 67 75 71 D8 77 D1 12 A0 F8 15 1A 00 57 12 A0 F8 15 1A 02 57 32 00 32 01 B7 97 57 26 F2 87 26 F2 87 26 F2 87 26 F1 87 57 26 F2 87 26 F1 87 26 F1 87 26 F1 87 57 26 F2 87 26 F2 87 26 F2 87 26 F2 87 57 26 F2 87 26 F1 87 26 F1 87 26 F2 87 57 26 F2 87 26 F2 87 26 F2 87 26 E3 87 57 26 F2 87 26 F1 87 26 F1 87 26 E3 87 57 67 6E 71 7C 77 89 57 67 6E 71 96 77 A3 57 67 6E 71 B0 77 BD 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +led 3 start + +led auto on + +linkscan spbm=all force=all interval=250000 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/minigraph.xml b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/minigraph.xml new file mode 100644 index 000000000000..e6b05e400606 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/minigraph.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + switch2 + + + + + + + + + + + + + switch2 + RA-B6910-64C + + + + + + + switch2 + + + DhcpResources + + + + + NtpResources + + 0.debian.pool.ntp.org;1.debian.pool.ntp.org;2.debian.pool.ntp.org;3.debian.pool.ntp.org + + + SyslogResources + + + + + ErspanDestinationIpv4 + + 2.2.2.2 + + + + + + + switch2 + RA-B6910-64C + diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/monitor.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/monitor.py new file mode 100644 index 000000000000..b929fe4146e7 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/monitor.py @@ -0,0 +1,223 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- +# * onboard temperature sensors +# * FAN trays +# * PSU +# +import os +import xml.etree.ElementTree as ET +import glob + +MAILBOX_DIR = "/sys/bus/i2c/devices/" +PORTS_DIR = "/sys/class/net/" +CONFIG_NAME = "dev.xml" + +def getPMCreg(location): + retval = 'ERR' + if (not os.path.isfile(location)): + return "%s %s notfound"% (retval , location) + try: + with open(location, 'r') as fd: + retval = fd.read() + except Exception as error: + pass + + retval = retval.rstrip('\r\n') + retval = retval.lstrip(" ") + return retval + +# Get a mailbox register +def get_pmc_register(reg_name): + retval = 'ERR' + if reg_name[0:4] == "/rif" or reg_name[0:4] == "/ma1" or reg_name[0:4] == "/eth": + mb_reg_file = PORTS_DIR + reg_name + else: + mb_reg_file = MAILBOX_DIR + reg_name + filepath = glob.glob(mb_reg_file) + if(len(filepath) == 0): + return "%s %s notfound"% (retval , mb_reg_file) + # when multimatch use the first one + mb_reg_file = filepath[0] + if (not os.path.isfile(mb_reg_file)): + #print mb_reg_file, 'not found !' + return "%s %s notfound"% (retval , mb_reg_file) + try: + with open(mb_reg_file, 'r') as fd: + retval = fd.read() + except Exception as error: + pass + + retval = retval.rstrip('\r\n') + retval = retval.lstrip(" ") + return retval + +class checktype(): + def __init__(self, test1): + self.test1 = test1 + @staticmethod + def check(name,location, bit, value, tips , err1): + psu_status = int(get_pmc_register(location),16) + val = (psu_status & (1<< bit)) >> bit + if (val != value): + err1["errmsg"] = tips + err1["code"] = -1 + return -1 + else: + err1["errmsg"] = "none" + err1["code"] = 0 + return 0 + @staticmethod + def getValue(location, bit , type): + value_t = get_pmc_register(location) + if value_t.startswith("ERR") : + return value_t + if (type == 1): + return float(value_t)/1000 + elif (type == 2): + return float(value_t)/100 + elif (type == 3): + psu_status = int(value_t,16) + return (psu_status & (1<< bit)) >> bit + elif (type == 4): + return int(value_t,10) + elif (type == 5): + return float(value_t)/1000/1000 + else: + return value_t; +#######temp + @staticmethod + def getTemp(self, name, location , ret_t): + ret2 = self.getValue(location + "temp1_input" ," " ,1); + ret3 = self.getValue(location + "temp1_max" ," ", 1); + ret4 = self.getValue(location + "temp1_max_hyst" ," ", 1); + ret_t["temp1_input"] = ret2 + ret_t["temp1_max"] = ret3 + ret_t["temp1_max_hyst"] = ret4 + @staticmethod + def getLM75(name, location, result): + c1=checktype + r1={} + c1.getTemp(c1, name, location, r1) + result[name] = r1 +##########PSU + + +class status(): + def __init__(self, productname): + self.productname = productname + + @staticmethod + def getETroot(filename): + tree = ET.parse(filename) + root = tree.getroot() + return root; + + @staticmethod + def getDecodValue(collection, decode): + decodes = collection.find('decode') + testdecode = decodes.find(decode) + test={} + for neighbor in testdecode.iter('code'): + test[neighbor.attrib["key"]]=neighbor.attrib["value"] + return test + @staticmethod + def getfileValue(location): + return checktype.getValue(location," "," ") + @staticmethod + def getETValue(a, filename, tagname): + root = status.getETroot(filename) + for neighbor in root.iter(tagname): + prob_t = {} + prob_t = neighbor.attrib + prob_t['errcode']= 0 + prob_t['errmsg'] = '' + for pros in neighbor.iter("property"): + ret = dict(neighbor.attrib.items() + pros.attrib.items()) + if ('type' not in ret.keys()): + val = "0"; + else: + val = ret["type"] + if ('bit' not in ret.keys()): + bit = "0"; + else: + bit = ret["bit"] + s = checktype.getValue(ret["location"], int(bit),int(val)) + if isinstance(s, str) and s.startswith("ERR"): + prob_t['errcode']= -1 + prob_t['errmsg']= s + if ('default' in ret.keys()): + rt = status.getDecodValue(root,ret['decode']) + prob_t['errmsg']= rt[str(s)] + if str(s) != ret["default"]: + prob_t['errcode']= -1 + break; + else: + if ('decode' in ret.keys()): + rt = status.getDecodValue(root,ret['decode']) + if(ret['decode'] == "psutype" and s.replace("\x00","").rstrip() not in rt.keys()): + prob_t['errcode']= -1 + prob_t['errmsg'] = '%s'% ("Not supported PSU type") + else: + s = rt[str(s).replace("\x00","").rstrip()] + name = ret["name"] + prob_t[name]=str(s) + a.append(prob_t) + @staticmethod + def getCPUValue(a, filename, tagname): + root = status.getETroot(filename) + for neighbor in root.iter(tagname): + location = neighbor.attrib["location"] + L=[] + for dirpath, dirnames, filenames in os.walk(location): + for file in filenames : + if file.endswith("input"): + L.append(os.path.join(dirpath, file)) + L =sorted(L,reverse=False) + for i in range(len(L)): + prob_t = {} + prob_t["name"] = getPMCreg("%s/temp%d_label"%(location,i+1)) + prob_t["temp"] = float(getPMCreg("%s/temp%d_input"%(location,i+1)))/1000 + prob_t["alarm"] = float(getPMCreg("%s/temp%d_crit_alarm"%(location,i+1)))/1000 + prob_t["crit"] = float(getPMCreg("%s/temp%d_crit"%(location,i+1)))/1000 + prob_t["max"] = float(getPMCreg("%s/temp%d_max"%(location,i+1)))/1000 + a.append(prob_t) + + @staticmethod + def getFileName(): + return os.path.dirname(os.path.realpath(__file__)) + "/"+ CONFIG_NAME + @staticmethod + def getFan(ret): + _filename = status.getFileName() + _tagname = "fan" + status.getvalue(ret, _filename, _tagname) + @staticmethod + def checkFan(ret): + _filename = status.getFileName() + # _filename = "/usr/local/bin/" + status.getFileName() + _tagname = "fan" + status.getETValue(ret, _filename, _tagname) + @staticmethod + def getTemp(ret): + _filename = status.getFileName() + #_filename = "/usr/local/bin/" + status.getFileName() + _tagname = "temp" + status.getETValue(ret, _filename, _tagname) + @staticmethod + def getPsu(ret): + _filename = status.getFileName() + # _filename = "/usr/local/bin/" + status.getFileName() + _tagname = "psu" + status.getETValue(ret, _filename, _tagname) + + @staticmethod + def getcputemp(ret): + _filename = status.getFileName() + _tagname = "cpus" + status.getCPUValue(ret, _filename, _tagname) + @staticmethod + def getMgmtRx(ret): + _filename = status.getFileName() + _tagname = "mgmt_rx" + status.getETValue(ret, _filename, _tagname) + + diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pcie.yaml b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pcie.yaml new file mode 100644 index 000000000000..90ebf1740641 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pcie.yaml @@ -0,0 +1,429 @@ +- bus: '00' + dev: '00' + fn: '0' + id: 6f00 + name: 'Host bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2 + (rev 03)' +- bus: '00' + dev: '01' + fn: '0' + id: 6f02 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 1 (rev 03)' +- bus: '00' + dev: '01' + fn: '1' + id: 6f03 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 1 (rev 03)' +- bus: '00' + dev: '02' + fn: '0' + id: 6f04 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 2 (rev 03)' +- bus: '00' + dev: '02' + fn: '2' + id: 6f06 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 2 (rev 03)' +- bus: '00' + dev: '03' + fn: '0' + id: 6f08 + name: 'PCI bridge: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI + Express Root Port 3 (rev 03)' +- bus: '00' + dev: '05' + fn: '0' + id: 6f28 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Map/VTd_Misc/System Management (rev 03)' +- bus: '00' + dev: '05' + fn: '1' + id: 6f29 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D IIO Hot Plug (rev 03)' +- bus: '00' + dev: '05' + fn: '2' + id: 6f2a + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D IIO RAS/Control Status/Global Errors (rev 03)' +- bus: '00' + dev: '05' + fn: '4' + id: 6f2c + name: 'PIC: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D I/O APIC (rev + 03)' +- bus: '00' + dev: '14' + fn: '0' + id: 8c31 + name: 'USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB + xHCI (rev 05)' +- bus: '00' + dev: '16' + fn: '0' + id: 8c3a + name: 'Communication controller: Intel Corporation 8 Series/C220 Series Chipset + Family MEI Controller #1 (rev 04)' +- bus: '00' + dev: '16' + fn: '1' + id: 8c3b + name: 'Communication controller: Intel Corporation 8 Series/C220 Series Chipset + Family MEI Controller #2 (rev 04)' +- bus: '00' + dev: 1c + fn: '0' + id: 8c10 + name: 'PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express + Root Port #1 (rev d5)' +- bus: '00' + dev: 1d + fn: '0' + id: 8c26 + name: 'USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB + EHCI #1 (rev 05)' +- bus: '00' + dev: 1f + fn: '0' + id: 8c54 + name: 'ISA bridge: Intel Corporation C224 Series Chipset Family Server Standard + SKU LPC Controller (rev 05)' +- bus: '00' + dev: 1f + fn: '2' + id: 8c02 + name: 'SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port + SATA Controller 1 [AHCI mode] (rev 05)' +- bus: '00' + dev: 1f + fn: '3' + id: 8c22 + name: 'SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller + (rev 05)' +- bus: '01' + dev: '00' + fn: '0' + id: '1533' + name: 'Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev + 03)' +- bus: '03' + dev: '00' + fn: '0' + id: 6f50 + name: 'System peripheral: Intel Corporation Xeon Processor D Family QuickData Technology + Register DMA Channel 0' +- bus: '03' + dev: '00' + fn: '1' + id: 6f51 + name: 'System peripheral: Intel Corporation Xeon Processor D Family QuickData Technology + Register DMA Channel 1' +- bus: '03' + dev: '00' + fn: '2' + id: 6f52 + name: 'System peripheral: Intel Corporation Xeon Processor D Family QuickData Technology + Register DMA Channel 2' +- bus: '03' + dev: '00' + fn: '3' + id: 6f53 + name: 'System peripheral: Intel Corporation Xeon Processor D Family QuickData Technology + Register DMA Channel 3' +- bus: '04' + dev: '00' + fn: '0' + id: 15ab + name: 'Ethernet controller: Intel Corporation Ethernet Connection X552 10 GbE Backplane' +- bus: '04' + dev: '00' + fn: '1' + id: 15ab + name: 'Ethernet controller: Intel Corporation Ethernet Connection X552 10 GbE Backplane' +- bus: '07' + dev: '00' + fn: '0' + id: b873 + name: 'Ethernet controller: Broadcom Limited Device b873 (rev 01)' +- bus: ff + dev: 0b + fn: '0' + id: 6f81 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R3 QPI Link 0/1 (rev 03)' +- bus: ff + dev: 0b + fn: '1' + id: 6f36 + name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R3 QPI Link 0/1 (rev 03)' +- bus: ff + dev: 0b + fn: '2' + id: 6f37 + name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R3 QPI Link 0/1 (rev 03)' +- bus: ff + dev: 0b + fn: '3' + id: 6f76 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R3 QPI Link Debug (rev 03)' +- bus: ff + dev: 0c + fn: '0' + id: 6fe0 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 03)' +- bus: ff + dev: 0c + fn: '1' + id: 6fe1 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 03)' +- bus: ff + dev: 0c + fn: '2' + id: 6fe2 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 03)' +- bus: ff + dev: 0c + fn: '3' + id: 6fe3 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 03)' +- bus: ff + dev: 0f + fn: '0' + id: 6ff8 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 03)' +- bus: ff + dev: 0f + fn: '4' + id: 6ffc + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 03)' +- bus: ff + dev: 0f + fn: '5' + id: 6ffd + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 03)' +- bus: ff + dev: 0f + fn: '6' + id: 6ffe + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Caching Agent (rev 03)' +- bus: ff + dev: '10' + fn: '0' + id: 6f1d + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R2PCIe Agent (rev 03)' +- bus: ff + dev: '10' + fn: '1' + id: 6f34 + name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D R2PCIe Agent (rev 03)' +- bus: ff + dev: '10' + fn: '5' + id: 6f1e + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Ubox (rev 03)' +- bus: ff + dev: '10' + fn: '6' + id: 6f7d + name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Ubox (rev 03)' +- bus: ff + dev: '10' + fn: '7' + id: 6f1f + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Ubox (rev 03)' +- bus: ff + dev: '12' + fn: '0' + id: 6fa0 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Home Agent 0 (rev 03)' +- bus: ff + dev: '12' + fn: '1' + id: 6f30 + name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Home Agent 0 (rev 03)' +- bus: ff + dev: '13' + fn: '0' + id: 6fa8 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Target Address/Thermal/RAS (rev 03)' +- bus: ff + dev: '13' + fn: '1' + id: 6f71 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Target Address/Thermal/RAS (rev 03)' +- bus: ff + dev: '13' + fn: '2' + id: 6faa + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel Target Address Decoder (rev 03)' +- bus: ff + dev: '13' + fn: '3' + id: 6fab + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel Target Address Decoder (rev 03)' +- bus: ff + dev: '13' + fn: '4' + id: 6fac + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel Target Address Decoder (rev 03)' +- bus: ff + dev: '13' + fn: '5' + id: 6fad + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel Target Address Decoder (rev 03)' +- bus: ff + dev: '13' + fn: '6' + id: 6fae + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Channel 0/1 Broadcast (rev 03)' +- bus: ff + dev: '13' + fn: '7' + id: 6faf + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Global Broadcast (rev 03)' +- bus: ff + dev: '14' + fn: '0' + id: 6fb0 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 0 Thermal Control (rev 03)' +- bus: ff + dev: '14' + fn: '1' + id: 6fb1 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 1 Thermal Control (rev 03)' +- bus: ff + dev: '14' + fn: '2' + id: 6fb2 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 0 Error (rev 03)' +- bus: ff + dev: '14' + fn: '3' + id: 6fb3 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 1 Error (rev 03)' +- bus: ff + dev: '14' + fn: '4' + id: 6fbc + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Channel 0/1 Interface (rev 03)' +- bus: ff + dev: '14' + fn: '5' + id: 6fbd + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Channel 0/1 Interface (rev 03)' +- bus: ff + dev: '14' + fn: '6' + id: 6fbe + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Channel 0/1 Interface (rev 03)' +- bus: ff + dev: '14' + fn: '7' + id: 6fbf + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D DDRIO Channel 0/1 Interface (rev 03)' +- bus: ff + dev: '15' + fn: '0' + id: 6fb4 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 2 Thermal Control (rev 03)' +- bus: ff + dev: '15' + fn: '1' + id: 6fb5 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 3 Thermal Control (rev 03)' +- bus: ff + dev: '15' + fn: '2' + id: 6fb6 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 2 Error (rev 03)' +- bus: ff + dev: '15' + fn: '3' + id: 6fb7 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Memory Controller 0 - Channel 3 Error (rev 03)' +- bus: ff + dev: 1e + fn: '0' + id: 6f98 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 03)' +- bus: ff + dev: 1e + fn: '1' + id: 6f99 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 03)' +- bus: ff + dev: 1e + fn: '2' + id: 6f9a + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 03)' +- bus: ff + dev: 1e + fn: '3' + id: 6fc0 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 03)' +- bus: ff + dev: 1e + fn: '4' + id: 6f9c + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 03)' +- bus: ff + dev: 1f + fn: '0' + id: 6f88 + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 03)' +- bus: ff + dev: 1f + fn: '2' + id: 6f8a + name: 'System peripheral: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon + D Power Control Unit (rev 03)' diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pd-plugin.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pd-plugin.json new file mode 100644 index 000000000000..ffa06ff74303 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pd-plugin.json @@ -0,0 +1,67 @@ +{ + "XCVR": { + "xcvr_present": { + "i2c": { + "valmap-SFP28": { + "1": true, + "0": false + }, + "valmap-QSFP28": { + "1": true, + "0": false + } + } + } + }, + + "PSU": { + "psu_present": { + "i2c": { + "valmap": { + "1": true, + "0": false + } + } + }, + + "psu_power_good": { + "i2c": { + "valmap": { + "1": true, + "0": false + } + } + }, + + "psu_fan_dir": { + "i2c": { + "valmap": { + "F2B": "EXHAUST", + "B2F": "INTAKE" + } + } + }, + "PSU_FAN_MAX_SPEED": "18000" + }, + + "FAN": { + "direction": { + "i2c": { + "valmap": { + "1": "INTAKE", + "0": "EXHAUST" + } + } + }, + "present": { + "i2c": { + "valmap": { + "1": true, + "0": false + } + } + }, + "duty_cycle_to_pwm": "lambda dc: dc*255/100", + "pwm_to_duty_cycle": "lambda pwm: pwm*100/255" + } +} diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pddf-device.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pddf-device.json new file mode 100644 index 000000000000..3f5aae68c544 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf/pddf-device.json @@ -0,0 +1,7012 @@ +{ + "PLATFORM": { + "num_psus": 2, + "num_fantrays": 3, + "num_fans_pertray": 1, + "num_ports": 64, + "num_temps": 3, + "pddf_dev_types": { + "description": "RA-B6910-64C", + "CPLD": [ + "i2c_cpld" + ], + "PSU": [ + "psu_eeprom", + "psu_pmbus" + ], + "FAN": [ + "fan_ctrl", + "fan_cpld", + "fan_eeprom" + ], + "PORT_MODULE": [ + "pddf_xcvr", + "optoe1", + "optoe2" + ] + }, + "std_kos": [ + "i2c-ismt", + "i2c-i801", + "i2c_dev", + "i2c_gpio", + "i2c_algo_bit", + "i2c_mux_pca9641", + "i2c_mux_pca954x force_create_bus=1", + "lm75", + "optoe", + "at24", + "pmbus_core" + ], + "pddf_kos": [ + "pddf_client_module", + "pddf_cpld_module", + "pddf_cpld_driver", + "pddf_mux_module", + "pddf_xcvr_module", + "pddf_xcvr_driver_module", + "pddf_psu_driver_module", + "pddf_psu_module", + "pddf_fan_driver_module", + "pddf_fan_module", + "pddf_led_module", + "pddf_sysstatus_module" + ], + "custom_kos": [ + "ragile_platform", + "rg_cpld", + "rg_fan", + "rg_psu", + "rg_gpio_xeon", + "csu550" + ] + + }, + + "SYSTEM": { + "dev_info": { + "device_type": "CPU", + "device_name": "ROOT_COMPLEX", + "device_parent": null + }, + "i2c": { + "CONTROLLERS": [{ + "dev_name": "i2c-0", + "dev": "SMBUS0" + }, { + "dev_name": "i2c-1", + "dev": "I2C-GPIO0" + }, { + "dev_name": "i2c-2", + "dev": "SMBUS1" + }] + } + }, + + "SMBUS0": { + "dev_info": { + "device_type": "SMBUS", + "device_name": "SMBUS0", + "device_parent": "SYSTEM" + }, + "i2c": { + "topo_info": { + "dev_addr": "0x0" + }, + "DEVICES": [{ + "dev": "CPU_CPLD" + }, + { + "dev": "CONNECT_BOARD_CPLD1" + } + ] + } + }, + + "CPU_CPLD": { + "dev_info": { + "device_type": "CPLD", + "device_name": "CPU_CPLD", + "device_parent": "SMBUS0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x0", + "dev_addr": "0x0d", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "CONNECT_BOARD_CPLD1": { + "dev_info": { + "device_type": "CPLD", + "device_name": "CONNECT_BOARD_CPLD1", + "device_parent": "SMBUS0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x0", + "dev_addr": "0x32", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "SMBUS1": { + "dev_info": { + "device_type": "SMBUS", + "device_name": "SMBUS1", + "device_parent": "SYSTEM" + }, + "i2c": { + "topo_info": { + "dev_addr": "0x2" + }, + "DEVICES": [{ + "dev": "MAC_BOARD_CPLD1_A" + }, + { + "dev": "MAC_BOARD_CPLD2_A" + }, + { + "dev": "CONNECT_BOARD_CPLD2" + }, + { + "dev": "FAN-CTRL" + }, + { + "dev": "TEMP1" + }, + { + "dev": "TEMP2" + }, + { + "dev": "TEMP3" + }, + { + "dev": "EEPROM1" + }, + { + "dev": "MUX1" + } + ] + } + }, + + "MAC_BOARD_CPLD1_A": { + "dev_info": { + "device_type": "CPLD", + "device_name": "MAC_BOARD_CPLD1_A", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x33", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "MAC_BOARD_CPLD2_A": { + "dev_info": { + "device_type": "CPLD", + "device_name": "MAC_BOARD_CPLD2_A", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x35", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "CONNECT_BOARD_CPLD2": { + "dev_info": { + "device_type": "CPLD", + "device_name": "CONNECT_BOARD_CPLD2", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x37", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "FAN-CTRL": { + "dev_info": { + "device_type": "FAN", + "device_name": "FAN-CTRL", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x66", + "dev_type": "fan_cpld" + }, + "dev_attr": { + "num_fantrays": "3" + }, + "attr_list": [{ + "attr_name": "fan1_present", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x30", + "attr_mask": "0x1", + "attr_cmpval": "0x0", + "attr_len": "1" + }, + { + "attr_name": "fan2_present", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x30", + "attr_mask": "0x2", + "attr_cmpval": "0x0", + "attr_len": "1" + }, + { + "attr_name": "fan3_present", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x30", + "attr_mask": "0x4", + "attr_cmpval": "0x0", + "attr_len": "1" + }, + { + "attr_name": "fan1_input", + "attr_devname": "CONNECT_BOARD_CPLD2", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x1b", + "attr_mult": "1", + "attr_len": "2" + }, + { + "attr_name": "fan2_input", + "attr_devname": "CONNECT_BOARD_CPLD2", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x1d", + "attr_mult": "1", + "attr_len": "2" + }, + { + "attr_name": "fan3_input", + "attr_devname": "CONNECT_BOARD_CPLD2", + "attr_devtype": "cpld", + "attr_devaddr": "0x37", + "attr_offset": "0x1f", + "attr_mult": "1", + "attr_len": "2" + }, + { + "attr_name": "fan1_pwm", + "attr_devtype": "cpld", + "attr_devaddr": "0x32", + "attr_offset": "0x15", + "attr_mask": "0xff", + "attr_len": "1" + }, + { + "attr_name": "fan2_pwm", + "attr_devtype": "cpld", + "attr_devaddr": "0x32", + "attr_offset": "0x15", + "attr_mask": "0xff", + "attr_len": "1" + }, + { + "attr_name": "fan3_pwm", + "attr_devtype": "cpld", + "attr_devaddr": "0x32", + "attr_offset": "0x15", + "attr_mask": "0xff", + "attr_len": "1" + } + ] + } + }, + + "TEMP1": { + "dev_info": { + "device_type": "TEMP_SENSOR", + "device_name": "MAC_TEMP_INLET", + "device_parent": "SMBUS1" + }, + "dev_attr": { + "display_name": "Temp_1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x48", + "dev_type": "lm75" + }, + "attr_list": [{ + "attr_name": "temp1_high_threshold", + "drv_attr_name": "temp1_max" + }, + { + "attr_name": "temp1_max_hyst" + }, + { + "attr_name": "temp1_input" + } + ] + } + }, + + "TEMP2": { + "dev_info": { + "device_type": "TEMP_SENSOR", + "device_name": "MAC_TEMP_OUTLET", + "device_parent": "SMBUS1" + }, + "dev_attr": { + "display_name": "Temp_2" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x49", + "dev_type": "lm75" + }, + "attr_list": [{ + "attr_name": "temp1_high_threshold", + "drv_attr_name": "temp1_max" + }, + { + "attr_name": "temp1_max_hyst" + }, + { + "attr_name": "temp1_input" + } + ] + } + }, + + "TEMP3": { + "dev_info": { + "device_type": "TEMP_SENSOR", + "device_name": "MAC_TEMP_HOTEST", + "device_parent": "SMBUS1" + }, + "dev_attr": { + "display_name": "Temp_3" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x4a", + "dev_type": "lm75" + }, + "attr_list": [{ + "attr_name": "temp1_high_threshold", + "drv_attr_name": "temp1_max" + }, + { + "attr_name": "temp1_max_hyst" + }, + { + "attr_name": "temp1_input" + } + ] + } + }, + + "EEPROM1": { + "dev_info": { + "device_type": "EEPROM", + "device_name": "EEPROM1", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x57", + "dev_type": "24c02" + }, + "dev_attr": { + "access_mode": "BLOCK" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "MUX1": { + "dev_info": { + "device_type": "MUX", + "device_name": "MUX1", + "device_parent": "SMBUS1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2", + "dev_addr": "0x70", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x3" + }, + "channel": [{ + "chn": "0", + "dev": "FAN1-EEPROM" + }, + { + "chn": "1", + "dev": "FAN2-EEPROM" + }, + { + "chn": "2", + "dev": "FAN3-EEPROM" + }, + { + "chn": "4", + "dev": "PSU1" + }, + { + "chn": "5", + "dev": "PSU2" + } + ] + } + }, + + "FAN1-EEPROM": { + "dev_info": { + "device_type": "EEPROM", + "device_name": "FAN1-EEPROM", + "device_parent": "MUX1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3", + "dev_addr": "0x53", + "dev_type": "rg_fan" + }, + "dev_attr": { + "access_mode": "BLOCK" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "FAN2-EEPROM": { + "dev_info": { + "device_type": "EEPROM", + "device_name": "FAN2-EEPROM", + "device_parent": "MUX1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x4", + "dev_addr": "0x53", + "dev_type": "rg_fan" + }, + "dev_attr": { + "access_mode": "BLOCK" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "FAN3-EEPROM": { + "dev_info": { + "device_type": "EEPROM", + "device_name": "FAN3-EEPROM", + "device_parent": "MUX1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x5", + "dev_addr": "0x53", + "dev_type": "rg_fan" + }, + "dev_attr": { + "access_mode": "BLOCK" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PSU1": { + "dev_info": { + "device_type": "PSU", + "device_name": "PSU1", + "device_parent": "MUX1" + }, + "dev_attr": { + "dev_idx": "1", + "num_psu_fans": "1" + }, + "i2c": { + "interface": [{ + "itf": "pmbus", + "dev": "PSU1-PMBUS" + }, + { + "itf": "eeprom", + "dev": "PSU1-EEPROM" + } + ] + } + }, + + "PSU1-PMBUS": { + "dev_info": { + "device_type": "PSU-PMBUS", + "device_name": "PSU1-PMBUS", + "device_parent": "MUX1", + "virt_parent": "PSU1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x7", + "dev_addr": "0x58", + "dev_type": "psu_pmbus" + }, + "attr_list": [{ + "attr_name": "psu_present", + "attr_devaddr": "0x37", + "attr_devtype": "cpld", + "attr_offset": "0x51", + "attr_mask": "0x1", + "attr_cmpval": "0x0", + "attr_len": "1" + }, + { + "attr_name": "psu_model_name", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x9a", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "12" + }, + { + "attr_name": "psu_power_good", + "attr_devaddr": "0x37", + "attr_devtype": "cpld", + "attr_offset": "0x51", + "attr_mask": "0x2", + "attr_cmpval": "0x2", + "attr_len": "1" + }, + { + "attr_name": "psu_mfr_id", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x99", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "10" + }, + { + "attr_name": "psu_fan_dir", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0xc3", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "5" + }, + { + "attr_name": "psu_v_out", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x8b", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_i_out", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x8c", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_p_out", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x96", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_fan1_speed_rpm", + "attr_devaddr": "0x58", + "attr_devtype": "pmbus", + "attr_offset": "0x90", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + } + ] + } + }, + + "PSU1-EEPROM": { + "dev_info": { + "device_type": "PSU-EEPROM", + "device_name": "PSU1-EEPROM", + "device_parent": "MUX1", + "virt_parent": "PSU1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x7", + "dev_addr": "0x50", + "dev_type": "psu_eeprom" + }, + "attr_list": [{ + "attr_name": "psu_serial_num", + "attr_devaddr": "0x50", + "attr_devtype": "eeprom", + "attr_offset": "0x38", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "20" + }] + } + }, + + "PSU2": { + "dev_info": { + "device_type": "PSU", + "device_name": "PSU2", + "device_parent": "MUX1" + }, + "dev_attr": { + "dev_idx": "2", + "num_psu_fans": "1" + }, + "i2c": { + "interface": [{ + "itf": "pmbus", + "dev": "PSU2-PMBUS" + }, + { + "itf": "eeprom", + "dev": "PSU2-EEPROM" + } + ] + } + }, + + "PSU2-PMBUS": { + "dev_info": { + "device_type": "PSU-PMBUS", + "device_name": "PSU2-PMBUS", + "device_parent": "MUX1", + "virt_parent": "PSU2" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x8", + "dev_addr": "0x5b", + "dev_type": "psu_pmbus" + }, + "attr_list": [{ + "attr_name": "psu_present", + "attr_devaddr": "0x37", + "attr_devtype": "cpld", + "attr_offset": "0x51", + "attr_mask": "0x8", + "attr_cmpval": "0x0", + "attr_len": "1" + }, + { + "attr_name": "psu_model_name", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x35", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "12" + }, + { + "attr_name": "psu_power_good", + "attr_devaddr": "0x37", + "attr_devtype": "cpld", + "attr_offset": "0x51", + "attr_mask": "0x10", + "attr_cmpval": "0x10", + "attr_len": "1" + }, + { + "attr_name": "psu_mfr_id", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x99", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "10" + }, + { + "attr_name": "psu_fan_dir", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0xc3", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "5" + }, + { + "attr_name": "psu_v_out", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x8b", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_i_out", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x8c", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_p_out", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x96", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_fan1_speed_rpm", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x90", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + }, + { + "attr_name": "psu_temp1_input", + "attr_devaddr": "0x5b", + "attr_devtype": "pmbus", + "attr_offset": "0x8d", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "2" + } + ] + } + }, + + "PSU2-EEPROM": { + "dev_info": { + "device_type": "PSU-EEPROM", + "device_name": "PSU2-EEPROM", + "device_parent": "MUX1", + "virt_parent": "PSU2" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x8", + "dev_addr": "0x53", + "dev_type": "psu_eeprom" + }, + "attr_list": [{ + "attr_name": "psu_serial_num", + "attr_devaddr": "0x53", + "attr_devtype": "eeprom", + "attr_offset": "0x38", + "attr_mask": "0x0", + "attr_cmpval": "0xff", + "attr_len": "20" + }] + } + }, + + "I2C-GPIO0": { + "dev_info": { + "device_type": "I2C-GPIO", + "device_name": "I2C-GPIO0", + "device_parent": "SYSTEM" + }, + "i2c": { + "topo_info": { + "dev_addr": "0x1" + }, + "DEVICES": [{ + "dev": "MAC_BOARD_CPLD1_B" + }, + { + "dev": "MAC_BOARD_CPLD2_B" + }, + { + "dev": "PORT-MUX1" + }, + { + "dev": "PORT-MUX2" + }, + { + "dev": "PORT-MUX3" + }, + { + "dev": "PORT-MUX4" + }, + { + "dev": "PORT-MUX5" + }, + { + "dev": "PORT-MUX6" + }, + { + "dev": "PORT-MUX7" + }, + { + "dev": "PORT-MUX8" + } + ] + } + }, + + "MAC_BOARD_CPLD1_B": { + "dev_info": { + "device_type": "CPLD", + "device_name": "MAC_BOARD_CPLD1_B", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x34", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "MAC_BOARD_CPLD2_B": { + "dev_info": { + "device_type": "CPLD", + "device_name": "MAC_BOARD_CPLD2_B", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x36", + "dev_type": "i2c_cpld" + }, + "dev_attr": {} + } + }, + + "PORT-MUX1": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX1", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x70", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0xb" + }, + "channel": [{ + "chn": "0", + "dev": "PORT1" + }, + { + "chn": "1", + "dev": "PORT2" + }, + { + "chn": "2", + "dev": "PORT3" + }, + { + "chn": "3", + "dev": "PORT4" + }, + { + "chn": "4", + "dev": "PORT5" + }, + { + "chn": "5", + "dev": "PORT6" + }, + { + "chn": "6", + "dev": "PORT7" + }, + { + "chn": "7", + "dev": "PORT8" + } + ] + } + }, + + "PORT-MUX2": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX2", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x71", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x13" + }, + "channel": [{ + "chn": "0", + "dev": "PORT9" + }, + { + "chn": "1", + "dev": "PORT10" + }, + { + "chn": "2", + "dev": "PORT11" + }, + { + "chn": "3", + "dev": "PORT12" + }, + { + "chn": "4", + "dev": "PORT13" + }, + { + "chn": "5", + "dev": "PORT14" + }, + { + "chn": "6", + "dev": "PORT15" + }, + { + "chn": "7", + "dev": "PORT16" + } + ] + } + }, + + "PORT-MUX3": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX3", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x72", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x1b" + }, + "channel": [{ + "chn": "0", + "dev": "PORT17" + }, + { + "chn": "1", + "dev": "PORT18" + }, + { + "chn": "2", + "dev": "PORT19" + }, + { + "chn": "3", + "dev": "PORT20" + }, + { + "chn": "4", + "dev": "PORT21" + }, + { + "chn": "5", + "dev": "PORT22" + }, + { + "chn": "6", + "dev": "PORT23" + }, + { + "chn": "7", + "dev": "PORT24" + } + ] + } + }, + + "PORT-MUX4": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX4", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x73", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x23" + }, + "channel": [{ + "chn": "0", + "dev": "PORT25" + }, + { + "chn": "1", + "dev": "PORT26" + }, + { + "chn": "2", + "dev": "PORT27" + }, + { + "chn": "3", + "dev": "PORT28" + }, + { + "chn": "4", + "dev": "PORT29" + }, + { + "chn": "5", + "dev": "PORT30" + }, + { + "chn": "6", + "dev": "PORT31" + }, + { + "chn": "7", + "dev": "PORT32" + } + ] + } + }, + + "PORT-MUX5": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX5", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x74", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x2b" + }, + "channel": [{ + "chn": "0", + "dev": "PORT33" + }, + { + "chn": "1", + "dev": "PORT34" + }, + { + "chn": "2", + "dev": "PORT35" + }, + { + "chn": "3", + "dev": "PORT36" + }, + { + "chn": "4", + "dev": "PORT37" + }, + { + "chn": "5", + "dev": "PORT38" + }, + { + "chn": "6", + "dev": "PORT39" + }, + { + "chn": "7", + "dev": "PORT40" + } + ] + } + }, + + "PORT-MUX6": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX6", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x75", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x33" + }, + "channel": [{ + "chn": "0", + "dev": "PORT41" + }, + { + "chn": "1", + "dev": "PORT42" + }, + { + "chn": "2", + "dev": "PORT43" + }, + { + "chn": "3", + "dev": "PORT44" + }, + { + "chn": "4", + "dev": "PORT45" + }, + { + "chn": "5", + "dev": "PORT46" + }, + { + "chn": "6", + "dev": "PORT47" + }, + { + "chn": "7", + "dev": "PORT48" + } + ] + } + }, + + "PORT-MUX7": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX7", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x76", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x3b" + }, + "channel": [{ + "chn": "0", + "dev": "PORT49" + }, + { + "chn": "1", + "dev": "PORT50" + }, + { + "chn": "2", + "dev": "PORT51" + }, + { + "chn": "3", + "dev": "PORT52" + }, + { + "chn": "4", + "dev": "PORT53" + }, + { + "chn": "5", + "dev": "PORT54" + }, + { + "chn": "6", + "dev": "PORT55" + }, + { + "chn": "7", + "dev": "PORT56" + } + ] + } + }, + + "PORT-MUX8": { + "dev_info": { + "device_type": "MUX", + "device_name": "PORT-MUX8", + "device_parent": "I2C-GPIO0" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1", + "dev_addr": "0x77", + "dev_type": "pca9548" + }, + "dev_attr": { + "virt_bus": "0x43" + }, + "channel": [{ + "chn": "0", + "dev": "PORT57" + }, + { + "chn": "1", + "dev": "PORT58" + }, + { + "chn": "2", + "dev": "PORT59" + }, + { + "chn": "3", + "dev": "PORT60" + }, + { + "chn": "4", + "dev": "PORT61" + }, + { + "chn": "5", + "dev": "PORT62" + }, + { + "chn": "6", + "dev": "PORT63" + }, + { + "chn": "7", + "dev": "PORT64" + } + ] + } + }, + + "PORT1": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT1", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "1" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT1-EEPROM" + }, { + "itf": "control", + "dev": "PORT1-CTRL" + }] + } + }, + + "PORT1-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT1-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xb", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT1-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT1-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT1" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xb", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT2": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT2", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "2" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT2-EEPROM" + }, { + "itf": "control", + "dev": "PORT2-CTRL" + }] + } + }, + + "PORT2-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT2-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT2" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xc", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT2-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT2-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT2" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xc", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT3": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT3", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "3" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT3-EEPROM" + }, { + "itf": "control", + "dev": "PORT3-CTRL" + }] + } + }, + + "PORT3-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT3-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT3" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xd", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT3-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT3-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT3" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xd", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT4": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT4", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "4" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT4-EEPROM" + }, { + "itf": "control", + "dev": "PORT4-CTRL" + }] + } + }, + + "PORT4-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT4-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT4" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xe", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT4-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT4-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT4" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xe", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT5": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT5", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "5" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT5-EEPROM" + }, { + "itf": "control", + "dev": "PORT5-CTRL" + }] + } + }, + + "PORT5-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT5-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT5" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xf", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT5-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT5-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT5" + }, + "i2c": { + "topo_info": { + "parent_bus": "0xf", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT6": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT6", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "6" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT6-EEPROM" + }, { + "itf": "control", + "dev": "PORT6-CTRL" + }] + } + }, + + "PORT6-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT6-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT6" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x10", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT6-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT6-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT6" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x10", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT7": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT7", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "7" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT7-EEPROM" + }, { + "itf": "control", + "dev": "PORT7-CTRL" + }] + } + }, + + "PORT7-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT7-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT7" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x11", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT7-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT7-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT7" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x11", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT8": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT8", + "device_parent": "PORT-MUX1" + }, + "dev_attr": { + "dev_idx": "8" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT8-EEPROM" + }, { + "itf": "control", + "dev": "PORT8-CTRL" + }] + } + }, + + "PORT8-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT8-EEPROM", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT8" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x12", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT8-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT8-CTRL", + "device_parent": "PORT-MUX1", + "virt_parent": "PORT8" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x12", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT9": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT9", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "9" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT9-EEPROM" + }, { + "itf": "control", + "dev": "PORT9-CTRL" + }] + } + }, + + "PORT9-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT9-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT9" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x13", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT9-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT9-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT9" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x13", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT10": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT10", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "10" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT10-EEPROM" + }, { + "itf": "control", + "dev": "PORT10-CTRL" + }] + } + }, + + "PORT10-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT10-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT10" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x14", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT10-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT10-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT10" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x14", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT11": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT11", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "11" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT11-EEPROM" + }, { + "itf": "control", + "dev": "PORT11-CTRL" + }] + } + }, + + "PORT11-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT11-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT11" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x15", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT11-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT11-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT11" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x15", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT12": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT12", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "12" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT12-EEPROM" + }, { + "itf": "control", + "dev": "PORT12-CTRL" + }] + } + }, + + "PORT12-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT12-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT12" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x16", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT12-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT12-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT12" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x16", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT13": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT13", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "13" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT13-EEPROM" + }, { + "itf": "control", + "dev": "PORT13-CTRL" + }] + } + }, + + "PORT13-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT13-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT13" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x17", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT13-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT13-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT13" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x17", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT14": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT14", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "14" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT14-EEPROM" + }, { + "itf": "control", + "dev": "PORT14-CTRL" + }] + } + }, + + "PORT14-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT14-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT14" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x18", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT14-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT14-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT14" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x18", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT15": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT15", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "15" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT15-EEPROM" + }, { + "itf": "control", + "dev": "PORT15-CTRL" + }] + } + }, + + "PORT15-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT15-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT15" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x19", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT15-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT15-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT15" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x19", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT16": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT16", + "device_parent": "PORT-MUX2" + }, + "dev_attr": { + "dev_idx": "16" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT16-EEPROM" + }, { + "itf": "control", + "dev": "PORT16-CTRL" + }] + } + }, + + "PORT16-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT16-EEPROM", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT16" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1a", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT16-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT16-CTRL", + "device_parent": "PORT-MUX2", + "virt_parent": "PORT16" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1a", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT17": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT17", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "17" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT17-EEPROM" + }, { + "itf": "control", + "dev": "PORT17-CTRL" + }] + } + }, + + "PORT17-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT17-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT17" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1b", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT17-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT17-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT17" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1b", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT18": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT18", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "18" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT18-EEPROM" + }, { + "itf": "control", + "dev": "PORT18-CTRL" + }] + } + }, + + "PORT18-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT18-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT18" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1c", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT18-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT18-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT18" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1c", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT19": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT19", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "19" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT19-EEPROM" + }, { + "itf": "control", + "dev": "PORT19-CTRL" + }] + } + }, + + "PORT19-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT19-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT19" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1d", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT19-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT19-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT19" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1d", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT20": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT20", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "20" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT20-EEPROM" + }, { + "itf": "control", + "dev": "PORT20-CTRL" + }] + } + }, + + "PORT20-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT20-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT20" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1e", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT20-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT20-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT20" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1e", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT21": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT21", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "21" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT21-EEPROM" + }, { + "itf": "control", + "dev": "PORT21-CTRL" + }] + } + }, + + "PORT21-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT21-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT21" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1f", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT21-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT21-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT21" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x1f", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT22": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT22", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "22" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT22-EEPROM" + }, { + "itf": "control", + "dev": "PORT22-CTRL" + }] + } + }, + + "PORT22-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT22-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT22" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x20", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT22-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT22-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT22" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x20", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT23": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT23", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "23" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT23-EEPROM" + }, { + "itf": "control", + "dev": "PORT23-CTRL" + }] + } + }, + + "PORT23-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT23-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT23" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x21", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT23-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT23-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT23" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x21", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT24": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT24", + "device_parent": "PORT-MUX3" + }, + "dev_attr": { + "dev_idx": "24" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT24-EEPROM" + }, { + "itf": "control", + "dev": "PORT24-CTRL" + }] + } + }, + + "PORT24-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT24-EEPROM", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT24" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x22", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT24-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT24-CTRL", + "device_parent": "PORT-MUX3", + "virt_parent": "PORT24" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x22", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x30", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x40", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xb9", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT25": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT25", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "25" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT25-EEPROM" + }, { + "itf": "control", + "dev": "PORT25-CTRL" + }] + } + }, + + "PORT25-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT25-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT25" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x23", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT25-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT25-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT25" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x23", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT26": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT26", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "26" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT26-EEPROM" + }, { + "itf": "control", + "dev": "PORT26-CTRL" + }] + } + }, + + "PORT26-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT26-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT26" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x24", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT26-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT26-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT26" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x24", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT27": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT27", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "27" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT27-EEPROM" + }, { + "itf": "control", + "dev": "PORT27-CTRL" + }] + } + }, + + "PORT27-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT27-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT27" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x25", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT27-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT27-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT27" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x25", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT28": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT28", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "28" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT28-EEPROM" + }, { + "itf": "control", + "dev": "PORT28-CTRL" + }] + } + }, + + "PORT28-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT28-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT28" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x26", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT28-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT28-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT28" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x26", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT29": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT29", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "29" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT29-EEPROM" + }, { + "itf": "control", + "dev": "PORT29-CTRL" + }] + } + }, + + "PORT29-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT29-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT29" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x27", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT29-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT29-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT29" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x27", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT30": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT30", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "30" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT30-EEPROM" + }, { + "itf": "control", + "dev": "PORT30-CTRL" + }] + } + }, + + "PORT30-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT30-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT30" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x28", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT30-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT30-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT30" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x28", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT31": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT31", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "31" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT31-EEPROM" + }, { + "itf": "control", + "dev": "PORT31-CTRL" + }] + } + }, + + "PORT31-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT31-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT31" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x29", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT31-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT31-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT31" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x29", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT32": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT32", + "device_parent": "PORT-MUX4" + }, + "dev_attr": { + "dev_idx": "32" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT32-EEPROM" + }, { + "itf": "control", + "dev": "PORT32-CTRL" + }] + } + }, + + "PORT32-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT32-EEPROM", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT32" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2a", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT32-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT32-CTRL", + "device_parent": "PORT-MUX4", + "virt_parent": "PORT32" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2a", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x31", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x41", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xba", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT33": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT33", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "33" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT33-EEPROM" + }, { + "itf": "control", + "dev": "PORT33-CTRL" + }] + } + }, + + "PORT33-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT33-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT33" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2b", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT33-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT33-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT33" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2b", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT34": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT34", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "34" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT34-EEPROM" + }, { + "itf": "control", + "dev": "PORT34-CTRL" + }] + } + }, + + "PORT34-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT34-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT34" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2c", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT34-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT34-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT34" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2c", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT35": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT35", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "35" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT35-EEPROM" + }, { + "itf": "control", + "dev": "PORT35-CTRL" + }] + } + }, + + "PORT35-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT35-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT35" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2d", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT35-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT35-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT35" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2d", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT36": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT36", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "36" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT36-EEPROM" + }, { + "itf": "control", + "dev": "PORT36-CTRL" + }] + } + }, + + "PORT36-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT36-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT36" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2e", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT36-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT36-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT36" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2e", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT37": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT37", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "37" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT37-EEPROM" + }, { + "itf": "control", + "dev": "PORT37-CTRL" + }] + } + }, + + "PORT37-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT37-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT37" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2f", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT37-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT37-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT37" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x2f", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT38": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT38", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "38" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT38-EEPROM" + }, { + "itf": "control", + "dev": "PORT38-CTRL" + }] + } + }, + + "PORT38-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT38-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT38" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x30", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT38-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT38-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT38" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x30", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT39": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT39", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "39" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT39-EEPROM" + }, { + "itf": "control", + "dev": "PORT39-CTRL" + }] + } + }, + + "PORT39-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT39-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT39" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x31", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT39-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT39-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT39" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x31", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT40": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT40", + "device_parent": "PORT-MUX5" + }, + "dev_attr": { + "dev_idx": "40" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT40-EEPROM" + }, { + "itf": "control", + "dev": "PORT40-CTRL" + }] + } + }, + + "PORT40-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT40-EEPROM", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT40" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x32", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT40-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT40-CTRL", + "device_parent": "PORT-MUX5", + "virt_parent": "PORT40" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x32", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT41": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT41", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "41" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT41-EEPROM" + }, { + "itf": "control", + "dev": "PORT41-CTRL" + }] + } + }, + + "PORT41-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT41-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT41" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x33", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT41-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT41-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT41" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x33", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT42": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT42", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "42" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT42-EEPROM" + }, { + "itf": "control", + "dev": "PORT42-CTRL" + }] + } + }, + + "PORT42-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT42-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT42" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x34", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT42-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT42-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT42" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x34", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT43": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT43", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "43" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT43-EEPROM" + }, { + "itf": "control", + "dev": "PORT43-CTRL" + }] + } + }, + + "PORT43-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT43-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT43" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x35", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT43-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT43-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT43" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x35", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT44": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT44", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "44" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT44-EEPROM" + }, { + "itf": "control", + "dev": "PORT44-CTRL" + }] + } + }, + + "PORT44-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT44-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT44" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x36", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT44-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT44-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT44" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x36", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT45": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT45", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "45" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT45-EEPROM" + }, { + "itf": "control", + "dev": "PORT45-CTRL" + }] + } + }, + + "PORT45-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT45-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT45" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x37", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT45-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT45-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT45" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x37", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT46": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT46", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "46" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT46-EEPROM" + }, { + "itf": "control", + "dev": "PORT46-CTRL" + }] + } + }, + + "PORT46-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT46-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT46" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x38", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT46-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT46-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT46" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x38", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT47": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT47", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "47" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT47-EEPROM" + }, { + "itf": "control", + "dev": "PORT47-CTRL" + }] + } + }, + + "PORT47-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT47-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT47" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x39", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT47-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT47-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT47" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x39", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT48": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT48", + "device_parent": "PORT-MUX6" + }, + "dev_attr": { + "dev_idx": "48" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT48-EEPROM" + }, { + "itf": "control", + "dev": "PORT48-CTRL" + }] + } + }, + + "PORT48-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT48-EEPROM", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT48" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3a", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT48-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT48-CTRL", + "device_parent": "PORT-MUX6", + "virt_parent": "PORT48" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3a", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD1_B", + "attr_devaddr": "0x34", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT49": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT49", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "49" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT49-EEPROM" + }, { + "itf": "control", + "dev": "PORT49-CTRL" + }] + } + }, + + "PORT49-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT49-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT49" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3b", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT49-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT49-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT49" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3b", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT50": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT50", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "50" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT50-EEPROM" + }, { + "itf": "control", + "dev": "PORT50-CTRL" + }] + } + }, + + "PORT50-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT50-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT50" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3c", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT50-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT50-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT50" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3c", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT51": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT51", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "51" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT51-EEPROM" + }, { + "itf": "control", + "dev": "PORT51-CTRL" + }] + } + }, + + "PORT51-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT51-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT51" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3d", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT51-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT51-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT51" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3d", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT52": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT52", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "52" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT52-EEPROM" + }, { + "itf": "control", + "dev": "PORT52-CTRL" + }] + } + }, + + "PORT52-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT52-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT52" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3e", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT52-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT52-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT52" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3e", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT53": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT53", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "53" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT53-EEPROM" + }, { + "itf": "control", + "dev": "PORT53-CTRL" + }] + } + }, + + "PORT53-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT53-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT53" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3f", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT53-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT53-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT53" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x3f", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + + "PORT54": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT54", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "54" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT54-EEPROM" + }, { + "itf": "control", + "dev": "PORT54-CTRL" + }] + } + }, + + "PORT54-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT54-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT54" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x40", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT54-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT54-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT54" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x40", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT55": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT55", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "55" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT55-EEPROM" + }, { + "itf": "control", + "dev": "PORT55-CTRL" + }] + } + }, + + "PORT55-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT55-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT55" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x41", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT55-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT55-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT55" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x41", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT56": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT56", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "56" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT56-EEPROM" + }, { + "itf": "control", + "dev": "PORT56-CTRL" + }] + } + }, + + "PORT56-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT56-EEPROM", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT56" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x42", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT56-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT56-CTRL", + "device_parent": "PORT-MUX7", + "virt_parent": "PORT56" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x42", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x32", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x42", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbb", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT57": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT57", + "device_parent": "PORT-MUX7" + }, + "dev_attr": { + "dev_idx": "57" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT57-EEPROM" + }, { + "itf": "control", + "dev": "PORT57-CTRL" + }] + } + }, + + "PORT57-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT57-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT57" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x43", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT57-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT57-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT57" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x43", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x00", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT58": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT58", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "58" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT58-EEPROM" + }, { + "itf": "control", + "dev": "PORT58-CTRL" + }] + } + }, + + "PORT58-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT58-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT58" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x44", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT58-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT58-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT58" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x44", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x01", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT59": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT59", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "59" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT59-EEPROM" + }, { + "itf": "control", + "dev": "PORT59-CTRL" + }] + } + }, + + "PORT59-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT59-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT59" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x45", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT59-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT59-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT59" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x45", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x02", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT60": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT60", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "60" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT60-EEPROM" + }, { + "itf": "control", + "dev": "PORT60-CTRL" + }] + } + }, + + "PORT60-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT60-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT60" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x46", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT60-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT60-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT60" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x46", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x03", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT61": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT61", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "61" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT61-EEPROM" + }, { + "itf": "control", + "dev": "PORT61-CTRL" + }] + } + }, + + "PORT61-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT61-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT61" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x47", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT61-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT61-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT61" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x47", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x04", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT62": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT62", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "62" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT62-EEPROM" + }, { + "itf": "control", + "dev": "PORT62-CTRL" + }] + } + }, + + "PORT62-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT62-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT62" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x48", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT62-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT62-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT62" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x48", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x05", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT63": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT63", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "63" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT63-EEPROM" + }, { + "itf": "control", + "dev": "PORT63-CTRL" + }] + } + }, + + "PORT63-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT63-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT63" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x49", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT63-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT63-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT63" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x49", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x06", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "PORT64": { + "dev_info": { + "device_type": "QSFP28", + "device_name": "PORT64", + "device_parent": "PORT-MUX8" + }, + "dev_attr": { + "dev_idx": "64" + }, + "i2c": { + "interface": [{ + "itf": "eeprom", + "dev": "PORT64-EEPROM" + }, { + "itf": "control", + "dev": "PORT64-CTRL" + }] + } + }, + + "PORT64-EEPROM": { + "dev_info": { + "device_type": "", + "device_name": "PORT64-EEPROM", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT64" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x4a", + "dev_addr": "0x50", + "dev_type": "optoe1" + }, + "attr_list": [{ + "attr_name": "eeprom" + }] + } + }, + + "PORT64-CTRL": { + "dev_info": { + "device_type": "", + "device_name": "PORT64-CTRL", + "device_parent": "PORT-MUX8", + "virt_parent": "PORT64" + }, + "i2c": { + "topo_info": { + "parent_bus": "0x4a", + "dev_addr": "0x53", + "dev_type": "pddf_xcvr" + }, + "attr_list": [{ + "attr_name": "xcvr_present", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x33", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_intr_status", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0x43", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }, { + "attr_name": "xcvr_reset", + "attr_devname": "MAC_BOARD_CPLD2_B", + "attr_devaddr": "0x36", + "attr_devtype": "cpld", + "attr_offset": "0xbc", + "attr_mask": "0x07", + "attr_cmpval": "0x0", + "attr_len": "1" + }] + } + }, + + "FRONT_BOARD_BMC_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "DIAG_LED" + }, + "dev_attr": { + "index": "0" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "2:0", + "value": "0x2", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "2:0", + "value": "0x1", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "2:0", + "value": "0x4", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "2:0", + "value": "0x3", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "2:0", + "value": "0x6", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "2:0", + "value": "0x5", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "2:0", + "value": "0x0", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb1" + } + ] + } + }, + + "FRONT_BOARD_CPU_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "SYS_LED" + }, + "dev_attr": { + "index": "0" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "2:0", + "value": "0x2", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "2:0", + "value": "0x1", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "2:0", + "value": "0x4", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "2:0", + "value": "0x3", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "2:0", + "value": "0x6", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "2:0", + "value": "0x5", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "2:0", + "value": "0x0", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb2" + } + ] + } + }, + + "FRONT_BOARD_PSU_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "LOC_LED" + }, + "dev_attr": { + "index": "0" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "2:0", + "value": "0x2", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "2:0", + "value": "0x1", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "2:0", + "value": "0x4", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "2:0", + "value": "0x3", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "2:0", + "value": "0x6", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "2:0", + "value": "0x5", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "2:0", + "value": "0x0", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb3" + } + ] + } + }, + + "FRONT_BOARD_FAN_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "FAN_LED" + }, + "dev_attr": { + "index": "0" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "2:0", + "value": "0x2", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "2:0", + "value": "0x1", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "2:0", + "value": "0x4", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "2:0", + "value": "0x3", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "2:0", + "value": "0x6", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "2:0", + "value": "0x5", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "2:0", + "value": "0x0", + "swpld_addr": "0x35", + "swpld_addr_offset": "0xb4" + } + ] + } + }, + + "FAN1_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "FANTRAY_LED" + }, + "dev_attr": { + "index": "0" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "3:0", + "value": "0xa", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "3:0", + "value": "0xe", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "3:0", + "value": "0x9", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "3:0", + "value": "0xd", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "3:0", + "value": "0x3", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "3:0", + "value": "0x7", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "3:0", + "value": "0xb", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x23" + } + ] + } + }, + + "FAN2_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "FANTRAY_LED" + }, + "dev_attr": { + "index": "1" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "3:0", + "value": "0xa", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "3:0", + "value": "0xe", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "3:0", + "value": "0x9", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "3:0", + "value": "0xd", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "3:0", + "value": "0x3", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "3:0", + "value": "0x7", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "3:0", + "value": "0xb", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x24" + } + ] + } + }, + + "FAN3_LED": { + "dev_info": { + "device_type": "LED", + "device_name": "FANTRAY_LED" + }, + "dev_attr": { + "index": "2" + }, + "i2c": { + "attr_list": [{ + "attr_name": "STATUS_LED_COLOR_RED", + "descr": "Red", + "bits": "3:0", + "value": "0xa", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_RED_BLINK", + "descr": "Red Blinking", + "bits": "3:0", + "value": "0xe", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN", + "descr": "Green", + "bits": "3:0", + "value": "0x9", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_GREEN_BLINK", + "descr": "Green Blinking", + "bits": "3:0", + "value": "0xd", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER", + "descr": "Amber", + "bits": "3:0", + "value": "0x3", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_AMBER_BLINK", + "descr": "Amber Blinking", + "bits": "3:0", + "value": "0x7", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + }, + { + "attr_name": "STATUS_LED_COLOR_OFF", + "descr": "Off", + "bits": "3:0", + "value": "0xb", + "swpld_addr": "0x32", + "swpld_addr_offset": "0x25" + } + ] + } + } +} diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf_support b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pddf_support new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/platform_env.conf b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/platform_env.conf new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/eeprom.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/eeprom.py new file mode 100755 index 000000000000..cf7215e0c9ac --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/eeprom.py @@ -0,0 +1,25 @@ +try: + import os + import sys + import json + sys.path.append('/usr/share/sonic/platform/plugins') + import pddfparse + #from sonic_eeprom import eeprom_base + from sonic_eeprom import eeprom_tlvinfo +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class board(eeprom_tlvinfo.TlvInfoDecoder): + _TLV_INFO_MAX_LEN = 256 + + def __init__(self, name, path, cpld_root, ro): + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + # system EEPROM always has device name EEPROM1 + self.eeprom_path = pddf_obj.get_path("EEPROM1", "eeprom") + super(board, self).__init__(self.eeprom_path, 0, '', True) diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/fanutil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/fanutil.py new file mode 100755 index 000000000000..f34c260035e8 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/fanutil.py @@ -0,0 +1,199 @@ +# Sample pddf_fanutil file +# All the supported FAN SysFS aattributes are +#- fan_present +#- fan_direction +#- fan_input +#- fan_pwm +#- fan_fault +# where idx is in the range [1-12] +# + + +import os.path +import sys +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse +import json + +try: + from sonic_fan.fan_base import FanBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class FanUtil(FanBase): + """PDDF generic FAN util class""" + + def __init__(self): + FanBase.__init__(self) + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + self.platform = pddf_obj.get_platform() + + self.num_fans = (self.platform['num_fantrays'] * self.platform['num_fans_pertray']) + + def get_num_fans(self): + return self.num_fans + + def get_presence(self, idx): + # 1 based fan index + if idx < 1 or idx > self.num_fans: + print("Invalid fan index %d\n" % idx) + return False + + attr_name = "fan" + str(idx) + "_present" + output = pddf_obj.get_attr_name_output("FAN-CTRL", attr_name) + if not output: + return False + + mode = output['mode'] + presence = output['status'].rstrip() + + vmap = plugin_data['FAN']['present'][mode]['valmap'] + + if presence in vmap: + status = vmap[presence] + else: + status = False + + return status + + def get_status(self, idx): + # 1 based fan index + if idx < 1 or idx > self.num_fans: + print("Invalid fan index %d\n" % idx) + return False + + speed = self.get_speed(idx) + status = True if (speed != 0) else False + return status + + def get_direction(self, idx): + # 1 based fan index + if idx < 1 or idx > self.num_fans: + print("Invalid fan index %d\n" % idx) + return None + + attr = "fan" + str(idx) + "_direction" + output = pddf_obj.get_attr_name_output("FAN-CTRL", attr) + if not output: + return None + + mode = output['mode'] + val = output['status'] + + val = val.rstrip() + vmap = plugin_data['FAN']['direction'][mode]['valmap'] + + if val in vmap: + direction = vmap[val] + else: + direction = val + + return direction + + def get_directions(self): + num_fan = self.get_num_fan() + + for i in range(1, num_fan+1): + attr = "fan" + str(i) + "_direction" + output = pddf_obj.get_attr_name_output("FAN-CTRL", attr) + if not output: + return None + + mode = output['mode'] + val = output['status'] + + val = val.rstrip() + vmap = plugin_data['FAN']['direction'][mode]['valmap'] + + direction = vmap[str(val)] + + print("FAN-%d direction is %s" % (i, direction)) + + return 0 + + def get_speed(self, idx): + # 1 based fan index + if idx < 1 or idx > self.num_fans: + print("Invalid fan index %d\n" % idx) + return 0 + + attr = "fan" + str(idx) + "_input" + output = pddf_obj.get_attr_name_output("FAN-CTRL", attr) + if not output: + return 0 + + #mode = output['mode'] + val = output['status'].rstrip() + + if val.isalpha(): + return 0 + else: + rpm_speed = int(float(val)) + + return rpm_speed + + def get_speeds(self): + num_fan = self.get_num_fan() + ret = "FAN_INDEX\t\tRPM\n" + + for i in range(1, num_fan+1): + attr1 = "fan" + str(i) + "_input" + output = pddf_obj.get_attr_name_output("FAN-CTRL", attr1) + if not output: + return "" + + #mode = output['mode'] + val = output['status'].rstrip() + + if val.isalpha(): + frpm = 0 + else: + frpm = int(val) + + ret += "FAN-%d\t\t\t%d\n" % (i, frpm) + + return ret + + def set_speed(self, val): + if val < 0 or val > 100: + print("Error: Invalid speed %d. Please provide a valid speed percentage" % val) + return False + + num_fan = self.num_fans + if 'duty_cycle_to_pwm' not in plugin_data['FAN']: + print("Setting fan speed is not allowed !") + return False + else: + duty_cycle_to_pwm = eval(plugin_data['FAN']['duty_cycle_to_pwm']) + pwm = duty_cycle_to_pwm(val) + print("New Speed: %d%% - PWM value to be set is %d\n" % (val, pwm)) + + for i in range(1, num_fan+1): + attr = "fan" + str(i) + "_pwm" + node = pddf_obj.get_path("FAN-CTRL", attr) + if node is None: + return False + try: + with open(node, 'w') as f: + f.write(str(pwm)) + except IOError: + return False + + return True + + def dump_sysfs(self): + return pddf_obj.cli_dump_dsysfs('fan') + + def get_change_event(self): + """ + TODO: This function need to be implemented + when decide to support monitoring FAN(fand) + on this platform. + """ + raise NotImplementedError diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/ledutil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/ledutil.py new file mode 100755 index 000000000000..5f9e2e99dbfa --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/ledutil.py @@ -0,0 +1,59 @@ +import sys +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse + + +class LedUtil: + color_map = { + "STATUS_LED_COLOR_GREEN": "on", + "STATUS_LED_COLOR_RED": "faulty", + "STATUS_LED_COLOR_OFF": "off" + } + + def __init__(self): + global pddf_obj + pddf_obj = pddfparse.PddfParse() + self.path = "pddf/devices/led" + self.cur_state_path = "pddf/devices/led/cur_state" + + def set_status_led(self, led_device_name, color, color_state="SOLID"): + if (not led_device_name in list(pddf_obj.data.keys())): + status = "ERROR: " + led_device_name + " is not configured" + return (status) + + if (not color in list(self.color_map.keys())): + status = "ERROR: Invalid color" + return (status) + + index = pddf_obj.data[led_device_name]['dev_attr']['index'] + pddf_obj.create_attr('device_name', led_device_name, self.path) + pddf_obj.create_attr('index', index, self.path) + pddf_obj.create_attr( + 'color', self.color_map[color], self.cur_state_path) + pddf_obj.create_attr('color_state', color_state, self.cur_state_path) + pddf_obj.create_attr('dev_ops', 'set_status', self.path) + return ("Executed") + + def get_status_led(self, led_device_name): + if (not led_device_name in list(pddf_obj.data.keys())): + status = "ERROR: " + led_device_name + " is not configured" + return (status) + + index = pddf_obj.data[led_device_name]['dev_attr']['index'] + pddf_obj.create_attr('device_name', led_device_name, self.path) + pddf_obj.create_attr('index', index, self.path) + pddf_obj.create_attr('dev_ops', 'get_status', self.path) + color_f = "/sys/kernel/" + self.cur_state_path + "/color" + color_state_f = "/sys/kernel/" + self.cur_state_path + "/color_state" + + try: + with open(color_f, 'r') as f: + color = f.read().strip("\r\n") + with open(color_state_f, 'r') as f: + color_state = f.read().strip("\r\n") + except IOError: + status = "ERROR :" + color_f + " open failed" + return (status) + status = "%s-%s:\t%s %s\n" % (led_device_name, + index, color, color_state) + return (status) diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/psuutil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/psuutil.py new file mode 100755 index 000000000000..dccb1ac1a155 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/psuutil.py @@ -0,0 +1,270 @@ +# +# Sample pddf_psuutil file +# +# All the supported PSU SysFS aattributes are +#- psu_present +#- psu_model_name +#- psu_power_good +#- psu_mfr_id +#- psu_serial_num +#- psu_fan_dir +#- psu_v_out +#- psu_i_out +#- psu_p_out +#- psu_fan1_speed_rpm +# + +import os.path +import sys +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse +import json + +try: + from sonic_psu.psu_base import PsuBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class PsuUtil(PsuBase): + """PDDF generic PSU util class""" + + def __init__(self): + PsuBase.__init__(self) + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + self.platform = pddf_obj.get_platform() + + def get_num_psus(self): + return int(self.platform['num_psus']) + + def get_psu_status(self, index): + if index is None: + return False + + device = "PSU" + "%d" % index + output = pddf_obj.get_attr_name_output(device, "psu_power_good") + if not output: + return False + + mode = output['mode'] + val = output['status'] + + val = val.rstrip() + vmap = plugin_data['PSU']['psu_power_good'][mode]['valmap'] + + if val in vmap: + return vmap[val] + else: + return False + + def get_psu_presence(self, index): + if index is None: + return False + + status = 0 + device = "PSU" + "%d" % index + output = pddf_obj.get_attr_name_output(device, "psu_present") + if not output: + return False + + mode = output['mode'] + status = output['status'] + + vmap = plugin_data['PSU']['psu_present'][mode]['valmap'] + + if status.rstrip('\n') in vmap: + return vmap[status.rstrip('\n')] + else: + return False + + def get_powergood_status(self, idx): + if idx is None: + return False + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return False + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_power_good") + if not output: + return False + + mode = output['mode'] + status = output['status'] + + vmap = plugin_data['PSU']['psu_power_good'][mode]['valmap'] + + if status.rstrip('\n') in vmap: + return vmap[status.rstrip('\n')] + else: + return False + + def get_model(self, idx): + if idx is None: + return None + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return None + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_model_name") + if not output: + return None + + model = output['status'] + + # strip_non_ascii + stripped = (c for c in model if 0 < ord(c) < 127) + model = ''.join(stripped) + + return model.rstrip('\n') + + def get_mfr_id(self, idx): + if idx is None: + return None + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return None + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_mfr_id") + if not output: + return None + + mfr = output['status'] + + return mfr.rstrip('\n') + + def get_serial(self, idx): + if idx is None: + return None + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return None + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_serial_num") + if not output: + return None + + serial = output['status'] + + return serial.rstrip('\n') + + def get_direction(self, idx): + if idx is None: + return None + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return None + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_fan_dir") + if not output: + return None + + mode = output['mode'] + direction = output['status'].rstrip('\n') + + vmap = plugin_data['PSU']['psu_fan_dir'][mode]['valmap'] + if direction in vmap: + airflow_dir_real = vmap[direction] + else: + airflow_dir_real = direction + + return airflow_dir_real + + def get_output_voltage(self, idx): + if idx is None: + return 0.0 + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return 0.0 + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_v_out") + if not output: + return 0.0 + + v_out = output['status'] + + # value returned by the psu driver is in mV + return float(v_out)/1000 + + def get_output_current(self, idx): + if idx is None: + return 0.0 + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return 0.0 + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_i_out") + if not output: + return 0.0 + + i_out = output['status'] + + # current in mA + return float(i_out)/1000 + + def get_output_power(self, idx): + if idx is None: + return 0.0 + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return 0.0 + + device = "PSU"+"%d" % (idx) + output = pddf_obj.get_attr_name_output(device, "psu_p_out") + if not output: + return 0.0 + + p_out = output['status'] + + # power is returned in micro watts + return float(p_out)/1000000 + + def get_fan_rpm(self, idx, fan_idx): + if idx is None or fan_idx is None: + return 0 + + if idx < 1 or idx > self.platform['num_psus']: + print("Invalid index %d\n" % idx) + return 0 + + device = "PSU"+"%d" % (idx) + num_fans = pddf_obj.get_num_psu_fans(device) + + if fan_idx < 1 or fan_idx > num_fans: + print("Invalid PSU-fan index %d\n" % fan_idx) + return 0 + + output = pddf_obj.get_attr_name_output(device, "psu_fan"+str(fan_idx)+"_speed_rpm") + if not output: + return 0 + + #mode = output['mode'] + output['status'] = output['status'].rstrip() + if output['status'].isalpha(): + return 0 + else: + speed = int(output['status']) + + return speed + + def dump_sysfs(self): + return pddf_obj.cli_dump_dsysfs('psu') diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sfputil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sfputil.py new file mode 100755 index 000000000000..1ca925610822 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sfputil.py @@ -0,0 +1,236 @@ +import os.path +import sys +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse +import json + +try: + import time + from ctypes import create_string_buffer + from sonic_sfp.sfputilbase import SfpUtilBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class SfpUtil(SfpUtilBase): + """Platform generic PDDF SfpUtil class""" + + _port_to_eeprom_mapping = {} + _port_start = 0 + _port_end = 0 + _port_to_type_mapping = {} + _qsfp_ports = [] + _sfp_ports = [] + + def __init__(self): + SfpUtilBase.__init__(self) + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + self.platform = pddf_obj.get_platform() + self._port_start = 0 + self._port_end = self.get_num_ports() + + for port_num in range(self._port_start, self._port_end): + device = "PORT" + "%d" % (port_num+1) + port_eeprom_path = pddf_obj.get_path(device, "eeprom") + self._port_to_eeprom_mapping[port_num] = port_eeprom_path + port_type = pddf_obj.get_device_type(device) + self._port_to_type_mapping[port_num] = port_type + self.populate_port_type(port_num) + + def get_num_ports(self): + return int(self.platform['num_ports']) + + def is_valid_port(self, port_num): + if port_num < self._port_start or port_num > self._port_end: + return False + else: + return True + + def get_presence(self, port_num): + if port_num < self._port_start or port_num > self._port_end: + return False + + device = "PORT" + "%d" % (port_num+1) + output = pddf_obj.get_attr_name_output(device, 'xcvr_present') + if not output: + return False + + #mode = output['mode'] + modpres = output['status'].rstrip() + if 'XCVR' in plugin_data: + if 'xcvr_present' in plugin_data['XCVR']: + ptype = self._port_to_type_mapping[port_num] + vtype = 'valmap-'+ptype + if vtype in plugin_data['XCVR']['xcvr_present']: + vmap = plugin_data['XCVR']['xcvr_present'][vtype] + if modpres in vmap: + return vmap[modpres] + else: + return False + # if plugin_data doesn't specify anything regarding Transceivers + if modpres == '1': + return True + + return False + + def populate_port_type(self, port): + if self._port_to_type_mapping[port] == 'QSFP' or self._port_to_type_mapping[port] == 'QSFP28': + self._qsfp_ports.append(port) + elif self._port_to_type_mapping[port] == 'SFP' or self._port_to_type_mapping[port] == 'SFP28': + self._sfp_ports.append(port) + + @property + def port_start(self): + return self._port_start + + @property + def port_end(self): + return (self._port_end - 1) + + @property + def port_to_eeprom_mapping(self): + return self._port_to_eeprom_mapping + + @property + def qsfp_ports(self): + return self._qsfp_ports + + def reset(self, port_num): + if port_num < self._port_start or port_num > self._port_end: + return False + + device = "PORT" + "%d" % (port_num+1) + port_ps = pddf_obj.get_path(device, "xcvr_reset") + if port_ps is None: + return False + + try: + reg_file = open(port_ps, 'w') + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + return False + + try: + reg_file.seek(0) + reg_file.write('1') + time.sleep(1) + reg_file.seek(0) + reg_file.write('0') + reg_file.close() + return True + except IOError as e: + return False + + def get_low_power_mode(self, port_num): + # Check for invalid port_num + if port_num < self._port_start or port_num > self._port_end: + return False + + if not self.get_presence(port_num): + return False + + device = "PORT" + "%d" % (port_num+1) + output = pddf_obj.get_attr_name_output(device, 'xcvr_lpmode') + if not output: + if port_num not in self.qsfp_ports: + return False # Read from eeprom only for QSFP ports + try: + eeprom = None + eeprom = open(self.port_to_eeprom_mapping[port_num], "rb") + # check for valid connector type + eeprom.seek(2) + ctype = eeprom.read(1) + if ctype in ['21', '23']: + return False + + eeprom.seek(93) + lpmode = ord(eeprom.read(1)) + + if ((lpmode & 0x3) == 0x3): + return True # Low Power Mode if "Power override" bit is 1 and "Power set" bit is 1 + else: + # High Power Mode if one of the following conditions is matched: + # 1. "Power override" bit is 0 + # 2. "Power override" bit is 1 and "Power set" bit is 0 + return False + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + return False + finally: + if eeprom is not None: + eeprom.close() + time.sleep(0.01) + else: + #mode = output['mode'] + status = int(output['status'].rstrip()) + + if status == 1: + return True + else: + return False + + def set_low_power_mode(self, port_num, lpmode): + # Check for invalid port_num + if port_num < self._port_start or port_num > self._port_end: + return False + + if not self.get_presence(port_num): + return False # Port is not present, unable to set the eeprom + + device = "PORT" + "%d" % (port_num+1) + port_ps = pddf_obj.get_path(device, "xcvr_lpmode") + if port_ps is None: + if port_num not in self.qsfp_ports: + return False # Write to eeprom only for QSFP ports + try: + eeprom = None + eeprom = open(self.port_to_eeprom_mapping[port_num], "r+b") + # check for valid connector type + eeprom.seek(2) + ctype = eeprom.read(1) + if ctype in ['21', '23']: + return False + + # Fill in write buffer + regval = 0x3 if lpmode else 0x1 # 0x3:Low Power Mode, 0x1:High Power Mode + buffer = create_string_buffer(1) + buffer[0] = chr(regval) + + # Write to eeprom + eeprom.seek(93) + eeprom.write(buffer[0]) + return True + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + return False + finally: + if eeprom is not None: + eeprom.close() + time.sleep(0.01) + else: + try: + f = open(port_ps, 'w') + if lpmode: + f.write('1') + else: + f.write('0') + f.close() + return True + except IOError as e: + return False + + def get_transceiver_change_event(self): + """ + TODO: This function need to be implemented + when decide to support monitoring SFP(Xcvrd) + on this platform. + """ + raise NotImplementedError + + def dump_sysfs(self): + return pddf_obj.cli_dump_dsysfs('xcvr') diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sysstatutil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sysstatutil.py new file mode 100755 index 000000000000..af4dd5915361 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/sysstatutil.py @@ -0,0 +1,82 @@ +import os.path +import sys +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse +import json + + +class SYSStatusUtil(): + """Platform-specific SYSStatus class""" + + def __init__(self): + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + + def get_board_info(self): + device = "SYSSTATUS" + node = pddf_obj.get_path(device, "board_info") + if node is None: + return False + try: + with open(node, 'r') as f: + status = f.read() + print("board_info : %s" % status) + except IOError: + return False + + def get_cpld_versio(self): + device = "SYSSTATUS" + node = pddf_obj.get_path(device, "cpld1_version") + if node is None: + return False + try: + with open(node, 'r') as f: + status = f.read() + print("cpld1_version : %s" % status) + except IOError: + return False + + def get_power_module_status(self): + device = "SYSSTATUS" + node = pddf_obj.get_path(device, "power_module_status") + if node is None: + return False + try: + with open(node, 'r') as f: + status = f.read() + print("power_module_status : %s" % status) + except IOError: + return False + + def get_system_reset_status(self): + device = "SYSSTATUS" + for i in range(1, 8): + node = pddf_obj.get_path(device, "system_reset"+str(i)) + if node is None: + return False + try: + with open(node, 'r') as f: + status = f.read() + print("system_reset%s : %s" % (i, status)) + except IOError: + print("system_reset%s not supported" % i) + + def get_misc_status(self): + device = "SYSSTATUS" + for i in range(1, 3): + node = pddf_obj.get_path(device, "misc"+str(i)) + if node is None: + return False + try: + with open(node, 'r') as f: + status = f.read() + print("misc%s : %s" % (i, status)) + except IOError: + print("system_reset%s not supported" % i) + + def dump_sysfs(self): + return pddf_obj.cli_dump_dsysfs('sys-status') diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/thermalutil.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/thermalutil.py new file mode 100755 index 000000000000..6aef47b7e924 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/plugins/thermalutil.py @@ -0,0 +1,75 @@ +import os.path +import sys +import json +sys.path.append('/usr/share/sonic/platform/plugins') +import pddfparse + + +class ThermalUtil: + def __init__(self): + global pddf_obj + global plugin_data + with open(os.path.join(os.path.dirname(os.path.realpath(__file__)) + '/../pddf/pd-plugin.json')) as pd: + plugin_data = json.load(pd) + + pddf_obj = pddfparse.PddfParse() + self.platform = pddf_obj.get_platform() + self.num_thermals = self.platform['num_temps'] + self.info = [] + + def get_num_thermals(self): + return (self.num_thermals) + + def get_thermal_info(self): + list = [] + pddf_obj.get_device_list(list, "TEMP_SENSOR") + list.sort() + for dev in list: + data = {} + device_name = dev['dev_info']['device_name'] + topo_info = dev['i2c']['topo_info'] + label = "%s-i2c-%d-%x" % (topo_info['dev_type'], + int(topo_info['parent_bus'], 0), int(topo_info['dev_addr'], 0)) + attr_list = dev['i2c']['attr_list'] + data['device_name'] = device_name + data['label'] = label + for attr in attr_list: + attr_name = attr['attr_name'] + node = pddf_obj.get_path(device_name, attr_name) + if node is None: + return False + try: + with open(node, 'r') as f: + attr_value = int(f.read()) + except IOError: + return False + data[attr_name] = attr_value/float(1000) + self.info.append(data) + + def show_thermal_temp_values(self, idx): + if idx < 1 or idx > self.num_thermals: + print("Invalid temperature sensor idx %d" % idx) + return None + self.get_thermal_info() + thermal_name = "TEMP"+"%d" % idx + label = "" + value = "" + for temp in self.info: + if thermal_name == temp['device_name']: + label = temp['label'] + value = "temp1\t %+.1f C (high = %+.1f C, hyst = %+.1f C)" % ( + temp['temp1_input'], temp['temp1_max'], temp['temp1_max_hyst']) + else: + continue + + return (label, value) + + def show_temp_values(self): + self.get_thermal_info() + for temp in self.info: + print(temp['label']) + print("temp1\t %+.1f C (high = %+.1f C, hyst = %+.1f C)" % + (temp['temp1_input'], temp['temp1_max'], temp['temp1_max_hyst'])) + + def dump_sysfs(self): + return pddf_obj.cli_dump_dsysfs('temp-sensors') diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pmon_daemon_control.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pmon_daemon_control.json new file mode 100644 index 000000000000..b8d554f3a8b8 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/pmon_daemon_control.json @@ -0,0 +1,5 @@ +{ + "skip_ledd": true, + "skip_xcvrd": false, + "skip_psud": false +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sensors.conf b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sensors.conf new file mode 100644 index 000000000000..9b0569d1541d --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sensors.conf @@ -0,0 +1,21 @@ +# libsensors configuration file +# ---------------------------------------------- +# + +bus "i2c-2" "i2c-0-mux (chan_id 0)" + +chip "lm75-i2c-2-48" + label temp1 "LM75_0 air_inlet" + set temp1_max 80 + set temp1_max_hyst 75 + +chip "lm75-i2c-2-49" + label temp1 "LM75_1 air_outlet" + set temp1_max 80 + set temp1_max_hyst 75 + +chip "lm75-i2c-2-4a" + label temp1 "LM75_2 hottest" + set temp1_max 80 + set temp1_max_hyst 75 + diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/chassis.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/chassis.json new file mode 100644 index 000000000000..c5ea46918ff2 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/chassis.json @@ -0,0 +1,3 @@ +{ + "eeprom": {"bus": 2, "loc": "0057"} +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/component.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/component.json new file mode 100644 index 000000000000..35f4b4586447 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/component.json @@ -0,0 +1,60 @@ +{ + "components": [ + { + "name": "CPLD1 (MAC Board A)", + "firmware_version": { + "bus": 2, + "addr": 51, + "offset": 0, + "size": 4, + "way": 1, + "format": 7, + "sep": "/" + }, + "desc": "Used for managing IO modules, SFP+ modules and system LEDs", + "slot": 0 + }, + { + "name": "CPLD2 (MAC Board B)", + "firmware_version": { + "bus": 2, + "addr": 53, + "offset": 0, + "size": 4, + "way": 1, + "format": 7, + "sep": "/" + }, + "desc": "Used for managing IO modules, SFP+ modules and system LEDs", + "slot": 0 + }, + { + "name": "CPLD3 (CONNECT Board A)", + "firmware_version": { + "bus": 2, + "addr": 55, + "offset": 0, + "size": 4, + "way": 1, + "format": 7, + "sep": "/" + }, + "desc": "Used for managing IO modules, SFP+ modules and system LEDs", + "slot": 0 + }, + { + "name": "CPLD4 (CPU Board)", + "firmware_version": { + "bus": 0, + "addr": 13, + "offset": 0, + "size": 4, + "way": 1, + "format": 7, + "sep": "/" + }, + "desc": "Used for managing IO modules, SFP+ modules and system LEDs", + "slot": 1 + } + ] +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/fan.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/fan.json new file mode 100644 index 000000000000..de7030ec1f90 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/fan.json @@ -0,0 +1,152 @@ +{ + "fans": [ + { + "name": "fan1", + "e2loc": {"bus": 3, "addr": 83, "way": "i2c", "size": "256"}, + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_present", + "format": 2, + "bit": 0 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_status", + "format": 2, + "bit": 0 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/3-0053/fan_hw_version"}, + "sn": {"loc": "/sys/bus/i2c/devices/3-0053/fan_sn"}, + "led": { + "loc": "/sys/bus/i2c/devices/0-0032/fan0_led", + "format": 6, + "mask": 11 + }, + "led_colors": { + "green": 9, + "red": 10, + "amber": 3 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/2-0037/hwmon/*/fan1_input" + }, + "speed_setter": { + "loc": "/sys/bus/i2c/devices/0-0032/fan_speed_set" + }, + "speed_max": 23000 + } + ] + }, + { + "name": "fan2", + "e2loc": {"bus": 4, "addr": 83, "way": "i2c", "size": "256"}, + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_present", + "format": 2, + "bit": 1 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_status", + "format": 2, + "bit": 1 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/4-0053/fan_hw_version"}, + "sn": {"loc": "/sys/bus/i2c/devices/4-0053/fan_sn"}, + "led": { + "loc": "/sys/bus/i2c/devices/0-0032/fan1_led", + "format": 6, + "mask": 11 + }, + "led_colors": { + "green": 9, + "red": 10, + "amber": 3 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/2-0037/hwmon/*/fan2_input" + }, + "speed_setter": { + "loc": "/sys/bus/i2c/devices/0-0032/fan_speed_set" + }, + "speed_max": 23000 + } + ] + }, + { + "name": "fan3", + "e2loc": {"bus": 3, "addr": 83, "way": "i2c", "size": "256"}, + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_present", + "format": 2, + "bit": 2 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_status", + "format": 2, + "bit": 2 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/5-0053/fan_hw_version"}, + "sn": {"loc": "/sys/bus/i2c/devices/5-0053/fan_sn"}, + "led": { + "loc": "/sys/bus/i2c/devices/0-0032/fan2_led", + "format": 6, + "mask": 11 + }, + "led_colors": { + "green": 9, + "red": 10, + "amber": 3 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/2-0037/hwmon/*/fan3_input" + }, + "speed_setter": { + "loc": "/sys/bus/i2c/devices/0-0032/fan_speed_set" + }, + "speed_max": 23000 + } + ] + }, + { + "name": "fan4", + "e2loc": {"bus": 3, "addr": 83, "way": "i2c", "size": "256"}, + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_present", + "format": 2, + "bit": 3 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/fan_status", + "format": 2, + "bit": 3 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/6-0053/fan_hw_version"}, + "sn": {"loc": "/sys/bus/i2c/devices/6-0053/fan_sn"}, + "led": { + "loc": "/sys/bus/i2c/devices/0-0032/fan3_led", + "format": 6, + "mask": 11 + }, + "led_colors":{ + "green": 9, + "red": 10, + "amber": 3 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/2-0037/hwmon/*/fan4_input" + }, + "speed_setter": { + "loc": "/sys/bus/i2c/devices/0-0032/fan_speed_set" + }, + "speed_max": 23000 + } + ] + } + ] +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/psu.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/psu.json new file mode 100644 index 000000000000..c807b51fc4b6 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/psu.json @@ -0,0 +1,134 @@ +{ + "psus": [ + { + "name": "psu1", + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 0 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 1 + }, + "sn": {"loc": "/sys/bus/i2c/devices/7-0050/psu_sn"}, + "in_current": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/curr1_input", + "format": 4 + }, + "in_voltage": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/in1_input", + "format": 4 + }, + "out_voltage": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/in2_input", + "format": 4 + }, + "out_current": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/curr2_input", + "format": 4 + }, + "temperature": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/temp1_input", + "format": 4 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/7-0050/psu_hw"}, + "psu_type": {"loc": "/sys/bus/i2c/devices/7-0050/psu_type"}, + "fans": [ + { + "name": "psu_fan1", + "present": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/fan1_fault" + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 1 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/fan1_input" + }, + "speed_max": 28000 + } + ] + } + ], + "in_power": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/power1_input", + "format": 5 + }, + "out_power": { + "loc": "/sys/bus/i2c/devices/7-0058/hwmon/*/power2_input", + "format": 5 + } + }, + { + "name": "psu2", + "present": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 4 + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 5 + }, + "sn": {"loc": "/sys/bus/i2c/devices/8-0053/psu_sn"}, + "in_current": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/curr1_input", + "format": 4 + }, + "in_voltage": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/in1_input", + "format": 4 + }, + "out_voltage": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/in2_input", + "format": 4 + }, + "out_current": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/curr2_input", + "format": 4 + }, + "temperature": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/temp1_input", + "format": 4 + }, + "hw_version": {"loc": "/sys/bus/i2c/devices/8-0053/psu_hw"}, + "psu_type": {"loc": "/sys/bus/i2c/devices/8-0053/psu_type"}, + "fans": [ + { + "name": "psu_fan1", + "present": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/fan1_fault" + }, + "status": { + "loc": "/sys/bus/i2c/devices/2-0037/psu_status", + "format": 2, + "bit": 5 + }, + "rotors": [ + { + "speed_getter": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/fan1_input" + }, + "speed_max": 28000 + } + ] + } + ], + "in_power": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/power1_input", + "format": 5 + }, + "out_power": { + "loc": "/sys/bus/i2c/devices/8-005b/hwmon/*/power2_input", + "format": 5 + } + } + ] +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/thermal.json b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/thermal.json new file mode 100644 index 000000000000..319336673534 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/sonic_platform_config/thermal.json @@ -0,0 +1,130 @@ +{"thermals": [ + { + "name": "INLET TEMP", + "high": { + "loc": "/sys/bus/i2c/devices/2-0048/hwmon/*/temp1_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": null, + "temperature": { + "loc": "/sys/bus/i2c/devices/2-0048/hwmon/*/temp1_input", + "format": 4 + } + }, + { + "name": "OUTLET TEMP", + "high": { + "loc": "/sys/bus/i2c/devices/2-0049/hwmon/*/temp1_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": null, + "temperature": { + "loc": "/sys/bus/i2c/devices/2-0049/hwmon/*/temp1_input", + "format": 4 + } + }, + { + "name": "BOARD TEMP", + "high": { + "loc": "/sys/bus/i2c/devices/2-004a/hwmon/*/temp1_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": null, + "temperature": { + "loc": "/sys/bus/i2c/devices/2-004a/hwmon/*/temp1_input", + "format": 4 + } + }, + { + "name": "PHYSICAL ID 0", + "high": { + "loc": "/sys/class/hwmon/hwmon0/temp1_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": { + "loc": "/sys/class/hwmon/hwmon0/temp1_crit", + "format": 4 + }, + "temperature": { + "loc": "/sys/class/hwmon/hwmon0/temp1_input", + "format": 4 + } + }, + { + "name": "CPU CORE 0", + "high": { + "loc": "/sys/class/hwmon/hwmon0/temp2_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": { + "loc": "/sys/class/hwmon/hwmon0/temp2_crit", + "format": 4 + }, + "temperature": { + "loc": "/sys/class/hwmon/hwmon0/temp2_input", + "format": 4 + } + }, + { + "name": "CPU CORE 1", + "high": { + "loc": "/sys/class/hwmon/hwmon0/temp3_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": { + "loc": "/sys/class/hwmon/hwmon0/temp3_crit", + "format": 4 + }, + "temperature": { + "loc": "/sys/class/hwmon/hwmon0/temp3_input", + "format": 4 + } + }, + { + "name": "CPU CORE 2", + "high": { + "loc": "/sys/class/hwmon/hwmon0/temp4_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": { + "loc": "/sys/class/hwmon/hwmon0/temp4_crit", + "format": 4 + }, + "temperature": { + "loc": "/sys/class/hwmon/hwmon0/temp4_input", + "format": 4 + } + }, + { + "name": "CPU CORE 3", + "high": { + "loc": "/sys/class/hwmon/hwmon0/temp5_max", + "format": 4 + }, + "low": null, + "crit_low": null, + "crit_high": { + "loc": "/sys/class/hwmon/hwmon0/temp5_crit", + "format": 4 + }, + "temperature": { + "loc": "/sys/class/hwmon/hwmon0/temp5_input", + "format": 4 + } + } + ] +} \ No newline at end of file diff --git a/device/ragile/x86_64-ragile_ra-b6910-64c-r0/systest.py b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/systest.py new file mode 100644 index 000000000000..38e9ff6aa0c9 --- /dev/null +++ b/device/ragile/x86_64-ragile_ra-b6910-64c-r0/systest.py @@ -0,0 +1,43 @@ +#!/usr/bin/python3 +# -*- coding: UTF-8 -*- +""" +* onboard temperature sensors +* FAN trays +* PSU +""" +import time +import datetime +from monitor import status + +def doWork(): + a=[]; + ''' + return: [{'status': '1', 'hw_version': '1.00', 'errcode': 0, 'fan_type': 'M6510-FAN-F', 'errmsg': 'OK', 'Speed': '9778', 'id': 'fan1', 'present': '0', 'sn': '1000000000014'}, + {'id': 'fan2', 'errmsg': 'not present', 'errcode': -1}, + {'id': 'fan3', 'errmsg': 'not present', 'errcode': -1}, + {'id': 'fan4', 'errmsg': 'not present', 'errcode': -1} + ] + description: 1.get id + 2.errcode equal 0 : dev normal + not equal 0 : get errmsg + 3.other message add when all check success + ''' + status.checkFan(a) + #status.getTemp(a) + #status.getPsu(a) + + nowTime=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + print(nowTime) + print(a) +def run(interval): + while True: + try: + time_remaining = interval - time.time()%interval + time.sleep(time_remaining) + doWork() + except Exception as e: + print(e) + +if __name__ == '__main__': + interval = 1 + run(interval) diff --git a/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/context_config.json b/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/context_config.json index 9f9f80ba0d36..106087f7275c 100644 --- a/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/context_config.json +++ b/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/context_config.json @@ -7,6 +7,9 @@ "dbCounters" : "COUNTERS_DB", "dbFlex": "FLEX_COUNTER_DB", "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5555", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5556", "switches": [ { "index" : 0, @@ -21,10 +24,13 @@ "dbCounters" : "GB_COUNTERS_DB", "dbFlex": "GB_FLEX_COUNTER_DB", "dbState" : "STATE_DB", + "zmq_enable": false, + "zmq_endpoint": "tcp://127.0.0.1:5565", + "zmq_ntf_endpoint": "tcp://127.0.0.1:5566", "switches": [ { "index" : 1, - "hwinfo" : "" + "hwinfo": "mdio0_0_0/0" } ] } diff --git a/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/gearbox_config.json b/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/gearbox_config.json index 2de95c4d806d..f40be4f3eb62 100644 --- a/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/gearbox_config.json +++ b/device/virtual/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/gearbox_config.json @@ -9,7 +9,9 @@ "config_file": "/usr/share/sonic/hwsku/phy1_config_1.json", "sai_init_config_file": "/usr/share/sonic/hwsku/sesto-1.bcm", "phy_access": "mdio", - "bus_id": 0 + "bus_id": 0, + "context_id": 1, + "hwinfo": "mdio0_0_0/0" } ], "interfaces": [ diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/lanemap.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/lanemap.ini deleted file mode 100644 index d2b9e31ecadb..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/lanemap.ini +++ /dev/null @@ -1,8 +0,0 @@ -eth1:1,2,3,4 -eth2:5,6,7,8 -eth3:9,10,11,12 -eth4:13,14,15,16 -eth5:17,18,19,20 -eth6:21,22,23,24 -eth7:25,26,27,28 -eth8:29,30,31,32 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/lanemap.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/lanemap.ini deleted file mode 100644 index d2b9e31ecadb..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/lanemap.ini +++ /dev/null @@ -1,8 +0,0 @@ -eth1:1,2,3,4 -eth2:5,6,7,8 -eth3:9,10,11,12 -eth4:13,14,15,16 -eth5:17,18,19,20 -eth6:21,22,23,24 -eth7:25,26,27,28 -eth8:29,30,31,32 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_def.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers.json.j2 deleted file mode 100644 index b67cf577ab75..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers.json.j2 +++ /dev/null @@ -1,3 +0,0 @@ -{%- set default_topo = 't1' %} -{%- include 'buffers_config.j2' %} - diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 deleted file mode 100644 index 38e34eb571e8..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 +++ /dev/null @@ -1,45 +0,0 @@ -{%- set default_cable = '300m' %} - -{%- macro generate_port_lists(PORT_ALL) %} - {# Generate list of ports #} - {% for port_idx in range(0,32) %} - {% if PORT_ALL.append("Ethernet%d" % (port_idx * 4)) %}{% endif %} - {% endfor %} -{%- endmacro %} - -{%- macro generate_buffer_pool_and_profiles() %} - "BUFFER_POOL": { - "ingress_lossless_pool": { - "size": "12766208", - "type": "ingress", - "mode": "dynamic" - }, - "egress_lossless_pool": { - "size": "12766208", - "type": "egress", - "mode": "static" - }, - "egress_lossy_pool": { - "size": "7326924", - "type": "egress", - "mode": "dynamic" - } - }, - "BUFFER_PROFILE": { - "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "size":"0", - "dynamic_th":"3" - }, - "egress_lossless_profile": { - "pool":"[BUFFER_POOL|egress_lossless_pool]", - "size":"0", - "static_th":"12766208" - }, - "egress_lossy_profile": { - "pool":"[BUFFER_POOL|egress_lossy_pool]", - "size":"1518", - "dynamic_th":"3" - } - }, -{%- endmacro %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini deleted file mode 100644 index 9f2eacb6fc42..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini +++ /dev/null @@ -1,17 +0,0 @@ -# PG lossless profiles. -# speed cable size xon xoff threshold xon_offset - 10000 5m 56368 18432 55120 -3 2496 - 25000 5m 56368 18432 55120 -3 2496 - 40000 5m 56368 18432 55120 -3 2496 - 50000 5m 56368 18432 55120 -3 2496 - 100000 5m 56368 18432 55120 -3 2496 - 10000 40m 56368 18432 55120 -3 2496 - 25000 40m 56368 18432 55120 -3 2496 - 40000 40m 56368 18432 55120 -3 2496 - 50000 40m 56368 18432 55120 -3 2496 - 100000 40m 56368 18432 55120 -3 2496 - 10000 300m 56368 18432 55120 -3 2496 - 25000 300m 56368 18432 55120 -3 2496 - 40000 300m 56368 18432 55120 -3 2496 - 50000 300m 56368 18432 55120 -3 2496 - 100000 300m 56368 18432 55120 -3 2496 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/qos.json.j2 deleted file mode 100644 index 3e548325ea30..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/qos.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{%- include 'qos_config.j2' %} diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/sai.profile b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/sai.profile deleted file mode 100644 index 0a2df177f1c5..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/sai.profile +++ /dev/null @@ -1,3 +0,0 @@ -SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 -SAI_VS_HOSTIF_USE_TAP_DEVICE=true -SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm deleted file mode 100644 index 0e25b4d4232d..000000000000 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm +++ /dev/null @@ -1,646 +0,0 @@ -# Old LPM only configuration -# l2_mem_entries=163840 -# l3_mem_entries=90112 -# l3_alpm_enable=0 -# ipv6_lpm_128b_enable=0 -# -# ALPM enable -l3_alpm_enable=2 -ipv6_lpm_128b_enable=1 -l2_mem_entries=32768 -l3_mem_entries=16384 - -# From old config file -os=unix -higig2_hdr_mode=1 - -# Parity -parity_correction=1 -parity_enable=1 -stat_if_parity_enable=0 - -# -bcm_num_cos=10 -bcm_stat_interval=2000000 -l2xmsg_hostbuf_size=8192 -l2xmsg_mode=1 -lls_num_l2uc=12 -max_vp_lags=0 -miim_intr_enable=0 -mmu_lossless=0 -module_64ports=0 -schan_intr_enable=0 -stable_size=0x2000000 -tdma_timeout_usec=5000000 - -pbmp_oversubscribe=0x000007fffffffffffffffffffffffffe -pbmp_xport_xe=0x000007fffffffffffffffffffffffffe - -# Ports configuration -# xe0 (40G) -portmap_1=25:40 -xgxs_rx_lane_map_1=0x213 -xgxs_tx_lane_map_1=0x2031 -phy_xaui_rx_polarity_flip_1=0xe -phy_xaui_tx_polarity_flip_1=0x2 -serdes_driver_current_lane0_xe0=0x5 -serdes_driver_current_lane1_xe0=0x5 -serdes_driver_current_lane2_xe0=0x5 -serdes_driver_current_lane3_xe0=0x5 -serdes_pre_driver_current_lane0_xe0=0x5 -serdes_pre_driver_current_lane1_xe0=0x5 -serdes_pre_driver_current_lane2_xe0=0x5 -serdes_pre_driver_current_lane3_xe0=0x5 -serdes_preemphasis_lane0_xe0=0xcad0 -serdes_preemphasis_lane1_xe0=0xc6e0 -serdes_preemphasis_lane2_xe0=0xc6e0 -serdes_preemphasis_lane3_xe0=0xd2b0 - -# xe1 (40G) -portmap_2=29:40 -xgxs_rx_lane_map_2=0x213 -xgxs_tx_lane_map_2=0x213 -phy_xaui_rx_polarity_flip_2=0xc -phy_xaui_tx_polarity_flip_2=0x9 -serdes_driver_current_lane0_xe1=0x6 -serdes_driver_current_lane1_xe1=0x7 -serdes_driver_current_lane2_xe1=0x6 -serdes_driver_current_lane3_xe1=0x6 -serdes_pre_driver_current_lane0_xe1=0x6 -serdes_pre_driver_current_lane1_xe1=0x7 -serdes_pre_driver_current_lane2_xe1=0x6 -serdes_pre_driver_current_lane3_xe1=0x6 -serdes_preemphasis_lane0_xe1=0xc2f0 -serdes_preemphasis_lane1_xe1=0xd2b0 -serdes_preemphasis_lane2_xe1=0xc6e0 -serdes_preemphasis_lane3_xe1=0xc2f0 - -# xe2 (40G) -portmap_3=33:40 -xgxs_rx_lane_map_3=0x213 -xgxs_tx_lane_map_3=0x132 -phy_xaui_rx_polarity_flip_3=0xe -phy_xaui_tx_polarity_flip_3=0x2 -serdes_driver_current_lane0_xe2=0x4 -serdes_driver_current_lane1_xe2=0x4 -serdes_driver_current_lane2_xe2=0x4 -serdes_driver_current_lane3_xe2=0x4 -serdes_pre_driver_current_lane0_xe2=0x4 -serdes_pre_driver_current_lane1_xe2=0x4 -serdes_pre_driver_current_lane2_xe2=0x4 -serdes_pre_driver_current_lane3_xe2=0x4 -serdes_preemphasis_lane0_xe2=0xc6e0 -serdes_preemphasis_lane1_xe2=0xc6e0 -serdes_preemphasis_lane2_xe2=0xc6e0 -serdes_preemphasis_lane3_xe2=0xc6e0 - -# xe3 (40G) -portmap_4=37:40 -xgxs_rx_lane_map_4=0x213 -xgxs_tx_lane_map_4=0x1203 -phy_xaui_rx_polarity_flip_4=0x3 -phy_xaui_tx_polarity_flip_4=0xe -serdes_driver_current_lane0_xe3=0x4 -serdes_driver_current_lane1_xe3=0x4 -serdes_driver_current_lane2_xe3=0x4 -serdes_driver_current_lane3_xe3=0x4 -serdes_pre_driver_current_lane0_xe3=0x4 -serdes_pre_driver_current_lane1_xe3=0x4 -serdes_pre_driver_current_lane2_xe3=0x4 -serdes_pre_driver_current_lane3_xe3=0x4 -serdes_preemphasis_lane0_xe3=0xcad0 -serdes_preemphasis_lane1_xe3=0xcad0 -serdes_preemphasis_lane2_xe3=0xc2f0 -serdes_preemphasis_lane3_xe3=0xc2f0 - -# xe4 (40G) -portmap_5=45:40 -xgxs_rx_lane_map_5=0x213 -xgxs_tx_lane_map_5=0x213 -phy_xaui_rx_polarity_flip_5=0xe -phy_xaui_tx_polarity_flip_5=0x8 -serdes_driver_current_lane0_xe4=0x4 -serdes_driver_current_lane1_xe4=0x4 -serdes_driver_current_lane2_xe4=0x4 -serdes_driver_current_lane3_xe4=0x4 -serdes_pre_driver_current_lane0_xe4=0x4 -serdes_pre_driver_current_lane1_xe4=0x4 -serdes_pre_driver_current_lane2_xe4=0x4 -serdes_pre_driver_current_lane3_xe4=0x4 -serdes_preemphasis_lane0_xe4=0xc2f0 -serdes_preemphasis_lane1_xe4=0xc2f0 -serdes_preemphasis_lane2_xe4=0xc2f0 -serdes_preemphasis_lane3_xe4=0xc2f0 - -# xe5 (40G) -portmap_6=41:40 -xgxs_rx_lane_map_6=0x213 -xgxs_tx_lane_map_6=0x3021 -phy_xaui_rx_polarity_flip_6=0x3 -phy_xaui_tx_polarity_flip_6=0xb -serdes_driver_current_lane0_xe5=0x4 -serdes_driver_current_lane1_xe5=0x4 -serdes_driver_current_lane2_xe5=0x4 -serdes_driver_current_lane3_xe5=0x4 -serdes_pre_driver_current_lane0_xe5=0x4 -serdes_pre_driver_current_lane1_xe5=0x4 -serdes_pre_driver_current_lane2_xe5=0x4 -serdes_pre_driver_current_lane3_xe5=0x4 -serdes_preemphasis_lane0_xe5=0xc6e0 -serdes_preemphasis_lane1_xe5=0xc2f0 -serdes_preemphasis_lane2_xe5=0xc2f0 -serdes_preemphasis_lane3_xe5=0xcad0 - -# xe6 (40G) -portmap_7=1:40 -xgxs_rx_lane_map_7=0x213 -xgxs_tx_lane_map_7=0x2031 -phy_xaui_rx_polarity_flip_7=0xe -phy_xaui_tx_polarity_flip_7=0xd -serdes_driver_current_lane0_xe6=0x5 -serdes_driver_current_lane1_xe6=0x5 -serdes_driver_current_lane2_xe6=0x5 -serdes_driver_current_lane3_xe6=0x5 -serdes_pre_driver_current_lane0_xe6=0x5 -serdes_pre_driver_current_lane1_xe6=0x5 -serdes_pre_driver_current_lane2_xe6=0x5 -serdes_pre_driver_current_lane3_xe6=0x5 -serdes_preemphasis_lane0_xe6=0xc6e0 -serdes_preemphasis_lane1_xe6=0xcad0 -serdes_preemphasis_lane2_xe6=0xc6e0 -serdes_preemphasis_lane3_xe6=0xcad0 - -# xe7 (40G) -portmap_8=5:40 -xgxs_rx_lane_map_8=0x213 -xgxs_tx_lane_map_8=0x1203 -phy_xaui_rx_polarity_flip_8=0xc -phy_xaui_tx_polarity_flip_8=0x1 -serdes_driver_current_lane0_xe7=0x4 -serdes_driver_current_lane1_xe7=0x4 -serdes_driver_current_lane2_xe7=0x4 -serdes_driver_current_lane3_xe7=0x4 -serdes_pre_driver_current_lane0_xe7=0x4 -serdes_pre_driver_current_lane1_xe7=0x4 -serdes_pre_driver_current_lane2_xe7=0x4 -serdes_pre_driver_current_lane3_xe7=0x4 -serdes_preemphasis_lane0_xe7=0xc6e0 -serdes_preemphasis_lane1_xe7=0xc6e0 -serdes_preemphasis_lane2_xe7=0xc6e0 -serdes_preemphasis_lane3_xe7=0xc6e0 - -# xe8 (40G) -portmap_9=13:40 -xgxs_rx_lane_map_9=0x213 -xgxs_tx_lane_map_9=0x132 -phy_xaui_rx_polarity_flip_9=0xe -phy_xaui_tx_polarity_flip_9=0x0 -serdes_driver_current_lane0_xe8=0x2 -serdes_driver_current_lane1_xe8=0x3 -serdes_driver_current_lane2_xe8=0x2 -serdes_driver_current_lane3_xe8=0x2 -serdes_pre_driver_current_lane0_xe8=0x2 -serdes_pre_driver_current_lane1_xe8=0x3 -serdes_pre_driver_current_lane2_xe8=0x2 -serdes_pre_driver_current_lane3_xe8=0x2 -serdes_preemphasis_lane0_xe8=0xb270 -serdes_preemphasis_lane1_xe8=0xbb10 -serdes_preemphasis_lane2_xe8=0xb720 -serdes_preemphasis_lane3_xe8=0xb720 - -# xe9 (40G) -portmap_10=9:40 -xgxs_rx_lane_map_10=0x3120 -xgxs_tx_lane_map_10=0x3021 -phy_xaui_rx_polarity_flip_10=0x0 -phy_xaui_tx_polarity_flip_10=0x4 -serdes_driver_current_lane0_xe9=0x3 -serdes_driver_current_lane1_xe9=0x3 -serdes_driver_current_lane2_xe9=0x3 -serdes_driver_current_lane3_xe9=0x3 -serdes_pre_driver_current_lane0_xe9=0x3 -serdes_pre_driver_current_lane1_xe9=0x3 -serdes_pre_driver_current_lane2_xe9=0x3 -serdes_pre_driver_current_lane3_xe9=0x3 -serdes_preemphasis_lane0_xe9=0xc2f0 -serdes_preemphasis_lane1_xe9=0xc6e0 -serdes_preemphasis_lane2_xe9=0xbf00 -serdes_preemphasis_lane3_xe9=0xc2f0 - -# xe10 (40G) -portmap_11=17:40 -xgxs_rx_lane_map_11=0x213 -xgxs_tx_lane_map_11=0x132 -phy_xaui_rx_polarity_flip_11=0xe -phy_xaui_tx_polarity_flip_11=0x0 -serdes_driver_current_lane0_xe10=0x2 -serdes_driver_current_lane1_xe10=0x2 -serdes_driver_current_lane2_xe10=0x2 -serdes_driver_current_lane3_xe10=0x2 -serdes_pre_driver_current_lane0_xe10=0x2 -serdes_pre_driver_current_lane1_xe10=0x2 -serdes_pre_driver_current_lane2_xe10=0x2 -serdes_pre_driver_current_lane3_xe10=0x2 -serdes_preemphasis_lane0_xe10=0xb330 -serdes_preemphasis_lane1_xe10=0xbb10 -serdes_preemphasis_lane2_xe10=0xbb10 -serdes_preemphasis_lane3_xe10=0xbb10 - -# xe11 (40G) -portmap_12=21:40 -xgxs_rx_lane_map_12=0x123 -xgxs_tx_lane_map_12=0x1203 -phy_xaui_rx_polarity_flip_12=0xc -phy_xaui_tx_polarity_flip_12=0xe -serdes_driver_current_lane0_xe11=0x2 -serdes_driver_current_lane1_xe11=0x2 -serdes_driver_current_lane2_xe11=0x2 -serdes_driver_current_lane3_xe11=0x2 -serdes_pre_driver_current_lane0_xe11=0x2 -serdes_pre_driver_current_lane1_xe11=0x2 -serdes_pre_driver_current_lane2_xe11=0x2 -serdes_pre_driver_current_lane3_xe11=0x2 -serdes_preemphasis_lane0_xe11=0xb330 -serdes_preemphasis_lane1_xe11=0xb330 -serdes_preemphasis_lane2_xe11=0xb330 -serdes_preemphasis_lane3_xe11=0xb330 - -# xe12 (40G) -portmap_13=53:40 -xgxs_rx_lane_map_13=0x213 -xgxs_tx_lane_map_13=0x231 -phy_xaui_rx_polarity_flip_13=0x1 -phy_xaui_tx_polarity_flip_13=0x0 -serdes_driver_current_lane0_xe12=0x2 -serdes_driver_current_lane1_xe12=0x2 -serdes_driver_current_lane2_xe12=0x2 -serdes_driver_current_lane3_xe12=0x2 -serdes_pre_driver_current_lane0_xe12=0x2 -serdes_pre_driver_current_lane1_xe12=0x2 -serdes_pre_driver_current_lane2_xe12=0x2 -serdes_pre_driver_current_lane3_xe12=0x2 -serdes_preemphasis_lane0_xe12=0xaf40 -serdes_preemphasis_lane1_xe12=0xaf40 -serdes_preemphasis_lane2_xe12=0xaf40 -serdes_preemphasis_lane3_xe12=0xaf40 - -# xe13 (40G) -portmap_14=49:40 -xgxs_rx_lane_map_14=0x1302 -xgxs_tx_lane_map_14=0x2031 -phy_xaui_rx_polarity_flip_14=0xb -phy_xaui_tx_polarity_flip_14=0x3 -serdes_driver_current_lane0_xe13=0x2 -serdes_driver_current_lane1_xe13=0x2 -serdes_driver_current_lane2_xe13=0x2 -serdes_driver_current_lane3_xe13=0x2 -serdes_pre_driver_current_lane0_xe13=0x2 -serdes_pre_driver_current_lane1_xe13=0x2 -serdes_pre_driver_current_lane2_xe13=0x2 -serdes_pre_driver_current_lane3_xe13=0x2 -serdes_preemphasis_lane0_xe13=0xa760 -serdes_preemphasis_lane1_xe13=0xa760 -serdes_preemphasis_lane2_xe13=0xa760 -serdes_preemphasis_lane3_xe13=0xa760 - -# xe14 (40G) -portmap_15=57:40 -xgxs_rx_lane_map_15=0x213 -xgxs_tx_lane_map_15=0x2031 -phy_xaui_rx_polarity_flip_15=0x1 -phy_xaui_tx_polarity_flip_15=0x0 -serdes_driver_current_lane0_xe14=0x1 -serdes_driver_current_lane1_xe14=0x1 -serdes_driver_current_lane2_xe14=0x1 -serdes_driver_current_lane3_xe14=0x1 -serdes_pre_driver_current_lane0_xe14=0x1 -serdes_pre_driver_current_lane1_xe14=0x1 -serdes_pre_driver_current_lane2_xe14=0x1 -serdes_pre_driver_current_lane3_xe14=0x1 -serdes_preemphasis_lane0_xe14=0xa760 -serdes_preemphasis_lane1_xe14=0xa760 -serdes_preemphasis_lane2_xe14=0xa760 -serdes_preemphasis_lane3_xe14=0xa760 - -# xe15 (40G) -portmap_16=61:40 -xgxs_rx_lane_map_16=0x132 -xgxs_tx_lane_map_16=0x213 -phy_xaui_rx_polarity_flip_16=0x0 -phy_xaui_tx_polarity_flip_16=0x0 -serdes_driver_current_lane0_xe15=0x2 -serdes_driver_current_lane1_xe15=0x2 -serdes_driver_current_lane2_xe15=0x2 -serdes_driver_current_lane3_xe15=0x2 -serdes_pre_driver_current_lane0_xe15=0x2 -serdes_pre_driver_current_lane1_xe15=0x2 -serdes_pre_driver_current_lane2_xe15=0x2 -serdes_pre_driver_current_lane3_xe15=0x2 -serdes_preemphasis_lane0_xe15=0xa760 -serdes_preemphasis_lane1_xe15=0xa760 -serdes_preemphasis_lane2_xe15=0xa760 -serdes_preemphasis_lane3_xe15=0xa760 - -# xe16 (40G) -portmap_17=69:40 -xgxs_rx_lane_map_17=0x213 -xgxs_tx_lane_map_17=0x2130 -phy_xaui_rx_polarity_flip_17=0x1 -phy_xaui_tx_polarity_flip_17=0xf -serdes_driver_current_lane0_xe16=0x1 -serdes_driver_current_lane1_xe16=0x1 -serdes_driver_current_lane2_xe16=0x1 -serdes_driver_current_lane3_xe16=0x1 -serdes_pre_driver_current_lane0_xe16=0x1 -serdes_pre_driver_current_lane1_xe16=0x1 -serdes_pre_driver_current_lane2_xe16=0x1 -serdes_pre_driver_current_lane3_xe16=0x1 -serdes_preemphasis_lane0_xe16=0xa760 -serdes_preemphasis_lane1_xe16=0xa760 -serdes_preemphasis_lane2_xe16=0xa760 -serdes_preemphasis_lane3_xe16=0xa760 - -# xe17 (40G) -portmap_18=65:40 -xgxs_rx_lane_map_18=0x132 -xgxs_tx_lane_map_18=0x2031 -phy_xaui_rx_polarity_flip_18=0x3 -phy_xaui_tx_polarity_flip_18=0x9 -serdes_driver_current_lane0_xe17=0x1 -serdes_driver_current_lane1_xe17=0x1 -serdes_driver_current_lane2_xe17=0x1 -serdes_driver_current_lane3_xe17=0x1 -serdes_pre_driver_current_lane0_xe17=0x1 -serdes_pre_driver_current_lane1_xe17=0x1 -serdes_pre_driver_current_lane2_xe17=0x1 -serdes_pre_driver_current_lane3_xe17=0x1 -serdes_preemphasis_lane0_xe17=0xa370 -serdes_preemphasis_lane1_xe17=0xa370 -serdes_preemphasis_lane2_xe17=0xa370 -serdes_preemphasis_lane3_xe17=0xa370 - -# xe18 (40G) -portmap_19=73:40 -xgxs_rx_lane_map_19=0x213 -xgxs_tx_lane_map_19=0x2031 -phy_xaui_rx_polarity_flip_19=0x1 -phy_xaui_tx_polarity_flip_19=0x0 -serdes_driver_current_lane0_xe18=0x2 -serdes_driver_current_lane1_xe18=0x2 -serdes_driver_current_lane2_xe18=0x2 -serdes_driver_current_lane3_xe18=0x2 -serdes_pre_driver_current_lane0_xe18=0x2 -serdes_pre_driver_current_lane1_xe18=0x2 -serdes_pre_driver_current_lane2_xe18=0x2 -serdes_pre_driver_current_lane3_xe18=0x2 -serdes_preemphasis_lane0_xe18=0xa760 -serdes_preemphasis_lane1_xe18=0xa760 -serdes_preemphasis_lane2_xe18=0xa760 -serdes_preemphasis_lane3_xe18=0xa760 - -# xe19 (40G) -portmap_20=77:40 -xgxs_rx_lane_map_20=0x123 -xgxs_tx_lane_map_20=0x1203 -phy_xaui_rx_polarity_flip_20=0x3 -phy_xaui_tx_polarity_flip_20=0xe -serdes_driver_current_lane0_xe19=0x2 -serdes_driver_current_lane1_xe19=0x2 -serdes_driver_current_lane2_xe19=0x2 -serdes_driver_current_lane3_xe19=0x2 -serdes_pre_driver_current_lane0_xe19=0x2 -serdes_pre_driver_current_lane1_xe19=0x2 -serdes_pre_driver_current_lane2_xe19=0x2 -serdes_pre_driver_current_lane3_xe19=0x2 -serdes_preemphasis_lane0_xe19=0xaf40 -serdes_preemphasis_lane1_xe19=0xaf40 -serdes_preemphasis_lane2_xe19=0xaf40 -serdes_preemphasis_lane3_xe19=0xaf40 - -# xe20 (40G) -portmap_21=109:40 -xgxs_rx_lane_map_21=0x132 -xgxs_tx_lane_map_21=0x132 -phy_xaui_rx_polarity_flip_21=0x8 -phy_xaui_tx_polarity_flip_21=0x0 -serdes_driver_current_lane0_xe20=0x1 -serdes_driver_current_lane1_xe20=0x1 -serdes_driver_current_lane2_xe20=0x1 -serdes_driver_current_lane3_xe20=0x2 -serdes_pre_driver_current_lane0_xe20=0x1 -serdes_pre_driver_current_lane1_xe20=0x1 -serdes_pre_driver_current_lane2_xe20=0x1 -serdes_pre_driver_current_lane3_xe20=0x2 -serdes_preemphasis_lane0_xe20=0xb330 -serdes_preemphasis_lane1_xe20=0xb330 -serdes_preemphasis_lane2_xe20=0xb330 -serdes_preemphasis_lane3_xe20=0xbff0 - -# xe21 (40G) -portmap_22=105:40 -xgxs_rx_lane_map_22=0x1320 -xgxs_tx_lane_map_22=0x3021 -phy_xaui_rx_polarity_flip_22=0xd -phy_xaui_tx_polarity_flip_22=0xb -serdes_driver_current_lane0_xe21=0x1 -serdes_driver_current_lane1_xe21=0x1 -serdes_driver_current_lane2_xe21=0x1 -serdes_driver_current_lane3_xe21=0x1 -serdes_pre_driver_current_lane0_xe21=0x1 -serdes_pre_driver_current_lane1_xe21=0x1 -serdes_pre_driver_current_lane2_xe21=0x1 -serdes_pre_driver_current_lane3_xe21=0x1 -serdes_preemphasis_lane0_xe21=0xb330 -serdes_preemphasis_lane1_xe21=0xb330 -serdes_preemphasis_lane2_xe21=0xb330 -serdes_preemphasis_lane3_xe21=0xb330 - -# xe22 (40G) -portmap_23=113:40 -xgxs_rx_lane_map_23=0x132 -xgxs_tx_lane_map_23=0x132 -phy_xaui_rx_polarity_flip_23=0x8 -phy_xaui_tx_polarity_flip_23=0x0 -serdes_driver_current_lane0_xe22=0x1 -serdes_driver_current_lane1_xe22=0x1 -serdes_driver_current_lane2_xe22=0x1 -serdes_driver_current_lane3_xe22=0x1 -serdes_pre_driver_current_lane0_xe22=0x1 -serdes_pre_driver_current_lane1_xe22=0x1 -serdes_pre_driver_current_lane2_xe22=0x1 -serdes_pre_driver_current_lane3_xe22=0x1 -serdes_preemphasis_lane0_xe22=0xbb10 -serdes_preemphasis_lane1_xe22=0xbb10 -serdes_preemphasis_lane2_xe22=0xbb10 -serdes_preemphasis_lane3_xe22=0xc2f0 - -# xe23 (40G) -portmap_24=117:40 -xgxs_rx_lane_map_24=0x231 -xgxs_tx_lane_map_24=0x1203 -phy_xaui_rx_polarity_flip_24=0x3 -phy_xaui_tx_polarity_flip_24=0xe -serdes_driver_current_lane0_xe23=0x3 -serdes_driver_current_lane1_xe23=0x5 -serdes_driver_current_lane2_xe23=0x3 -serdes_driver_current_lane3_xe23=0x3 -serdes_pre_driver_current_lane0_xe23=0x3 -serdes_pre_driver_current_lane1_xe23=0x5 -serdes_pre_driver_current_lane2_xe23=0x3 -serdes_pre_driver_current_lane3_xe23=0x3 -serdes_preemphasis_lane0_xe23=0xc6e0 -serdes_preemphasis_lane1_xe23=0xc6e0 -serdes_preemphasis_lane2_xe23=0xc6e0 -serdes_preemphasis_lane3_xe23=0xc6e0 - -# xe24 (40G) -portmap_25=125:40 -xgxs_rx_lane_map_25=0x132 -xgxs_tx_lane_map_25=0x132 -phy_xaui_rx_polarity_flip_25=0x8 -phy_xaui_tx_polarity_flip_25=0x0 -serdes_driver_current_lane0_xe24=0x4 -serdes_driver_current_lane1_xe24=0x4 -serdes_driver_current_lane2_xe24=0x4 -serdes_driver_current_lane3_xe24=0x4 -serdes_pre_driver_current_lane0_xe24=0x4 -serdes_pre_driver_current_lane1_xe24=0x4 -serdes_pre_driver_current_lane2_xe24=0x4 -serdes_pre_driver_current_lane3_xe24=0x4 -serdes_preemphasis_lane0_xe24=0xc6e0 -serdes_preemphasis_lane1_xe24=0xc6e0 -serdes_preemphasis_lane2_xe24=0xc6e0 -serdes_preemphasis_lane3_xe24=0xcec0 - -# xe25 (40G) -portmap_26=121:40 -xgxs_rx_lane_map_26=0x1320 -xgxs_tx_lane_map_26=0x3021 -phy_xaui_rx_polarity_flip_26=0xd -phy_xaui_tx_polarity_flip_26=0xb -serdes_driver_current_lane0_xe25=0x4 -serdes_driver_current_lane1_xe25=0x4 -serdes_driver_current_lane2_xe25=0x4 -serdes_driver_current_lane3_xe25=0x4 -serdes_pre_driver_current_lane0_xe25=0x4 -serdes_pre_driver_current_lane1_xe25=0x4 -serdes_pre_driver_current_lane2_xe25=0x4 -serdes_pre_driver_current_lane3_xe25=0x4 -serdes_preemphasis_lane0_xe25=0xc6e0 -serdes_preemphasis_lane1_xe25=0xc6e0 -serdes_preemphasis_lane2_xe25=0xc6e0 -serdes_preemphasis_lane3_xe25=0xc6e0 - -# xe26 (40G) -portmap_27=81:40 -xgxs_rx_lane_map_27=0x1320 -xgxs_tx_lane_map_27=0x2031 -phy_xaui_rx_polarity_flip_27=0x1 -phy_xaui_tx_polarity_flip_27=0x2 -serdes_driver_current_lane0_xe26=0x2 -serdes_driver_current_lane1_xe26=0x2 -serdes_driver_current_lane2_xe26=0x2 -serdes_driver_current_lane3_xe26=0x2 -serdes_pre_driver_current_lane0_xe26=0x2 -serdes_pre_driver_current_lane1_xe26=0x2 -serdes_pre_driver_current_lane2_xe26=0x2 -serdes_pre_driver_current_lane3_xe26=0x2 -serdes_preemphasis_lane0_xe26=0xbb10 -serdes_preemphasis_lane1_xe26=0xbb10 -serdes_preemphasis_lane2_xe26=0xbf00 -serdes_preemphasis_lane3_xe26=0xbb10 - -# xe27 (40G) -portmap_28=85:40 -xgxs_rx_lane_map_28=0x213 -xgxs_tx_lane_map_28=0x1203 -phy_xaui_rx_polarity_flip_28=0xc -phy_xaui_tx_polarity_flip_28=0xe -serdes_driver_current_lane0_xe27=0x4 -serdes_driver_current_lane1_xe27=0x5 -serdes_driver_current_lane2_xe27=0x4 -serdes_driver_current_lane3_xe27=0x5 -serdes_pre_driver_current_lane0_xe27=0x4 -serdes_pre_driver_current_lane1_xe27=0x5 -serdes_pre_driver_current_lane2_xe27=0x4 -serdes_pre_driver_current_lane3_xe27=0x5 -serdes_preemphasis_lane0_xe27=0xc2f0 -serdes_preemphasis_lane1_xe27=0xc6e0 -serdes_preemphasis_lane2_xe27=0xc6e0 -serdes_preemphasis_lane3_xe27=0xc6e0 - -# xe28 (40G) -portmap_29=93:40 -xgxs_rx_lane_map_29=0x1320 -xgxs_tx_lane_map_29=0x2031 -phy_xaui_rx_polarity_flip_29=0x1 -phy_xaui_tx_polarity_flip_29=0x2 -serdes_driver_current_lane0_xe28=0x4 -serdes_driver_current_lane1_xe28=0x4 -serdes_driver_current_lane2_xe28=0x4 -serdes_driver_current_lane3_xe28=0x4 -serdes_pre_driver_current_lane0_xe28=0x4 -serdes_pre_driver_current_lane1_xe28=0x4 -serdes_pre_driver_current_lane2_xe28=0x4 -serdes_pre_driver_current_lane3_xe28=0x4 -serdes_preemphasis_lane0_xe28=0xc2f0 -serdes_preemphasis_lane1_xe28=0xc2f0 -serdes_preemphasis_lane2_xe28=0xc2f0 -serdes_preemphasis_lane3_xe28=0xc2f0 - -# xe29 (40G) -portmap_30=89:40 -xgxs_rx_lane_map_30=0x1320 -xgxs_tx_lane_map_30=0x3021 -phy_xaui_rx_polarity_flip_30=0x2 -phy_xaui_tx_polarity_flip_30=0xb -serdes_driver_current_lane0_xe29=0x4 -serdes_driver_current_lane1_xe29=0x4 -serdes_driver_current_lane2_xe29=0x4 -serdes_driver_current_lane3_xe29=0x4 -serdes_pre_driver_current_lane0_xe29=0x4 -serdes_pre_driver_current_lane1_xe29=0x4 -serdes_pre_driver_current_lane2_xe29=0x4 -serdes_pre_driver_current_lane3_xe29=0x4 -serdes_preemphasis_lane0_xe29=0xcad0 -serdes_preemphasis_lane1_xe29=0xc6e0 -serdes_preemphasis_lane2_xe29=0xc6e0 -serdes_preemphasis_lane3_xe29=0xc6e0 - -# xe30 (40G) -portmap_31=101:40 -xgxs_rx_lane_map_31=0x1320 -xgxs_tx_lane_map_31=0x1203 -phy_xaui_rx_polarity_flip_31=0x1 -phy_xaui_tx_polarity_flip_31=0x6 -serdes_driver_current_lane0_xe30=0x6 -serdes_driver_current_lane1_xe30=0x6 -serdes_driver_current_lane2_xe30=0x6 -serdes_driver_current_lane3_xe30=0x7 -serdes_pre_driver_current_lane0_xe30=0x6 -serdes_pre_driver_current_lane1_xe30=0x6 -serdes_pre_driver_current_lane2_xe30=0x6 -serdes_pre_driver_current_lane3_xe30=0x7 -serdes_preemphasis_lane0_xe30=0xcec0 -serdes_preemphasis_lane1_xe30=0xcec0 -serdes_preemphasis_lane2_xe30=0xcad0 -serdes_preemphasis_lane3_xe30=0xc6e0 - -# xe31 (40G) -portmap_32=97:40 -xgxs_rx_lane_map_32=0x213 -xgxs_tx_lane_map_32=0x2031 -phy_xaui_rx_polarity_flip_32=0xc -phy_xaui_tx_polarity_flip_32=0x3 -serdes_driver_current_lane0_xe31=0x5 -serdes_driver_current_lane1_xe31=0x5 -serdes_driver_current_lane2_xe31=0x5 -serdes_driver_current_lane3_xe31=0x5 -serdes_pre_driver_current_lane0_xe31=0x5 -serdes_pre_driver_current_lane1_xe31=0x5 -serdes_pre_driver_current_lane2_xe31=0x5 -serdes_pre_driver_current_lane3_xe31=0x5 -serdes_preemphasis_lane0_xe31=0xcad0 -serdes_preemphasis_lane1_xe31=0xcad0 -serdes_preemphasis_lane2_xe31=0xcad0 -serdes_preemphasis_lane3_xe31=0xcad0 diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/asic.conf b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/asic.conf new file mode 100644 index 000000000000..3e0fdee25c25 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/asic.conf @@ -0,0 +1 @@ +NUM_ASIC=4 diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/default_sku b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/default_sku new file mode 100644 index 000000000000..c6e0315d7d45 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/default_sku @@ -0,0 +1 @@ +msft_four_asic_vs diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/installer.conf b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/installer.conf new file mode 120000 index 000000000000..dd822dfbf819 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/installer.conf @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/installer.conf \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers.json.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers.json.j2 rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers.json.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_def.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_def.j2 rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_def.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_t0.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_t0.j2 rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_t0.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_t1.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/buffers_defaults_t1.j2 rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/buffers_defaults_t1.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/pg_profile_lookup.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/pg_profile_lookup.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/pg_profile_lookup.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/port_config.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/qos.json.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/qos.json.j2 rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/qos.json.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/sai.profile b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/sai.profile similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/sai.profile rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/sai.profile diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/td2-s6000-32x40G.config.bcm similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/0/td2-s6000-32x40G.config.bcm rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/0/td2-s6000-32x40G.config.bcm diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/port_config.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/sai.profile b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/lanemap.ini new file mode 100644 index 000000000000..5492bd915860 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/lanemap.ini @@ -0,0 +1,4 @@ +eth1:1,2,3,4 +eth2:5,6,7,8 +eth3:9,10,11,12 +eth4:13,14,15,16 diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/port_config.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/port_config.ini similarity index 55% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/port_config.ini index a4361c7b78d6..11dfe6e0e06c 100644 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/2/port_config.ini +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/port_config.ini @@ -3,7 +3,3 @@ Ethernet-BP32 1,2,3,4 Eth0-ASIC2 8 Eth0-ASIC2 Int Ethernet-BP36 5,6,7,8 Eth1-ASIC2 9 Eth1-ASIC2 Int Ethernet-BP40 9,10,11,12 Eth2-ASIC2 10 Eth2-ASIC2 Int Ethernet-BP44 13,14,15,16 Eth3-ASIC2 11 Eth3-ASIC2 Int -Ethernet-BP48 17,18,19,20 Eth4-ASIC2 12 Eth4-ASIC2 Int -Ethernet-BP52 21,22,23,24 Eth5-ASIC2 13 Eth5-ASIC2 Int -Ethernet-BP56 25,26,27,28 Eth6-ASIC2 14 Eth6-ASIC2 Int -Ethernet-BP60 29,30,31,32 Eth7-ASIC2 15 Eth7-ASIC2 Int diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/sai.profile b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/2/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/lanemap.ini new file mode 100644 index 000000000000..5492bd915860 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/lanemap.ini @@ -0,0 +1,4 @@ +eth1:1,2,3,4 +eth2:5,6,7,8 +eth3:9,10,11,12 +eth4:13,14,15,16 diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/port_config.ini b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/port_config.ini similarity index 55% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/port_config.ini index e97ded4527b3..32f55b2a1988 100644 --- a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/3/port_config.ini +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/port_config.ini @@ -3,7 +3,3 @@ Ethernet-BP64 1,2,3,4 Eth0-ASIC3 16 Eth0-ASIC3 Ethernet-BP68 5,6,7,8 Eth1-ASIC3 17 Eth1-ASIC3 Int Ethernet-BP72 9,10,11,12 Eth2-ASIC3 18 Eth2-ASIC3 Int Ethernet-BP76 13,14,15,16 Eth3-ASIC3 19 Eth3-ASIC3 Int -Ethernet-BP80 17,18,19,20 Eth4-ASIC3 20 Eth4-ASIC3 Int -Ethernet-BP84 21,22,23,24 Eth5-ASIC3 21 Eth5-ASIC3 Int -Ethernet-BP92 25,26,27,28 Eth6-ASIC3 22 Eth6-ASIC3 Int -Ethernet-BP96 29,30,31,32 Eth7-ASIC3 23 Eth7-ASIC3 Int diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/sai.profile b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/3/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/topology.sh b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/topology.sh similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/topology.sh rename to device/virtual/x86_64-kvm_x86_64_4_asic-r0/msft_four_asic_vs/topology.sh diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/plugins b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/plugins new file mode 120000 index 000000000000..29725a9aa071 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/plugins @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/plugins/ \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_4_asic-r0/pmon_daemon_control.json b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/pmon_daemon_control.json new file mode 120000 index 000000000000..5a0bb045d20d --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_4_asic-r0/pmon_daemon_control.json @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/pmon_daemon_control.json \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/asic.conf b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/asic.conf new file mode 100644 index 000000000000..8a4f716dde7a --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/asic.conf @@ -0,0 +1 @@ +NUM_ASIC=6 diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/default_sku b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/default_sku new file mode 100644 index 000000000000..fc43568478ae --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/default_sku @@ -0,0 +1 @@ +msft_multi_asic_vs diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/installer.conf b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/installer.conf new file mode 120000 index 000000000000..dd822dfbf819 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/installer.conf @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/installer.conf \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers.json.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers.json.j2 rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers.json.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_def.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_def.j2 rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_def.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_t0.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_t0.j2 rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_t0.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_t1.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/buffers_defaults_t1.j2 rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/buffers_defaults_t1.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/pg_profile_lookup.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/pg_profile_lookup.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/0/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/qos.json.j2 similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/qos.json.j2 rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/qos.json.j2 diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/sai.profile similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/sai.profile rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/sai.profile diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_four_asic_vs/1/td2-s6000-32x40G.config.bcm rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/0/td2-s6000-32x40G.config.bcm diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/1/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/1/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/2/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/2/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/3/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/3/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/4/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/4/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers.json.j2 new file mode 120000 index 000000000000..a1d8e80782f5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers.json.j2 @@ -0,0 +1 @@ +../0/buffers.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 new file mode 120000 index 000000000000..5194e16870af --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_def.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_def.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 new file mode 120000 index 000000000000..12f4d6638a13 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t0.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t0.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 new file mode 120000 index 000000000000..1dfd55a5dda5 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/buffers_defaults_t1.j2 @@ -0,0 +1 @@ +../0/buffers_defaults_t1.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/lanemap.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/lanemap.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/lanemap.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/lanemap.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini new file mode 120000 index 000000000000..61f0da8b31c3 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/pg_profile_lookup.ini @@ -0,0 +1 @@ +../0/pg_profile_lookup.ini \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/port_config.ini b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/port_config.ini similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/5/port_config.ini rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/port_config.ini diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/qos.json.j2 b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/qos.json.j2 new file mode 120000 index 000000000000..f84452fa4e97 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/qos.json.j2 @@ -0,0 +1 @@ +../0/qos.json.j2 \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/sai.profile b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/sai.profile new file mode 120000 index 000000000000..1e172f3e0765 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/sai.profile @@ -0,0 +1 @@ +../0/sai.profile \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm new file mode 120000 index 000000000000..27d295e2b748 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/5/td2-s6000-32x40G.config.bcm @@ -0,0 +1 @@ +../0/td2-s6000-32x40G.config.bcm \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/topology.sh b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/topology.sh similarity index 100% rename from device/virtual/x86_64-kvm_x86_64-r0/msft_multi_asic_vs/topology.sh rename to device/virtual/x86_64-kvm_x86_64_6_asic-r0/msft_multi_asic_vs/topology.sh diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/plugins b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/plugins new file mode 120000 index 000000000000..29725a9aa071 --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/plugins @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/plugins/ \ No newline at end of file diff --git a/device/virtual/x86_64-kvm_x86_64_6_asic-r0/pmon_daemon_control.json b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/pmon_daemon_control.json new file mode 120000 index 000000000000..5a0bb045d20d --- /dev/null +++ b/device/virtual/x86_64-kvm_x86_64_6_asic-r0/pmon_daemon_control.json @@ -0,0 +1 @@ +../x86_64-kvm_x86_64-r0/pmon_daemon_control.json \ No newline at end of file diff --git a/dockers/docker-base-buster/Dockerfile.j2 b/dockers/docker-base-buster/Dockerfile.j2 index a87ca31c6073..cbd7b999e6ce 100644 --- a/dockers/docker-base-buster/Dockerfile.j2 +++ b/dockers/docker-base-buster/Dockerfile.j2 @@ -4,7 +4,7 @@ FROM multiarch/debian-debootstrap:armhf-buster {% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %} FROM multiarch/debian-debootstrap:arm64-buster {% else %} -FROM debian:buster +FROM {{DOCKER_BASE_ARCH}}/debian:buster {% endif %} # Clean documentation in FROM image @@ -59,14 +59,16 @@ RUN apt-get update && \ libdaemon0 \ libdbus-1-3 \ libjansson4 \ -# ip and ifconfig utility missing in docker for arm arch - iproute2 \ +# ifconfig utility missing in docker for arm arch net-tools \ # for processing/handling json files in bash environment jq \ # for sairedis zmq rpc channel libzmq5 +# Install 5.10 version of iproute2 from backports +RUN apt-get -y -t buster-backports install iproute2 + # Install redis-tools {% if CONFIGURED_ARCH == "armhf" %} RUN curl -k -o redis-tools_6.0.6-1~bpo10+1_armhf.deb "https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1_bpo10+1_armhf.deb?sv=2015-04-05&sr=b&sig=67vHAMxsl%2BS3X1KsqhdYhakJkGdg5FKSPgU8kUiw4as%3D&se=2030-10-24T04%3A22%3A40Z&sp=r" diff --git a/dockers/docker-base-stretch/Dockerfile.j2 b/dockers/docker-base-stretch/Dockerfile.j2 index 652dec979b60..b77814bb2820 100644 --- a/dockers/docker-base-stretch/Dockerfile.j2 +++ b/dockers/docker-base-stretch/Dockerfile.j2 @@ -4,7 +4,7 @@ FROM multiarch/debian-debootstrap:armhf-stretch {% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %} FROM multiarch/debian-debootstrap:arm64-stretch {% else %} -FROM debian:stretch +FROM {{DOCKER_BASE_ARCH}}/debian:stretch {% endif %} # Clean documentation in FROM image diff --git a/dockers/docker-base/Dockerfile.j2 b/dockers/docker-base/Dockerfile.j2 index ecdbfda11a78..616a4cde7aff 100644 --- a/dockers/docker-base/Dockerfile.j2 +++ b/dockers/docker-base/Dockerfile.j2 @@ -3,7 +3,7 @@ FROM multiarch/debian-debootstrap:armhf-jessie {% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %} FROM multiarch/debian-debootstrap:arm64-jessie {% else %} -FROM debian:jessie +FROM {{DOCKER_BASE_ARCH}}/debian:jessie {% endif %} ## Remove retired jessie-updates repo diff --git a/dockers/docker-dhcp-relay/cli-plugin-tests/test_config_dhcp_relay.py b/dockers/docker-dhcp-relay/cli-plugin-tests/test_config_dhcp_relay.py index 8a47f6994b80..46acda358b8f 100644 --- a/dockers/docker-dhcp-relay/cli-plugin-tests/test_config_dhcp_relay.py +++ b/dockers/docker-dhcp-relay/cli-plugin-tests/test_config_dhcp_relay.py @@ -13,12 +13,32 @@ import dhcp_relay config_vlan_add_dhcp_relay_output="""\ -Added DHCP relay destination address 192.0.0.100 to Vlan1000 +Added DHCP relay destination addresses ['192.0.0.100'] to Vlan1000 +Restarting DHCP relay service... +""" + +config_vlan_add_dhcpv6_relay_output="""\ +Added DHCP relay destination addresses ['fc02:2000::1'] to Vlan1000 +Restarting DHCP relay service... +""" + +config_vlan_add_multiple_dhcpv6_relay_output="""\ +Added DHCP relay destination addresses ['fc02:2000::1', 'fc02:2000::2', 'fc02:2000::3'] to Vlan1000 Restarting DHCP relay service... """ config_vlan_del_dhcp_relay_output="""\ -Removed DHCP relay destination address 192.0.0.100 from Vlan1000 +Removed DHCP relay destination addresses ('192.0.0.100',) from Vlan1000 +Restarting DHCP relay service... +""" + +config_vlan_del_dhcpv6_relay_output="""\ +Removed DHCP relay destination addresses ('fc02:2000::1',) from Vlan1000 +Restarting DHCP relay service... +""" + +config_vlan_del_multiple_dhcpv6_relay_output="""\ +Removed DHCP relay destination addresses ('fc02:2000::1', 'fc02:2000::2', 'fc02:2000::3') from Vlan1000 Restarting DHCP relay service... """ @@ -54,12 +74,14 @@ def test_config_vlan_add_dhcp_relay_with_invalid_vlanid(self): assert "Error: Vlan4096 doesn't exist" in result.output assert mock_run_command.call_count == 0 - def test_config_vlan_add_dhcp_relay_with_invalid_ip(self): + def test_config_vlan_add_dhcp_relay_with_invalid_ip(self, mock_cfgdb): runner = CliRunner() + db = Db() + db.cfgdb = mock_cfgdb with mock.patch('utilities_common.cli.run_command') as mock_run_command: result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["add"], - ["1000", "192.0.0.1000"]) + ["1000", "192.0.0.1000"], obj=db) print(result.exit_code) print(result.output) # traceback.print_tb(result.exc_info[2]) @@ -67,6 +89,14 @@ def test_config_vlan_add_dhcp_relay_with_invalid_ip(self): assert "Error: 192.0.0.1000 is invalid IP address" in result.output assert mock_run_command.call_count == 0 + result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["add"], + ["1000", "192.0.0."], obj=db) + print(result.exit_code) + print(result.output) + assert result.exit_code != 0 + assert "Error: 192.0.0. is invalid IP address" in result.output + assert mock_run_command.call_count == 0 + def test_config_vlan_add_dhcp_relay_with_exist_ip(self, mock_cfgdb): runner = CliRunner() db = Db() @@ -110,6 +140,64 @@ def test_config_vlan_add_del_dhcp_relay_dest(self, mock_cfgdb): assert mock_run_command.call_count == 3 db.cfgdb.set_entry.assert_called_once_with('VLAN', 'Vlan1000', {'dhcp_servers': ['192.0.0.1']}) + def test_config_vlan_add_del_dhcpv6_relay_dest(self, mock_cfgdb): + runner = CliRunner() + db = Db() + db.cfgdb = mock_cfgdb + + # add new relay dest + with mock.patch("utilities_common.cli.run_command") as mock_run_command: + result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["add"], + ["1000", "fc02:2000::1"], obj=db) + print(result.exit_code) + print(result.output) + assert result.exit_code == 0 + assert result.output == config_vlan_add_dhcpv6_relay_output + assert mock_run_command.call_count == 3 + db.cfgdb.set_entry.assert_called_once_with('VLAN', 'Vlan1000', {'dhcp_servers': ['192.0.0.1'], 'dhcpv6_servers': ['fc02:2000::1']}) + + db.cfgdb.set_entry.reset_mock() + + # del relay dest + with mock.patch("utilities_common.cli.run_command") as mock_run_command: + result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["del"], + ["1000", "fc02:2000::1"], obj=db) + print(result.exit_code) + print(result.output) + assert result.exit_code == 0 + assert result.output == config_vlan_del_dhcpv6_relay_output + assert mock_run_command.call_count == 3 + db.cfgdb.set_entry.assert_called_once_with('VLAN', 'Vlan1000', {'dhcp_servers': ['192.0.0.1']}) + + def test_config_vlan_add_del_multiple_dhcpv6_relay_dest(self, mock_cfgdb): + runner = CliRunner() + db = Db() + db.cfgdb = mock_cfgdb + + # add new relay dest + with mock.patch("utilities_common.cli.run_command") as mock_run_command: + result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["add"], + ["1000", "fc02:2000::1", "fc02:2000::2", "fc02:2000::3"], obj=db) + print(result.exit_code) + print(result.output) + assert result.exit_code == 0 + assert result.output == config_vlan_add_multiple_dhcpv6_relay_output + assert mock_run_command.call_count == 3 + db.cfgdb.set_entry.assert_called_once_with('VLAN', 'Vlan1000', {'dhcp_servers': ['192.0.0.1'], 'dhcpv6_servers': ['fc02:2000::1', 'fc02:2000::2', 'fc02:2000::3']}) + + db.cfgdb.set_entry.reset_mock() + + # del relay dest + with mock.patch("utilities_common.cli.run_command") as mock_run_command: + result = runner.invoke(dhcp_relay.vlan_dhcp_relay.commands["del"], + ["1000", "fc02:2000::1", "fc02:2000::2", "fc02:2000::3"], obj=db) + print(result.exit_code) + print(result.output) + assert result.exit_code == 0 + assert result.output == config_vlan_del_multiple_dhcpv6_relay_output + assert mock_run_command.call_count == 3 + db.cfgdb.set_entry.assert_called_once_with('VLAN', 'Vlan1000', {'dhcp_servers': ['192.0.0.1']}) + def test_config_vlan_remove_nonexist_dhcp_relay_dest(self, mock_cfgdb): runner = CliRunner() db = Db() diff --git a/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py b/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py index b8219fcc6ad3..2636a43c7d37 100644 --- a/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py +++ b/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py @@ -20,9 +20,9 @@ def test_plugin_registration(self): def test_dhcp_relay_column_output(self): ctx = ( - ({'Vlan100': {'dhcp_servers': ['192.0.0.1', '192.168.0.2']}}, {}, {}), + ({'Vlan100': {'dhcp_servers': ['192.0.0.1', '192.168.0.2'], 'dhcpv6_servers': ['fc02:2000::1', 'fc02:2000::2']}}, {}, {}), (), ) - assert show_dhcp_relay.get_dhcp_helper_address(ctx, 'Vlan100') == '192.0.0.1\n192.168.0.2' + assert show_dhcp_relay.get_dhcp_helper_address(ctx, 'Vlan100') == '192.0.0.1\n192.168.0.2\nfc02:2000::1\nfc02:2000::2' diff --git a/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py b/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py index e3cdd8304654..33a798fc8778 100644 --- a/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py +++ b/dockers/docker-dhcp-relay/cli/config/plugins/dhcp_relay.py @@ -1,5 +1,6 @@ import click import utilities_common.cli as clicommon +import ipaddress @click.group(cls=clicommon.AbbreviationGroup, name='dhcp_relay') def vlan_dhcp_relay(): @@ -7,66 +8,98 @@ def vlan_dhcp_relay(): @vlan_dhcp_relay.command('add') @click.argument('vid', metavar='', required=True, type=int) -@click.argument('dhcp_relay_destination_ip', metavar='', required=True) +@click.argument('dhcp_relay_destination_ips', nargs=-1, required=True) @clicommon.pass_db -def add_vlan_dhcp_relay_destination(db, vid, dhcp_relay_destination_ip): +def add_vlan_dhcp_relay_destination(db, vid, dhcp_relay_destination_ips): """ Add a destination IP address to the VLAN's DHCP relay """ ctx = click.get_current_context() + added_servers = [] - if not clicommon.is_ipaddress(dhcp_relay_destination_ip): - ctx.fail('{} is invalid IP address'.format(dhcp_relay_destination_ip)) - + # Verify vlan is valid vlan_name = 'Vlan{}'.format(vid) vlan = db.cfgdb.get_entry('VLAN', vlan_name) if len(vlan) == 0: ctx.fail("{} doesn't exist".format(vlan_name)) - dhcp_relay_dests = vlan.get('dhcp_servers', []) - if dhcp_relay_destination_ip in dhcp_relay_dests: - click.echo("{} is already a DHCP relay destination for {}".format(dhcp_relay_destination_ip, vlan_name)) - return + # Verify all ip addresses are valid and not exist in DB + dhcp_servers = vlan.get('dhcp_servers', []) + dhcpv6_servers = vlan.get('dhcpv6_servers', []) + + for ip_addr in dhcp_relay_destination_ips: + try: + ipaddress.ip_address(ip_addr) + if (ip_addr in dhcp_servers) or (ip_addr in dhcpv6_servers): + click.echo("{} is already a DHCP relay destination for {}".format(ip_addr, vlan_name)) + continue + if clicommon.ipaddress_type(ip_addr) == 4: + dhcp_servers.append(ip_addr) + else: + dhcpv6_servers.append(ip_addr) + added_servers.append(ip_addr) + except Exception: + ctx.fail('{} is invalid IP address'.format(ip_addr)) + + # Append new dhcp servers to config DB + if len(dhcp_servers): + vlan['dhcp_servers'] = dhcp_servers + if len(dhcpv6_servers): + vlan['dhcpv6_servers'] = dhcpv6_servers - dhcp_relay_dests.append(dhcp_relay_destination_ip) - vlan['dhcp_servers'] = dhcp_relay_dests db.cfgdb.set_entry('VLAN', vlan_name, vlan) - click.echo("Added DHCP relay destination address {} to {}".format(dhcp_relay_destination_ip, vlan_name)) - try: - click.echo("Restarting DHCP relay service...") - clicommon.run_command("systemctl stop dhcp_relay", display_cmd=False) - clicommon.run_command("systemctl reset-failed dhcp_relay", display_cmd=False) - clicommon.run_command("systemctl start dhcp_relay", display_cmd=False) - except SystemExit as e: - ctx.fail("Restart service dhcp_relay failed with error {}".format(e)) + + if len(added_servers): + click.echo("Added DHCP relay destination addresses {} to {}".format(added_servers, vlan_name)) + try: + click.echo("Restarting DHCP relay service...") + clicommon.run_command("systemctl stop dhcp_relay", display_cmd=False) + clicommon.run_command("systemctl reset-failed dhcp_relay", display_cmd=False) + clicommon.run_command("systemctl start dhcp_relay", display_cmd=False) + except SystemExit as e: + ctx.fail("Restart service dhcp_relay failed with error {}".format(e)) @vlan_dhcp_relay.command('del') @click.argument('vid', metavar='', required=True, type=int) -@click.argument('dhcp_relay_destination_ip', metavar='', required=True) +@click.argument('dhcp_relay_destination_ips', nargs=-1, required=True) @clicommon.pass_db -def del_vlan_dhcp_relay_destination(db, vid, dhcp_relay_destination_ip): +def del_vlan_dhcp_relay_destination(db, vid, dhcp_relay_destination_ips): """ Remove a destination IP address from the VLAN's DHCP relay """ ctx = click.get_current_context() - if not clicommon.is_ipaddress(dhcp_relay_destination_ip): - ctx.fail('{} is invalid IP address'.format(dhcp_relay_destination_ip)) - + # Verify vlan is valid vlan_name = 'Vlan{}'.format(vid) vlan = db.cfgdb.get_entry('VLAN', vlan_name) if len(vlan) == 0: ctx.fail("{} doesn't exist".format(vlan_name)) - dhcp_relay_dests = vlan.get('dhcp_servers', []) - if not dhcp_relay_destination_ip in dhcp_relay_dests: - ctx.fail("{} is not a DHCP relay destination for {}".format(dhcp_relay_destination_ip, vlan_name)) + # Remove dhcp servers if they exist in the DB + dhcp_servers = vlan.get('dhcp_servers', []) + dhcpv6_servers = vlan.get('dhcpv6_servers', []) + + for ip_addr in dhcp_relay_destination_ips: + if (ip_addr not in dhcp_servers) and (ip_addr not in dhcpv6_servers): + ctx.fail("{} is not a DHCP relay destination for {}".format(ip_addr, vlan_name)) + if clicommon.ipaddress_type(ip_addr) == 4: + dhcp_servers.remove(ip_addr) + else: + dhcpv6_servers.remove(ip_addr) + + # Update dhcp servers to config DB + if len(dhcp_servers): + vlan['dhcp_servers'] = dhcp_servers + else: + if 'dhcp_servers' in vlan.keys(): + del vlan['dhcp_servers'] - dhcp_relay_dests.remove(dhcp_relay_destination_ip) - if len(dhcp_relay_dests) == 0: - del vlan['dhcp_servers'] + if len(dhcpv6_servers): + vlan['dhcpv6_servers'] = dhcpv6_servers else: - vlan['dhcp_servers'] = dhcp_relay_dests + if 'dhcpv6_servers' in vlan.keys(): + del vlan['dhcpv6_servers'] + db.cfgdb.set_entry('VLAN', vlan_name, vlan) - click.echo("Removed DHCP relay destination address {} from {}".format(dhcp_relay_destination_ip, vlan_name)) + click.echo("Removed DHCP relay destination addresses {} from {}".format(dhcp_relay_destination_ips, vlan_name)) try: click.echo("Restarting DHCP relay service...") clicommon.run_command("systemctl stop dhcp_relay", display_cmd=False) diff --git a/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py b/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py index ae8c453e45f3..95698f276463 100644 --- a/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py +++ b/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py @@ -9,8 +9,9 @@ def get_dhcp_helper_address(ctx, vlan): return "" dhcp_helpers = vlan_config.get('dhcp_servers', []) + dhcpv6_helpers = vlan_config.get('dhcpv6_servers', []) - return '\n'.join(natsorted(dhcp_helpers)) + return '\n'.join(natsorted(dhcp_helpers) + natsorted(dhcpv6_helpers)) vlan.VlanBrief.register_column('DHCP Helper Address', get_dhcp_helper_address) diff --git a/dockers/docker-orchagent/enable_counters.py b/dockers/docker-orchagent/enable_counters.py index a00bd3facce7..d0c855cc61b3 100755 --- a/dockers/docker-orchagent/enable_counters.py +++ b/dockers/docker-orchagent/enable_counters.py @@ -17,6 +17,9 @@ def enable_counter_group(db, name): info = {} info['FLEX_COUNTER_STATUS'] = 'enable' db.mod_entry("FLEX_COUNTER_TABLE", name, info) + else: + entry_info.update({"FLEX_COUNTER_DELAY_STATUS":"false"}) + db.mod_entry("FLEX_COUNTER_TABLE", name, entry_info) def enable_rates(): # set the default interval for rates diff --git a/dockers/docker-platform-monitor/docker-pmon.supervisord.conf.j2 b/dockers/docker-platform-monitor/docker-pmon.supervisord.conf.j2 index b7eca4103ef2..1bad4ab36731 100644 --- a/dockers/docker-platform-monitor/docker-pmon.supervisord.conf.j2 +++ b/dockers/docker-platform-monitor/docker-pmon.supervisord.conf.j2 @@ -150,7 +150,7 @@ dependent_startup_wait_for=rsyslogd:running {% if not skip_pcied %} [program:pcied] -command=/usr/local/bin/pcied +command={% if API_VERSION == 3 and 'pcied' not in python2_daemons %}python3 {% else %} python2 {% endif %}/usr/local/bin/pcied priority=10 autostart=false autorestart=unexpected diff --git a/dockers/docker-ptf/Dockerfile.j2 b/dockers/docker-ptf/Dockerfile.j2 index dfa4b6a4daa8..e14959d4f3be 100644 --- a/dockers/docker-ptf/Dockerfile.j2 +++ b/dockers/docker-ptf/Dockerfile.j2 @@ -3,21 +3,12 @@ FROM multiarch/debian-debootstrap:armhf-stretch {% elif CONFIGURED_ARCH == "arm64" and MULTIARCH_QEMU_ENVIRON == "y" %} FROM multiarch/debian-debootstrap:arm64-stretch {% else %} -FROM debian:stretch +FROM debian:buster {% endif %} MAINTAINER Pavel Shirshov -## Remove retired jessie-updates repo -RUN sed -i '/deb http:\/\/deb.debian.org\/debian jessie-updates main/d' /etc/apt/sources.list - -## Copy dependencies -COPY \ -{% for deb in docker_ptf_debs.split(' ') -%} -debs/{{ deb }}{{' '}} -{%- endfor -%} -debs/ - +RUN echo "deb [arch=amd64] http://debian-archive.trafficmanager.net/debian buster-backports main" >> /etc/apt/sources.list ## Make apt-get non-interactive ENV DEBIAN_FRONTEND=noninteractive @@ -47,7 +38,7 @@ RUN sed --in-place 's/httpredir.debian.org/debian-archive.trafficmanager.net/' / cmake \ libqt5core5a \ libqt5network5 \ - libboost-atomic1.62.0 \ + libboost-atomic1.71.0 \ less \ git \ iputils-ping \ @@ -68,12 +59,6 @@ RUN sed --in-place 's/httpredir.debian.org/debian-archive.trafficmanager.net/' / bridge-utils \ libteam-utils - -RUN dpkg -i \ -{% for deb in docker_ptf_debs.split(' ') -%} -debs/{{ deb }}{{' '}} -{%- endfor %} - # Install all python modules from pypi. python-scapy is exception, ptf debian package requires python-scapy # TODO: Clean up this step RUN rm -rf /debs \ @@ -120,6 +105,7 @@ RUN rm -rf /debs \ && pip install exabgp==3.4.17\ && pip install pyaml \ && pip install pybrctl pyro4 rpyc yabgp \ + && pip install unittest-xml-reporting \ && mkdir -p /opt \ && cd /opt \ && wget https://raw.githubusercontent.com/p4lang/ptf/master/ptf_nn/ptf_nn_agent.py diff --git a/dockers/docker-sonic-mgmt-framework/mgmt_vars.j2 b/dockers/docker-sonic-mgmt-framework/mgmt_vars.j2 index f43b11ba4199..b04446a11a5a 100644 --- a/dockers/docker-sonic-mgmt-framework/mgmt_vars.j2 +++ b/dockers/docker-sonic-mgmt-framework/mgmt_vars.j2 @@ -1,4 +1,4 @@ { - "rest_server": {% if REST_SERVER is defined and "default" in RESET_SERVER.keys() %}{{ REST_SERVER['default'] }}{% else %}""{% endif %}, + "rest_server": {% if REST_SERVER is defined and "default" in REST_SERVER.keys() %}{{ REST_SERVER['default'] }}{% else %}""{% endif %}, "x509" : {% if "x509" in DEVICE_METADATA.keys() %}{{ DEVICE_METADATA["x509"] }}{% else %}""{% endif %} } diff --git a/dockers/docker-sonic-mgmt/Dockerfile.j2 b/dockers/docker-sonic-mgmt/Dockerfile.j2 index 23007ffb9a86..543e4df1f075 100644 --- a/dockers/docker-sonic-mgmt/Dockerfile.j2 +++ b/dockers/docker-sonic-mgmt/Dockerfile.j2 @@ -71,6 +71,7 @@ RUN pip install cffi==1.10.0 \ textfsm \ virtualenv \ retry \ + thrift==0.11.0 \ && git clone https://github.com/p4lang/scapy-vxlan.git \ && cd scapy-vxlan \ && python setup.py install \ diff --git a/files/Aboot/boot0.j2 b/files/Aboot/boot0.j2 index bb8bd6587581..efbd3d4e8c97 100644 --- a/files/Aboot/boot0.j2 +++ b/files/Aboot/boot0.j2 @@ -478,7 +478,6 @@ write_platform_specific_cmdline() { if [ "$platform" = "crow" ]; then # Assuming sid=Clearlake aboot_machine=arista_7050_qx32s - flash_size=3700 cmdline_add modprobe.blacklist=radeon,sp5100_tco fi if [ "$sid" = "Upperlake" ] || [ "$sid" = "UpperlakeES" ]; then @@ -510,7 +509,6 @@ write_platform_specific_cmdline() { fi if [ "$sid" = "Lodoga" ]; then aboot_machine=arista_7050cx3_32s - flash_size=3700 fi if [ "$sid" = "Marysville" ]; then aboot_machine=arista_7050sx3_48yc8 @@ -593,12 +591,16 @@ write_platform_specific_cmdline() { if [ $flash_size -ge 28000 ]; then varlog_size=4096 - elif [ $flash_size -ge 3700 ]; then + elif [ $flash_size -gt 4000 ]; then varlog_size=400 - elif [ $flash_size -le 2000 ]; then - # enable docker_inram for switches with less than 2G of flash - cmdline_add docker_inram=on + else + varlog_size=256 cmdline_add logs_inram=on + if [ $flash_size -le 2000 ]; then + # enable docker_inram for switches with less than 2G of flash + varlog_size=128 + cmdline_add docker_inram=on + fi fi cmdline_add "varlog_size=$varlog_size" diff --git a/files/apt/sources.list.amd64 b/files/apt/sources.list.amd64 index 45902be1078c..04a2b143532d 100644 --- a/files/apt/sources.list.amd64 +++ b/files/apt/sources.list.amd64 @@ -1,13 +1,15 @@ ## Debian mirror on Microsoft Azure ## Ref: http://debian-archive.trafficmanager.net/ -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ buster main contrib non-free -deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian/ buster main contrib non-free -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ buster/updates main contrib non-free -deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ buster/updates main contrib non-free -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ buster-backports main contrib non-free -deb [arch=amd64] http://packages.trafficmanager.net/debian/debian buster main contrib non-free -deb-src [arch=amd64] http://packages.trafficmanager.net/debian/debian buster main contrib non-free -deb [arch=amd64] http://packages.trafficmanager.net/debian/debian-security/ buster_updates main contrib non-free -deb-src [arch=amd64] http://packages.trafficmanager.net/debian/debian-security/ buster_updates main contrib non-free -deb [arch=amd64] http://packages.trafficmanager.net/debian/debian buster-backports main contrib non-free +deb [arch=amd64] http://deb.debian.org/debian/ bullseye main contrib non-free +deb-src [arch=amd64] http://deb.debian.org/debian/ bullseye main contrib non-free +#deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free +#deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free +#deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye/updates main contrib non-free +#deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye/updates main contrib non-free +#deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye-backports main contrib non-free +#deb [arch=amd64] http://packages.trafficmanager.net/debian/debian bullseye main contrib non-free +#deb-src [arch=amd64] http://packages.trafficmanager.net/debian/debian bullseye main contrib non-free +#deb [arch=amd64] http://packages.trafficmanager.net/debian/debian-security/ bullseye_updates main contrib non-free +#deb-src [arch=amd64] http://packages.trafficmanager.net/debian/debian-security/ bullseye_updates main contrib non-free +#deb [arch=amd64] http://packages.trafficmanager.net/debian/debian bullseye-backports main contrib non-free diff --git a/files/build_templates/docker_image_ctl.j2 b/files/build_templates/docker_image_ctl.j2 index 915279dfba94..850188ff0a88 100644 --- a/files/build_templates/docker_image_ctl.j2 +++ b/files/build_templates/docker_image_ctl.j2 @@ -57,7 +57,7 @@ function ebtables_config() function getMountPoint() { - echo $1 | python -c "import sys, json, os; mnts = [x for x in json.load(sys.stdin)[0]['Mounts'] if x['Destination'] == '/usr/share/sonic/hwsku']; print '' if len(mnts) == 0 else os.path.abspath(mnts[0]['Source'])" 2>/dev/null + echo $1 | python -c "import sys, json, os; mnts = [x for x in json.load(sys.stdin)[0]['Mounts'] if x['Destination'] == '/usr/share/sonic/hwsku']; print('' if len(mnts) == 0 else os.path.abspath(mnts[0]['Source']))" 2>/dev/null } function getBootType() @@ -287,9 +287,6 @@ start() { {%- endif %} {%- if docker_container_name == "swss" %} - # Obtain the vendor name - ASIC_VENDOR=`$SONIC_CFGGEN -y /etc/sonic/sonic_version.yml -v asic_type` - # Generate the asic_table.json and peripheral_table.json if [ ! -f /etc/sonic/asic_table.json ] && [ -f /usr/share/sonic/templates/asic_table.j2 ]; then sonic-cfggen -d -t /usr/share/sonic/templates/asic_table.j2 > /etc/sonic/asic_table.json @@ -418,7 +415,7 @@ start() { -v /usr/share/sonic/firmware:/usr/share/sonic/firmware:rw \ {%- endif %} {%- if docker_container_name == "swss" %} - -e ASIC_VENDOR=$ASIC_VENDOR \ + -e ASIC_VENDOR={{ sonic_asic_platform }} \ {%- endif -%} {%- if docker_container_name == "bgp" %} -v /etc/sonic/frr/$DEV:/etc/frr:rw \ diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index ec50fb423244..214896516d0d 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -69,7 +69,7 @@ sudo bash -c "echo \"DOCKER_OPTS=\"--storage-driver=overlay2\"\" >> $FILESYSTEM_ sudo mkdir -p "$FILESYSTEM_ROOT/$DOCKER_CTL_DIR" sudo cp $DOCKER_SCRIPTS_DIR/docker "$FILESYSTEM_ROOT/$DOCKER_CTL_SCRIPT" if [ $MULTIARCH_QEMU_ENVIRON == y ]; then - SONIC_NATIVE_DOCKERD_FOR_DOCKERFS=" -H unix:///dockerfs/var/run/docker.sock " + DOCKER_HOST="unix:///dockerfs/var/run/docker.sock" SONIC_NATIVE_DOCKERD_FOR_DOCKERFS_PID="cat `pwd`/dockerfs/var/run/docker.pid" else sudo chroot $FILESYSTEM_ROOT $DOCKER_CTL_SCRIPT start @@ -98,29 +98,23 @@ sudo mkdir -p $FILESYSTEM_ROOT_USR_SHARE_SONIC_FIRMWARE/ # Keeping it generic. It should not harm anyways. sudo mkdir -p $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM -# Install a more recent version of ifupdown2 (and its dependencies via 'apt-get -y install -f') +# Install a patched version of ifupdown2 (and its dependencies via 'apt-get -y install -f') sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/ifupdown2_*.deb || \ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f -# Install ipables (and its dependencies via 'apt-get -y install -f') -sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/iptables_*.deb || \ - sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install -f - -# Install a more recent version of ntp (and its dependencies via 'apt-get -y install -f') +# Install a patched version of ntp (and its dependencies via 'apt-get -y install -f') sudo dpkg --root=$FILESYSTEM_ROOT --force-confdef --force-confold -i $debs_path/ntp_*.deb || \ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y \ -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install -f # Install dependencies for SONiC config engine sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install \ - python-dev \ python3-dev # Install j2cli for handling jinja template sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install "j2cli==0.3.10" # Install Python client for Redis -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install "redis==3.5.3" sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install "redis==3.5.3" # Install redis-dump-load Python 3 package @@ -130,15 +124,12 @@ sudo cp {{redis_dump_load_py3_wheel_path}} $FILESYSTEM_ROOT/$REDIS_DUMP_LOAD_PY3 sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $REDIS_DUMP_LOAD_PY3_WHEEL_NAME sudo rm -rf $FILESYSTEM_ROOT/$REDIS_DUMP_LOAD_PY3_WHEEL_NAME -# Install redis-dump-load Python 2 package -REDIS_DUMP_LOAD_PY2_WHEEL_NAME=$(basename {{redis_dump_load_py2_wheel_path}}) -sudo cp {{redis_dump_load_py2_wheel_path}} $FILESYSTEM_ROOT/$REDIS_DUMP_LOAD_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $REDIS_DUMP_LOAD_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$REDIS_DUMP_LOAD_PY2_WHEEL_NAME - # Install Python module for psutil sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install psutil +# Install Python module for ipaddr +sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install ipaddr + # Install SwSS SDK Python 3 package # Note: the scripts will be overwritten by corresponding Python 2 package SWSSSDK_PY3_WHEEL_NAME=$(basename {{swsssdk_py3_wheel_path}}) @@ -146,18 +137,6 @@ sudo cp {{swsssdk_py3_wheel_path}} $FILESYSTEM_ROOT/$SWSSSDK_PY3_WHEEL_NAME sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $SWSSSDK_PY3_WHEEL_NAME sudo rm -rf $FILESYSTEM_ROOT/$SWSSSDK_PY3_WHEEL_NAME -# Install SwSS SDK Python 2 package -SWSSSDK_PY2_WHEEL_NAME=$(basename {{swsssdk_py2_wheel_path}}) -sudo cp {{swsssdk_py2_wheel_path}} $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $SWSSSDK_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME - -# Install sonic-py-common Python 2 package -SONIC_PY_COMMON_PY2_WHEEL_NAME=$(basename {{sonic_py_common_py2_wheel_path}}) -sudo cp {{sonic_py_common_py2_wheel_path}} $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $SONIC_PY_COMMON_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY2_WHEEL_NAME - # Install sonic-py-common Python 3 package SONIC_PY_COMMON_PY3_WHEEL_NAME=$(basename {{sonic_py_common_py3_wheel_path}}) sudo cp {{sonic_py_common_py3_wheel_path}} $FILESYSTEM_ROOT/$SONIC_PY_COMMON_PY3_WHEEL_NAME @@ -172,7 +151,6 @@ fi # Install sonic-yang-models Python 3 package, install dependencies sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libyang_*.deb sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/libyang-cpp_*.deb -sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/python2-yang_*.deb sudo dpkg --root=$FILESYSTEM_ROOT -i $debs_path/python3-yang_*.deb SONIC_YANG_MODEL_PY3_WHEEL_NAME=$(basename {{sonic_yang_models_py3_wheel_path}}) sudo cp {{sonic_yang_models_py3_wheel_path}} $FILESYSTEM_ROOT/$SONIC_YANG_MODEL_PY3_WHEEL_NAME @@ -185,12 +163,6 @@ sudo cp {{sonic_yang_mgmt_py3_wheel_path}} $FILESYSTEM_ROOT/$SONIC_YANG_MGMT_PY3 sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $SONIC_YANG_MGMT_PY3_WHEEL_NAME sudo rm -rf $FILESYSTEM_ROOT/$SONIC_YANG_MGMT_PY3_WHEEL_NAME -# Install SONiC config engine Python 2 package -CONFIG_ENGINE_PY2_WHEEL_NAME=$(basename {{config_engine_py2_wheel_path}}) -sudo cp {{config_engine_py2_wheel_path}} $FILESYSTEM_ROOT/$CONFIG_ENGINE_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $CONFIG_ENGINE_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$CONFIG_ENGINE_PY2_WHEEL_NAME - # For sonic-config-engine Python 3 package # Install pyangbind here, outside sonic-config-engine dependencies, as pyangbind causes enum34 to be installed. # Then immediately uninstall enum34, as enum34 should not be installed for Python >= 3.4, as it causes a @@ -206,12 +178,6 @@ sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $CONFI sudo rm -rf $FILESYSTEM_ROOT/$CONFIG_ENGINE_PY3_WHEEL_NAME -# Install sonic-platform-common Python 2 package -PLATFORM_COMMON_PY2_WHEEL_NAME=$(basename {{platform_common_py2_wheel_path}}) -sudo cp {{platform_common_py2_wheel_path}} $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $PLATFORM_COMMON_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY2_WHEEL_NAME - # Install sonic-platform-common Python 3 package PLATFORM_COMMON_PY3_WHEEL_NAME=$(basename {{platform_common_py3_wheel_path}}) sudo cp {{platform_common_py3_wheel_path}} $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY3_WHEEL_NAME @@ -219,12 +185,6 @@ sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install $PLATF sudo rm -rf $FILESYSTEM_ROOT/$PLATFORM_COMMON_PY3_WHEEL_NAME {% if pddf_support == "y" %} -# Install pddf-platform-api-base Python 2 package -PLATFORM_PDDF_COMMON_PY2_WHEEL_NAME=$(basename {{pddf_platform_api_base_py2_wheel_path}}) -sudo cp {{pddf_platform_api_base_py2_wheel_path}} $FILESYSTEM_ROOT/$PLATFORM_PDDF_COMMON_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $PLATFORM_PDDF_COMMON_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$PLATFORM_PDDF_COMMON_PY2_WHEEL_NAME - # Install pddf-platform-api-base Python 3 package PLATFORM_PDDF_COMMON_PY3_WHEEL_NAME=$(basename {{pddf_platform_api_base_py3_wheel_path}}) sudo cp {{pddf_platform_api_base_py3_wheel_path}} $FILESYSTEM_ROOT/$PLATFORM_PDDF_COMMON_PY3_WHEEL_NAME @@ -234,7 +194,6 @@ sudo rm -rf $FILESYSTEM_ROOT/$PLATFORM_PDDF_COMMON_PY3_WHEEL_NAME {# Barefoot platform vendors' sonic_platform packages import the Python 'thrift' library #} {% if sonic_asic_platform == "barefoot" %} -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install thrift==0.13.0 sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install thrift==0.13.0 {% endif %} @@ -267,12 +226,10 @@ sudo cp -f $IMAGE_CONFIGS/bash/bash.bashrc $FILESYSTEM_ROOT/etc/ # Install prerequisites needed for installing the dependent Python packages of sonic-host-services # These packages can be uninstalled after installation -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install libcairo2-dev libdbus-1-dev libgirepository1.0-dev pkg-config -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y -t $IMAGE_DISTRO-backports install libsystemd-dev +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install libcairo2-dev libdbus-1-dev libgirepository1.0-dev libsystemd-dev pkg-config -# Manually install runtime dependencies to avoid them being auto-removed while uninstalling build dependencies -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install gir1.2-glib-2.0 libdbus-1-3 libgirepository-1.0-1 -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y -t $IMAGE_DISTRO-backports install libsystemd0 +# Mark runtime dependencies as manually installed to avoid them being auto-removed while uninstalling build dependencies +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-mark manual gir1.2-glib-2.0 libdbus-1-3 libgirepository-1.0-1 libsystemd0 # Install SONiC host services package SONIC_HOST_SERVICES_PY3_WHEEL_NAME=$(basename {{sonic_host_services_py3_wheel_path}}) @@ -326,7 +283,7 @@ sudo sed -i -e '/^passwd/s/ radius//' $FILESYSTEM_ROOT/etc/nsswitch.conf # Install a custom version of kdump-tools (and its dependencies via 'apt-get -y install -f') if [[ $CONFIGURED_ARCH == amd64 ]]; then sudo DEBIAN_FRONTEND=noninteractive dpkg --root=$FILESYSTEM_ROOT -i $debs_path/kdump-tools_*.deb || \ - sudo LANG=C DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true chroot $FILESYSTEM_ROOT apt-get -q --no-install-suggests --no-install-recommends --force-no install + sudo LANG=C DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true chroot $FILESYSTEM_ROOT apt-get -q --no-install-suggests --no-install-recommends install cat $IMAGE_CONFIGS/kdump/kdump-tools | sudo tee -a $FILESYSTEM_ROOT/etc/default/kdump-tools > /dev/null fi @@ -668,7 +625,7 @@ trap_push clean_proc sudo mount proc /proc -t proc sudo mkdir $FILESYSTEM_ROOT/target sudo mount --bind target $FILESYSTEM_ROOT/target -sudo chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS info +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker info {% for docker_installation_target in installer_images.strip().split() -%} {% set pkgname, docker_build_path, machine, image = docker_installation_target.split('|') %} @@ -676,10 +633,10 @@ sudo chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS info {% set imagefilename = imagefilepath.split('/')|last -%} {% set imagename = imagefilename.split('.')|first -%} if [[ -z "{{machine}}" || -n "{{machine}}" && $TARGET_MACHINE == "{{machine}}" ]]; then -sudo LANG=C chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS load -i {{imagefilepath}} -sudo LANG=C chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS tag {{imagename}}:latest {{imagename}}:"${SONIC_IMAGE_VERSION}" +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker load -i {{imagefilepath}} +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker tag {{imagename}}:latest {{imagename}}:"${SONIC_IMAGE_VERSION}" # Check if manifest exists for {{imagename}} and it is a valid JSON -sudo LANG=C chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS inspect {{imagename}}:latest \ +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker inspect {{imagename}}:latest \ | jq '.[0].Config.Labels["com.azure.sonic.manifest"]' -r > /tmp/manifest.json jq -e . /tmp/manifest.json || { >&2 echo "docker image {{imagename}} has no manifest or manifest is not a valid JSON" @@ -687,8 +644,8 @@ jq -e . /tmp/manifest.json || { } {% if imagename.endswith('-dbg') %} {% set imagebasename = imagename.replace('-dbg', '') -%} -sudo LANG=C chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS tag {{imagename}}:latest {{imagebasename}}:"${SONIC_IMAGE_VERSION}" -sudo LANG=C chroot $FILESYSTEM_ROOT docker $SONIC_NATIVE_DOCKERD_FOR_DOCKERFS tag {{imagename}}:latest {{imagebasename}}:latest +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker tag {{imagename}}:latest {{imagebasename}}:"${SONIC_IMAGE_VERSION}" +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT docker tag {{imagename}}:latest {{imagebasename}}:latest {% endif %} fi {% endfor %} @@ -705,7 +662,7 @@ fi sudo cp $BUILD_TEMPLATES/docker_image_ctl.j2 $FILESYSTEM_ROOT_USR_SHARE_SONIC_TEMPLATES/docker_image_ctl.j2 # Generate shutdown order -sudo LANG=C chroot $FILESYSTEM_ROOT /usr/local/bin/generate_shutdown_order.py +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT /usr/local/bin/generate_shutdown_order.py {% if include_kubernetes == "y" %} ## Pull in kubernetes docker images @@ -727,13 +684,13 @@ echo "docker images pull complete" {% for package in sonic_packages.strip().split() -%} {% set name, repo, version, set_owner, enabled = package.split('|') -%} -sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager repository add {{ name }} {{ repo }} -sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager install {{ name }}=={{ version }} {{ get_install_options(set_owner, enabled) }} +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT sonic-package-manager repository add {{ name }} {{ repo }} +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT sonic-package-manager install {{ name }}=={{ version }} {{ get_install_options(set_owner, enabled) }} {% endfor -%} {% for package in sonic_local_packages.strip().split() -%} {% set name, path, set_owner, enabled = package.split('|') -%} -sudo LANG=C chroot $FILESYSTEM_ROOT sonic-package-manager install --from-tarball {{ path }} {{ get_install_options(set_owner, enabled) }} +sudo LANG=C DOCKER_HOST="$DOCKER_HOST" chroot $FILESYSTEM_ROOT sonic-package-manager install --from-tarball {{ path }} {{ get_install_options(set_owner, enabled) }} {% endfor -%} sudo umount $FILESYSTEM_ROOT/target @@ -826,7 +783,7 @@ sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable sonic.target sudo cp $BUILD_TEMPLATES/sonic-delayed.target $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable sonic-delayed.target -sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python-dev python3-dev +sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python3-dev sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y build-essential libssl-dev swig sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y libcairo2-dev libdbus-1-dev libgirepository1.0-dev libsystemd-dev pkg-config sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get clean -y @@ -845,19 +802,13 @@ sudo mkdir -p $FILESYSTEM_ROOT/etc/mlnx/ sudo cp $files_path/$MLNX_SPC_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC.mfa sudo cp $files_path/$MLNX_SPC2_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC2.mfa sudo cp $files_path/$MLNX_SPC3_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC3.mfa -sudo cp $files_path/$ISSU_VERSION_FILE $FILESYSTEM_ROOT/etc/mlnx/issu-version +#sudo cp $files_path/$ISSU_VERSION_FILE $FILESYSTEM_ROOT/etc/mlnx/issu-version sudo cp $files_path/$MLNX_FFB_SCRIPT $FILESYSTEM_ROOT/usr/bin/mlnx-ffb.sh sudo cp $files_path/$MLNX_ONIE_FW_UPDATE $FILESYSTEM_ROOT/usr/bin/$MLNX_ONIE_FW_UPDATE sudo cp $files_path/$MLNX_SSD_FW_UPDATE $FILESYSTEM_ROOT/usr/bin/$MLNX_SSD_FW_UPDATE j2 platform/mellanox/mlnx-fw-upgrade.j2 | sudo tee $FILESYSTEM_ROOT/usr/bin/mlnx-fw-upgrade.sh sudo chmod 755 $FILESYSTEM_ROOT/usr/bin/mlnx-fw-upgrade.sh -# Install mlnx-sonic-platform Python 2 package -MLNX_SONIC_PLATFORM_PY2_WHEEL_NAME=$(basename {{mlnx_platform_api_py2_wheel_path}}) -sudo cp {{mlnx_platform_api_py2_wheel_path}} $FILESYSTEM_ROOT/$MLNX_SONIC_PLATFORM_PY2_WHEEL_NAME -sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip2 install $MLNX_SONIC_PLATFORM_PY2_WHEEL_NAME -sudo rm -rf $FILESYSTEM_ROOT/$MLNX_SONIC_PLATFORM_PY2_WHEEL_NAME - # Install mlnx-sonic-platform Python 3 package MLNX_SONIC_PLATFORM_PY3_WHEEL_NAME=$(basename {{mlnx_platform_api_py3_wheel_path}}) sudo cp {{mlnx_platform_api_py3_wheel_path}} $FILESYSTEM_ROOT/$MLNX_SONIC_PLATFORM_PY3_WHEEL_NAME diff --git a/files/image_config/apt/sources.list.d/amd64/debian_archive_trafficmanager_net_debian.list b/files/image_config/apt/sources.list.d/amd64/debian_archive_trafficmanager_net_debian.list index d35c618112bb..db55f3dd60cf 100644 --- a/files/image_config/apt/sources.list.d/amd64/debian_archive_trafficmanager_net_debian.list +++ b/files/image_config/apt/sources.list.d/amd64/debian_archive_trafficmanager_net_debian.list @@ -1,3 +1,3 @@ -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ buster main contrib non-free -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ buster/updates main contrib non-free -deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ buster-backports main contrib non-free +deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free +#deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye/updates main contrib non-free +deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye-backports main contrib non-free diff --git a/files/image_config/copp/copp-config.service b/files/image_config/copp/copp-config.service old mode 100755 new mode 100644 diff --git a/files/image_config/copp/copp_cfg.j2 b/files/image_config/copp/copp_cfg.j2 index 481051cba611..c9b15c1279b5 100755 --- a/files/image_config/copp/copp_cfg.j2 +++ b/files/image_config/copp/copp_cfg.j2 @@ -91,6 +91,10 @@ "trap_ids": "ip2me", "trap_group": "queue1_group1" }, + "macsec": { + "trap_ids": "eapol", + "trap_group": "queue4_group3" + }, "nat": { "trap_ids": "src_nat_miss,dest_nat_miss", "trap_group": "queue1_group2" diff --git a/files/image_config/fstrim/fstrim.timer b/files/image_config/fstrim/fstrim.timer index c6142dd94826..3ffb2332b7a6 100644 --- a/files/image_config/fstrim/fstrim.timer +++ b/files/image_config/fstrim/fstrim.timer @@ -1,6 +1,7 @@ [Unit] Description=Discard unused blocks once a week Documentation=man:fstrim +After=sonic.target [Timer] OnCalendar=weekly diff --git a/files/image_config/interfaces/interfaces.j2 b/files/image_config/interfaces/interfaces.j2 index 98e43dd13be4..1e554e4ed716 100644 --- a/files/image_config/interfaces/interfaces.j2 +++ b/files/image_config/interfaces/interfaces.j2 @@ -24,6 +24,7 @@ auto lo iface lo inet loopback address 127.0.0.1 netmask 255.255.0.0 + scope host post-up ip addr del 127.0.0.1/8 dev lo {% endblock loopback %} {% block mgmt_interface %} diff --git a/files/image_config/logrotate/logrotate.d/btmp b/files/image_config/logrotate/logrotate.d/btmp new file mode 100644 index 000000000000..e3554d3e6773 --- /dev/null +++ b/files/image_config/logrotate/logrotate.d/btmp @@ -0,0 +1,7 @@ +# no packages own btmp -- we'll rotate it here +/var/log/btmp { + missingok + size 100k + create 0660 root utmp + rotate 1 +} diff --git a/files/image_config/logrotate/logrotate.d/wtmp b/files/image_config/logrotate/logrotate.d/wtmp new file mode 100644 index 000000000000..8eb2663e6b66 --- /dev/null +++ b/files/image_config/logrotate/logrotate.d/wtmp @@ -0,0 +1,7 @@ +# no packages own wtmp -- we'll rotate it here +/var/log/wtmp { + missingok + size 100k + create 0664 root utmp + rotate 1 +} diff --git a/files/image_config/monit/conf.d/sonic-host b/files/image_config/monit/conf.d/sonic-host index 8af94b3f2964..ceebf1003eb2 100644 --- a/files/image_config/monit/conf.d/sonic-host +++ b/files/image_config/monit/conf.d/sonic-host @@ -40,3 +40,9 @@ check program diskCheck with path "/usr/local/bin/disk_check.py" check program container_checker with path "/usr/bin/container_checker" if status != 0 for 5 times within 5 cycles then alert repeat every 1 cycles + +# vnet_route_check.py: tool that verifies VNET routes consistancy between SONiC and vendor SDK DBs. +check program vnetRouteCheck with path "/usr/local/bin/vnet_route_check.py" + every 5 cycles + if status != 0 for 3 cycle then alert repeat every 1 cycles + diff --git a/files/image_config/platform/rc.local b/files/image_config/platform/rc.local index b63caef0f4a5..57fd8c4b062b 100755 --- a/files/image_config/platform/rc.local +++ b/files/image_config/platform/rc.local @@ -186,7 +186,17 @@ program_console_speed() CONSOLE_SPEED=$speed fi - sed -i "s|\-\-keep\-baud .* %I| $CONSOLE_SPEED %I|g" /lib/systemd/system/serial-getty@.service + # Set correct baud rate in getty service + # First boot will find keep-baud argument with multiple baud rates as per Debian convention + # Subsequent boots may have new baud rate without finding keep-baud argument + grep agetty /lib/systemd/system/serial-getty@.service |grep keep-baud + if [ $? = 0 ]; then + sed -i "s|\-\-keep\-baud .* %I| $CONSOLE_SPEED %I|g" /lib/systemd/system/serial-getty@.service + else + sed -i "s|u' .* %I|u' $CONSOLE_SPEED %I|g" /lib/systemd/system/serial-getty@.service + fi + + # Reload systemd config systemctl daemon-reload } diff --git a/files/image_config/rsyslog/rsyslog-config.sh b/files/image_config/rsyslog/rsyslog-config.sh index 26767d84fbe0..f3895302e0f3 100755 --- a/files/image_config/rsyslog/rsyslog-config.sh +++ b/files/image_config/rsyslog/rsyslog-config.sh @@ -13,9 +13,9 @@ fi # on Single NPU platforms we continue to use loopback adddres if [[ ($NUM_ASIC -gt 1) ]]; then - udp_server_ip=$(ip -o -4 addr list docker0 | awk '{print $4}' | cut -d/ -f1) + udp_server_ip=$(ip -j -4 addr list docker0 | jq -r -M '.[0].addr_info[0].local') else - udp_server_ip=$(ip -o -4 addr list lo scope host | awk '{print $4}' | cut -d/ -f1) + udp_server_ip=$(ip -j -4 addr list lo scope host | jq -r -M '.[0].addr_info[0].local') fi sonic-cfggen -d -t /usr/share/sonic/templates/rsyslog.conf.j2 -a "{\"udp_server_ip\": \"$udp_server_ip\"}" >/etc/rsyslog.conf diff --git a/files/image_config/sysctl/sysctl-net.conf b/files/image_config/sysctl/sysctl-net.conf index 84c24c8b0a8a..1a2cc35ad491 100644 --- a/files/image_config/sysctl/sysctl-net.conf +++ b/files/image_config/sysctl/sysctl-net.conf @@ -37,3 +37,4 @@ net.ipv4.udp_l3mdev_accept=1 net.core.rmem_max=3145728 net.core.wmem_max=3145728 net.core.somaxconn=512 +net.ipv4.fib_multipath_use_neigh=1 diff --git a/files/initramfs-tools/union-mount.j2 b/files/initramfs-tools/union-mount.j2 index a97137a00c2f..c680e69300d1 100644 --- a/files/initramfs-tools/union-mount.j2 +++ b/files/initramfs-tools/union-mount.j2 @@ -16,6 +16,7 @@ logs_inram=false secureboot=false bootloader=generic in_kdump=false +varlog_size=0 # Extract kernel parameters for x in $(cat /proc/cmdline); do @@ -29,6 +30,9 @@ for x in $(cat /proc/cmdline); do logs_inram=on) logs_inram=true ;; + varlog_size=*) + varlog_size="${x#varlog_size=}" + ;; secure_boot_enable=[y1]) secureboot=true docker_inram=true @@ -44,22 +48,31 @@ done set_tmpfs_log_partition_size() { - varlogsize=128 - - # set varlogsize to existing var-log.ext4 size - if [ -f ${rootmnt}/host/disk-img/var-log.ext4 ]; then - varlogsize=$(ls -l ${rootmnt}/host/disk-img/var-log.ext4 | awk '{print $5}') - varlogsize=$(($varlogsize/1024/1024)) - fi - - # make sure varlogsize is between 5% to 10% of total memory size - memkb=$(grep MemTotal /proc/meminfo | awk '{print $2}') - memmb=$(($memkb/1024)) - minsize=$(($memmb*5/100)) - maxsize=$(($memmb*10/100)) - - [ $minsize -ge $varlogsize ] && varlogsize=$minsize - [ $maxsize -le $varlogsize ] && varlogsize=$maxsize + if [ $varlog_size -gt 0 ]; then + # Use the varlog_size passed in from command line + varlogsize=$varlog_size + else + varlogsize=128 + + # set varlogsize to existing var-log.ext4 size + if [ -f ${rootmnt}/host/disk-img/var-log.ext4 ]; then + varlogsize=$(ls -l ${rootmnt}/host/disk-img/var-log.ext4 | awk '{print $5}') + varlogsize=$(($varlogsize/1024/1024)) + fi + fi + + # make sure varlogsize is between 5% to 10% of total memory size + memkb=$(grep MemTotal /proc/meminfo | awk '{print $2}') + memmb=$(($memkb/1024)) + minsize=$(($memmb*5/100)) + maxsize=$(($memmb*10/100)) + + if [ $minsize -ge $varlogsize ]; then + varlogsize=$minsize + fi + if [ $maxsize -le $varlogsize ]; then + varlogsize=$maxsize + fi } remove_not_in_allowlist_files() @@ -151,16 +164,25 @@ mount --bind ${rootmnt}/host/$image_dir/boot ${rootmnt}/boot ## Mount loop device or tmpfs for /var/log if $logs_inram; then - # NOTE: some platforms, when reaching initramfs stage, have a small - # limit of mounting tmpfs partition, potentially due to amount - # of RAM available in this stage. e.g. Arista 7050-qx32[s] and 7060-cx32s - set_tmpfs_log_partition_size - mount -t tmpfs -o rw,nosuid,nodev,size=${varlogsize}M tmpfs ${rootmnt}/var/log - [ -f ${rootmnt}/host/disk-img/var-log.ext4 ] && rm -rf ${rootmnt}/host/disk-img/var-log.ext4 + # NOTE: some platforms, when reaching initramfs stage, have a small + # limit of mounting tmpfs partition, potentially due to amount + # of RAM available in this stage. Therefore limiting the size + # set for tmpfs partitions. + # + # Another reason for using tmpfs /var/log partition is: + # Some platforms have a small flash and therefore the log partition takes valuable space. + # To improve the longevity of these devices storing the logs in memory will permit more + # SONiC image growth before being bottlenecked. + set_tmpfs_log_partition_size + mount -t tmpfs -o rw,nosuid,nodev,size=${varlogsize}M tmpfs ${rootmnt}/var/log + if [ -f ${rootmnt}/host/disk-img/var-log.ext4 ]; then + rm -rf ${rootmnt}/host/disk-img/var-log.ext4 + fi else - [ -f ${rootmnt}/host/disk-img/var-log.ext4 ] && fsck.ext4 -v -p ${rootmnt}/host/disk-img/var-log.ext4 2>&1 \ - | gzip -c >> /tmp/fsck.log.gz - [ -f ${rootmnt}/host/disk-img/var-log.ext4 ] && mount -t ext4 -o loop,rw ${rootmnt}/host/disk-img/var-log.ext4 ${rootmnt}/var/log + if [ -f ${rootmnt}/host/disk-img/var-log.ext4 ]; then + fsck.ext4 -v -p ${rootmnt}/host/disk-img/var-log.ext4 2>&1 | gzip -c >> /tmp/fsck.log.gz + mount -t ext4 -o loop,rw ${rootmnt}/host/disk-img/var-log.ext4 ${rootmnt}/var/log + fi fi ## fscklog file: /tmp will be lost when overlayfs is mounted diff --git a/files/scripts/arp_update b/files/scripts/arp_update index 1d4cf1ec541f..e7f083e20d27 100755 --- a/files/scripts/arp_update +++ b/files/scripts/arp_update @@ -37,7 +37,7 @@ while /bin/true; do eval `eval $ipcmd` # send ipv6 multicast pings to Vlan interfaces to get/refresh link-local addrs - ping6cmd="ping6 -I $vlan -n -q -i 0 -c 1 -W 0 ff02::1 >/dev/null" + ping6cmd="timeout 1 ping6 -I $vlan -n -q -i 0 -c 1 -W 0 ff02::1 >/dev/null" eval $ping6cmd # generate a list of ndisc6 commands (exclude link-local addrs since it is done above): diff --git a/files/scripts/swss.sh b/files/scripts/swss.sh index 298f5e21b656..775bcc87cd0a 100755 --- a/files/scripts/swss.sh +++ b/files/scripts/swss.sh @@ -157,6 +157,8 @@ start() { $SONIC_DB_CLI ASIC_DB FLUSHDB $SONIC_DB_CLI COUNTERS_DB FLUSHDB $SONIC_DB_CLI FLEX_COUNTER_DB FLUSHDB + $SONIC_DB_CLI GB_ASIC_DB FLUSHDB + $SONIC_DB_CLI GB_COUNTERS_DB FLUSHDB clean_up_tables STATE_DB "'PORT_TABLE*', 'MGMT_PORT_TABLE*', 'VLAN_TABLE*', 'VLAN_MEMBER_TABLE*', 'LAG_TABLE*', 'LAG_MEMBER_TABLE*', 'INTERFACE_TABLE*', 'MIRROR_SESSION*', 'VRF_TABLE*', 'FDB_TABLE*', 'FG_ROUTE_TABLE*', 'BUFFER_POOL*', 'BUFFER_PROFILE*', 'MUX_CABLE_TABLE*'" fi diff --git a/installer/x86_64/install.sh b/installer/x86_64/install.sh index d40dedc9a160..8f1420cd6fa1 100755 --- a/installer/x86_64/install.sh +++ b/installer/x86_64/install.sh @@ -651,13 +651,13 @@ menuentry '$demo_grub_entry' { if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_msdos insmod ext2 - linux /$image_dir/boot/vmlinuz-4.19.0-12-2-amd64 root=$grub_cfg_root rw $GRUB_CMDLINE_LINUX \ + linux /$image_dir/boot/vmlinuz-5.10.0-8-2-amd64 root=$grub_cfg_root rw $GRUB_CMDLINE_LINUX \ net.ifnames=0 biosdevname=0 \ loop=$image_dir/$FILESYSTEM_SQUASHFS loopfstype=squashfs \ systemd.unified_cgroup_hierarchy=0 \ apparmor=1 security=apparmor varlog_size=$VAR_LOG_SIZE usbcore.autosuspend=-1 $ONIE_PLATFORM_EXTRA_CMDLINE_LINUX echo 'Loading $demo_volume_label $demo_type initial ramdisk ...' - initrd /$image_dir/boot/initrd.img-4.19.0-12-2-amd64 + initrd /$image_dir/boot/initrd.img-5.10.0-8-2-amd64 } EOF diff --git a/onie-image.conf b/onie-image.conf index 5d32226371fd..73deded2027e 100644 --- a/onie-image.conf +++ b/onie-image.conf @@ -50,3 +50,9 @@ OUTPUT_ABOOT_IMAGE=target/sonic-aboot-$TARGET_MACHINE.swi ## Aboot boot image name ABOOT_BOOT_IMAGE=.sonic-boot.swi + +## Output file name for 4-asic kvm image +OUTPUT_KVM_4ASIC_IMAGE=target/sonic-4asic-$TARGET_MACHINE.img + +### Output file name for 6-asic kvm image +OUTPUT_KVM_6ASIC_IMAGE=target/sonic-6asic-$TARGET_MACHINE.img diff --git a/platform/barefoot/bfn-platform.mk b/platform/barefoot/bfn-platform.mk index 9acaeeba5ca1..a34a6c02f18e 100644 --- a/platform/barefoot/bfn-platform.mk +++ b/platform/barefoot/bfn-platform.mk @@ -1,4 +1,4 @@ -BFN_PLATFORM = bfnplatform_20210423_sai_1.8.1_deb10.deb +BFN_PLATFORM = bfnplatform_20210811_sai.1.8.1_deb10.deb $(BFN_PLATFORM)_URL = "https://github.com/barefootnetworks/sonic-release-pkgs/raw/dev/$(BFN_PLATFORM)" SONIC_ONLINE_DEBS += $(BFN_PLATFORM) diff --git a/platform/barefoot/bfn-sai.mk b/platform/barefoot/bfn-sai.mk index d2cd02fd523c..31aa9115388c 100644 --- a/platform/barefoot/bfn-sai.mk +++ b/platform/barefoot/bfn-sai.mk @@ -1,4 +1,4 @@ -BFN_SAI = bfnsdk_20210423_sai_1.8.1_deb10.deb +BFN_SAI = bfnsdk_20210811_sai.1.8.1_deb10.deb $(BFN_SAI)_URL = "https://github.com/barefootnetworks/sonic-release-pkgs/raw/dev/$(BFN_SAI)" $(BFN_SAI)_DEPENDS += $(LIBNL_GENL3_DEV) diff --git a/platform/barefoot/docker-syncd-bfn-rpc.mk b/platform/barefoot/docker-syncd-bfn-rpc.mk index 451289d727de..1203c99aa7a5 100644 --- a/platform/barefoot/docker-syncd-bfn-rpc.mk +++ b/platform/barefoot/docker-syncd-bfn-rpc.mk @@ -19,7 +19,7 @@ endif $(DOCKER_SYNCD_BFN_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_BFN_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_BFN_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_BFN_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_BFN_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_BFN_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_BFN_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_BFN_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot diff --git a/platform/barefoot/sonic-platform-modules-arista b/platform/barefoot/sonic-platform-modules-arista index 6e8ccd3379d5..89018d062319 160000 --- a/platform/barefoot/sonic-platform-modules-arista +++ b/platform/barefoot/sonic-platform-modules-arista @@ -1 +1 @@ -Subproject commit 6e8ccd3379d5e89f4e80b11391818e648d928d94 +Subproject commit 89018d0623191ecd477c869339ca795f91f6c68c diff --git a/platform/broadcom/docker-pde.mk b/platform/broadcom/docker-pde.mk index 56d810467498..2d0f371fde11 100644 --- a/platform/broadcom/docker-pde.mk +++ b/platform/broadcom/docker-pde.mk @@ -28,7 +28,7 @@ SONIC_DOCKER_DBG_IMAGES += $(DOCKER_PDE_DBG) SONIC_INSTALL_DOCKER_DBG_IMAGES += $(DOCKER_PDE_DBG) $(DOCKER_PDE)_CONTAINER_NAME = pde -$(DOCKER_PDE)_RUN_OPT += --net=host --privileged -t +$(DOCKER_PDE)_RUN_OPT += --privileged -t $(DOCKER_PDE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_PDE)_RUN_OPT += -v /host/machine.conf:/host/machine.conf:ro $(DOCKER_PDE)_RUN_OPT += -v /usr/lib/python2.7/dist-packages:/usr/share/sonic/classes:ro diff --git a/platform/broadcom/docker-saiserver-brcm.mk b/platform/broadcom/docker-saiserver-brcm.mk index bb8499eab1fb..d39759ac7f21 100644 --- a/platform/broadcom/docker-saiserver-brcm.mk +++ b/platform/broadcom/docker-saiserver-brcm.mk @@ -8,7 +8,7 @@ $(DOCKER_SAISERVER_BRCM)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER) SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_BRCM) $(DOCKER_SAISERVER_BRCM)_CONTAINER_NAME = saiserver -$(DOCKER_SAISERVER_BRCM)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SAISERVER_BRCM)_RUN_OPT += --privileged -t $(DOCKER_SAISERVER_BRCM)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SAISERVER_BRCM)_RUN_OPT += -v /var/run/docker-saiserver:/var/run/sswsyncd $(DOCKER_SAISERVER_BRCM)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 b/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 index a4b4fedd39ad..2fe765febcf3 100644 --- a/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 +++ b/platform/broadcom/docker-saiserver-brcm/Dockerfile.j2 @@ -1,3 +1,4 @@ +{% from "dockers/dockerfile-macros.j2" import install_debian_packages %} FROM docker-config-engine-buster ARG docker_container_name @@ -6,7 +7,11 @@ RUN [ -f /etc/rsyslog.conf ] && sed -ri "s/%syslogtag%/$docker_container_name#%s ## Make apt-get non-interactive ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update +## Pre-install the fundamental packages +RUN apt-get update \ + && apt-get -y install \ + gdb \ + libboost-atomic1.71.0 COPY \ {% for deb in docker_saiserver_brcm_debs.split(' ') -%} @@ -14,10 +19,8 @@ debs/{{ deb }}{{' '}} {%- endfor -%} debs/ -RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; } ; \ -{% for deb in docker_saiserver_brcm_debs.split(' ') -%} -dpkg_apt debs/{{ deb }}{{'; '}} -{%- endfor %} +# Install locally-built Debian packages and implicitly install their dependencies +{{ install_debian_packages(docker_saiserver_brcm_debs.split(' ')) }} ## TODO: add kmod into Depends RUN apt-get install -yf kmod @@ -25,8 +28,6 @@ RUN apt-get install -yf kmod COPY ["files/dsserve", "files/bcmcmd", "start.sh", "bcmsh", "/usr/bin/"] RUN chmod +x /usr/bin/dsserve /usr/bin/bcmcmd -COPY ["profile.ini", "portmap.ini", "/etc/sai/"] - COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] ## Clean up diff --git a/platform/broadcom/docker-saiserver-brcm/portmap.ini b/platform/broadcom/docker-saiserver-brcm/portmap.ini deleted file mode 100644 index 7161416e4d4c..000000000000 --- a/platform/broadcom/docker-saiserver-brcm/portmap.ini +++ /dev/null @@ -1,33 +0,0 @@ -# alias lanes -Ethernet0 29,30,31,32 -Ethernet4 25,26,27,28 -Ethernet8 37,38,39,40 -Ethernet12 33,34,35,36 -Ethernet16 41,42,43,44 -Ethernet20 45,46,47,48 -Ethernet24 5,6,7,8 -Ethernet28 1,2,3,4 -Ethernet32 9,10,11,12 -Ethernet36 13,14,15,16 -Ethernet40 21,22,23,24 -Ethernet44 17,18,19,20 -Ethernet48 49,50,51,52 -Ethernet52 53,54,55,56 -Ethernet56 61,62,63,64 -Ethernet60 57,58,59,60 -Ethernet64 65,66,67,68 -Ethernet68 69,70,71,72 -Ethernet72 77,78,79,80 -Ethernet76 73,74,75,76 -Ethernet80 105,106,107,108 -Ethernet84 109,110,111,112 -Ethernet88 117,118,119,120 -Ethernet92 113,114,115,116 -Ethernet96 121,122,123,124 -Ethernet100 125,126,127,128 -Ethernet104 85,86,87,88 -Ethernet108 81,82,83,84 -Ethernet112 89,90,91,92 -Ethernet116 93,94,95,96 -Ethernet120 97,98,99,100 -Ethernet124 101,102,103,104 diff --git a/platform/broadcom/docker-saiserver-brcm/profile.ini b/platform/broadcom/docker-saiserver-brcm/profile.ini deleted file mode 100644 index b64d997fb451..000000000000 --- a/platform/broadcom/docker-saiserver-brcm/profile.ini +++ /dev/null @@ -1 +0,0 @@ -SAI_INIT_CONFIG_FILE=/etc/bcm/td2-s6000-32x40G.config.bcm diff --git a/platform/broadcom/docker-saiserver-brcm/supervisord.conf b/platform/broadcom/docker-saiserver-brcm/supervisord.conf index cb67a0fc9a47..ccb107b3d1f8 100644 --- a/platform/broadcom/docker-saiserver-brcm/supervisord.conf +++ b/platform/broadcom/docker-saiserver-brcm/supervisord.conf @@ -20,7 +20,7 @@ stdout_logfile=syslog stderr_logfile=syslog [program:saiserver] -command=/usr/bin/saiserver -p /etc/sai/profile.ini -f /etc/sai/portmap.ini +command=/usr/sbin/saiserver -p /usr/share/sonic/hwsku/sai.profile -f /usr/share/sonic/hwsku/port_config.ini priority=3 autostart=false autorestart=false diff --git a/platform/broadcom/docker-syncd-brcm-dnx-rpc.mk b/platform/broadcom/docker-syncd-brcm-dnx-rpc.mk index c4ccf51f6534..395f23ed1f4e 100644 --- a/platform/broadcom/docker-syncd-brcm-dnx-rpc.mk +++ b/platform/broadcom/docker-syncd-brcm-dnx-rpc.mk @@ -29,3 +29,5 @@ $(DOCKER_SYNCD_BRCM_DNX_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_BRCM_DNX_RPC)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_BRCM_DNX_RPC)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh $(DOCKER_SYNCD_BRCM_DNX_RPC)_MACHINE = broadcom-dnx + +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BRCM_DNX_RPC) diff --git a/platform/broadcom/docker-syncd-brcm-rpc.mk b/platform/broadcom/docker-syncd-brcm-rpc.mk index 554c603e63e4..67186aad55a6 100644 --- a/platform/broadcom/docker-syncd-brcm-rpc.mk +++ b/platform/broadcom/docker-syncd-brcm-rpc.mk @@ -28,3 +28,5 @@ $(DOCKER_SYNCD_BRCM_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_BRCM_RPC)_BASE_IMAGE_FILES += bcmcmd:/usr/bin/bcmcmd $(DOCKER_SYNCD_BRCM_RPC)_BASE_IMAGE_FILES += bcmsh:/usr/bin/bcmsh $(DOCKER_SYNCD_BRCM_RPC)_MACHINE = broadcom + +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BRCM_RPC) diff --git a/platform/broadcom/one-image.mk b/platform/broadcom/one-image.mk index 9509c1b0910e..7f9a46b5c166 100644 --- a/platform/broadcom/one-image.mk +++ b/platform/broadcom/one-image.mk @@ -69,7 +69,9 @@ $(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELL_S6000_PLATFORM_MODULE) \ $(JUNIPER_QFX5200_PLATFORM_MODULE) \ $(DELTA_AGC032_PLATFORM_MODULE) \ $(RUIJIE_B6510_48VS8CQ_PLATFORM_MODULE) \ - $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE) + $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE) \ + $(RAGILE_RA_B6910_64C_PLATFORM_MODULE) \ + $(NOKIA_IXR7250_PLATFORM_MODULE) $(SONIC_ONE_IMAGE)_LAZY_BUILD_INSTALLS = $(BRCM_OPENNSL_KERNEL) $(BRCM_DNX_OPENNSL_KERNEL) ifeq ($(INSTALL_DEBUG_TOOLS),y) $(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_DBG_IMAGES) diff --git a/platform/broadcom/platform-modules-nokia.dep b/platform/broadcom/platform-modules-nokia.dep new file mode 100644 index 000000000000..f9d92b660b6f --- /dev/null +++ b/platform/broadcom/platform-modules-nokia.dep @@ -0,0 +1,10 @@ + +MPATH := $($(NOKIA_IXR7250_PLATFORM_MODULE)_SRC_PATH) +DEP_FILES := $(SONIC_COMMON_FILES_LIST) platform/broadcom/platform-modules-nokia.mk platform/broadcom/platform-modules-nokia.dep +DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) +DEP_FILES += $(shell git ls-files $(MPATH)) + +$(NOKIA_IXR7250_PLATFORM_MODULE)_CACHE_MODE := GIT_CONTENT_SHA +$(NOKIA_IXR7250_PLATFORM_MODULE)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) +$(NOKIA_IXR7250_PLATFORM_MODULE)_DEP_FILES := $(DEP_FILES) + diff --git a/platform/broadcom/platform-modules-nokia.mk b/platform/broadcom/platform-modules-nokia.mk new file mode 100644 index 000000000000..fb5199375e5e --- /dev/null +++ b/platform/broadcom/platform-modules-nokia.mk @@ -0,0 +1,14 @@ +# Nokia Platform modules + +NOKIA_IXR7250_PLATFORM_MODULE_VERSION = 1.0 + +export NOKIA_IXR7250_PLATFORM_MODULE_VERSION + + +NOKIA_IXR7250_PLATFORM_MODULE = sonic-platform-nokia-chassis_$(NOKIA_IXR7250_PLATFORM_MODULE_VERSION)_amd64.deb +$(NOKIA_IXR7250_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-nokia +$(NOKIA_IXR7250_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON) $(NOKIA_NDK_DEBIAN) +$(NOKIA_IXR7250_PLATFORM_MODULE)_PLATFORM = x86_64-nokia_ixr7250e_sup-r0 +$(NOKIA_IXR7250_PLATFORM_MODULE)_PLATFORM += x86_64-nokia_ixr7250e_36x400g-r0 +SONIC_DPKG_DEBS += $(NOKIA_IXR7250_PLATFORM_MODULE) + diff --git a/platform/broadcom/platform-modules-ragile.mk b/platform/broadcom/platform-modules-ragile.mk index 7da8f8ec48d6..d13b57440740 100644 --- a/platform/broadcom/platform-modules-ragile.mk +++ b/platform/broadcom/platform-modules-ragile.mk @@ -8,3 +8,12 @@ $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEA $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE)_PLATFORM = x86_64-ragile_ra-b6510-48v8c-r0 SONIC_DPKG_DEBS += $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE) SONIC_STRETCH_DEBS += $(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE) + +## RA-B6910-64C +RAGILE_RA_B6910_64C_PLATFORM_MODULE_VERSION = 1.0 +export RAGILE_RA_B6910_64C_PLATFORM_MODULE_VERSION + +RAGILE_RA_B6910_64C_PLATFORM_MODULE = platform-modules-ragile-ra-b6910-64c_$(RAGILE_RA_B6910_64C_PLATFORM_MODULE_VERSION)_amd64.deb +$(RAGILE_RA_B6910_64C_PLATFORM_MODULE)_PLATFORM = x86_64-ragile_ra-b6910-64c-r0 +$(eval $(call add_extra_package,$(RAGILE_RA_B6510_48V8C_PLATFORM_MODULE),$(RAGILE_RA_B6910_64C_PLATFORM_MODULE))) + diff --git a/platform/broadcom/rules.dep b/platform/broadcom/rules.dep index abd96f672e73..36b727570e68 100644 --- a/platform/broadcom/rules.dep +++ b/platform/broadcom/rules.dep @@ -13,6 +13,8 @@ include $(PLATFORM_PATH)/platform-modules-delta.dep include $(PLATFORM_PATH)/platform-modules-quanta.dep #include $(PLATFORM_PATH)/platform-modules-mitac.dep include $(PLATFORM_PATH)/platform-modules-juniper.dep +include $(PLATFORM_PATH)/platform-modules-ragile.dep +include $(PLATFORM_PATH)/platform-modules-ruijie.dep include $(PLATFORM_PATH)/platform-modules-brcm-xlr-gts.dep include $(PLATFORM_PATH)/docker-syncd-brcm.dep include $(PLATFORM_PATH)/docker-syncd-brcm-rpc.dep diff --git a/platform/broadcom/rules.mk b/platform/broadcom/rules.mk index 031cd60150b8..d6a12e49e142 100644 --- a/platform/broadcom/rules.mk +++ b/platform/broadcom/rules.mk @@ -1,19 +1,20 @@ include $(PLATFORM_PATH)/sai-modules.mk include $(PLATFORM_PATH)/sai.mk -include $(PLATFORM_PATH)/platform-modules-dell.mk -include $(PLATFORM_PATH)/platform-modules-arista.mk -include $(PLATFORM_PATH)/platform-modules-ingrasys.mk +include $(PLATFORM_PATH)/platform-modules-nokia.mk +#include $(PLATFORM_PATH)/platform-modules-dell.mk +#include $(PLATFORM_PATH)/platform-modules-arista.mk +#include $(PLATFORM_PATH)/platform-modules-ingrasys.mk include $(PLATFORM_PATH)/platform-modules-accton.mk -include $(PLATFORM_PATH)/platform-modules-alphanetworks.mk -include $(PLATFORM_PATH)/platform-modules-inventec.mk +#include $(PLATFORM_PATH)/platform-modules-alphanetworks.mk +#include $(PLATFORM_PATH)/platform-modules-inventec.mk include $(PLATFORM_PATH)/platform-modules-cel.mk -include $(PLATFORM_PATH)/platform-modules-delta.mk -include $(PLATFORM_PATH)/platform-modules-quanta.mk -#include $(PLATFORM_PATH)/platform-modules-mitac.mk +#include $(PLATFORM_PATH)/platform-modules-delta.mk +#include $(PLATFORM_PATH)/platform-modules-quanta.mk +##include $(PLATFORM_PATH)/platform-modules-mitac.mk include $(PLATFORM_PATH)/platform-modules-juniper.mk -include $(PLATFORM_PATH)/platform-modules-brcm-xlr-gts.mk -include $(PLATFORM_PATH)/platform-modules-ruijie.mk -include $(PLATFORM_PATH)/platform-modules-ragile.mk +#include $(PLATFORM_PATH)/platform-modules-brcm-xlr-gts.mk +#include $(PLATFORM_PATH)/platform-modules-ruijie.mk +#include $(PLATFORM_PATH)/platform-modules-ragile.mk include $(PLATFORM_PATH)/docker-syncd-brcm.mk include $(PLATFORM_PATH)/docker-syncd-brcm-rpc.mk include $(PLATFORM_PATH)/docker-saiserver-brcm.mk diff --git a/platform/broadcom/sai-modules.dep b/platform/broadcom/sai-modules.dep index 040a7d75d4c7..79c4efb9b229 100644 --- a/platform/broadcom/sai-modules.dep +++ b/platform/broadcom/sai-modules.dep @@ -1,4 +1,4 @@ - +# Broadcom SAI modules MPATH := $($(BRCM_OPENNSL_KERNEL)_SRC_PATH) DEP_FILES := $(SONIC_COMMON_FILES_LIST) platform/broadcom/sai-modules.mk platform/broadcom/sai-modules.dep DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) @@ -8,3 +8,14 @@ $(BRCM_OPENNSL_KERNEL)_CACHE_MODE := GIT_CONTENT_SHA $(BRCM_OPENNSL_KERNEL)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(BRCM_OPENNSL_KERNEL)_DEP_FILES := $(DEP_FILES) +# SAI bcm modules for DNX family ASIC +MPATH_DNX := $($(BRCM_DNX_OPENNSL_KERNEL)_SRC_PATH) +DEP_FILES := $(SONIC_COMMON_FILES_LIST) platform/broadcom/sai-modules.mk platform/broadcom/sai-modules.dep +DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) +SMDEP_FILES := $(addprefix $(MPATH_DNX)/,$(shell cd $(MPATH_DNX) && git ls-files)) + +$(BRCM_DNX_OPENNSL_KERNEL)_CACHE_MODE := GIT_CONTENT_SHA +$(BRCM_DNX_OPENNSL_KERNEL)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) +$(BRCM_DNX_OPENNSL_KERNEL)_DEP_FILES := $(DEP_FILES) +$(BRCM_DNX_OPENNSL_KERNEL)_SMDEP_FILES := $(SMDEP_FILES) +$(BRCM_DNX_OPENNSL_KERNEL)_SMDEP_PATHS := $(MPATH_DNX) diff --git a/platform/broadcom/sai.mk b/platform/broadcom/sai.mk index e4f36385a83a..e8d7ed2cb5e3 100644 --- a/platform/broadcom/sai.mk +++ b/platform/broadcom/sai.mk @@ -1,12 +1,12 @@ -BRCM_SAI = libsaibcm_5.0.0.6-1_amd64.deb -$(BRCM_SAI)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm_5.0.0.6-1_amd64.deb?sv=2015-04-05&sr=b&sig=HA%2FwgMr%2BHnb6zzFCQDfO1WF%2Bf6PBSmIzH13728LTNz4%3D&se=2035-03-31T20%3A45%3A36Z&sp=r" -BRCM_SAI_DEV = libsaibcm-dev_5.0.0.6-1_amd64.deb +BRCM_SAI = libsaibcm_5.0.0.8_amd64.deb +$(BRCM_SAI)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm_5.0.0.8_amd64.deb?sv=2015-04-05&sr=b&sig=T%2FPesnOIeN9802mClMpgk8XFQbqjFAgCnJbbNHxijHo%3D&se=2035-05-13T21%3A34%3A26Z&sp=r" +BRCM_SAI_DEV = libsaibcm-dev_5.0.0.8_amd64.deb $(eval $(call add_derived_package,$(BRCM_SAI),$(BRCM_SAI_DEV))) -$(BRCM_SAI_DEV)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm-dev_5.0.0.6-1_amd64.deb?sv=2015-04-05&sr=b&sig=z634%2BUk14EY5VjEE4tjhvDSP2hiK8s1EJAxjvidl44I%3D&se=2035-03-31T20%3A46%3A17Z&sp=r" +$(BRCM_SAI_DEV)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm-dev_5.0.0.8_amd64.deb?sv=2015-04-05&sr=b&sig=X33hZLhRI3L6f4a5JFSlhJvoaTj%2B3zrmNBM9IzIA%2Bj4%3D&se=2035-05-13T21%3A35%3A58Z&sp=r" # SAI module for DNX Asic family -BRCM_DNX_SAI = libsaibcm_dnx_5.0.0.6-1_amd64.deb -$(BRCM_DNX_SAI)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm_dnx_5.0.0.6-1_amd64.deb?sv=2015-04-05&sr=b&sig=mDcpzWUcTSzNBM6vPPYNuMQ6D%2BTKQAC9k%2Fv0%2Bnz3L%2BM%3D&se=2035-03-31T20%3A46%3A44Z&sp=r" +BRCM_DNX_SAI = libsaibcm_dnx_5.0.0.8_amd64.deb +$(BRCM_DNX_SAI)_URL = "https://sonicstorage.blob.core.windows.net/packages/bcmsai/5.0/master/libsaibcm_dnx_5.0.0.8_amd64.deb?sv=2015-04-05&sr=b&sig=uy0OW6ZhWjYntalZunEIIzHUztkOyI7TS3F73Sla9vY%3D&se=2035-05-13T21%3A37%3A06Z&sp=r" SONIC_ONLINE_DEBS += $(BRCM_SAI) SONIC_ONLINE_DEBS += $(BRCM_DNX_SAI) diff --git a/platform/broadcom/saibcm-modules-dnx b/platform/broadcom/saibcm-modules-dnx index 70d0ce29b1cf..e18b25e5f3e9 160000 --- a/platform/broadcom/saibcm-modules-dnx +++ b/platform/broadcom/saibcm-modules-dnx @@ -1 +1 @@ -Subproject commit 70d0ce29b1cffce381b55e263649a18e9219f13b +Subproject commit e18b25e5f3e9b48f997b37430c7487da2ee81a30 diff --git a/platform/broadcom/saibcm-modules/debian/control b/platform/broadcom/saibcm-modules/debian/control index 60bcbafb1b1a..37cf1213432e 100644 --- a/platform/broadcom/saibcm-modules/debian/control +++ b/platform/broadcom/saibcm-modules/debian/control @@ -10,5 +10,5 @@ Standards-Version: 3.9.3 Package: opennsl-modules Architecture: amd64 Section: main -Depends: linux-image-4.19.0-12-2-amd64-unsigned +Depends: linux-image-5.10.0-8-2-amd64-unsigned Description: kernel modules for broadcom SAI diff --git a/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs b/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs index 140d1186059e..2b3124646272 100644 --- a/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs +++ b/platform/broadcom/saibcm-modules/debian/opennsl-modules.dirs @@ -1 +1 @@ -lib/modules/4.19.0-12-2-amd64/extra +lib/modules/5.10.0-8-2-amd64/extra diff --git a/platform/broadcom/saibcm-modules/debian/opennsl-modules.install b/platform/broadcom/saibcm-modules/debian/opennsl-modules.install index 5e8e70bb189f..2d773b896116 100644 --- a/platform/broadcom/saibcm-modules/debian/opennsl-modules.install +++ b/platform/broadcom/saibcm-modules/debian/opennsl-modules.install @@ -1,8 +1,7 @@ -systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-knet.ko lib/modules/4.19.0-12-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-kernel-bde.ko lib/modules/4.19.0-12-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-user-bde.ko lib/modules/4.19.0-12-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-knet-cb.ko lib/modules/4.19.0-12-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/psample.ko lib/modules/4.19.0-12-2-amd64/extra -systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-ptp-clock.ko lib/modules/4.19.0-12-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-knet.ko lib/modules/5.10.0-8-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-kernel-bde.ko lib/modules/5.10.0-8-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-user-bde.ko lib/modules/5.10.0-8-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-knet-cb.ko lib/modules/5.10.0-8-2-amd64/extra +systems/linux/user/x86-smp_generic_64-2_6/linux-bcm-ptp-clock.ko lib/modules/5.10.0-8-2-amd64/extra systemd/opennsl-modules.service lib/systemd/system -sdklt/linux/bde/linux_ngbde.ko lib/modules/4.19.0-12-2-amd64/extra +sdklt/linux/bde/linux_ngbde.ko lib/modules/5.10.0-8-2-amd64/extra diff --git a/platform/broadcom/saibcm-modules/debian/rules b/platform/broadcom/saibcm-modules/debian/rules index 509901745e97..b092d3d0c635 100755 --- a/platform/broadcom/saibcm-modules/debian/rules +++ b/platform/broadcom/saibcm-modules/debian/rules @@ -34,8 +34,8 @@ sname:=opennsl PACKAGE=opennsl-modules # modifieable for experiments or debugging m-a MA_DIR ?= /usr/share/modass -KVERSION ?= 4.19.0-12-2-amd64 -KERNVERSION ?= 4.19.0-12-2 +KVERSION ?= 5.10.0-8-2-amd64 +KERNVERSION ?= 5.10.0-8-2 # load generic variable handling -include $(MA_DIR)/include/generic.make @@ -63,11 +63,11 @@ kdist_config: prep-deb-files kdist_clean: clean dh_testdir dh_clean - SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 \ KERNDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ KERNEL_SRC=/usr/src/linux-headers-$(KERNVERSION)-amd64 \ $(MAKE) -C systems/linux/user/x86-smp_generic_64-2_6 clean - SDK=$(realpath .) BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) BUILD_KNET_CB=1 \ KDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ $(MAKE) -C sdklt/ clean # rm -f driver/*.o driver/*.ko @@ -94,16 +94,17 @@ build-arch-stamp: cd /; sudo ln -s /usr/src/linux-headers-$(KERNVERSION)-amd64/ /lib/modules/$(KERNVERSION)-amd64/build cd /; sudo ln -s /usr/src/linux-headers-$(KERNVERSION)-amd64/include/generated/ /usr/src/linux-headers-$(KERNVERSION)-common/include/generated cd /; sudo ln -s /usr/src/linux-headers-$(KERNVERSION)-amd64/arch/x86/include/generated/ /usr/src/linux-headers-$(KERNVERSION)-common/arch/x86/include/generated + cd /; sudo ln -s /usr/src/linux-headers-$(KERNVERSION)-amd64/arch/x86/module.lds /usr/src/linux-headers-$(KERNVERSION)-common/arch/x86/module.lds cd /; sudo ln -s /usr/src/linux-headers-$(KERNVERSION)-amd64/include/config/ /usr/src/linux-headers-$(KERNVERSION)-common/include/config cd /; sudo cp /usr/src/linux-headers-$(KERNVERSION)-amd64/Module.symvers /usr/src/linux-headers-$(KERNVERSION)-common/Module.symvers # Add here command to compile/build the package. - SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 \ KERNDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ KERNEL_SRC=/usr/src/linux-headers-$(KERNVERSION)-amd64 \ $(MAKE) -C systems/linux/user/x86-smp_generic_64-2_6 - SDK=$(realpath .) BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) BUILD_KNET_CB=1 \ KDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ $(MAKE) -C sdklt/ kmod @@ -130,12 +131,12 @@ clean: rm -f build-arch-stamp build-indep-stamp configure-stamp # Add here commands to clean up after the build process. - SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) LINUX_UAPI_SPLIT=1 DEBIAN_LINUX_HEADER=1 BUILD_KNET_CB=1 \ KERNDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ KERNEL_SRC=/usr/src/linux-headers-$(KERNVERSION)-amd64 \ $(MAKE) -C systems/linux/user/x86-smp_generic_64-2_6 clean - SDK=$(realpath .) BUILD_KNET_CB=1 BUILD_PSAMPLE=1 \ + SDK=$(realpath .) BUILD_KNET_CB=1 \ KDIR=/usr/src/linux-headers-$(KERNVERSION)-common \ $(MAKE) -C sdklt/ clean diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iio.c b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iio.c index e97f1fcea730..3e594b6ab6d3 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iio.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iio.c @@ -36,7 +36,7 @@ ngbde_iio_map(void *devh, phys_addr_t addr, phys_addr_t size) ngbde_iio_unmap(devh); } - sd->iio_mem = ioremap_nocache(addr, size); + sd->iio_mem = ioremap(addr, size); if (sd->iio_mem) { /* Save mapped resources */ @@ -106,7 +106,7 @@ ngbde_paxb_map(void *devh, phys_addr_t addr, phys_addr_t size) iounmap(sd->paxb_mem); } - sd->paxb_mem = ioremap_nocache(addr, size); + sd->paxb_mem = ioremap(addr, size); if (sd->paxb_mem) { /* Save mapped resources */ diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iproc_probe.c b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iproc_probe.c index 63b02a4075a3..1cb932a4b148 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iproc_probe.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_iproc_probe.c @@ -65,7 +65,7 @@ iproc_cmicd_probe(struct platform_device *pldev) (void *)memres->start, (void *)memres->end); } - base_address = ioremap_nocache(memres->start, size); + base_address = ioremap(memres->start, size); if (!base_address) { printk(KERN_WARNING "Error mapping iProc CMIC registers"); return -1; diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_pio.c b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_pio.c index cab094a2feca..2faf7199901f 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_pio.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_pio.c @@ -36,7 +36,7 @@ ngbde_pio_map(void *devh, phys_addr_t addr, phys_addr_t size) ngbde_pio_unmap(devh); } - sd->pio_mem = ioremap_nocache(addr, size); + sd->pio_mem = ioremap(addr, size); if (sd->pio_mem) { /* Save mapped resources */ diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c index f99339a5b0dc..853e561d9288 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/bde/ngbde_procfs.c @@ -88,6 +88,7 @@ proc_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_fops = { owner: THIS_MODULE, open: proc_open, @@ -95,6 +96,14 @@ static struct file_operations proc_fops = { llseek: seq_lseek, release: proc_release, }; +#else +static struct proc_ops proc_fops = { + proc_open: proc_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_release, +}; +#endif int ngbde_procfs_init(void) diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.c b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.c index 0162ae5b96c1..f19cb51f6c34 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.c @@ -39,11 +39,19 @@ unsigned long sal_time_usecs(void) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct timeval tv; kal_time_val_get(&tv); return tv.tv_sec * 1000000 + tv.tv_usec; +#else + struct timespec64 tv; + + kal_time_val_get(&tv); + + return tv.tv_sec * 1000000 + tv.tv_nsec / 1000; +#endif } void diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.h b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.h index 686aac8f5571..bf82e5347cf4 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.h +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_linux.h @@ -113,7 +113,7 @@ kal_time_val_get(struct timeval *tv) { do_gettimeofday(tv); } -#else +#elif LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static inline void kal_time_val_get(struct timeval *tv) { @@ -122,6 +122,12 @@ kal_time_val_get(struct timeval *tv) tv->tv_sec = ts.tv_sec; tv->tv_usec = ts.tv_nsec / 1000; } +#else +static inline void +kal_time_val_get(struct timespec64 *tv) +{ + ktime_get_real_ts64(tv); +} #endif /* KERNEL_VERSION(3,17,0) */ static inline unsigned long diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_main.c b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_main.c index b8af31d85ff2..f55a2bc03c5c 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_main.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_main.c @@ -233,7 +233,11 @@ ngknet_pkt_dump(uint8_t *data, int len) static void ngknet_pkt_stats(struct pdma_dev *pdev, int dir) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct timeval tv0[2], tv1[2]; +#else + static struct timespec64 tv0[2], tv1[2]; +#endif static uint32_t pkts[2] = {0}, prts[2] = {0}; static uint64_t intrs = 0; @@ -245,8 +249,13 @@ ngknet_pkt_stats(struct pdma_dev *pdev, int dir) uint32_t iv_time; uint32_t pps; kal_time_val_get(&tv1[dir]); +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) iv_time = (tv1[dir].tv_sec - tv0[dir].tv_sec) * 1000000 + (tv1[dir].tv_usec - tv0[dir].tv_usec); +#else + iv_time = (tv1[dir].tv_sec - tv0[dir].tv_sec) * 1000000 + + (tv1[dir].tv_nsec - tv0[dir].tv_nsec) / 1000; +#endif pps = 100000 * 1000 / (iv_time / 1000); prts[dir]++; if (pps <= 100000 || prts[dir] * 100000 >= pps) { diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_procfs.c b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_procfs.c index 85edaa26abb9..bc738e7ea12a 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_procfs.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knet/ngknet_procfs.c @@ -88,6 +88,7 @@ proc_debug_level_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_debug_level_fops = { owner: THIS_MODULE, open: proc_debug_level_open, @@ -96,6 +97,15 @@ static struct file_operations proc_debug_level_fops = { llseek: seq_lseek, release: proc_debug_level_release, }; +#else +static struct proc_ops proc_debug_level_fops = { + proc_open: proc_debug_level_open, + proc_read: seq_read, + proc_write: proc_debug_level_write, + proc_lseek: seq_lseek, + proc_release: proc_debug_level_release, +}; +#endif static int proc_device_info_show(struct seq_file *m, void *v) @@ -168,6 +178,7 @@ proc_device_info_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_device_info_fops = { owner: THIS_MODULE, open: proc_device_info_open, @@ -175,6 +186,14 @@ static struct file_operations proc_device_info_fops = { llseek: seq_lseek, release: proc_device_info_release, }; +#else +static struct proc_ops proc_device_info_fops = { + proc_open: proc_device_info_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_device_info_release, +}; +#endif static int proc_filter_info_show(struct seq_file *m, void *v) @@ -250,6 +269,7 @@ proc_filter_info_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_filter_info_fops = { owner: THIS_MODULE, open: proc_filter_info_open, @@ -257,6 +277,14 @@ static struct file_operations proc_filter_info_fops = { llseek: seq_lseek, release: proc_filter_info_release, }; +#else +static struct proc_ops proc_filter_info_fops = { + proc_open: proc_filter_info_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_filter_info_release, +}; +#endif static int proc_netif_info_show(struct seq_file *m, void *v) @@ -342,6 +370,7 @@ proc_netif_info_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_netif_info_fops = { owner: THIS_MODULE, open: proc_netif_info_open, @@ -349,6 +378,14 @@ static struct file_operations proc_netif_info_fops = { llseek: seq_lseek, release: proc_netif_info_release, }; +#else +static struct proc_ops proc_netif_info_fops = { + proc_open: proc_netif_info_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_netif_info_release, +}; +#endif static int proc_pkt_stats_show(struct seq_file *m, void *v) @@ -415,6 +452,7 @@ proc_pkt_stats_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_pkt_stats_fops = { owner: THIS_MODULE, open: proc_pkt_stats_open, @@ -422,6 +460,14 @@ static struct file_operations proc_pkt_stats_fops = { llseek: seq_lseek, release: proc_pkt_stats_release, }; +#else +static struct proc_ops proc_pkt_stats_fops = { + proc_open: proc_pkt_stats_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_pkt_stats_release, +}; +#endif static int proc_rate_limit_show(struct seq_file *m, void *v) @@ -461,6 +507,7 @@ proc_rate_limit_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_rate_limit_fops = { owner: THIS_MODULE, open: proc_rate_limit_open, @@ -469,6 +516,15 @@ static struct file_operations proc_rate_limit_fops = { llseek: seq_lseek, release: proc_rate_limit_release, }; +#else +static struct proc_ops proc_rate_limit_fops = { + proc_open: proc_rate_limit_open, + proc_read: seq_read, + proc_write: proc_rate_limit_write, + proc_lseek: seq_lseek, + proc_release: proc_rate_limit_release, +}; +#endif static int proc_reg_status_show(struct seq_file *m, void *v) @@ -512,6 +568,7 @@ proc_reg_status_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_reg_status_fops = { owner: THIS_MODULE, open: proc_reg_status_open, @@ -519,6 +576,14 @@ static struct file_operations proc_reg_status_fops = { llseek: seq_lseek, release: proc_reg_status_release, }; +#else +static struct proc_ops proc_reg_status_fops = { + proc_open: proc_reg_status_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_reg_status_release, +}; +#endif static int proc_ring_status_show(struct seq_file *m, void *v) @@ -566,6 +631,7 @@ proc_ring_status_release(struct inode *inode, struct file *file) return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations proc_ring_status_fops = { owner: THIS_MODULE, open: proc_ring_status_open, @@ -573,6 +639,14 @@ static struct file_operations proc_ring_status_fops = { llseek: seq_lseek, release: proc_ring_status_release, }; +#else +static struct proc_ops proc_ring_status_fops = { + proc_open: proc_ring_status_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_release: proc_ring_status_release, +}; +#endif int ngknet_procfs_init(void) diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/ngknetcb_main.c b/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/ngknetcb_main.c index aa248dafce52..807fa1e1cd28 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/ngknetcb_main.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/ngknetcb_main.c @@ -391,6 +391,17 @@ static struct file_operations ngknetcb_fops = { .mmap = ngknetcb_mmap, }; +static struct proc_ops ngknetcb_proc_ops = { + .proc_open = ngknetcb_open, + .proc_read = seq_read, + .proc_write = ngknetcb_write, + .proc_lseek = seq_lseek, + .proc_release = ngknetcb_release, + .proc_ioctl = ngknetcb_ioctl, + .proc_compat_ioctl = ngknetcb_ioctl, + .proc_mmap = ngknetcb_mmap, +}; + static int __init ngknetcb_init_module(void) { @@ -404,7 +415,7 @@ ngknetcb_init_module(void) return rv; } - PROC_CREATE(entry, NGKNETCB_MODULE_NAME, 0666, NULL, &ngknetcb_fops); + PROC_CREATE(entry, NGKNETCB_MODULE_NAME, 0666, NULL, &ngknetcb_proc_ops); if (entry == NULL) { printk(KERN_ERR "%s: proc_mkdir failed\n", NGKNETCB_MODULE_NAME); diff --git a/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/psample-cb.c b/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/psample-cb.c index be34430218d3..82edff610d4b 100644 --- a/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/psample-cb.c +++ b/platform/broadcom/saibcm-modules/sdklt/linux/knetcb/psample-cb.c @@ -623,13 +623,12 @@ psample_proc_rate_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_rate_file_ops = { - owner: THIS_MODULE, - open: psample_proc_rate_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_rate_write, - release: single_release, +struct proc_ops psample_proc_rate_file_ops = { + proc_open: psample_proc_rate_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_rate_write, + proc_release: single_release, }; /* @@ -722,13 +721,12 @@ psample_proc_size_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_size_file_ops = { - owner: THIS_MODULE, - open: psample_proc_size_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_size_write, - release: single_release, +struct proc_ops psample_proc_size_file_ops = { + proc_open: psample_proc_size_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_size_write, + proc_release: single_release, }; /* @@ -763,13 +761,12 @@ psample_proc_map_open(struct inode * inode, struct file * file) return single_open(file, psample_proc_map_show, NULL); } -struct file_operations psample_proc_map_file_ops = { - owner: THIS_MODULE, - open: psample_proc_map_open, - read: seq_read, - llseek: seq_lseek, - write: NULL, - release: single_release, +struct proc_ops psample_proc_map_file_ops = { + proc_open: psample_proc_map_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: NULL, + proc_release: single_release, }; /* @@ -829,13 +826,12 @@ psample_proc_debug_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_debug_file_ops = { - owner: THIS_MODULE, - open: psample_proc_debug_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_debug_write, - release: single_release, +struct proc_ops psample_proc_debug_file_ops = { + proc_open: psample_proc_debug_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_debug_write, + proc_release: single_release, }; static int @@ -891,13 +887,12 @@ psample_proc_stats_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_stats_file_ops = { - owner: THIS_MODULE, - open: psample_proc_stats_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_stats_write, - release: single_release, +struct proc_ops psample_proc_stats_file_ops = { + proc_open: psample_proc_stats_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_stats_write, + proc_release: single_release, }; int psample_cleanup(void) diff --git a/platform/broadcom/saibcm-modules/systems/bde/linux/include/linux_dma.h b/platform/broadcom/saibcm-modules/systems/bde/linux/include/linux_dma.h index 23eb3fa33e9e..437ec088f25c 100644 --- a/platform/broadcom/saibcm-modules/systems/bde/linux/include/linux_dma.h +++ b/platform/broadcom/saibcm-modules/systems/bde/linux/include/linux_dma.h @@ -49,7 +49,7 @@ /* ioremap is broken in kernel */ #define IOREMAP(addr, size) ((void *)KSEG1ADDR(addr)) #else -#define IOREMAP(addr, size) ioremap_nocache(addr, size) +#define IOREMAP(addr, size) ioremap(addr, size) #endif #if defined (__mips__) diff --git a/platform/broadcom/saibcm-modules/systems/bde/linux/kernel/linux_dma.c b/platform/broadcom/saibcm-modules/systems/bde/linux/kernel/linux_dma.c index 52711964a533..eac6eeaba74b 100644 --- a/platform/broadcom/saibcm-modules/systems/bde/linux/kernel/linux_dma.c +++ b/platform/broadcom/saibcm-modules/systems/bde/linux/kernel/linux_dma.c @@ -1149,7 +1149,8 @@ _sinval(int d, void *ptr, int length) /* FIXME: need proper function to replace dma_cache_sync */ dma_sync_single_for_cpu(NULL, (unsigned long)ptr, length, DMA_BIDIRECTIONAL); #else - dma_cache_sync(NULL, ptr, length, DMA_BIDIRECTIONAL); + // TODO: This needs to be verified + dma_sync_single_for_device(NULL, ptr, length, DMA_BIDIRECTIONAL); #endif #endif return 0; @@ -1165,7 +1166,8 @@ _sflush(int d, void *ptr, int length) /* FIXME: need proper function to replace dma_cache_sync */ dma_sync_single_for_cpu(NULL, (unsigned long)ptr, length, DMA_BIDIRECTIONAL); #else - dma_cache_sync(NULL, ptr, length, DMA_BIDIRECTIONAL); + // TODO: This needs to be verified + dma_sync_single_for_device(NULL, ptr, length, DMA_BIDIRECTIONAL); #endif #endif diff --git a/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/Makefile b/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/Makefile index 2cc96df02d0a..633475c2590e 100644 --- a/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/Makefile +++ b/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/Makefile @@ -64,7 +64,7 @@ $(KMODULE): $(MODULE) mkdir $(BLDDIR)/$(KERNEL_MODULE_DIR) cp ${SDK}/make/Makefile.linux-kmodule $(BLDDIR)/$(KERNEL_MODULE_DIR)/Makefile cat ${KBUILD_EXTRA_SYMBOLS} > $(BLDDIR)/$(KERNEL_MODULE_DIR)/Module.symvers - MOD_NAME=$(THIS_MOD_NAME) $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko + MOD_NAME=$(THIS_MOD_NAME) KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko endif kernel_libs: diff --git a/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c b/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c index 4e6186e2d80d..36dcf0ba6d41 100644 --- a/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c +++ b/platform/broadcom/saibcm-modules/systems/bde/linux/user/kernel/linux-user-bde.c @@ -117,7 +117,7 @@ be made. #define HX5_INTC_INTR_STATUS_BASE (HX5_INTC_INTR_STATUS_REG0) #define HX5_INTC_INTR_RAW_STATUS_BASE (HX5_INTC_INTR_RAW_STATUS_REG0) -#define IOREMAP(addr, size) ioremap_nocache(addr, size) +#define IOREMAP(addr, size) ioremap(addr, size) #define HX5_IHOST_GICD_ISENABLERN_0 (0x10781100) #define HX5_IHOST_GICD_ISENABLERN_1 (0x10781104) diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/Makefile b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/Makefile index 9879be69b0b6..56b83fb0da33 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/Makefile +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/Makefile @@ -59,7 +59,7 @@ $(KMODULE): $(MODULE) mkdir $(BLDDIR)/$(KERNEL_MODULE_DIR) cp ${SDK}/make/Makefile.linux-kmodule $(BLDDIR)/$(KERNEL_MODULE_DIR)/Makefile cat ${KBUILD_EXTRA_SYMBOLS} > $(BLDDIR)/$(KERNEL_MODULE_DIR)/Module.symvers - MOD_NAME=$(THIS_MOD_NAME) $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko + MOD_NAME=$(THIS_MOD_NAME) KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko endif # Make.depend is before clean:: so that Make.depend's clean:: runs first. diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c index a3f92b17584b..5f0924589beb 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-knet/bcm-knet.c @@ -6341,6 +6341,11 @@ bkn_init_ndev(u8 *mac, char *name) dev->mtu = rx_buffer_size; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) + dev->min_mtu = 68; + dev->max_mtu = rx_buffer_size; +#endif + /* Device vectors */ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) dev->netdev_ops = &bkn_netdev_ops; @@ -6489,6 +6494,7 @@ bkn_proc_link_write(struct file *file, const char *buf, return count; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations bkn_proc_link_file_ops = { owner: THIS_MODULE, open: bkn_proc_link_open, @@ -6497,6 +6503,15 @@ struct file_operations bkn_proc_link_file_ops = { write: bkn_proc_link_write, release: single_release, }; +#else +struct proc_ops bkn_proc_link_file_ops = { + proc_open: bkn_proc_link_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bkn_proc_link_write, + proc_release: single_release, +}; +#endif /* * Device Rate Control Proc Read Entry @@ -6596,6 +6611,7 @@ bkn_proc_rate_write(struct file *file, const char *buf, return count; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations bkn_proc_rate_file_ops = { owner: THIS_MODULE, open: bkn_proc_rate_open, @@ -6604,6 +6620,15 @@ struct file_operations bkn_proc_rate_file_ops = { write: bkn_proc_rate_write, release: single_release, }; +#else +struct proc_ops bkn_proc_rate_file_ops = { + proc_open: bkn_proc_rate_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bkn_proc_rate_write, + proc_release: single_release, +}; +#endif /* * Driver DMA Proc Entry @@ -6846,6 +6871,7 @@ bkn_seq_dma_open(struct inode *inode, struct file *file) return seq_open(file, &bkn_seq_dma_ops); }; +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) static struct file_operations bkn_seq_dma_file_ops = { .owner = THIS_MODULE, .open = bkn_seq_dma_open, @@ -6853,6 +6879,14 @@ static struct file_operations bkn_seq_dma_file_ops = { .llseek = seq_lseek, .release = seq_release }; +#else +static struct proc_ops bkn_seq_dma_file_ops = { + .proc_open = bkn_seq_dma_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = seq_release +}; +#endif /* * Device Debug Control Proc Write Entry @@ -6976,6 +7010,7 @@ static int bkn_proc_debug_open(struct inode * inode, struct file * file) return single_open(file, bkn_proc_debug_show, NULL); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations bkn_proc_debug_file_ops = { owner: THIS_MODULE, open: bkn_proc_debug_open, @@ -6984,6 +7019,15 @@ struct file_operations bkn_proc_debug_file_ops = { write: bkn_proc_debug_write, release: single_release, }; +#else +struct proc_ops bkn_proc_debug_file_ops = { + proc_open: bkn_proc_debug_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bkn_proc_debug_write, + proc_release: single_release, +}; +#endif /* * Device Statistics Proc Entry @@ -7105,6 +7149,7 @@ bkn_proc_stats_write(struct file *file, const char *buf, return count; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations bkn_proc_stats_file_ops = { owner: THIS_MODULE, open: bkn_proc_stats_open, @@ -7113,6 +7158,15 @@ struct file_operations bkn_proc_stats_file_ops = { write: bkn_proc_stats_write, release: single_release, }; +#else +struct proc_ops bkn_proc_stats_file_ops = { + proc_open: bkn_proc_stats_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bkn_proc_stats_write, + proc_release: single_release, +}; +#endif /* * Device Debug Statistics Proc Entry @@ -7281,6 +7335,7 @@ bkn_proc_dstats_write(struct file *file, const char *buf, return count; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations bkn_proc_dstats_file_ops = { owner: THIS_MODULE, open: bkn_proc_dstats_open, @@ -7289,6 +7344,15 @@ struct file_operations bkn_proc_dstats_file_ops = { write: bkn_proc_dstats_write, release: single_release, }; +#else +struct proc_ops bkn_proc_dstats_file_ops = { + proc_open: bkn_proc_dstats_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bkn_proc_dstats_write, + proc_release: single_release, +}; +#endif static int bkn_proc_init(void) diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/Makefile b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/Makefile index 9aa3be686851..743eb741732b 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/Makefile +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/Makefile @@ -36,7 +36,7 @@ KMODULE = $(LIBDIR)/$(THIS_MOD_NAME).ko build: $(MODULE) $(KMODULE) endif -#KBUILD_EXTRA_SYMBOLS := ${BLDDIR}/../../../../bde/linux/kernel/kernel_module/Module.symvers +KBUILD_EXTRA_SYMBOLS := ${BLDDIR}/../../../../bde/linux/kernel/kernel_module/Module.symvers KBUILD_EXTRA_SYMBOLS += ${BLDDIR}/../bcm-knet/kernel_module/Module.symvers # BCM PTP Clock Device @@ -49,7 +49,7 @@ $(KMODULE): $(MODULE) mkdir $(BLDDIR)/$(KERNEL_MODULE_DIR) cp ${SDK}/make/Makefile.linux-kmodule $(BLDDIR)/$(KERNEL_MODULE_DIR)/Makefile cat ${KBUILD_EXTRA_SYMBOLS} > $(BLDDIR)/$(KERNEL_MODULE_DIR)/Module.symvers - MOD_NAME=$(THIS_MOD_NAME) $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko + MOD_NAME=$(THIS_MOD_NAME) KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko endif # Make.depend is before clean:: so that Make.depend's clean:: runs first. diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c index edc4a38c741c..7c88fae97d62 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/bcm-ptp-clock/bcm-ptp-clock.c @@ -1594,13 +1594,12 @@ bksync_proc_txts_write(struct file *file, const char *buf, return count; } -struct file_operations bksync_proc_txts_file_ops = { - owner: THIS_MODULE, - open: bksync_proc_txts_open, - read: seq_read, - llseek: seq_lseek, - write: bksync_proc_txts_write, - release: seq_release, +struct proc_ops bksync_proc_txts_file_ops = { + proc_open: bksync_proc_txts_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bksync_proc_txts_write, + proc_release: seq_release, }; /* @@ -1641,13 +1640,12 @@ static int bksync_proc_debug_open(struct inode * inode, struct file * file) } -struct file_operations bksync_proc_debug_file_ops = { - owner: THIS_MODULE, - open: bksync_proc_debug_open, - read: seq_read, - llseek: seq_lseek, - write: bksync_proc_debug_write, - release: single_release, +struct proc_ops bksync_proc_debug_file_ops = { + proc_open: bksync_proc_debug_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: bksync_proc_debug_write, + proc_release: single_release, }; diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/Makefile b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/Makefile index b8697731dd4e..e0711db022b2 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/Makefile +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/Makefile @@ -62,7 +62,7 @@ $(KMODULE): $(MODULE) mkdir $(BLDDIR)/$(KERNEL_MODULE_DIR) cp ${SDK}/make/Makefile.linux-kmodule $(BLDDIR)/$(KERNEL_MODULE_DIR)/Makefile cat ${KBUILD_EXTRA_SYMBOLS} > $(BLDDIR)/$(KERNEL_MODULE_DIR)/Module.symvers - MOD_NAME=$(THIS_MOD_NAME) $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko + MOD_NAME=$(THIS_MOD_NAME) KBUILD_EXTRA_SYMBOLS="${KBUILD_EXTRA_SYMBOLS}" $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko endif # Make.depend is before clean:: so that Make.depend's clean:: runs first. diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/psample-cb.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/psample-cb.c index 755955b20fdd..fd69d64ddb70 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/psample-cb.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/knet-cb/psample-cb.c @@ -714,13 +714,12 @@ psample_proc_rate_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_rate_file_ops = { - owner: THIS_MODULE, - open: psample_proc_rate_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_rate_write, - release: single_release, +struct proc_ops psample_proc_rate_file_ops = { + proc_open: psample_proc_rate_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_rate_write, + proc_release: single_release, }; /* @@ -813,13 +812,12 @@ psample_proc_size_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_size_file_ops = { - owner: THIS_MODULE, - open: psample_proc_size_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_size_write, - release: single_release, +struct proc_ops psample_proc_size_file_ops = { + proc_open: psample_proc_size_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_size_write, + proc_release: single_release, }; /* @@ -854,13 +852,12 @@ psample_proc_map_open(struct inode * inode, struct file * file) return single_open(file, psample_proc_map_show, NULL); } -struct file_operations psample_proc_map_file_ops = { - owner: THIS_MODULE, - open: psample_proc_map_open, - read: seq_read, - llseek: seq_lseek, - write: NULL, - release: single_release, +struct proc_ops psample_proc_map_file_ops = { + proc_open: psample_proc_map_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: NULL, + proc_release: single_release, }; /* @@ -924,13 +921,12 @@ psample_proc_debug_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_debug_file_ops = { - owner: THIS_MODULE, - open: psample_proc_debug_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_debug_write, - release: single_release, +struct proc_ops psample_proc_debug_file_ops = { + proc_open: psample_proc_debug_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_debug_write, + proc_release: single_release, }; static int @@ -984,13 +980,12 @@ psample_proc_stats_write(struct file *file, const char *buf, return count; } -struct file_operations psample_proc_stats_file_ops = { - owner: THIS_MODULE, - open: psample_proc_stats_open, - read: seq_read, - llseek: seq_lseek, - write: psample_proc_stats_write, - release: single_release, +struct proc_ops psample_proc_stats_file_ops = { + proc_open: psample_proc_stats_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: psample_proc_stats_write, + proc_release: single_release, }; int psample_cleanup(void) diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/gmodule.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/gmodule.c index 3ef000961837..5b2d5d959a1b 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/gmodule.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/gmodule.c @@ -149,6 +149,7 @@ static int _gmodule_proc_release(struct inode * inode, struct file * file) { return single_release(inode, file); } +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,6,0) struct file_operations _gmodule_proc_fops = { owner: THIS_MODULE, open: _gmodule_proc_open, @@ -158,6 +159,15 @@ struct file_operations _gmodule_proc_fops = { release: _gmodule_proc_release, }; #else +struct proc_ops _gmodule_proc_fops = { + proc_open: _gmodule_proc_open, + proc_read: seq_read, + proc_lseek: seq_lseek, + proc_write: _gmodule_proc_write, + proc_release: _gmodule_proc_release, +}; +#endif +#else int gmodule_vpprintf(char** page_ptr, const char* fmt, va_list args) { @@ -271,7 +281,7 @@ _gmodule_release(struct inode *inode, struct file *filp) return 0; } -#ifdef HAVE_UNLOCKED_IOCTL +#if defined(HAVE_UNLOCKED_IOCTL) || LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0) static long _gmodule_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) @@ -334,7 +344,7 @@ _gmodule_mmap(struct file *filp, struct vm_area_struct *vma) /* FILE OPERATIONS */ struct file_operations _gmodule_fops = { -#ifdef HAVE_UNLOCKED_IOCTL +#if defined(HAVE_UNLOCKED_IOCTL) || LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0) unlocked_ioctl: _gmodule_unlocked_ioctl, #else ioctl: _gmodule_ioctl, diff --git a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/ksal.c b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/ksal.c index 7f90c59c3a39..e34e18cdafb1 100644 --- a/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/ksal.c +++ b/platform/broadcom/saibcm-modules/systems/linux/kernel/modules/shared/ksal.c @@ -191,9 +191,9 @@ sal_sem_give(sal_sem_t b) uint32 sal_time_usecs(void) { - struct timeval ltv; - do_gettimeofday(<v); - return (ltv.tv_sec * SECOND_USEC + ltv.tv_usec); + // ktime_to_us and ktime_get_real_ns return 64-bit integets, but this + // function is returning a 32-bit integer. This should be fine until 2038. + return ktime_to_us(ktime_get_real_ns()); } void diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/fanutil.py index d046834ecf33..75ee8339b60e 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/fanutil.py @@ -82,24 +82,24 @@ def _get_fan_node_val(self, fan_num, node_num): device_path = self.get_fan_device_path(fan_num, node_num) - try: - val_file = open(device_path, 'r') - except IOError as e: - logging.error('GET. unable to open file: %s', str(e)) - return None - - content = val_file.readline().rstrip() - if content == '': - logging.debug('GET. content is NULL. device_path:%s', device_path) - return None - - try: - val_file.close() - except: - logging.debug('GET. unable to close file. device_path:%s', device_path) - return None - - return int(content) + try: + val_file = open(device_path, 'r') + except IOError as e: + logging.error('GET. unable to open file: %s', str(e)) + return None + + content = val_file.readline().rstrip() + if content == '': + logging.debug('GET. content is NULL. device_path:%s', device_path) + return None + + try: + val_file.close() + except: + logging.debug('GET. unable to close file. device_path:%s', device_path) + return None + + return int(content) def _set_fan_node_val(self, fan_num, node_num, val): if fan_num < self.FAN_NUM_1_IDX or fan_num > self.FAN_NUM_ON_MAIN_BROAD: @@ -158,7 +158,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -170,7 +170,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/thermalutil.py index bd5530fd9035..182b95f8eaeb 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/classes/thermalutil.py @@ -24,7 +24,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/modules/x86-64-accton-as4630-54pe-cpld.c b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/modules/x86-64-accton-as4630-54pe-cpld.c index d1205516ef53..f7a438feed7f 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/modules/x86-64-accton-as4630-54pe-cpld.c +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/modules/x86-64-accton-as4630-54pe-cpld.c @@ -96,14 +96,16 @@ static const struct i2c_device_id as4630_54pe_cpld_id[] = { }; MODULE_DEVICE_TABLE(i2c, as4630_54pe_cpld_id); -#define TRANSCEIVER_PRESENT_ATTR_ID(index) MODULE_PRESENT_##index +#define TRANSCEIVER_RESET_ATTR_ID(index) MODULE_RESET_##index +#define TRANSCEIVER_LPMODE_ATTR_ID(index) MODULE_LPMODE_##index +#define TRANSCEIVER_PRESENT_ATTR_ID(index) MODULE_PRESENT_##index #define TRANSCEIVER_TXDISABLE_ATTR_ID(index) MODULE_TXDISABLE_##index -#define TRANSCEIVER_RXLOS_ATTR_ID(index) MODULE_RXLOS_##index -#define TRANSCEIVER_TXFAULT_ATTR_ID(index) MODULE_TXFAULT_##index +#define TRANSCEIVER_RXLOS_ATTR_ID(index) MODULE_RXLOS_##index +#define TRANSCEIVER_TXFAULT_ATTR_ID(index) MODULE_TXFAULT_##index #define FAN_SPEED_RPM_ATTR_ID(index) FAN_SPEED_RPM_##index -#define FAN_DIRECTION_ID(index) FAN_DIRECTION_##index +#define FAN_DIRECTION_ID(index) FAN_DIRECTION_##index #define FAN_PRESENT_ATTR_ID(index) FAN_PRESENT_##index -#define FAN_FAULT_ATTR_ID(index) FAN_FAULT_##index +#define FAN_FAULT_ATTR_ID(index) FAN_FAULT_##index enum as4630_54pe_cpld_sysfs_attributes { CPLD_VERSION, @@ -123,6 +125,10 @@ enum as4630_54pe_cpld_sysfs_attributes { TRANSCEIVER_PRESENT_ATTR_ID(52), TRANSCEIVER_PRESENT_ATTR_ID(53), TRANSCEIVER_PRESENT_ATTR_ID(54), + TRANSCEIVER_RESET_ATTR_ID(53), + TRANSCEIVER_RESET_ATTR_ID(54), + TRANSCEIVER_LPMODE_ATTR_ID(53), + TRANSCEIVER_LPMODE_ATTR_ID(54), TRANSCEIVER_TXDISABLE_ATTR_ID(49), TRANSCEIVER_TXDISABLE_ATTR_ID(50), TRANSCEIVER_TXDISABLE_ATTR_ID(51), @@ -148,6 +154,8 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, char *buf); static ssize_t set_tx_disable(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t set_qsfp(struct device *dev, struct device_attribute *da, + const char *buf, size_t count); static ssize_t access(struct device *dev, struct device_attribute *da, const char *buf, size_t count); static ssize_t show_version(struct device *dev, struct device_attribute *da, @@ -161,10 +169,6 @@ static ssize_t fan_show_value(struct device *dev, struct device_attribute *da, c static ssize_t set_duty_cycle(struct device *dev, struct device_attribute *da, const char *buf, size_t count); static ssize_t get_sys_temp(struct device *dev, struct device_attribute *da, char *buf); -//static ssize_t show_power(struct device *dev, struct device_attribute *da, - // char *buf); - - /* transceiver attributes */ #define DECLARE_SFP_TRANSCEIVER_SENSOR_DEVICE_ATTR(index) \ @@ -178,11 +182,15 @@ static ssize_t get_sys_temp(struct device *dev, struct device_attribute *da, cha &sensor_dev_attr_module_tx_disable_##index.dev_attr.attr, \ &sensor_dev_attr_module_rx_los_##index.dev_attr.attr, \ &sensor_dev_attr_module_tx_fault_##index.dev_attr.attr - + #define DECLARE_QSFP_TRANSCEIVER_SENSOR_DEVICE_ATTR(index) \ + static SENSOR_DEVICE_ATTR(module_lpmode_##index, S_IRUGO | S_IWUSR, show_status, set_qsfp, MODULE_LPMODE_##index); \ + static SENSOR_DEVICE_ATTR(module_reset_##index, S_IRUGO | S_IWUSR, show_status, set_qsfp, MODULE_RESET_##index); \ static SENSOR_DEVICE_ATTR(module_present_##index, S_IRUGO, show_status, NULL, MODULE_PRESENT_##index); #define DECLARE_QSFP_TRANSCEIVER_ATTR(index) \ + &sensor_dev_attr_module_lpmode_##index.dev_attr.attr, \ + &sensor_dev_attr_module_reset_##index.dev_attr.attr, \ &sensor_dev_attr_module_present_##index.dev_attr.attr @@ -273,7 +281,7 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, break; case MODULE_TXDISABLE_49 ... MODULE_TXDISABLE_50: reg=0x5; - mask=0x1 << (attr->index==MODULE_TXFAULT_49?7:3); + mask=0x1 << (attr->index==MODULE_TXDISABLE_49?7:3); break; case MODULE_RXLOS_51 ... MODULE_RXLOS_52: @@ -290,12 +298,22 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, break; case MODULE_TXDISABLE_51 ... MODULE_TXDISABLE_52: reg=0x6; - mask=0x1 << (attr->index==MODULE_TXFAULT_51?7:3); + mask=0x1 << (attr->index==MODULE_TXDISABLE_51?7:3); break; case MODULE_PRESENT_53 ... MODULE_PRESENT_54: reg=0x21; mask=0x1 << (attr->index==MODULE_PRESENT_53?0:4); break; + case MODULE_RESET_53 ... MODULE_RESET_54: + reg=0x21; + mask=0x1 << (attr->index==MODULE_RESET_53?3:7); + revert = 1; + break; + case MODULE_LPMODE_53 ... MODULE_LPMODE_54: + reg = 0x21; + mask = 0x1 << (attr->index==MODULE_LPMODE_53?2:6); + revert = 0; + break; default: return 0; } @@ -319,6 +337,61 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, return status; } +static ssize_t set_qsfp(struct device *dev, struct device_attribute *da, + const char *buf, size_t count) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct as4630_54pe_cpld_data *data = i2c_get_clientdata(client); + long disable; + int status; + u8 reg = 0, mask = 0, revert = 0; + + status = kstrtol(buf, 10, &disable); + if (status) { + return status; + } + reg = 0x21; + switch (attr->index) + { + case MODULE_RESET_53 ... MODULE_RESET_54: + mask=0x1 << (attr->index==MODULE_RESET_53?3:7); + revert = 1; + break; + case MODULE_LPMODE_53 ... MODULE_LPMODE_54: + mask=0x1 << (attr->index==MODULE_LPMODE_53?2:6); + revert = 0; + break; + default: + return 0; + } + + disable = revert ? disable : !disable; + /* Read current status */ + mutex_lock(&data->update_lock); + status = as4630_54pe_cpld_read_internal(client, reg); + if (unlikely(status < 0)) { + goto exit; + } + if (disable) { + status &= ~mask; + } + else { + status |= mask; + } + status = as4630_54pe_cpld_write_internal(client, reg, status); + if (unlikely(status < 0)) { + goto exit; + } + + mutex_unlock(&data->update_lock); + return count; + +exit: + mutex_unlock(&data->update_lock); + return status; +} + static ssize_t set_tx_disable(struct device *dev, struct device_attribute *da, const char *buf, size_t count) { @@ -338,11 +411,11 @@ static ssize_t set_tx_disable(struct device *dev, struct device_attribute *da, { case MODULE_TXDISABLE_49 ... MODULE_TXDISABLE_50: reg=0x5; - mask=0x1 << (attr->index==MODULE_TXFAULT_49?7:3); + mask=0x1 << (attr->index==MODULE_TXDISABLE_49?7:3); break; case MODULE_TXDISABLE_51 ... MODULE_TXDISABLE_52: reg=0x6; - mask=0x1 << (attr->index==MODULE_TXFAULT_51?7:3); + mask=0x1 << (attr->index==MODULE_TXDISABLE_51?7:3); break; default: @@ -357,10 +430,10 @@ static ssize_t set_tx_disable(struct device *dev, struct device_attribute *da, } /* Update tx_disable status */ if (disable) { - status &= ~mask; + status |= mask; } else { - status |= mask; + status &= ~mask; } status = as4630_54pe_cpld_write_internal(client, reg, status); if (unlikely(status < 0)) { diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor.py index 8913233366e2..b074177133aa 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor.py @@ -26,7 +26,7 @@ import logging.config import logging.handlers import time - import commands + import subprocess from as4630_54pe.fanutil import FanUtil from as4630_54pe.thermalutil import ThermalUtil except ImportError as e: @@ -200,7 +200,7 @@ def manage_fans(self): logging.critical('Alarm-Critical for temperature critical is detected, reset DUT') cmd_str="i2cset -y -f 3 0x60 0x4 0xE4" time.sleep(2); - status, output = commands.getstatusoutput(cmd_str) + status, output = subprocess.getstatusoutput(cmd_str) #logging.debug('ori_state=%d, current_state=%d, temp_val=%d\n\n',ori_state, fan_policy_state, temp_val) @@ -225,11 +225,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -238,7 +238,7 @@ def main(argv): if sys.argv[1]== '-t': if len(sys.argv)!=5: - print "temp test, need input three temp" + print("temp test, need input three temp") return 0 i=0 @@ -247,11 +247,11 @@ def main(argv): i=i+1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(50) - print "set default fan speed to 50%" + print("set default fan speed to 50%") monitor = device_monitor(log_file, log_level) # Loop forever, doing something useful hopefully: while True: diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_fan.py index c775e86874b8..9e9645485bba 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_fan.py @@ -124,7 +124,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -143,7 +143,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -165,11 +165,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_psu.py index 02f4541127a7..8a5993f58240 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_monitor_psu.py @@ -96,7 +96,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -143,11 +143,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_util.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_util.py index 80dfd497c2d9..f0081b33b2c3 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54pe/utils/accton_as4630_54pe_util.py @@ -88,8 +88,8 @@ if DEBUG == True: - print(sys.argv[0]) - print('ARGV :', sys.argv[1:]) + print((sys.argv[0])) + print(('ARGV :', sys.argv[1:])) def main(): @@ -107,7 +107,7 @@ def main(): if DEBUG == True: print(options) print(args) - print(len(sys.argv)) + print((len(sys.argv))) for opt, arg in options: if opt in ('-h', '--help'): @@ -132,12 +132,12 @@ def main(): return 0 def show_help(): - print( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) + print(( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]})) sys.exit(0) def my_log(txt): if DEBUG == True: - print("[ACCTON DBG]: ",txt) + print(("[ACCTON DBG]: ",txt)) return def log_os_system(cmd, show): @@ -151,7 +151,7 @@ def log_os_system(cmd, show): if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -294,14 +294,14 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" drivers detected....") + print((PROJECT_NAME.upper()+" drivers detected....")) if not device_exist(): status = device_install() if status: if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" devices detected....") + print((PROJECT_NAME.upper()+" devices detected....")) for i in range(len(cpld_set)): status, output = log_os_system(cpld_set[i], 1) @@ -312,7 +312,7 @@ def do_install(): def do_uninstall(): if not device_exist(): - print(PROJECT_NAME.upper()+" has no device installed....") + print((PROJECT_NAME.upper()+" has no device installed....")) else: print("Removing device....") status = device_uninstall() @@ -321,7 +321,7 @@ def do_uninstall(): return status if driver_inserted()== False : - print(PROJECT_NAME.upper()+" has no driver installed....") + print((PROJECT_NAME.upper()+" has no driver installed....")) else: print("Removing installed driver....") status = driver_uninstall() diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/classes/fanutil.py index 121b8409a585..ced84e191a75 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/classes/fanutil.py @@ -165,7 +165,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -177,7 +177,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor.py index 8c704ac60e86..d3c2b2c86094 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor.py @@ -223,11 +223,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdlt:', ['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -236,7 +236,7 @@ def main(argv): if sys.argv[1] == '-t': if len(sys.argv) != 5: - print "temp test, need input three temp" + print("temp test, need input three temp") return 0 i = 0 @@ -245,11 +245,11 @@ def main(argv): i = i + 1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(50) - print "set default fan speed to 50%" + print("set default fan speed to 50%") monitor = device_monitor(log_file, log_level) # Loop forever, doing something useful hopefully: while True: diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_fan.py index 6d8ab0ea3c95..635e27ecbe38 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_fan.py @@ -122,7 +122,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -142,7 +142,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -166,11 +166,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdl:', ['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_psu.py index 9bff640434bf..98b26ee10b72 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_monitor_psu.py @@ -96,7 +96,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -120,7 +120,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -147,11 +147,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdl:', ['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_util.py b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_util.py index 172a9842a8bf..21e8ecb30c95 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as4630-54te/utils/accton_as4630_54te_util.py @@ -29,7 +29,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -165,8 +165,8 @@ def main(): global FORCE if DEBUG: - print(sys.argv[0]) - print('ARGV : %s' % sys.argv[1:]) + print((sys.argv[0])) + print(('ARGV : %s' % sys.argv[1:])) if len(sys.argv) < 2: show_help() @@ -176,9 +176,9 @@ def main(): 'force', ]) if DEBUG: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -189,7 +189,7 @@ def main(): elif opt in ('-f', '--force'): FORCE = 1 else: - print "TEST" + print("TEST") logging.info('no option') for arg in args: if arg == 'install': @@ -223,42 +223,42 @@ def main(): def show_help(): - print __doc__ % {'scriptName': sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName': sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1] + " " + args[0] - print cmd + " [led|sfp|fan]" - print " use \"" + cmd + " led 0-4 \" to set led color" - print " use \"" + cmd + " fan 0-100\" to set fan duty percetage" - print " use \"" + cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd + " [led|sfp|fan]") + print(" use \"" + cmd + " led 0-4 \" to set led color") + print(" use \"" + cmd + " fan 0-100\" to set fan duty percetage") + print(" use \"" + cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1] + " " + args[0] - print " use \"" + cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \"" + cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG: - print "[ACCTON DBG]: " + txt + print("[ACCTON DBG]: " + txt) return def log_os_system(cmd, show): logging.info('Run :' + cmd) output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log(cmd + "with result:" + str(status)) my_log("cmd:" + cmd) my_log(" output:" + output) if status: logging.info('Failed :' + cmd) if show: - print('Failed :' + cmd) + print(('Failed :' + cmd)) return status, output @@ -306,7 +306,7 @@ def driver_uninstall(): for i in range(0, len(kos)): rm = kos[-(i + 1)].replace("modprobe", "modprobe -rq") lst = rm.split(" ") - print "lst=%s" % lst + print("lst=%s" % lst) if len(lst) > 3: del(lst[3]) rm = " ".join(lst) @@ -327,7 +327,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status print("Check SFP") @@ -342,7 +342,7 @@ def device_install(): str(sfp_map[i]) + "/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -353,7 +353,7 @@ def device_install(): str(sfp_map[i]) + "-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -368,7 +368,7 @@ def device_uninstall(): str(sfp_map[i]) + "/delete_device" status, output = log_os_system("echo 0x50 > " + target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -381,7 +381,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -392,7 +392,7 @@ def system_ready(): if driver_inserted() == False: return False if not device_exist(): - print "not device_exist()" + print("not device_exist()") return False return True @@ -408,29 +408,29 @@ def do_sonic_platform_install(): if os.path.exists(SONIC_PLATFORM_BSP_WHL_PKG_PY3): status, output = log_os_system("pip3 install "+ SONIC_PLATFORM_BSP_WHL_PKG_PY3, 1) if status: - print "Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) + print("Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3)) return status else: - print "Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) + print("Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3)) else: - print('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3))) else: - print('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_sonic_platform_clean(): status, output = log_os_system("pip3 show sonic-platform > /dev/null 2>&1", 0) if status: - print('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3))) else: status, output = log_os_system("pip3 uninstall sonic-platform -y", 0) if status: - print('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3))) return status else: - print('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3))) return @@ -442,14 +442,14 @@ def do_install(): if FORCE == 0: return status else: - print PROJECT_NAME.upper() + " drivers detected...." + print(PROJECT_NAME.upper() + " drivers detected....") if not device_exist(): status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper() + " devices detected...." + print(PROJECT_NAME.upper() + " devices detected....") for i in range(len(cpld_set)): status, output = log_os_system(cpld_set[i], 1) @@ -464,18 +464,18 @@ def do_install(): def do_uninstall(): if not device_exist(): - print PROJECT_NAME.upper() + " has no device installed...." + print(PROJECT_NAME.upper() + " has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted() == False: - print PROJECT_NAME.upper() + " has no driver installed...." + print(PROJECT_NAME.upper() + " has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -533,11 +533,11 @@ def devices_info(): # show dict all in the order if DEBUG: for i in sorted(ALL_DEVICE.keys()): - print(i + ": ") + print((i + ": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" " + j) + print((" " + j)) for k in (ALL_DEVICE[i][j]): - print(" " + " " + k) + print((" " + " " + k)) return @@ -561,15 +561,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print "node=%s" % node - print node + ":" + print("node=%s" % node) + print(node + ":") ret, log = log_os_system("cat " + node + "| " + hex_cmd + " -C", 1) if ret == 0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return @@ -604,10 +604,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat " + node, 1) if ret == 0: - print ("Previous fan duty: " + log.strip() + "%") + print(("Previous fan duty: " + log.strip() + "%")) ret, log = log_os_system("echo " + args[1] + " >" + node, 1) if ret == 0: - print ("Current fan duty: " + args[1] + "%") + print(("Current fan duty: " + args[1] + "%")) return ret elif args[0] == 'sfp': if int(args[1]) > DEVICE_NO[args[0]] or int(args[1]) == 0: @@ -650,24 +650,24 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper() + ": ") + print((i.upper() + ": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " " + j + ":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" " + j + ":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat " + k, 0) func = k.split("/")[-1].strip() func = re.sub(j + '_', '', func, 1) func = re.sub(i.lower() + '_', '', func, 1) if ret == 0: - print func + "=" + log + " ", + print(func + "=" + log + " ", end=' ') else: - print func + "=" + "X" + " ", - print + print(func + "=" + "X" + " ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return diff --git a/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_monitor.py index f032088dc525..cd35e9af9018 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_monitor.py @@ -173,11 +173,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_util.py b/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_util.py index ed9667da8c99..cfdd5acadccb 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5712-54x/utils/accton_as5712_util.py @@ -30,7 +30,7 @@ """ import os -import commands +import subprocess import getopt import sys import logging @@ -145,8 +145,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -162,9 +162,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -204,39 +204,39 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-48 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-48 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -318,7 +318,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -329,7 +329,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status @@ -339,12 +339,12 @@ def device_install(): else: status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status status, output =log_os_system("echo port"+str(i)+" > /sys/bus/i2c/devices/"+str(sfp_map[i])+"-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -357,7 +357,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -374,7 +374,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -388,40 +388,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_inserted() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -474,11 +474,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -501,15 +501,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return @@ -576,10 +576,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': #if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -630,36 +630,36 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') if i == 'sfp': - port_index = int(filter(str.isdigit, j)) + port_index = int(list(filter(str.isdigit, j))) for k in (ALL_DEVICE[i][j]): if k.find('tx_disable')!= -1: ret, k = get_path_sfp_tx_dis(port_index) if ret == False: continue log = print_1_device_traversal(i, j, k) - print log, + print(log, end=' ') if k.find('present')!= -1: ret, k = get_path_sfp_presence(port_index) if ret == False: continue log = print_1_device_traversal(i, j, k) - print log, + print(log, end=' ') else: for k in (ALL_DEVICE[i][j]): log = print_1_device_traversal(i, j, k) - print log, - print + print(log, end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_monitor.py index 6f55e703d7d1..d241ad777521 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_monitor.py @@ -181,11 +181,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl') except getopt.GetoptError: - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 elif opt in ('-d'): log_console = 1 diff --git a/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_util.py b/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_util.py index 3859c3279c45..3a6e7c5d9acc 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5812-54t/utils/accton_as5812_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -53,8 +53,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -70,9 +70,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -112,36 +112,36 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-6 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-6 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ROY]"+txt + print("[ROY]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -270,7 +270,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -281,13 +281,13 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -305,7 +305,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -321,7 +321,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -335,40 +335,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -421,11 +421,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -448,15 +448,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -490,10 +490,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -533,25 +533,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_monitor.py index 5e3b368659cc..f0fada64563a 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_monitor.py @@ -181,11 +181,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl') except getopt.GetoptError: - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 elif opt in ('-d'): log_console = 1 diff --git a/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_util.py b/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_util.py index 464c85745f90..05ebcb420698 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5812-54x/utils/accton_as5812_util.py @@ -30,7 +30,7 @@ """ import os -import commands +import subprocess import getopt import sys import logging @@ -145,8 +145,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -162,9 +162,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -204,39 +204,39 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-48 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-48 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -320,7 +320,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -331,7 +331,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status @@ -341,12 +341,12 @@ def device_install(): else: status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status status, output =log_os_system("echo port"+str(i)+" > /sys/bus/i2c/devices/"+str(sfp_map[i])+"-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -359,7 +359,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -376,7 +376,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -390,40 +390,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_inserted() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -476,11 +476,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -503,15 +503,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return @@ -578,10 +578,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': #if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -632,36 +632,36 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') if i == 'sfp': - port_index = int(filter(str.isdigit, j)) + port_index = int(list(filter(str.isdigit, j))) for k in (ALL_DEVICE[i][j]): if k.find('tx_disable')!= -1: ret, k = get_path_sfp_tx_dis(port_index) if ret == False: continue log = print_1_device_traversal(i, j, k) - print log, + print(log, end=' ') if k.find('present')!= -1: ret, k = get_path_sfp_presence(port_index) if ret == False: continue log = print_1_device_traversal(i, j, k) - print log, + print(log, end=' ') else: for k in (ALL_DEVICE[i][j]): log = print_1_device_traversal(i, j, k) - print log, - print + print(log, end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/fanutil.py index c741ebfd7246..e60236c9c781 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/fanutil.py @@ -185,7 +185,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -197,7 +197,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) fan_file.close() diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/thermalutil.py index 1dc97cfe276d..00e5bfa25683 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/classes/thermalutil.py @@ -26,7 +26,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) @@ -83,7 +83,7 @@ def _get_thermal_val(self, thermal_num): return int(content) else: - print "No such device_path=%s"%device_path + print("No such device_path=%s"%device_path) return 0 def get_num_thermals(self): @@ -115,10 +115,10 @@ def get_thermal_temp(self): def main(): thermal = ThermalUtil() - print "termal1=%d" %thermal._get_thermal_val(1) - print "termal2=%d" %thermal._get_thermal_val(2) - print "termal3=%d" %thermal._get_thermal_val(3) - print "termal4=%d" %thermal._get_thermal_val(4) + print("termal1=%d" %thermal._get_thermal_val(1)) + print("termal2=%d" %thermal._get_thermal_val(2)) + print("termal3=%d" %thermal._get_thermal_val(3)) + print("termal4=%d" %thermal._get_thermal_val(4)) # # print 'get_size_node_map : %d' % thermal.get_size_node_map() # print 'get_size_path_map : %d' % thermal.get_size_path_map() diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor.py index ceea8e12f852..397a816c9ea7 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor.py @@ -176,11 +176,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_fan.py index 7978012b0da0..30f9ccd9e8ba 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_fan.py @@ -132,7 +132,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -151,7 +151,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -173,11 +173,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_psu.py index 9be72fda9993..40483e064dfc 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_monitor_psu.py @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -138,7 +138,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -164,11 +164,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py index 48e49cbaba13..7e51658e9fb6 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -53,8 +53,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -70,9 +70,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -112,36 +112,36 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 49-54 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 49-54 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[Debug]"+txt + print("[Debug]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -277,7 +277,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) time.sleep(0.01) if status: - print output + print(output) if FORCE == 0: return status else: @@ -288,7 +288,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(49, 55): #Set qsfp port to normal state @@ -297,13 +297,13 @@ def device_install(): for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status path = "/sys/bus/i2c/devices/{0}-0050/port_name" status, output =log_os_system("echo port{0} > ".format(i+49)+path.format(sfp_map[i]), 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -321,7 +321,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -337,7 +337,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -351,40 +351,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -437,11 +437,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -464,15 +464,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -506,10 +506,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -549,25 +549,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/fanutil.py index c741ebfd7246..e60236c9c781 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/fanutil.py @@ -185,7 +185,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -197,7 +197,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) fan_file.close() diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/thermalutil.py index ce903db35487..ceb9ab464026 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/classes/thermalutil.py @@ -26,7 +26,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) @@ -83,7 +83,7 @@ def _get_thermal_val(self, thermal_num): return int(content) else: - print "No such device_path=%s"%device_path + print("No such device_path=%s"%device_path) return 0 def get_num_thermals(self): @@ -115,10 +115,10 @@ def get_thermal_temp(self): def main(): thermal = ThermalUtil() - print "termal1=%d" %thermal._get_thermal_val(1) - print "termal2=%d" %thermal._get_thermal_val(2) - print "termal3=%d" %thermal._get_thermal_val(3) - print "termal4=%d" %thermal._get_thermal_val(4) + print("termal1=%d" %thermal._get_thermal_val(1)) + print("termal2=%d" %thermal._get_thermal_val(2)) + print("termal3=%d" %thermal._get_thermal_val(3)) + print("termal4=%d" %thermal._get_thermal_val(4)) # # print 'get_size_node_map : %d' % thermal.get_size_node_map() # print 'get_size_path_map : %d' % thermal.get_size_path_map() diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor.py index 9c5e955ce17d..e3b3fe742db9 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor.py @@ -175,11 +175,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_fan.py index dec1e036142d..842e76ce3748 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_fan.py @@ -132,7 +132,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -151,7 +151,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -173,11 +173,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_psu.py index f994d635239a..1dbd85cb6487 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_monitor_psu.py @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -138,7 +138,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -164,11 +164,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py index 63ed27eabbab..dc26ae1c8192 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # # Copyright (C) 2019 Accton Networks, Inc. # @@ -17,24 +17,18 @@ """ Usage: %(scriptName)s [options] command object - options: -h | --help : this help message -d | --debug : run with debug mode -f | --force : ignore error during installation or clean command: install : install drivers and generate related sysfs nodes - clean : uninstall drivers and remove related sysfs nodes - show : show all systen status - sff : dump SFP eeprom - set : change board setting with fan|led|sfp + clean : uninstall drivers and remove related sysfs nodes """ - -import commands +import subprocess import getopt import sys import logging -import re import time import os @@ -47,15 +41,15 @@ DEBUG = False args = [] ALL_DEVICE = {} -DEVICE_NO = {'led':5, 'fan':5,'thermal':4, 'psu':2, 'sfp':54} FORCE = 0 + #logging.basicConfig(filename= PROJECT_NAME+'.log', filemode='w',level=logging.DEBUG) #logging.basicConfig(level=logging.INFO) if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print((sys.argv[0])) + print(("ARGV :", sys.argv[1:])) def main(): @@ -71,9 +65,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print((len(sys.argv))) for opt, arg in options: if opt in ('-h', '--help'): @@ -94,22 +88,7 @@ def main(): do_sonic_platform_install() elif arg == 'api_clean': do_sonic_platform_clean() - elif arg == 'show': - device_traversal() - elif arg == 'sff': - if len(args)!=2: - show_eeprom_help() - elif int(args[1]) ==0 or int(args[1]) > DEVICE_NO['sfp']: - show_eeprom_help() - else: - show_eeprom(args[1]) - return - elif arg == 'set': - if len(args)<3: - show_set_help() - else: - set_device(args[1:]) - return + else: show_help() @@ -117,36 +96,24 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print((__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]})) sys.exit(0) -def show_set_help(): - cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-48 {0|1}\" to set sfp# tx_disable" - sys.exit(0) - -def show_eeprom_help(): - cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" - sys.exit(0) def my_log(txt): if DEBUG == True: - print "[Debug]"+txt + print(("[Debug]"+txt)) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -177,6 +144,8 @@ def driver_install(): if ret[0]: if FORCE == 0: return ret[0] + print("Done driver_install") + return 0 def driver_uninstall(): @@ -194,12 +163,8 @@ def driver_uninstall(): return ret[0] return 0 -led_prefix ='/sys/class/leds/'+PROJECT_NAME+'_led::' -hwmon_types = {'led': ['diag','fan','loc','psu1','psu2']} -hwmon_nodes = {'led': ['brightness'] } -hwmon_prefix ={'led': led_prefix} - i2c_prefix = '/sys/bus/i2c/devices/' +''' i2c_bus = {'fan': ['3-0063'] , 'thermal': ['18-004b','19-004c', '20-0049', '21-004a'] , 'psu': ['11-0050','12-0053'], @@ -208,7 +173,7 @@ def driver_uninstall(): 'thermal': ['hwmon/hwmon*/temp1_input'] , 'psu': ['psu_present ', 'psu_power_good'] , 'sfp': ['module_present_', 'module_tx_disable_']} - +''' sfp_map = [42,43,44,45,46,47,48,49,50,51, 52,53,54,55,56,57,58,59,60,61, 62,63,64,65,66,67,68,69,70,71, @@ -303,7 +268,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) time.sleep(0.01) if status: - print output + print(output) if FORCE == 0: return status else: @@ -314,7 +279,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status @@ -327,9 +292,11 @@ def device_install(): else: status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status + print("Done device_install") + return def device_uninstall(): @@ -339,7 +306,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -356,7 +323,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -381,258 +348,79 @@ def do_sonic_platform_install(): if os.path.exists(SONIC_PLATFORM_BSP_WHL_PKG_PY3): status, output = log_os_system("pip3 install "+ SONIC_PLATFORM_BSP_WHL_PKG_PY3, 1) if status: - print "Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) + print(("Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) )) return status else: - print "Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) + print(("Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) )) else: - print('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3))) else: - print('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_sonic_platform_clean(): status, output = log_os_system("pip3 show sonic-platform > /dev/null 2>&1", 0) if status: - print('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3))) else: status, output = log_os_system("pip3 uninstall sonic-platform -y", 0) if status: - print('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3))) return status else: - print('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print((PROJECT_NAME.upper()+" drivers detected....")) if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print((PROJECT_NAME.upper()+" devices detected....")) do_sonic_platform_install() return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print((PROJECT_NAME.upper() +" has no device installed....")) else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print((PROJECT_NAME.upper() +" has no driver installed....")) else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: return status - do_sonic_platform_clean() + do_sonic_platform_clean() return -def devices_info(): - global DEVICE_NO - global ALL_DEVICE - global i2c_bus, hwmon_types - for key in DEVICE_NO: - ALL_DEVICE[key]= {} - for i in range(0,DEVICE_NO[key]): - ALL_DEVICE[key][key+str(i+1)] = [] - - for key in i2c_bus: - buses = i2c_bus[key] - nodes = i2c_nodes[key] - for i in range(0,len(buses)): - for j in range(0,len(nodes)): - if 'fan' == key: - for k in range(0,DEVICE_NO[key]): - node = key+str(k+1) - path = i2c_prefix+ buses[i]+"/fan"+str(k+1)+"_"+ nodes[j] - my_log(node+": "+ path) - ALL_DEVICE[key][node].append(path) - elif 'sfp' == key: - for k in range(0,DEVICE_NO[key]): - for lk in cpld_of_module: - if k in cpld_of_module[lk]: - node = key+str(k+1) - path = i2c_prefix + lk + "/"+ nodes[j] + str(k+1) - my_log(node+": "+ path) - ALL_DEVICE[key][node].append(path) - else: - node = key+str(i+1) - path = i2c_prefix+ buses[i]+"/"+ nodes[j] - my_log(node+": "+ path) - ALL_DEVICE[key][node].append(path) - - for key in hwmon_types: - itypes = hwmon_types[key] - nodes = hwmon_nodes[key] - for i in range(0,len(itypes)): - for j in range(0,len(nodes)): - node = key+"_"+itypes[i] - path = hwmon_prefix[key]+ itypes[i]+"/"+ nodes[j] - my_log(node+": "+ path) - ALL_DEVICE[key][ key+str(i+1)].append(path) - - #show dict all in the order - if DEBUG == True: - for i in sorted(ALL_DEVICE.keys()): - print(i+": ") - for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) - for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) - return - -def show_eeprom(index): - if system_ready()==False: - print("System's not ready.") - print("Please install first!") - return - - if len(ALL_DEVICE)==0: - devices_info() - node = ALL_DEVICE['sfp'] ['sfp'+str(index)][0] - node = node.replace(node.split("/")[-1], 'sfp_eeprom') - # check if got hexdump command in current environment - ret, log = log_os_system("which hexdump", 0) - ret, log2 = log_os_system("which busybox hexdump", 0) - if log : - hex_cmd = 'hexdump' - elif log2 : - hex_cmd = ' busybox hexdump' - else: - log = 'Failed : no hexdump cmd!!' - logging.info(log) - print log - return 1 - - print node + ":" - ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) - if ret==0: - print log - else: - print "**********device no found**********" - return - -def set_device(args): - global DEVICE_NO - global ALL_DEVICE - if system_ready()==False: - print("System's not ready.") - print("Please install first!") - return - - if len(ALL_DEVICE)==0: - devices_info() - - if args[0]=='led': - if int(args[1])>4: - show_set_help() - return - #print ALL_DEVICE['led'] - for i in range(0,len(ALL_DEVICE['led'])): - for k in (ALL_DEVICE['led']['led'+str(i+1)]): - ret = log_os_system("echo "+args[1]+" >"+k, 1) - if ret[0]: - return ret[0] - elif args[0]=='fan': - if int(args[1])>100: - show_set_help() - return - #print ALL_DEVICE['fan'] - #fan1~5 is all fine, all fan share same setting - node = ALL_DEVICE['fan'] ['fan1'][0] - node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') - ret = log_os_system("cat "+ node, 1) - if ret[0] == 0: - print ("Previous fan duty: " + log.strip() +"%") - ret = log_os_system("echo "+args[1]+" >"+node, 1) - if ret[0] == 0: - print ("Current fan duty: " + args[1] +"%") - return ret[0] - elif args[0]=='sfp': - if int(args[1])> qsfp_start or int(args[1])==0: - show_set_help() - return - if len(args)<2: - show_set_help() - return - - if int(args[2])>1: - show_set_help() - return - - #print ALL_DEVICE[args[0]] - for i in range(0,len(ALL_DEVICE[args[0]])): - for j in ALL_DEVICE[args[0]][args[0]+str(args[1])]: - if j.find('tx_disable')!= -1: - ret = log_os_system("echo "+args[2]+" >"+ j, 1) - if ret[0]: - return ret[0] - - return - -#get digits inside a string. -#Ex: 31 for "sfp31" -def get_value(input): - digit = re.findall('\d+', input) - return int(digit[0]) - -def device_traversal(): - if system_ready()==False: - print("System's not ready.") - print("Please install first!") - return - - if len(ALL_DEVICE)==0: - devices_info() - for i in sorted(ALL_DEVICE.keys()): - print("============================================") - print(i.upper()+": ") - print("============================================") - - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", - for k in (ALL_DEVICE[i][j]): - ret, log = log_os_system("cat "+k, 0) - func = k.split("/")[-1].strip() - func = re.sub(j+'_','',func,1) - func = re.sub(i.lower()+'_','',func,1) - if ret==0: - print func+"="+log+" ", - else: - print func+"="+"X"+" ", - print - print("----------------------------------------------------------------") - - - print - return def device_exist(): ret1 = log_os_system("ls "+i2c_prefix+"*0077", 0) diff --git a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/classes/fanutil.py index 73d020acccce..20d604ab4a3a 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/classes/fanutil.py @@ -193,7 +193,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -212,7 +212,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False #val = ((val + 1 ) * 625 +75 ) / 100 fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_monitor.py index 07e40f6b7fb4..1bc78f8184de 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_monitor.py @@ -180,11 +180,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_util.py b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_util.py index 10cdac787309..fdaf22689639 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as6712-32x/utils/accton_as6712_util.py @@ -37,7 +37,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -153,8 +153,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -170,9 +170,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -213,39 +213,39 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -332,7 +332,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -343,19 +343,19 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status status, output =log_os_system("echo port"+str(i)+" > /sys/bus/i2c/devices/"+str(sfp_map[i])+"-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -374,7 +374,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -390,7 +390,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -404,40 +404,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_inserted() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -494,11 +494,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -521,15 +521,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -563,10 +563,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -606,25 +606,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/classes/fanutil.py index 92e79da72746..9b34ce560821 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/classes/fanutil.py @@ -179,7 +179,7 @@ def get_fan_duty_cycle(self): with open(self.FAN_DUTY_PATH) as val_file: content = val_file.readline().rstrip() except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False return int(content) @@ -188,7 +188,7 @@ def set_fan_duty_cycle(self, val): with open(self.FAN_DUTY_PATH, 'r+') as val_file: val_file.write(str(val)) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False return True diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_monitor.py index 2f87c3f58736..c63bdab2fa0a 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_monitor.py @@ -192,11 +192,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_util.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_util.py index e2f058b4e37a..b79a1c1088dc 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54x/utils/accton_as7312_util.py @@ -29,7 +29,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -56,8 +56,8 @@ # logging.basicConfig(level=logging.INFO) if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -71,9 +71,9 @@ def main(): (options, ARGS) = getopt.getopt(sys.argv[1:], 'hdf', ['help','debug', 'force']) if DEBUG == True: - print options - print ARGS - print len(sys.argv) + print(options) + print(ARGS) + print(len(sys.argv)) for (opt, arg) in options: if opt in ('-h', '--help'): @@ -116,40 +116,40 @@ def main(): def show_help(): - print __doc__ % {'scriptName': sys.argv[0].split('/')[-1]} + print(__doc__ % {'scriptName': sys.argv[0].split('/')[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split('/')[-1] + ' ' + ARGS[0] - print cmd + ' [led|sfp|fan]' - print ' use "' + cmd + ' led 0-4 " to set led color' - print ' use "' + cmd + ' fan 0-100" to set fan duty percetage' - print ' use "' + cmd + ' sfp 1-48 {0|1}" to set sfp# tx_disable' + print(cmd + ' [led|sfp|fan]') + print(' use "' + cmd + ' led 0-4 " to set led color') + print(' use "' + cmd + ' fan 0-100" to set fan duty percetage') + print(' use "' + cmd + ' sfp 1-48 {0|1}" to set sfp# tx_disable') sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split('/')[-1] + ' ' + ARGS[0] - print ' use "' + cmd + ' 1-54 " to dump sfp# eeprom' + print(' use "' + cmd + ' 1-54 " to dump sfp# eeprom') sys.exit(0) def my_log(txt): if DEBUG == True: - print '[DBG]' + txt + print('[DBG]' + txt) return def log_os_system(cmd, show): logging.info('Run :' + cmd) - (status, output) = commands.getstatusoutput(cmd) + (status, output) = subprocess.getstatusoutput(cmd) my_log(cmd + 'with result:' + str(status)) my_log(' output:' + output) if status: logging.info('Failed :' + cmd) if show: - print 'Failed :' + cmd + print('Failed :' + cmd) return (status, output) @@ -294,7 +294,7 @@ def device_install(): (status, output) = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -305,7 +305,7 @@ def device_install(): (status, output) = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0, len(sfp_map)): @@ -318,7 +318,7 @@ def device_install(): log_os_system('echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-' + str(sfp_map[i]) + '/new_device', 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -331,7 +331,7 @@ def device_uninstall(): + '/delete_device' (status, output) = log_os_system('echo 0x50 > ' + target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -348,7 +348,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') (status, output) = log_os_system(' '.join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -374,69 +374,69 @@ def do_sonic_platform_install(): if os.path.exists(SONIC_PLATFORM_BSP_WHL_PKG_PY3): status, output = log_os_system("pip3 install "+ SONIC_PLATFORM_BSP_WHL_PKG_PY3, 1) if status: - print "Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) + print("Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3)) return status else: - print "Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) + print("Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3)) else: - print('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3))) else: - print('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_sonic_platform_clean(): status, output = log_os_system("pip3 show sonic-platform > /dev/null 2>&1", 0) if status: - print('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3))) else: status, output = log_os_system("pip3 uninstall sonic-platform -y", 0) if status: - print('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3))) return status else: - print('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_install(): - print 'Checking system....' + print('Checking system....') if driver_check() is False: - print 'No driver, installing....' + print('No driver, installing....') status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper() + ' drivers detected....' + print(PROJECT_NAME.upper() + ' drivers detected....') if not device_exist(): - print 'No device, installing....' + print('No device, installing....') status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper() + ' devices detected....' + print(PROJECT_NAME.upper() + ' devices detected....') do_sonic_platform_install() return def do_uninstall(): - print 'Checking system....' + print('Checking system....') if not device_exist(): - print PROJECT_NAME.upper() + ' has no device installed....' + print(PROJECT_NAME.upper() + ' has no device installed....') else: - print 'Removing device....' + print('Removing device....') status = device_uninstall() if status and FORCE == 0: return status if driver_check() is False: - print PROJECT_NAME.upper() + ' has no driver installed....' + print(PROJECT_NAME.upper() + ' has no driver installed....') else: - print 'Removing installed driver....' + print('Removing installed driver....') status = driver_uninstall() if status and FORCE == 0: return status @@ -496,11 +496,11 @@ def devices_info(): # show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print i + ': ' + print(i + ': ') for j in sorted(ALL_DEVICE[i].keys()): - print ' ' + j + print(' ' + j) for k in ALL_DEVICE[i][j]: - print ' ' + ' ' + k + print(' ' + ' ' + k) return @@ -525,14 +525,14 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ':' + print(node + ':') (ret, log) = log_os_system('cat ' + node + '| ' + hex_cmd + ' -C', 1) if ret == 0: - print log + print(log) else: print( '**********device no found**********') return @@ -573,10 +573,10 @@ def set_device(args): 'fan_duty_cycle_percentage') (ret, log) = log_os_system('cat ' + node, 1) if ret == 0: - print 'Previous fan duty: ' + log.strip() + '%' + print('Previous fan duty: ' + log.strip() + '%') ret = log_os_system('echo ' + args[1] + ' >' + node, 1) if ret[0] == 0: - print 'Current fan duty: ' + args[1] + '%' + print('Current fan duty: ' + args[1] + '%') return ret elif args[0] == 'sfp': if int(args[1]) > qsfp_start or int(args[1]) == 0: @@ -611,30 +611,30 @@ def get_value(i): def device_traversal(): if system_ready() is False: - print "System is not ready." - print 'Please install first!' + print("System is not ready.") + print('Please install first!') return if not ALL_DEVICE: devices_info() for i in sorted(ALL_DEVICE.keys()): - print '============================================' - print i.upper() + ': ' - print '============================================' - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print ' ' + j + ':', + print('============================================') + print(i.upper() + ': ') + print('============================================') + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(' ' + j + ':', end=' ') for k in ALL_DEVICE[i][j]: (ret, log) = log_os_system('cat ' + k, 0) func = k.split('/')[-1].strip() func = re.sub(j + '_', '', func, 1) func = re.sub(i.lower() + '_', '', func, 1) if ret == 0: - print func + '=' + log + ' ', + print(func + '=' + log + ' ', end=' ') else: - print func + '=' + 'X' + ' ', - print - print '----------------------------------------------------------------' - print + print(func + '=' + 'X' + ' ', end=' ') + print() + print('----------------------------------------------------------------') + print() return diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/classes/fanutil.py index 18802c803638..22424c74c5c6 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/classes/fanutil.py @@ -200,7 +200,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -219,7 +219,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False #val = ((val + 1 ) * 625 +75 ) / 100 fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_monitor.py index 58ffe1923a85..58940c6636ec 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_monitor.py @@ -193,11 +193,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl') except getopt.GetoptError: - print 'Usage: %s [-d]' % sys.argv[0] + print('Usage: %s [-d]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 elif opt in ('-d'): log_console = 1 diff --git a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_util.py b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_util.py index f6a21bdd3df9..88d40521ebf0 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7312-54xs/utils/accton_as7312_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -53,8 +53,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -70,9 +70,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -112,36 +112,36 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-54 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-54 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ROY]"+txt + print("[ROY]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -292,7 +292,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -303,7 +303,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): @@ -312,7 +312,7 @@ def device_install(): else: status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -330,7 +330,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -346,7 +346,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -360,40 +360,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -446,11 +446,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -473,15 +473,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -515,10 +515,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -558,25 +558,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/classes/fanutil.py index 0e7b06bbd287..6254e1a0b2aa 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/classes/fanutil.py @@ -168,7 +168,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH.format(1)) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -180,7 +180,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH.format(fan_num), 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) fan_file.close() diff --git a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_monitor.py index d5b868255f4a..26ebec649ea7 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_monitor.py @@ -138,11 +138,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl') except getopt.GetoptError: - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l]' % sys.argv[0] + print('Usage: %s [-d] [-l]' % sys.argv[0]) return 0 elif opt in ('-d'): log_console = 1 diff --git a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_util.py b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_util.py index e3810e42102e..867f5ce1aee6 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7315-27xb/utils/accton_as7315_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -55,8 +55,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -72,9 +72,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -114,36 +114,36 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-1 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-27 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-1 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-27 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-27 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-27 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ROY]"+txt + print("[ROY]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -251,7 +251,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status @@ -262,7 +262,7 @@ def device_install(): else: status, output =log_os_system("echo optoe2 0x50 > " + path, 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -276,7 +276,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -289,7 +289,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -303,41 +303,41 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -395,11 +395,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -420,15 +420,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system(hex_cmd +" -C "+node, 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -462,10 +462,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -505,25 +505,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/fanutil.py index 91ca21aa528e..affed9ad804d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/fanutil.py @@ -193,7 +193,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -212,7 +212,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) fan_file.close() diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/thermalutil.py index 9087ff1c38f4..5cf9c6fdd3f5 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/classes/thermalutil.py @@ -27,7 +27,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) @@ -37,14 +37,14 @@ def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) if show: - print "ACC: " + str(cmd) + " , result:"+ str(status) + print("ACC: " + str(cmd) + " , result:"+ str(status)) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output @@ -116,7 +116,7 @@ def _get_thermal_val(self, thermal_num): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return 0 file_str = check_file.read() search_str="average current temperature is" diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/modules/accton_as7326_56x_leds.c b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/modules/accton_as7326_56x_leds.c index 54df5b09eea8..7214ae55d3f9 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/modules/accton_as7326_56x_leds.c +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/modules/accton_as7326_56x_leds.c @@ -44,7 +44,7 @@ struct accton_as7326_56x_led_data { struct mutex update_lock; char valid; /* != 0 if registers are valid */ unsigned long last_updated; /* In jiffies */ - u8 reg_val[1]; /* only 1 register*/ + u8 reg_val[2]; }; static struct accton_as7326_56x_led_data *ledctl = NULL; @@ -54,16 +54,24 @@ static struct accton_as7326_56x_led_data *ledctl = NULL; #define LED_CNTRLER_I2C_ADDRESS (0x60) -#define LED_TYPE_DIAG_REG_MASK (0x3) -#define LED_MODE_DIAG_GREEN_VALUE (0x02) -#define LED_MODE_DIAG_RED_VALUE (0x01) -#define LED_MODE_DIAG_AMBER_VALUE (0x00) /*It's yellow actually. Green+Red=Yellow*/ -#define LED_MODE_DIAG_OFF_VALUE (0x03) - - -#define LED_TYPE_LOC_REG_MASK (0x80) -#define LED_MODE_LOC_ON_VALUE (0) -#define LED_MODE_LOC_OFF_VALUE (0x80) +#define LED_TYPE_DIAG_REG_MASK (0x3f) +#define LED_MODE_DIAG_GREEN_VALUE (0x05) +#define LED_MODE_DIAG_RED_VALUE (0x06) +#define LED_MODE_DIAG_BLUE_VALUE (0x03) +#define LED_MODE_DIAG_GREEN_BLINK_VALUE (0x17) +#define LED_MODE_DIAG_RED_BLINK_VALUE (0x0d) +#define LED_MODE_DIAG_BLUE_BLINK_VALUE (0x27) + +#define LED_MODE_DIAG_OFF_VALUE (0x07) + +#define LED_TYPE_LOC_REG_MASK (0x3f) +#define LED_MODE_LOC_GREEN_VALUE (0x05) +#define LED_MODE_LOC_RED_VALUE (0x06) +#define LED_MODE_LOC_BLUE_VALUE (0x03) +#define LED_MODE_LOC_GREEN_BLINK_VALUE (0x17) +#define LED_MODE_LOC_RED_BLINK_VALUE (0x0d) +#define LED_MODE_LOC_BLUE_BLINK_VALUE (0x27) +#define LED_MODE_LOC_OFF_VALUE (0x07) enum led_type { LED_TYPE_DIAG, @@ -79,7 +87,8 @@ struct led_reg { }; static const struct led_reg led_reg_map[] = { - {(1<reg_val[0]); + return led_reg_val_to_light_mode(LED_TYPE_LOC, ledctl->reg_val[1]); } static void accton_as7326_56x_led_auto_set(struct led_classdev *led_cdev, @@ -287,7 +307,7 @@ static struct led_classdev accton_as7326_56x_leds[] = { .brightness_set = accton_as7326_56x_led_diag_set, .brightness_get = accton_as7326_56x_led_diag_get, .flags = LED_CORE_SUSPENDRESUME, - .max_brightness = LED_MODE_RED, + .max_brightness = LED_MODE_BLUE_BLINK, }, [LED_TYPE_LOC] = { .name = "accton_as7326_56x_led::loc", @@ -295,7 +315,7 @@ static struct led_classdev accton_as7326_56x_leds[] = { .brightness_set = accton_as7326_56x_led_loc_set, .brightness_get = accton_as7326_56x_led_loc_get, .flags = LED_CORE_SUSPENDRESUME, - .max_brightness = LED_MODE_BLUE, + .max_brightness = LED_MODE_BLUE_BLINK, }, [LED_TYPE_FAN] = { .name = "accton_as7326_56x_led::fan", diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor.py index 07ec446ab88e..56f1bd585428 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor.py @@ -282,11 +282,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -295,7 +295,7 @@ def main(argv): if sys.argv[1]== '-t': if len(sys.argv)!=8: - print "temp test, need input six temp" + print("temp test, need input six temp") return 0 i=0 @@ -304,11 +304,11 @@ def main(argv): i=i+1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(38) - print "set default fan speed to 37.5%" + print("set default fan speed to 37.5%") monitor = device_monitor(log_file, log_level) # Loop forever, doing something useful hopefully: while True: diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_fan.py index b52ada307698..905bd837d393 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_fan.py @@ -133,7 +133,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -152,7 +152,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -174,11 +174,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_psu.py index cb897b942aeb..56b7ee30c41d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_monitor_psu.py @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -138,7 +138,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -164,11 +164,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_pddf_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_pddf_monitor.py index 1e9b2c7d35e5..faa4f7d48b15 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_pddf_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_pddf_monitor.py @@ -268,11 +268,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdlt:', ['lfile=']) except getopt.GetoptError: - print('Usage: %s [-d] [-l ]' % sys.argv[0]) + print(('Usage: %s [-d] [-l ]' % sys.argv[0])) return 0 for opt, arg in opts: if opt == '-h': - print('Usage: %s [-d] [-l ]' % sys.argv[0]) + print(('Usage: %s [-d] [-l ]' % sys.argv[0])) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_util.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_util.py index c5d047e9d4e0..997f8a64359d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/accton_as7326_util.py @@ -39,7 +39,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -62,8 +62,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -79,9 +79,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -121,28 +121,28 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-56 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-56 {0|1}\" to set sfp# tx_disable") sys.exit(0) def dis_i2c_ir3570a(addr): cmd = "i2cset -y 0 0x%x 0xE5 0x01" % addr - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) cmd = "i2cset -y 0 0x%x 0x12 0x02" % addr - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) return status def ir3570_check(): cmd = "i2cdump -y 0 0x42 s 0x9a" try: - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) lines = output.split('\n') hn = re.findall(r'\w+', lines[-1]) version = int(hn[1], 16) @@ -151,30 +151,30 @@ def ir3570_check(): else: ret = 0 except Exception as e: - print "Error on ir3570_check() e:" + str(e) + print("Error on ir3570_check() e:" + str(e)) return -1 return ret def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-56 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-56 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ROY]"+txt + print("[ROY]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -306,7 +306,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -317,7 +317,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): @@ -326,7 +326,7 @@ def device_install(): else: status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -344,7 +344,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -360,7 +360,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -374,43 +374,43 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") ir3570_check() if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -466,11 +466,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -493,15 +493,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -535,10 +535,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -577,24 +577,24 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/pddf_switch_svc.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/pddf_switch_svc.py index ad492cfaf56f..1b5f46ef0e1d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/pddf_switch_svc.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/utils/pddf_switch_svc.py @@ -2,91 +2,91 @@ # Script to stop and start the respective platforms default services. # This will be used while switching the pddf->non-pddf mode and vice versa -import commands +import subprocess def check_pddf_support(): return True def stop_platform_svc(): - status, output = commands.getstatusoutput("systemctl stop as7326-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl stop as7326-platform-monitor-fan.service") if status: - print "Stop as7326-platform-fan.service failed %d"%status + print("Stop as7326-platform-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as7326-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl stop as7326-platform-monitor-psu.service") if status: - print "Stop as7326-platform-psu.service failed %d"%status + print("Stop as7326-platform-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as7326-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl stop as7326-platform-monitor.service") if status: - print "Stop as7326-platform-init.service failed %d"%status + print("Stop as7326-platform-init.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl disable as7326-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl disable as7326-platform-monitor.service") if status: - print "Disable as7326-platform-monitor.service failed %d"%status + print("Disable as7326-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7326_util.py clean") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7326_util.py clean") if status: - print "accton_as7326_util.py clean command failed %d"%status + print("accton_as7326_util.py clean command failed %d"%status) return False # HACK , stop the pddf-platform-init service if it is active - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service along with other platform serives failed %d"%status + print("Stop pddf-platform-init.service along with other platform serives failed %d"%status) return False return True def start_platform_svc(): - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7326_util.py install") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7326_util.py install") if status: - print "accton_as7326_util.py install command failed %d"%status + print("accton_as7326_util.py install command failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl enable as7326-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl enable as7326-platform-monitor.service") if status: - print "Enable as7326-platform-monitor.service failed %d"%status + print("Enable as7326-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as7326-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl start as7326-platform-monitor-fan.service") if status: - print "Start as7326-platform-monitor-fan.service failed %d"%status + print("Start as7326-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as7326-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl start as7326-platform-monitor-psu.service") if status: - print "Start as7326-platform-monitor-psu.service failed %d"%status + print("Start as7326-platform-monitor-psu.service failed %d"%status) return False return True def start_platform_pddf(): - status, output = commands.getstatusoutput("systemctl start pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl start pddf-platform-init.service") if status: - print "Start pddf-platform-init.service failed %d"%status + print("Start pddf-platform-init.service failed %d"%status) return False return True def stop_platform_pddf(): - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service failed %d"%status + print("Stop pddf-platform-init.service failed %d"%status) return False return True def main(): - print"stop_platform_svc" + print("stop_platform_svc") stop_platform_svc() #print"start_platform_svc" #start_platform_svc() #print"start_platform_pddf" #start_platform_pddf() - print"stop_platform_pddf" + print("stop_platform_pddf") stop_platform_pddf() #pass diff --git a/platform/broadcom/sonic-platform-modules-accton/as7712-32x/utils/accton_as7712_util.py b/platform/broadcom/sonic-platform-modules-accton/as7712-32x/utils/accton_as7712_util.py index 8ebc39e6c9c1..c519525d6dd1 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7712-32x/utils/accton_as7712_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7712-32x/utils/accton_as7712_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -53,8 +53,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -70,9 +70,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -112,36 +112,36 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ROY]"+txt + print("[ROY]"+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -276,7 +276,7 @@ def device_install(): status, output = log_os_system(mknod2[i], 1) if status: - print output + print(output) if FORCE == 0: return status else: @@ -287,13 +287,13 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -311,7 +311,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -327,7 +327,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -341,40 +341,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_check() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_check()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -427,11 +427,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -454,15 +454,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -496,10 +496,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -539,25 +539,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/classes/fanutil.py index 9a69f6e1d537..469b2fbfb4c3 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/classes/fanutil.py @@ -194,7 +194,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -213,7 +213,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False #val = ((val + 1 ) * 625 +75 ) / 100 fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_monitor.py index c423cc441d92..f9686f846efb 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_monitor.py @@ -179,11 +179,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_util.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_util.py index 142ce754a5c7..6322aac6bbd7 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32x/utils/accton_as7716_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -149,8 +149,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -166,9 +166,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -208,28 +208,28 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def dis_i2c_ir3570a(addr): cmd = "i2cset -y 0 0x%x 0xE5 0x01" % addr - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) cmd = "i2cset -y 0 0x%x 0x12 0x02" % addr - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) return status def ir3570_check(): cmd = "i2cdump -y 0 0x42 s 0x9a" try: - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) lines = output.split('\n') hn = re.findall(r'\w+', lines[-1]) version = int(hn[1], 16) @@ -238,32 +238,32 @@ def ir3570_check(): else: ret = 0 except Exception as e: - print "Error on ir3570_check() e:" + str(e) + print("Error on ir3570_check() e:" + str(e)) return -1 return ret def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -341,19 +341,19 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status status, output =log_os_system("echo port"+str(i)+" > /sys/bus/i2c/devices/"+str(sfp_map[i])+"-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status return @@ -371,7 +371,7 @@ def device_uninstall(): target = "/sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/delete_device" status, output =log_os_system("echo 0x50 > "+ target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -387,7 +387,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -397,7 +397,7 @@ def system_ready(): if driver_inserted() == False: return False if not device_exist(): - print "not device_exist()" + print("not device_exist()") return False return True @@ -408,7 +408,7 @@ def do_install(): if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") ir3570_check() @@ -418,23 +418,23 @@ def do_install(): if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -487,11 +487,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -514,15 +514,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -556,10 +556,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -599,25 +599,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/classes/fanutil.py index e001e94092c7..381b787e0d80 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/classes/fanutil.py @@ -202,7 +202,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -221,7 +221,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False #val = ((val + 1 ) * 625 +75 ) / 100 fan_file.write(str(val)) @@ -237,7 +237,7 @@ def get_fanr_speed(self, fan_num): def get_fan_status(self, fan_num): if fan_num < self.FAN_NUM_1_IDX or fan_num > self.FAN_NUM_ON_MAIN_BROAD: logging.debug('GET. Parameter error. fan_num, %d', fan_num) - print "fan %d return none" %fan_num + print("fan %d return none" %fan_num) return None if self.get_fan_fault(fan_num) is not None and self.get_fan_fault(fan_num) > 0: diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_drv_handler.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_drv_handler.py index ed5af4818de3..83e26c03a4e5 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_drv_handler.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_drv_handler.py @@ -27,7 +27,7 @@ import logging import logging.config import time # this is only being used as part of the example - import commands + import subprocess except ImportError as e: raise ImportError('%s - required module not found' % str(e)) @@ -41,25 +41,25 @@ def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) if DEBUG == True: my_log (cmd +" , result:" + str(status)) else: if show: - print "ACC: " + str(cmd) + " , result:"+ str(status) + print("ACC: " + str(cmd) + " , result:"+ str(status)) #my_log ("cmd:" + cmd) #my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output @@ -120,7 +120,7 @@ def __init__(self, log_file, log_level): def manage_ipmi_qsfp(self): logging.debug ("drv hanlder-manage_ipmi_qsfp") - print "drv hanlder" + print("drv hanlder") #Handle QSFP case ipmi_cmd = self.IPMI_CMD_QSFP + " 0x10 > " +self.QSFP_PRESENT_FILE log_os_system(ipmi_cmd, 0) @@ -129,7 +129,7 @@ def manage_ipmi_qsfp(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() pres_line= line.rstrip().replace(" ","") while line: @@ -158,7 +158,7 @@ def manage_ipmi_qsfp(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line= line.rstrip().replace(" ","") while line: @@ -170,7 +170,7 @@ def manage_ipmi_qsfp(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line+= line.rstrip().replace(" ","") @@ -209,7 +209,7 @@ def manage_ipmi_thermal(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line= line.rstrip().replace(" ","") while line: @@ -244,7 +244,7 @@ def manage_ipmi_fan(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line= line.rstrip().replace(" ","") while line: @@ -293,7 +293,7 @@ def manage_ipmi_psu(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line= line.rstrip().replace(" ","") while line: @@ -366,7 +366,7 @@ def manage_ipmi_sys(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line= line.rstrip().replace(" ","") while line: @@ -379,7 +379,7 @@ def manage_ipmi_sys(self): try: check_file = open(file_path) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) line = check_file.readline() str_line+= line.rstrip().replace(" ","") while line: @@ -401,11 +401,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_monitor.py index 86b4f1852066..ccaa6e574141 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_monitor.py @@ -199,11 +199,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_util.py b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_util.py index 3a31d253f633..bb1343f68433 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7716-32xb/utils/accton_as7716_32xb_util.py @@ -30,7 +30,7 @@ set : change board setting with fan|led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -145,8 +145,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -162,9 +162,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -204,39 +204,39 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp|fan]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " fan 0-100\" to set fan duty percetage" - print " use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp|fan]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " fan 0-100\" to set fan duty percetage") + print(" use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -316,22 +316,22 @@ def device_install(): # if FORCE == 0: # return status #else: - print "Prepar to create instance.............." + print("Prepar to create instance..............") for i in range(0,len(mknod_xb)): - print "Beginn to create instance.............." + print("Beginn to create instance..............") status, output = log_os_system(mknod_xb[i], 1) - print "status=%s" %status - print "output=%s" %output + print("status=%s" %status) + print("output=%s" %output) if status: - print output + print(output) if FORCE == 0: return status #time.sleep (50.0 / 1000.0) - print "Create sfp instance.............." + print("Create sfp instance..............") for i in range(0,len(sfp_map)): status, output =log_os_system("echo as7716_32xb_oom 0x"+str(sfp_map[i])+ " > /sys/bus/i2c/devices/i2c-0/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status #status, output =log_os_system("echo port"+str(i)+" > /sys/bus/i2c/devices/0-000"+str(sfp_map[i])+"/port_name", 1) @@ -349,7 +349,7 @@ def device_uninstall(): print(target) status, output =log_os_system(target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -362,7 +362,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -370,48 +370,48 @@ def device_uninstall(): def system_ready(): if driver_inserted() == False: - print "driver_inserted() == False" + print("driver_inserted() == False") return False if not device_exist(): - print "not device_exist()" + print("not device_exist()") return False return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_inserted() == False: - print "No driver, installing.1..." + print("No driver, installing.1...") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing..2.." + print("No device, installing..2..") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking systemm...." + print("Checking systemm....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -443,13 +443,13 @@ def devices_info(): for k in range(0,DEVICE_NO[key]): node = key+str(k+1) path = i2c_prefix+ str(sfp_map[k])+ buses[i]+"/"+ nodes[j] - print "path= %s" %path - print "i=%d" %i - print "k=%d" %k - print "j= %d" %j - print "sfp_map[k]=%s" %sfp_map[k] - print " buses[i]=%s" %buses[i] - print "nodes[j]=%s" %nodes[j] + print("path= %s" %path) + print("i=%d" %i) + print("k=%d" %k) + print("j= %d" %j) + print("sfp_map[k]=%s" %sfp_map[k]) + print(" buses[i]=%s" %buses[i]) + print("nodes[j]=%s" %nodes[j]) my_log(node+": "+ path) ALL_DEVICE[key][node].append(path) else: @@ -471,11 +471,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -498,15 +498,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -540,10 +540,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan1_duty_cycle_percentage') ret, log = log_os_system("cat "+ node, 1) if ret==0: - print ("Previous fan duty: " + log.strip() +"%") + print(("Previous fan duty: " + log.strip() +"%")) ret, log = log_os_system("echo "+args[1]+" >"+node, 1) if ret==0: - print ("Current fan duty: " + args[1] +"%") + print(("Current fan duty: " + args[1] +"%")) return ret elif args[0]=='sfp': if int(args[1])> DEVICE_NO[args[0]] or int(args[1])==0: @@ -583,25 +583,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/fanutil.py index ca0f3f9da1e3..164bdc22b81d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/fanutil.py @@ -191,7 +191,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -210,7 +210,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False #val = ((val + 1 ) * 625 +75 ) / 100 fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/thermalutil.py index 35ccf7efdd1e..66f5455e11ba 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/classes/thermalutil.py @@ -28,7 +28,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor.py index aada6ba5c507..f506b72f83ab 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor.py @@ -291,11 +291,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -304,7 +304,7 @@ def main(argv): if sys.argv[1]== '-t': if len(sys.argv)!=7: - print "temp test, need input six temp" + print("temp test, need input six temp") return 0 i=0 @@ -313,11 +313,11 @@ def main(argv): i=i+1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(38) - print "set default fan speed to 37.5%" + print("set default fan speed to 37.5%") monitor = device_monitor(log_file, log_level) # Loop forever, doing something useful hopefully: while True: diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_fan.py index a2139341150c..cf86a14adc3d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_fan.py @@ -130,7 +130,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -149,7 +149,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -171,11 +171,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_psu.py index d139e3f3f1c8..8527df743dae 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_monitor_psu.py @@ -96,7 +96,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -143,11 +143,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_pddf_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_pddf_monitor.py index fd3f55995878..fd283cd6cc2b 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_pddf_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_pddf_monitor.py @@ -279,11 +279,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print('Usage: %s [-d] [-l ]' % sys.argv[0]) + print(('Usage: %s [-d] [-l ]' % sys.argv[0])) return 0 for opt, arg in opts: if opt == '-h': - print('Usage: %s [-d] [-l ]' % sys.argv[0]) + print(('Usage: %s [-d] [-l ]' % sys.argv[0])) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_util.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_util.py index b6d3c02935e0..bee413fe0655 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/accton_as7726_32x_util.py @@ -100,8 +100,8 @@ if DEBUG == True: - print(sys.argv[0]) - print('ARGV :', sys.argv[1:]) + print((sys.argv[0])) + print(('ARGV :', sys.argv[1:])) def main(): @@ -119,7 +119,7 @@ def main(): if DEBUG == True: print(options) print(args) - print(len(sys.argv)) + print((len(sys.argv))) for opt, arg in options: if opt in ('-h', '--help'): @@ -143,7 +143,7 @@ def main(): return 0 def show_help(): - print( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) + print(( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]})) sys.exit(0) def dis_i2c_ir3570a(addr): @@ -165,14 +165,14 @@ def ir3570_check(): else: ret = 0 except Exception as e: - print( "Error on ir3570_check() e:" + str(e)) + print(( "Error on ir3570_check() e:" + str(e))) return -1 return ret def my_log(txt): if DEBUG == True: - print("[ACCTON DBG]: ",txt) + print(("[ACCTON DBG]: ",txt)) return def log_os_system(cmd, show): @@ -186,7 +186,7 @@ def log_os_system(cmd, show): if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -325,7 +325,7 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" drivers detected....") + print((PROJECT_NAME.upper()+" drivers detected....")) ir3570_check() @@ -335,12 +335,12 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" devices detected....") + print((PROJECT_NAME.upper()+" devices detected....")) return def do_uninstall(): if not device_exist(): - print(PROJECT_NAME.upper()+" has no device installed....") + print((PROJECT_NAME.upper()+" has no device installed....")) else: print("Removing device....") status = device_uninstall() @@ -349,7 +349,7 @@ def do_uninstall(): return status if driver_inserted()== False : - print(PROJECT_NAME.upper()+" has no driver installed....") + print((PROJECT_NAME.upper()+" has no driver installed....")) else: print("Removing installed driver....") status = driver_uninstall() diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/pddf_switch_svc.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/pddf_switch_svc.py index 9022132859f3..9664d21b6c36 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/pddf_switch_svc.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/utils/pddf_switch_svc.py @@ -2,95 +2,95 @@ # Script to stop and start the respective platforms default services. # This will be used while switching the pddf->non-pddf mode and vice versa -import commands +import subprocess def check_pddf_support(): return True def stop_platform_svc(): - status, output = commands.getstatusoutput("systemctl stop as7726-32x-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl stop as7726-32x-platform-monitor-fan.service") if status: - print "Stop as7726-32x-platform-monitor-fan.service failed %d"%status + print("Stop as7726-32x-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl disable as7726-32x-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl disable as7726-32x-platform-monitor-fan.service") if status: - print "Disable as7726-32x-platform-monitor-fan.service failed %d"%status + print("Disable as7726-32x-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as7726-32x-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl stop as7726-32x-platform-monitor-psu.service") if status: - print "Stop as7726-32x-platform-monitor-psu.service failed %d"%status + print("Stop as7726-32x-platform-monitor-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl disable as7726-32x-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl disable as7726-32x-platform-monitor-psu.service") if status: - print "Disable as7726-32x-platform-monitor-psu.service failed %d"%status + print("Disable as7726-32x-platform-monitor-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as7726-32x-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl stop as7726-32x-platform-monitor.service") if status: - print "Stop as7726-32x-platform-monitor.service failed %d"%status + print("Stop as7726-32x-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl disable as7726-32x-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl disable as7726-32x-platform-monitor.service") if status: - print "Disable as7726-32x-platform-monitor.service failed %d"%status + print("Disable as7726-32x-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7726_32x_util.py clean") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7726_32x_util.py clean") if status: - print "accton_as7726_32x_util.py clean command failed %d"%status + print("accton_as7726_32x_util.py clean command failed %d"%status) return False # HACK , stop the pddf-platform-init service if it is active - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service along with other platform serives failed %d"%status + print("Stop pddf-platform-init.service along with other platform serives failed %d"%status) return False return True def start_platform_svc(): - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7726_32x_util.py install") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7726_32x_util.py install") if status: - print "accton_as7726_32x_util.py install command failed %d"%status + print("accton_as7726_32x_util.py install command failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl enable as7726-32x-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl enable as7726-32x-platform-monitor-fan.service") if status: - print "Enable as7726-32x-platform-monitor-fan.service failed %d"%status + print("Enable as7726-32x-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as7726-32x-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl start as7726-32x-platform-monitor-fan.service") if status: - print "Start as7726-32x-platform-monitor-fan.service failed %d"%status + print("Start as7726-32x-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl enable as7726-32x-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl enable as7726-32x-platform-monitor-psu.service") if status: - print "Enable as7726-32x-platform-monitor-psu.service failed %d"%status + print("Enable as7726-32x-platform-monitor-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as7726-32x-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl start as7726-32x-platform-monitor-psu.service") if status: - print "Start as7726-32x-platform-monitor-psu.service failed %d"%status + print("Start as7726-32x-platform-monitor-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl enable as7726-32x-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl enable as7726-32x-platform-monitor.service") if status: - print "Enable as7726-32x-platform-monitor.service failed %d"%status + print("Enable as7726-32x-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as7726-32x-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl start as7726-32x-platform-monitor.service") if status: - print "Start as7726-32x-platform-monitor.service failed %d"%status + print("Start as7726-32x-platform-monitor.service failed %d"%status) return False return True def start_platform_pddf(): - status, output = commands.getstatusoutput("systemctl start pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl start pddf-platform-init.service") if status: - print "Start pddf-platform-init.service failed %d"%status + print("Start pddf-platform-init.service failed %d"%status) return False return True def stop_platform_pddf(): - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service failed %d"%status + print("Stop pddf-platform-init.service failed %d"%status) return False return True diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/classes/fanutil.py index 42ccb17eaa06..f4807487bf38 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/classes/fanutil.py @@ -185,7 +185,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -204,7 +204,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) fan_file.close() diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_monitor.py index 217351ad2a3c..d98cec58d2e5 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_monitor.py @@ -136,11 +136,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_pddf_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_pddf_monitor.py index a7fc6df09966..8d64cc961706 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_pddf_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_pddf_monitor.py @@ -167,11 +167,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdlt:', ['lfile=']) except getopt.GetoptError: - print("Usage: %s [-d] [-l ]" % sys.argv[0]) + print(("Usage: %s [-d] [-l ]" % sys.argv[0])) return 0 for opt, arg in opts: if opt == '-h': - print("Usage: %s [-d] [-l ]" % sys.argv[0]) + print(("Usage: %s [-d] [-l ]" % sys.argv[0])) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_util.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_util.py index 0d3a47b8ba76..525f2786647e 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/accton_as7816_util.py @@ -48,8 +48,8 @@ if DEBUG == True: - print(sys.argv[0]) - print('ARGV :', sys.argv[1:] ) + print((sys.argv[0])) + print(('ARGV :', sys.argv[1:] )) def main(): @@ -67,7 +67,7 @@ def main(): if DEBUG == True: print(options) print(args) - print(len(sys.argv)) + print((len(sys.argv))) for opt, arg in options: if opt in ('-h', '--help'): @@ -91,7 +91,7 @@ def main(): return 0 def show_help(): - print( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) + print(( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]})) sys.exit(0) @@ -114,13 +114,13 @@ def ir3570_check(): else: ret = 0 except Exception as e: - print("Error on ir3570_check() e:" + str(e)) + print(("Error on ir3570_check() e:" + str(e))) return -1 return ret def my_log(txt): if DEBUG == True: - print("[ROY]"+txt) + print(("[ROY]"+txt)) return def log_os_system(cmd, show): @@ -131,7 +131,7 @@ def log_os_system(cmd, show): if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_check(): @@ -308,7 +308,7 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" drivers detected....") + print((PROJECT_NAME.upper()+" drivers detected....")) ir3570_check() @@ -319,13 +319,13 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" devices detected....") + print((PROJECT_NAME.upper()+" devices detected....")) return def do_uninstall(): print("Checking system....") if not device_exist(): - print(PROJECT_NAME.upper() +" has no device installed....") + print((PROJECT_NAME.upper() +" has no device installed....")) else: print("Removing device....") status = device_uninstall() @@ -334,7 +334,7 @@ def do_uninstall(): return status if driver_check()== False : - print(PROJECT_NAME.upper() +" has no driver installed....") + print((PROJECT_NAME.upper() +" has no driver installed....")) else: print("Removing installed driver....") status = driver_uninstall() diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/pddf_switch_svc.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/pddf_switch_svc.py index 0c9508f76104..98bf05eca115 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/pddf_switch_svc.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/utils/pddf_switch_svc.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # Script to stop and start the respective platforms default services. # This will be used while switching the pddf->non-pddf mode and vice versa -import commands +import subprocess def check_pddf_support(): @@ -10,56 +10,56 @@ def check_pddf_support(): def stop_platform_svc(): - status, output = commands.getstatusoutput("systemctl stop as7816-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop as7816-platform-init.service") if status: - print("Stop as7816-platform-init.service failed %d" % status) + print(("Stop as7816-platform-init.service failed %d" % status)) return False - status, output = commands.getstatusoutput("systemctl disable as7816-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl disable as7816-platform-init.service") if status: - print("Disable as7816-platform-init.service failed %d" % status) + print(("Disable as7816-platform-init.service failed %d" % status)) return False - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7816_util.py clean") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7816_util.py clean") if status: - print("accton_as7816_util.py clean command failed %d" % status) + print(("accton_as7816_util.py clean command failed %d" % status)) return False # HACK , stop the pddf-platform-init service if it is active - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print("Stop pddf-platform-init.service along with other platform serives failed %d" % status) + print(("Stop pddf-platform-init.service along with other platform serives failed %d" % status)) return False return True def start_platform_svc(): - status, output = commands.getstatusoutput("/usr/local/bin/accton_as7816_util.py install") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as7816_util.py install") if status: - print("accton_as7816_util.py install command failed %d" % status) + print(("accton_as7816_util.py install command failed %d" % status)) return False - status, output = commands.getstatusoutput("systemctl enable as7816-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl enable as7816-platform-init.service") if status: - print("Enable as7816-platform-init.service failed %d" % status) + print(("Enable as7816-platform-init.service failed %d" % status)) return False return True def start_platform_pddf(): - status, output = commands.getstatusoutput("systemctl start pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl start pddf-platform-init.service") if status: - print("Start pddf-platform-init.service failed %d" % status) + print(("Start pddf-platform-init.service failed %d" % status)) return False return True def stop_platform_pddf(): - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print("Stop pddf-platform-init.service failed %d" % status) + print(("Stop pddf-platform-init.service failed %d" % status)) return False return True diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/fanutil.py index 52889cd5895d..2afbf905a390 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/fanutil.py @@ -184,7 +184,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -196,7 +196,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/thermalutil.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/thermalutil.py index abbc5e819a8a..5f6af3811f01 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/thermalutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/classes/thermalutil.py @@ -24,7 +24,7 @@ import time import logging import glob - import commands + import subprocess from collections import namedtuple except ImportError as e: raise ImportError('%s - required module not found' % str(e)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor.py index 1cc35e577b8d..f0eb95d97f88 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor.py @@ -20,7 +20,7 @@ # ------------------------------------------------------------------ try: - import commands + import subprocess import getopt, sys import logging import logging.config @@ -184,7 +184,7 @@ def match(self, *args): def power_off_dut(): cmd_str="i2cset -y -f 19 0x60 0x60 0x10" - status, output = commands.getstatusoutput(cmd_str) + status, output = subprocess.getstatusoutput(cmd_str) return status #If only one PSU insert(or one of PSU pwoer fail), and watt >800w. Must let DUT fan pwm >= 75% in AFO. @@ -493,11 +493,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -506,7 +506,7 @@ def main(argv): if sys.argv[1]== '-t': if len(sys.argv)!=10: - print "temp test, need input 8 temp" + print("temp test, need input 8 temp") return 0 i=0 for x in range(2, 10): @@ -514,7 +514,7 @@ def main(argv): i=i+1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(100) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_fan.py index b22dd5d7984d..8c2b79ac3d6d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_fan.py @@ -130,7 +130,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -149,7 +149,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -171,11 +171,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_psu.py index a3c8a0be65b3..d8327d9a97eb 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_monitor_psu.py @@ -96,7 +96,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -117,7 +117,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -143,11 +143,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_pddf_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_pddf_monitor.py index dff2d5ffe812..fa08071045f5 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_pddf_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_pddf_monitor.py @@ -178,7 +178,7 @@ def match(self, *args): def as9716_32d_set_fan_speed(pwm): if pwm < 0 or pwm > 100: - print("Error: Wrong duty cycle value %d" % (pwm)) + print(("Error: Wrong duty cycle value %d" % (pwm))) return -1 platform_chassis.get_fan(0).set_speed(pwm) time.sleep(1) @@ -477,11 +477,11 @@ def main(argv): try: opts, args = getopt.getopt(argv, 'hdlt:', ['lfile=']) except getopt.GetoptError: - print("Usage: %s [-d] [-l ]" % sys.argv[0]) + print(("Usage: %s [-d] [-l ]" % sys.argv[0])) return 0 for opt, arg in opts: if opt == '-h': - print("Usage: %s [-d] [-l ]" % sys.argv[0]) + print(("Usage: %s [-d] [-l ]" % sys.argv[0])) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_util.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_util.py index 8eabc233fb2d..647e26e07d2c 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/accton_as9716_32d_util.py @@ -106,8 +106,8 @@ if DEBUG == True: - print(sys.argv[0]) - print('ARGV :', sys.argv[1:]) + print((sys.argv[0])) + print(('ARGV :', sys.argv[1:])) def main(): @@ -125,7 +125,7 @@ def main(): if DEBUG == True: print(options) print(args) - print(len(sys.argv)) + print((len(sys.argv))) for opt, arg in options: if opt in ('-h', '--help'): @@ -149,7 +149,7 @@ def main(): return 0 def show_help(): - print( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) + print(( __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]})) sys.exit(0) def dis_i2c_ir3570a(addr): @@ -171,14 +171,14 @@ def ir3570_check(): else: ret = 0 except Exception as e: - print( "Error on ir3570_check() e:" + str(e)) + print(( "Error on ir3570_check() e:" + str(e))) return -1 return ret def my_log(txt): if DEBUG == True: - print("[ACCTON DBG]: "+txt) + print(("[ACCTON DBG]: "+txt)) return def log_os_system(cmd, show): @@ -192,7 +192,7 @@ def log_os_system(cmd, show): if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -345,7 +345,7 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" drivers detected....") + print((PROJECT_NAME.upper()+" drivers detected....")) ir3570_check() @@ -355,12 +355,12 @@ def do_install(): if FORCE == 0: return status else: - print(PROJECT_NAME.upper()+" devices detected....") + print((PROJECT_NAME.upper()+" devices detected....")) return def do_uninstall(): if not device_exist(): - print(PROJECT_NAME.upper()+" has no device installed....") + print((PROJECT_NAME.upper()+" has no device installed....")) else: print("Removing device....") status = device_uninstall() @@ -369,7 +369,7 @@ def do_uninstall(): return status if driver_inserted()== False : - print(PROJECT_NAME.upper()+" has no driver installed....") + print((PROJECT_NAME.upper()+" has no driver installed....")) else: print("Removing installed driver....") status = driver_uninstall() diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/pddf_switch_svc.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/pddf_switch_svc.py index 3e684a42daca..95e42b5c8971 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/pddf_switch_svc.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/utils/pddf_switch_svc.py @@ -1,81 +1,81 @@ #!/usr/bin/env python # Script to stop and start the respective platforms default services. # This will be used while switching the pddf->non-pddf mode and vice versa -import commands +import subprocess def check_pddf_support(): return True def stop_platform_svc(): - status, output = commands.getstatusoutput("systemctl stop as9716-32d-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl stop as9716-32d-platform-monitor-fan.service") if status: - print "Stop as9716-32d-platform-fan.service failed %d"%status + print("Stop as9716-32d-platform-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as9716-32d-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl stop as9716-32d-platform-monitor-psu.service") if status: - print "Stop as9716-32d-platform-psu.service failed %d"%status + print("Stop as9716-32d-platform-psu.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl stop as9716-32d-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl stop as9716-32d-platform-monitor.service") if status: - print "Stop as9716-32d-platform-init.service failed %d"%status + print("Stop as9716-32d-platform-init.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl disable as9716-32d-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl disable as9716-32d-platform-monitor.service") if status: - print "Disable as9716-32d-platform-monitor.service failed %d"%status + print("Disable as9716-32d-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("/usr/local/bin/accton_as9716_32d_util.py clean") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as9716_32d_util.py clean") if status: - print "accton_as9716_32d_util.py clean command failed %d"%status + print("accton_as9716_32d_util.py clean command failed %d"%status) return False # HACK , stop the pddf-platform-init service if it is active - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service along with other platform serives failed %d"%status + print("Stop pddf-platform-init.service along with other platform serives failed %d"%status) return False return True def start_platform_svc(): - status, output = commands.getstatusoutput("/usr/local/bin/accton_as9716_32d_util.py install") + status, output = subprocess.getstatusoutput("/usr/local/bin/accton_as9716_32d_util.py install") if status: - print "accton_as9716_32d_util.py install command failed %d"%status + print("accton_as9716_32d_util.py install command failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl enable as9716-32d-platform-monitor.service") + status, output = subprocess.getstatusoutput("systemctl enable as9716-32d-platform-monitor.service") if status: - print "Enable as9716-32d-platform-monitor.service failed %d"%status + print("Enable as9716-32d-platform-monitor.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as9716-32d-platform-monitor-fan.service") + status, output = subprocess.getstatusoutput("systemctl start as9716-32d-platform-monitor-fan.service") if status: - print "Start as9716-32d-platform-monitor-fan.service failed %d"%status + print("Start as9716-32d-platform-monitor-fan.service failed %d"%status) return False - status, output = commands.getstatusoutput("systemctl start as9716-32d-platform-monitor-psu.service") + status, output = subprocess.getstatusoutput("systemctl start as9716-32d-platform-monitor-psu.service") if status: - print "Start as9716-32d-platform-monitor-psu.service failed %d"%status + print("Start as9716-32d-platform-monitor-psu.service failed %d"%status) return False return True def start_platform_pddf(): - status, output = commands.getstatusoutput("systemctl start pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl start pddf-platform-init.service") if status: - print "Start pddf-platform-init.service failed %d"%status + print("Start pddf-platform-init.service failed %d"%status) return False return True def stop_platform_pddf(): - status, output = commands.getstatusoutput("systemctl stop pddf-platform-init.service") + status, output = subprocess.getstatusoutput("systemctl stop pddf-platform-init.service") if status: - print "Stop pddf-platform-init.service failed %d"%status + print("Stop pddf-platform-init.service failed %d"%status) return False return True diff --git a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/classes/fanutil.py b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/classes/fanutil.py index 1231b458801e..4d6e177edc83 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/classes/fanutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/classes/fanutil.py @@ -182,7 +182,7 @@ def get_fan_duty_cycle(self): try: val_file = open(self.FAN_DUTY_PATH) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() @@ -194,7 +194,7 @@ def set_fan_duty_cycle(self, val): try: fan_file = open(self.FAN_DUTY_PATH, 'r+') except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False fan_file.write(str(val)) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor.py b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor.py index 9d91e942baa2..da399becbafb 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor.py @@ -20,7 +20,7 @@ # ------------------------------------------------------------------ try: - import commands + import subprocess import getopt import sys import logging @@ -205,7 +205,7 @@ def match(self, *args): def power_off_dut(): cmd_str="i2cset -y -f 1 0x60 0x60 0x10" - status, output = commands.getstatusoutput(cmd_str) + status, output = subprocess.getstatusoutput(cmd_str) return status #If only one PSU insert(or one of PSU pwoer fail), and watt >800w. Must let DUT fan pwm >= 75% in AFO. @@ -530,11 +530,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlt:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -543,7 +543,7 @@ def main(argv): if sys.argv[1]== '-t': if len(sys.argv)!=9: - print "temp test, need input 7 temp" + print("temp test, need input 7 temp") return 0 i=0 for x in range(2, 9): @@ -551,7 +551,7 @@ def main(argv): i=i+1 test_temp = 1 log_level = logging.DEBUG - print test_temp_list + print(test_temp_list) fan = FanUtil() fan.set_fan_duty_cycle(100) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_fan.py b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_fan.py index 0e3d8ee08a63..7f49be002f0d 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_fan.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_fan.py @@ -126,7 +126,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -145,7 +145,7 @@ def manage_fan(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -167,11 +167,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_psu.py b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_psu.py index d9159c38bcf1..aa32d64bcb32 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_psu.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_monitor_psu.py @@ -92,7 +92,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -113,7 +113,7 @@ def manage_psu(self): try: val_file = open(node) except IOError as e: - print "Error: unable to open file: %s" % str(e) + print("Error: unable to open file: %s" % str(e)) return False content = val_file.readline().rstrip() val_file.close() @@ -139,11 +139,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdl:',['lfile=']) except getopt.GetoptError: - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'Usage: %s [-d] [-l ]' % sys.argv[0] + print('Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG diff --git a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_util.py b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_util.py index d686a77b91c5..5ba732cb73b2 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9726-32d/utils/accton_as9726_32d_util.py @@ -29,7 +29,7 @@ set : change board setting with fan|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -180,9 +180,9 @@ def main(): 'force', ]) if DEBUG: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -193,7 +193,7 @@ def main(): elif opt in ('-f', '--force'): FORCE = 1 else: - print "TEST" + print("TEST") logging.info('no option') for arg in args: if arg == 'install': @@ -227,41 +227,41 @@ def main(): def show_help(): - print __doc__ % {'scriptName': sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName': sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1] + " " + args[0] - print cmd + " [sfp|fan]" - print " use \"" + cmd + " fan 0-100\" to set fan duty percetage" - print " use \"" + cmd + " sfp 33-34 {0|1}\" to set sfp# tx_disable" + print(cmd + " [sfp|fan]") + print(" use \"" + cmd + " fan 0-100\" to set fan duty percetage") + print(" use \"" + cmd + " sfp 33-34 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1] + " " + args[0] - print " use \"" + cmd + " 1-32 \" to dump sfp# eeprom" + print(" use \"" + cmd + " 1-32 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG: - print "[ACCTON DBG]: " + txt + print("[ACCTON DBG]: " + txt) return def log_os_system(cmd, show): logging.info('Run :' + cmd) output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log(cmd + "with result:" + str(status)) my_log("cmd:" + cmd) my_log(" output:" + output) if status: logging.info('Failed :' + cmd) if show: - print('Failed :' + cmd) + print(('Failed :' + cmd)) return status, output @@ -302,7 +302,7 @@ def driver_uninstall(): for i in range(0, len(kos)): rm = kos[-(i + 1)].replace("modprobe", "modprobe -rq") lst = rm.split(" ") - print "lst=%s" % lst + print("lst=%s" % lst) if len(lst) > 3: del(lst[3]) rm = " ".join(lst) @@ -323,7 +323,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status print("Check SFP") @@ -338,7 +338,7 @@ def device_install(): str(sfp_map[i]) + "/new_device", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -348,7 +348,7 @@ def device_install(): str(sfp_map[i]) + "-0050/port_name", 1) if status: - print output + print(output) if FORCE == 0: return status @@ -363,7 +363,7 @@ def device_uninstall(): str(sfp_map[i]) + "/delete_device" status, output = log_os_system("echo 0x50 > " + target, 1) if status: - print output + print(output) if FORCE == 0: return status @@ -376,7 +376,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -387,7 +387,7 @@ def system_ready(): if driver_inserted() == False: return False if not device_exist(): - print "not device_exist()" + print("not device_exist()") return False return True @@ -403,29 +403,29 @@ def do_sonic_platform_install(): if os.path.exists(SONIC_PLATFORM_BSP_WHL_PKG_PY3): status, output = log_os_system("pip3 install "+ SONIC_PLATFORM_BSP_WHL_PKG_PY3, 1) if status: - print "Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3) + print("Error: Failed to install {}".format(PLATFORM_API2_WHL_FILE_PY3)) return status else: - print "Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3) + print("Successfully installed {} package".format(PLATFORM_API2_WHL_FILE_PY3)) else: - print('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is not found'.format(PLATFORM_API2_WHL_FILE_PY3))) else: - print('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} has installed'.format(PLATFORM_API2_WHL_FILE_PY3))) return def do_sonic_platform_clean(): status, output = log_os_system("pip3 show sonic-platform > /dev/null 2>&1", 0) if status: - print('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} does not install, not need to uninstall'.format(PLATFORM_API2_WHL_FILE_PY3))) else: status, output = log_os_system("pip3 uninstall sonic-platform -y", 0) if status: - print('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('Error: Failed to uninstall {}'.format(PLATFORM_API2_WHL_FILE_PY3))) return status else: - print('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3)) + print(('{} is uninstalled'.format(PLATFORM_API2_WHL_FILE_PY3))) return @@ -437,14 +437,14 @@ def do_install(): if FORCE == 0: return status else: - print PROJECT_NAME.upper() + " drivers detected...." + print(PROJECT_NAME.upper() + " drivers detected....") if not device_exist(): status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper() + " devices detected...." + print(PROJECT_NAME.upper() + " devices detected....") # for i in range(len(cpld_set)): # status, output = log_os_system(cpld_set[i], 1) @@ -459,18 +459,18 @@ def do_install(): def do_uninstall(): if not device_exist(): - print PROJECT_NAME.upper() + " has no device installed...." + print(PROJECT_NAME.upper() + " has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted() == False: - print PROJECT_NAME.upper() + " has no driver installed...." + print(PROJECT_NAME.upper() + " has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -539,11 +539,11 @@ def devices_info(): # show dict all in the order if DEBUG: for i in sorted(ALL_DEVICE.keys()): - print(i + ": ") + print((i + ": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" " + j) + print((" " + j)) for k in (ALL_DEVICE[i][j]): - print(" " + " " + k) + print((" " + " " + k)) return @@ -569,15 +569,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print "node=%s" % node - print node + ":" + print("node=%s" % node) + print(node + ":") ret, log = log_os_system("cat " + node + "| " + hex_cmd + " -C", 1) if ret == 0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return @@ -602,10 +602,10 @@ def set_device(args): node = node.replace(node.split("/")[-1], 'fan_duty_cycle_percentage') ret, log = log_os_system("cat " + node, 1) if ret == 0: - print ("Previous fan duty: " + log.strip() + "%") + print(("Previous fan duty: " + log.strip() + "%")) ret, log = log_os_system("echo " + args[1] + " >" + node, 1) if ret == 0: - print ("Current fan duty: " + args[1] + "%") + print(("Current fan duty: " + args[1] + "%")) return ret elif args[0] == 'sfp': if int(args[1]) > DEVICE_NO[args[0]] or int(args[1]) < DEVICE_NO[args[0]]-1: #33-34 @@ -649,24 +649,24 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper() + ": ") + print((i.upper() + ": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " " + j + ":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" " + j + ":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat " + k, 0) func = k.split("/")[-1].strip() func = re.sub(j + '_', '', func, 1) func = re.sub(i.lower() + '_', '', func, 1) if ret == 0: - print func + "=" + log + " ", + print(func + "=" + log + " ", end=' ') else: - print func + "=" + "X" + " ", - print + print(func + "=" + "X" + " ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return diff --git a/platform/broadcom/sonic-platform-modules-accton/debian/rules b/platform/broadcom/sonic-platform-modules-accton/debian/rules index 826a3217dc86..8cd7611bb6e3 100755 --- a/platform/broadcom/sonic-platform-modules-accton/debian/rules +++ b/platform/broadcom/sonic-platform-modules-accton/debian/rules @@ -13,7 +13,6 @@ include /usr/share/dpkg/pkg-info.mk export INSTALL_MOD_DIR:=extra -PYTHON ?= python2 PYTHON3 ?= python3 PACKAGE_PRE_NAME := sonic-platform-accton @@ -29,7 +28,7 @@ SERVICE_DIR := service CONF_DIR := conf %: - dh $@ --with systemd,python2,python3 --buildsystem=pybuild + dh $@ --with systemd,python3 --buildsystem=pybuild clean: dh_testdir @@ -40,7 +39,7 @@ build: #make modules -C $(KERNEL_SRC)/build M=$(MODULE_SRC) (for mod in $(MODULE_DIRS); do \ make modules -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules; \ - $(PYTHON) $${mod}/setup.py build; \ + $(PYTHON3) $${mod}/setup.py build; \ cd $(MOD_SRC_DIR)/$${mod}; \ if [ -f sonic_platform_setup.py ]; then \ $(PYTHON3) sonic_platform_setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}; \ @@ -73,7 +72,7 @@ binary-indep: cp $(MOD_SRC_DIR)/$${mod}/$(MODULE_DIR)/*.ko debian/$(PACKAGE_PRE_NAME)-$${mod}/$(KERNEL_SRC)/$(INSTALL_MOD_DIR); \ cp $(MOD_SRC_DIR)/$${mod}/$(UTILS_DIR)/* debian/$(PACKAGE_PRE_NAME)-$${mod}/usr/local/bin/; \ cp $(MOD_SRC_DIR)/$${mod}/$(SERVICE_DIR)/*.service debian/$(PACKAGE_PRE_NAME)-$${mod}/lib/systemd/system/; \ - $(PYTHON) $${mod}/setup.py install --root=$(MOD_SRC_DIR)/debian/$(PACKAGE_PRE_NAME)-$${mod} --install-layout=deb; \ + $(PYTHON3) $${mod}/setup.py install --root=$(MOD_SRC_DIR)/debian/$(PACKAGE_PRE_NAME)-$${mod} --install-layout=deb; \ done) # Resuming debhelper scripts dh_testroot diff --git a/platform/broadcom/sonic-platform-modules-accton/minipack/classes/pimutil.py b/platform/broadcom/sonic-platform-modules-accton/minipack/classes/pimutil.py index 778ff76afd19..05b68202be3c 100755 --- a/platform/broadcom/sonic-platform-modules-accton/minipack/classes/pimutil.py +++ b/platform/broadcom/sonic-platform-modules-accton/minipack/classes/pimutil.py @@ -176,9 +176,9 @@ def show_qsfp_present_status(pim_num): interrupt = fpga_io(dom_base[pim_num]+dom["qsfp_present_intr"]) mask = fpga_io(dom_base[pim_num]+dom["qsfp_present_intr_mask"]) - print + print() print(" (0x48) (0x50) (0x58)") - print(" 0x%08X 0x%08X 0x%08X" %(status, interrupt, mask)) + print((" 0x%08X 0x%08X 0x%08X" %(status, interrupt, mask))) print(" Status Interrupt Mask") for row in range(8): output_str = str() @@ -188,11 +188,11 @@ def show_qsfp_present_status(pim_num): interrupt_right = bool(interrupt & (0x2 << row*2)) mask_left = bool(mask & (0x1 << row*2)) mask_right = bool(mask & (0x2 << row*2)) - print("%2d: %d %d %d %d %d %d" % \ + print(("%2d: %d %d %d %d %d %d" % \ (row*2+1, status_left, status_right, \ interrupt_left, interrupt_right, \ - mask_left, mask_right)) - print + mask_left, mask_right))) + print() @@ -319,13 +319,13 @@ def get_pim_change_event(self, timeout=0): elif timeout > 0: timeout = timeout / float(1000) # Convert to secs else: - print "get_transceiver_change_event:Invalid timeout value", timeout + print("get_transceiver_change_event:Invalid timeout value", timeout) return False, {} end_time = start_time + timeout if start_time > end_time: - print 'get_transceiver_change_event:' \ - 'time wrap / invalid timeout value', timeout + print('get_transceiver_change_event:' \ + 'time wrap / invalid timeout value', timeout) return False, {} # Time wrap or possibly incorrect timeout @@ -361,7 +361,7 @@ def get_pim_change_event(self, timeout=0): if timeout > 0: time.sleep(timeout) return True, {} - print "get_evt_change_event: Should not reach here." + print("get_evt_change_event: Should not reach here.") return False, {} @@ -382,7 +382,7 @@ def set_pim_led(self, pim_num, color, control): elif color==0: led_val = (led_val & ( ~ 0x8000)) | 0x4000 #amber else: - print "Set RGB control to Green1" + print("Set RGB control to Green1") led_val = led_val & (~ 0x4000) led_val = led_val & (~ 0xfff) led_val = led_val | 0x0f0 #B.G.R Birghtness, set to Green @@ -547,30 +547,30 @@ def get_port_led(self, port_num): elif color==0x1C: color=4 #green - print "color=%d, control=%d"%(color, control) + print("color=%d, control=%d"%(color, control)) return color, control def main(argv): init_resources() pim=PimUtil() - print "Test Board ID" + print("Test Board ID") for x in range(0,8): val=pim.get_pim_board_id(x) - print "pim=%d"%x + print("pim=%d"%x) if val==0: - print "100G board" + print("100G board") else: - print "400G board" + print("400G board") - print "Test pim presence" + print("Test pim presence") for x in range(0,8): pres=pim.get_pim_presence(x) - print "pim=%d, presence=%d"%(x, pres) + print("pim=%d, presence=%d"%(x, pres)) - print "Test pim status" + print("Test pim status") for x in range(0,8): power_status=pim.get_pim_status(x) - print "pim=%d power_status=0x%x"%(x, power_status) + print("pim=%d power_status=0x%x"%(x, power_status)) release_resources() diff --git a/platform/broadcom/sonic-platform-modules-accton/minipack/utils/accton_minipack_util.py b/platform/broadcom/sonic-platform-modules-accton/minipack/utils/accton_minipack_util.py index 25979963bb30..7e512ac4c60b 100755 --- a/platform/broadcom/sonic-platform-modules-accton/minipack/utils/accton_minipack_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/minipack/utils/accton_minipack_util.py @@ -37,7 +37,7 @@ set : change board setting with led|sfp """ -import commands +import subprocess import getopt import sys import logging @@ -86,8 +86,8 @@ if DEBUG == True: - print sys.argv[0] - print 'ARGV :', sys.argv[1:] + print(sys.argv[0]) + print('ARGV :', sys.argv[1:]) def main(): @@ -103,9 +103,9 @@ def main(): 'force', ]) if DEBUG == True: - print options - print args - print len(sys.argv) + print(options) + print(args) + print(len(sys.argv)) for opt, arg in options: if opt in ('-h', '--help'): @@ -146,38 +146,38 @@ def main(): return 0 def show_help(): - print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]} + print(__doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}) sys.exit(0) def show_set_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print cmd +" [led|sfp]" - print " use \""+ cmd + " led 0-4 \" to set led color" - print " use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable" + print(cmd +" [led|sfp]") + print(" use \""+ cmd + " led 0-4 \" to set led color") + print(" use \""+ cmd + " sfp 1-32 {0|1}\" to set sfp# tx_disable") sys.exit(0) def show_eeprom_help(): cmd = sys.argv[0].split("/")[-1]+ " " + args[0] - print " use \""+ cmd + " 1-54 \" to dump sfp# eeprom" + print(" use \""+ cmd + " 1-54 \" to dump sfp# eeprom") sys.exit(0) def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd, show): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) my_log (cmd +"with result:" + str(status)) my_log ("cmd:" + cmd) my_log (" output:"+output) if status: logging.info('Failed :'+cmd) if show: - print('Failed :'+cmd) + print(('Failed :'+cmd)) return status, output def driver_inserted(): @@ -243,7 +243,7 @@ def device_install(): status, output = log_os_system(mknod[i], 1) if status: - print output + print(output) if FORCE == 0: return status @@ -263,7 +263,7 @@ def device_uninstall(): temp[-1] = temp[-1].replace('new_device', 'delete_device') status, output = log_os_system(" ".join(temp), 1) if status: - print output + print(output) if FORCE == 0: return status @@ -277,40 +277,40 @@ def system_ready(): return True def do_install(): - print "Checking system...." + print("Checking system....") if driver_inserted() == False: - print "No driver, installing...." + print("No driver, installing....") status = driver_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" drivers detected...." + print(PROJECT_NAME.upper()+" drivers detected....") if not device_exist(): - print "No device, installing...." + print("No device, installing....") status = device_install() if status: if FORCE == 0: return status else: - print PROJECT_NAME.upper()+" devices detected...." + print(PROJECT_NAME.upper()+" devices detected....") return def do_uninstall(): - print "Checking system...." + print("Checking system....") if not device_exist(): - print PROJECT_NAME.upper() +" has no device installed...." + print(PROJECT_NAME.upper() +" has no device installed....") else: - print "Removing device...." + print("Removing device....") status = device_uninstall() if status: if FORCE == 0: return status if driver_inserted()== False : - print PROJECT_NAME.upper() +" has no driver installed...." + print(PROJECT_NAME.upper() +" has no driver installed....") else: - print "Removing installed driver...." + print("Removing installed driver....") status = driver_uninstall() if status: if FORCE == 0: @@ -358,11 +358,11 @@ def devices_info(): #show dict all in the order if DEBUG == True: for i in sorted(ALL_DEVICE.keys()): - print(i+": ") + print((i+": ")) for j in sorted(ALL_DEVICE[i].keys()): - print(" "+j) + print((" "+j)) for k in (ALL_DEVICE[i][j]): - print(" "+" "+k) + print((" "+" "+k)) return def show_eeprom(index): @@ -385,15 +385,15 @@ def show_eeprom(index): else: log = 'Failed : no hexdump cmd!!' logging.info(log) - print log + print(log) return 1 - print node + ":" + print(node + ":") ret, log = log_os_system("cat "+node+"| "+hex_cmd+" -C", 1) if ret==0: - print log + print(log) else: - print "**********device no found**********" + print("**********device no found**********") return def set_device(args): @@ -455,25 +455,25 @@ def device_traversal(): devices_info() for i in sorted(ALL_DEVICE.keys()): print("============================================") - print(i.upper()+": ") + print((i.upper()+": ")) print("============================================") - for j in sorted(ALL_DEVICE[i].keys(), key=get_value): - print " "+j+":", + for j in sorted(list(ALL_DEVICE[i].keys()), key=get_value): + print(" "+j+":", end=' ') for k in (ALL_DEVICE[i][j]): ret, log = log_os_system("cat "+k, 0) func = k.split("/")[-1].strip() func = re.sub(j+'_','',func,1) func = re.sub(i.lower()+'_','',func,1) if ret==0: - print func+"="+log+" ", + print(func+"="+log+" ", end=' ') else: - print func+"="+"X"+" ", - print + print(func+"="+"X"+" ", end=' ') + print() print("----------------------------------------------------------------") - print + print() return def device_exist(): diff --git a/platform/broadcom/sonic-platform-modules-accton/minipack/utils/setup_qsfp_eeprom.py b/platform/broadcom/sonic-platform-modules-accton/minipack/utils/setup_qsfp_eeprom.py index 257bc1cd90e6..286d6a2f4c54 100755 --- a/platform/broadcom/sonic-platform-modules-accton/minipack/utils/setup_qsfp_eeprom.py +++ b/platform/broadcom/sonic-platform-modules-accton/minipack/utils/setup_qsfp_eeprom.py @@ -27,7 +27,7 @@ import subprocess import click import imp - import commands + import subprocess import logging import logging.config import logging.handlers @@ -72,14 +72,14 @@ def my_log(txt): if DEBUG == True: - print "[ACCTON DBG]: "+txt + print("[ACCTON DBG]: "+txt) return def log_os_system(cmd): logging.info('Run :'+cmd) status = 1 output = "" - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) if status: logging.info('Failed :'+cmd) return status, output @@ -123,7 +123,7 @@ def qsfp_eeprom_sys(pim_idx, i2c_bus_order, create): status, output =log_os_system( "echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(bus)+"/new_device") if status: - print output + print(output) return 1 status, output =log_os_system( "echo port"+str(k+1)+" > /sys/bus/i2c/devices/"+str(bus)+"-0050/port_name") @@ -131,13 +131,13 @@ def qsfp_eeprom_sys(pim_idx, i2c_bus_order, create): status, output =log_os_system( "ln -s -f /sys/bus/i2c/devices/"+str(bus)+"-0050/eeprom" + " /usr/local/bin/minipack_qsfp/port" + str(k) + "_eeprom") if status: - print output + print(output) return 1 else: status, output =log_os_system( "echo 0x50 > /sys/bus/i2c/devices/i2c-"+str(bus)+"/delete_device") if status: - print output + print(output) k=k+1 @@ -146,7 +146,7 @@ def qsfp_eeprom_sys(pim_idx, i2c_bus_order, create): def check_pca_active( i2c_addr, bus): cmd = "i2cget -y -f %d 0x%x 0x0" cmd = cmd %(bus, i2c_addr) - status, output = commands.getstatusoutput(cmd) + status, output = subprocess.getstatusoutput(cmd) return status def set_pim_port_use_bus(pim_idx): @@ -178,11 +178,11 @@ def device_remove(): #if ret==0: cmdm= cmd1 % (0x72, bus) - status, output = commands.getstatusoutput(cmdm) - print "Remove %d-0072 i2c device"%bus + status, output = subprocess.getstatusoutput(cmdm) + print("Remove %d-0072 i2c device"%bus) cmdm= cmd1 % (0x71, bus) - status, output = commands.getstatusoutput(cmdm) - print "Remove %d-0071 i2c device"%bus + status, output = subprocess.getstatusoutput(cmdm) + print("Remove %d-0071 i2c device"%bus) cmd="rm -f /usr/local/bin/minipack_qsfp/port*" status, output=log_os_system(cmd) @@ -262,7 +262,7 @@ def manage_pim(self): pim_state[pim_idx]=self.PIM_STATE_INSERT logging.info("pim_state[%d] PIM_STATE_INSERT", pim_idx); else: - print "retry check 100 times for check pca addr" + print("retry check 100 times for check pca addr") del_pim_port_use_bus(pim_idx) else: if pim_state[pim_idx]==self.PIM_STATE_INSERT: @@ -280,11 +280,11 @@ def main(argv): try: opts, args = getopt.getopt(argv,'hdlr',['lfile=']) except getopt.GetoptError: - print 'A:Usage: %s [-d] [-l ]' % sys.argv[0] + print('A:Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 for opt, arg in opts: if opt == '-h': - print 'B:Usage: %s [-d] [-l ]' % sys.argv[0] + print('B:Usage: %s [-d] [-l ]' % sys.argv[0]) return 0 elif opt in ('-d', '--debug'): log_level = logging.DEBUG @@ -305,7 +305,7 @@ def main(argv): time.sleep(0.5) if status==0: cpu_pca_i2c_ready=1 - print "Make sure CPU pca i2c device is ready" + print("Make sure CPU pca i2c device is ready") break while True: diff --git a/platform/broadcom/sonic-platform-modules-arista b/platform/broadcom/sonic-platform-modules-arista index 6e8ccd3379d5..89018d062319 160000 --- a/platform/broadcom/sonic-platform-modules-arista +++ b/platform/broadcom/sonic-platform-modules-arista @@ -1 +1 @@ -Subproject commit 6e8ccd3379d5e89f4e80b11391818e648d928d94 +Subproject commit 89018d0623191ecd477c869339ca795f91f6c68c diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/control b/platform/broadcom/sonic-platform-modules-cel/debian/control index a41f92ab54e9..48ae0ed83735 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/control +++ b/platform/broadcom/sonic-platform-modules-cel/debian/control @@ -7,21 +7,21 @@ Standards-Version: 3.9.3 Package: platform-modules-dx010 Architecture: amd64 -Depends: linux-image-4.19.0-12-2-amd64-unsigned +Depends: linux-image-5.10.0-8-2-amd64-unsigned Description: kernel modules for platform devices such as fan, led, sfp Package: platform-modules-haliburton Architecture: amd64 -Depends: linux-image-4.19.0-12-2-amd64-unsigned +Depends: linux-image-5.10.0-8-2-amd64-unsigned Description: kernel modules for platform devices such as fan, led, sfp Package: platform-modules-seastone2 Architecture: amd64 -Depends: linux-image-4.19.0-12-2-amd64-unsigned +Depends: linux-image-5.10.0-8-2-amd64-unsigned Description: kernel modules for platform devices such as led, sfp Package: platform-modules-silverstone Architecture: amd64 -Depends: linux-image-4.19.0-12-2-amd64-unsigned +Depends: linux-image-5.10.0-8-2-amd64-unsigned Description: kernel modules for platform devices such as led, sfp. diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.init b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.init index 8ee3d4465588..21587bfbd3fd 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.init +++ b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.init @@ -147,7 +147,18 @@ start) sleep 0.1 done - /bin/sh /usr/local/bin/platform_api_mgnt.sh init + bus_en=8 + sleep 1 + cfg_r=`i2cget -y -f 8 0x60 0xD1` + ((cfg_w=$cfg_r+$bus_en)) + i2cset -y -f 8 0x60 0xD1 $cfg_w + sleep 1 + cfg_r=`i2cget -y -f 9 0x20 0xD1` + ((cfg_w=$cfg_r+$bus_en)) + i2cset -y -f 9 0x20 0xD1 $cfg_w + sleep 1 + + /bin/sh /usr/local/bin/platform_api_mgnt.sh init echo "done." ;; diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.install b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.install index 98c17e55a980..4698507c6b9d 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.install +++ b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-dx010.install @@ -4,6 +4,5 @@ dx010/systemd/platform-modules-dx010.service lib/systemd/system dx010/scripts/fancontrol.sh etc/init.d dx010/scripts/fancontrol.service lib/systemd/system services/fancontrol/fancontrol usr/local/bin -dx010/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-cel_seastone-r0 dx010/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-cel_seastone-r0 services/platform_api/platform_api_mgnt.sh usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-haliburton.install b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-haliburton.install index 8788480d9399..6c58afe6d55e 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-haliburton.install +++ b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-haliburton.install @@ -3,10 +3,9 @@ haliburton/systemd/platform-modules-haliburton.service lib/systemd/system haliburton/script/fancontrol.sh etc/init.d haliburton/script/fancontrol.service lib/systemd/system services/fancontrol/fancontrol usr/local/bin -haliburton/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-cel_e1031-r0 haliburton/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-cel_e1031-r0 services/platform_api/platform_api_mgnt.sh usr/local/bin haliburton/script/popmsg.sh usr/local/bin haliburton/script/udev_prefix.sh usr/local/bin haliburton/script/reload_udev.sh usr/local/bin -haliburton/script/50-ttyUSB-C0.rules etc/udev/rules.d \ No newline at end of file +haliburton/script/50-ttyUSB-C0.rules etc/udev/rules.d diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-seastone2.install b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-seastone2.install index 41a381eeb0ce..31fc4fd3bd6d 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-seastone2.install +++ b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-seastone2.install @@ -1,4 +1,4 @@ seastone2/cfg/seastone2-modules.conf etc/modules-load.d seastone2/systemd/platform-modules-seastone2.service lib/systemd/system -seastone2/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-cel_seastone_2-r0 -services/platform_api/platform_api_mgnt.sh usr/local/bin \ No newline at end of file +seastone2/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-cel_seastone_2-r0 +services/platform_api/platform_api_mgnt.sh usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-silverstone.install b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-silverstone.install index 67b433ced85f..73fa4b90a4fc 100644 --- a/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-silverstone.install +++ b/platform/broadcom/sonic-platform-modules-cel/debian/platform-modules-silverstone.install @@ -2,5 +2,5 @@ silverstone/scripts/sensors usr/bin silverstone/scripts/platform_sensors.py usr/local/bin silverstone/cfg/silverstone-modules.conf etc/modules-load.d silverstone/systemd/platform-modules-silverstone.service lib/systemd/system -silverstone/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-cel_silverstone-r0 +silverstone/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-cel_silverstone-r0 services/platform_api/platform_api_mgnt.sh usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/rules b/platform/broadcom/sonic-platform-modules-cel/debian/rules index efb5aa47b437..3a6ef1bfdbef 100755 --- a/platform/broadcom/sonic-platform-modules-cel/debian/rules +++ b/platform/broadcom/sonic-platform-modules-cel/debian/rules @@ -15,12 +15,10 @@ override_dh_auto_build: make -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules; \ if [ $$mod = "seastone2" ]; then \ cd services/platform_api; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ continue; \ fi; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ done) diff --git a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/emc2305.c b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/emc2305.c index b406a29fd9be..b7a85c17a332 100644 --- a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/emc2305.c +++ b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/emc2305.c @@ -742,6 +742,7 @@ emc2305_probe(struct i2c_client *client, const struct i2c_device_id *id) int status; int i; int fan_idx; + unsigned char dis_to = 0; if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) return -EIO; @@ -752,6 +753,11 @@ emc2305_probe(struct i2c_client *client, const struct i2c_device_id *id) i2c_set_clientdata(client, data); mutex_init(&data->update_lock); + + dis_to = i2c_smbus_read_byte_data(client, REG_CONFIGURATION); + dis_to &= 0xBF; + /* The SMBus timeout function is enabled */ + (void)i2c_smbus_write_byte_data(client, REG_CONFIGURATION, dis_to); status = i2c_smbus_read_byte_data(client, REG_PRODUCT_ID); switch (status) { diff --git a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/leds-dx010.c b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/leds-dx010.c index fac8322f06b0..c1693a37e3c1 100644 --- a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/leds-dx010.c +++ b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/leds-dx010.c @@ -18,6 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include #include #include #include diff --git a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/mc24lc64t.c b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/mc24lc64t.c index a391056d09a7..002172f587e8 100644 --- a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/mc24lc64t.c +++ b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/mc24lc64t.c @@ -94,7 +94,7 @@ static int mc24lc64t_probe(struct i2c_client *client, sizeof(struct mc24lc64t_data), GFP_KERNEL))) return -ENOMEM; - drvdata->fake_client = i2c_new_dummy(client->adapter, client->addr + 1); + drvdata->fake_client = i2c_new_dummy_device(client->adapter, client->addr + 1); if (!drvdata->fake_client) return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/mc24lc64t.c b/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/mc24lc64t.c index a391056d09a7..002172f587e8 100644 --- a/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/mc24lc64t.c +++ b/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/mc24lc64t.c @@ -94,7 +94,7 @@ static int mc24lc64t_probe(struct i2c_client *client, sizeof(struct mc24lc64t_data), GFP_KERNEL))) return -ENOMEM; - drvdata->fake_client = i2c_new_dummy(client->adapter, client->addr + 1); + drvdata->fake_client = i2c_new_dummy_device(client->adapter, client->addr + 1); if (!drvdata->fake_client) return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/smc.c b/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/smc.c index 7ec9753066b3..b38b8ea68f1e 100644 --- a/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/smc.c +++ b/platform/broadcom/sonic-platform-modules-cel/haliburton/modules/smc.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include diff --git a/platform/broadcom/sonic-platform-modules-cel/seastone2/modules/switchboard_fpga.c b/platform/broadcom/sonic-platform-modules-cel/seastone2/modules/switchboard_fpga.c index 5918d27f3911..a30265616e6e 100644 --- a/platform/broadcom/sonic-platform-modules-cel/seastone2/modules/switchboard_fpga.c +++ b/platform/broadcom/sonic-platform-modules-cel/seastone2/modules/switchboard_fpga.c @@ -1870,7 +1870,7 @@ static struct i2c_adapter * seastone2_i2c_init(struct platform_device *pdev, if (!new_data) { printk(KERN_ALERT "Cannot alloc i2c data for %s", fpga_i2c_bus_dev[portid].calling_name); - kzfree(new_adapter); + kfree_sensitive(new_adapter); return NULL; } @@ -1889,8 +1889,8 @@ static struct i2c_adapter * seastone2_i2c_init(struct platform_device *pdev, error = i2c_add_numbered_adapter(new_adapter); if (error < 0) { printk(KERN_ALERT "Cannot add i2c adapter %s", new_data->pca9548.calling_name); - kzfree(new_adapter); - kzfree(new_data); + kfree_sensitive(new_adapter); + kfree_sensitive(new_data); return NULL; } @@ -1936,7 +1936,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) fpga = kobject_create_and_add("FPGA", &pdev->dev.kobj); if (!fpga) { - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } @@ -1944,7 +1944,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) if (ret != 0) { printk(KERN_ERR "Cannot create FPGA sysfs attributes\n"); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1952,7 +1952,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) if (!cpld1) { sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } ret = sysfs_create_group(cpld1, &cpld1_attr_grp); @@ -1961,7 +1961,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1971,7 +1971,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } ret = sysfs_create_group(cpld2, &cpld2_attr_grp); @@ -1982,7 +1982,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1995,7 +1995,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return PTR_ERR(sff_dev); } @@ -2009,7 +2009,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -2023,7 +2023,7 @@ static int seastone2_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -2040,9 +2040,9 @@ static int seastone2_drv_probe(struct platform_device *pdev) sff_data = dev_get_drvdata(fpga_data->sff_devices[portid_count]); BUG_ON(sff_data == NULL); if ( sff_data->port_type == QSFP ) { - fpga_data->sff_i2c_clients[portid_count] = i2c_new_device(i2c_adap, &sff8436_eeprom_info[0]); + fpga_data->sff_i2c_clients[portid_count] = i2c_new_client_device(i2c_adap, &sff8436_eeprom_info[0]); } else { - fpga_data->sff_i2c_clients[portid_count] = i2c_new_device(i2c_adap, &sff8436_eeprom_info[1]); + fpga_data->sff_i2c_clients[portid_count] = i2c_new_client_device(i2c_adap, &sff8436_eeprom_info[1]); } sff_data = NULL; sysfs_create_link(&fpga_data->sff_devices[portid_count]->kobj, @@ -2362,4 +2362,4 @@ module_exit(seastone2_exit); MODULE_AUTHOR("Pradchaya P. "); MODULE_DESCRIPTION("Celestica Seastone2 switchboard driver"); MODULE_VERSION(MOD_VERSION); -MODULE_LICENSE("GPL"); \ No newline at end of file +MODULE_LICENSE("GPL"); diff --git a/platform/broadcom/sonic-platform-modules-cel/silverstone/modules/switchboard.c b/platform/broadcom/sonic-platform-modules-cel/silverstone/modules/switchboard.c index 2ee6c858a8b6..e41b64badefc 100644 --- a/platform/broadcom/sonic-platform-modules-cel/silverstone/modules/switchboard.c +++ b/platform/broadcom/sonic-platform-modules-cel/silverstone/modules/switchboard.c @@ -1604,7 +1604,7 @@ static struct i2c_adapter * silverstone_i2c_init(struct platform_device *pdev, i new_data = kzalloc(sizeof(*new_data), GFP_KERNEL); if (!new_data) { printk(KERN_ALERT "Cannot alloc i2c data for %s", fpga_i2c_bus_dev[portid].calling_name); - kzfree(new_adapter); + kfree_sensitive(new_adapter); return NULL; } @@ -1623,8 +1623,8 @@ static struct i2c_adapter * silverstone_i2c_init(struct platform_device *pdev, i error = i2c_add_numbered_adapter(new_adapter); if (error < 0) { printk(KERN_ALERT "Cannot add i2c adapter %s", new_data->pca9548.calling_name); - kzfree(new_adapter); - kzfree(new_data); + kfree_sensitive(new_adapter); + kfree_sensitive(new_data); return NULL; } @@ -1685,7 +1685,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) fpga = kobject_create_and_add("FPGA", &pdev->dev.kobj); if (!fpga) { - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } @@ -1693,7 +1693,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) if (ret != 0) { printk(KERN_ERR "Cannot create FPGA sysfs attributes\n"); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1701,7 +1701,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) if (!cpld1) { sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } ret = sysfs_create_group(cpld1, &cpld1_attr_grp); @@ -1710,7 +1710,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1720,7 +1720,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return -ENOMEM; } ret = sysfs_create_group(cpld2, &cpld2_attr_grp); @@ -1731,7 +1731,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1744,7 +1744,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return PTR_ERR(sff_dev); } @@ -1758,7 +1758,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1772,7 +1772,7 @@ static int silverstone_drv_probe(struct platform_device *pdev) kobject_put(cpld1); sysfs_remove_group(fpga, &fpga_attr_grp); kobject_put(fpga); - kzfree(fpga_data); + kfree_sensitive(fpga_data); return ret; } @@ -1788,9 +1788,9 @@ static int silverstone_drv_probe(struct platform_device *pdev) sff_data = dev_get_drvdata(fpga_data->sff_devices[portid_count]); BUG_ON(sff_data == NULL); if ( sff_data->port_type == QSFP ) { - fpga_data->sff_i2c_clients[portid_count] = i2c_new_device(i2c_adap, &sff8436_eeprom_info[0]); + fpga_data->sff_i2c_clients[portid_count] = i2c_new_client_device(i2c_adap, &sff8436_eeprom_info[0]); } else { - fpga_data->sff_i2c_clients[portid_count] = i2c_new_device(i2c_adap, &sff8436_eeprom_info[1]); + fpga_data->sff_i2c_clients[portid_count] = i2c_new_client_device(i2c_adap, &sff8436_eeprom_info[1]); } sff_data = NULL; sysfs_create_link(&fpga_data->sff_devices[portid_count]->kobj, @@ -2103,4 +2103,4 @@ module_exit(silverstone_exit); MODULE_AUTHOR("Celestica Inc."); MODULE_DESCRIPTION("Celestica Silverstone platform driver"); MODULE_VERSION(MOD_VERSION); -MODULE_LICENSE("GPL"); \ No newline at end of file +MODULE_LICENSE("GPL"); diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s5232f.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s5232f.install index 25d2b84ad4ac..a6003d1273c1 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s5232f.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s5232f.install @@ -5,7 +5,6 @@ s5232f/scripts/sensors usr/bin s5232f/scripts/qsfp_irq_enable.py usr/bin s5232f/cfg/s5232f-modules.conf etc/modules-load.d s5232f/systemd/platform-modules-s5232f.service etc/systemd/system -s5232f/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dellemc_s5232f_c3538-r0 s5232f/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dellemc_s5232f_c3538-r0 common/platform_reboot usr/share/sonic/device/x86_64-dellemc_s5232f_c3538-r0 common/fw-updater usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6000.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6000.install index 2311ea0b578a..eb96a856c866 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6000.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6000.install @@ -10,5 +10,4 @@ common/actions.sh usr/share/sonic/device/x86_64-dell_s6000_s1220-r0 s6000/scripts/platform_reboot_override usr/share/sonic/device/x86_64-dell_s6000_s1220-r0 s6000/scripts/platform_update_reboot_cause usr/share/sonic/device/x86_64-dell_s6000_s1220-r0 s6000/scripts/override.conf /etc/systemd/system/systemd-reboot.service.d -s6000/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dell_s6000_s1220-r0 s6000/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dell_s6000_s1220-r0 diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install index 1f1b7609b760..44883786053c 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install @@ -10,20 +10,27 @@ s6100/scripts/platform_reboot_override usr/share/sonic/device/x86_64-dell_s6100_ s6100/scripts/fast-reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/track_reboot_reason.sh usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/warm-reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 +s6100/scripts/soft-reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/ssd-fw-upgrade usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/override.conf /etc/systemd/system/systemd-reboot.service.d common/dell_lpc_mon.sh usr/local/bin +s6100/scripts/s6100_ssd_mon.sh usr/local/bin +s6100/scripts/s6100_ssd_upgrade_status.sh usr/local/bin common/actions.sh usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/platform_sensors.py usr/local/bin +s6100/scripts/platform_reboot_pre_check usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/hw-management-generate-dump.sh usr/bin -s6100/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/platform_watchdog_enable.sh usr/local/bin s6100/scripts/platform_watchdog_disable.sh usr/local/bin s6100/scripts/sensors usr/bin +s6100/scripts/iSMART_64 usr/local/bin s6100/systemd/platform-modules-s6100.service etc/systemd/system s6100/systemd/s6100-lpc-monitor.service etc/systemd/system +s6100/systemd/s6100-ssd-monitor.service etc/systemd/system +s6100/systemd/s6100-ssd-monitor.timer etc/systemd/system +s6100/systemd/s6100-ssd-upgrade-status.service etc/systemd/system s6100/systemd/s6100-reboot-cause.service etc/systemd/system s6100/systemd/s6100-i2c-enumerate.service etc/systemd/system s6100/scripts/s6100_serial_getty_monitor etc/monit/conf.d diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install index 28d77243d639..a4176c3c12cb 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9100.install @@ -7,7 +7,6 @@ z9100/scripts/platform_reboot_override usr/share/sonic/device/x86_64-dell_z9100_ z9100/scripts/override.conf /etc/systemd/system/systemd-reboot.service.d z9100/scripts/platform_sensors.py usr/local/bin z9100/scripts/sensors usr/bin -z9100/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dell_z9100_c2538-r0 z9100/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dell_z9100_c2538-r0 z9100/cfg/z9100-modules.conf etc/modules-load.d z9100/systemd/platform-modules-z9100.service etc/systemd/system diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9264f.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9264f.install index 9aa3793f5d29..4d08b3e98116 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9264f.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9264f.install @@ -5,7 +5,6 @@ z9264f/scripts/sensors usr/bin z9264f/scripts/port_irq_enable.py usr/bin z9264f/cfg/z9264f-modules.conf etc/modules-load.d z9264f/systemd/platform-modules-z9264f.service etc/systemd/system -z9264f/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9264f_c3538-r0 z9264f/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9264f_c3538-r0 common/platform_reboot usr/share/sonic/device/x86_64-dellemc_z9264f_c3538-r0 common/fw-updater usr/local/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install index 9915b08b72ee..91aa392e8602 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-z9332f.install @@ -3,7 +3,6 @@ z9332f/scripts/platform_sensors.py usr/local/bin z9332f/scripts/sensors usr/bin z9332f/cfg/z9332f-modules.conf etc/modules-load.d z9332f/systemd/platform-modules-z9332f.service etc/systemd/system -z9332f/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 z9332f/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 common/platform_reboot usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0 common/pcisysfs.py usr/bin diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/rules b/platform/broadcom/sonic-platform-modules-dell/debian/rules index 520331ed16d3..41e2f2e66b57 100755 --- a/platform/broadcom/sonic-platform-modules-dell/debian/rules +++ b/platform/broadcom/sonic-platform-modules-dell/debian/rules @@ -18,31 +18,26 @@ override_dh_auto_build: cp $(COMMON_DIR)/dell_pmc.c $(MOD_SRC_DIR)/$${mod}/modules/dell_s6100_lpc.c; \ cp $(COMMON_DIR)/dell_ich.c $(MOD_SRC_DIR)/$${mod}/modules/dell_ich.c; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ elif [ $$mod = "z9100" ]; then \ cp $(COMMON_DIR)/dell_pmc.c $(MOD_SRC_DIR)/$${mod}/modules/dell_mailbox.c; \ cp $(COMMON_DIR)/dell_ich.c $(MOD_SRC_DIR)/$${mod}/modules/dell_ich.c; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ elif [ $$mod = "s6000" ]; then \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ elif [ $$mod = "z9264f" ]; then \ cp $(COMMON_DIR)/ipmihelper.py $(MOD_SRC_DIR)/$${mod}/sonic_platform/ipmihelper.py; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ elif [ $$mod = "s5232f" ]; then \ cp $(COMMON_DIR)/ipmihelper.py $(MOD_SRC_DIR)/$${mod}/sonic_platform/ipmihelper.py; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ elif [ $$mod = "s5248f" ]; then \ @@ -53,7 +48,6 @@ override_dh_auto_build: elif [ $$mod = "z9332f" ]; then \ cp $(COMMON_DIR)/ipmihelper.py $(MOD_SRC_DIR)/$${mod}/sonic_platform/ipmihelper.py; \ cd $(MOD_SRC_DIR)/$${mod}; \ - python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ cd $(MOD_SRC_DIR); \ fi; \ diff --git a/platform/broadcom/sonic-platform-modules-dell/s5232f/modules/dell_s5232f_fpga_ocores.c b/platform/broadcom/sonic-platform-modules-dell/s5232f/modules/dell_s5232f_fpga_ocores.c index 1565d4f5c645..7e1fb1ab4643 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s5232f/modules/dell_s5232f_fpga_ocores.c +++ b/platform/broadcom/sonic-platform-modules-dell/s5232f/modules/dell_s5232f_fpga_ocores.c @@ -971,7 +971,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) /* map the device memory or IO region into kernel virtual * address space */ - fpgapci->bar[i] = ioremap_nocache (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); + fpgapci->bar[i] = ioremap (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); if (!fpgapci->bar[i]) { PRINT ( "Could not map BAR #%d.\n", i); @@ -985,7 +985,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) { fpga_phys_addr = bar_start; - fpga_ctl_addr = ioremap_nocache (bar_start, FPGA_CTL_REG_SIZE); + fpga_ctl_addr = ioremap (bar_start, FPGA_CTL_REG_SIZE); fpga_base_addr = fpgapci->bar[i]; } diff --git a/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/chassis.py index 356e69526d89..1be2186fac76 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/chassis.py @@ -21,6 +21,7 @@ from sonic_platform.thermal import Thermal from sonic_platform.fan_drawer import FanDrawer from sonic_platform.watchdog import Watchdog + import sonic_platform.hwaccess as hwaccess except ImportError as e: raise ImportError(str(e) + "- required module not found") @@ -38,6 +39,21 @@ class Chassis(ChassisBase): oir_fd = -1 epoll = -1 + pci_res = "/sys/bus/pci/devices/0000:04:00.0/resource0" + sysled_offset = 0x0024 + SYSLED_COLOR_TO_REG = { + "blinking_green": 0x0, + "green" : 0x10, + "amber" : 0x20, + "blinking_amber": 0x30 + } + + REG_TO_SYSLED_COLOR = { + 0x0 : "blinking_green", + 0x10 : "green", + 0x20 : "amber", + 0x30 : "blinking_amber" + } _global_port_pres_dict = {} @@ -222,6 +238,40 @@ def get_num_sfps(self): """ return self._num_sfps + def initizalize_system_led(self): + self.sys_ledcolor = "green" + + def get_status_led(self): + """ + Gets the current system LED color + + Returns: + A string that represents the supported color + """ + val = hwaccess.pci_get_value(self.pci_res, self.sysled_offset) + if val != -1: + val = val & 0x30 + return self.REG_TO_SYSLED_COLOR.get(val) + return self.sys_ledcolor + + def set_status_led(self, color): + """ + Set system LED status based on the color type passed in the argument. + Argument: Color to be set + Returns: + bool: True is specified color is set, Otherwise return False + """ + + if color not in list(self.SYSLED_COLOR_TO_REG.keys()): + return False + + val = hwaccess.pci_get_value(self.pci_res, self.sysled_offset) + val = (val & 0xFFCF) | self.SYSLED_COLOR_TO_REG[color] + + hwaccess.pci_set_value(self.pci_res, val, self.sysled_offset) + self.sys_ledcolor = color + return True + def get_reboot_cause(self): """ Retrieves the cause of the previous reboot diff --git a/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/psu.py b/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/psu.py index a7e2add8bd08..15b5ac16b1a5 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/psu.py +++ b/platform/broadcom/sonic-platform-modules-dell/s5232f/sonic_platform/psu.py @@ -22,9 +22,11 @@ class Psu(PsuBase): # { PSU-ID: { Sensor-Name: Sensor-ID } } SENSOR_MAPPING = { 1: { "State": 0x31, "Current": 0x39, - "Power": 0x37, "Voltage": 0x38 }, + "Power": 0x37, "Voltage": 0x38, + "Temperature": 0xc }, 2: { "State": 0x32, "Current": 0x3F, - "Power": 0x3D, "Voltage": 0x3E } } + "Power": 0x3D, "Voltage": 0x3E, + "Temperature": 0xd } } # ( PSU-ID: FRU-ID } FRU_MAPPING = { 1: 1, 2: 2 } @@ -37,6 +39,7 @@ def __init__(self, psu_index): self.voltage_sensor = IpmiSensor(self.SENSOR_MAPPING[self.index]["Voltage"]) self.current_sensor = IpmiSensor(self.SENSOR_MAPPING[self.index]["Current"]) self.power_sensor = IpmiSensor(self.SENSOR_MAPPING[self.index]["Power"]) + self.temp_sensor = IpmiSensor(self.SENSOR_MAPPING[self.index ]["Temperature"]) self.fru = IpmiFru(self.FRU_MAPPING[self.index]) self._fan_list.append(Fan(fan_index=self.index, psu_fan=True, @@ -113,6 +116,56 @@ def get_voltage(self): return float(voltage) + def get_voltage_low_threshold(self): + """ + Returns PSU low threshold in Volts + """ + + is_valid, low_threshold = self.voltage_sensor.get_threshold("LowerCritical") + if not is_valid: + low_threshold = 11.6 + low_threshold = "{:.2f}".format(low_threshold) + + return float(low_threshold) + + def get_voltage_high_threshold(self): + """ + Returns PSU high threshold in Volts + """ + + is_valid, high_threshold = self.voltage_sensor.get_threshold("UpperCritical") + if not is_valid: + high_threshold = 12.8 + high_threshold = "{:.2f}".format(high_threshold) + + return float(high_threshold) + + def get_temperature(self): + """ + Retrieves current temperature reading from thermal + + Returns: + A float number of current temperature in Celsius up to + nearest thousandth of one degree Celsius, e.g. 30.125 + """ + is_valid, temperature = self.temp_sensor.get_reading() + if not is_valid: + temperature = 0 + + return float(temperature) + + def get_temperature_high_threshold(self): + """ + Returns the high temperature threshold for PSU in Celsius + """ + + is_valid, high_threshold = self.temp_sensor.get_threshold("UpperCritical") + if not is_valid: + high_threshold = 105 + high_threshold = "{:.2f}".format(high_threshold) + + return float(high_threshold) + def get_current(self): """ Retrieves present electric current supplied by PSU diff --git a/platform/broadcom/sonic-platform-modules-dell/s5248f/modules/dell_s5248f_fpga_ocores.c b/platform/broadcom/sonic-platform-modules-dell/s5248f/modules/dell_s5248f_fpga_ocores.c index b9a50c69b225..0673d6e9d0ac 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s5248f/modules/dell_s5248f_fpga_ocores.c +++ b/platform/broadcom/sonic-platform-modules-dell/s5248f/modules/dell_s5248f_fpga_ocores.c @@ -1046,7 +1046,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) /* map the device memory or IO region into kernel virtual * address space */ - fpgapci->bar[i] = ioremap_nocache (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); + fpgapci->bar[i] = ioremap (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); if (!fpgapci->bar[i]) { PRINT ( "Could not map BAR #%d.\n", i); @@ -1060,7 +1060,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) { fpga_phys_addr = bar_start; - fpga_ctl_addr = ioremap_nocache (bar_start, FPGA_CTL_REG_SIZE); + fpga_ctl_addr = ioremap (bar_start, FPGA_CTL_REG_SIZE); fpga_base_addr = fpgapci->bar[i]; } diff --git a/platform/broadcom/sonic-platform-modules-dell/s5248f/sonic_platform/ipmihelper.py b/platform/broadcom/sonic-platform-modules-dell/s5248f/sonic_platform/ipmihelper.py deleted file mode 100644 index d95329c40de2..000000000000 --- a/platform/broadcom/sonic-platform-modules-dell/s5248f/sonic_platform/ipmihelper.py +++ /dev/null @@ -1,269 +0,0 @@ -#!/usr/bin/python3 - -######################################################################## -# DellEMC -# -# Module contains implementation of IpmiSensor and IpmiFru classes that -# provide Sensor's and FRU's information respectively. -# -######################################################################## - -import subprocess -import re - -# IPMI Request Network Function Codes -NetFn_SensorEvent = 0x04 -NetFn_Storage = 0x0A - -# IPMI Sensor Device Commands -Cmd_GetSensorReadingFactors = 0x23 -Cmd_GetSensorThreshold = 0x27 -Cmd_GetSensorReading = 0x2D - -# IPMI FRU Device Commands -Cmd_ReadFRUData = 0x11 - -def get_ipmitool_raw_output(args): - """ - Returns a list the elements of which are the individual bytes of - ipmitool raw command output. - """ - result_bytes = list() - result = "" - command = "ipmitool raw {}".format(args) - try: - proc = subprocess.Popen(command.split(), stdout=subprocess.PIPE, - universal_newlines=True, stderr=subprocess.STDOUT) - stdout = proc.communicate()[0] - proc.wait() - if not proc.returncode: - result = stdout.rstrip('\n') - except EnvironmentError: - pass - - for i in result.split(): - result_bytes.append(int(i, 16)) - - return result_bytes - -class IpmiSensor(object): - - # Sensor Threshold types and their respective bit masks - THRESHOLD_BIT_MASK = { - "LowerNonCritical" : 0, - "LowerCritical" : 1, - "LowerNonRecoverable" : 2, - "UpperNonCritical" : 3, - "UpperCritical" : 4, - "UpperNonRecoverable" : 5 - } - - def __init__(self, sensor_id, is_discrete=False): - self.id = sensor_id - self.is_discrete = is_discrete - - def _get_converted_sensor_reading(self, raw_value): - """ - Returns a 2 element tuple(bool, int) in which first element - provides the validity of the reading and the second element is - the converted sensor reading - """ - # Get Sensor Reading Factors - cmd_args = "{} {} {} {}".format(NetFn_SensorEvent, - Cmd_GetSensorReadingFactors, - self.id, raw_value) - factors = get_ipmitool_raw_output(cmd_args) - - if len(factors) != 7: - return False, 0 - - # Compute Twos complement - def get_twos_complement(val, bits): - if val & (1 << (bits - 1)): - val = val - (1 << bits) - return val - - # Calculate actual sensor value from the raw sensor value - # using the sensor reading factors. - M = get_twos_complement(((factors[2] & 0xC0) << 8) | factors[1], 10) - B = get_twos_complement(((factors[4] & 0xC0) << 8) | factors[3], 10) - R_exp = get_twos_complement((factors[6] & 0xF0) >> 4, 4) - B_exp = get_twos_complement(factors[6] & 0x0F, 4) - - converted_reading = ((M * raw_value) + (B * 10**B_exp)) * 10**R_exp - - return True, converted_reading - - def get_reading(self): - """ - For Threshold sensors, returns the sensor reading. - For Discrete sensors, returns the state value. - - Returns: - A tuple (bool, int) where the first element provides the - validity of the reading and the second element provides the - sensor reading/state value. - """ - # Get Sensor Reading - cmd_args = "{} {} {}".format(NetFn_SensorEvent, Cmd_GetSensorReading, - self.id) - output = get_ipmitool_raw_output(cmd_args) - if len(output) != 4: - return False, 0 - - # Check reading/state unavailable - if output[1] & 0x20: - return False, 0 - - if self.is_discrete: - state = ((output[3] & 0x7F) << 8) | output[2] - return True, state - else: - return self._get_converted_sensor_reading(output[0]) - - def get_threshold(self, threshold_type): - """ - Returns the sensor's threshold value for a given threshold type. - - Args: - threshold_type (str) - one of the below mentioned - threshold type strings - - "LowerNonCritical" - "LowerCritical" - "LowerNonRecoverable" - "UpperNonCritical" - "UpperCritical" - "UpperNonRecoverable" - Returns: - A tuple (bool, int) where the first element provides the - validity of that threshold and second element provides the - threshold value. - """ - # Thresholds are not valid for discrete sensors - if self.is_discrete: - raise TypeError("Threshold is not applicable for Discrete Sensor") - - if threshold_type not in list(self.THRESHOLD_BIT_MASK.keys()): - raise ValueError("Invalid threshold type {} provided. Valid types " - "are {}".format(threshold_type, - list(self.THRESHOLD_BIT_MASK.keys()))) - - bit_mask = self.THRESHOLD_BIT_MASK[threshold_type] - - # Get Sensor Threshold - cmd_args = "{} {} {}".format(NetFn_SensorEvent, Cmd_GetSensorThreshold, - self.id) - thresholds = get_ipmitool_raw_output(cmd_args) - if len(thresholds) != 7: - return False, 0 - - valid_thresholds = thresholds.pop(0) - # Check whether particular threshold is readable - if valid_thresholds & (1 << bit_mask): - return self._get_converted_sensor_reading(thresholds[bit_mask]) - else: - return False, 0 - -class IpmiFru(object): - - def __init__(self, fru_id): - self.id = fru_id - - def _get_ipmitool_fru_print(self): - result = "" - command = "ipmitool fru print {}".format(self.id) - try: - proc = subprocess.Popen(command.split(), stdout=subprocess.PIPE, - universal_newlines=True, stderr=subprocess.STDOUT) - stdout = proc.communicate()[0] - proc.wait() - if not proc.returncode: - result = stdout.rstrip('\n') - except EnvironmentError: - pass - - return result - - def _get_from_fru(self, info): - """ - Returns a string containing the info from FRU - """ - fru_output = self._get_ipmitool_fru_print() - if not fru_output: - return "NA" - - info_req = re.search(r"%s\s*:(.*)" % info, fru_output) - if not info_req: - return "NA" - - return info_req.group(1).strip() - - def get_board_serial(self): - """ - Returns a string containing the Serial Number of the device. - """ - return self._get_from_fru('Board Serial') - - def get_board_part_number(self): - """ - Returns a string containing the Part Number of the device. - """ - return self._get_from_fru('Board Part Number') - - def get_board_mfr_id(self): - """ - Returns a string containing the manufacturer id of the FRU. - """ - return self._get_from_fru('Board Mfg') - - def get_board_product(self): - """ - Returns a string containing the manufacturer id of the FRU. - """ - return self._get_from_fru('Board Product') - - def get_fru_data(self, offset, count=1): - """ - Reads and returns the FRU data at the provided offset. - - Args: - offset (int) - FRU offset to read - count (int) - Number of bytes to read [optional, default = 1] - Returns: - A tuple (bool, list(int)) where the first element provides - the validity of the data read and the second element is a - list, the elements of which are the individual bytes of the - FRU data read. - """ - result_bytes = list() - is_valid = True - result = "" - - offset_LSB = offset & 0xFF - offset_MSB = offset & 0xFF00 - command = "ipmitool raw {} {} {} {} {} {}".format(NetFn_Storage, - Cmd_ReadFRUData, - self.id, offset_LSB, - offset_MSB, count) - try: - proc = subprocess.Popen(command.split(), stdout=subprocess.PIPE, - universal_newlines=True, stderr=subprocess.STDOUT) - stdout = proc.communicate()[0] - proc.wait() - if not proc.returncode: - result = stdout.rstrip('\n') - except EnvironmentError: - is_valid = False - - if (not result) or (not is_valid): - return False, result_bytes - - for i in result.split(): - result_bytes.append(int(i, 16)) - - read_count = result_bytes.pop(0) - if read_count != count: - return False, result_bytes - else: - return True, result_bytes diff --git a/platform/broadcom/sonic-platform-modules-dell/s5296f/modules/dell_s5296f_fpga_ocores.c b/platform/broadcom/sonic-platform-modules-dell/s5296f/modules/dell_s5296f_fpga_ocores.c index b9a50c69b225..0673d6e9d0ac 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s5296f/modules/dell_s5296f_fpga_ocores.c +++ b/platform/broadcom/sonic-platform-modules-dell/s5296f/modules/dell_s5296f_fpga_ocores.c @@ -1046,7 +1046,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) /* map the device memory or IO region into kernel virtual * address space */ - fpgapci->bar[i] = ioremap_nocache (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); + fpgapci->bar[i] = ioremap (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); if (!fpgapci->bar[i]) { PRINT ( "Could not map BAR #%d.\n", i); @@ -1060,7 +1060,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) { fpga_phys_addr = bar_start; - fpga_ctl_addr = ioremap_nocache (bar_start, FPGA_CTL_REG_SIZE); + fpga_ctl_addr = ioremap (bar_start, FPGA_CTL_REG_SIZE); fpga_base_addr = fpgapci->bar[i]; } diff --git a/platform/broadcom/sonic-platform-modules-dell/s6000/modules/dell_s6000_platform.c b/platform/broadcom/sonic-platform-modules-dell/s6000/modules/dell_s6000_platform.c index cbf506940ac9..0f3247ab4727 100644 --- a/platform/broadcom/sonic-platform-modules-dell/s6000/modules/dell_s6000_platform.c +++ b/platform/broadcom/sonic-platform-modules-dell/s6000/modules/dell_s6000_platform.c @@ -47,8 +47,10 @@ static struct i2c_mux_gpio_platform_data s6000_mux_platform_data = { .base_nr = S6000_MUX_BASE_NR, .values = s6000_mux_values, .n_values = ARRAY_SIZE(s6000_mux_values), +#if 0 .gpios = s6000_mux_gpios, .n_gpios = ARRAY_SIZE(s6000_mux_gpios), +#endif .idle = 0, }; @@ -1204,7 +1206,7 @@ static int __init cpld_probe(struct platform_device *pdev) } for (i = 0; i < CPLD_DEVICE_NUM; i++) { - pdata[i].client = i2c_new_dummy(parent, pdata[i].reg_addr); + pdata[i].client = i2c_new_dummy_device(parent, pdata[i].reg_addr); if (!pdata[i].client) { printk(KERN_WARNING "Fail to create dummy i2c client for addr %d\n", pdata[i].reg_addr); goto error; diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/iSMART_64 b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/iSMART_64 new file mode 100755 index 000000000000..e485a6ee104e Binary files /dev/null and b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/iSMART_64 differ diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/platform_reboot_pre_check b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/platform_reboot_pre_check new file mode 100755 index 000000000000..d7eac17862f6 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/platform_reboot_pre_check @@ -0,0 +1,38 @@ +#!/bin/bash +SSD_FW_UPGRADE="/host/ssd_fw_upgrade" + +_error_msg(){ + echo "The SSD on this unit is $1. Do not power-cycle/reboot this unit." + echo "soft-/fast-/warm-reboot is allowed." + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is $1. Do not power-cycle/reboot this unit." + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." +} + +# Check SSD Status +if [ -e $SSD_FW_UPGRADE/GPIO7_pending_upgrade ]; then + _error_msg "running older firmware" + exit 1 +fi + +if [ -e $SSD_FW_UPGRADE/GPIO7_low ] || [ -e $SSD_FW_UPGRADE/GPIO7_error ]; then + _error_msg "faulty" + exit 1 +fi + +if [ -e $SSD_FW_UPGRADE/GPIO7_high ]; then + iSMART="/usr/local/bin/iSMART_64" + iSMART_OPTIONS="-d /dev/sda" + + iSMART_CMD=`$iSMART $iSMART_OPTIONS` + + GPIO_STATUS=$(echo "$iSMART_CMD" | grep GPIO | awk '{print $NF}') + + if [ $GPIO_STATUS == "0x01" ];then + exit 0 + else + _error_msg "faulty" + exit 1 + fi +fi + +exit 1 diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_platform.sh b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_platform.sh index 5c7c2308c1f0..39c9074d5f52 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_platform.sh +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_platform.sh @@ -43,6 +43,8 @@ if [[ "$1" == "init" ]]; then /usr/local/bin/platform_watchdog_disable.sh fi + systemctl start --no-block s6100-ssd-upgrade-status.service + is_fast_warm=$(cat /proc/cmdline | grep SONIC_BOOT_TYPE | wc -l) if [[ "$is_fast_warm" == "1" ]]; then diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_mon.sh b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_mon.sh new file mode 100755 index 000000000000..8691d656bf93 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_mon.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +SSD_FW_UPGRADE="/host/ssd_fw_upgrade" + +if [ -e $SSD_FW_UPGRADE/GPIO7_high ]; then + iSMART="/usr/local/bin/iSMART_64" + iSMART_OPTIONS="-d /dev/sda" + + iSMART_CMD=`$iSMART $iSMART_OPTIONS` + GPIO_STATUS=$(echo "$iSMART_CMD" | grep GPIO | awk '{print $NF}') + + if [ $GPIO_STATUS != "0x01" ];then + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_low + systemctl stop s6100-ssd-monitor.timer + fi +else + systemctl stop s6100-ssd-monitor.timer +fi diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh new file mode 100755 index 000000000000..2c074fd3319c --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh @@ -0,0 +1,118 @@ +#!/bin/bash + +SSD_FW_UPGRADE="/host/ssd_fw_upgrade" + +if [ -e $SSD_FW_UPGRADE/GPIO7_high ]; then + systemctl start --no-block s6100-ssd-monitor.timer + exit 0 +fi + +if [ -e $SSD_FW_UPGRADE/GPIO7_low ] || [ -e $SSD_FW_UPGRADE/GPIO7_error ]; then + exit 0 +fi + +[ ! -d $SSD_FW_UPGRADE ] && mkdir $SSD_FW_UPGRADE + +SSD_UPGRADE_LOG="$SSD_FW_UPGRADE/upgrade.log" + +SMART_CMD=`smartctl -a /dev/sda` + +SSD_FW_VERSION=$(echo "$SMART_CMD" | grep "Firmware Version" | awk '{print $NF}') +SSD_FW_VERSION=${SSD_FW_VERSION,,} +SSD_MODEL=$(echo "$SMART_CMD" | grep "Device Model" | awk '{print $NF}') + +if [ -e $SSD_FW_UPGRADE/GPIO7_pending_upgrade ]; then + if [ $SSD_MODEL == "3IE" ] && [ $SSD_FW_VERSION == "s141002c" ]; then + # If SSD Firmware is not upgraded + exit 0 + fi + if [ $SSD_FW_VERSION == "s16425c1" ] || [ $SSD_FW_VERSION == "s16425cq" ]; then + # If SSD Firmware is not upgraded + exit 0 + fi +fi + +echo "$0 `date` SSD FW upgrade logs post reboot." >> $SSD_UPGRADE_LOG + +iSMART="/usr/local/bin/iSMART_64" +iSMART_OPTIONS="-d /dev/sda" +iSMART_CMD=`$iSMART $iSMART_OPTIONS` + +SSD_UPGRADE_STATUS1=`io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 09 --offset 211; io_rd_wr.py --get --offset 212` +SSD_UPGRADE_STATUS1=$(echo "$SSD_UPGRADE_STATUS1" | awk '{print $NF}') + +SSD_UPGRADE_STATUS2=`io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 0A --offset 211; io_rd_wr.py --get --offset 212` +SSD_UPGRADE_STATUS2=$(echo "$SSD_UPGRADE_STATUS2" | awk '{print $NF}') + +if [ $SSD_UPGRADE_STATUS1 == "2" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_error + + echo "$0 `date` Upgraded to unknown version after first mp_64 upgrade." >> $SSD_UPGRADE_LOG + +elif [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "2" ];then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_error + + echo "$0 `date` Upgraded to unknown version after second mp_64 upgrade." >> $SSD_UPGRADE_LOG + +elif [ $SSD_FW_VERSION == "s210506g" ] || [ $SSD_FW_VERSION == "s16425cg" ]; then + # If SSD Firmware is upgraded + GPIO_STATUS=$(echo "$iSMART_CMD" | grep GPIO | awk '{print $NF}') + + if [ $GPIO_STATUS != "0x01" ];then + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_low + echo "$0 `date` The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" >> $SSD_UPGRADE_LOG + echo "$0 `date` soft-/fast-/warm-reboot is allowed." >> $SSD_UPGRADE_LOG + + else + if [ $SSD_UPGRADE_STATUS1 == "0" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_high + systemctl start --no-block s6100-ssd-monitor.timer + + if [ $SSD_MODEL == "3IE" ];then + echo "$0 `date` SSD FW upgraded from S141002C to S210506G in first mp_64." >> $SSD_UPGRADE_LOG + else + echo "$0 `date` SSD FW upgraded from S16425c1 to S16425cG in first mp_64." >> $SSD_UPGRADE_LOG + fi + elif [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "1" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_low + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." + + echo "$0 `date` SSD entered loader mode in first mp_64 and upgraded to latest version after second mp_64." >> $SSD_UPGRADE_LOG + fi + fi + +else + if [ $SSD_UPGRADE_STATUS1 == "ff" ] && [ $SSD_UPGRADE_STATUS2 == "ff" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_pending_upgrade + + echo "$0 `date` SSD upgrade didn’t happen." >> $SSD_UPGRADE_LOG + + elif [ $SSD_UPGRADE_STATUS1 == "1" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_low + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." + + echo "$0 `date` SSD entered loader mode in first mp_64 upgrade." >> $SSD_UPGRADE_LOG + + if [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "0" ]; then + echo "$0 `date` SSD entered loader mode in first mp_64 and recovered back to older version in second mp_64." >> $SSD_UPGRADE_LOG + fi + fi + +fi + +echo "$0 `date` SMF Register 1 = $SSD_UPGRADE_STATUS1" >> $SSD_UPGRADE_LOG +echo "$0 `date` SMF Register 2 = $SSD_UPGRADE_STATUS2" >> $SSD_UPGRADE_LOG +echo "$SMART_CMD" >> $SSD_UPGRADE_LOG +echo "$iSMART_CMD" >> $SSD_UPGRADE_LOG +sync diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin new file mode 120000 index 000000000000..180742bbc4d5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin @@ -0,0 +1 @@ +fast-reboot_plugin \ No newline at end of file diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service new file mode 100644 index 000000000000..75e3b224b65b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service @@ -0,0 +1,12 @@ +[Unit] +Description=Dell S6100 SSD monitoring poller +DefaultDependencies=no + +[Service] +User=root +ExecStart=/usr/local/bin/s6100_ssd_mon.sh +RemainAfterExit=no + +[Install] +WantedBy=multi-user.target + diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer new file mode 100644 index 000000000000..ede2b636d80b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer @@ -0,0 +1,12 @@ +[Unit] +Description=Dell S6100 SSD monitoring poller timer +DefaultDependencies=no +After=pmon.service + +[Timer] +OnBootSec=5min +OnUnitActiveSec=60min + +[Install] +WantedBy=timers.target + diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service new file mode 100644 index 000000000000..4de9cf73b965 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service @@ -0,0 +1,14 @@ +[Unit] +Description= Checking Dell S6100 SSD upgrade status +After=pmon.service +DefaultDependencies=no + +[Service] +User=root +Type=oneshot +ExecStart=/usr/local/bin/s6100_ssd_upgrade_status.sh +RemainAfterExit=no + +[Install] +WantedBy=multi-user.target + diff --git a/platform/broadcom/sonic-platform-modules-dell/z9264f/modules/dell_z9264f_fpga_ocores.c b/platform/broadcom/sonic-platform-modules-dell/z9264f/modules/dell_z9264f_fpga_ocores.c index c3bd78131e87..8287f67c34f0 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9264f/modules/dell_z9264f_fpga_ocores.c +++ b/platform/broadcom/sonic-platform-modules-dell/z9264f/modules/dell_z9264f_fpga_ocores.c @@ -1072,7 +1072,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) /* map the device memory or IO region into kernel virtual * address space */ - fpgapci->bar[i] = ioremap_nocache (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); + fpgapci->bar[i] = ioremap (bar_start + FPGALOGIC_I2C_BASE, I2C_PCI_MAX_BUS * FPGALOGIC_CH_OFFSET); if (!fpgapci->bar[i]) { PRINT ( "Could not map BAR #%d.\n", i); @@ -1086,7 +1086,7 @@ static int map_bars(struct fpgapci_dev *fpgapci, struct pci_dev *dev) { fpga_phys_addr = bar_start; - fpga_ctl_addr = ioremap_nocache (bar_start, FPGA_CTL_REG_SIZE); + fpga_ctl_addr = ioremap (bar_start, FPGA_CTL_REG_SIZE); fpga_base_addr = fpgapci->bar[i]; } diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py index a412122bae48..fac058f45207 100755 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/chassis.py @@ -110,11 +110,11 @@ class Chassis(ChassisBase): 34: 2, } - reboot_reason_dict = { 0x11: (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Power on reset"), + reboot_reason_dict = { 0x11: (ChassisBase.REBOOT_CAUSE_POWER_LOSS, "Power on reset"), 0x22: (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Soft-set CPU warm reset"), 0x33: (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Soft-set CPU cold reset"), 0x66: (ChassisBase.REBOOT_CAUSE_WATCHDOG, "GPIO watchdog reset"), - 0x77: (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Power cycle reset"), + 0x77: (ChassisBase.REBOOT_CAUSE_POWER_LOSS, "Power cycle reset"), 0x88: (ChassisBase.REBOOT_CAUSE_WATCHDOG, "CPLD watchdog reset") } @@ -270,6 +270,15 @@ def get_serial_number(self): """ return self._eeprom.serial_number_str() + def get_revision(self): + """ + Retrieves the hardware revision of the device + + Returns: + string: Revision value of device + """ + return self._eeprom.revision_str() + def get_system_eeprom_info(self): """ Retrieves the full content of system EEPROM information for the chassis diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py index eda04ae3bd8e..fe7da80d012f 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/eeprom.py @@ -51,13 +51,7 @@ def __init__(self): tlv = eeprom[tlv_index:tlv_index + 2 + eeprom[tlv_index + 1]] code = "0x%02X" % tlv[0] - - if tlv[0] == self._TLV_CODE_VENDOR_EXT: - value = str((tlv[2] << 24) | (tlv[3] << 16) | - (tlv[4] << 8) | tlv[5]) - value += tlv[6:6 + tlv[1]].decode('ascii') - else: - name, value = self.decoder(None, tlv) + name, value = self.decoder(None, tlv) self.eeprom_tlv_dict[code] = value if eeprom[tlv_index] == self._TLV_CODE_CRC_32: @@ -124,7 +118,7 @@ def revision_str(self): Returns the device revision """ (is_valid, results) = self.get_tlv_field( - self.eeprom_data, self._TLV_CODE_DEVICE_VERSION) + self.eeprom_data, self._TLV_CODE_LABEL_REVISION) if not is_valid: return "N/A" diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan.py index 6ffadb2a1e5f..4fce691c02f1 100755 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan.py @@ -48,6 +48,10 @@ def __init__(self, fantray_index=1, fan_index=1, psu_fan=False, dependency=None) is_discrete=True) self.speed_sensor = IpmiSensor(self.FAN_SENSOR_MAPPING[self.index]["Speed"]) self.fan_dir_raw_cmd = "0x3a 0x0a {}".format(fantray_index) + if self.fanindex == 1: + self.max_speed = 24700 + else: + self.max_speed = 29700 else: self.dependency = dependency self.fanindex = fan_index @@ -55,7 +59,7 @@ def __init__(self, fantray_index=1, fan_index=1, psu_fan=False, dependency=None) is_discrete=True) self.speed_sensor = IpmiSensor(self.PSU_FAN_SENSOR_MAPPING[self.fanindex]["Speed"]) self.fan_dir_raw_cmd = "0x3a 0x0a {}".format(7+(fan_index-1)) - self.max_speed = 23500 + self.max_speed = 26500 def get_name(self): """ diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan_drawer.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan_drawer.py index f7ea8a4cbf6c..98d9f95c53fb 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan_drawer.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/fan_drawer.py @@ -103,3 +103,13 @@ def set_status_led(self, color): # Fan tray status LED controlled by BMC # Return True to avoid thermalctld alarm return True + + def get_maximum_consumed_power(self): + """ + Retrives the maximum power drawn by Fan Drawer + + Returns: + A float, with value of the maximum consumable power of the + component. + """ + return 36.0 diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/psu.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/psu.py index 28d62aa0152b..5aeebd4144b2 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/psu.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/psu.py @@ -87,6 +87,19 @@ def get_serial(self): """ return self.fru.get_board_serial() + def get_revision(self): + """ + Retrieves the hardware revision of the device + + Returns: + string: Revision value of device + """ + serial = self.fru.get_board_serial() + if serial != "NA" and len(serial) == 23: + return serial[-3:] + else: + return "NA" + def get_status(self): """ Retrieves the operational status of the PSU @@ -193,6 +206,20 @@ def get_power(self): return float(power) + def get_maximum_supplied_power(self): + """ + Retrieves the maximum supplied power by PSU + + Returns: + A float number, the maximum power output in Watts. + e.g. 1200.1 + """ + is_valid, power = self.power_sensor.get_threshold("UpperCritical") + if not is_valid: + return None + + return float(power) + def get_powergood_status(self): """ Retrieves the powergood status of PSU diff --git a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/sfp.py b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/sfp.py index 4fe4b261cad0..744f47236208 100644 --- a/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/sfp.py +++ b/platform/broadcom/sonic-platform-modules-dell/z9332f/sonic_platform/sfp.py @@ -713,6 +713,7 @@ def get_transceiver_bulk_status(self): Retrieves transceiver bulk status of this SFP """ tx_bias_list = [] + tx_power_list = [] rx_power_list = [] transceiver_dom_dict = {} transceiver_dom_dict = dict.fromkeys(dom_dict_keys, 'N/A') @@ -751,7 +752,7 @@ def get_transceiver_bulk_status(self): rx_power_list = self.get_rx_power() if self.sfp_type == 'QSFP_DD': - if tx_bias_list is not None: + if tx_bias_list: transceiver_dom_dict['tx1bias'] = tx_bias_list[0] transceiver_dom_dict['tx2bias'] = tx_bias_list[1] transceiver_dom_dict['tx3bias'] = tx_bias_list[2] @@ -762,17 +763,17 @@ def get_transceiver_bulk_status(self): transceiver_dom_dict['tx8bias'] = tx_bias_list[7] elif self.sfp_type == 'QSFP': - if tx_bias_list is not None: + if tx_bias_list: transceiver_dom_dict['tx1bias'] = tx_bias_list[0] transceiver_dom_dict['tx2bias'] = tx_bias_list[1] transceiver_dom_dict['tx3bias'] = tx_bias_list[2] transceiver_dom_dict['tx4bias'] = tx_bias_list[3] else: - if tx_bias_list is not None: + if tx_bias_list: transceiver_dom_dict['tx1bias'] = tx_bias_list[0] if self.sfp_type == 'QSFP_DD': - if rx_power_list is not None: + if rx_power_list: transceiver_dom_dict['rx1power'] = rx_power_list[0] transceiver_dom_dict['rx2power'] = rx_power_list[1] transceiver_dom_dict['rx3power'] = rx_power_list[2] @@ -783,17 +784,17 @@ def get_transceiver_bulk_status(self): transceiver_dom_dict['rx8power'] = rx_power_list[7] elif self.sfp_type == 'QSFP': - if rx_power_list is not None: + if rx_power_list: transceiver_dom_dict['rx1power'] = rx_power_list[0] transceiver_dom_dict['rx2power'] = rx_power_list[1] transceiver_dom_dict['rx3power'] = rx_power_list[2] transceiver_dom_dict['rx4power'] = rx_power_list[3] else: - if rx_power_list is not None: + if rx_power_list: transceiver_dom_dict['rx1power'] = rx_power_list[0] if self.sfp_type == 'QSFP_DD': - if tx_power_list is not None: + if tx_power_list: transceiver_dom_dict['tx1power'] = tx_power_list[0] transceiver_dom_dict['tx2power'] = tx_power_list[1] transceiver_dom_dict['tx3power'] = tx_power_list[2] @@ -803,14 +804,14 @@ def get_transceiver_bulk_status(self): transceiver_dom_dict['tx7power'] = tx_power_list[6] transceiver_dom_dict['tx8power'] = tx_power_list[7] elif self.sfp_type == 'QSFP': - if tx_power_list is not None: + if tx_power_list: transceiver_dom_dict['tx1power'] = tx_power_list[0] transceiver_dom_dict['tx2power'] = tx_power_list[1] transceiver_dom_dict['tx3power'] = tx_power_list[2] transceiver_dom_dict['tx4power'] = tx_power_list[3] else: - if tx_power_list is not None: - transceiver_dom_dict['tx1power'] = tx_power_list[0] + if tx_power_list: + transceiver_dom_dict['tx1power'] = tx_power_list[0] transceiver_dom_dict['rx_los'] = rx_los transceiver_dom_dict['tx_fault'] = tx_fault transceiver_dom_dict['reset_status'] = reset_state diff --git a/platform/broadcom/sonic-platform-modules-juniper/common/modules/gpio-tmc.c b/platform/broadcom/sonic-platform-modules-juniper/common/modules/gpio-tmc.c index 7b02e8a5bc74..35de9e007b46 100644 --- a/platform/broadcom/sonic-platform-modules-juniper/common/modules/gpio-tmc.c +++ b/platform/broadcom/sonic-platform-modules-juniper/common/modules/gpio-tmc.c @@ -609,7 +609,7 @@ static int tmc_gpio_probe(struct platform_device *pdev) dev_info(dev, "TMC GPIO resource 0x%llx, %llu\n", res->start, resource_size(res)); - chip->base = devm_ioremap_nocache(dev, res->start, resource_size(res)); + chip->base = devm_ioremap(dev, res->start, resource_size(res)); if (!chip->base) return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-juniper/common/modules/i2c-tmc.c b/platform/broadcom/sonic-platform-modules-juniper/common/modules/i2c-tmc.c index afd0311dc130..15e7334434c6 100644 --- a/platform/broadcom/sonic-platform-modules-juniper/common/modules/i2c-tmc.c +++ b/platform/broadcom/sonic-platform-modules-juniper/common/modules/i2c-tmc.c @@ -1029,7 +1029,7 @@ static int tmc_i2c_probe(struct platform_device *pdev) dev_info(dev, "Tmc I2C Accel resource 0x%llx, %llu\n", res->start, resource_size(res)); - tmc->membase = devm_ioremap_nocache(dev, res->start, + tmc->membase = devm_ioremap(dev, res->start, resource_size(res)); if (!tmc->membase) return -ENOMEM; @@ -1041,7 +1041,7 @@ static int tmc_i2c_probe(struct platform_device *pdev) dev_info(dev, "Tmc I2C Mem resource 0x%llx, %llu\n", res->start, resource_size(res)); - tmc->dpmbase = devm_ioremap_nocache(dev, res->start, + tmc->dpmbase = devm_ioremap(dev, res->start, resource_size(res)); if (!tmc->dpmbase) return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-juniper/common/modules/jnx-refpga-tmc.c b/platform/broadcom/sonic-platform-modules-juniper/common/modules/jnx-refpga-tmc.c index ef36bca72e9d..f291a9c73e55 100644 --- a/platform/broadcom/sonic-platform-modules-juniper/common/modules/jnx-refpga-tmc.c +++ b/platform/broadcom/sonic-platform-modules-juniper/common/modules/jnx-refpga-tmc.c @@ -529,7 +529,7 @@ static int jnx_refpga_tmc_probe(struct platform_device *pdev) return -ENODEV; } - tmc_membase = devm_ioremap_nocache(dev, res->start, resource_size(res)); + tmc_membase = devm_ioremap(dev, res->start, resource_size(res)); if (!tmc_membase) { dev_err(dev, "ioremap failed\n"); return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-juniper/debian/rules b/platform/broadcom/sonic-platform-modules-juniper/debian/rules index 1a781912a544..d672bbdf220f 100755 --- a/platform/broadcom/sonic-platform-modules-juniper/debian/rules +++ b/platform/broadcom/sonic-platform-modules-juniper/debian/rules @@ -13,7 +13,7 @@ include /usr/share/dpkg/pkg-info.mk export INSTALL_MOD_DIR:=extra -PYTHON ?= python2 +PYTHON ?= python3 PACKAGE_PRE_NAME := sonic-platform-juniper KVERSION ?= $(shell uname -r) diff --git a/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/jnx-tmc-psu.c b/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/jnx-tmc-psu.c index 86eeb6f88e45..1b30327bd8f3 100644 --- a/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/jnx-tmc-psu.c +++ b/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/jnx-tmc-psu.c @@ -109,7 +109,7 @@ static int tmc_psu_probe(struct platform_device *pdev) return -ENODEV; } - addr = devm_ioremap_nocache(dev, res->start, resource_size(res)); + addr = devm_ioremap(dev, res->start, resource_size(res)); if (!addr) { dev_err(dev, "ioremap failed\n"); return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/leds-jnx-tmc.c b/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/leds-jnx-tmc.c index 134faefd70a3..9b1ea4d11ce1 100644 --- a/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/leds-jnx-tmc.c +++ b/platform/broadcom/sonic-platform-modules-juniper/qfx5200/modules/leds-jnx-tmc.c @@ -121,7 +121,7 @@ static int jnx_tmc_leds_init(struct device *dev, struct tmc_led_data *ild, return -ENODEV; } - addr = devm_ioremap_nocache(dev, res->start, resource_size(res)); + addr = devm_ioremap(dev, res->start, resource_size(res)); if (!addr) { dev_err(dev, "ioremap failed\n"); return -ENOMEM; diff --git a/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/__init__.py b/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/__init__.py index 9e1b2e56b1c4..aafda353d2ce 100755 --- a/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/__init__.py +++ b/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/__init__.py @@ -1 +1 @@ -import platform +from . import platform diff --git a/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/chassis.py index 4f673ab086ba..9eb9b07a618f 100755 --- a/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-juniper/sonic_platform/chassis.py @@ -36,7 +36,7 @@ try: import os - import commands + import subprocess import sys import time import syslog @@ -65,7 +65,7 @@ def get_parameter_value(self,parameter_name): return content[1:] return "False" except IOError: - print "Error: File not found" + print("Error: File not found") return "False" def get_product_name(self): @@ -242,7 +242,7 @@ def get_reboot_cause(self): log_info("Juniper Platform name: {} and {}".format(self.get_platform_name(), platform_name)) if str(platform_name) == "x86_64-juniper_networks_qfx5210-r0": log_info("Juniper Platform QFX5210 ") - status, last_reboot_reason = commands.getstatusoutput("i2cget -f -y 0 0x65 0x24") + status, last_reboot_reason = subprocess.getstatusoutput("i2cget -f -y 0 0x65 0x24") if (status == 0): if last_reboot_reason == "0x80": return (ChassisBase.REBOOT_CAUSE_NON_HARDWARE, None) @@ -256,7 +256,7 @@ def get_reboot_cause(self): return (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Unknown reason") else: time.sleep(3) - status, last_reboot_reason = commands.getstatusoutput("i2cget -f -y 0 0x65 0x24") + status, last_reboot_reason = subprocess.getstatusoutput("i2cget -f -y 0 0x65 0x24") if last_reboot_reason == "0x80": return (ChassisBase.REBOOT_CAUSE_NON_HARDWARE, None) elif last_reboot_reason == "0x40" or last_reboot_reason == "0x08": @@ -270,9 +270,9 @@ def get_reboot_cause(self): elif str(platform_name) == "x86_64-juniper_networks_qfx5200-r0" : log_info("Juniper Platform QFX5200 ") - status, major_version = commands.getstatusoutput("busybox devmem 0xFED50000 8") - status, minor_version = commands.getstatusoutput("busybox devmem 0xFED50001 8") - status, last_reboot_reason = commands.getstatusoutput("busybox devmem 0xFED50004 8") + status, major_version = subprocess.getstatusoutput("busybox devmem 0xFED50000 8") + status, minor_version = subprocess.getstatusoutput("busybox devmem 0xFED50001 8") + status, last_reboot_reason = subprocess.getstatusoutput("busybox devmem 0xFED50004 8") if (status == 0): if (major_version == "0x31") and (minor_version == "0x03") and (last_reboot_reason == "0x80"): return (ChassisBase.REBOOT_CAUSE_NON_HARDWARE, None) @@ -288,9 +288,9 @@ def get_reboot_cause(self): return (ChassisBase.REBOOT_CAUSE_HARDWARE_OTHER, "Unknown reason") else: time.sleep(3) - status, major_version = commands.getstatusoutput("busybox devmem 0xFED50000 8") - status, minor_version = commands.getstatusoutput("busybox devmem 0xFED50001 8") - status, last_reboot_reason = commands.getstatusoutput("busybox devmem 0xFED50004 8") + status, major_version = subprocess.getstatusoutput("busybox devmem 0xFED50000 8") + status, minor_version = subprocess.getstatusoutput("busybox devmem 0xFED50001 8") + status, last_reboot_reason = subprocess.getstatusoutput("busybox devmem 0xFED50004 8") if (status == 0): if (major_version == "0x31") and (minor_version == "0x03") and (last_reboot_reason == "0x80"): return (ChassisBase.REBOOT_CAUSE_NON_HARDWARE, None) diff --git a/platform/broadcom/sonic-platform-modules-nokia b/platform/broadcom/sonic-platform-modules-nokia new file mode 160000 index 000000000000..0253956b49da --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-nokia @@ -0,0 +1 @@ +Subproject commit 0253956b49dae24ec25a114e44a0d6479c1daba0 diff --git a/platform/broadcom/sonic-platform-modules-ragile/common/script/ragileutil.py b/platform/broadcom/sonic-platform-modules-ragile/common/script/ragileutil.py index b051b5b02554..7ef2d933d26c 100755 --- a/platform/broadcom/sonic-platform-modules-ragile/common/script/ragileutil.py +++ b/platform/broadcom/sonic-platform-modules-ragile/common/script/ragileutil.py @@ -1413,7 +1413,7 @@ def fac_fans_setmac_tlv(ret): print("\n*******************************\n") util_show_fanse2(fans) - if getInputCheck("check input correctly or not(Yes/No):") == True: + if getInputCheck("check input correctly or not(Yes/No):") == True: for fan in fans: log_debug("ouput fan") fac_fan_setmac(fan) diff --git a/platform/broadcom/sonic-platform-modules-ragile/debian/control b/platform/broadcom/sonic-platform-modules-ragile/debian/control index 74012e876528..ceef3336569b 100755 --- a/platform/broadcom/sonic-platform-modules-ragile/debian/control +++ b/platform/broadcom/sonic-platform-modules-ragile/debian/control @@ -7,3 +7,7 @@ Standards-Version: 3.9.3 Package: platform-modules-ragile-ra-b6510-48v8c Architecture: amd64 Description: kernel modules for platform devices such as fan, led, sfp + +Package: platform-modules-ragile-ra-b6910-64c +Architecture: amd64 +Description: kernel modules for platform devices such as fan, led, sfp diff --git a/platform/broadcom/sonic-platform-modules-ragile/debian/rule-ragile.mk b/platform/broadcom/sonic-platform-modules-ragile/debian/rule-ragile.mk index f533814fc4e0..c3294dc9e177 100755 --- a/platform/broadcom/sonic-platform-modules-ragile/debian/rule-ragile.mk +++ b/platform/broadcom/sonic-platform-modules-ragile/debian/rule-ragile.mk @@ -1,5 +1,6 @@ currentdir = $(shell pwd) MODULE_DIRS := ra-b6510-48v8c +MODULE_DIRS += ra-b6910-64c export MODULE_DIRS diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/LICENSE b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/LICENSE new file mode 100755 index 000000000000..d37122689f3e --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/LICENSE @@ -0,0 +1,15 @@ +Copyright (C) 2016 Microsoft, Inc +Copyright (C) 2018 Ragile Network Corporation +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/MAINTAINERS b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/MAINTAINERS new file mode 100755 index 000000000000..ec8222405085 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/MAINTAINERS @@ -0,0 +1,5 @@ +# See the SONiC project governance document for more information + +Name = "support" +Email = "support@ragile.com" +Mailinglist = sonicproject@googlegroups.com diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/Makefile b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/Makefile new file mode 100755 index 000000000000..9e262d7c095e --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/Makefile @@ -0,0 +1,25 @@ +PWD = $(shell pwd) +DIR_KERNEL_SRC = $(PWD)/modules/driver +EXTRA_CFLAGS:= -I$(M)/include +EXTRA_CFLAGS+= -Wall +SUB_BUILD_DIR = $(PWD)/build +INSTALL_DIR = $(SUB_BUILD_DIR)/$(KERNEL_SRC)/$(INSTALL_MOD_DIR) +INSTALL_SCRIPT_DIR = $(SUB_BUILD_DIR)/usr/local/bin +INSTALL_SERVICE_DIR = $(SUB_BUILD_DIR)/lib/systemd/system/ + +KBUILD_EXTRA_SYMBOLS += $(DIR_KERNEL_SRC)/Module.symvers +export KBUILD_EXTRA_SYMBOLS + +all: + $(MAKE) -C $(KBUILD_OUTPUT) M=$(DIR_KERNEL_SRC) modules + @if [ ! -d ${INSTALL_DIR} ]; then mkdir -p ${INSTALL_DIR} ;fi + cp -r $(DIR_KERNEL_SRC)/*.ko $(INSTALL_DIR) + @if [ ! -d ${INSTALL_SCRIPT_DIR} ]; then mkdir -p ${INSTALL_SCRIPT_DIR} ;fi + cp -r $(PWD)/config/* $(INSTALL_SCRIPT_DIR) + @if [ ! -d ${INSTALL_SERVICE_DIR} ]; then mkdir -p ${INSTALL_SERVICE_DIR} ;fi + cp $(PWD)/systemd/*.service $(INSTALL_SERVICE_DIR) +clean: + rm -f ${DIR_KERNEL_SRC}/*.o ${DIR_KERNEL_SRC}/*.ko ${DIR_KERNEL_SRC}/*.mod.c ${DIR_KERNEL_SRC}/.*.cmd + rm -f ${DIR_KERNEL_SRC}/Module.markers ${DIR_KERNEL_SRC}/Module.symvers ${DIR_KERNEL_SRC}/modules.order + rm -rf ${DIR_KERNEL_SRC}/.tmp_versions + rm -rf $(SUB_BUILD_DIR) diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/README.md b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/README.md new file mode 100755 index 000000000000..787636c4ad20 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/README.md @@ -0,0 +1 @@ +Device drivers for support of ragile platform for the SONiC project diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/config/x86_64_ragile_ra_b6910_64c_r0_config.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/config/x86_64_ragile_ra_b6910_64c_r0_config.py new file mode 100755 index 000000000000..a25852068fe5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/config/x86_64_ragile_ra_b6910_64c_r0_config.py @@ -0,0 +1,420 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- +from ragilecommon import * +PCA9548START = -1 +PCA9548BUSEND = -2 + +RAGILE_CARDID = 0x0000404c +RAGILE_PRODUCTNAME = "RA-B6910-64C" + +fanlevel = { + "tips": ["LOW", "MEDIUM", "HIGH"], + "level": [75, 150, 255], + "low_speed": [750, 4250, 6750], + "high_speed": [4500, 7500, 10000], +} + +# fit with pddf +fanloc = [ + { + "name": "FAN1/FAN2/FAN3/FAN4", + "location": "2-0066/fan1_pwm", + "childfans": [ + {"name": "FAN1", "location": "2-0066/fan1_input"}, + {"name": "FAN2", "location": "2-0066/fan2_input"}, + {"name": "FAN3", "location": "2-0066/fan3_input"}, + {"name": "FAN4", "location": "2-0066/fan4_input"}, + ], + }, +] + +CPLDVERSIONS = [ + {"bus": 2, "devno": 0x33, "name": "MAC BOARD CPLD-A"}, + {"bus": 2, "devno": 0x35, "name": "MAC BOARD CPLD-B"}, + {"bus": 2, "devno": 0x37, "name": "CONNECT BOARD CPLD-A"}, + {"bus": 0, "devno": 0x0d, "name": "CPU BOARD CPLD"}, +] + + +MONITOR_TEMP_MIN = 34 +MONITOR_K = 14 +MONITOR_MAC_IN = 35 +MONITOR_DEFAULT_SPEED = 0x80 +MONITOR_MAX_SPEED = 0xFF +MONITOR_MIN_SPEED = 0x33 +MONITOR_MAC_ERROR_SPEED = 0XBB +MONITOR_FAN_TOTAL_NUM = 3 +MONITOR_MAC_UP_TEMP = 40 +MONITOR_MAC_LOWER_TEMP = -40 +MONITOR_MAC_MAX_TEMP = 100 + +MONITOR_FALL_TEMP = 2 +MONITOR_MAC_WARNING_THRESHOLD = 100 +MONITOR_OUTTEMP_WARNING_THRESHOLD = 85 +MONITOR_BOARDTEMP_WARNING_THRESHOLD = 85 +MONITOR_CPUTEMP_WARNING_THRESHOLD = 85 +MONITOR_INTEMP_WARNING_THRESHOLD = 70 + +MONITOR_MAC_CRITICAL_THRESHOLD = 105 +MONITOR_OUTTEMP_CRITICAL_THRESHOLD = 90 +MONITOR_BOARDTEMP_CRITICAL_THRESHOLD = 90 +MONITOR_CPUTEMP_CRITICAL_THRESHOLD = 100 +MONITOR_INTEMP_CRITICAL_THRESHOLD = 80 +MONITOR_CRITICAL_NUM = 2 +MONITOR_SHAKE_TIME = 10 +MONITOR_INTERVAL = 60 + + +MONITOR_SYS_LED = [{"bus": 2, "devno": 0x35, "addr": 0xb2, "yellow": 0x03, "red": 0x02, "green": 0x01}] + +MONITOR_SYS_FAN_LED =[ + {"bus": 2, "devno": 0x35, "addr": 0xb4, "yellow": 0x06, "red": 0x02, "green": 0x04}, +] + +MONITOR_FANS_LED = [ + {"bus": 2, "devno": 0x32, "addr": 0x23, "green": 0x09, "red": 0x0a}, + {"bus": 2, "devno": 0x32, "addr": 0x24, "green": 0x09, "red": 0x0a}, + {"bus": 2, "devno": 0x32, "addr": 0x25, "green": 0x09, "red": 0x0a} +] + +MONITOR_SYS_PSU_LED = [ + {"bus": 2, "devno": 0x35, "addr": 0xb3, "yellow": 0x06, "red": 0x02, "green": 0x04}, +] + +MONITOR_FAN_STATUS = [ + {'status': 'green' , 'minOkNum': 3, 'maxOkNum': 3}, + {'status': 'yellow', 'minOkNum': 2, 'maxOkNum': 2}, + {'status': 'red' , 'minOkNum': 0, 'maxOkNum': 1}, +] + +MONITOR_PSU_STATUS = [ + {'status': 'green' , 'minOkNum': 2, 'maxOkNum': 2}, + {'status': 'yellow', 'minOkNum': 1, 'maxOkNum': 1}, + {'status': 'red' , 'minOkNum': 0, 'maxOkNum': 0}, +] + +MONITOR_DEV_STATUS = { + "temperature": [ + {"name": "lm75in", "location": "/sys/bus/i2c/devices/2-0048/hwmon/*/temp1_input"}, + {"name": "lm75out", "location": "/sys/bus/i2c/devices/2-0049/hwmon/*/temp1_input"}, + {"name": "lm75hot", "location": "/sys/bus/i2c/devices/2-004a/hwmon/*/temp1_input"}, + {"name": "cpu", "location": "/sys/class/hwmon/hwmon0"}, + ], + "fans": [ + { + "name": "fan1", + "presentstatus": {"bus": 2, "loc": 0x37, "offset": 0x30, 'bit': 0}, + "rollstatus": [ + {"name": "motor1", "bus": 2, "loc": 0x37, "offset": 0x31, 'bit': 0}, + ] + }, + { + "name": "fan2", + "presentstatus": {"bus": 2, "loc": 0x37, "offset": 0x30, 'bit': 1}, + "rollstatus": [ + {"name": "motor1", "bus": 2, "loc": 0x37, "offset": 0x31, 'bit': 1}, + ] + }, + { + "name": "fan3", + "presentstatus": {"bus": 2, "loc": 0x37, "offset": 0x30, 'bit': 2}, + "rollstatus": [ + {"name": "motor1", "bus": 2, "loc": 0x37, "offset": 0x31, 'bit': 2}, + ] + }, + ], + "psus": [ + {"name": "psu1", "bus": 2, "loc": 0x37, "offset": 0x51, "gettype": "i2c", 'presentbit': 0, 'statusbit': 1, 'alertbit': 2}, + {"name": "psu2", "bus": 2, "loc": 0x37, "offset": 0x51, "gettype": "i2c", 'presentbit': 4, 'statusbit': 5, 'alertbit': 6}, + ], +} + +MONITOR_DEV_STATUS_DECODE = { + 'fanpresent': {0: 'PRESENT', 1: 'ABSENT', 'okval': 0}, + 'fanroll' : {0: 'STALL' , 1: 'ROLL', 'okval': 1}, + 'psupresent': {0: 'PRESENT', 1: 'ABSENT', 'okval': 0}, + 'psuoutput' : {0: 'FAULT' , 1: 'NORMAL', 'okval': 1}, + 'psualert' : {0: 'FAULT' , 1: 'NORMAL', 'okval': 1}, +} +################################################################### + + +MAC_AVS_PARAM = { + 0x68: 0x03c0, + 0x69: 0x03bc, + 0x6a: 0x03b6, + 0x6b: 0x03b0, + 0x6c: 0x03aa, + 0x6d: 0x03a3, + 0x6e: 0x039d, + 0x6f: 0x0397, + 0x70: 0x0391, + 0x71: 0x038a, + 0x72: 0x0384, + 0x73: 0x037e, + 0x74: 0x0379, + 0x75: 0x0371, + 0x76: 0x036b, + 0x77: 0x0365, + 0x78: 0x035f, + 0x79: 0x0358, + 0x7a: 0x0352, + 0x7b: 0x034c, + 0x7c: 0x0348 +} + +MAC_DEFAULT_PARAM = { + "type": 1, + "default": 0x74, + "loopaddr": 0x00, + "loop": 0x00, + "open": 0x00, + "close": 0x40, + "bus": 2, + "devno": 0x60, + "addr": 0x21, + "protectaddr": 0x10, + "sdkreg": "DMU_PCU_OTP_CONFIG_8", + "sdkcmd": "scdcmd", + "sdkcmdargs": ["-t", 5], + "sdktype": 1, + "macregloc": 24, + "mask": 0xff +} + + +DEVICE = [] +DRIVERLISTS = [] + +""" +DRIVERLISTS = [ + {"name": "i2c_dev", "delay": 0}, + {"name": "i2c_algo_bit", "delay": 0}, + {"name": "i2c_gpio", "delay": 0}, + {"name": "i2c_mux", "delay": 0}, + {"name": "i2c_mux_pca9641", "delay": 0}, + {"name": "i2c_mux_pca954x force_create_bus=1", "delay": 0}, # force_deselect_on_exit=1 + {"name": "lm75", "delay": 0}, + {"name": "optoe", "delay": 0}, + {"name": "at24", "delay": 0}, + {"name": "rg_sff", "delay": 0}, + {"name": "ragile_b6510_platform", "delay": 0}, + {"name": "ragile_platform", "delay": 0}, + {"name": "rg_avs", "delay": 0}, + {"name": "rg_cpld", "delay": 0}, + {"name": "rg_fan", "delay": 0}, + {"name": "rg_psu", "delay": 0}, + {"name": "pmbus_core", "delay": 0}, + {"name": "csu550", "delay": 0}, + {"name": "rg_gpio_xeon", "delay": 0}, + {"name": "firmware_driver", "delay": 0}, + {"name": "firmware_bin", "delay": 0}, + {"name": "ragile_common dfd_my_type=0x404c", "delay": 0}, + {"name": "lpc_dbg", "delay": 0}, +] + +DEVICE = [ + {"name": "pca9641", "bus": 0, "loc": 0x10}, + {"name": "pca9548", "bus": 2, "loc": 0x70}, + {"name": "lm75", "bus": 2, "loc": 0x48}, + {"name": "lm75", "bus": 2, "loc": 0x49}, + {"name": "lm75", "bus": 2, "loc": 0x4a}, + {"name": "24c02", "bus": 2, "loc": 0x57}, + {"name": "rg_cpld", "bus": 0, "loc": 0x32}, + {"name": "rg_cpld", "bus": 1, "loc": 0x34}, + {"name": "rg_cpld", "bus": 1, "loc": 0x36}, + {"name": "rg_cpld", "bus": 2, "loc": 0x33}, + {"name": "rg_cpld", "bus": 2, "loc": 0x35}, + {"name": "rg_cpld", "bus": 2, "loc": 0x37}, + {"name": "rg_avs", "bus": 2, "loc": 0x60}, + {"name": "pca9548", "bus": 1, "loc": 0x70}, + {"name": "pca9548", "bus": 1, "loc": 0x71}, + {"name": "pca9548", "bus": 1, "loc": 0x72}, + {"name": "pca9548", "bus": 1, "loc": 0x73}, + {"name": "pca9548", "bus": 1, "loc": 0x74}, + {"name": "pca9548", "bus": 1, "loc": 0x75}, + {"name": "pca9548", "bus": 1, "loc": 0x76}, + {"name": "pca9548", "bus": 1, "loc": 0x77}, + {"name": "rg_fan", "bus": 3, "loc": 0x53}, + {"name": "rg_fan", "bus": 4, "loc": 0x53}, + {"name": "rg_fan", "bus": 5, "loc": 0x53}, + + {"name": "rg_psu", "bus": 7, "loc": 0x50}, + {"name": "dps550", "bus": 7, "loc": 0x58}, + {"name": "rg_psu", "bus": 8, "loc": 0x53}, + {"name": "dps550", "bus": 8, "loc": 0x5b}, + + {"name": "optoe1", "bus": 11, "loc": 0x50}, + {"name": "optoe1", "bus": 12, "loc": 0x50}, + {"name": "optoe1", "bus": 13, "loc": 0x50}, + {"name": "optoe1", "bus": 14, "loc": 0x50}, + {"name": "optoe1", "bus": 15, "loc": 0x50}, + {"name": "optoe1", "bus": 16, "loc": 0x50}, + {"name": "optoe1", "bus": 17, "loc": 0x50}, + {"name": "optoe1", "bus": 18, "loc": 0x50}, + {"name": "optoe1", "bus": 19, "loc": 0x50}, + {"name": "optoe1", "bus": 20, "loc": 0x50}, + {"name": "optoe1", "bus": 21, "loc": 0x50}, + {"name": "optoe1", "bus": 22, "loc": 0x50}, + {"name": "optoe1", "bus": 23, "loc": 0x50}, + {"name": "optoe1", "bus": 24, "loc": 0x50}, + {"name": "optoe1", "bus": 25, "loc": 0x50}, + {"name": "optoe1", "bus": 26, "loc": 0x50}, + {"name": "optoe1", "bus": 27, "loc": 0x50}, + {"name": "optoe1", "bus": 28, "loc": 0x50}, + {"name": "optoe1", "bus": 29, "loc": 0x50}, + {"name": "optoe1", "bus": 30, "loc": 0x50}, + {"name": "optoe1", "bus": 31, "loc": 0x50}, + {"name": "optoe1", "bus": 32, "loc": 0x50}, + {"name": "optoe1", "bus": 33, "loc": 0x50}, + {"name": "optoe1", "bus": 34, "loc": 0x50}, + {"name": "optoe1", "bus": 35, "loc": 0x50}, + {"name": "optoe1", "bus": 36, "loc": 0x50}, + {"name": "optoe1", "bus": 37, "loc": 0x50}, + {"name": "optoe1", "bus": 38, "loc": 0x50}, + {"name": "optoe1", "bus": 39, "loc": 0x50}, + {"name": "optoe1", "bus": 40, "loc": 0x50}, + {"name": "optoe1", "bus": 41, "loc": 0x50}, + {"name": "optoe1", "bus": 42, "loc": 0x50}, + {"name": "optoe1", "bus": 43, "loc": 0x50}, + {"name": "optoe1", "bus": 44, "loc": 0x50}, + {"name": "optoe1", "bus": 45, "loc": 0x50}, + {"name": "optoe1", "bus": 46, "loc": 0x50}, + {"name": "optoe1", "bus": 47, "loc": 0x50}, + {"name": "optoe1", "bus": 48, "loc": 0x50}, + {"name": "optoe1", "bus": 49, "loc": 0x50}, + {"name": "optoe1", "bus": 50, "loc": 0x50}, + {"name": "optoe1", "bus": 51, "loc": 0x50}, + {"name": "optoe1", "bus": 52, "loc": 0x50}, + {"name": "optoe1", "bus": 53, "loc": 0x50}, + {"name": "optoe1", "bus": 54, "loc": 0x50}, + {"name": "optoe1", "bus": 55, "loc": 0x50}, + {"name": "optoe1", "bus": 56, "loc": 0x50}, + {"name": "optoe1", "bus": 57, "loc": 0x50}, + {"name": "optoe1", "bus": 58, "loc": 0x50}, + {"name": "optoe1", "bus": 59, "loc": 0x50}, + {"name": "optoe1", "bus": 60, "loc": 0x50}, + {"name": "optoe1", "bus": 61, "loc": 0x50}, + {"name": "optoe1", "bus": 62, "loc": 0x50}, + {"name": "optoe1", "bus": 63, "loc": 0x50}, + {"name": "optoe1", "bus": 64, "loc": 0x50}, + {"name": "optoe1", "bus": 65, "loc": 0x50}, + {"name": "optoe1", "bus": 66, "loc": 0x50}, + {"name": "optoe1", "bus": 67, "loc": 0x50}, + {"name": "optoe1", "bus": 68, "loc": 0x50}, + {"name": "optoe1", "bus": 69, "loc": 0x50}, + {"name": "optoe1", "bus": 70, "loc": 0x50}, + {"name": "optoe1", "bus": 71, "loc": 0x50}, + {"name": "optoe1", "bus": 72, "loc": 0x50}, + {"name": "optoe1", "bus": 73, "loc": 0x50}, + {"name": "optoe1", "bus": 74, "loc": 0x50}, +] + +INIT_PARAM = [ + {"loc": "1-0034/sfp_enable", "value": "01"}, + {"loc": "2-0035/sfp_enable2", "value": "ff"}, + {"loc": "2-0033/mac_led", "value": "ff"}, + {"loc": "1-0034/sfp_txdis1", "value": "00"}, + {"loc": "1-0034/sfp_txdis2", "value": "00"}, + {"loc": "1-0034/sfp_txdis3", "value": "00"}, + {"loc": "1-0036/sfp_txdis4", "value": "00"}, + {"loc": "1-0036/sfp_txdis5", "value": "00"}, + {"loc": "1-0036/sfp_txdis6", "value": "00"}, + + {"loc": "1-0034/sfp_led1_yellow", "value": "00"}, + {"loc": "1-0034/sfp_led3_yellow", "value": "00"}, + {"loc": "1-0036/sfp_led4_yellow", "value": "00"}, + {"loc": "1-0036/sfp_led6_yellow", "value": "00"}, + {"loc": "1-0034/sfp_led2_yellow", "value": "00"}, + {"loc": "1-0034/sfp_led8_yellow", "value": "00"}, + {"loc": "1-0036/sfp_led5_yellow", "value": "00"}, + {"loc": "1-0036/sfp_led7_yellow", "value": "00"}, +] +""" + +INIT_PARAM = [ + { + "name": "sfp_enable", + "bus": 1, + "devaddr": 0x34, + "offset": 0xa1, + "val": 0x01, + }, + { + "name": "sfp_eanble2", + "bus": 2, + "devaddr": 0x35, + "offset": 0xa0, + "val": 0xff, + }, + { + "name": "mac_led", + "bus": 2, + "devaddr": 0x33, + "offset": 0xa0, + "val": 0xff, + }, + { + "name": "sfp_led1_yellow", + "bus": 1, + "devaddr": 0x34, + "offset": 0xa6, + "val": 0x00, + }, + { + "name": "sfp_led2_yellow", + "bus": 1, + "devaddr": 0x34, + "offset": 0xa7, + "val": 0x00, + }, + { + "name": "sfp_led3_yellow", + "bus": 1, + "devaddr": 0x34, + "offset": 0xa8, + "val": 0x00, + }, + { + "name": "sfp_led4_yellow", + "bus": 1, + "devaddr": 0x36, + "offset": 0xa6, + "val": 0x00, + }, + { + "name": "sfp_led5_yellow", + "bus": 1, + "devaddr": 0x36, + "offset": 0xa7, + "val": 0x00, + }, + { + "name": "sfp_led6_yellow", + "bus": 1, + "devaddr": 0x36, + "offset": 0xa8, + "val": 0x00, + }, + { + "name": "sfp_led7_yellow", + "bus": 1, + "devaddr": 0x36, + "offset": 0xa9, + "val": 0x00, + }, + { + "name": "sfp_led8_yellow", + "bus": 1, + "devaddr": 0x34, + "offset": 0xa8, + "val": 0x00, + }, + { + "name": "fan_speed_set", + "bus": 0, + "devaddr": 0x32, + "offset": 0x15, + "val": 0x80, + }, +] diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/Makefile b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/Makefile new file mode 100755 index 000000000000..f10216ec4d5a --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/Makefile @@ -0,0 +1 @@ +obj-m := rg_cpld.o diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/rg_cpld.c b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/rg_cpld.c new file mode 100755 index 000000000000..35fa2faf7d1f --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/modules/driver/rg_cpld.c @@ -0,0 +1,509 @@ +/* + * rg_cpld.c - A driver for control rg_cpld base on rg_cpld.c + * + * Copyright (c) 1998, 1999 Frodo Looijaard + * Copyright (c) 2018 support + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef enum { + DBG_START, + DBG_VERBOSE, + DBG_KEY, + DBG_WARN, + DBG_ERROR, + DBG_END, +} dbg_level_t; + +static int debuglevel=0; +module_param(debuglevel, int, S_IRUGO); + +#define DBG_DEBUG(fmt, arg...) do { \ + if ( debuglevel > DBG_START && debuglevel < DBG_ERROR) { \ + printk(KERN_INFO "[DEBUG]:<%s, %d>:"fmt, __FUNCTION__, __LINE__, ##arg); \ + } else if ( debuglevel >= DBG_ERROR ) { \ + printk(KERN_ERR "[DEBUG]:<%s, %d>:"fmt, __FUNCTION__, __LINE__, ##arg); \ + } else { } \ +} while (0) + +#define DBG_ERROR(fmt, arg...) do { \ + if ( debuglevel > DBG_START) { \ + printk(KERN_ERR "[ERROR]:<%s, %d>:"fmt, __FUNCTION__, __LINE__, ##arg); \ + } \ + } while (0) + +/* static const unsigned short rg_i2c_cpld[] = { 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, I2C_CLIENT_END }; */ + +#define CPLD_SIZE 256 +#define CPLD_I2C_RETRY_TIMES 3 +#define COMMON_STR_LEN (256) + +struct cpld_data { + struct i2c_client *client; + struct device *hwmon_dev; + struct mutex update_lock; + char valid; /* !=0 if registers are valid */ + unsigned long last_updated; /* In jiffies */ + u8 data[CPLD_SIZE]; /* Register value */ +}; + +static s32 cpld_i2c_smbus_read_byte_data(const struct i2c_client *client, u8 command) +{ + int try; + s32 ret; + + ret = -1; + for (try = 0; try < CPLD_I2C_RETRY_TIMES; try++) { + if ((ret = i2c_smbus_read_byte_data(client, command) ) >= 0 ) + break; + } + return ret; +} + +static s32 cpld_i2c_smbus_read_i2c_block_data(const struct i2c_client *client, + u8 command, u8 length, u8 *values) +{ + int try; + s32 ret; + + ret = -1; + for (try = 0; try < CPLD_I2C_RETRY_TIMES; try++) { + if ((ret = i2c_smbus_read_i2c_block_data(client, command, length, values) ) >= 0 ) + break; + } + return ret; +} + +static ssize_t show_fan_rpm_value(struct device *dev, struct device_attribute *da, char *buf) +{ + struct cpld_data *data = dev_get_drvdata(dev); + struct i2c_client *client = data->client; + int index = to_sensor_dev_attr_2(da)->index; + uint8_t size; + s32 status; + s32 ret_t; + + ret_t = 0; + status = -1; + size = 0; + mutex_lock(&data->update_lock); + status = cpld_i2c_smbus_read_byte_data(client, index); + if (status < 0) { + mutex_unlock(&data->update_lock); + return 0; + } + data->data[0] = status; + status = cpld_i2c_smbus_read_byte_data(client, index + 1); + if (status < 0) { + mutex_unlock(&data->update_lock); + return 0; + } + data->data[1] = status; + DBG_DEBUG("cpld reg pos:0x%x value:0x%x\n", index, data->data[0]); + DBG_DEBUG("cpld reg pos:0x%x value:0x%x\n", index + 1, data->data[1]); + ret_t = (data->data[1] << 8) + data->data[0] ; + if (ret_t == 0 ) { + size = snprintf(buf, CPLD_SIZE, "%d\n", ret_t); + } else if (ret_t == 0xffff) { + size = snprintf(buf, CPLD_SIZE, "%d\n", 0); + } else { + size = snprintf(buf, CPLD_SIZE, "%d\n", 15000000 / ret_t); + } + mutex_unlock(&data->update_lock); + return size; +} + +static ssize_t set_cpld_sysfs_value(struct device *dev, struct device_attribute *da, const char *buf, size_t +count) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct cpld_data *data = i2c_get_clientdata(client); + unsigned long val; + int err; + + err = kstrtoul(buf, 16, &val); + if (err) + return err; + if ((val < 0) || (val > 0xff)) { + DBG_ERROR("please enter 0x00 ~ 0xff\n"); + return -1; + } + mutex_lock(&data->update_lock); + data->data[0] = (u8)val; + DBG_DEBUG("pos: 0x%02x count = %ld, data = 0x%02x\n", attr->index, count, data->data[0]); + i2c_smbus_write_byte_data(client, attr->index, data->data[0]); + mutex_unlock(&data->update_lock); + + return count; +} + +static ssize_t show_cpld_version(struct device *dev, struct device_attribute *da, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct cpld_data *data = i2c_get_clientdata(client); + s32 status; + + status = -1; + mutex_lock(&data->update_lock); + status = cpld_i2c_smbus_read_i2c_block_data(client, 0, 4, data->data); + if (status < 0) { + mutex_unlock(&data->update_lock); + return 0; + } + mutex_unlock(&data->update_lock); + return snprintf(buf, COMMON_STR_LEN, "%02x %02x %02x %02x \n", + data->data[0], data->data[1], data->data[2], data->data[3]); +} + +static ssize_t show_cpld_sysfs_value(struct device *dev, struct device_attribute *da, char *buf) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct cpld_data *data = i2c_get_clientdata(client); + s32 status; + + status = -1; + mutex_lock(&data->update_lock); + status = cpld_i2c_smbus_read_byte_data(client, attr->index); + if (status < 0) { + mutex_unlock(&data->update_lock); + return 0; + } + data->data[0] = status; + DBG_DEBUG("cpld reg pos:0x%x value:0x%02x\n", attr->index, data->data[0]); + mutex_unlock(&data->update_lock); + return snprintf(buf, COMMON_STR_LEN, "%02x\n", data->data[0]); +} + +/* common */ +static SENSOR_DEVICE_ATTR(cpld_version, S_IRUGO | S_IWUSR, show_cpld_version, NULL, 0); +/*0x37 hwmon*/ +static SENSOR_DEVICE_ATTR(fan1_input, S_IRUGO | S_IWUSR ,show_fan_rpm_value, NULL, 0x1B); +static SENSOR_DEVICE_ATTR(fan2_input, S_IRUGO | S_IWUSR ,show_fan_rpm_value, NULL, 0x1D); +static SENSOR_DEVICE_ATTR(fan3_input, S_IRUGO | S_IWUSR ,show_fan_rpm_value, NULL, 0x1F); +//static SENSOR_DEVICE_ATTR(fan4_input, S_IRUGO | S_IWUSR ,show_fan_rpm_value, NULL, 0x21); +/* 0x32 */ +static SENSOR_DEVICE_ATTR(fan_speed_set, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x15); +static SENSOR_DEVICE_ATTR(fan0_led, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x23); +static SENSOR_DEVICE_ATTR(fan1_led, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x24); +static SENSOR_DEVICE_ATTR(fan2_led, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x25); +static SENSOR_DEVICE_ATTR(fan3_led, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x26); +static SENSOR_DEVICE_ATTR(broad_back_lct, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x68); +static SENSOR_DEVICE_ATTR(broad_back_sys, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x72); +/* 0x37 */ +static SENSOR_DEVICE_ATTR(fan_present, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, NULL, 0x30); +static SENSOR_DEVICE_ATTR(fan_status, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, NULL, 0x31); +static SENSOR_DEVICE_ATTR(psu_status, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, NULL, 0x51); +/* 0x33 */ +static SENSOR_DEVICE_ATTR(mac_led, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa0); +static SENSOR_DEVICE_ATTR(broad_front_lct, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x2a); +static SENSOR_DEVICE_ATTR(broad_front_bmc, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xb1); +static SENSOR_DEVICE_ATTR(broad_front_cpu, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xb2); +static SENSOR_DEVICE_ATTR(broad_front_pwr, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xb3); +static SENSOR_DEVICE_ATTR(broad_front_fan, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xb4); +/* 0x34 */ +static SENSOR_DEVICE_ATTR(sfp_presence1, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, NULL, 0x30); +static SENSOR_DEVICE_ATTR(sfp_presence2, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, NULL, 0x31); +static SENSOR_DEVICE_ATTR(sfp_presence3, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, NULL, 0x32); +static SENSOR_DEVICE_ATTR(sfp_presence8, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, NULL, 0x33); +static SENSOR_DEVICE_ATTR(sfp_enable, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa1); +static SENSOR_DEVICE_ATTR(sfp_led1_red, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa2); +static SENSOR_DEVICE_ATTR(sfp_led2_red, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa3); +static SENSOR_DEVICE_ATTR(sfp_led3_red, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa4); +static SENSOR_DEVICE_ATTR(sfp_led8_red, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa5); +static SENSOR_DEVICE_ATTR(sfp_led1_yellow, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa6); +static SENSOR_DEVICE_ATTR(sfp_led2_yellow, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa7); +static SENSOR_DEVICE_ATTR(sfp_led3_yellow, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa8); +static SENSOR_DEVICE_ATTR(sfp_led8_yellow, S_IRUGO | S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa9); +static SENSOR_DEVICE_ATTR(sfp_txdis1, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x60); +static SENSOR_DEVICE_ATTR(sfp_txdis2, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x61); +static SENSOR_DEVICE_ATTR(sfp_txdis3, S_IRUGO| S_IWUSR, show_cpld_sysfs_value, set_cpld_sysfs_value, 0x62); +/* 0x35 */ +static SENSOR_DEVICE_ATTR(sfp_enable2, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa0); +/* 0x36 */ +static SENSOR_DEVICE_ATTR(sfp_presence4, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, NULL, 0x30); +static SENSOR_DEVICE_ATTR(sfp_presence5, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, NULL, 0x31); +static SENSOR_DEVICE_ATTR(sfp_presence6, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, NULL, 0x32); +static SENSOR_DEVICE_ATTR(sfp_presence7, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, NULL, 0x33); +static SENSOR_DEVICE_ATTR(sfp_led4_red, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa2); +static SENSOR_DEVICE_ATTR(sfp_led5_red, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa3); +static SENSOR_DEVICE_ATTR(sfp_led6_red, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa4); +static SENSOR_DEVICE_ATTR(sfp_led7_red, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa5); +static SENSOR_DEVICE_ATTR(sfp_led4_yellow, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa6); +static SENSOR_DEVICE_ATTR(sfp_led5_yellow, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa7); +static SENSOR_DEVICE_ATTR(sfp_led6_yellow, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa8); +static SENSOR_DEVICE_ATTR(sfp_led7_yellow, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xa9); +static SENSOR_DEVICE_ATTR(sfp_txdis4, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0x60); +static SENSOR_DEVICE_ATTR(sfp_txdis5, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0x61); +static SENSOR_DEVICE_ATTR(sfp_txdis6, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0x62); + +static SENSOR_DEVICE_ATTR(sfp_reset1, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xb9); +static SENSOR_DEVICE_ATTR(sfp_reset2, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xba); +static SENSOR_DEVICE_ATTR(sfp_reset3, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xbb); +static SENSOR_DEVICE_ATTR(sfp_reset4, S_IRUGO | S_IWUSR ,show_cpld_sysfs_value, set_cpld_sysfs_value, 0xbc); + +static struct attribute *cpld32_sysfs_attrs[] = { + &sensor_dev_attr_fan_speed_set.dev_attr.attr, + &sensor_dev_attr_fan0_led.dev_attr.attr, + &sensor_dev_attr_fan1_led.dev_attr.attr, + &sensor_dev_attr_fan2_led.dev_attr.attr, + &sensor_dev_attr_fan3_led.dev_attr.attr, + &sensor_dev_attr_broad_back_lct.dev_attr.attr, + &sensor_dev_attr_broad_back_sys.dev_attr.attr, + NULL +}; + +static struct attribute *cpld37_sysfs_attrs[] = { + &sensor_dev_attr_fan_present.dev_attr.attr, + &sensor_dev_attr_fan_status.dev_attr.attr, + &sensor_dev_attr_psu_status.dev_attr.attr, + &sensor_dev_attr_cpld_version.dev_attr.attr, + NULL +}; + +static struct attribute *cpld33_sysfs_attrs[] = { + &sensor_dev_attr_mac_led.dev_attr.attr, + &sensor_dev_attr_broad_front_lct.dev_attr.attr, + &sensor_dev_attr_broad_front_bmc.dev_attr.attr, + &sensor_dev_attr_broad_front_cpu.dev_attr.attr, + &sensor_dev_attr_broad_front_pwr.dev_attr.attr, + &sensor_dev_attr_broad_front_fan.dev_attr.attr, + &sensor_dev_attr_cpld_version.dev_attr.attr, + NULL +}; + +static struct attribute *cpld34_sysfs_attrs[] = { + &sensor_dev_attr_sfp_presence1.dev_attr.attr, + &sensor_dev_attr_sfp_presence2.dev_attr.attr, + &sensor_dev_attr_sfp_presence3.dev_attr.attr, + &sensor_dev_attr_sfp_presence8.dev_attr.attr, + &sensor_dev_attr_sfp_enable.dev_attr.attr, + &sensor_dev_attr_sfp_led1_red.dev_attr.attr, + &sensor_dev_attr_sfp_led2_red.dev_attr.attr, + &sensor_dev_attr_sfp_led3_red.dev_attr.attr, + &sensor_dev_attr_sfp_led8_red.dev_attr.attr, + &sensor_dev_attr_sfp_led1_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led2_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led3_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led8_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_txdis1.dev_attr.attr, + &sensor_dev_attr_sfp_txdis2.dev_attr.attr, + &sensor_dev_attr_sfp_txdis3.dev_attr.attr, + NULL +}; + +static struct attribute *cpld36_sysfs_attrs[] = { + &sensor_dev_attr_sfp_presence4.dev_attr.attr, + &sensor_dev_attr_sfp_presence5.dev_attr.attr, + &sensor_dev_attr_sfp_presence6.dev_attr.attr, + &sensor_dev_attr_sfp_presence7.dev_attr.attr, + &sensor_dev_attr_sfp_led4_red.dev_attr.attr, + &sensor_dev_attr_sfp_led5_red.dev_attr.attr, + &sensor_dev_attr_sfp_led6_red.dev_attr.attr, + &sensor_dev_attr_sfp_led7_red.dev_attr.attr, + &sensor_dev_attr_sfp_led4_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led5_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led6_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_led7_yellow.dev_attr.attr, + &sensor_dev_attr_sfp_txdis4.dev_attr.attr, + &sensor_dev_attr_sfp_txdis5.dev_attr.attr, + &sensor_dev_attr_sfp_txdis6.dev_attr.attr, + &sensor_dev_attr_sfp_reset1.dev_attr.attr, + &sensor_dev_attr_sfp_reset2.dev_attr.attr, + &sensor_dev_attr_sfp_reset3.dev_attr.attr, + &sensor_dev_attr_sfp_reset4.dev_attr.attr, + NULL +}; + +static struct attribute *cpld35_sysfs_attrs[] = { + &sensor_dev_attr_sfp_enable2.dev_attr.attr, + &sensor_dev_attr_broad_front_lct.dev_attr.attr, + &sensor_dev_attr_broad_front_bmc.dev_attr.attr, + &sensor_dev_attr_broad_front_cpu.dev_attr.attr, + &sensor_dev_attr_broad_front_pwr.dev_attr.attr, + &sensor_dev_attr_broad_front_fan.dev_attr.attr, + &sensor_dev_attr_cpld_version.dev_attr.attr, + NULL +}; + +static const struct attribute_group cpld32_sysfs_group = { + .attrs = cpld32_sysfs_attrs, +}; + +static const struct attribute_group cpld37_sysfs_group = { + .attrs = cpld37_sysfs_attrs, +}; + +static const struct attribute_group cpld33_sysfs_group = { + .attrs = cpld33_sysfs_attrs, +}; + +static const struct attribute_group cpld34_sysfs_group = { + .attrs = cpld34_sysfs_attrs, +}; + +static const struct attribute_group cpld36_sysfs_group = { + .attrs = cpld36_sysfs_attrs, +}; + +static const struct attribute_group cpld35_sysfs_group = { + .attrs = cpld35_sysfs_attrs, +}; + +static struct attribute *cpld_hwmon_attrs[] = { + &sensor_dev_attr_fan1_input.dev_attr.attr, + &sensor_dev_attr_fan2_input.dev_attr.attr, + &sensor_dev_attr_fan3_input.dev_attr.attr, + NULL +}; +ATTRIBUTE_GROUPS(cpld_hwmon); + +#if 0 +static int cpld_detect(struct i2c_client *new_client, struct i2c_board_info *info) +{ + struct i2c_adapter *adapter = new_client->adapter; + int conf; + DBG_DEBUG("=========cpld_detect(0x%x)===========\n", new_client->addr); + if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA | + I2C_FUNC_SMBUS_WORD_DATA)) + return -ENODEV; + conf = i2c_smbus_read_byte_data(new_client, 0); + if (!conf) { + return -ENODEV; + } + strlcpy(info->type, "rg_cpld", I2C_NAME_SIZE); + return 0; +} +#endif +static int cpld_probe(struct i2c_client *client, const struct i2c_device_id *id) +{ + struct cpld_data *data; + int status; + + status = -1; + DBG_DEBUG("=========cpld_probe(0x%x)===========\n", client->addr); + data = devm_kzalloc(&client->dev, sizeof(struct cpld_data), GFP_KERNEL); + if (!data) { + return -ENOMEM; + } + + data->client = client; + i2c_set_clientdata(client, data); + mutex_init(&data->update_lock); + + switch (client->addr) { + case 0x32: + status = sysfs_create_group(&client->dev.kobj, &cpld32_sysfs_group); + break; + case 0x37: + status = sysfs_create_group(&client->dev.kobj, &cpld37_sysfs_group); + if (status != 0) { + break; + } + data->hwmon_dev = hwmon_device_register_with_groups(&client->dev, client->name, data, cpld_hwmon_groups); + if (IS_ERR(data->hwmon_dev)) { + sysfs_remove_group(&client->dev.kobj, &cpld37_sysfs_group); + return PTR_ERR(data->hwmon_dev); + } + break; + case 0x33: + status = sysfs_create_group(&client->dev.kobj, &cpld33_sysfs_group); + break; + case 0x34: + status = sysfs_create_group(&client->dev.kobj, &cpld34_sysfs_group); + break; + case 0x35: + status = sysfs_create_group(&client->dev.kobj, &cpld35_sysfs_group); + break; + case 0x36: + status = sysfs_create_group(&client->dev.kobj, &cpld36_sysfs_group); + break; + default: + break; + } + + if (status !=0) { + DBG_ERROR("%s %d sysfs_create_group err\n", __func__, __LINE__); + } + return status; +} + +static int cpld_remove(struct i2c_client *client) +{ + struct cpld_data *data = i2c_get_clientdata(client); + DBG_DEBUG("=========cpld_probe(0x%x)===========\n", client->addr); + switch (client->addr) { + case 0x32: + sysfs_remove_group(&client->dev.kobj, &cpld32_sysfs_group); + break; + case 0x37: + hwmon_device_unregister(data->hwmon_dev); + sysfs_remove_group(&client->dev.kobj, &cpld37_sysfs_group); + break; + case 0x33: + sysfs_remove_group(&client->dev.kobj, &cpld33_sysfs_group); + break; + case 0x34: + sysfs_remove_group(&client->dev.kobj, &cpld34_sysfs_group); + break; + case 0x35: + sysfs_remove_group(&client->dev.kobj, &cpld35_sysfs_group); + break; + case 0x36: + sysfs_remove_group(&client->dev.kobj, &cpld36_sysfs_group); + break; + default: + break; + } + + return 0; +} + +static const struct i2c_device_id cpld_id[] = { + { "rg_cpld", 0 }, + {} +}; +MODULE_DEVICE_TABLE(i2c, cpld_id); + +static struct i2c_driver rg_cpld_driver = { + .class = I2C_CLASS_HWMON, + .driver = { + .name = "rg_cpld", + }, + .probe = cpld_probe, + .remove = cpld_remove, + .id_table = cpld_id, + /* .detect = cpld_detect, */ + /* .address_list = rg_i2c_cpld, */ +}; + +module_i2c_driver(rg_cpld_driver); +MODULE_AUTHOR("support "); +MODULE_DESCRIPTION("ragile CPLD driver"); +MODULE_LICENSE("GPL"); diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/scripts/pddf_post_driver_install.sh b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/scripts/pddf_post_driver_install.sh new file mode 100755 index 000000000000..badbce25589d --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/scripts/pddf_post_driver_install.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +count=10 +while [ $count -gt 0 ] +do + lsmod | grep 9641 >/dev/null 2>&1 + if [ $? -eq 0 ] + then + break + fi + count=$(( count - 1 )) + sleep 1 +done + +if [ $count -eq 0 ] +then + # mod not loaded + exit 1 +fi + +if [ ! -d "/sys/bus/i2c/devices/i2c-2" ] +then + echo pca9541 0x10 > /sys/bus/i2c/devices/i2c-0/new_device + if [ $? -ne 0 ] + then + exit $? + fi +fi + +exit 0 + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/setup.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/setup.py new file mode 100644 index 000000000000..0ed22d770626 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/setup.py @@ -0,0 +1,32 @@ +from setuptools import setup + +setup( + name='sonic-platform', + version='1.0', + description='SONiC platform API implementation on RAGILE Platforms', + license='Apache 2.0', + author='SONiC Team', + author_email='support@ragile.com', + url='', + maintainer='RAGILE SUPPORT TEAM', + maintainer_email='', + packages=[ + 'sonic_platform', + 'rgutil', + 'eepromutil' + ], + classifiers=[ + 'Development Status :: 3 - Alpha', + 'Environment :: Plugins', + 'Intended Audience :: Developers', + 'Intended Audience :: Information Technology', + 'Intended Audience :: System Administrators', + 'License :: OSI Approved :: Apache Software License', + 'Natural Language :: English', + 'Operating System :: POSIX :: Linux', + 'Programming Language :: Python :: 3.7', + 'Topic :: Utilities', + ], + keywords='sonic SONiC platform PLATFORM', +) + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/__init__.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/__init__.py new file mode 100644 index 000000000000..593867d31c9d --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/__init__.py @@ -0,0 +1,4 @@ +# All the derived classes for PDDF +__all__ = ["platform", "chassis", "sfp", "psu", "thermal", "fan"] +from . import platform + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/chassis.py new file mode 100644 index 000000000000..f4750f4abd5f --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/chassis.py @@ -0,0 +1,137 @@ +#!/usr/bin/env python + +############################################################################# +# PDDF +# Module contains an implementation of SONiC Chassis API +# +############################################################################# + +try: + import time + import subprocess + from sonic_platform_pddf_base.pddf_chassis import PddfChassis + from rgutil.logutil import Logger +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +PORT_START = 0 +PORT_END = 55 +PORTS_IN_BLOCK = 56 + +logger = Logger("CHASSIS", syslog=True) + +class Chassis(PddfChassis): + """ + PDDF Platform-specific Chassis class + """ + + SFP_STATUS_INSERTED = "1" + SFP_STATUS_REMOVED = "0" + port_dict = {} + + def __init__(self, pddf_data=None, pddf_plugin_data=None): + PddfChassis.__init__(self, pddf_data, pddf_plugin_data) + + self.enable_read = "i2cset -f -y 2 0x35 0x2a 0x01" + self.disable_read = "i2cset -f -y 2 0x35 0x2a 0x00" + self.enable_write = "i2cset -f -y 2 0x35 0x2b 0x00" + self.disable_write = "i2cset -f -y 2 0x35 0x2b 0x01" + self.enable_erase = "i2cset -f -y 2 0x35 0x2c 0x01" + self.disable_erase = "i2cset -f -y 2 0x35 0x2c 0x00" + self.read_value = "i2cget -f -y 2 0x35 0x25" + self.write_value = "i2cset -f -y 2 0x35 0x21 0x0a" + + def get_reboot_cause(self): + """ + Retrieves the cause of the previous reboot + Returns: + A tuple (string, string) where the first element is a string + containing the cause of the previous reboot. This string must be + one of the predefined strings in this class. If the first string + is "REBOOT_CAUSE_HARDWARE_OTHER", the second string can be used + to pass a description of the reboot cause. + """ + try: + is_power_loss = False + # enable read + subprocess.getstatusoutput(self.disable_write) + subprocess.getstatusoutput(self.enable_read) + ret, log = subprocess.getstatusoutput(self.read_value) + if ret == 0 and "0x0a" in log: + is_power_loss = True + + # erase i2c and e2 + subprocess.getstatusoutput(self.enable_erase) + time.sleep(1) + subprocess.getstatusoutput(self.disable_erase) + # clear data + subprocess.getstatusoutput(self.enable_write) + subprocess.getstatusoutput(self.disable_read) + subprocess.getstatusoutput(self.disable_write) + subprocess.getstatusoutput(self.enable_read) + # enable write and set data + subprocess.getstatusoutput(self.enable_write) + subprocess.getstatusoutput(self.disable_read) + subprocess.getstatusoutput(self.write_value) + if is_power_loss: + return(self.REBOOT_CAUSE_POWER_LOSS, None) + except Exception as e: + logger.error(str(e)) + + return (self.REBOOT_CAUSE_NON_HARDWARE, None) + + def get_change_event(self, timeout=0): + change_event_dict = {"fan": {}, "sfp": {}} + sfp_status, sfp_change_dict = self.get_transceiver_change_event(timeout) + change_event_dict["sfp"] = sfp_change_dict + if sfp_status is True: + return True, change_event_dict + + return False, {} + + def get_transceiver_change_event(self, timeout=0): + start_time = time.time() + currernt_port_dict = {} + forever = False + + if timeout == 0: + forever = True + elif timeout > 0: + timeout = timeout / float(1000) # Convert to secs + else: + print("get_transceiver_change_event:Invalid timeout value", timeout) + return False, {} + + end_time = start_time + timeout + if start_time > end_time: + print( + "get_transceiver_change_event:" "time wrap / invalid timeout value", + timeout, + ) + return False, {} # Time wrap or possibly incorrect timeout + + while timeout >= 0: + # Check for OIR events and return updated port_dict + for index in range(PORT_START, PORTS_IN_BLOCK): + if self._sfp_list[index].get_presence(): + currernt_port_dict[index] = self.SFP_STATUS_INSERTED + else: + currernt_port_dict[index] = self.SFP_STATUS_REMOVED + if currernt_port_dict == self.port_dict: + if forever: + time.sleep(1) + else: + timeout = end_time - time.time() + if timeout >= 1: + time.sleep(1) # We poll at 1 second granularity + else: + if timeout > 0: + time.sleep(timeout) + return True, {} + else: + # Update reg value + self.port_dict = currernt_port_dict + print(self.port_dict) + return True, self.port_dict + print("get_transceiver_change_event: Should not reach here.") + return False, {} diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/common.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/common.py new file mode 100644 index 000000000000..c1a85f618609 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/common.py @@ -0,0 +1,44 @@ +import os +import yaml + +from sonic_py_common import device_info + + +class Common: + + DEVICE_PATH = '/usr/share/sonic/device/' + PMON_PLATFORM_PATH = '/usr/share/sonic/platform/' + CONFIG_DIR = 'sonic_platform_config' + + HOST_CHK_CMD = "docker > /dev/null 2>&1" + + def __init__(self): + (self.platform, self.hwsku) = device_info.get_platform_and_hwsku() + + def is_host(self): + return os.system(self.HOST_CHK_CMD) == 0 + + def load_json_file(self, path): + """ + Retrieves the json object from json file path + + Returns: + A json object + """ + with open(path, 'r') as f: + json_data = yaml.safe_load(f) + + return json_data + + def get_config_path(self, config_name): + """ + Retrieves the path to platform api config directory + + Args: + config_name: A string containing the name of config file. + + Returns: + A string containing the path to json file + """ + return os.path.join(self.DEVICE_PATH, self.platform, self.CONFIG_DIR, config_name) if self.is_host() else os.path.join(self.PMON_PLATFORM_PATH, self.CONFIG_DIR, config_name) + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/eeprom.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/eeprom.py new file mode 100644 index 000000000000..a87ecc9f6feb --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/eeprom.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python + +try: + from sonic_platform_pddf_base.pddf_eeprom import PddfEeprom +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class Eeprom(PddfEeprom): + + def __init__(self, pddf_data=None, pddf_plugin_data=None): + PddfEeprom.__init__(self, pddf_data, pddf_plugin_data) + + # Provide the functions/variables below for which implementation is to be overwritten diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan.py new file mode 100644 index 000000000000..205676b15410 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python + + +try: + from sonic_platform_pddf_base.pddf_fan import PddfFan +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class Fan(PddfFan): + """PDDF Platform-Specific Fan class""" + + def __init__(self, tray_idx, fan_idx=0, pddf_data=None, pddf_plugin_data=None, is_psu_fan=False, psu_index=0): + # idx is 0-based + PddfFan.__init__(self, tray_idx, fan_idx, pddf_data, pddf_plugin_data, is_psu_fan, psu_index) + + # Provide the functions/variables below for which implementation is to be overwritten + # Since psu_fan airflow direction cant be read from sysfs, it is fixed as 'F2B' or 'intake' + def get_direction(self): + """ + Retrieves the direction of fan + + Returns: + A string, either FAN_DIRECTION_INTAKE or FAN_DIRECTION_EXHAUST + depending on fan direction + """ + return self.FAN_DIRECTION_EXHAUST + + def get_speed_rpm(self): + if self.is_psu_fan: + return super().get_speed_rpm() + else: + divisor = 15000000 + mask_low = 0xff + ret = super().get_speed_rpm() + # revert ret + ret = (ret >> 8) + ((ret & mask_low) << 8) + return int(divisor/ret) + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan_drawer.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan_drawer.py new file mode 100644 index 000000000000..4ff45cb81297 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/fan_drawer.py @@ -0,0 +1,71 @@ +# +# fan_drawer_base.py +# +# Abstract base class for implementing a platform-specific class with which +# to interact with a fan drawer module in SONiC +# + +try: + from sonic_platform_base.fan_drawer_base import FanDrawerBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class FanDrawer(FanDrawerBase): + """ + Abstract base class for interfacing with a fan drawer + """ + # Device type definition. Note, this is a constant. + DEVICE_TYPE = "fan_drawer" + + def __init__(self, index, fan_list): + FanDrawerBase.__init__(self) + + self._fan_list = fan_list + self._index = index + + def get_name(self): + """ + Retrieves the name of the device + Returns: + string: The name of the device + """ + + return "fan {}".format(self._index) + + def get_num_fans(self): + """ + Retrieves the number of fans available on this fan drawer + Returns: + An integer, the number of fan modules available on this fan drawer + """ + return len(self._fan_list) + + def get_all_fans(self): + """ + Retrieves all fan modules available on this fan drawer + Returns: + A list of objects derived from FanBase representing all fan + modules available on this fan drawer + """ + return self._fan_list + + def set_status_led(self, color): + """ + Sets the state of the fan drawer status LED + Args: + color: A string representing the color with which to set the + fan drawer status LED + Returns: + bool: True if status LED state is set successfully, False if not + """ + return self._fan_list[self._index].set_status_led(color) + + def get_status_led(self, color): + """ + Gets the state of the fan drawer LED + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + return self._fan_list[self._index].get_status_led(color) + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/platform.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/platform.py new file mode 100644 index 000000000000..406b1179ae1b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/platform.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +############################################################################# +# PDDF +# Module contains an implementation of SONiC Platform Base API and +# provides the platform information +# +############################################################################# + + +try: + from sonic_platform_pddf_base.pddf_platform import PddfPlatform +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + +class Platform(PddfPlatform): + """ + PDDF Platform-Specific Platform Class + """ + + def __init__(self): + PddfPlatform.__init__(self) + + # Provide the functions/variables below for which implementation is to be overwritten diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/psu.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/psu.py new file mode 100644 index 000000000000..72a6d8f0825b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/psu.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# + + +try: + from sonic_platform_pddf_base.pddf_psu import PddfPsu +except ImportError as e: + raise ImportError (str(e) + "- required module not found") + + +class Psu(PddfPsu): + """PDDF Platform-Specific PSU class""" + + PLATFORM_PSU_CAPACITY = 1200 + + def __init__(self, index, pddf_data=None, pddf_plugin_data=None): + PddfPsu.__init__(self, index, pddf_data, pddf_plugin_data) + + # Provide the functions/variables below for which implementation is to be overwritten + def get_maximum_supplied_power(self): + """ + Retrieves the maximum supplied power by PSU (or PSU capacity) + Returns: + A float number, the maximum power output in Watts. + e.g. 1200.1 + """ + return float(self.PLATFORM_PSU_CAPACITY) + + def get_type(self): + """ + Gets the type of the PSU + Returns: + A string, the type of PSU (AC/DC) + """ + return "DC" + diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/sfp.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/sfp.py new file mode 100644 index 000000000000..d9b6e491bef4 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/sfp.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python + +try: + from sonic_platform_pddf_base.pddf_sfp import PddfSfp +except ImportError as e: + raise ImportError (str(e) + "- required module not found") + + +class Sfp(PddfSfp): + """ + PDDF Platform-Specific Sfp class + """ + + def __init__(self, index, pddf_data=None, pddf_plugin_data=None): + PddfSfp.__init__(self, index, pddf_data, pddf_plugin_data) + + # Provide the functions/variables below for which implementation is to be overwritten diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/thermal.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/thermal.py new file mode 100644 index 000000000000..5b829fc26caa --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/thermal.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python + + +try: + from sonic_platform_pddf_base.pddf_thermal import PddfThermal +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + + + +class Thermal(PddfThermal): + """PDDF Platform-Specific Thermal class""" + + def __init__(self, index, pddf_data=None, pddf_plugin_data=None): + PddfThermal.__init__(self, index, pddf_data, pddf_plugin_data) + + # Provide the functions/variables below for which implementation is to be overwritten diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/watchdog.py b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/watchdog.py new file mode 100644 index 000000000000..88660b1a1faa --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/sonic_platform/watchdog.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python + +############################################################################# +# +# Module contains an implementation of platform specific watchdog API's +# +############################################################################# + +try: + from sonic_platform_pddf_base.pddf_watchdog import PddfWatchdog +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +class Watchdog(PddfWatchdog): + """ + PDDF Platform-specific Chassis class + """ + + def __init__(self): + PddfWatchdog.__init__(self) + self.timeout= 180 + + # Provide the functions/variables below for which implementation is to be overwritten diff --git a/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/systemd/pddf-platform-init.service b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/systemd/pddf-platform-init.service new file mode 120000 index 000000000000..0fd9f25b6c5e --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-ragile/ra-b6910-64c/systemd/pddf-platform-init.service @@ -0,0 +1 @@ +../../../../pddf/i2c/service/pddf-platform-init.service \ No newline at end of file diff --git a/platform/cavium/docker-syncd-cavm-rpc.mk b/platform/cavium/docker-syncd-cavm-rpc.mk index 8dfd294b0f43..a49f12fb38be 100644 --- a/platform/cavium/docker-syncd-cavm-rpc.mk +++ b/platform/cavium/docker-syncd-cavm-rpc.mk @@ -19,6 +19,6 @@ endif $(DOCKER_SYNCD_CAVM_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_CAVM_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_CAVM_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_CAVM_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_CAVM_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_CAVM_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_CAVM_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/cavium/docker-syncd-cavm.mk b/platform/cavium/docker-syncd-cavm.mk index 27984c808410..d0a8b0b14b4e 100644 --- a/platform/cavium/docker-syncd-cavm.mk +++ b/platform/cavium/docker-syncd-cavm.mk @@ -20,6 +20,6 @@ $(DOCKER_SYNCD_BASE)_VERSION = 1.0.0 $(DOCKER_SYNCD_BASE)_PACKAGE_NAME = syncd $(DOCKER_SYNCD_CAVM)_CONTAINER_NAME = syncd -$(DOCKER_SYNCD_CAVM)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_CAVM)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_CAVM)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_CAVM)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/components/docker-gbsyncd-credo.mk b/platform/components/docker-gbsyncd-credo.mk index a1231d846355..0dc6875efe85 100644 --- a/platform/components/docker-gbsyncd-credo.mk +++ b/platform/components/docker-gbsyncd-credo.mk @@ -1,12 +1,14 @@ DOCKER_GBSYNCD_PLATFORM_CODE = credo -LIBSAI_CREDO = libsaicredo_0.5.1-alpha.2_amd64.deb -$(LIBSAI_CREDO)_URL = -LIBSAI_CREDO_OWL = libsaicredo-owl_0.5.1-alpha.2_amd64.deb -$(LIBSAI_CREDO_OWL)_URL = +LIBSAI_CREDO = libsaicredo_0.5.2_amd64.deb +$(LIBSAI_CREDO)_URL = "https://sonicstorage.blob.core.windows.net/packages/credosai/libsaicredo_0.5.2_amd64.deb?st=2021-08-20T01%3A39%3A58Z&se=2100-08-21T01%3A39%3A00Z&sp=rl&sv=2018-03-28&sr=b&sig=H3Ew%2Be17i9VN%2BZ6cmAmLuTEDDK%2FsJ65WUHiINTzB9eE%3D" +LIBSAI_CREDO_OWL = libsaicredo-owl_0.5.2_amd64.deb +$(LIBSAI_CREDO_OWL)_URL = "https://sonicstorage.blob.core.windows.net/packages/credosai/libsaicredo-owl_0.5.2_amd64.deb?st=2021-08-20T01%3A39%3A09Z&se=2100-08-21T01%3A39%3A00Z&sp=rl&sv=2018-03-28&sr=b&sig=YB%2BnILFF2Z4tIbu3utcCG857Y6ae7vS5Qmyk3pzscIw%3D" ifneq ($($(LIBSAI_CREDO)_URL),) include $(PLATFORM_PATH)/../template/docker-gbsyncd-base.mk +$(DOCKER_GBSYNCD_BASE)_VERSION = 1.0.0 +$(DOCKER_GBSYNCD_BASE)_PACKAGE_NAME = gbsyncd $(DOCKER_GBSYNCD_BASE)_CONTAINER_NAME = gbsyncd-$(DOCKER_GBSYNCD_PLATFORM_CODE) $(DOCKER_GBSYNCD_BASE)_PATH = $(PLATFORM_PATH)/../components/docker-gbsyncd-$(DOCKER_GBSYNCD_PLATFORM_CODE) SONIC_ONLINE_DEBS += $(LIBSAI_CREDO) $(LIBSAI_CREDO_OWL) diff --git a/platform/innovium/docker-syncd-invm-rpc.mk b/platform/innovium/docker-syncd-invm-rpc.mk index e56570d705ba..8ccbef57dd4f 100755 --- a/platform/innovium/docker-syncd-invm-rpc.mk +++ b/platform/innovium/docker-syncd-invm-rpc.mk @@ -12,7 +12,7 @@ endif $(DOCKER_SYNCD_INVM_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_INVM_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_INVM_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_INVM_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_INVM_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_INVM_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_INVM_RPC)_RUN_OPT += -v /var/run/docker-syncd:/var/run/sswsyncd $(DOCKER_SYNCD_INVM_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/marvell-arm64/docker-saiserver-mrvl.mk b/platform/marvell-arm64/docker-saiserver-mrvl.mk index a449e3e83e45..c62181300ee0 100644 --- a/platform/marvell-arm64/docker-saiserver-mrvl.mk +++ b/platform/marvell-arm64/docker-saiserver-mrvl.mk @@ -8,7 +8,7 @@ SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_MRVL) SONIC_STRETCH_DOCKERS += $(DOCKER_SAISERVER_MRVL) $(DOCKER_SAISERVER_MRVL)_CONTAINER_NAME = saiserver -$(DOCKER_SAISERVER_MRVL)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SAISERVER_MRVL)_RUN_OPT += --privileged -t $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /var/run/docker-saiserver:/var/run/sswsyncd $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/marvell-arm64/docker-syncd-mrvl-rpc.mk b/platform/marvell-arm64/docker-syncd-mrvl-rpc.mk index 414bc500b453..c8a94878956f 100644 --- a/platform/marvell-arm64/docker-syncd-mrvl-rpc.mk +++ b/platform/marvell-arm64/docker-syncd-mrvl-rpc.mk @@ -20,7 +20,7 @@ endif $(DOCKER_SYNCD_MRVL_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_MRVL_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_MRVL_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot diff --git a/platform/marvell-armhf/docker-saiserver-mrvl.mk b/platform/marvell-armhf/docker-saiserver-mrvl.mk index 0e40653ddbf3..e0be89b14a06 100644 --- a/platform/marvell-armhf/docker-saiserver-mrvl.mk +++ b/platform/marvell-armhf/docker-saiserver-mrvl.mk @@ -8,7 +8,7 @@ $(DOCKER_SAISERVER_MRVL)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER) SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_MRVL) $(DOCKER_SAISERVER_MRVL)_CONTAINER_NAME = saiserver -$(DOCKER_SAISERVER_MRVL)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SAISERVER_MRVL)_RUN_OPT += --privileged -t $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /var/run/docker-saiserver:/var/run/sswsyncd $(DOCKER_SAISERVER_MRVL)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/marvell-armhf/docker-syncd-mrvl-rpc.mk b/platform/marvell-armhf/docker-syncd-mrvl-rpc.mk index 30958019c18a..efd1e96f3d80 100644 --- a/platform/marvell-armhf/docker-syncd-mrvl-rpc.mk +++ b/platform/marvell-armhf/docker-syncd-mrvl-rpc.mk @@ -19,7 +19,7 @@ endif $(DOCKER_SYNCD_MRVL_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_MRVL_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_MRVL_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot diff --git a/platform/marvell-armhf/platform.conf b/platform/marvell-armhf/platform.conf index 651b01bea18d..b0be99a8e69e 100644 --- a/platform/marvell-armhf/platform.conf +++ b/platform/marvell-armhf/platform.conf @@ -45,9 +45,9 @@ elif [ "$PLATFORM" = "armhf-nokia_ixs7215_52x-r0" ]; then fdt_fname="/boot/armada-385-ipd6448m.dtb" - BOOTARGS='setenv bootargs root=/dev/'$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,115200 ${othbootargs} ${mtdparts} ${linuxargs}' + BOOTARGS='setenv bootargs root=/dev/'$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,${baudrate} ${othbootargs} ${mtdparts} ${linuxargs}' UBI_LOAD='scsi init; ext4load scsi 0:2 $kernel_addr $image_name; ext4load scsi 0:2 $fdt_addr $fdt_name; ext4load scsi 0:2 $initrd_addr $initrd_name' - BOOTARGS_OLD='setenv bootargs root=/dev/'$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,115200 ${othbootargs} ${mtdparts} ${linuxargs_old}' + BOOTARGS_OLD='setenv bootargs root=/dev/'$demo_dev' rw rootwait rootfstype=ext4 panic=1 console=ttyS0,${baudrate} ${othbootargs} ${mtdparts} ${linuxargs_old}' UBI_LOAD_OLD='scsi init; ext4load scsi 0:2 $kernel_addr $image_name_old; ext4load scsi 0:2 $fdt_addr $fdt_name_old; ext4load scsi 0:2 $initrd_addr $initrd_name_old' UBIBOOTCMD='run ubi_sonic_boot_bootargs; run ubi_sonic_boot_load; test -n "$boot_once" && setenv boot_once "" && saveenv; bootz $kernel_addr $initrd_addr $fdt_addr' UBIBOOTCMD_OLD='run ubi_sonic_boot_bootargs_old; run ubi_sonic_boot_load_old; test -n "$boot_once" && setenv boot_once "" && saveenv; bootz $kernel_addr $initrd_addr $fdt_addr' diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/chassis.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/chassis.py index a01aca24b684..cf67a7bb30ac 100755 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/chassis.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/chassis.py @@ -27,6 +27,11 @@ except ImportError as e: smbus_present = 0 +if sys.version_info[0] < 3: + import commands as cmd +else: + import subprocess as cmd + MAX_SELECT_DELAY = 3600 COPPER_PORT_START = 1 COPPER_PORT_END = 48 @@ -278,6 +283,9 @@ def get_thermal_manager(self): from .thermal_manager import ThermalManager return ThermalManager + def initizalize_system_led(self): + return True + def set_status_led(self, color): """ Sets the state of the system LED @@ -306,17 +314,18 @@ def set_status_led(self, color): return False # Write sys led - if smbus_present == 0: - sonic_logger.log_warning("PMON LED SET -> smbus present = 0") + if smbus_present == 0: # called from host (e.g. 'show system-health') + cmdstatus, value = cmd.getstatusoutput('sudo i2cset -y 0 0x41 0x7 %d' % value) + if cmdstatus: + sonic_logger.log_warning(" System LED set %s failed" % value) + return False else: bus = smbus.SMBus(0) DEVICE_ADDRESS = 0x41 DEVICEREG = 0x7 bus.write_byte_data(DEVICE_ADDRESS, DEVICEREG, value) - sonic_logger.log_info(" System LED set O.K. ") - return True - return False + return True def get_status_led(self): """ @@ -327,29 +336,29 @@ def get_status_led(self): specified. """ # Read sys led - if smbus_present == 0: - sonic_logger.log_warning("PMON LED GET -> smbus present = 0") - return False + if smbus_present == 0: # called from host + cmdstatus, value = cmd.getstatusoutput('sudo i2cget -y 0 0x41 0x7') + value = int(value, 16) else: bus = smbus.SMBus(0) DEVICE_ADDRESS = 0x41 DEVICE_REG = 0x7 value = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - if value == 0x00: - color = 'off' - elif value == 0x01: - color = 'amber' - elif value == 0x02: - color = 'green' - elif value == 0x03: - color = 'amber_blink' - elif value == 0x04: - color = 'green_blink' - else: - return False + if value == 0x00: + color = 'off' + elif value == 0x01: + color = 'amber' + elif value == 0x02: + color = 'green' + elif value == 0x03: + color = 'amber_blink' + elif value == 0x04: + color = 'green_blink' + else: + return None - return color + return color def get_watchdog(self): """ diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/component.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/component.py index 1c219d7920a5..134856ea4213 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/component.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/component.py @@ -75,6 +75,55 @@ def get_name(self): """ return self.name + def get_model(self): + """ + Retrieves the part number of the component + Returns: + string: Part number of component + """ + return 'NA' + + def get_serial(self): + """ + Retrieves the serial number of the component + Returns: + string: Serial number of component + """ + return 'NA' + + def get_presence(self): + """ + Retrieves the presence of the component + Returns: + bool: True if present, False if not + """ + return True + + def get_status(self): + """ + Retrieves the operational status of the component + Returns: + bool: True if component is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + Returns: + integer: The 1-based relative physical position in parent + device or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether component is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + def get_description(self): """ Retrieves the description of the component diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan.py index 14c00c763dde..b8fd335930d6 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan.py @@ -336,10 +336,10 @@ def get_status_led(self): """ if self.is_psu_fan: - return False + return None if smbus_present == 0: - return False + return None else: bus = smbus.SMBus(0) DEVICE_ADDRESS = 0x41 @@ -368,7 +368,7 @@ def get_target_speed(self): (off) to 100 (full speed) """ speed = 0 - + fan_duty = self._get_i2c_register(self.set_fan_speed_reg) if (fan_duty != 'ERR'): dutyspeed = int(fan_duty) @@ -380,9 +380,5 @@ def get_target_speed(self): speed = 50 elif dutyspeed == 255: speed = 100 - - return speed - - - + return speed diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py index 35b663cbb786..6c6218f0a794 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/fan_drawer.py @@ -54,9 +54,25 @@ def get_direction(self): return 'intake' def set_status_led(self, color): - return True + """ + 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 - def get_status_led(self, color): + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings + """ return self._fan_list[0].get_status_led() def is_replaceable(self): diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/psu.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/psu.py index 6a338f5a166e..90025db7ffbf 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/psu.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/psu.py @@ -234,3 +234,23 @@ def set_status_led(self, color): # The firmware running in the PSU controls the LED # and the PSU LED state cannot be changed from CPU. return False + + def get_status_master_led(self): + """ + Gets the state of the front panel PSU status LED + + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings. + """ + return self._psu_master_led_color + + def set_status_master_led(self, color): + """ + Sets the state of the front panel PSU status LED + + Returns: + bool: True if status LED state is set successfully, False if + not + """ + self._psu_master_led_color = color + return True diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py index 57fcde16149d..244e48e1e639 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/sfp.py @@ -143,7 +143,7 @@ def __init__(self, index, sfp_type, eeprom_path, port_i2c_map): 'model', 'connector', 'encoding', 'ext_identifier', 'ext_rateselect_compliance', 'cable_type', 'cable_length', 'nominal_bit_rate', 'specification_compliance', - 'vendor_date', 'vendor_oui'] + 'type_abbrv_name', 'vendor_date', 'vendor_oui'] self.dom_dict_keys = ['rx_los', 'tx_fault', 'reset_status', 'power_lpmode', 'tx_disable', 'tx_disable_channel', 'temperature', @@ -274,6 +274,7 @@ def get_transceiver_info(self): cable_length |INT |cable length in m nominal_bit_rate |INT |nominal bit rate by 100Mbs specification_compliance |1*255VCHAR |specification compliance + type_abbrv_name |1*255VCHAR |type of SFP (abbreviated) vendor_date |1*255VCHAR |vendor date vendor_oui |1*255VCHAR |vendor OUI application_advertisement |1*255VCHAR |supported applications advertisement @@ -338,33 +339,47 @@ def get_transceiver_info(self): end = start + XCVR_VENDOR_DATE_WIDTH sfp_vendor_date_data = sfpi_obj.parse_vendor_date( sfp_interface_bulk_raw[start: end], 0) - transceiver_info_dict['type'] = sfp_interface_bulk_data['data']['type']['value'] - transceiver_info_dict['manufacturer'] = sfp_vendor_name_data['data']['Vendor Name']['value'] - transceiver_info_dict['model'] = sfp_vendor_pn_data['data']['Vendor PN']['value'] - transceiver_info_dict['hardware_rev'] = sfp_vendor_rev_data['data']['Vendor Rev']['value'] - transceiver_info_dict['serial'] = sfp_vendor_sn_data['data']['Vendor SN']['value'] - transceiver_info_dict['vendor_oui'] = sfp_vendor_oui_data['data']['Vendor OUI']['value'] - transceiver_info_dict['vendor_date'] = sfp_vendor_date_data[ - 'data']['VendorDataCode(YYYY-MM-DD Lot)']['value'] - transceiver_info_dict['connector'] = sfp_interface_bulk_data['data']['Connector']['value'] - transceiver_info_dict['encoding'] = sfp_interface_bulk_data['data']['EncodingCodes']['value'] - transceiver_info_dict['ext_identifier'] = sfp_interface_bulk_data['data']['Extended Identifier']['value'] - transceiver_info_dict['ext_rateselect_compliance'] = sfp_interface_bulk_data['data']['RateIdentifier']['value'] + + transceiver_info_dict['type'] = sfp_interface_bulk_data \ + ['data']['type']['value'] + transceiver_info_dict['manufacturer'] = sfp_vendor_name_data \ + ['data']['Vendor Name']['value'] + transceiver_info_dict['model'] = sfp_vendor_pn_data \ + ['data']['Vendor PN']['value'] + transceiver_info_dict['hardware_rev'] = sfp_vendor_rev_data \ + ['data']['Vendor Rev']['value'] + transceiver_info_dict['serial'] = sfp_vendor_sn_data \ + ['data']['Vendor SN']['value'] + transceiver_info_dict['vendor_oui'] = sfp_vendor_oui_data \ + ['data']['Vendor OUI']['value'] + transceiver_info_dict['vendor_date'] = sfp_vendor_date_data \ + ['data']['VendorDataCode(YYYY-MM-DD Lot)']['value'] + transceiver_info_dict['connector'] = sfp_interface_bulk_data \ + ['data']['Connector']['value'] + transceiver_info_dict['encoding'] = sfp_interface_bulk_data \ + ['data']['EncodingCodes']['value'] + transceiver_info_dict['ext_identifier'] = sfp_interface_bulk_data \ + ['data']['Extended Identifier']['value'] + transceiver_info_dict['ext_rateselect_compliance'] = sfp_interface_bulk_data \ + ['data']['RateIdentifier']['value'] + transceiver_info_dict['type_abbrv_name'] = sfp_interface_bulk_data \ + ['data']['type_abbrv_name']['value'] for key in sfp_cable_length_tup: if key in sfp_interface_bulk_data['data']: transceiver_info_dict['cable_type'] = key - transceiver_info_dict['cable_length'] = str( - sfp_interface_bulk_data['data'][key]['value']) + transceiver_info_dict['cable_length'] = \ + str(sfp_interface_bulk_data['data'][key]['value']) for key in sfp_compliance_code_tup: if key in sfp_interface_bulk_data['data']['Specification compliance']['value']: - compliance_code_dict[key] = sfp_interface_bulk_data['data']['Specification compliance']['value'][key]['value'] - transceiver_info_dict['specification_compliance'] = str( - compliance_code_dict) + compliance_code_dict[key] = sfp_interface_bulk_data \ + ['data']['Specification compliance']['value'][key]['value'] - transceiver_info_dict['nominal_bit_rate'] = str( - sfp_interface_bulk_data['data']['NominalSignallingRate(UnitsOf100Mbd)']['value']) + transceiver_info_dict['specification_compliance'] = \ + str(compliance_code_dict) + transceiver_info_dict['nominal_bit_rate'] = \ + str(sfp_interface_bulk_data['data']['NominalSignallingRate(UnitsOf100Mbd)']['value']) transceiver_info_dict['application_advertisement'] = 'N/A' return transceiver_info_dict @@ -777,42 +792,62 @@ def get_tx_power(self): def reset(self): """ - Reset SFP and return all user module settings to their default srate. + Reset SFP. Returns: A boolean, True if successful, False if not - """ + """ if self.sfp_type == COPPER_TYPE: return False - path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/sfp_port_reset" - port_ps = path.format(self.port_to_i2c_mapping) - - try: - reg_file = open(port_ps, 'w') - except IOError as e: - # print "Error: unable to open file: %s" % str(e) - return False - - # toggle reset - reg_file.seek(0) - reg_file.write('1') + self.tx_disable(True) time.sleep(1) - reg_file.seek(0) - reg_file.write('0') - reg_file.close() + self.tx_disable(False) + return True def tx_disable(self, tx_disable): """ - Disable SFP TX for all channels + Disable SFP TX Args: tx_disable : A Boolean, True to enable tx_disable mode, False to disable tx_disable mode. - Returns: + Returns: A boolean, True if tx_disable is set successfully, False if not """ + if self.sfp_type == COPPER_TYPE: + return False + + if smbus_present == 0: # if called from sfputil outside of pmon + cmdstatus, register = cmd.getstatusoutput('sudo i2cget -y 0 0x41 0x5') + if cmdstatus: + sonic_logger.log_warning("sfp cmdstatus i2c get failed %s" % register ) + return False + register = int(register, 16) + else: + bus = smbus.SMBus(0) + DEVICE_ADDRESS = 0x41 + DEVICE_REG = 0x5 + register = bus.read_byte_data(DEVICE_ADDRESS, DEVICE_REG) - return NotImplementedError + pos = [1, 2, 4, 8] + mask = pos[self.index-SFP_PORT_START] + if tx_disable == True: + setbits = register | mask + else: + setbits = register & ~mask + + if smbus_present == 0: # if called from sfputil outside of pmon + cmdstatus, output = cmd.getstatusoutput('sudo i2cset -y -m 0x0f 0 0x41 0x5 %d' % setbits) + if cmdstatus: + sonic_logger.log_warning("sfp cmdstatus i2c write failed %s" % output ) + return False + else: + bus = smbus.SMBus(0) + DEVICE_ADDRESS = 0x41 + DEVICE_REG = 0x5 + bus.write_byte_data(DEVICE_ADDRESS, DEVICE_REG, setbits) + + return True def tx_disable_channel(self, channel, disable): """ @@ -871,7 +906,7 @@ def get_name(self): sfputil_helper = SfpUtilHelper() sfputil_helper.read_porttab_mappings( self.__get_path_to_port_config_file()) - name = sfputil_helper.logical[self.index] or "Unknown" + name = sfputil_helper.logical[self.index-1] or "Unknown" return name def get_presence(self): diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/test/test-watchdog.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/test/test-watchdog.py new file mode 100755 index 000000000000..20805e04ed29 --- /dev/null +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/test/test-watchdog.py @@ -0,0 +1,22 @@ +#!/usr/bin/python + +from sonic_platform.chassis import Chassis + + +def main(): + print("---------------------") + print("Chassis Watchdog Test") + print("---------------------") + + chassis = Chassis() + + watchdog = chassis.get_watchdog() + + print(" Armed: {}".format(watchdog.is_armed())) + print(" Time Left: {}".format(watchdog.get_remaining_time())) + + return + + +if __name__ == '__main__': + main() diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/thermal.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/thermal.py index 528a6e49d924..20fdec61f38e 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/thermal.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/thermal.py @@ -33,9 +33,12 @@ class Thermal(ThermalBase): "CPU Core") def __init__(self, thermal_index): + ThermalBase.__init__(self) self.index = thermal_index + 1 self.is_psu_thermal = False self.dependency = None + self._minimum = None + self._maximum = None self.thermal_high_threshold_file = None # PCB temperature sensors if self.index < 3: @@ -163,6 +166,10 @@ def get_temperature(self): self.thermal_temperature_file) if (thermal_temperature != 'ERR'): thermal_temperature = float(thermal_temperature) / 1000 + if self._minimum is None or self._minimum > thermal_temperature: + self._minimum = thermal_temperature + if self._maximum is None or self._maximum < thermal_temperature: + self._maximum = thermal_temperature else: thermal_temperature = 0 @@ -226,6 +233,14 @@ def get_high_critical_threshold(self): return float("{:.3f}".format(thermal_high_crit_threshold)) + def get_minimum_recorded(self): + self.get_temperature() + return self._minimum + + def get_maximum_recorded(self): + self.get_temperature() + return self._maximum + def get_position_in_parent(self): """ Retrieves 1-based relative physical position in parent device diff --git a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/watchdog.py b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/watchdog.py index 75ec3ab177ae..903b6365dc48 100644 --- a/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/watchdog.py +++ b/platform/marvell-armhf/sonic-platform-nokia/7215/sonic_platform/watchdog.py @@ -10,19 +10,25 @@ import array from sonic_platform_base.watchdog_base import WatchdogBase -from sonic_py_common import logger """ ioctl constants """ +IO_WRITE = 0x40000000 IO_READ = 0x80000000 +IO_READ_WRITE = 0xC0000000 IO_SIZE_INT = 0x00040000 IO_TYPE_WATCHDOG = ord('W') << 8 WDR_INT = IO_READ | IO_SIZE_INT | IO_TYPE_WATCHDOG +WDWR_INT = IO_READ_WRITE | IO_SIZE_INT | IO_TYPE_WATCHDOG """ Watchdog ioctl commands """ WDIOC_SETOPTIONS = 4 | WDR_INT WDIOC_KEEPALIVE = 5 | WDR_INT +WDIOC_SETTIMEOUT = 6 | WDWR_INT WDIOC_GETTIMEOUT = 7 | WDR_INT +WDIOC_SETPRETIMEOUT = 8 | WDWR_INT +WDIOC_GETPRETIMEOUT = 9 | WDR_INT +WDIOC_GETTIMELEFT = 10 | WDR_INT """ Watchdog status constants """ WDIOS_DISABLECARD = 0x0001 @@ -33,8 +39,6 @@ WD_COMMON_ERROR = -1 -sonic_logger = logger.Logger() - class WatchdogImplBase(WatchdogBase): """ @@ -47,6 +51,7 @@ def __init__(self, wd_device_path): Open a watchdog handle @param wd_device_path Path to watchdog device """ + super(WatchdogImplBase, self).__init__() self.watchdog_path = wd_device_path self.watchdog = os.open(self.watchdog_path, os.O_WRONLY) @@ -57,32 +62,40 @@ def __init__(self, wd_device_path): self.armed = False self.timeout = self._gettimeout() - def disarm(self): + def _disablewatchdog(self): + """ + Turn off the watchdog timer """ - Disarm the hardware watchdog - Returns: - A boolean, True if watchdog is disarmed successfully, False - if not + req = array.array('h', [WDIOS_DISABLECARD]) + fcntl.ioctl(self.watchdog, WDIOC_SETOPTIONS, req, False) + + def _enablewatchdog(self): + """ + Turn on the watchdog timer """ - sonic_logger.log_info(" Debug disarm watchdog ") - try: - self._disablewatchdog() - self.armed = False - self.timeout = 0 - except IOError: - return False + req = array.array('h', [WDIOS_ENABLECARD]) + fcntl.ioctl(self.watchdog, WDIOC_SETOPTIONS, req, False) - return True + def _keepalive(self): + """ + Keep alive watchdog timer + """ - def _disablewatchdog(self): + fcntl.ioctl(self.watchdog, WDIOC_KEEPALIVE) + + def _settimeout(self, seconds): """ - Turn off the watchdog timer + Set watchdog timer timeout + @param seconds - timeout in seconds + @return is the actual set timeout """ - req = array.array('h', [WDIOS_DISABLECARD]) - fcntl.ioctl(self.watchdog, WDIOC_SETOPTIONS, req, False) + req = array.array('I', [seconds]) + fcntl.ioctl(self.watchdog, WDIOC_SETTIMEOUT, req, True) + + return int(req[0]) def _gettimeout(self): """ @@ -95,11 +108,22 @@ def _gettimeout(self): return int(req[0]) + def _gettimeleft(self): + """ + Get time left before watchdog timer expires + @return time left in seconds + """ + + req = array.array('I', [0]) + fcntl.ioctl(self.watchdog, WDIOC_GETTIMELEFT, req, True) + + return int(req[0]) + def arm(self, seconds): """ - Implements arm WatchdogBase API + Arm the hardware watchdog """ - sonic_logger.log_info(" Debug arm watchdog4 ") + ret = WD_COMMON_ERROR if seconds < 0: return ret @@ -110,7 +134,6 @@ def arm(self, seconds): if self.armed: self._keepalive() else: - sonic_logger.log_info(" Debug arm watchdog5 ") self._enablewatchdog() self.armed = True ret = self.timeout @@ -119,17 +142,42 @@ def arm(self, seconds): return ret - def _enablewatchdog(self): + def disarm(self): """ - Turn on the watchdog timer + Disarm the hardware watchdog + + Returns: + A boolean, True if watchdog is disarmed successfully, False + if not """ - req = array.array('h', [WDIOS_ENABLECARD]) - fcntl.ioctl(self.watchdog, WDIOC_SETOPTIONS, req, False) + try: + self._disablewatchdog() + self.armed = False + self.timeout = 0 + except IOError: + return False - def _keepalive(self): + return True + + def is_armed(self): """ - Keep alive watchdog timer + Implements is_armed WatchdogBase API """ - fcntl.ioctl(self.watchdog, WDIOC_KEEPALIVE) + return self.armed + + def get_remaining_time(self): + """ + Implements get_remaining_time WatchdogBase API + """ + + timeleft = WD_COMMON_ERROR + + if self.armed: + try: + timeleft = self._gettimeleft() + except IOError: + pass + + return timeleft diff --git a/platform/marvell/docker-syncd-mrvl-rpc.mk b/platform/marvell/docker-syncd-mrvl-rpc.mk index 414bc500b453..c8a94878956f 100644 --- a/platform/marvell/docker-syncd-mrvl-rpc.mk +++ b/platform/marvell/docker-syncd-mrvl-rpc.mk @@ -20,7 +20,7 @@ endif $(DOCKER_SYNCD_MRVL_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_MRVL_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_MRVL_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_MRVL_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot diff --git a/platform/mellanox/docker-saiserver-mlnx.mk b/platform/mellanox/docker-saiserver-mlnx.mk index 6515fa9846b1..dd380a634c65 100644 --- a/platform/mellanox/docker-saiserver-mlnx.mk +++ b/platform/mellanox/docker-saiserver-mlnx.mk @@ -9,7 +9,9 @@ SONIC_DOCKER_IMAGES += $(DOCKER_SAISERVER_MLNX) SONIC_STRETCH_DOCKERS += $(DOCKER_SAISERVER_MLNX) $(DOCKER_SAISERVER_MLNX)_CONTAINER_NAME = saiserver -$(DOCKER_SAISERVER_MLNX)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SAISERVER_MLNX)_RUN_OPT += --privileged -t $(DOCKER_SAISERVER_MLNX)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SAISERVER_MLNX)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_BASE)_RUN_OPT += --tmpfs /run/criu + +SONIC_BUSTER_DOCKERS += $(DOCKER_SAISERVER_MLNX) diff --git a/platform/mellanox/docker-syncd-mlnx-rpc.mk b/platform/mellanox/docker-syncd-mlnx-rpc.mk index fe2ff5916493..0b8c775f6b47 100644 --- a/platform/mellanox/docker-syncd-mlnx-rpc.mk +++ b/platform/mellanox/docker-syncd-mlnx-rpc.mk @@ -26,3 +26,5 @@ $(DOCKER_SYNCD_MLNX_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_MLNX_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_MLNX_RPC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SYNCD_MLNX_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot + +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_MLNX_RPC) diff --git a/platform/mellanox/fw.mk b/platform/mellanox/fw.mk index 0b8768b4755f..6b9790374d40 100644 --- a/platform/mellanox/fw.mk +++ b/platform/mellanox/fw.mk @@ -11,17 +11,17 @@ else FW_FROM_URL = n endif -MLNX_SPC_FW_VERSION = 13.2008.3224 +MLNX_SPC_FW_VERSION = 13.2008.3326 MLNX_SPC_FW_FILE = fw-SPC-rel-$(subst .,_,$(MLNX_SPC_FW_VERSION))-EVB.mfa $(MLNX_SPC_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC_FW_FILE) -MLNX_SPC2_FW_VERSION = 29.2008.3224 +MLNX_SPC2_FW_VERSION = 29.2008.3326 MLNX_SPC2_FW_FILE = fw-SPC2-rel-$(subst .,_,$(MLNX_SPC2_FW_VERSION))-EVB.mfa $(MLNX_SPC2_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC2_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC2_FW_FILE) -MLNX_SPC3_FW_VERSION = 30.2008.3224 +MLNX_SPC3_FW_VERSION = 30.2008.3326 MLNX_SPC3_FW_FILE = fw-SPC3-rel-$(subst .,_,$(MLNX_SPC3_FW_VERSION))-EVB.mfa $(MLNX_SPC3_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC3_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC3_FW_FILE) diff --git a/platform/mellanox/hw-management.mk b/platform/mellanox/hw-management.mk index 3f8724fa1358..6dc1f2655629 100644 --- a/platform/mellanox/hw-management.mk +++ b/platform/mellanox/hw-management.mk @@ -1,6 +1,6 @@ # Mellanox HW Management -MLNX_HW_MANAGEMENT_VERSION = 7.0010.2304 +MLNX_HW_MANAGEMENT_VERSION = 7.0010.2344 export MLNX_HW_MANAGEMENT_VERSION diff --git a/platform/mellanox/hw-management/hw-mgmt b/platform/mellanox/hw-management/hw-mgmt index 5aaacf787c8f..b661fa329e2d 160000 --- a/platform/mellanox/hw-management/hw-mgmt +++ b/platform/mellanox/hw-management/hw-mgmt @@ -1 +1 @@ -Subproject commit 5aaacf787c8f1631e1617884abf4d9879ac23151 +Subproject commit b661fa329e2dff4fd6c22da89d009169e1008d99 diff --git a/platform/mellanox/issu-version.mk b/platform/mellanox/issu-version.mk index db368ffd8c10..574c3324076c 100644 --- a/platform/mellanox/issu-version.mk +++ b/platform/mellanox/issu-version.mk @@ -5,6 +5,9 @@ $(ISSU_VERSION_FILE)_SRC_PATH = $(PLATFORM_PATH)/issu-version $(ISSU_VERSION_FILE)_DEPENDS += $(APPLIBS) SONIC_MAKE_FILES += $(ISSU_VERSION_FILE) -MLNX_FILES += $(ISSU_VERSION_FILE) +# TODO: Disable because the base OS version (bullseye) doesn't match what the +# SDK app packages are built for (buster), and this target assumes that they +# are available. +#MLNX_FILES += $(ISSU_VERSION_FILE) export ISSU_VERSION_FILE diff --git a/platform/mellanox/mft.mk b/platform/mellanox/mft.mk index 919e6fae9d9a..eb6143db7f78 100644 --- a/platform/mellanox/mft.mk +++ b/platform/mellanox/mft.mk @@ -1,17 +1,21 @@ # Mellanox SAI -MFT_VERSION = 4.16.0 -MFT_REVISION = 105 +MFT_VERSION = 4.17.0 +MFT_REVISION = 106 export MFT_VERSION MFT_REVISION MFT = mft_$(MFT_VERSION)-$(MFT_REVISION)_amd64.deb $(MFT)_SRC_PATH = $(PLATFORM_PATH)/mft +ifeq ($(DISTRO), bullseye) $(MFT)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON) +endif SONIC_MAKE_DEBS += $(MFT) +ifeq ($(DISTRO), bullseye) KERNEL_MFT = kernel-mft-dkms-modules-$(KVERSION)_$(MFT_VERSION)_amd64.deb $(eval $(call add_derived_package,$(MFT),$(KERNEL_MFT))) +endif MFT_OEM = mft-oem_$(MFT_VERSION)-$(MFT_REVISION)_amd64.deb $(eval $(call add_derived_package,$(MFT),$(MFT_OEM))) diff --git a/platform/mellanox/mft/Makefile b/platform/mellanox/mft/Makefile index 84a587730386..cb5e7e6e4c49 100644 --- a/platform/mellanox/mft/Makefile +++ b/platform/mellanox/mft/Makefile @@ -19,6 +19,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : wget -O $(MFT_TGZ) http://www.mellanox.com/downloads/MFT/$(MFT_TGZ) tar xzf $(MFT_TGZ) +ifeq ($(DISTRO), bullseye) pushd $(MFT_NAME)/SDEBS # put a lock here because dpkg does not allow installing packages in parallel @@ -46,6 +47,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : popd rm -rf $(DKMS_TMP) +endif # fix timestamp because we do not actually build tools, only kernel touch $(MFT_NAME)/DEBS/*.deb diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py b/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py index b40712a91d06..7eb0ce946b17 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/fan.py @@ -65,8 +65,8 @@ def __init__(self, fan_index, fan_drawer, position, psu_fan = False, psu=None): self.fan_speed_get_path = "psu{}_fan1_speed_get".format(self.index) self.fan_presence_path = "psu{}_fan1_speed_get".format(self.index) self._name = 'psu{}_fan{}'.format(self.index, 1) - self.fan_max_speed_path = os.path.join(CONFIG_PATH, "psu_fan_max") - self.fan_min_speed_path = os.path.join(CONFIG_PATH, "psu_fan_min") + self.fan_max_speed_path = os.path.join(FAN_PATH, "psu{}_fan_max".format(self.index)) + self.fan_min_speed_path = os.path.join(FAN_PATH, "psu{}_fan_min".format(self.index)) self.psu_i2c_bus_path = os.path.join(CONFIG_PATH, 'psu{0}_i2c_bus'.format(self.index)) self.psu_i2c_addr_path = os.path.join(CONFIG_PATH, 'psu{0}_i2c_addr'.format(self.index)) self.psu_i2c_command_path = os.path.join(CONFIG_PATH, 'fan_command') diff --git a/platform/mellanox/mlnx-sai.mk b/platform/mellanox/mlnx-sai.mk index 7929b8c75181..2570a2d0fefe 100644 --- a/platform/mellanox/mlnx-sai.mk +++ b/platform/mellanox/mlnx-sai.mk @@ -1,6 +1,6 @@ # Mellanox SAI -MLNX_SAI_VERSION = SAIRel1.19.1 +MLNX_SAI_VERSION = SAIRel1.19.2 export MLNX_SAI_VERSION diff --git a/platform/mellanox/mlnx-sai/SAI-Implementation b/platform/mellanox/mlnx-sai/SAI-Implementation index be35fa45f163..971a8448dadf 160000 --- a/platform/mellanox/mlnx-sai/SAI-Implementation +++ b/platform/mellanox/mlnx-sai/SAI-Implementation @@ -1 +1 @@ -Subproject commit be35fa45f163f6e1a36368f1776dc5fc745fc845 +Subproject commit 971a8448dadff061a0d8af5d79e00a20ebaf769d diff --git a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers b/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers index 3a0e3a26de2e..726bef49c07a 160000 --- a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers +++ b/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers @@ -1 +1 @@ -Subproject commit 3a0e3a26de2e1384b7ed216dc4cd842b36655e27 +Subproject commit 726bef49c07a1a0d7c52d8e3062e95ec6efa736f diff --git a/platform/mellanox/sdk.mk b/platform/mellanox/sdk.mk index 67f8ab3fced9..3c5a46a76767 100644 --- a/platform/mellanox/sdk.mk +++ b/platform/mellanox/sdk.mk @@ -1,6 +1,6 @@ MLNX_SDK_BASE_PATH = $(PLATFORM_PATH)/sdk-src/sx-kernel/Switch-SDK-drivers/bin/ MLNX_SDK_PKG_BASE_PATH = $(MLNX_SDK_BASE_PATH)/$(BLDENV)/ -MLNX_SDK_VERSION = 4.4.3222 +MLNX_SDK_VERSION = 4.4.3326 MLNX_SDK_ISSU_VERSION = 101 MLNX_SDK_DEB_VERSION = $(subst -,.,$(subst _,.,$(MLNX_SDK_VERSION))) diff --git a/platform/nephos/docker-syncd-nephos-rpc.mk b/platform/nephos/docker-syncd-nephos-rpc.mk index ea514712c59f..94ba95b15dca 100644 --- a/platform/nephos/docker-syncd-nephos-rpc.mk +++ b/platform/nephos/docker-syncd-nephos-rpc.mk @@ -20,7 +20,7 @@ endif $(DOCKER_SYNCD_NEPHOS_RPC)_CONTAINER_NAME = syncd $(DOCKER_SYNCD_NEPHOS_RPC)_VERSION = 1.0.0-rpc $(DOCKER_SYNCD_NEPHOS_RPC)_PACKAGE_NAME = syncd -$(DOCKER_SYNCD_NEPHOS_RPC)_RUN_OPT += --net=host --privileged -t +$(DOCKER_SYNCD_NEPHOS_RPC)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_NEPHOS_RPC)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_NEPHOS_RPC)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_SYNCD_NEPHOS_RPC)_RUN_OPT += -v /var/run/docker-syncd:/var/run/sswsyncd diff --git a/platform/pddf/i2c/debian/rules b/platform/pddf/i2c/debian/rules index 35fca9a784ad..45a58fb9b570 100755 --- a/platform/pddf/i2c/debian/rules +++ b/platform/pddf/i2c/debian/rules @@ -12,7 +12,7 @@ include /usr/share/dpkg/pkg-info.mk export INSTALL_MOD_DIR:=extra -PYTHON ?= python2 +PYTHON ?= python3 PACKAGE_PRE_NAME := sonic-platform-pddf KVERSION ?= $(shell uname -r) diff --git a/platform/pddf/i2c/modules/cpld/pddf_cpld_module.c b/platform/pddf/i2c/modules/cpld/pddf_cpld_module.c index af15e390265f..156ab9644c6c 100644 --- a/platform/pddf/i2c/modules/cpld/pddf_cpld_module.c +++ b/platform/pddf/i2c/modules/cpld/pddf_cpld_module.c @@ -115,7 +115,7 @@ static ssize_t do_device_operation(struct device *dev, struct device_attribute * strcpy(board_info.type, device_ptr->dev_type); /*pddf_dbg(KERN_ERR "Creating a client %s on 0x%x, platform_data 0x%x\n", board_info.type, board_info.addr, board_info.platform_data);*/ - client_ptr = i2c_new_device(adapter, &board_info); + client_ptr = i2c_new_client_device(adapter, &board_info); if (client_ptr != NULL) { i2c_put_adapter(adapter); diff --git a/platform/template/docker-gbsyncd-base.mk b/platform/template/docker-gbsyncd-base.mk index 579f76381010..0b02557845f9 100644 --- a/platform/template/docker-gbsyncd-base.mk +++ b/platform/template/docker-gbsyncd-base.mk @@ -24,6 +24,6 @@ SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_GBSYNCD_BASE_DBG) SONIC_INSTALL_DOCKER_DBG_IMAGES += $(DOCKER_GBSYNCD_BASE_DBG) $(DOCKER_GBSYNCD_BASE)_CONTAINER_NAME = gbsyncd -$(DOCKER_GBSYNCD_BASE)_RUN_OPT += --net=host --privileged -t +$(DOCKER_GBSYNCD_BASE)_RUN_OPT += --privileged -t $(DOCKER_GBSYNCD_BASE)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_GBSYNCD_BASE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro diff --git a/platform/template/docker-syncd-base.mk b/platform/template/docker-syncd-base.mk index d95d7a141920..a6a027f94aac 100644 --- a/platform/template/docker-syncd-base.mk +++ b/platform/template/docker-syncd-base.mk @@ -38,3 +38,5 @@ $(DOCKER_SYNCD_BASE)_RUN_OPT += --privileged -t $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /host/machine.conf:/etc/machine.conf $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BASE) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SYNCD_BASE_DBG) diff --git a/platform/vs/docker-ptf.mk b/platform/vs/docker-ptf.mk index 4fde844fe24b..445fc8daf4d3 100644 --- a/platform/vs/docker-ptf.mk +++ b/platform/vs/docker-ptf.mk @@ -4,4 +4,4 @@ DOCKER_PTF = docker-ptf.gz $(DOCKER_PTF)_PATH = $(DOCKERS_PATH)/docker-ptf $(DOCKER_PTF)_DEPENDS += $(LIBTHRIFT) $(PYTHON_THRIFT) $(PTF) $(PYTHON_SAITHRIFT) SONIC_DOCKER_IMAGES += $(DOCKER_PTF) -SONIC_STRETCH_DOCKERS += $(DOCKER_PTF) +SONIC_BUSTER_DOCKERS += $(DOCKER_PTF) diff --git a/platform/vs/docker-sonic-vs.mk b/platform/vs/docker-sonic-vs.mk index 6667c4abba9d..5d50d2409419 100644 --- a/platform/vs/docker-sonic-vs.mk +++ b/platform/vs/docker-sonic-vs.mk @@ -11,7 +11,6 @@ $(DOCKER_SONIC_VS)_DEPENDS += $(SWSS) \ $(SONIC_DEVICE_DATA) \ $(LIBYANG) \ $(LIBYANG_CPP) \ - $(LIBYANG_PY2) \ $(LIBYANG_PY3) \ $(SONIC_UTILITIES_DATA) \ $(SONIC_HOST_SERVICES_DATA) @@ -51,3 +50,5 @@ $(DOCKER_SONIC_VS)_FILES += $(CONFIGDB_LOAD_SCRIPT) \ $(DOCKER_SONIC_VS)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER) SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_VS) + +SONIC_BUSTER_DOCKERS += $(DOCKER_SONIC_VS) diff --git a/platform/vs/docker-sonic-vs/Dockerfile.j2 b/platform/vs/docker-sonic-vs/Dockerfile.j2 index 2e11cdaea3db..ab686d3a13de 100644 --- a/platform/vs/docker-sonic-vs/Dockerfile.j2 +++ b/platform/vs/docker-sonic-vs/Dockerfile.j2 @@ -175,6 +175,7 @@ COPY ["buffermgrd.sh", "/usr/bin/"] COPY ["platform.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/"] COPY ["hwsku.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/Force10-S6000/"] +COPY ["hwsku.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/"] # Workaround the tcpdump issue RUN mv /usr/sbin/tcpdump /usr/bin/tcpdump diff --git a/platform/vs/docker-sonic-vs/start.sh b/platform/vs/docker-sonic-vs/start.sh index 2d771a3cc6fd..047918d2e518 100755 --- a/platform/vs/docker-sonic-vs/start.sh +++ b/platform/vs/docker-sonic-vs/start.sh @@ -53,6 +53,10 @@ else fi sonic-cfggen -t /usr/share/sonic/templates/copp_cfg.j2 > /etc/sonic/copp_cfg.json +if [ "$fake_platform" == "mellanox" ]; then + cp /usr/share/sonic/hwsku/sai_mlnx.profile /usr/share/sonic/hwsku/sai.profile +fi + mkdir -p /etc/swss/config.d/ rm -f /var/run/rsyslogd.pid @@ -105,6 +109,11 @@ fi /usr/bin/configdb-load.sh +if [ "$HWSKU" = "brcm_gearbox_vs" ]; then + supervisorctl start gbsyncd + supervisorctl start gearsyncd +fi + supervisorctl start syncd supervisorctl start portsyncd diff --git a/platform/vs/docker-sonic-vs/supervisord.conf b/platform/vs/docker-sonic-vs/supervisord.conf index 977b84117e3e..96f027131520 100644 --- a/platform/vs/docker-sonic-vs/supervisord.conf +++ b/platform/vs/docker-sonic-vs/supervisord.conf @@ -43,6 +43,23 @@ autorestart=false stdout_logfile=syslog stderr_logfile=syslog +[program:gbsyncd] +command=/usr/bin/syncd -s -p /usr/share/sonic/hwsku/pai.profile -x /usr/share/sonic/hwsku/context_config.json -g 1 +priority=4 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:gearsyncd] +command=/usr/bin/gearsyncd -p /usr/share/sonic/hwsku/gearbox_config.json +startsecs=0 +priority=5 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + [program:portsyncd] command=/usr/bin/portsyncd priority=5 diff --git a/platform/vs/docker-syncd-vs.mk b/platform/vs/docker-syncd-vs.mk index d2f7872ea446..1bfeeda81acf 100644 --- a/platform/vs/docker-syncd-vs.mk +++ b/platform/vs/docker-syncd-vs.mk @@ -15,3 +15,5 @@ $(DOCKER_SYNCD_BASE)_VERSION = 1.0.0 $(DOCKER_SYNCD_BASE)_PACKAGE_NAME = syncd $(DOCKER_SYNCD_BASE)_RUN_OPT += -v /host/warmboot:/var/warmboot + +SONIC_BUSTER_DOCKERS += $(DOCKER_SYNCD_BASE) diff --git a/platform/vs/kvm-image.mk b/platform/vs/kvm-image.mk index 439a6fc1e418..911b7e9a86be 100644 --- a/platform/vs/kvm-image.mk +++ b/platform/vs/kvm-image.mk @@ -10,5 +10,5 @@ $(SONIC_KVM_IMAGE)_DOCKERS += $(filter-out $(patsubst %-$(DBG_IMAGE_MARK).gz,%.g else $(SONIC_KVM_IMAGE)_DOCKERS = $(SONIC_INSTALL_DOCKER_IMAGES) endif -$(SONIC_KVM_IMAGE)_FILES = $(ONIE_RECOVERY_IMAGE) +$(SONIC_KVM_IMAGE)_FILES = $(ONIE_RECOVERY_IMAGE) $(ONIE_RECOVERY_KVM_4ASIC_IMAGE) $(ONIE_RECOVERY_KVM_6ASIC_IMAGE) SONIC_INSTALLERS += $(SONIC_KVM_IMAGE) diff --git a/platform/vs/onie.mk b/platform/vs/onie.mk index 09a807c25b2a..c64a09b8861b 100644 --- a/platform/vs/onie.mk +++ b/platform/vs/onie.mk @@ -1,4 +1,10 @@ ONIE_RECOVERY_IMAGE = onie-recovery-x86_64-kvm_x86_64-r0.iso $(ONIE_RECOVERY_IMAGE)_URL = "https://sonicstorage.blob.core.windows.net/packages/onie/onie-recovery-x86_64-kvm_x86_64-r0.iso?sv=2015-04-05&sr=b&sig=XMAk1cttBFM369CMbihe5oZgXwe4uaDVfwg4CTLT%2F5U%3D&se=2155-10-13T10%3A40%3A13Z&sp=r" -SONIC_ONLINE_FILES += $(ONIE_RECOVERY_IMAGE) +ONIE_RECOVERY_KVM_4ASIC_IMAGE = onie-recovery-x86_64-kvm_x86_64_4_asic-r0.iso +$(ONIE_RECOVERY_KVM_4ASIC_IMAGE)_URL = "https://sonicstorage.blob.core.windows.net/packages/onie/onie-recovery-x86_64-kvm_x86_64_4_asic-r0.iso?sv=2020-04-08&st=2021-08-27T22%3A41%3A07Z&se=2030-08-28T22%3A41%3A00Z&sr=b&sp=r&sig=zyaX7rHnE5jXldpgrnWq1nvsfmMTrVCSuESZqrIxDLc%3D" + +ONIE_RECOVERY_KVM_6ASIC_IMAGE = onie-recovery-x86_64-kvm_x86_64_6_asic-r0.iso +$(ONIE_RECOVERY_KVM_6ASIC_IMAGE)_URL = "https://sonicstorage.blob.core.windows.net/packages/onie/onie-recovery-x86_64-kvm_x86_64_6_asic-r0.iso?sv=2020-04-08&st=2021-08-27T22%3A42%3A24Z&se=2030-08-28T22%3A42%3A00Z&sr=b&sp=r&sig=RqbtHJt8Hvy7j78jt3TgXo27T7zjdUDfSxqmOID1YUU%3D" + +SONIC_ONLINE_FILES += $(ONIE_RECOVERY_IMAGE) $(ONIE_RECOVERY_KVM_4ASIC_IMAGE) $(ONIE_RECOVERY_KVM_6ASIC_IMAGE) diff --git a/platform/vs/tests/breakout/sample_output/sample_new_port_config.json b/platform/vs/tests/breakout/sample_output/sample_new_port_config.json index 7c5c190a3330..442224ea6d6e 100644 --- a/platform/vs/tests/breakout/sample_output/sample_new_port_config.json +++ b/platform/vs/tests/breakout/sample_output/sample_new_port_config.json @@ -2,14 +2,12 @@ "Ethernet0_2x50G": { "Ethernet2": { "alias": "fortyGigE0/2", - "admin_status": "up", "lanes": "27,28", "speed": "50000", "index": "0" }, "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25,26", "speed": "50000", "index": "0" @@ -18,21 +16,18 @@ "Ethernet12_1x50G_2x25G": { "Ethernet12": { "alias": "fortyGigE0/12", - "admin_status": "up", "lanes": "37,38", "speed": "50000", "index": "3" }, "Ethernet14": { "alias": "fortyGigE0/14", - "admin_status": "up", "lanes": "39", "speed": "25000", "index": "3" }, "Ethernet15": { "alias": "fortyGigE0/15", - "admin_status": "up", "lanes": "40", "speed": "25000", "index": "3" @@ -41,14 +36,12 @@ "Ethernet0_2x50G": { "Ethernet2": { "alias": "fortyGigE0/2", - "admin_status": "up", "lanes": "27,28", "speed": "50000", "index": "0" }, "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25,26", "speed": "50000", "index": "0" @@ -57,7 +50,6 @@ "Ethernet0_1x100G": { "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25,26,27,28", "speed": "100000", "index": "0" @@ -66,28 +58,24 @@ "Ethernet0_4x25G": { "Ethernet2": { "alias": "fortyGigE0/2", - "admin_status": "up", "lanes": "27", "speed": "25000", "index": "0" }, "Ethernet3": { "alias": "fortyGigE0/3", - "admin_status": "up", "lanes": "28", "speed": "25000", "index": "0" }, "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25", "speed": "25000", "index": "0" }, "Ethernet1": { "alias": "fortyGigE0/1", - "admin_status": "up", "lanes": "26", "speed": "25000", "index": "0" @@ -96,21 +84,18 @@ "Ethernet0_2x25G_1x50G": { "Ethernet2": { "alias": "fortyGigE0/2", - "admin_status": "up", "lanes": "27,28", "speed": "50000", "index": "0" }, "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25", "speed": "25000", "index": "0" }, "Ethernet1": { "alias": "fortyGigE0/1", - "admin_status": "up", "lanes": "26", "speed": "25000", "index": "0" @@ -119,21 +104,18 @@ "Ethernet0_1x50G_2x25G": { "Ethernet2": { "alias": "fortyGigE0/2", - "admin_status": "up", "lanes": "27", "speed": "25000", "index": "0" }, "Ethernet3": { "alias": "fortyGigE0/3", - "admin_status": "up", "lanes": "28", "speed": "25000", "index": "0" }, "Ethernet0": { "alias": "fortyGigE0/0", - "admin_status": "up", "lanes": "25,26", "speed": "50000", "index": "0" @@ -142,28 +124,24 @@ "Ethernet4_4x25G": { "Ethernet6": { "alias": "fortyGigE0/6", - "admin_status": "up", "lanes": "31", "speed": "25000", "index": "1" }, "Ethernet7": { "alias": "fortyGigE0/7", - "admin_status": "up", "lanes": "32", "speed": "25000", "index": "1" }, "Ethernet4": { "alias": "fortyGigE0/4", - "admin_status": "up", "lanes": "29", "speed": "25000", "index": "1" }, "Ethernet5": { "alias": "fortyGigE0/5", - "admin_status": "up", "lanes": "30", "speed": "25000", "index": "1" @@ -172,14 +150,12 @@ "Ethernet4_2x50G": { "Ethernet6": { "alias": "fortyGigE0/6", - "admin_status": "up", "lanes": "31,32", "speed": "50000", "index": "1" }, "Ethernet4": { "alias": "fortyGigE0/4", - "admin_status": "up", "lanes": "29,30", "speed": "50000", "index": "1" @@ -188,14 +164,12 @@ "Ethernet8_2x50G": { "Ethernet8": { "alias": "fortyGigE0/8", - "admin_status": "up", "lanes": "33,34", "speed": "50000", "index": "2" }, "Ethernet10": { "alias": "fortyGigE0/10", - "admin_status": "up", "lanes": "35,36", "speed": "50000", "index": "2" @@ -204,14 +178,12 @@ "Ethernet8_1x50G_2x25G": { "Ethernet10": { "alias": "fortyGigE0/10", - "admin_status": "up", "lanes": "35", "speed": "25000", "index": "2" }, "Ethernet11": { "alias": "fortyGigE0/11", - "admin_status": "up", "lanes": "36", "speed": "25000", "index": "2" @@ -220,21 +192,18 @@ "Ethernet8_2x25G_1x50G": { "Ethernet8": { "alias": "fortyGigE0/8", - "admin_status": "up", "lanes": "33", "speed": "25000", "index": "2" }, "Ethernet9": { "alias": "fortyGigE0/9", - "admin_status": "up", "lanes": "34", "speed": "25000", "index": "2" }, "Ethernet10": { "alias": "fortyGigE0/10", - "admin_status": "up", "lanes": "35,36", "speed": "50000", "index": "2" @@ -243,7 +212,6 @@ "Ethernet8_1x100G": { "Ethernet8": { "alias": "fortyGigE0/8", - "admin_status": "up", "lanes": "33,34,35,36", "speed": "100000", "index": "2" diff --git a/rules/config b/rules/config index 9c77aee1f0c0..6171894cff7d 100644 --- a/rules/config +++ b/rules/config @@ -196,3 +196,6 @@ SONIC_VERSION_CONTROL_COMPONENTS ?= none # Set the env variable ENABLE_DOCKER_BASE_PULL = y to enable pulling sonic-slave docker from registry REGISTRY_PORT ?= 443 REGISTRY_SERVER ?= sonicdev-microsoft.azurecr.io + +# BUILD_MULTIASIC_KVM - if set to y multi-asic KVM images will be generated. +BUILD_MULTIASIC_KVM = n diff --git a/rules/docker-base-buster.mk b/rules/docker-base-buster.mk index 86bfc5781466..ead798578bfe 100644 --- a/rules/docker-base-buster.mk +++ b/rules/docker-base-buster.mk @@ -14,3 +14,4 @@ STRACE = strace $(DOCKER_BASE_BUSTER)_DBG_IMAGE_PACKAGES += $(GDB) $(GDBSERVER) $(VIM) $(OPENSSH) $(SSHPASS) $(STRACE) SONIC_DOCKER_IMAGES += $(DOCKER_BASE_BUSTER) +SONIC_BUSTER_DOCKERS += $(DOCKER_BASE_BUSTER) diff --git a/rules/docker-config-engine-buster.mk b/rules/docker-config-engine-buster.mk index 6dc11265306e..f3df95c36d74 100644 --- a/rules/docker-config-engine-buster.mk +++ b/rules/docker-config-engine-buster.mk @@ -23,3 +23,4 @@ $(DOCKER_CONFIG_ENGINE_BUSTER)_DBG_DEPENDS = $($(DOCKER_BASE_BUSTER)_DBG_DEPENDS $(DOCKER_CONFIG_ENGINE_BUSTER)_DBG_IMAGE_PACKAGES = $($(DOCKER_BASE_BUSTER)_DBG_IMAGE_PACKAGES) SONIC_DOCKER_IMAGES += $(DOCKER_CONFIG_ENGINE_BUSTER) +SONIC_BUSTER_DOCKERS += $(DOCKER_CONFIG_ENGINE_BUSTER) diff --git a/rules/docker-database.mk b/rules/docker-database.mk index 9f977f09616d..d7ce311110ee 100644 --- a/rules/docker-database.mk +++ b/rules/docker-database.mk @@ -28,3 +28,6 @@ $(DOCKER_DATABASE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_DATABASE)_BASE_IMAGE_FILES += redis-cli:/usr/bin/redis-cli $(DOCKER_DATABASE)_FILES += $(SYSCTL_NET_CONFIG) $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) $(DOCKER_DATABASE)_FILES += $(UPDATE_CHASSISDB_CONFIG_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_DATABASE) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_DATABASE_DBG) diff --git a/rules/docker-dhcp-relay.mk b/rules/docker-dhcp-relay.mk index a8b33c5bc74c..039f64a4ecf6 100644 --- a/rules/docker-dhcp-relay.mk +++ b/rules/docker-dhcp-relay.mk @@ -55,3 +55,6 @@ $(DOCKER_DHCP_RELAY)_CLI_CONFIG_PLUGIN = /cli/config/plugins/dhcp_relay.py $(DOCKER_DHCP_RELAY)_CLI_SHOW_PLUGIN = /cli/show/plugins/show_dhcp_relay.py $(DOCKER_DHCP_RELAY)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_DHCP_RELAY) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_DHCP_RELAY_DBG) diff --git a/rules/docker-fpm-frr.mk b/rules/docker-fpm-frr.mk index 37c3a62f1855..b6c4f2e0e02f 100644 --- a/rules/docker-fpm-frr.mk +++ b/rules/docker-fpm-frr.mk @@ -39,3 +39,6 @@ $(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSA:/usr/bin/TSA $(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSB:/usr/bin/TSB $(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TSC:/usr/bin/TSC $(DOCKER_FPM_FRR)_BASE_IMAGE_FILES += TS:/usr/bin/TS + +SONIC_BUSTER_DOCKERS += $(DOCKER_FPM_FRR) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_FPM_FRR_DBG) diff --git a/rules/docker-iccpd.mk b/rules/docker-iccpd.mk index 69b9fee50eef..c0c747997959 100644 --- a/rules/docker-iccpd.mk +++ b/rules/docker-iccpd.mk @@ -25,3 +25,6 @@ $(DOCKER_ICCPD)_RUN_OPT += --privileged -t $(DOCKER_ICCPD)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_ICCPD)_BASE_IMAGE_FILES += mclagdctl:/usr/bin/mclagdctl + +SONIC_BUSTER_DOCKERS += $(DOCKER_ICCPD) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_ICCPD_DBG) diff --git a/rules/docker-lldp.mk b/rules/docker-lldp.mk index 2c3d41a46d1a..f9c77ec14c40 100644 --- a/rules/docker-lldp.mk +++ b/rules/docker-lldp.mk @@ -35,3 +35,6 @@ $(DOCKER_LLDP)_RUN_OPT += -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:r $(DOCKER_LLDP)_BASE_IMAGE_FILES += lldpctl:/usr/bin/lldpctl $(DOCKER_LLDP)_BASE_IMAGE_FILES += lldpcli:/usr/bin/lldpcli $(DOCKER_LLDP)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_LLDP) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_LLDP_DBG) diff --git a/rules/docker-macsec.mk b/rules/docker-macsec.mk index 8fc5e0baa85c..3ffdf1bd6f76 100644 --- a/rules/docker-macsec.mk +++ b/rules/docker-macsec.mk @@ -33,3 +33,6 @@ $(DOCKER_MACSEC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_MACSEC)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_MACSEC)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_MACSEC) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_MACSEC_DBG) diff --git a/rules/docker-nat.mk b/rules/docker-nat.mk index b5ead85d1919..07aa02b0149b 100644 --- a/rules/docker-nat.mk +++ b/rules/docker-nat.mk @@ -36,3 +36,6 @@ $(DOCKER_NAT)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_NAT)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) $(DOCKER_NAT)_BASE_IMAGE_FILES += natctl:/usr/bin/natctl + +SONIC_BUSTER_DOCKERS += $(DOCKER_NAT) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_NAT_DBG) diff --git a/rules/docker-orchagent.mk b/rules/docker-orchagent.mk index 3273b675905d..2b7a3f34eec5 100644 --- a/rules/docker-orchagent.mk +++ b/rules/docker-orchagent.mk @@ -38,3 +38,6 @@ $(DOCKER_ORCHAGENT)_RUN_OPT += -v /var/log/swss:/var/log/swss:rw $(DOCKER_ORCHAGENT)_BASE_IMAGE_FILES += swssloglevel:/usr/bin/swssloglevel $(DOCKER_ORCHAGENT)_FILES += $(ARP_UPDATE_SCRIPT) $(ARP_UPDATE_VARS_TEMPLATE) $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_ORCHAGENT) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_ORCHAGENT_DBG) diff --git a/rules/docker-platform-monitor.mk b/rules/docker-platform-monitor.mk index 4cb3299ca21e..0db2a051034d 100644 --- a/rules/docker-platform-monitor.mk +++ b/rules/docker-platform-monitor.mk @@ -73,3 +73,6 @@ $(DOCKER_PLATFORM_MONITOR)_BASE_IMAGE_FILES += cmd_wrapper:/usr/sbin/iSmart $(DOCKER_PLATFORM_MONITOR)_BASE_IMAGE_FILES += cmd_wrapper:/usr/sbin/SmartCmd $(DOCKER_PLATFORM_MONITOR)_BASE_IMAGE_FILES += cmd_wrapper:/usr/bin/ethtool $(DOCKER_PLATFORM_MONITOR)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_PLATFORM_MONITOR) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_PLATFORM_MONITOR_DBG) diff --git a/rules/docker-restapi.mk b/rules/docker-restapi.mk index 1c54bde741b8..5d09dffe03e6 100644 --- a/rules/docker-restapi.mk +++ b/rules/docker-restapi.mk @@ -26,3 +26,5 @@ $(DOCKER_RESTAPI)_RUN_OPT += -v /etc/sonic/credentials:/etc/sonic/credentials:ro $(DOCKER_RESTAPI)_RUN_OPT += -p=8081:8081/tcp $(DOCKER_RESTAPI)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_RESTAPI) diff --git a/rules/docker-router-advertiser.mk b/rules/docker-router-advertiser.mk index 14c896d820ae..c2a5f9bf5d3c 100644 --- a/rules/docker-router-advertiser.mk +++ b/rules/docker-router-advertiser.mk @@ -29,3 +29,6 @@ $(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += --privileged -t $(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:ro $(DOCKER_ROUTER_ADVERTISER)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_ROUTER_ADVERTISER) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_ROUTER_ADVERTISER_DBG) diff --git a/rules/docker-sflow.mk b/rules/docker-sflow.mk index 5762dd869ac7..099291005d90 100644 --- a/rules/docker-sflow.mk +++ b/rules/docker-sflow.mk @@ -36,3 +36,6 @@ $(DOCKER_SFLOW)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_SFLOW)_BASE_IMAGE_FILES += psample:/usr/bin/psample $(DOCKER_SFLOW)_BASE_IMAGE_FILES += sflowtool:/usr/bin/sflowtool $(DOCKER_SFLOW)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_SFLOW) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SFLOW_DBG) diff --git a/rules/docker-snmp.mk b/rules/docker-snmp.mk index 96a783d7a5a2..af90cf3664e8 100644 --- a/rules/docker-snmp.mk +++ b/rules/docker-snmp.mk @@ -31,3 +31,6 @@ $(DOCKER_SNMP)_RUN_OPT += --privileged -t $(DOCKER_SNMP)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro $(DOCKER_SNMP)_RUN_OPT += -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:ro $(DOCKER_SNMP)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_SNMP) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SNMP_DBG) diff --git a/rules/docker-sonic-mgmt-framework.mk b/rules/docker-sonic-mgmt-framework.mk index ef1d55990816..b0986e12d14e 100644 --- a/rules/docker-sonic-mgmt-framework.mk +++ b/rules/docker-sonic-mgmt-framework.mk @@ -36,3 +36,6 @@ $(DOCKER_MGMT_FRAMEWORK)_RUN_OPT += -v /var/run/dbus:/var/run/dbus:rw $(DOCKER_MGMT_FRAMEWORK)_RUN_OPT += --mount type=bind,source="/var/platform/",target="/mnt/platform/" $(DOCKER_MGMT_FRAMEWORK)_BASE_IMAGE_FILES += sonic-cli:/usr/bin/sonic-cli + +SONIC_BUSTER_DOCKERS += $(DOCKER_MGMT_FRAMEWORK) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_MGMT_FRAMEWORK_DBG) diff --git a/rules/docker-sonic-sdk-buildenv.mk b/rules/docker-sonic-sdk-buildenv.mk index 52e11b815cff..fc3ee9fac986 100644 --- a/rules/docker-sonic-sdk-buildenv.mk +++ b/rules/docker-sonic-sdk-buildenv.mk @@ -27,3 +27,6 @@ $(DOCKER_SONIC_SDK_BUILDENV)_LOAD_DOCKERS += $(DOCKER_SONIC_SDK) SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_SDK_BUILDENV) SONIC_DOCKER_DBG_IMAGES += $(DOCKER_SONIC_SDK_BUILDENV_DBG) + +SONIC_BUSTER_DOCKERS += $(DOCKER_SONIC_SDK_BUILDENV) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SONIC_SDK_BUILDENV_DBG) diff --git a/rules/docker-sonic-sdk.mk b/rules/docker-sonic-sdk.mk index b6a185c6d94e..d1253aeb1fca 100644 --- a/rules/docker-sonic-sdk.mk +++ b/rules/docker-sonic-sdk.mk @@ -22,3 +22,6 @@ $(DOCKER_SONIC_SDK)_LABELS += com.azure.sonic.versions.libswsscommon=$(LIBSWSSCO $(DOCKER_SONIC_SDK)_LABELS += com.azure.sonic.versions.libsairedis=$(LIBSAIREDIS_VERSION) $(DOCKER_SONIC_SDK)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_SONIC_SDK) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_SONIC_SDK_DBG) diff --git a/rules/docker-teamd.mk b/rules/docker-teamd.mk index 9135c45aea3e..4d1fe07a55ff 100644 --- a/rules/docker-teamd.mk +++ b/rules/docker-teamd.mk @@ -34,3 +34,6 @@ $(DOCKER_TEAMD)_RUN_OPT += -v /host/warmboot:/var/warmboot $(DOCKER_TEAMD)_BASE_IMAGE_FILES += teamdctl:/usr/bin/teamdctl $(DOCKER_TEAMD)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) + +SONIC_BUSTER_DOCKERS += $(DOCKER_TEAMD) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_TEAMD_DBG) diff --git a/rules/docker-telemetry.mk b/rules/docker-telemetry.mk index 4a1dd9e67d29..6922856f82a0 100644 --- a/rules/docker-telemetry.mk +++ b/rules/docker-telemetry.mk @@ -35,3 +35,6 @@ $(DOCKER_TELEMETRY)_RUN_OPT += -v /var/run/dbus:/var/run/dbus:rw $(DOCKER_TELEMETRY)_FILES += $(SUPERVISOR_PROC_EXIT_LISTENER_SCRIPT) $(DOCKER_TELEMETRY)_BASE_IMAGE_FILES += monit_telemetry:/etc/monit/conf.d + +SONIC_BUSTER_DOCKERS += $(DOCKER_TELEMETRY) +SONIC_BUSTER_DBG_DOCKERS += $(DOCKER_TELEMETRY_DBG) diff --git a/rules/frr.mk b/rules/frr.mk index 82db96557007..72cde12ebf75 100644 --- a/rules/frr.mk +++ b/rules/frr.mk @@ -3,7 +3,7 @@ FRR_VERSION = 7.5.1 FRR_SUBVERSION = 0 FRR_BRANCH = frr/7.5 -FRR_TAG = frr-7.5.1 +FRR_TAG = frr-7.5.1-s1 export FRR_VERSION FRR_SUBVERSION FRR_BRANCH FRR_TAG diff --git a/rules/ifupdown2.mk b/rules/ifupdown2.mk index f81facd8ff26..0a7abd7b2f12 100644 --- a/rules/ifupdown2.mk +++ b/rules/ifupdown2.mk @@ -1,6 +1,6 @@ # ifupdown2 package -IFUPDOWN2_VERSION = 1.2.8-1 +IFUPDOWN2_VERSION = 3.0.0-1 export IFUPDOWN2_VERSION IFUPDOWN2 = ifupdown2_$(IFUPDOWN2_VERSION)_all.deb diff --git a/rules/initramfs-tools.mk b/rules/initramfs-tools.mk index 2f3e55acac76..c396765af919 100644 --- a/rules/initramfs-tools.mk +++ b/rules/initramfs-tools.mk @@ -1,6 +1,6 @@ # initramfs-tools package -INITRAMFS_TOOLS_VERSION = 0.133 +INITRAMFS_TOOLS_VERSION = 0.140 export INITRAMFS_TOOLS_VERSION INITRAMFS_TOOLS = initramfs-tools_$(INITRAMFS_TOOLS_VERSION)_all.deb diff --git a/rules/libyang.mk b/rules/libyang.mk index 181db2368c6d..c8873c3b3231 100644 --- a/rules/libyang.mk +++ b/rules/libyang.mk @@ -29,11 +29,7 @@ LIBYANG_PY3 = python3-yang_$(LIBYANG_VERSION)_$(CONFIGURED_ARCH).deb $(LIBYANG_PY3)_DEPENDS += $(LIBYANG) $(LIBYANG_CPP) $(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_PY3))) -LIBYANG_PY2 = python2-yang_$(LIBYANG_VERSION)_$(CONFIGURED_ARCH).deb -$(LIBYANG_PY2)_DEPENDS += $(LIBYANG) $(LIBYANG_CPP) -$(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_PY2))) - $(eval $(call add_conflict_package,$(LIBYANG),$(LIBYANG1))) $(eval $(call add_conflict_package,$(LIBYANG_DEV),$(LIBYANG1_DEV))) -export LIBYANG LIBYANG_DBG LIBYANG_DEV LIBYANG_CPP LIBYANG_PY3 LIBYANG_PY2 +export LIBYANG LIBYANG_DBG LIBYANG_DEV LIBYANG_CPP LIBYANG_PY3 diff --git a/rules/linux-kernel.mk b/rules/linux-kernel.mk index 2d369361a9e5..b8fb093dd318 100644 --- a/rules/linux-kernel.mk +++ b/rules/linux-kernel.mk @@ -1,9 +1,9 @@ # linux kernel package -KVERSION_SHORT = 4.19.0-12-2 +KVERSION_SHORT = 5.10.0-8-2 KVERSION = $(KVERSION_SHORT)-$(CONFIGURED_ARCH) -KERNEL_VERSION = 4.19.152 -KERNEL_SUBVERSION = 1 +KERNEL_VERSION = 5.10.46 +KERNEL_SUBVERSION = 4 ifeq ($(CONFIGURED_ARCH), armhf) # Override kernel version for ARMHF as it uses arm MP (multi-platform) for short version KVERSION = $(KVERSION_SHORT)-armmp diff --git a/rules/ntp.mk b/rules/ntp.mk index 13cbb495f78f..52e7db516138 100644 --- a/rules/ntp.mk +++ b/rules/ntp.mk @@ -1,9 +1,9 @@ # ntp package -NTP_VERSION = 4.2.8p12+dfsg +NTP_VERSION = 4.2.8p15+dfsg export NTP_VERSION -NTP = ntp_$(NTP_VERSION)-4+deb10u2_$(CONFIGURED_ARCH).deb +NTP = ntp_$(NTP_VERSION)-1+deb10u2_$(CONFIGURED_ARCH).deb $(NTP)_SRC_PATH = $(SRC_PATH)/ntp SONIC_MAKE_DEBS += $(NTP) SONIC_STRETCH_DEBS += $(NTP) diff --git a/rules/openssh.mk b/rules/openssh.mk index 0cc3de621039..0e4696ed9d27 100644 --- a/rules/openssh.mk +++ b/rules/openssh.mk @@ -1,6 +1,6 @@ # openssh package -OPENSSH_VERSION = 7.9p1-10+deb10u2 +OPENSSH_VERSION = 8.4p1-5 export OPENSSH_VERSION diff --git a/rules/phy-credo.mk b/rules/phy-credo.mk index ab6c45e0e9c5..7e9441619139 100644 --- a/rules/phy-credo.mk +++ b/rules/phy-credo.mk @@ -1,3 +1,3 @@ PHY_CREDO = phy-credo_1.0_amd64.deb -$(PHY_CREDO)_URL = "https://github.com/aristanetworks/sonic-firmware/raw/08cbc09437e942c1e3cd84a7595ca686193d311b/phy/phy-credo_1.0_amd64.deb" +$(PHY_CREDO)_URL = "https://github.com/aristanetworks/sonic-firmware/raw/0468f6c23a7219dfee6dd2819013e9f1e940c95d/phy/phy-credo_1.0_amd64.deb" SONIC_ONLINE_DEBS += $(PHY_CREDO) diff --git a/rules/redis-dump-load-py2.dep b/rules/redis-dump-load-py2.dep index adc43905b7f3..a1293f9fb6be 100644 --- a/rules/redis-dump-load-py2.dep +++ b/rules/redis-dump-load-py2.dep @@ -1,12 +1,12 @@ +ifeq ($(ENABLE_PY2_MODULES), y) + SPATH := $($(REDIS_DUMP_LOAD_PY2)_SRC_PATH) + DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/redis-dump-load-py2.mk rules/redis-dump-load-py2.dep + DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) + SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) -SPATH := $($(REDIS_DUMP_LOAD_PY2)_SRC_PATH) -DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/redis-dump-load-py2.mk rules/redis-dump-load-py2.dep -DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) -SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) - -$(REDIS_DUMP_LOAD_PY2)_CACHE_MODE := GIT_CONTENT_SHA -$(REDIS_DUMP_LOAD_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(REDIS_DUMP_LOAD_PY2)_DEP_FILES := $(DEP_FILES) -$(REDIS_DUMP_LOAD_PY2)_SMDEP_FILES := $(SMDEP_FILES) -$(REDIS_DUMP_LOAD_PY2)_SMDEP_PATHS := $(SPATH) - + $(REDIS_DUMP_LOAD_PY2)_CACHE_MODE := GIT_CONTENT_SHA + $(REDIS_DUMP_LOAD_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) + $(REDIS_DUMP_LOAD_PY2)_DEP_FILES := $(DEP_FILES) + $(REDIS_DUMP_LOAD_PY2)_SMDEP_FILES := $(SMDEP_FILES) + $(REDIS_DUMP_LOAD_PY2)_SMDEP_PATHS := $(SPATH) +endif diff --git a/rules/redis-dump-load-py2.mk b/rules/redis-dump-load-py2.mk index 5f756caada9c..7330c8027a22 100644 --- a/rules/redis-dump-load-py2.mk +++ b/rules/redis-dump-load-py2.mk @@ -1,6 +1,8 @@ -# redis_dump_load python2 wheel +ifeq ($(ENABLE_PY2_MODULES), y) + # redis_dump_load python2 wheel -REDIS_DUMP_LOAD_PY2 = redis_dump_load-1.1-py2-none-any.whl -$(REDIS_DUMP_LOAD_PY2)_SRC_PATH = $(SRC_PATH)/redis-dump-load -$(REDIS_DUMP_LOAD_PY2)_PYTHON_VERSION = 2 -SONIC_PYTHON_WHEELS += $(REDIS_DUMP_LOAD_PY2) + REDIS_DUMP_LOAD_PY2 = redis_dump_load-1.1-py2-none-any.whl + $(REDIS_DUMP_LOAD_PY2)_SRC_PATH = $(SRC_PATH)/redis-dump-load + $(REDIS_DUMP_LOAD_PY2)_PYTHON_VERSION = 2 + SONIC_PYTHON_WHEELS += $(REDIS_DUMP_LOAD_PY2) +endif diff --git a/rules/redis-dump-load-py3.mk b/rules/redis-dump-load-py3.mk index 875b5e1c8132..fe2b8688e43f 100644 --- a/rules/redis-dump-load-py3.mk +++ b/rules/redis-dump-load-py3.mk @@ -3,7 +3,9 @@ REDIS_DUMP_LOAD_PY3 = redis_dump_load-1.1-py3-none-any.whl $(REDIS_DUMP_LOAD_PY3)_SRC_PATH = $(SRC_PATH)/redis-dump-load $(REDIS_DUMP_LOAD_PY3)_PYTHON_VERSION = 3 -# Synthetic dependency just to avoid race condition -$(REDIS_DUMP_LOAD_PY3)_DEPENDS += $(REDIS_DUMP_LOAD_PY2) +ifeq ($(ENABLE_PY2_MODULES), y) + # Synthetic dependency just to avoid race condition + $(REDIS_DUMP_LOAD_PY3)_DEPENDS += $(REDIS_DUMP_LOAD_PY2) +endif $(REDIS_DUMP_LOAD_PY3)_TEST = n SONIC_PYTHON_WHEELS += $(REDIS_DUMP_LOAD_PY3) diff --git a/rules/snmpd.mk b/rules/snmpd.mk index 7922e2097ff0..52be51d1c549 100644 --- a/rules/snmpd.mk +++ b/rules/snmpd.mk @@ -1,7 +1,12 @@ # snmpd package +ifeq ($(BLDENV),bullseye) +SNMPD_VERSION = 5.9+dfsg +SNMPD_VERSION_FULL = $(SNMPD_VERSION)-3+b1 +else SNMPD_VERSION = 5.7.3+dfsg SNMPD_VERSION_FULL = $(SNMPD_VERSION)-5 +endif export SNMPD_VERSION SNMPD_VERSION_FULL @@ -32,11 +37,19 @@ $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(SNMP_DBG))) SNMPD_DBG = snmpd-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(SNMPD_DBG))) +ifeq ($(BLDENV),bullseye) +LIBSNMP = libsnmp40_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb +else LIBSNMP = libsnmp30_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb +endif $(LIBSNMP)_RDEPENDS += $(LIBSNMP_BASE) $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(LIBSNMP))) +ifeq ($(BLDENV),bullseye) +LIBSNMP_DBG = libsnmp40-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb +else LIBSNMP_DBG = libsnmp30-dbg_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb +endif $(LIBSNMP_DBG)_DEPENDS += $(LIBSNMP) $(LIBSNMP_DBG)_RDEPENDS += $(LIBSNMP) $(eval $(call add_derived_package,$(LIBSNMP_BASE),$(LIBSNMP_DBG))) diff --git a/rules/sonic-config.dep b/rules/sonic-config.dep index ae8569326eea..05a02a6027ac 100644 --- a/rules/sonic-config.dep +++ b/rules/sonic-config.dep @@ -1,14 +1,16 @@ # SONIC_CONFIG_ENGINE_PY2 package -SPATH := $($(SONIC_CONFIG_ENGINE_PY2)_SRC_PATH) +SPATH := $($(SONIC_CONFIG_ENGINE_PY3)_SRC_PATH) DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/sonic-config.mk rules/sonic-config.dep DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) DEP_FILES += $(shell git ls-files $(SPATH)) DEP_FILES += files/image_config/interfaces/interfaces.j2 dockers/docker-orchagent/ports.json.j2 dockers/docker-dhcp-relay/wait_for_intf.sh.j2 dockers/docker-dhcp-relay/docker-dhcp-relay.supervisord.conf.j2 dockers/docker-lldp/lldpd.conf.j2 dockers/docker-orchagent/ipinip.json.j2 $(wildcard device/arista/x86_64-arista_7050_qx32s/Arista-7050-QX-32S/*.j2 device/dell/x86_64-dell_s6100_c2538-r0/Force10-S6100/*.j2) files/build_templates/qos_config.j2 dockers/docker-orchagent/switch.json.j2 files/image_config/constants/constants.yml -$(SONIC_CONFIG_ENGINE_PY2)_CACHE_MODE := GIT_CONTENT_SHA -$(SONIC_CONFIG_ENGINE_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(SONIC_CONFIG_ENGINE_PY2)_DEP_FILES := $(DEP_FILES) +ifeq ($(ENABLE_PY2_MODULES), y) + $(SONIC_CONFIG_ENGINE_PY2)_CACHE_MODE := GIT_CONTENT_SHA + $(SONIC_CONFIG_ENGINE_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) + $(SONIC_CONFIG_ENGINE_PY2)_DEP_FILES := $(DEP_FILES) +endif # SONIC_CONFIG_ENGINE_PY3 package diff --git a/rules/sonic-config.mk b/rules/sonic-config.mk index 373604e96554..ba146df70577 100644 --- a/rules/sonic-config.mk +++ b/rules/sonic-config.mk @@ -1,11 +1,13 @@ -# SONIC_CONFIG_ENGINE_PY2 package +ifeq ($(ENABLE_PY2_MODULES), y) + # SONIC_CONFIG_ENGINE_PY2 package -SONIC_CONFIG_ENGINE_PY2 = sonic_config_engine-1.0-py2-none-any.whl -$(SONIC_CONFIG_ENGINE_PY2)_SRC_PATH = $(SRC_PATH)/sonic-config-engine -$(SONIC_CONFIG_ENGINE_PY2)_DEPENDS += $(SONIC_PY_COMMON_PY2) -$(SONIC_CONFIG_ENGINE_PY2)_DEBS_DEPENDS += $(PYTHON_SWSSCOMMON) -$(SONIC_CONFIG_ENGINE_PY2)_PYTHON_VERSION = 2 -SONIC_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE_PY2) + SONIC_CONFIG_ENGINE_PY2 = sonic_config_engine-1.0-py2-none-any.whl + $(SONIC_CONFIG_ENGINE_PY2)_SRC_PATH = $(SRC_PATH)/sonic-config-engine + $(SONIC_CONFIG_ENGINE_PY2)_DEPENDS += $(SONIC_PY_COMMON_PY2) + $(SONIC_CONFIG_ENGINE_PY2)_DEBS_DEPENDS += $(PYTHON_SWSSCOMMON) + $(SONIC_CONFIG_ENGINE_PY2)_PYTHON_VERSION = 2 + SONIC_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE_PY2) +endif # SONIC_CONFIG_ENGINE_PY3 package @@ -18,8 +20,10 @@ $(SONIC_CONFIG_ENGINE_PY3)_DEBS_DEPENDS += $(LIBYANG) \ $(LIBYANG_CPP) \ $(LIBYANG_PY3) \ $(PYTHON3_SWSSCOMMON) -# Synthetic dependency to avoid building the Python 2 and 3 packages -# simultaneously and any potential conflicts which may arise -$(SONIC_CONFIG_ENGINE_PY3)_DEPENDS += $(SONIC_CONFIG_ENGINE_PY2) +ifeq ($(ENABLE_PY2_MODULES), y) + # Synthetic dependency to avoid building the Python 2 and 3 packages + # simultaneously and any potential conflicts which may arise + $(SONIC_CONFIG_ENGINE_PY3)_DEPENDS += $(SONIC_CONFIG_ENGINE_PY2) +endif $(SONIC_CONFIG_ENGINE_PY3)_PYTHON_VERSION = 3 SONIC_PYTHON_WHEELS += $(SONIC_CONFIG_ENGINE_PY3) diff --git a/rules/sonic-platform-common.dep b/rules/sonic-platform-common.dep index e921c4df01af..632c92c1ac78 100644 --- a/rules/sonic-platform-common.dep +++ b/rules/sonic-platform-common.dep @@ -1,15 +1,16 @@ -SPATH := $($(SONIC_PLATFORM_COMMON_PY2)_SRC_PATH) +SPATH := $($(SONIC_PLATFORM_COMMON_PY3)_SRC_PATH) DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/sonic-platform-common.mk rules/sonic-platform-common.dep DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files|grep -Ev "^sonic_sfp|^sonic_eeprom")) -$(SONIC_PLATFORM_COMMON_PY2)_CACHE_MODE := GIT_CONTENT_SHA -$(SONIC_PLATFORM_COMMON_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(SONIC_PLATFORM_COMMON_PY2)_DEP_FILES := $(DEP_FILES) -$(SONIC_PLATFORM_COMMON_PY2)_SMDEP_FILES := $(SMDEP_FILES) -$(SONIC_PLATFORM_COMMON_PY2)_SMDEP_PATHS := $(SPATH) - +ifeq ($(ENABLE_PY2_MODULES), y) + $(SONIC_PLATFORM_COMMON_PY2)_CACHE_MODE := GIT_CONTENT_SHA + $(SONIC_PLATFORM_COMMON_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) + $(SONIC_PLATFORM_COMMON_PY2)_DEP_FILES := $(DEP_FILES) + $(SONIC_PLATFORM_COMMON_PY2)_SMDEP_FILES := $(SMDEP_FILES) + $(SONIC_PLATFORM_COMMON_PY2)_SMDEP_PATHS := $(SPATH) +endif $(SONIC_PLATFORM_COMMON_PY3)_CACHE_MODE := GIT_CONTENT_SHA diff --git a/rules/sonic-platform-common.mk b/rules/sonic-platform-common.mk index 25ab5ff839fa..09ce14faab15 100644 --- a/rules/sonic-platform-common.mk +++ b/rules/sonic-platform-common.mk @@ -1,11 +1,13 @@ -# sonic-platform-common package +ifeq ($(ENABLE_PY2_MODULES), y) + # sonic-platform-common package -SONIC_PLATFORM_COMMON_PY2 = sonic_platform_common-1.0-py2-none-any.whl -$(SONIC_PLATFORM_COMMON_PY2)_SRC_PATH = $(SRC_PATH)/sonic-platform-common -$(SONIC_PLATFORM_COMMON_PY2)_PYTHON_VERSION = 2 -$(SONIC_PLATFORM_COMMON_PY2)_DEPENDS += $(SONIC_PY_COMMON_PY2) $(SONIC_CONFIG_ENGINE_PY2) -$(SONIC_PLATFORM_COMMON_PY2)_DEBS_DEPENDS += $(PYTHON_SWSSCOMMON) -SONIC_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY2) + SONIC_PLATFORM_COMMON_PY2 = sonic_platform_common-1.0-py2-none-any.whl + $(SONIC_PLATFORM_COMMON_PY2)_SRC_PATH = $(SRC_PATH)/sonic-platform-common + $(SONIC_PLATFORM_COMMON_PY2)_PYTHON_VERSION = 2 + $(SONIC_PLATFORM_COMMON_PY2)_DEPENDS += $(SONIC_PY_COMMON_PY2) $(SONIC_CONFIG_ENGINE_PY2) + $(SONIC_PLATFORM_COMMON_PY2)_DEBS_DEPENDS += $(PYTHON_SWSSCOMMON) + SONIC_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY2) +endif # Als build sonic-platform-common into python3 wheel, so we can use PSU code in SNMP docker SONIC_PLATFORM_COMMON_PY3 = sonic_platform_common-1.0-py3-none-any.whl @@ -13,6 +15,8 @@ $(SONIC_PLATFORM_COMMON_PY3)_SRC_PATH = $(SRC_PATH)/sonic-platform-common $(SONIC_PLATFORM_COMMON_PY3)_PYTHON_VERSION = 3 $(SONIC_PLATFORM_COMMON_PY3)_DEPENDS += $(SONIC_PY_COMMON_PY3) $(SONIC_CONFIG_ENGINE_PY3) $(SONIC_PLATFORM_COMMON_PY3)_DEBS_DEPENDS += $(PYTHON3_SWSSCOMMON) -# Synthetic dependency just to avoid race condition -$(SONIC_PLATFORM_COMMON_PY3)_DEPENDS += $(SONIC_PLATFORM_COMMON_PY2) +ifeq ($(ENABLE_PY2_MODULES), y) + # Synthetic dependency just to avoid race condition + $(SONIC_PLATFORM_COMMON_PY3)_DEPENDS += $(SONIC_PLATFORM_COMMON_PY2) +endif SONIC_PYTHON_WHEELS += $(SONIC_PLATFORM_COMMON_PY3) diff --git a/rules/sonic-py-common.dep b/rules/sonic-py-common.dep index 9ecedb068a4f..b3d08c5d8632 100644 --- a/rules/sonic-py-common.dep +++ b/rules/sonic-py-common.dep @@ -1,11 +1,13 @@ -SPATH := $($(SONIC_PY_COMMON_PY2)_SRC_PATH) +SPATH := $($(SONIC_PY_COMMON_PY3)_SRC_PATH) DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/sonic-py-common.mk rules/sonic-py-common.dep DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) DEP_FILES += $(shell git ls-files $(SPATH)) -$(SONIC_PY_COMMON_PY2)_CACHE_MODE := GIT_CONTENT_SHA -$(SONIC_PY_COMMON_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(SONIC_PY_COMMON_PY2)_DEP_FILES := $(DEP_FILES) +ifeq ($(ENABLE_PY2_MODULES), y) + $(SONIC_PY_COMMON_PY2)_CACHE_MODE := GIT_CONTENT_SHA + $(SONIC_PY_COMMON_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) + $(SONIC_PY_COMMON_PY2)_DEP_FILES := $(DEP_FILES) +endif $(SONIC_PY_COMMON_PY3)_CACHE_MODE := GIT_CONTENT_SHA $(SONIC_PY_COMMON_PY3)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) diff --git a/rules/sonic-py-common.mk b/rules/sonic-py-common.mk index 6afe9a826c68..be5f5d8e696a 100644 --- a/rules/sonic-py-common.mk +++ b/rules/sonic-py-common.mk @@ -1,18 +1,22 @@ -# SONIC_PY_COMMON_PY2 package +ifeq ($(ENABLE_PY2_MODULES), y) + # SONIC_PY_COMMON_PY2 package -SONIC_PY_COMMON_PY2 = sonic_py_common-1.0-py2-none-any.whl -$(SONIC_PY_COMMON_PY2)_SRC_PATH = $(SRC_PATH)/sonic-py-common -$(SONIC_PY_COMMON_PY2)_DEPENDS += $(SWSSSDK_PY2) -$(SONIC_PY_COMMON_PY2)_PYTHON_VERSION = 2 -SONIC_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY2) + SONIC_PY_COMMON_PY2 = sonic_py_common-1.0-py2-none-any.whl + $(SONIC_PY_COMMON_PY2)_SRC_PATH = $(SRC_PATH)/sonic-py-common + $(SONIC_PY_COMMON_PY2)_DEPENDS += $(SWSSSDK_PY2) + $(SONIC_PY_COMMON_PY2)_PYTHON_VERSION = 2 + SONIC_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY2) +endif # SONIC_PY_COMMON_PY3 package SONIC_PY_COMMON_PY3 = sonic_py_common-1.0-py3-none-any.whl $(SONIC_PY_COMMON_PY3)_SRC_PATH = $(SRC_PATH)/sonic-py-common $(SONIC_PY_COMMON_PY3)_DEPENDS += $(SWSSSDK_PY3) -# Synthetic dependency to avoid building the Python 2 and 3 packages -# simultaneously and any potential conflicts which may arise -$(SONIC_PY_COMMON_PY3)_DEPENDS += $(SONIC_PY_COMMON_PY2) +ifeq ($(ENABLE_PY2_MODULES), y) + # Synthetic dependency to avoid building the Python 2 and 3 packages + # simultaneously and any potential conflicts which may arise + $(SONIC_PY_COMMON_PY3)_DEPENDS += $(SONIC_PY_COMMON_PY2) +endif $(SONIC_PY_COMMON_PY3)_PYTHON_VERSION = 3 SONIC_PYTHON_WHEELS += $(SONIC_PY_COMMON_PY3) diff --git a/rules/sonic-yang-models-py3.mk b/rules/sonic-yang-models-py3.mk index 8c11a921a979..f5a606c28c3a 100644 --- a/rules/sonic-yang-models-py3.mk +++ b/rules/sonic-yang-models-py3.mk @@ -2,7 +2,7 @@ SONIC_YANG_MODELS_PY3 = sonic_yang_models-1.0-py3-none-any.whl $(SONIC_YANG_MODELS_PY3)_SRC_PATH = $(SRC_PATH)/sonic-yang-models $(SONIC_YANG_MODELS_PY3)_PYTHON_VERSION = 3 $(SONIC_YANG_MODELS_PY3)_DEBS_DEPENDS = $(LIBYANG) $(LIBYANG_CPP) \ - $(LIBYANG_PY2) $(LIBYANG_PY3) + $(LIBYANG_PY3) SONIC_PYTHON_WHEELS += $(SONIC_YANG_MODELS_PY3) export SONIC_YANG_MODELS_PY3 diff --git a/rules/swss-common.mk b/rules/swss-common.mk index 09dc312277fe..83a8d0f19cae 100644 --- a/rules/swss-common.mk +++ b/rules/swss-common.mk @@ -17,8 +17,10 @@ SONIC_DPKG_DEBS += $(LIBSWSSCOMMON) LIBSWSSCOMMON_DEV = $(LIBSWSSCOMMON_NAME)-dev_$(LIBSWSSCOMMON_VERSION)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(LIBSWSSCOMMON),$(LIBSWSSCOMMON_DEV))) -PYTHON_SWSSCOMMON = python-swsscommon_$(LIBSWSSCOMMON_VERSION)_$(CONFIGURED_ARCH).deb -$(eval $(call add_derived_package,$(LIBSWSSCOMMON),$(PYTHON_SWSSCOMMON))) +ifeq ($(ENABLE_PY2_MODULES), y) + PYTHON_SWSSCOMMON = python-swsscommon_$(LIBSWSSCOMMON_VERSION)_$(CONFIGURED_ARCH).deb + $(eval $(call add_derived_package,$(LIBSWSSCOMMON),$(PYTHON_SWSSCOMMON))) +endif PYTHON3_SWSSCOMMON = python3-swsscommon_$(LIBSWSSCOMMON_VERSION)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(LIBSWSSCOMMON),$(PYTHON3_SWSSCOMMON))) diff --git a/rules/swsssdk-py2.dep b/rules/swsssdk-py2.dep index 2be9565fedcc..300d3cdeb027 100644 --- a/rules/swsssdk-py2.dep +++ b/rules/swsssdk-py2.dep @@ -1,12 +1,12 @@ +ifeq ($(ENABLE_PY2_MODULES), y) + SPATH := $($(SWSSSDK_PY2)_SRC_PATH) + DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/swsssdk-py2.mk rules/swsssdk-py2.dep + DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) + SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) -SPATH := $($(SWSSSDK_PY2)_SRC_PATH) -DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/swsssdk-py2.mk rules/swsssdk-py2.dep -DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) -SMDEP_FILES := $(addprefix $(SPATH)/,$(shell cd $(SPATH) && git ls-files)) - -$(SWSSSDK_PY2)_CACHE_MODE := GIT_CONTENT_SHA -$(SWSSSDK_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(SWSSSDK_PY2)_DEP_FILES := $(DEP_FILES) -$(SWSSSDK_PY2)_SMDEP_FILES := $(SMDEP_FILES) -$(SWSSSDK_PY2)_SMDEP_PATHS := $(SPATH) - + $(SWSSSDK_PY2)_CACHE_MODE := GIT_CONTENT_SHA + $(SWSSSDK_PY2)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) + $(SWSSSDK_PY2)_DEP_FILES := $(DEP_FILES) + $(SWSSSDK_PY2)_SMDEP_FILES := $(SMDEP_FILES) + $(SWSSSDK_PY2)_SMDEP_PATHS := $(SPATH) +endif diff --git a/rules/swsssdk-py2.mk b/rules/swsssdk-py2.mk index 8a98d1feda0a..7a7a1cd870f0 100644 --- a/rules/swsssdk-py2.mk +++ b/rules/swsssdk-py2.mk @@ -1,7 +1,9 @@ -# swsssdk python2 wheel +ifeq ($(ENABLE_PY2_MODULES), y) + # swsssdk python2 wheel -SWSSSDK_PY2 = swsssdk-2.0.1-py2-none-any.whl -$(SWSSSDK_PY2)_SRC_PATH = $(SRC_PATH)/sonic-py-swsssdk -$(SWSSSDK_PY2)_PYTHON_VERSION = 2 -$(SWSSSDK_PY2)_DEPENDS += $(REDIS_DUMP_LOAD_PY2) -SONIC_PYTHON_WHEELS += $(SWSSSDK_PY2) + SWSSSDK_PY2 = swsssdk-2.0.1-py2-none-any.whl + $(SWSSSDK_PY2)_SRC_PATH = $(SRC_PATH)/sonic-py-swsssdk + $(SWSSSDK_PY2)_PYTHON_VERSION = 2 + $(SWSSSDK_PY2)_DEPENDS += $(REDIS_DUMP_LOAD_PY2) + SONIC_PYTHON_WHEELS += $(SWSSSDK_PY2) +endif diff --git a/rules/swsssdk-py3.mk b/rules/swsssdk-py3.mk index 681ba72f85b7..4e42652211aa 100644 --- a/rules/swsssdk-py3.mk +++ b/rules/swsssdk-py3.mk @@ -3,6 +3,9 @@ SWSSSDK_PY3 = swsssdk-2.0.1-py3-none-any.whl $(SWSSSDK_PY3)_SRC_PATH = $(SRC_PATH)/sonic-py-swsssdk $(SWSSSDK_PY3)_PYTHON_VERSION = 3 -# Synthetic dependency just to avoid race condition -$(SWSSSDK_PY3)_DEPENDS += $(SWSSSDK_PY2) $(REDIS_DUMP_LOAD_PY3) +$(SWSSSDK_PY3)_DEPENDS += $(REDIS_DUMP_LOAD_PY3) +ifeq ($(ENABLE_PY2_MODULES), y) + # Synthetic dependency just to avoid race condition + $(SWSSSDK_PY3)_DEPENDS += $(SWSSSDK_PY2) +endif SONIC_PYTHON_WHEELS += $(SWSSSDK_PY3) diff --git a/rules/thrift_0_13_0.dep b/rules/thrift_0_13_0.dep new file mode 100644 index 000000000000..52d8b6a525f9 --- /dev/null +++ b/rules/thrift_0_13_0.dep @@ -0,0 +1,8 @@ +SPATH := $($(LIBTHRIFT_0_13_0)_SRC_PATH) +DEP_FILES := $(SONIC_COMMON_FILES_LIST) rules/thrift_0_13_0.mk rules/thrift_0_13_0.dep +DEP_FILES += $(SONIC_COMMON_BASE_FILES_LIST) +DEP_FILES += $(shell git ls-files $(SPATH)) + +$(LIBTHRIFT_0_13_0)_CACHE_MODE := GIT_CONTENT_SHA +$(LIBTHRIFT_0_13_0)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) +$(LIBTHRIFT_0_13_0)_DEP_FILES := $(DEP_FILES) diff --git a/rules/thrift_0_13_0.mk b/rules/thrift_0_13_0.mk new file mode 100644 index 000000000000..9da97849809f --- /dev/null +++ b/rules/thrift_0_13_0.mk @@ -0,0 +1,17 @@ +# thrift package + +THRIFT_VERSION_0_13_0 = 0.13.0 +THRIFT_VERSION_0_13_0_FULL = $(THRIFT_VERSION_0_13_0)-6 + +LIBTHRIFT_0_13_0 = libthrift-$(THRIFT_VERSION_0_13_0)_$(THRIFT_VERSION_0_13_0_FULL)_$(CONFIGURED_ARCH).deb +$(LIBTHRIFT_0_13_0)_SRC_PATH = $(SRC_PATH)/thrift_0_13_0 +SONIC_MAKE_DEBS += $(LIBTHRIFT_0_13_0) + +LIBTHRIFT_DEV_0_13_0 = libthrift-dev_$(THRIFT_VERSION_0_13_0_FULL)_$(CONFIGURED_ARCH).deb +$(eval $(call add_derived_package,$(LIBTHRIFT_0_13_0),$(LIBTHRIFT_DEV_0_13_0))) + +PYTHON3_THRIFT_0_13_0 = python3-thrift_$(THRIFT_VERSION_0_13_0_FULL)_$(CONFIGURED_ARCH).deb +$(eval $(call add_derived_package,$(LIBTHRIFT_0_13_0),$(PYTHON_THRIFT_0_13_0))) + +THRIFT_COMPILER_0_13_0 = thrift-compiler_$(THRIFT_VERSION_0_13_0_FULL)_$(CONFIGURED_ARCH).deb +$(eval $(call add_derived_package,$(LIBTHRIFT_0_13_0),$(THRIFT_COMPILER_0_13_0))) diff --git a/scripts/docker_version_control.sh b/scripts/docker_version_control.sh index 41e536f08073..595477c859c6 100755 --- a/scripts/docker_version_control.sh +++ b/scripts/docker_version_control.sh @@ -19,23 +19,28 @@ image_tag=`grep "^FROM " $DOCKERFILE | awk '{print$2}'` image=`echo $image_tag | cut -f1 -d:` tag=`echo $image_tag | cut -f2 -d:` -# if docker image not in white list, exit -if [[ "$IMAGENAME" != sonic-slave-* ]] && [[ "$IMAGENAME" != docker-base* ]];then - exit 0 -fi - if [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,all,* ]] || [[ ",$SONIC_VERSION_CONTROL_COMPONENTS," == *,docker,* ]]; then + # if docker image not in white list, exit + if [[ "$image_tag" != */debian:* ]] && [[ "$image_tag" != multiarch/debian-debootstrap:* ]];then + exit 0 + fi if [ -f $version_file ];then hash_value=`grep "${ARCH}:${image_tag}" $version_file | awk -F== '{print$2}'` fi if [ -z $hash_value ];then hash_value=unknown + echo "$image_tag sha256 value is unknown" >> ${new_version_file}.log + exit 0 fi oldimage=${image_tag//\//\\/} newimage="${oldimage}@$hash_value" + echo "sed -i \"s/$oldimage/$newimage/\" $DOCKERFILE" >> ${new_version_file}.log sed -i "s/$oldimage/$newimage/" $DOCKERFILE else - hash_value=`docker pull $image_tag | grep Digest | awk '{print$2}'` + hash_value=`docker pull $image_tag 2> ${new_version_file}.log | grep Digest | awk '{print$2}'` + if [ -z hash_value ];then + hash_value=unknown + fi fi if [[ "$hash_value" != "unknown" ]];then echo -e "${ARCH}:${image_tag}==$hash_value" >> $new_version_file diff --git a/slave.mk b/slave.mk index 655196f69ae0..71f8d9dd1c9f 100644 --- a/slave.mk +++ b/slave.mk @@ -51,14 +51,25 @@ CONFIGURED_ARCH := $(shell [ -f .arch ] && cat .arch || echo amd64) ifeq ($(PLATFORM_ARCH),) override PLATFORM_ARCH = $(CONFIGURED_ARCH) endif -ifeq ($(BLDENV),bullseye) -IMAGE_DISTRO := bullseye +DOCKER_BASE_ARCH := $(CONFIGURED_ARCH) +ifeq ($(CONFIGURED_ARCH),armhf) + override DOCKER_BASE_ARCH = arm32v7 else -IMAGE_DISTRO := buster +ifeq ($(CONFIGURED_ARCH),arm64) + override DOCKER_BASE_ARCH = arm64v8 +endif endif +IMAGE_DISTRO := bullseye IMAGE_DISTRO_DEBS_PATH = $(TARGET_PATH)/debs/$(IMAGE_DISTRO) IMAGE_DISTRO_FILES_PATH = $(TARGET_PATH)/files/$(IMAGE_DISTRO) +# Python 2 packages will not be available in Bullseye +ifeq ($(BLDENV),bullseye) +ENABLE_PY2_MODULES = n +else +ENABLE_PY2_MODULES = y +endif + export BUILD_NUMBER export BUILD_TIMESTAMP export SONIC_IMAGE_VERSION @@ -68,6 +79,7 @@ export PYTHON_WHEELS_PATH export IMAGE_DISTRO export IMAGE_DISTRO_DEBS_PATH export MULTIARCH_QEMU_ENVIRON +export DOCKER_BASE_ARCH ############################################################################### ## Utility rules @@ -209,6 +221,10 @@ endif MAKEFLAGS += -j $(SONIC_BUILD_JOBS) export SONIC_CONFIG_MAKE_JOBS +ifeq ($(CONFIGURED_PLATFORM),vs) +export BUILD_MULTIASIC_KVM=$(BUILD_MULTIASIC_KVM) +endif + ############################################################################### ## Routing stack related exports ############################################################################### @@ -272,6 +288,9 @@ $(info "TELEMETRY_WRITABLE" : "$(TELEMETRY_WRITABLE)") $(info "PDDF_SUPPORT" : "$(PDDF_SUPPORT)") $(info "MULTIARCH_QEMU_ENVIRON" : "$(MULTIARCH_QEMU_ENVIRON)") $(info "SONIC_VERSION_CONTROL_COMPONENTS": "$(SONIC_VERSION_CONTROL_COMPONENTS)") +ifeq ($(CONFIGURED_PLATFORM),vs) +$(info "BUILD_MULTIASIC_KVM" : "$(BUILD_MULTIASIC_KVM)") +endif $(info ) else $(info SONiC Build System for $(CONFIGURED_PLATFORM):$(CONFIGURED_ARCH)) @@ -482,8 +501,8 @@ $(addprefix $(DEBS_PATH)/, $(SONIC_DPKG_DEBS)) : $(DEBS_PATH)/% : .platform $$(a if [ -f ./autogen.sh ]; then ./autogen.sh $(LOG); fi $(SETUP_OVERLAYFS_FOR_DPKG_ADMINDIR) $(if $($*_DPKG_TARGET), - ${$*_BUILD_ENV} DEB_BUILD_OPTIONS="${DEB_BUILD_OPTIONS_GENERIC} ${$*_DEB_BUILD_OPTIONS}" dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --as-root -T$($*_DPKG_TARGET) --admindir $$mergedir $(LOG), - ${$*_BUILD_ENV} DEB_BUILD_OPTIONS="${DEB_BUILD_OPTIONS_GENERIC} ${$*_DEB_BUILD_OPTIONS}" dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $$mergedir $(LOG) + ${$*_BUILD_ENV} DEB_BUILD_OPTIONS="${DEB_BUILD_OPTIONS_GENERIC} ${$*_DEB_BUILD_OPTIONS}" dpkg-buildpackage -rfakeroot -b -us -uc -tc -j$(SONIC_CONFIG_MAKE_JOBS) --as-root -T$($*_DPKG_TARGET) --admindir $$mergedir $(LOG), + ${$*_BUILD_ENV} DEB_BUILD_OPTIONS="${DEB_BUILD_OPTIONS_GENERIC} ${$*_DEB_BUILD_OPTIONS}" dpkg-buildpackage -rfakeroot -b -us -uc -tc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $$mergedir $(LOG) ) popd $(LOG_SIMPLE) # Clean up @@ -702,6 +721,10 @@ $(foreach DOCKER_IMAGE,$(SONIC_STRETCH_DOCKERS), $(eval $(DOCKER_IMAGE)_DEBS_PAT $(foreach DOCKER_IMAGE,$(SONIC_STRETCH_DOCKERS), $(eval $(DOCKER_IMAGE)_FILES_PATH := $(STRETCH_FILES_PATH))) $(foreach DOCKER_IMAGE,$(SONIC_STRETCH_DBG_DOCKERS), $(eval $(DOCKER_IMAGE)_DEBS_PATH := $(STRETCH_DEBS_PATH))) $(foreach DOCKER_IMAGE,$(SONIC_STRETCH_DBG_DOCKERS), $(eval $(DOCKER_IMAGE)_FILES_PATH := $(STRETCH_FILES_PATH))) +$(foreach DOCKER_IMAGE,$(SONIC_BUSTER_DOCKERS), $(eval $(DOCKER_IMAGE)_DEBS_PATH := $(BUSTER_DEBS_PATH))) +$(foreach DOCKER_IMAGE,$(SONIC_BUSTER_DOCKERS), $(eval $(DOCKER_IMAGE)_FILES_PATH := $(BUSTER_FILES_PATH))) +$(foreach DOCKER_IMAGE,$(SONIC_BUSTER_DBG_DOCKERS), $(eval $(DOCKER_IMAGE)_DEBS_PATH := $(BUSTER_DEBS_PATH))) +$(foreach DOCKER_IMAGE,$(SONIC_BUSTER_DBG_DOCKERS), $(eval $(DOCKER_IMAGE)_FILES_PATH := $(BUSTER_FILES_PATH))) ifeq ($(BLDENV),jessie) DOCKER_IMAGES := $(SONIC_JESSIE_DOCKERS) @@ -715,8 +738,15 @@ ifeq ($(BLDENV),stretch) STRETCH_DOCKER_IMAGES = $(filter $(SONIC_STRETCH_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS)) STRETCH_DBG_DOCKER_IMAGES = $(filter $(SONIC_STRETCH_DBG_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS)) else - DOCKER_IMAGES = $(filter-out $(SONIC_JESSIE_DOCKERS) $(SONIC_STRETCH_DOCKERS),$(SONIC_DOCKER_IMAGES)) - DOCKER_DBG_IMAGES = $(filter-out $(SONIC_JESSIE_DBG_DOCKERS) $(SONIC_STRETCH_DBG_DOCKERS), $(SONIC_DOCKER_DBG_IMAGES)) +ifeq ($(BLDENV),buster) + DOCKER_IMAGES := $(SONIC_BUSTER_DOCKERS) + DOCKER_DBG_IMAGES := $(SONIC_BUSTER_DBG_DOCKERS) + BUSTER_DOCKER_IMAGES = $(filter $(SONIC_BUSTER_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS) $(SONIC_PACKAGES_LOCAL)) + BUSTER_DBG_DOCKER_IMAGES = $(filter $(SONIC_BUSTER_DBG_DOCKERS),$(DOCKER_IMAGES_FOR_INSTALLERS) $(EXTRA_DOCKER_TARGETS) $(SONIC_PACKAGES_LOCAL)) +else + DOCKER_IMAGES = $(filter-out $(SONIC_JESSIE_DOCKERS) $(SONIC_STRETCH_DOCKERS) $(SONIC_BUSTER_DOCKERS),$(SONIC_DOCKER_IMAGES)) + DOCKER_DBG_IMAGES = $(filter-out $(SONIC_JESSIE_DBG_DOCKERS) $(SONIC_STRETCH_DBG_DOCKERS) $(SONIC_BUSTER_DBG_DOCKERS), $(SONIC_DOCKER_DBG_IMAGES)) +endif endif endif @@ -859,6 +889,14 @@ DOCKER_LOAD_TARGETS = $(addsuffix -load,$(addprefix $(TARGET_PATH)/, \ $(DOCKER_IMAGES) \ $(DOCKER_DBG_IMAGES))) +ifeq ($(BLDENV),bullseye) +DOCKER_LOAD_TARGETS += $(addsuffix -load,$(addprefix $(TARGET_PATH)/, \ + $(SONIC_JESSIE_DOCKERS) \ + $(SONIC_STRETCH_DOCKERS) \ + $(SONIC_BUSTER_DOCKERS))) + +endif + $(DOCKER_LOAD_TARGETS) : $(TARGET_PATH)/%.gz-load : .platform docker-start $$(TARGET_PATH)/$$*.gz $(HEADER) docker load -i $(TARGET_PATH)/$*.gz $(LOG) @@ -883,7 +921,6 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ $(LINUX_KERNEL) \ $(SONIC_DEVICE_DATA) \ $(IFUPDOWN2) \ - $(KDUMP_TOOLS) \ $(NTP) \ $(LIBPAM_RADIUS) \ $(LIBNSS_RADIUS) \ @@ -924,6 +961,8 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ export initramfs_tools="$(IMAGE_DISTRO_DEBS_PATH)/$(INITRAMFS_TOOLS)" export linux_kernel="$(IMAGE_DISTRO_DEBS_PATH)/$(LINUX_KERNEL)" export onie_recovery_image="$(FILES_PATH)/$(ONIE_RECOVERY_IMAGE)" + export onie_recovery_kvm_4asic_image="$(FILES_PATH)/$(ONIE_RECOVERY_KVM_4ASIC_IMAGE)" + export onie_recovery_kvm_6asic_image="$(FILES_PATH)/$(ONIE_RECOVERY_KVM_4ASIC_IMAGE)" export kversion="$(KVERSION)" export image_type="$($*_IMAGE_TYPE)" export sonicadmin_user="$(USERNAME)" @@ -1160,6 +1199,9 @@ clean :: .platform clean-logs $$(SONIC_CLEAN_DEBS) $$(SONIC_CLEAN_FILES) $$(SONI all : .platform $$(addprefix $(TARGET_PATH)/,$$(SONIC_ALL)) +buster : $$(addprefix $(TARGET_PATH)/,$$(BUSTER_DOCKER_IMAGES)) \ + $$(addprefix $(TARGET_PATH)/,$$(BUSTER_DBG_DOCKER_IMAGES)) + stretch : $$(addprefix $(TARGET_PATH)/,$$(STRETCH_DOCKER_IMAGES)) \ $$(addprefix $(TARGET_PATH)/,$$(STRETCH_DBG_DOCKER_IMAGES)) diff --git a/sonic-slave-bullseye/Dockerfile.j2 b/sonic-slave-bullseye/Dockerfile.j2 index 21f27e562838..c0022963d582 100644 --- a/sonic-slave-bullseye/Dockerfile.j2 +++ b/sonic-slave-bullseye/Dockerfile.j2 @@ -15,6 +15,8 @@ COPY ["no-check-valid-until", "/etc/apt/apt.conf.d/"] ## TODO: Re-add in any necessary mirror URLs here as they become available RUN echo "deb [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free" >> /etc/apt/sources.list && \ echo "deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian/ bullseye main contrib non-free" >> /etc/apt/sources.list && \ + echo "deb [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ + echo "deb-src [arch=amd64] http://debian-archive.trafficmanager.net/debian-security/ bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ echo "deb [arch=amd64] http://debian-archive.trafficmanager.net/debian bullseye-backports main" >> /etc/apt/sources.list {%- if CONFIGURED_ARCH == "armhf" %} @@ -22,21 +24,17 @@ RUN echo "deb [arch=armhf] http://deb.debian.org/debian bullseye main contrib no echo "deb-src [arch=armhf] http://deb.debian.org/debian bullseye main contrib non-free" >> /etc/apt/sources.list && \ echo "deb [arch=armhf] http://deb.debian.org/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \ echo "deb-src [arch=armhf] http://deb.debian.org/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb [arch=armhf] http://security.debian.org bullseye/updates main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb-src [arch=armhf] http://security.debian.org bullseye/updates main contrib non-free" >> /etc/apt/sources.list && \ - echo 'deb [arch=armhf] http://ftp.debian.org/debian bullseye-backports main' >> /etc/apt/sources.list && \ - echo "deb [arch=armhf] http://packages.trafficmanager.net/debian/debian bullseye main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb [arch=armhf] http://packages.trafficmanager.net/debian/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list + echo "deb [arch=armhf] http://security.debian.org bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ + echo "deb-src [arch=armhf] http://security.debian.org bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ + echo 'deb [arch=armhf] http://ftp.debian.org/debian bullseye-backports main' >> /etc/apt/sources.list {%- elif CONFIGURED_ARCH == "arm64" %} RUN echo "deb [arch=arm64] http://deb.debian.org/debian bullseye main contrib non-free" > /etc/apt/sources.list && \ echo "deb-src [arch=arm64] http://deb.debian.org/debian bullseye main contrib non-free" >> /etc/apt/sources.list && \ echo "deb [arch=arm64] http://deb.debian.org/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \ echo "deb-src [arch=arm64] http://deb.debian.org/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb [arch=arm64] http://security.debian.org bullseye/updates main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb-src [arch=arm64] http://security.debian.org bullseye/updates main contrib non-free" >> /etc/apt/sources.list && \ - echo 'deb [arch=arm64] http://ftp.debian.org/debian bullseye-backports main' >> /etc/apt/sources.list && \ - echo "deb [arch=arm64] http://packages.trafficmanager.net/debian/debian bullseye main contrib non-free" >> /etc/apt/sources.list && \ - echo "deb [arch=arm64] http://packages.trafficmanager.net/debian/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list + echo "deb [arch=arm64] http://security.debian.org bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ + echo "deb-src [arch=arm64] http://security.debian.org bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ + echo 'deb [arch=arm64] http://ftp.debian.org/debian bullseye-backports main' >> /etc/apt/sources.list {%- endif %} ## Make apt-get non-interactive @@ -72,6 +70,7 @@ RUN apt-get update && apt-get install -y \ libzmq5 \ libzmq3-dev \ jq \ + cron \ # For quagga build libreadline-dev \ texlive-latex-base \ @@ -338,6 +337,8 @@ RUN apt-get update && apt-get install -y \ libsystemd-dev \ pkg-config +RUN apt-get -y build-dep openssh + # Build fix for ARMHF bullseye libsairedis {%- if CONFIGURED_ARCH == "armhf" %} # Install doxygen build dependency packages @@ -396,7 +397,7 @@ RUN pip3 install setuptools==49.6.00 RUN pip3 install wheel==0.35.1 # For building sonic-utilities -RUN pip3 install fastentrypoints +RUN pip3 install fastentrypoints mock # For running Python unit tests RUN pip3 install pytest-runner==5.2 diff --git a/sonic-slave-buster/Dockerfile.j2 b/sonic-slave-buster/Dockerfile.j2 index 890572320fa2..bbd68a31396e 100644 --- a/sonic-slave-buster/Dockerfile.j2 +++ b/sonic-slave-buster/Dockerfile.j2 @@ -348,6 +348,8 @@ RUN apt-get update && apt-get install -y \ libsystemd-dev \ pkg-config +RUN apt-get -y build-dep openssh + # Build fix for ARMHF buster libsairedis {%- if CONFIGURED_ARCH == "armhf" %} # Install doxygen build dependency packages diff --git a/src/dhcp6relay/.gitignore b/src/dhcp6relay/.gitignore new file mode 100644 index 000000000000..9d09ae6b3f1a --- /dev/null +++ b/src/dhcp6relay/.gitignore @@ -0,0 +1,5 @@ +debian/* +!debian/changelog +!debian/compat +!debian/control +!debian/rules diff --git a/src/dhcp6relay/Makefile b/src/dhcp6relay/Makefile new file mode 100644 index 000000000000..4cbeb37fd188 --- /dev/null +++ b/src/dhcp6relay/Makefile @@ -0,0 +1,42 @@ +RM := rm -rf +DHCP6RELAY_TARGET := dhcp6relay +CP := cp +MKDIR := mkdir +CC := g++ +MV := mv +LIBS := -levent -lhiredis -lswsscommon -pthread -lboost_thread -lboost_system -I $(PWD)/../sonic-swss-common/common +CFLAGS = -g -Wall -std=gnu11 +PWD := $(shell pwd) + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) $(OBJS) +endif +endif + +-include src/subdir.mk + +all: sonic-dhcp6relay + +sonic-dhcp6relay: $(OBJS) + @echo 'Building target: $@' + @echo 'Invoking: G++ Linker' + $(CC) -o $(DHCP6RELAY_TARGET) $(OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +install: + $(MKDIR) -p $(DESTDIR)/usr/sbin + $(MV) $(DHCP6RELAY_TARGET) $(DESTDIR)/usr/sbin + +deinstall: + $(RM) $(DESTDIR)/usr/sbin/$(DHCP6RELAY_TARGET) + $(RM) -rf $(DESTDIR)/usr/sbin + +clean: + -$(RM) $(EXECUTABLES) $(C_DEPS) $(OBJS) $(DHCP6RELAY_TARGET) + -@echo ' ' + +.PHONY: all clean dependents + + diff --git a/src/dhcp6relay/debian/changelog b/src/dhcp6relay/debian/changelog new file mode 100644 index 000000000000..67ed277049e5 --- /dev/null +++ b/src/dhcp6relay/debian/changelog @@ -0,0 +1,5 @@ +sonic-dhcp6relay (1.0.0-0) UNRELEASED; urgency=medium + + * Initial release. + +-- Kelly Yeh diff --git a/src/dhcp6relay/debian/compat b/src/dhcp6relay/debian/compat new file mode 100644 index 000000000000..ec635144f600 --- /dev/null +++ b/src/dhcp6relay/debian/compat @@ -0,0 +1 @@ +9 diff --git a/src/dhcp6relay/debian/control b/src/dhcp6relay/debian/control new file mode 100644 index 000000000000..31fdb6f41f3b --- /dev/null +++ b/src/dhcp6relay/debian/control @@ -0,0 +1,17 @@ +Source: sonic-dhcp6relay +Section: devel +Priority: optional +Maintainer: Kelly Yeh +Build-Depends: debhelper (>= 8.0.0), + dh-systemd +Standards-Version: 3.9.3 +Homepage: https://github.com/Azure/sonic-buildimage +XS-Go-Import-Path: github.com/Azure/sonic-buildimage + +Package: sonic-dhcp6relay +Architecture: any +Built-Using: ${misc:Built-Using} +Depends: libevent-2.1-6, + libboost-thread1.71.0, + libboost-system1.71.0 +Description: SONiC DHCPv6 Relay diff --git a/src/dhcp6relay/debian/rules b/src/dhcp6relay/debian/rules new file mode 100755 index 000000000000..ce2eb52beb5d --- /dev/null +++ b/src/dhcp6relay/debian/rules @@ -0,0 +1,4 @@ +#!/usr/bin/make -f + +%: + dh $@ --parallel diff --git a/src/dhcp6relay/src/configInterface.cpp b/src/dhcp6relay/src/configInterface.cpp new file mode 100644 index 000000000000..db2c67656a76 --- /dev/null +++ b/src/dhcp6relay/src/configInterface.cpp @@ -0,0 +1,153 @@ +#include +#include +#include +#include "configInterface.h" + +constexpr auto DEFAULT_TIMEOUT_MSEC = 1000; + +bool pollSwssNotifcation = true; +std::shared_ptr mSwssThreadPtr; + +std::shared_ptr configDbPtr = std::make_shared ("CONFIG_DB", 0); +swss::SubscriberStateTable ipHelpersTable(configDbPtr.get(), "DHCP_RELAY"); +swss::Select swssSelect; + +/** + * @code void deinitialize_swss() + * + * @brief initialize DB tables and start SWSS listening thread + * + * @return none + */ +void initialize_swss(std::vector *vlans, swss::DBConnector *db) +{ + try { + swssSelect.addSelectable(&ipHelpersTable); + get_dhcp(vlans); + mSwssThreadPtr = std::make_shared (&handleSwssNotification, vlans); + } + catch (const std::bad_alloc &e) { + syslog(LOG_ERR, "Failed allocate memory. Exception details: %s", e.what()); + } +} + +/** + * @code void deinitialize_swss() + * + * @brief deinitialize DB interface and join SWSS listening thread + * + * @return none + */ +void deinitialize_swss() +{ + stopSwssNotificationPoll(); + mSwssThreadPtr->interrupt(); +} + + +/** + * @code void get_dhcp(std::vector *vlans) + * + * @brief initialize and get vlan table information from DHCP_RELAY + * + * @return none + */ +void get_dhcp(std::vector *vlans) { + swss::Selectable *selectable; + int ret = swssSelect.select(&selectable, DEFAULT_TIMEOUT_MSEC); + if (ret == swss::Select::ERROR) { + syslog(LOG_WARNING, "Select: returned ERROR"); + } else if (ret == swss::Select::TIMEOUT) { + } + if (selectable == static_cast (&ipHelpersTable)) { + handleRelayNotification(ipHelpersTable, vlans); + } +} +/** + * @code void handleSwssNotification(std::vector *vlans) + * + * @brief main thread for handling SWSS notification + * + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void handleSwssNotification(std::vector *vlans) +{ + while (pollSwssNotifcation) { + get_dhcp(vlans); + } +} + +/** + * @code void handleRelayNotification(swss::SubscriberStateTable &ipHelpersTable, std::vector *vlans) + * + * @brief handles DHCPv6 relay configuration change notification + * + * @param ipHelpersTable DHCP table + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void handleRelayNotification(swss::SubscriberStateTable &ipHelpersTable, std::vector *vlans) +{ + std::deque entries; + + ipHelpersTable.pops(entries); + processRelayNotification(entries, vlans); +} + +/** + * @code void processRelayNotification(std::deque &entries, std::vector *vlans) + * + * @brief process DHCPv6 relay servers and options configuration change notification + * + * @param entries queue of std::tuple> entries in DHCP table + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void processRelayNotification(std::deque &entries, std::vector *vlans) +{ + std::vector servers; + + for (auto &entry: entries) { + std::string vlan = kfvKey(entry); + std::string operation = kfvOp(entry); + std::vector fieldValues = kfvFieldsValues(entry); + + relay_config intf; + intf.interface = vlan; + for (auto &fieldValue: fieldValues) { + std::string f = fvField(fieldValue); + std::string v = fvValue(fieldValue); + if(f == "dhcpv6_servers") { + std::stringstream ss(v); + while (ss.good()) { + std::string substr; + getline(ss, substr, ','); + intf.servers.push_back(substr); + } + syslog(LOG_DEBUG, "key: %s, Operation: %s, f: %s, v: %s", vlan.c_str(), operation.c_str(), f.c_str(), v.c_str()); + } + if(f == "dhcpv6_option|rfc6939_support") { + if(v == "true") + intf.is_option_79 = true; + else if(v == "false") + intf.is_option_79 = false; + } + } + vlans->push_back(intf); + } +} + +/** +*@code stopSwssNotificationPoll +* +*@brief stop SWSS listening thread +* +*@return none +*/ +void stopSwssNotificationPoll() { + pollSwssNotifcation = false; +}; diff --git a/src/dhcp6relay/src/configInterface.h b/src/dhcp6relay/src/configInterface.h new file mode 100644 index 000000000000..dfd5eb668e0e --- /dev/null +++ b/src/dhcp6relay/src/configInterface.h @@ -0,0 +1,75 @@ +#include +#include "subscriberstatetable.h" +#include "select.h" +#include "relay.h" + +/** + * @code void deinitialize_swss() + * + * @brief initialize DB tables and start SWSS listening thread + * + * @return none + */ +void initialize_swss(std::vector *vlans, swss::DBConnector *db); + +/** + * @code void deinitialize_swss() + * + * @brief deinitialize DB interface and join SWSS listening thread + * + * @return none + */ +void deinitialize_swss(); + +/** + * @code void get_dhcp(std::vector *vlans) + * + * @brief initialize and get vlan information from DHCP_RELAY + * + * @return none + */ +void get_dhcp(std::vector *vlans); + +/** + * @code void handleSwssNotification(std::vector *vlans) + * + * @brief main thread for handling SWSS notification + * + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void handleSwssNotification(std::vector *vlans); + +/** + * @code void handleRelayNotification(swss::SubscriberStateTable &ipHelpersTable, std::vector *vlans) + * + * @brief handles DHCPv6 relay configuration change notification + * + * @param ipHelpersTable DHCP table + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void handleRelayNotification(swss::SubscriberStateTable &configMuxTable, std::vector *vlans); + +/** + * @code void processRelayNotification(std::deque &entries, std::vector *vlans) + * + * @brief process DHCPv6 relay servers and options configuration change notification + * + * @param entries queue of std::tuple> entries in DHCP table + * @param context list of vlans/argument config that contains strings of server and option + * + * @return none + */ +void processRelayNotification(std::deque &entries, std::vector *vlans); + +/** +*@code stopSwssNotificationPoll +* +*@brief stop SWSS listening thread +* +*@return none +*/ +void stopSwssNotificationPoll(); diff --git a/src/dhcp6relay/src/main.cpp b/src/dhcp6relay/src/main.cpp new file mode 100644 index 000000000000..860e4d1346d8 --- /dev/null +++ b/src/dhcp6relay/src/main.cpp @@ -0,0 +1,18 @@ +#include +#include +#include "configInterface.h" + +int main(int argc, char *argv[]) { + try { + std::vector vlans; + swss::DBConnector state_db("STATE_DB", 0); + initialize_swss(&vlans, &state_db); + loop_relay(&vlans, &state_db); + } + catch (std::exception &e) + { + syslog(LOG_ERR, "An exception occurred.\n"); + return 1; + } + return 0; +} diff --git a/src/dhcp6relay/src/relay.cpp b/src/dhcp6relay/src/relay.cpp new file mode 100644 index 000000000000..d9c7114a7937 --- /dev/null +++ b/src/dhcp6relay/src/relay.cpp @@ -0,0 +1,729 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "configdb.h" +#include "sonicv2connector.h" +#include "dbconnector.h" +#include "configInterface.h" + + +struct event *listen_event; +struct event *server_listen_event; +struct event_base *base; +struct event *ev_sigint; +struct event *ev_sigterm; + +/* DHCPv6 filter */ +/* sudo tcpdump -dd "ip6 dst ff02::1:2 && udp dst port 547" */ + +static struct sock_filter ether_relay_filter[] = { + + { 0x28, 0, 0, 0x0000000c }, + { 0x15, 0, 13, 0x000086dd }, + { 0x20, 0, 0, 0x00000026 }, + { 0x15, 0, 11, 0xff020000 }, + { 0x20, 0, 0, 0x0000002a }, + { 0x15, 0, 9, 0x00000000 }, + { 0x20, 0, 0, 0x0000002e }, + { 0x15, 0, 7, 0x00000000 }, + { 0x20, 0, 0, 0x00000032 }, + { 0x15, 0, 5, 0x00010002 }, + { 0x30, 0, 0, 0x00000014 }, + { 0x15, 0, 3, 0x00000011 }, + { 0x28, 0, 0, 0x00000038 }, + { 0x15, 0, 1, 0x00000223 }, + { 0x6, 0, 0, 0x00040000 }, + { 0x6, 0, 0, 0x00000000 }, +}; +const struct sock_fprog ether_relay_fprog = { + lengthof(ether_relay_filter), + ether_relay_filter +}; + +/* DHCPv6 Counter */ +uint64_t counters[DHCPv6_MESSAGE_TYPE_COUNT]; +std::map counterMap = {{1, "Solicit"}, + {2, "Advertise"}, + {3, "Request"}, + {4, "Confirm"}, + {5, "Renew"}, + {6, "Rebind"}, + {7, "Reply"}, + {8, "Release"}, + {9, "Decline"}, + {12, "Relay-Forward"}, + {13, "Relay-Reply"}}; + +/** + * @code void initialize_counter(swss::DBConnector *db, std::string counterVlan); + * + * @brief initialize the counter by each Vlan + * + * @param swss::DBConnector *db state_db connector + * @param counterVlan counter table with interface name + * + * @return none + */ +void initialize_counter(swss::DBConnector *db, std::string counterVlan) { + db->hset(counterVlan, "Solicit", toString(counters[DHCPv6_MESSAGE_TYPE_SOLICIT])); + db->hset(counterVlan, "Advertise", toString(counters[DHCPv6_MESSAGE_TYPE_ADVERTISE])); + db->hset(counterVlan, "Request", toString(counters[DHCPv6_MESSAGE_TYPE_REQUEST])); + db->hset(counterVlan, "Confirm", toString(counters[DHCPv6_MESSAGE_TYPE_CONFIRM])); + db->hset(counterVlan, "Renew", toString(counters[DHCPv6_MESSAGE_TYPE_RENEW])); + db->hset(counterVlan, "Rebind", toString(counters[DHCPv6_MESSAGE_TYPE_REBIND])); + db->hset(counterVlan, "Reply", toString(counters[DHCPv6_MESSAGE_TYPE_REPLY])); + db->hset(counterVlan, "Release", toString(counters[DHCPv6_MESSAGE_TYPE_RELEASE])); + db->hset(counterVlan, "Decline", toString(counters[DHCPv6_MESSAGE_TYPE_DECLINE])); + db->hset(counterVlan, "Relay-Forward", toString(counters[DHCPv6_MESSAGE_TYPE_RELAY_FORW])); + db->hset(counterVlan, "Relay-Reply", toString(counters[DHCPv6_MESSAGE_TYPE_RELAY_REPL])); +} + +/** + * @code void update_counter(swss::DBConnector *db, std::string CounterVlan, uint8_t msg_type); + * + * @brief update the counter in state_db with count of each DHCPv6 message type + * + * @param swss::DBConnector *db state_db connector + * @param counterVlan counter table with interface name + * @param msg_type dhcpv6 message type to be updated in counter + * + * @return none + */ +void update_counter(swss::DBConnector *db, std::string counterVlan, uint8_t msg_type) { + db->hset(counterVlan, counterMap.find(msg_type)->second, toString(counters[msg_type])); +} + +/** + * @code std::string toString(uint16_t count); + * + * @brief convert uint16_t to string + * + * @param count count of messages in counter + * + * @return count in string + */ +std::string toString(uint16_t count) { + std::stringstream ss; + ss << count; + std::string countValue = ss.str(); + return countValue; +} + +/** + * @code bool is_addr_gua(in6_addr addr); + * + * @brief check if address is global + * + * @param addr ipv6 address + * + * @return bool + */ +bool is_addr_gua(in6_addr addr) { + auto masked = addr.__in6_u.__u6_addr8[0] & 0xe0; + return (masked ^ 0x20) == 0x00; +} + +/** + * @code is_addr_link_local(in6_addr addr); + * + * @brief check if address is link_local + * + * @param addr ipv6 address + * + * @return bool + */ +bool is_addr_link_local(in6_addr addr) { + auto masked = ntohs(addr.__in6_u.__u6_addr16[0]) & 0xffc0; + return (masked ^ 0xfe80) == 0x0000; +} + +/** + * @code const struct ether_header *parse_ether_frame(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through ethernet frame + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return ether_header end of ethernet header position + */ +const struct ether_header *parse_ether_frame(const uint8_t *buffer, const uint8_t **out_end) { + (*out_end) = buffer + sizeof(struct ether_header); + return (const struct ether_header *)buffer; +} + +/** + * @code const struct ip6_hdr *parse_ip6_hdr(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through ipv6 header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return ip6_hdr end of ipv6 header position + */ +const struct ip6_hdr *parse_ip6_hdr(const uint8_t *buffer, const uint8_t **out_end) { + (*out_end) = buffer + sizeof(struct ip6_hdr); + return (struct ip6_hdr *)buffer; +} + +/** + * @code const struct udphdr *parse_udp(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through udp header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return udphdr end of udp header position + */ +const struct udphdr *parse_udp(const uint8_t *buffer, const uint8_t **out_end) { + (*out_end) = buffer + sizeof(struct udphdr); + return (const struct udphdr *)buffer; +} + +/** + * @code const struct dhcpv6_msg *parse_dhcpv6_hdr(const uint8_t *buffer); + * + * @brief parse through dhcpv6 header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_msg end of dhcpv6 header position + */ +const struct dhcpv6_msg *parse_dhcpv6_hdr(const uint8_t *buffer) { + return (const struct dhcpv6_msg *)buffer; +} + +/** + * @code const struct dhcpv6_relay_msg *parse_dhcpv6_relay(const uint8_t *buffer); + * + * @brief parse through dhcpv6 relay message + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_relay_msg start of dhcpv6 relay message or end of dhcpv6 message type position + */ +const struct dhcpv6_relay_msg *parse_dhcpv6_relay(const uint8_t *buffer) { + return (const struct dhcpv6_relay_msg *)buffer; +} + +/** + * @code const struct dhcpv6_option *parse_dhcpv6_opt(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through dhcpv6 option + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_option end of dhcpv6 message option + */ +const struct dhcpv6_option *parse_dhcpv6_opt(const uint8_t *buffer, const uint8_t **out_end) { + uint32_t size = 4; // option-code + option-len + size += ntohs(*(uint16_t *)(buffer + 2)); + (*out_end) = buffer + size; + + return (const struct dhcpv6_option *)buffer; +} + +/** + * @code void send_udp(int sock, uint8_t *buffer, struct sockaddr_in6 target, uint32_t n); + * + * @brief send udp packet + * + * @param *buffer message buffer + * @param sockaddr_in6 target target socket + * @param n length of message + * + * @return dhcpv6_option end of dhcpv6 message option + */ +void send_udp(int sock, uint8_t *buffer, struct sockaddr_in6 target, uint32_t n) { + if(sendto(sock, buffer, n, 0, (const struct sockaddr *)&target, sizeof(target)) == -1) + syslog(LOG_ERR, "sendto: Failed to send to target address\n"); +} + +/** + * @code relay_forward(uint8_t *buffer, const struct dhcpv6_msg *msg, uint16_t msg_length); + * + * @brief embed the DHCPv6 message received into DHCPv6 relay forward message + * + * @param buffer pointer to buffer + * @param msg pointer to parsed DHCPv6 message + * @param msg_length length of DHCPv6 message + * + * @return none + */ +void relay_forward(uint8_t *buffer, const struct dhcpv6_msg *msg, uint16_t msg_length) { + struct dhcpv6_option option; + option.option_code = htons(OPTION_RELAY_MSG); + option.option_length = htons(msg_length); + memcpy(buffer, &option, sizeof(struct dhcpv6_option)); + memcpy(buffer + sizeof(struct dhcpv6_option), msg, msg_length); +} + +/** + * @code sock_open(int ifindex, const struct sock_fprog *fprog); + * + * @brief prepare L2 socket to attach to "udp and port 547" filter + * + * @param ifindex interface index + * @param fprog bpf filter "udp and port 547" + * + * @return socket descriptor + */ +int sock_open(int ifindex, const struct sock_fprog *fprog) +{ + if (!ifindex) { + errno = EINVAL; + return -1; + } + + int s = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); + if (s == -1) { + syslog(LOG_ERR, "socket: Failed to create socket\n"); + return -1; + } + + struct sockaddr_ll sll = { + .sll_family = AF_PACKET, + .sll_protocol = htons(ETH_P_ALL), + .sll_ifindex = ifindex + }; + + if (bind(s, (struct sockaddr *)&sll, sizeof sll) == -1) { + syslog(LOG_ERR, "bind: Failed to bind to specified interface\n"); + (void) close(s); + return -1; + } + + if (fprog && setsockopt(s, SOL_SOCKET, SO_ATTACH_FILTER, fprog, sizeof *fprog) == -1) + { + syslog(LOG_ERR, "setsockopt: Failed to attach filter\n"); + (void) close(s); + return -1; + } + + return s; +} + +/** + * @code prepare_relay_config(relay_config *interface_config, int local_sock, int filter); + * + * @brief prepare for specified relay interface config: server and link address + * + * @param interface_config pointer to relay config to be prepared + * @param local_sock L3 socket used for relaying messages + * @param filter socket attached with filter + * + * @return none + */ +void prepare_relay_config(relay_config *interface_config, int local_sock, int filter) { + struct ifaddrs *ifa, *ifa_tmp; + sockaddr_in6 non_link_local; + sockaddr_in6 link_local; + + interface_config->local_sock = local_sock; + interface_config->filter = filter; + + for(auto server: interface_config->servers) { + sockaddr_in6 tmp; + if(inet_pton(AF_INET6, server.c_str(), &tmp.sin6_addr) != 1) + { + syslog(LOG_WARNING, "inet_pton: Failed to convert IPv6 address\n"); + } + tmp.sin6_family = AF_INET6; + tmp.sin6_flowinfo = 0; + tmp.sin6_port = htons(RELAY_PORT); + tmp.sin6_scope_id = 0; + interface_config->servers_sock.push_back(tmp); + } + + if (getifaddrs(&ifa) == -1) { + syslog(LOG_WARNING, "getifaddrs: Unable to get network interfaces\n"); + exit(1); + } + + ifa_tmp = ifa; + while (ifa_tmp) { + if (ifa_tmp->ifa_addr->sa_family == AF_INET6) { + struct sockaddr_in6 *in6 = (struct sockaddr_in6*) ifa_tmp->ifa_addr; + if((strcmp(ifa_tmp->ifa_name, interface_config->interface.c_str()) == 0) && is_addr_gua(in6->sin6_addr)) { + non_link_local = *in6; + break; + } + if((strcmp(ifa_tmp->ifa_name, interface_config->interface.c_str()) == 0) && is_addr_link_local(in6->sin6_addr)) { + link_local = *in6; + } + } + ifa_tmp = ifa_tmp->ifa_next; + } + freeifaddrs(ifa); + + if(is_addr_gua(non_link_local.sin6_addr)) { + interface_config->link_address = non_link_local; + } + else { + interface_config->link_address = link_local; + } +} + +/** + * @code prepare_socket(int *local_sock, relay_config *config); + * + * @brief prepare L3 socket for sending + * + * @param local_sock pointer to socket to be prepared + * @param config relay config that contains strings of server and interface addresses + * + * @return none + */ +void prepare_socket(int *local_sock, relay_config *config, int index) { + int flag = 1; + sockaddr_in6 addr; + memset(&addr, 0, sizeof(addr)); + addr.sin6_family = AF_INET6; + addr.sin6_addr = in6addr_any; + addr.sin6_scope_id = index; + addr.sin6_port = htons(RELAY_PORT); + + if ((*local_sock = socket(AF_INET6, SOCK_DGRAM, 0)) == -1) { + syslog(LOG_ERR, "socket: Failed to create socket\n"); + } + + if((setsockopt(*local_sock, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag))) == -1) { + syslog(LOG_ERR, "setsockopt: Unable to set socket option\n"); + } + + if (bind(*local_sock, (sockaddr *)&addr, sizeof(addr)) == -1) { + syslog(LOG_ERR, "bind: Failed to bind to socket\n"); + } +} + + +/** + * @code relay_client(int sock, const uint8_t *msg, int32_t len, ip6_hdr *ip_hdr, const ether_header *ether_hdr, relay_config *config); + * + * @brief construct relay-forward message + * + * @param sock L3 socket for sending data to servers + * @param msg pointer to dhcpv6 message header position + * @param len size of data received + * @param ip_hdr pointer to IPv6 header + * @param ether_hdr pointer to Ethernet header + * @param config pointer to the relay interface config + * + * @return none + */ +void relay_client(int sock, const uint8_t *msg, int32_t len, const ip6_hdr *ip_hdr, const ether_header *ether_hdr, relay_config *config) { + static uint8_t buffer[4096]; + auto current_buffer_position = buffer; + dhcpv6_relay_msg new_message; + new_message.msg_type = DHCPv6_MESSAGE_TYPE_RELAY_FORW; + memcpy(&new_message.peer_address, &ip_hdr->ip6_src, sizeof(in6_addr)); + new_message.hop_count = 0; + + memcpy(&new_message.link_address, &config->link_address.sin6_addr, sizeof(in6_addr)); + memcpy(current_buffer_position, &new_message, sizeof(dhcpv6_relay_msg)); + current_buffer_position += sizeof(dhcpv6_relay_msg); + + + auto dhcp_message_length = len; + relay_forward(current_buffer_position, parse_dhcpv6_hdr(msg), dhcp_message_length); + current_buffer_position += dhcp_message_length + sizeof(dhcpv6_option); + + if(config->is_option_79) { + linklayer_addr_option option79; + option79.link_layer_type = htons(1); + option79.option_code = htons(OPTION_CLIENT_LINKLAYER_ADDR); + option79.option_length = htons(2 + 6); // link_layer_type field + address + + memcpy(current_buffer_position, &option79, sizeof(linklayer_addr_option)); + current_buffer_position += sizeof(linklayer_addr_option); + } + + memcpy(current_buffer_position, ðer_hdr->ether_shost, sizeof(ether_hdr->ether_shost)); + current_buffer_position += sizeof(ether_hdr->ether_shost); + + for(auto server: config->servers_sock) { + send_udp(sock, buffer, server, current_buffer_position - buffer); + } +} + +/** + * @code relay_relay_reply(int sock, const uint8_t *msg, int32_t len, relay_config *configs); + * + * @brief relay and unwrap a relay-reply message + * + * @param sock L3 socket for sending data to servers + * @param msg pointer to dhcpv6 message header position + * @param len size of data received + * @param config relay interface config + * + * @return none + */ + void relay_relay_reply(int sock, const uint8_t *msg, int32_t len, relay_config *configs) { + static uint8_t buffer[4096]; + char ifname[configs->interface.size()]; + struct sockaddr_in6 target_addr; + auto current_buffer_position = buffer; + auto current_position = msg; + const uint8_t *tmp = NULL; + auto dhcp_relay_header = parse_dhcpv6_relay(msg); + current_position += sizeof(struct dhcpv6_relay_msg); + + while ((current_position - msg) != len) { + auto option = parse_dhcpv6_opt(current_position, &tmp); + current_position = tmp; + switch (ntohs(option->option_code)) { + case OPTION_RELAY_MSG: + memcpy(current_buffer_position, ((uint8_t *)option) + sizeof(struct dhcpv6_option), ntohs(option->option_length)); + current_buffer_position += ntohs(option->option_length); + break; + default: + break; + } + } + + strcpy(ifname, configs->interface.c_str()); + memcpy(&target_addr.sin6_addr, &dhcp_relay_header->peer_address, sizeof(struct in6_addr)); + target_addr.sin6_family = AF_INET6; + target_addr.sin6_flowinfo = 0; + target_addr.sin6_port = htons(CLIENT_PORT); + target_addr.sin6_scope_id = if_nametoindex(ifname); + + send_udp(sock, buffer, target_addr, current_buffer_position - buffer); +} + + +/** + * @code callback(evutil_socket_t fd, short event, void *arg); + * + * @brief callback for libevent that is called everytime data is received at the filter socket + * + * @param fd filter socket + * @param event libevent triggered event + * @param arg callback argument provided by user + * + * @return none + */ +void callback(evutil_socket_t fd, short event, void *arg) { + struct relay_config *config = (struct relay_config *)arg; + static uint8_t message_buffer[4096]; + uint32_t len = recv(config->filter, message_buffer, 4096, 0); + if (len <= 0) { + syslog(LOG_WARNING, "recv: Failed to receive data at filter socket\n"); + } + + char* ptr = (char *)message_buffer; + const uint8_t *current_position = (uint8_t *)ptr; + const uint8_t *tmp = NULL; + + auto ether_header = parse_ether_frame(current_position, &tmp); + current_position = tmp; + + auto ip_header = parse_ip6_hdr(current_position, &tmp); + current_position = tmp; + + if (ip_header->ip6_ctlun.ip6_un1.ip6_un1_nxt != IPPROTO_UDP) { + const struct ip6_ext *ext_header; + do { + ext_header = (const struct ip6_ext *)current_position; + current_position += ext_header->ip6e_len; + } + while (ext_header->ip6e_nxt != IPPROTO_UDP); + } + + auto udp_header = parse_udp(current_position, &tmp); + current_position = tmp; + + auto msg = parse_dhcpv6_hdr(current_position); + counters[msg->msg_type]++; + update_counter(config->db, config->counterVlan, msg->msg_type); + + relay_client(config->local_sock, current_position, ntohs(udp_header->len) - sizeof(udphdr), ip_header, ether_header, config); +} + +void server_callback(evutil_socket_t fd, short event, void *arg) { + struct relay_config *config = (struct relay_config *)arg; + sockaddr_in6 from; + socklen_t len = sizeof(from); + int32_t data = 0; + static uint8_t message_buffer[4096]; + + if ((data = recvfrom(config->local_sock, message_buffer, 4096, 0, (sockaddr *)&from, &len)) == -1) { + syslog(LOG_WARNING, "recv: Failed to receive data from server\n"); + } + + auto msg = parse_dhcpv6_hdr(message_buffer); + + counters[msg->msg_type]++; + update_counter(config->db, config->counterVlan, msg->msg_type); + if (msg->msg_type == DHCPv6_MESSAGE_TYPE_RELAY_REPL) { + relay_relay_reply(config->local_sock, message_buffer, data, config); + } +} + +/** + * @code signal_init(); + * + * @brief initialize DHCPv6 Relay libevent signals + */ +int signal_init() { + int rv = -1; + do { + ev_sigint = evsignal_new(base, SIGINT, signal_callback, base); + if (ev_sigint == NULL) { + syslog(LOG_ERR, "Could not create SIGINT libevent signal\n"); + break; + } + + ev_sigterm = evsignal_new(base, SIGTERM, signal_callback, base); + if (ev_sigterm == NULL) { + syslog(LOG_ERR, "Could not create SIGTERM libevent signal\n"); + break; + } + rv = 0; + } while(0); + return rv; +} + +/** + * @code signal_start(); + * + * @brief start DHCPv6 Relay libevent base and add signals + */ +int signal_start() +{ + int rv = -1; + do + { + if (evsignal_add(ev_sigint, NULL) != 0) { + syslog(LOG_ERR, "Could not add SIGINT libevent signal\n"); + break; + } + + if (evsignal_add(ev_sigterm, NULL) != 0) { + syslog(LOG_ERR, "Could not add SIGTERM libevent signal\n"); + break; + } + + if (event_base_dispatch(base) != 0) { + syslog(LOG_ERR, "Could not start libevent dispatching loop\n"); + } + + rv = 0; + } while (0); + + return rv; +} + +/** + * @code signal_callback(fd, event, arg); + * + * @brief signal handler for dhcp6relay. Initiate shutdown when signal is caught + * + * @param fd libevent socket + * @param event event triggered + * @param arg pointer to libevent base + * + * @return none + */ +void signal_callback(evutil_socket_t fd, short event, void *arg) +{ + syslog(LOG_ALERT, "Received signal: '%s'\n", strsignal(fd)); + if ((fd == SIGTERM) || (fd == SIGINT)) { + dhcp6relay_stop(); + } +} + +/** + * @code dhcp6relay_stop(); + * + * @brief stop DHCPv6 Relay libevent loop upon signal + */ +void dhcp6relay_stop() +{ + event_base_loopexit(base, NULL); +} + +/** + * @code loop_relay(std::vector *vlans, swss::DBConnector *db); + * + * @brief main loop: configure sockets, create libevent base, start server listener thread + * + * @param vlans list of vlans retrieved from config_db + * @param db state_db connector + */ +void loop_relay(std::vector *vlans, swss::DBConnector *db) { + std::vector sockets; + + for(std::size_t i = 0; isize(); i++) { + struct relay_config config = vlans->at(i); + int filter = 0; + int local_sock = 0; + const char *ifname = config.interface.c_str(); + int index = if_nametoindex(ifname); + config.db = db; + + config.counterVlan = "DHCPv6_COUNTER_TABLE|"; + config.counterVlan.append(ifname); + initialize_counter(config.db, config.counterVlan); + + filter = sock_open(index, ðer_relay_fprog); + + prepare_socket(&local_sock, &config, index); + sockets.push_back(filter); + sockets.push_back(local_sock); + + prepare_relay_config(&config, local_sock, filter); + + evutil_make_listen_socket_reuseable(filter); + evutil_make_socket_nonblocking(filter); + + evutil_make_listen_socket_reuseable(local_sock); + evutil_make_socket_nonblocking(local_sock); + + base = event_base_new(); + if(base == NULL) { + syslog(LOG_ERR, "libevent: Failed to create base\n"); + } + + listen_event = event_new(base, filter, EV_READ|EV_PERSIST, callback, (void *)&config); + server_listen_event = event_new(base, local_sock, EV_READ|EV_PERSIST, server_callback, (void *)&config); + if (listen_event == NULL || server_listen_event == NULL) { + syslog(LOG_ERR, "libevent: Failed to create libevent\n"); + } + + event_add(listen_event, NULL); + event_add(server_listen_event, NULL); + } + + if((signal_init() == 0) && signal_start() == 0) { + shutdown(); + for(std::size_t i = 0; i +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define PACKED __attribute__ ((packed)) + +#define RELAY_PORT 547 +#define CLIENT_PORT 546 +#define HOP_LIMIT 32 + +#define lengthof(A) (sizeof (A) / sizeof (A)[0]) + +#define OPTION_RELAY_MSG 9 +#define OPTION_CLIENT_LINKLAYER_ADDR 79 + +/* DHCPv6 message types */ +typedef enum +{ + DHCPv6_MESSAGE_TYPE_SOLICIT = 1, + DHCPv6_MESSAGE_TYPE_ADVERTISE = 2, + DHCPv6_MESSAGE_TYPE_REQUEST = 3, + DHCPv6_MESSAGE_TYPE_CONFIRM = 4, + DHCPv6_MESSAGE_TYPE_RENEW = 5, + DHCPv6_MESSAGE_TYPE_REBIND = 6, + DHCPv6_MESSAGE_TYPE_REPLY = 7, + DHCPv6_MESSAGE_TYPE_RELEASE = 8, + DHCPv6_MESSAGE_TYPE_DECLINE = 9, + DHCPv6_MESSAGE_TYPE_RELAY_FORW = 12, + DHCPv6_MESSAGE_TYPE_RELAY_REPL = 13, + + DHCPv6_MESSAGE_TYPE_COUNT +} dhcp_message_type_t; + +struct relay_config { + int local_sock; + int filter; + sockaddr_in6 link_address; + swss::DBConnector *db; + std::string interface; + std::vector servers; + std::vector servers_sock; + bool is_option_79; + std::string counterVlan; +}; + + +/* DHCPv6 messages and options */ + +struct dhcpv6_msg { + uint8_t msg_type; +}; + +struct PACKED dhcpv6_relay_msg { + uint8_t msg_type; + uint8_t hop_count; + struct in6_addr link_address; + struct in6_addr peer_address; +}; + + +struct dhcpv6_option { + uint16_t option_code; + uint16_t option_length; +}; + +struct linklayer_addr_option { + uint16_t option_code; + uint16_t option_length; + uint16_t link_layer_type; +}; + +/** + * @code sock_open(int ifindex, const struct sock_fprog *fprog); + * + * @brief prepare L2 socket to attach to "udp and port 547" filter + * + * @param ifindex interface index + * @param fprog bpf filter "udp and port 547" + * + * @return socket descriptor + */ +int sock_open(int ifindex, const struct sock_fprog *fprog); + +/** + * @code prepare_socket(int *local_sock, arg_config *config); + * + * @brief prepare L3 socket for sending + * + * @param local_sock pointer to socket to be prepared + * @param config argument config that contains strings of server and interface addresses + * @param index interface id + * + * @return none + */ +void prepare_socket(int *local_sock, relay_config *config, int index); + +/** + * @code prepare_relay_config(relay_config *interface_config, int local_sock, int filter); + * + * @brief prepare for specified relay interface config: server and link address + * + * @param interface_config pointer to relay config to be prepared + * @param local_sock L3 socket used for relaying messages + * @param filter socket attached with filter + * + * @return none + */ +void prepare_relay_config(relay_config *interface_config, int local_sock, int filter); + +/** + * @code relay_forward(uint8_t *buffer, const struct dhcpv6_msg *msg, uint16_t msg_length); + * + * @brief embed the DHCPv6 message received into DHCPv6 relay forward message + * + * @param buffer pointer to buffer + * @param msg pointer to parsed DHCPv6 message + * @param msg_length length of DHCPv6 message + * + * @return none + */ +void relay_forward(uint8_t *buffer, const struct dhcpv6_msg *msg, uint16_t msg_length); + +/** + * @code relay_client(int sock, const uint8_t *msg, int32_t len, ip6_hdr *ip_hdr, const ether_header *ether_hdr, relay_config *config); + * + * @brief construct relay-forward message + * + * @param sock L3 socket for sending data to servers + * @param msg pointer to dhcpv6 message header position + * @param len size of data received + * @param ip_hdr pointer to IPv6 header + * @param ether_hdr pointer to Ethernet header + * @param config pointer to the relay interface config + * + * @return none + */ +void relay_client(int sock, const uint8_t *msg, int32_t len, const ip6_hdr *ip_hdr, const ether_header *ether_hdr, relay_config *config); + +/** + * @code relay_relay_reply(int sock, const uint8_t *msg, int32_t len, relay_config *configs); + * + * @brief relay and unwrap a relay-reply message + * + * @param sock L3 socket for sending data to servers + * @param msg pointer to dhcpv6 message header position + * @param len size of data received + * @param config relay interface config + * + * @return none + */ +void relay_relay_reply(int sock, const uint8_t *msg, int32_t len, relay_config *configs); + +/** + * @code loop_relay(std::vector *vlans, swss::DBConnector *db); + * + * @brief main loop: configure sockets, create libevent base, start server listener thread + * + * @param vlans list of vlans retrieved from config_db + * @param db state_db connector + */ +void loop_relay(std::vector *vlans, swss::DBConnector *db); + +/** + * @code signal_init(); + * + * @brief initialize DHCPv6 Relay libevent signals + */ +int signal_init(); + +/** + * @code signal_start(); + * + * @brief start DHCPv6 Relay libevent base and add signals + */ +int signal_start(); + +/** + * @code dhcp6relay_stop(); + * + * @brief stop DHCPv6 Relay libevent loop upon signal + */ +void dhcp6relay_stop(); + +/** + * @code signal_callback(fd, event, arg); + * + * @brief signal handler for dhcp6relay. Initiate shutdown when signal is caught + * + * @param fd libevent socket + * @param event event triggered + * @param arg pointer to libevent base + * + * @return none + */ +void signal_callback(evutil_socket_t fd, short event, void *arg); + +/** + * @code shutdown(); + * + * @brief free signals and terminate threads + */ +void shutdown(); + +/** + * @code void initialize_counter(swss::DBConnector *db, std::string counterVlan); + * + * @brief initialize the counter by each Vlan + * + * @param swss::DBConnector *db state_db connector + * @param counterVlan counter table with interface name + * + * @return none + */ +void initialize_counter(swss::DBConnector *db, std::string counterVlan); + +/** + * @code void update_counter(swss::DBConnector *db, std::string CounterVlan, uint8_t msg_type); + * + * @brief update the counter in state_db with count of each DHCPv6 message type + * + * @param swss::DBConnector *db state_db connector + * @param counterVlan counter table with interface name + * @param msg_type dhcpv6 message type to be updated in counter + * + * @return none + */ +void update_counter(swss::DBConnector *db, std::string counterVlan, uint8_t msg_type); + +/* Helper functions */ + +/** + * @code std::string toString(uint16_t count); + * + * @brief convert uint16_t to string + * + * @param count count of messages in counter + * + * @return count in string + */ +std::string toString(uint16_t count); + +/** + * @code bool is_addr_gua(in6_addr addr); + * + * @brief check if address is global + * + * @param addr ipv6 address + * + * @return bool + */ +bool is_addr_gua(in6_addr addr); + +/** + * @code is_addr_link_local(in6_addr addr); + * + * @brief check if address is link_local + * + * @param addr ipv6 address + * + * @return bool + */ +bool is_addr_link_local(in6_addr addr); + +/** + * @code const struct ether_header *parse_ether_frame(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through ethernet frame + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return ether_header end of ethernet header position + */ +const struct ether_header *parse_ether_frame(const uint8_t *buffer, const uint8_t **out_end); + +/** + * @code const struct ip6_hdr *parse_ip6_hdr(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through ipv6 header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return ip6_hdr end of ipv6 header position + */ +const struct ip6_hdr *parse_ip6_hdr(const uint8_t *buffer, const uint8_t **out_end); + +/** + * @code const struct udphdr *parse_udp(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through udp header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return udphdr end of udp header position + */ +const struct udphdr *parse_udp(const uint8_t *buffer, const uint8_t **out_end); + +/** + * @code const struct dhcpv6_msg *parse_dhcpv6_hdr(const uint8_t *buffer); + * + * @brief parse through dhcpv6 header + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_msg end of dhcpv6 header position + */ +const struct dhcpv6_msg *parse_dhcpv6_hdr(const uint8_t *buffer); + +/** + * @code const struct dhcpv6_relay_msg *parse_dhcpv6_relay(const uint8_t *buffer); + * + * @brief parse through dhcpv6 relay message + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_relay_msg start of dhcpv6 relay message or end of dhcpv6 message type position + */ +const struct dhcpv6_relay_msg *parse_dhcpv6_relay(const uint8_t *buffer); + +/** + * @code const struct dhcpv6_option *parse_dhcpv6_opt(const uint8_t *buffer, const uint8_t **out_end); + * + * @brief parse through dhcpv6 option + * + * @param *buffer message buffer + * @param **out_end pointer + * + * @return dhcpv6_option end of dhcpv6 message option + */ +const struct dhcpv6_option *parse_dhcpv6_opt(const uint8_t *buffer, const uint8_t **out_end); + +/** + * @code void send_udp(int sock, uint8_t *buffer, struct sockaddr_in6 target, uint32_t n); + * + * @brief send udp packet + * + * @param *buffer message buffer + * @param sockaddr_in6 target target socket + * @param n length of message + * + * @return dhcpv6_option end of dhcpv6 message option + */ +void send_udp(int sock, struct sockaddr_in6 target, uint8_t *buffer, uint32_t n); + diff --git a/src/dhcp6relay/src/subdir.mk b/src/dhcp6relay/src/subdir.mk new file mode 100644 index 000000000000..af378319d78f --- /dev/null +++ b/src/dhcp6relay/src/subdir.mk @@ -0,0 +1,23 @@ +CC := g++ + +C_SRCS += \ +../src/relay.c \ +../src/configInterface.c \ +../src/main.c + +OBJS += \ +./src/relay.o \ +./src/configInterface.o \ +./src/main.o + +C_DEPS += \ +./src/relay.d \ +./src/configInterface.d \ +./src/main.d + +src/%.o: src/%.cpp + @echo 'Building file: $<' + @echo 'Invoking: GCC C++ Compiler' + $(CC) -std=c++17 -D__FILENAME__="$(subst src/,,$<)" $(LIBS) -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' diff --git a/src/ifupdown2/Makefile b/src/ifupdown2/Makefile index 89228bedafae..ed6f6b549992 100644 --- a/src/ifupdown2/Makefile +++ b/src/ifupdown2/Makefile @@ -13,6 +13,14 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : tar -z -f $(IFUPDOWN2_VERSION).tar.gz -x pushd ./ifupdown2-$(IFUPDOWN2_VERSION) + git init + git add -f * + git commit -m "unmodified ifupdown2 source" + + # Apply patch series + stg init + stg import -s ../patch/series + # Build source and Debian packages dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $(SONIC_DPKG_ADMINDIR) popd diff --git a/src/ifupdown2/patch/0001-fix-broadcast-addr-encoding.patch b/src/ifupdown2/patch/0001-fix-broadcast-addr-encoding.patch new file mode 100644 index 000000000000..43ccbf0c6362 --- /dev/null +++ b/src/ifupdown2/patch/0001-fix-broadcast-addr-encoding.patch @@ -0,0 +1,31 @@ +Fix reading and using broadcast address + +When reading the broadcast address, convert it to an IPNetwork object, +so that it can be encoded/packed later. + +From: Saikrishna Arcot +--- + ifupdown2/addons/address.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ifupdown2/addons/address.py b/ifupdown2/addons/address.py +index 8b99b25..2ca41fc 100644 +--- a/ifupdown2/addons/address.py ++++ b/ifupdown2/addons/address.py +@@ -441,11 +441,15 @@ class address(Addon, moduleBase): + else: + addr_obj = ipnetwork.IPNetwork(addr) + +- for attr_name in ("broadcast", "scope", "preferred-lifetime"): ++ for attr_name in ("scope", "preferred-lifetime"): + attr_value = ifaceobj.get_attr_value_n(attr_name, index) + if attr_value: + addr_attributes[attr_name] = attr_value + ++ broadcast = ifaceobj.get_attr_value_n("broadcast", index) ++ if broadcast: ++ addr_attributes["broadcast"] = ipnetwork.IPNetwork(broadcast) ++ + pointopoint = ifaceobj.get_attr_value_n("pointopoint", index) + try: + if pointopoint: diff --git a/src/ifupdown2/patch/0002-disable-checks-when-using-no-wait.patch b/src/ifupdown2/patch/0002-disable-checks-when-using-no-wait.patch new file mode 100644 index 000000000000..2049b4b5dce7 --- /dev/null +++ b/src/ifupdown2/patch/0002-disable-checks-when-using-no-wait.patch @@ -0,0 +1,36 @@ +Don't check for a new IP address if dhcp-wait=no is set + +From: Saikrishna Arcot + +If dhcp-wait=no is specified in the ifupdown2 policy configuration, then +skip the check for a new IP address. When checking, dhclient probably +isn't done getting a new IP address from the DHCP server. + +This change is needed for ZTP (zero-touch provisioning) in SONiC. The +expectation is that dhclient will get started on all interfaces +(both management and in-band), and on some interfaces, there might not +be a DHCP server on the other end of the link. That'll mean that it may +get blocked here. + +SONiC ZTP needs dhclient to be started, but ifupdown2 shouldn't block on +dhclient being successful. +--- + ifupdown2/addons/dhcp.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/ifupdown2/addons/dhcp.py b/ifupdown2/addons/dhcp.py +index 9d5ce27..87f61e7 100644 +--- a/ifupdown2/addons/dhcp.py ++++ b/ifupdown2/addons/dhcp.py +@@ -103,7 +103,10 @@ class dhcp(Addon, moduleBase): + + while retry >= 0: + handler(ifname, **handler_kwargs) +- retry = self.dhclient_check(ifname, family, ip_config_before, retry, handler_kwargs.get("cmd_prefix")) ++ if handler_kwargs.get("wait", True): ++ retry = self.dhclient_check(ifname, family, ip_config_before, retry, handler_kwargs.get("cmd_prefix")) ++ else: ++ retry = -1 + + def dhclient_check(self, ifname, family, ip_config_before, retry, dhclient_cmd_prefix): + retry -= 1 diff --git a/src/ifupdown2/patch/series b/src/ifupdown2/patch/series new file mode 100644 index 000000000000..c4e412bbe83f --- /dev/null +++ b/src/ifupdown2/patch/series @@ -0,0 +1,2 @@ +0001-fix-broadcast-addr-encoding.patch +0002-disable-checks-when-using-no-wait.patch diff --git a/src/initramfs-tools/Makefile b/src/initramfs-tools/Makefile index f57b943d2d4f..27832cabca32 100644 --- a/src/initramfs-tools/Makefile +++ b/src/initramfs-tools/Makefile @@ -5,12 +5,12 @@ SHELL = /bin/bash MAIN_TARGET = initramfs-tools_$(INITRAMFS_TOOLS_VERSION)_all.deb DERIVED_TARGETS = initramfs-tools-core_$(INITRAMFS_TOOLS_VERSION)_all.deb -INITRAMFS_TOOLS_REVISION = 40e544e13611c1b2690eb99a8096fc16c1b9c74e +INITRAMFS_TOOLS_REVISION = v$(INITRAMFS_TOOLS_VERSION) $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : # Obtaining the initramfs-tools rm -rf ./initramfs-tools - git clone --branch v0.133 https://salsa.debian.org/kernel-team/initramfs-tools.git ./initramfs-tools + git clone https://salsa.debian.org/kernel-team/initramfs-tools.git ./initramfs-tools # Patch pushd ./initramfs-tools diff --git a/src/initramfs-tools/loopback-file-offset-support.patch b/src/initramfs-tools/loopback-file-offset-support.patch index 396e1c92007a..26ae7e1450a1 100644 --- a/src/initramfs-tools/loopback-file-offset-support.patch +++ b/src/initramfs-tools/loopback-file-offset-support.patch @@ -57,7 +57,7 @@ index a17e740..2bef5cb 100644 modprobe loop modprobe "${FSTYPE}" -+ if [ ! -z "${LOOPOFFSET}" ]; then ++ if [ -n "${LOOPOFFSET}" ]; then + # create a loop device for the fs within the file + loopdev="$(losetup -f)" + losetup -o "${LOOPOFFSET:-0}" "${loopdev}" "${loopfile}" || \ diff --git a/src/iptables/patch/0001-Passing-fullcone-option-for-SNAT-and-DNAT.patch b/src/iptables/patch/0001-Passing-fullcone-option-for-SNAT-and-DNAT.patch index 9ed886bb5dbd..4e06adf9deb4 100644 --- a/src/iptables/patch/0001-Passing-fullcone-option-for-SNAT-and-DNAT.patch +++ b/src/iptables/patch/0001-Passing-fullcone-option-for-SNAT-and-DNAT.patch @@ -1,16 +1,17 @@ -From 92f5aee7372748845f11b7a10d880f968769e860 Mon Sep 17 00:00:00 2001 +From 386bb8378bc67b7dfc3db5d5f28a01620b4231cf Mon Sep 17 00:00:00 2001 From: Kiran Kella Date: Wed, 7 Aug 2019 07:22:42 -0700 -Subject: [PATCH] Passing fullcone option for SNAT and DNAT +Subject: [PATCH] From 92f5aee7372748845f11b7a10d880f968769e860 Mon Sep 17 + 00:00:00 2001 Subject: [PATCH] Passing fullcone option for SNAT and DNAT --- - extensions/libipt_DNAT.c | 22 +++++++++++++++++++++- - extensions/libipt_MASQUERADE.c | 21 ++++++++++++++++++++- - extensions/libipt_SNAT.c | 22 +++++++++++++++++++++- - 3 files changed, 62 insertions(+), 3 deletions(-) + extensions/libipt_DNAT.c | 37 ++++++++++++++++++++++++++++++++-- + extensions/libipt_MASQUERADE.c | 22 +++++++++++++++++++- + extensions/libipt_SNAT.c | 22 +++++++++++++++++++- + 3 files changed, 77 insertions(+), 4 deletions(-) diff --git a/extensions/libipt_DNAT.c b/extensions/libipt_DNAT.c -index 4907a2e..543421c 100644 +index 4907a2e..95e3446 100644 --- a/extensions/libipt_DNAT.c +++ b/extensions/libipt_DNAT.c @@ -8,14 +8,20 @@ @@ -19,7 +20,7 @@ index 4907a2e..543421c 100644 +/* Temporarily defining here, need to be picked up from the + * new kernel header linux/netfilter/nf_nat.h */ -+#define NF_NAT_RANGE_FULLCONE (1 << 6) ++#define NF_NAT_RANGE_FULLCONE (1 << 10) + enum { O_TO_DEST = 0, @@ -151,7 +152,7 @@ index 4907a2e..543421c 100644 return 1; } diff --git a/extensions/libipt_MASQUERADE.c b/extensions/libipt_MASQUERADE.c -index 90bf606..169457d 100644 +index 90bf606..b3ed1e6 100644 --- a/extensions/libipt_MASQUERADE.c +++ b/extensions/libipt_MASQUERADE.c @@ -8,10 +8,15 @@ @@ -160,7 +161,7 @@ index 90bf606..169457d 100644 +/* Temporarily defining here, need to be picked up from the + * new kernel header linux/netfilter/nf_nat.h */ -+#define NF_NAT_RANGE_FULLCONE (1 << 6) ++#define NF_NAT_RANGE_FULLCONE (1 << 10) + enum { O_TO_PORTS = 0, @@ -229,7 +230,7 @@ index 90bf606..169457d 100644 } diff --git a/extensions/libipt_SNAT.c b/extensions/libipt_SNAT.c -index e92d811..ad42b8c 100644 +index e92d811..8704004 100644 --- a/extensions/libipt_SNAT.c +++ b/extensions/libipt_SNAT.c @@ -8,16 +8,22 @@ @@ -238,7 +239,7 @@ index e92d811..ad42b8c 100644 +/* Temporarily defining here, need to be picked up from the + * new kernel header linux/netfilter/nf_nat.h */ -+#define NF_NAT_RANGE_FULLCONE (1 << 6) ++#define NF_NAT_RANGE_FULLCONE (1 << 10) + enum { O_TO_SRC = 0, @@ -319,3 +320,6 @@ index e92d811..ad42b8c 100644 } return 1; +-- +2.27.0 + diff --git a/src/libteam/patch/0008-libteam-Add-warm_reboot-mode.patch b/src/libteam/patch/0008-libteam-Add-warm_reboot-mode.patch index 440d351a8b6e..4ef38ee138f3 100644 --- a/src/libteam/patch/0008-libteam-Add-warm_reboot-mode.patch +++ b/src/libteam/patch/0008-libteam-Add-warm_reboot-mode.patch @@ -1,4 +1,4 @@ -From a4ab4de68134f6425f704a2ddcda33a4930645de Mon Sep 17 00:00:00 2001 +From cdc7eb674bb779b9e5181921e4c7c2b2f0a0db41 Mon Sep 17 00:00:00 2001 From: Pavel Shirshov Date: Tue, 3 Mar 2020 13:04:57 -0800 Subject: [PATCH] [libteam]: Reimplement Warm-Reboot procedure' @@ -9,8 +9,8 @@ Subject: [PATCH] [libteam]: Reimplement Warm-Reboot procedure' teamd/teamd.h | 6 + teamd/teamd_events.c | 13 ++ teamd/teamd_per_port.c | 6 + - teamd/teamd_runner_lacp.c | 474 +++++++++++++++++++++++++++++++++++--- - 6 files changed, 512 insertions(+), 44 deletions(-) + teamd/teamd_runner_lacp.c | 475 +++++++++++++++++++++++++++++++++++--- + 6 files changed, 513 insertions(+), 44 deletions(-) diff --git a/libteam/ifinfo.c b/libteam/ifinfo.c index 46d56a2..b86d34c 100644 @@ -35,7 +35,7 @@ index 46d56a2..b86d34c 100644 } } diff --git a/teamd/teamd.c b/teamd/teamd.c -index bf42347..221d71d 100644 +index 421e34d..33512a6 100644 --- a/teamd/teamd.c +++ b/teamd/teamd.c @@ -117,7 +117,9 @@ static void print_help(const struct teamd_context *ctx) { @@ -203,7 +203,7 @@ index 221803e..bd4dcc1 100644 struct teamd_port *tdport) { diff --git a/teamd/teamd_per_port.c b/teamd/teamd_per_port.c -index 166da57..03f8d63 100644 +index 166da57..cefd6c2 100644 --- a/teamd/teamd_per_port.c +++ b/teamd/teamd_per_port.c @@ -350,6 +350,12 @@ static int teamd_port_remove(struct teamd_context *ctx, @@ -220,7 +220,7 @@ index 166da57..03f8d63 100644 tdport->ifname, tdport->ifindex); err = team_port_remove(ctx->th, tdport->ifindex); diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c -index 55abe88..f225fb2 100644 +index 955ef0c..782fc05 100644 --- a/teamd/teamd_runner_lacp.c +++ b/teamd/teamd_runner_lacp.c @@ -31,6 +31,7 @@ @@ -523,7 +523,7 @@ index 55abe88..f225fb2 100644 + /* the port was up before the WR. Trying to restore it */ + struct lacpdu lacpdu; + err = lacpdu_read(lacp_port, &lacpdu); -+ if (err) /* Can't read, so the port will start from scratch */ ++ if (err) /* Can't read, so the port will start from scratch */ + continue; + teamd_log_info("WR-mode. State of the LAG member port '%s' was restored.", + tdport->ifname); @@ -810,7 +810,7 @@ index 55abe88..f225fb2 100644 static const struct teamd_event_watch_ops lacp_event_watch_ops = { .hwaddr_changed = lacp_event_watch_hwaddr_changed, .port_hwaddr_changed = lacp_event_watch_port_hwaddr_changed, -@@ -1469,21 +1848,35 @@ static const struct teamd_event_watch_ops lacp_event_watch_ops = { +@@ -1469,21 +1848,36 @@ static const struct teamd_event_watch_ops lacp_event_watch_ops = { .port_changed = lacp_event_watch_port_changed, .admin_state_changed = lacp_event_watch_admin_state_changed, .refresh = lacp_event_watch_refresh, @@ -832,6 +832,7 @@ index 55abe88..f225fb2 100644 + if (lacp->wr.carrier_up) { + teamd_log_info("WR-mode. Starting in WR mode"); + } else { ++ stop_wr_mode(lacp); + teamd_log_info("WR-mode. Starting in normal mode. The LAG interface was down before restart"); + } + ctx->warm_start_mode = lacp->wr.carrier_up; @@ -851,7 +852,7 @@ index 55abe88..f225fb2 100644 return 0; } -@@ -1951,6 +2344,12 @@ static int lacp_init(struct teamd_context *ctx, void *priv) +@@ -1951,6 +2345,12 @@ static int lacp_init(struct teamd_context *ctx, void *priv) } lacp->ctx = ctx; @@ -864,7 +865,7 @@ index 55abe88..f225fb2 100644 err = teamd_hash_func_set(ctx); if (err) return err; -@@ -1992,10 +2391,13 @@ static void lacp_fini(struct teamd_context *ctx, void *priv) +@@ -1992,10 +2392,13 @@ static void lacp_fini(struct teamd_context *ctx, void *priv) { struct lacp *lacp = priv; @@ -880,5 +881,5 @@ index 55abe88..f225fb2 100644 const struct teamd_runner teamd_runner_lacp = { -- -2.17.1.windows.2 +2.17.1 diff --git a/src/libyang/Makefile b/src/libyang/Makefile index 32cabdf13bdf..357908ebc370 100644 --- a/src/libyang/Makefile +++ b/src/libyang/Makefile @@ -3,7 +3,7 @@ SHELL = /bin/bash .SHELLFLAGS += -e MAIN_TARGET = $(LIBYANG) -DERIVED_TARGETS = $(LIBYANG_DEV) $(LIBYANG_DBG) $(LIBYANG_PY2) $(LIBYANG_PY3) $(LIBYANG_CPP) +DERIVED_TARGETS = $(LIBYANG_DEV) $(LIBYANG_DBG) $(LIBYANG_PY3) $(LIBYANG_CPP) $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : # Obtaining the libyang diff --git a/src/libyang/patch/libyang.patch b/src/libyang/patch/libyang.patch index a950d85086ab..45eba825ce30 100644 --- a/src/libyang/patch/libyang.patch +++ b/src/libyang/patch/libyang.patch @@ -10,33 +10,6 @@ index fa562dd3..8635ba15 100644 # set default build type if not specified by user if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE debug) -diff --git a/packages/debian.control.in b/packages/debian.control.in -index da6588b9..fb3ede48 100644 ---- a/packages/debian.control.in -+++ b/packages/debian.control.in -@@ -53,3 +53,15 @@ Depends: python3-yang@PACKAGE_PART_NAME@ (=@LIBYANG_VERSION@) - Section: debug - Architecture: any - Description: Debug symbols of python3 bidings of libyang library. -+ -+Package: python2-yang@PACKAGE_PART_NAME@ -+Depends: @PACKAGE_NAME@ (=@LIBYANG_VERSION@), libyang-cpp@PACKAGE_PART_NAME@ (=@LIBYANG_VERSION@) -+Section: libs -+Architecture: any -+Description: Bindings of libyang library to python2 language. -+ -+Package: python2-yang@PACKAGE_PART_NAME@-dbg -+Depends: python2-yang@PACKAGE_PART_NAME@ (=@LIBYANG_VERSION@) -+Section: debug -+Architecture: any -+Description: Debug symbols of python2 bidings of libyang library. -diff --git a/packages/debian.python2-yang.install b/packages/debian.python2-yang.install -new file mode 100644 -index 00000000..14ce2f3c ---- /dev/null -+++ b/packages/debian.python2-yang.install -@@ -0,0 +1 @@ -+usr/lib/python2.7/dist-packages/* diff --git a/packages/debian.rules.in b/packages/debian.rules.in index d565819e..e92fe4a1 100644 --- a/packages/debian.rules.in @@ -45,7 +18,7 @@ index d565819e..e92fe4a1 100644 override_dh_strip: dh_strip -plibyang@PACKAGE_PART_NAME@ --dbg-package=libyang@PACKAGE_PART_NAME@-dbg dh_strip -plibyang-cpp@PACKAGE_PART_NAME@ --dbg-package=libyang-cpp@PACKAGE_PART_NAME@-dbg -+ dh_strip -ppython2-yang@PACKAGE_PART_NAME@ --dbg-package=python2-yang@PACKAGE_PART_NAME@-dbg ++ #dh_strip -ppython2-yang@PACKAGE_PART_NAME@ --dbg-package=python2-yang@PACKAGE_PART_NAME@-dbg dh_strip -ppython3-yang@PACKAGE_PART_NAME@ --dbg-package=python3-yang@PACKAGE_PART_NAME@-dbg override_dh_auto_configure: @@ -57,78 +30,3 @@ index d565819e..e92fe4a1 100644 override_dh_auto_test: ctest --output-on-failure -diff --git a/packages/libyang.dsc.in b/packages/libyang.dsc.in -index fdfa402b..f75ba184 100644 ---- a/packages/libyang.dsc.in -+++ b/packages/libyang.dsc.in -@@ -1,10 +1,10 @@ - Format: 3.0 (quilt) - Source: @PACKAGE_NAME@ --Binary: @PACKAGE_NAME@, @PACKAGE_NAME@-dbg, @PACKAGE_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@, libyang-cpp@PACKAGE_PART_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@-dbg, python3-yang@PACKAGE_PART_NAME@, python3-yang@PACKAGE_PART_NAME@-dbg -+Binary: @PACKAGE_NAME@, @PACKAGE_NAME@-dbg, @PACKAGE_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@, libyang-cpp@PACKAGE_PART_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@-dbg, python3-yang@PACKAGE_PART_NAME@, python3-yang@PACKAGE_PART_NAME@-dbg python2-yang@PACKAGE_PART_NAME@, python2-yang@PACKAGE_PART_NAME@-dbg - Maintainer: CESNET - Version: @LIBYANG_VERSION@ - Architecture: any - Standards-Version: 3.8.2 - Homepage: https://github.com/CESNET/libyang - Vcs-Git: https://github.com/CESNET/libyang --Build-Depends: debhelper (>= 9), make, gcc, doxygen, cmake, pkg-config, libpcre3-dev, libcmocka-dev, python3-dev, g++, swig (>= 3.0.12) -+Build-Depends: debhelper (>= 9), make, gcc, doxygen, cmake, pkg-config, libpcre3-dev, libcmocka-dev, python3-dev, python2-dev, g++, swig (>= 3.0.12) -diff --git a/packages/libyang.spec.in b/packages/libyang.spec.in -index 6a4ac615..6939f028 100644 ---- a/packages/libyang.spec.in -+++ b/packages/libyang.spec.in -@@ -46,6 +46,8 @@ BuildRequires: python3-devel - %else - BuildRequires: python34-devel - %endif -+ -+BuildRequires: python2-devel - %endif - - Conflicts: @CONFLICT_PACKAGE_NAME@ = @LIBYANG_MAJOR_VERSION@.@LIBYANG_MINOR_VERSION@ -@@ -70,6 +72,11 @@ Summary: Binding to python - Requires: libyang-cpp@PACKAGE_PART_NAME@ = %{version}-%{release} - Requires: %{name} = %{version}-%{release} - -+%package -n python2-yang@PACKAGE_PART_NAME@ -+Summary: Binding to python -+Requires: libyang-cpp@PACKAGE_PART_NAME@ = %{version}-%{release} -+Requires: %{name} = %{version}-%{release} -+ - %description -n libyang-cpp@PACKAGE_PART_NAME@ - Bindings of libyang library to C++ language. - -@@ -80,6 +87,10 @@ Headers of bindings to c++ language. - Bindings of libyang library to python language. - %endif - -+%description -n python2-yang@PACKAGE_PART_NAME@ -+Bindings of libyang library to python language. -+%endif -+ - %description devel - Headers of libyang library. - -@@ -167,4 +178,9 @@ make DESTDIR=%{buildroot} install - %{_libdir}/python* - %endif - -+%files -n python2-yang@PACKAGE_PART_NAME@ -+%defattr(-,root,root) -+%{_libdir}/python* -+%endif -+ - %changelog -diff --git a/packages/local-deb.sh.in b/packages/local-deb.sh.in -index 057bbc67..4318a49d 100755 ---- a/packages/local-deb.sh.in -+++ b/packages/local-deb.sh.in -@@ -18,6 +18,7 @@ fi - cp "@PROJECT_SOURCE_DIR@/packages/debian.libyang-dev.install" debian/@PACKAGE_NAME@-dev.install - cp "@PROJECT_SOURCE_DIR@/packages/debian.libyang-cpp.install" debian/libyang-cpp@PACKAGE_PART_NAME@.install - cp "@PROJECT_SOURCE_DIR@/packages/debian.libyang-cpp-dev.install" debian/libyang-cpp@PACKAGE_PART_NAME@-dev.install -+cp "@PROJECT_SOURCE_DIR@/packages/debian.python2-yang.install" debian/python2-yang@PACKAGE_PART_NAME@.install - cp "@PROJECT_SOURCE_DIR@/packages/debian.python3-yang.install" debian/python3-yang@PACKAGE_PART_NAME@.install - echo -e "@PACKAGE_NAME@ (@LIBYANG_VERSION@) stable; urgency=low\n" >debian/changelog - git log -10 --pretty=format:' * %s (%aN)%n' 2>/dev/null >>debian/changelog || echo -e " * unknown changes \n" >>debian/changelog diff --git a/src/libyang/patch/swig.patch b/src/libyang/patch/swig.patch index a6f798c18224..d2b4080d368d 100644 --- a/src/libyang/patch/swig.patch +++ b/src/libyang/patch/swig.patch @@ -29,7 +29,7 @@ index 4cee36ec..0baa69ab 100644 + message(WARNING "Can't create a static Python module") else() - message(WARNING "Sysrepo supports Python 2.x and Python 3.x") -+ set(GEN_PYTHON_VERSION 2 3) ++ set(GEN_PYTHON_VERSION 3) + foreach(CUR_PYTHON_VERSION ${GEN_PYTHON_VERSION}) + message(STATUS "Python version ${CUR_PYTHON_VERSION} was selected") + @@ -99,7 +99,7 @@ index 994b1234..5d18b8bf 100644 -swig_link_libraries(${PYTHON_SWIG_BINDING} ${PYTHON_LIBRARIES} libyang-cpp) +swig_link_libraries(${PYTHON_SWIG_TARGET} ${PYTHON_LIBRARIES} libyang-cpp) + -+set_target_properties(_${PYTHON_SWIG_TARGET} PROPERTIES OUTPUT_NAME "_yang${PYTHON_EXT_SUFFIX}" SUFFIX "") ++set_target_properties(_${PYTHON_SWIG_TARGET} PROPERTIES OUTPUT_NAME "_yang") # Generate header with SWIG run-time functions execute_process(COMMAND ${SWIG_EXECUTABLE} -python -external-runtime ${CMAKE_CURRENT_BINARY_DIR}/swigpyrun.h) diff --git a/src/monit/patch/0003-fix-yacc-header-file-naming.patch b/src/monit/patch/0003-fix-yacc-header-file-naming.patch new file mode 100644 index 000000000000..835e7ee4a1c9 --- /dev/null +++ b/src/monit/patch/0003-fix-yacc-header-file-naming.patch @@ -0,0 +1,59 @@ +Fix header file names for lexer files + +From: Saikrishna Arcot + +Due to changes in yacc, the header file that it generates (y.tab.h) is now +actually used by y.tab.c, and needs to exist. Change the code that generates +and moves this file to fix this issue. +--- + Makefile.am | 16 +++++++--------- + src/l.l | 2 +- + 2 files changed, 8 insertions(+), 10 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index d321e3a..d276a6f 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -95,7 +95,7 @@ monit_LDFLAGS = -static $(EXTLDFLAGS) + + man_MANS = monit.1 + +-BUILT_SOURCES = src/lex.yy.c src/y.tab.c src/tokens.h ++BUILT_SOURCES = src/lex.yy.c src/y.tab.c src/y.tab.h + + CLEANFILES = src/y.output + DISTCLEANFILES = *~ $(BUILT_SOURCES) +@@ -145,14 +145,12 @@ monit.1: doc/monit.pod + # Grammar rules + # ------------- + +-src/y.tab.c src/tokens.h: src/p.y +- $(YACC) $(YACCFLAGS) -o src/y.tab.c $< +- -echo "#include " > src/.y.tab.c +- -cat src/y.tab.c >> src/.y.tab.c +- -mv src/.y.tab.c src/y.tab.c +- -mv src/y.tab.h src/tokens.h ++src/y.tab.c src/y.tab.h: run-yacc + +-src/lex.yy.c: src/l.l +- $(FLEX) $(FLEXFLAGS) -o$@ $< ++.INTERMEDIATE: run-yacc ++run-yacc: src/p.y ++ $(YACC) $(YACCFLAGS) -o src/y.tab.c $< + ++src/lex.yy.c: src/l.l ++ $(FLEX) $(FLEXFLAGS) -o$@ $< + +diff --git a/src/l.l b/src/l.l +index fee015c..3047800 100644 +--- a/src/l.l ++++ b/src/l.l +@@ -50,7 +50,7 @@ + #endif + + #include "monit.h" +-#include "tokens.h" ++#include "y.tab.h" + + // libmonit + #include "util/Str.h" diff --git a/src/monit/patch/series b/src/monit/patch/series index f5534d0f554f..17bda755059d 100644 --- a/src/monit/patch/series +++ b/src/monit/patch/series @@ -1,3 +1,4 @@ # This series applies on GIT commit dc9bc1c949125140d967edfc598dfad47eedc552 0001-used_system_memory_sysdep-Use-MemAvailable-value-if-.patch 0002-change_monit_alert_log_error.patch +0003-fix-yacc-header-file-naming.patch diff --git a/src/ntp/Makefile b/src/ntp/Makefile index 6d96010be156..0a821ad6ca52 100644 --- a/src/ntp/Makefile +++ b/src/ntp/Makefile @@ -10,15 +10,15 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : # Get ntp release, debian files wget http://deb.debian.org/debian/pool/main/n/ntp/ntp_$(NTP_VERSION).orig.tar.xz - wget http://deb.debian.org/debian/pool/main/n/ntp/ntp_$(NTP_VERSION)-4.debian.tar.xz + wget http://deb.debian.org/debian/pool/main/n/ntp/ntp_$(NTP_VERSION)-1.debian.tar.xz # UnTar ntp release xzcat ntp_$(NTP_VERSION).orig.tar.xz | tar -xvf - - pushd ./ntp-4.2.8p12 + pushd ./ntp-4.2.8p15 # UnTar debian files - xzcat ../ntp_$(NTP_VERSION)-4.debian.tar.xz | tar -xvf - + xzcat ../ntp_$(NTP_VERSION)-1.debian.tar.xz | tar -xvf - # Add the additional patch cp ../patch/bug1970-UNLINK_EXPR_SLIST_empty_list.patch debian/patches/ diff --git a/src/ntp/patch/changelog b/src/ntp/patch/changelog index 8fa477cca266..ce5fb6096276 100644 --- a/src/ntp/patch/changelog +++ b/src/ntp/patch/changelog @@ -1,10 +1,10 @@ -ntp (1:4.2.8p12+dfsg-4+deb10u2) stretch; urgency=medium +ntp (1:4.2.8p15+dfsg-1+deb10u2) bullseye; urgency=medium * Adjust the ENOBUFS syslog level on the Netlink routing to LOG_WARNING. -- Arun Barboza Mon, 09 Sep 2019 10:15:35 -0700 -ntp (1:4.2.8p12+dfsg-4+deb10u1) stretch; urgency=medium +ntp (1:4.2.8p15+dfsg-1+deb10u1) bullseye; urgency=medium * Apply Bug1970 fix for UNLINK_EXPR_SLIST_empty_list from dev branch. diff --git a/src/openssh/Makefile b/src/openssh/Makefile index 0fd8642b1285..91d4fd52bcf7 100644 --- a/src/openssh/Makefile +++ b/src/openssh/Makefile @@ -6,20 +6,19 @@ MAIN_TARGET = openssh-server_$(OPENSSH_VERSION)_$(CONFIGURED_ARCH).deb DERIVED_TARGETS = openssh-server-dbgsym_$(OPENSSH_VERSION)_$(CONFIGURED_ARCH).deb $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : - # Obtain openssh: https://salsa.debian.org/ssh-team/openssh/-/tree/debian/1%257.9p1-10+deb10u2 + # Obtain openssh: https://salsa.debian.org/ssh-team/openssh/-/tree/debian/1%258.4p1-5 rm -rf ./openssh-server git clone https://salsa.debian.org/ssh-team/openssh.git openssh-server pushd ./openssh-server - # Check out tag: debian/1%7.9p1-10+deb10u2 - git checkout -b openssh-src -f 6d9ca74c48d9911342c6ca5aaac8a25974fa2619 + # Check out tag: debian/1%8.4p1-5 + git checkout -b openssh-src -f debian/1\%$(OPENSSH_VERSION) # Apply patch series stg init stg import -s ../patch/series # Build package - sudo http_proxy=$(http_proxy) apt-get -y build-dep openssh dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $(SONIC_DPKG_ADMINDIR) popd diff --git a/src/snmpd/Makefile b/src/snmpd/Makefile index 50d0303540d6..35fc1d38ce9f 100644 --- a/src/snmpd/Makefile +++ b/src/snmpd/Makefile @@ -3,6 +3,18 @@ SHELL = /bin/bash .SHELLFLAGS += -e MAIN_TARGET = libsnmp-base_$(SNMPD_VERSION_FULL)_all.deb +ifneq (,$(findstring 5.9,$(SNMPD_VERSION))) +DERIVED_TARGETS = snmptrapd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + snmp_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + snmpd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + snmp-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + snmpd-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libsnmp40_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libsnmp40-dbgsym_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libsnmp-dev_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + libsnmp-perl_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + tkmib_$(SNMPD_VERSION_FULL)_all.deb +else DERIVED_TARGETS = snmptrapd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ snmp_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ snmpd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ @@ -13,18 +25,33 @@ DERIVED_TARGETS = snmptrapd_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ libsnmp-dev_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ libsnmp-perl_$(SNMPD_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ tkmib_$(SNMPD_VERSION_FULL)_all.deb +endif $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : rm -rf net-snmp-$(SNMPD_VERSION) # download debian net-snmp +ifneq (,$(findstring 5.9,$(SNMPD_VERSION))) + dget -u https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_$(SNMPD_VERSION)-3.dsc +else dget -u https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_$(SNMPD_VERSION_FULL).dsc +endif pushd net-snmp-$(SNMPD_VERSION) git init git add -f * git commit -m "unmodified snmpd source" +ifneq (,$(findstring 5.9,$(SNMPD_VERSION))) + # Looks like Debian did a binNMU (binary non-maintainer upload), so the latest dsc + # file that we can get doesn't actually have the exact version number that Debian's + # repos have. + DEBEMAIL="$(shell git config --get user.name) <$(shell git config --get user.email)>" dch --bin-nmu "Rebuild against perl 5.32.0" + dch -r "" + git add debian/changelog + git commit -m "fix package version" +endif + # Apply patches stg init stg import -s ../patch-$(SNMPD_VERSION)/series diff --git a/src/snmpd/patch-5.9+dfsg/0001-SNMP-Stop-spamming-logs-with-statfs-permission-denie.patch b/src/snmpd/patch-5.9+dfsg/0001-SNMP-Stop-spamming-logs-with-statfs-permission-denie.patch new file mode 100644 index 000000000000..9a1f23c0b483 --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0001-SNMP-Stop-spamming-logs-with-statfs-permission-denie.patch @@ -0,0 +1,27 @@ +From a1edbce39e46b5c8bd5bd7db17fc11fa30e7dd73 Mon Sep 17 00:00:00 2001 +From: pavel-shirshov +Date: Mon, 27 Aug 2018 16:50:16 +0800 +Subject: [PATCH] [SNMP] Stop spamming logs with statfs permission denied log + message #1668 + +--- + agent/mibgroup/hardware/fsys/fsys_mntctl.c | 2 -- + agent/mibgroup/hardware/fsys/fsys_mntent.c | 2 -- + 2 files changed, 4 deletions(-) + +diff --git a/agent/mibgroup/hardware/fsys/fsys_mntctl.c b/agent/mibgroup/hardware/fsys/fsys_mntctl.c +index 9fbb068..adc38d6 100644 +--- a/agent/mibgroup/hardware/fsys/fsys_mntctl.c ++++ b/agent/mibgroup/hardware/fsys/fsys_mntctl.c +@@ -163,8 +163,6 @@ netsnmp_fsys_arch_load( void ) + continue; + + if ( statfs( entry->path, &stat_buf ) < 0 ) { +- snprintf( tmpbuf, sizeof(tmpbuf), "Cannot statfs %s", entry->path ); +- snmp_log_perror( tmpbuf ); + continue; + } + entry->units = stat_buf.f_bsize; +-- +2.7.4 + diff --git a/src/snmpd/patch-5.9+dfsg/0002-at.c-properly-check-return-status-from-realloc.-Than.patch b/src/snmpd/patch-5.9+dfsg/0002-at.c-properly-check-return-status-from-realloc.-Than.patch new file mode 100644 index 000000000000..ceb0c68352bf --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0002-at.c-properly-check-return-status-from-realloc.-Than.patch @@ -0,0 +1,31 @@ +From e370973f273ffc1b32673bc94c5a46f75a846d82 Mon Sep 17 00:00:00 2001 +From: Niels Baggesen +Date: Wed, 31 Aug 2016 21:43:36 +0200 +Subject: [PATCH] at.c: properly check return status from realloc. Thanks to + Daniel Eiland (bug 2678) + +--- + agent/mibgroup/mibII/at.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/agent/mibgroup/mibII/at.c b/agent/mibgroup/mibII/at.c +index f57ba2a..a73fb8c 100644 +--- a/agent/mibgroup/mibII/at.c ++++ b/agent/mibgroup/mibII/at.c +@@ -638,11 +638,12 @@ ARP_Scan_Init(void) + struct arptab *newtab = (struct arptab *) + realloc(at, (sizeof(struct arptab) * + (arptab_curr_max_size + ARP_CACHE_INCR))); +- if (newtab == at) { ++ if (newtab == NULL) { + snmp_log(LOG_ERR, + "Error allocating more space for arpcache. " + "Cache will continue to be limited to %d entries", + arptab_curr_max_size); ++ newtab = at; + break; + } else { + arptab_curr_max_size += ARP_CACHE_INCR; +-- +2.7.4 + diff --git a/src/snmpd/patch-5.9+dfsg/0003-CHANGES-BUG-2743-snmpd-crashes-when-receiving-a-GetN.patch b/src/snmpd/patch-5.9+dfsg/0003-CHANGES-BUG-2743-snmpd-crashes-when-receiving-a-GetN.patch new file mode 100644 index 000000000000..cdf9b94be934 --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0003-CHANGES-BUG-2743-snmpd-crashes-when-receiving-a-GetN.patch @@ -0,0 +1,36 @@ +From 2170e345858738e65d3156a49d3186e4a9288821 Mon Sep 17 00:00:00 2001 +From: Zhenggen Xu +Date: Fri, 12 Oct 2018 17:13:54 -0700 +Subject: [PATCH] Subject: [PATCH] CHANGES: BUG: 2743: snmpd crashes when + receiving a GetNext PDU with multiple Varbinds + +skip out-of-range varbinds when calling next handler +--- + agent/helpers/table.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/agent/helpers/table.c b/agent/helpers/table.c +index 882e84c..b943d6e 100644 +--- a/agent/helpers/table.c ++++ b/agent/helpers/table.c +@@ -406,6 +406,8 @@ table_helper_handler(netsnmp_mib_handler *handler, + if (reqinfo->mode == MODE_GET) + table_helper_cleanup(reqinfo, request, + SNMP_NOSUCHOBJECT); ++ else ++ request->processed = 1; /* skip if next handler called */ + continue; + } + +@@ -483,6 +485,8 @@ table_helper_handler(netsnmp_mib_handler *handler, + #endif /* NETSNMP_NO_WRITE_SUPPORT */ + table_helper_cleanup(reqinfo, request, + SNMP_NOSUCHOBJECT); ++ else ++ request->processed = 1; /* skip if next handler called */ + continue; + } + /* +-- +2.18.0 + diff --git a/src/snmpd/patch-5.9+dfsg/0006-From-Jiri-Cervenka-snmpd-Fixed-agentx-crashing-and-or-freezing-on-timeout.patch b/src/snmpd/patch-5.9+dfsg/0006-From-Jiri-Cervenka-snmpd-Fixed-agentx-crashing-and-or-freezing-on-timeout.patch new file mode 100644 index 000000000000..d11a9d6d75e9 --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0006-From-Jiri-Cervenka-snmpd-Fixed-agentx-crashing-and-or-freezing-on-timeout.patch @@ -0,0 +1,211 @@ +From a5782d0673044ad0c621daed7975f53238bb038e Mon Sep 17 00:00:00 2001 +From: Renuka Manavalan +Date: Tue, 10 Sep 2019 17:51:45 +0000 +Subject: [PATCH] Patch from SourceForge: net-snmp commit #793d59 Avoids snmpd + crash when sub agent timesout. + +--- + agent/mibgroup/agentx/master_admin.c | 1 + + agent/snmp_agent.c | 81 ++++++++++++++++++---------- + include/net-snmp/agent/snmp_agent.h | 5 ++ + 3 files changed, 60 insertions(+), 27 deletions(-) + +diff --git a/agent/mibgroup/agentx/master_admin.c b/agent/mibgroup/agentx/master_admin.c +index 4dc1aa7..8c1d194 100644 +--- a/agent/mibgroup/agentx/master_admin.c ++++ b/agent/mibgroup/agentx/master_admin.c +@@ -158,6 +158,7 @@ close_agentx_session(netsnmp_session * session, int sessid) + for (sp = session->subsession; sp != NULL; sp = sp->next) { + + if (sp->sessid == sessid) { ++ netsnmp_remove_delegated_requests_for_session(sp); + unregister_mibs_by_session(sp); + unregister_index_by_session(sp); + unregister_sysORTable_by_session(sp); +diff --git a/agent/snmp_agent.c b/agent/snmp_agent.c +index b96d650..7cacd1a 100644 +--- a/agent/snmp_agent.c ++++ b/agent/snmp_agent.c +@@ -1409,6 +1409,7 @@ init_agent_snmp_session(netsnmp_session * session, netsnmp_pdu *pdu) + asp->treecache_num = -1; + asp->treecache_len = 0; + asp->reqinfo = SNMP_MALLOC_TYPEDEF(netsnmp_agent_request_info); ++ asp->flags = SNMP_AGENT_FLAGS_NONE; + DEBUGMSGTL(("verbose:asp", "asp %p reqinfo %p created\n", + asp, asp->reqinfo)); + +@@ -1457,6 +1458,9 @@ netsnmp_check_for_delegated(netsnmp_agent_session *asp) + + if (NULL == asp->treecache) + return 0; ++ ++ if (asp->flags & SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS) ++ return 0; + + for (i = 0; i <= asp->treecache_num; i++) { + for (request = asp->treecache[i].requests_begin; request; +@@ -1535,39 +1539,48 @@ int + netsnmp_remove_delegated_requests_for_session(netsnmp_session *sess) + { + netsnmp_agent_session *asp; +- int count = 0; ++ int total_count = 0; + + for (asp = agent_delegated_list; asp; asp = asp->next) { + /* + * check each request + */ ++ int i; ++ int count = 0; + netsnmp_request_info *request; +- for(request = asp->requests; request; request = request->next) { +- /* +- * check session +- */ +- netsnmp_assert(NULL!=request->subtree); +- if(request->subtree->session != sess) +- continue; ++ for (i = 0; i <= asp->treecache_num; i++) { ++ for (request = asp->treecache[i].requests_begin; request; ++ request = request->next) { ++ /* ++ * check session ++ */ ++ netsnmp_assert(NULL!=request->subtree); ++ if(request->subtree->session != sess) ++ continue; + +- /* +- * matched! mark request as done +- */ +- netsnmp_request_set_error(request, SNMP_ERR_GENERR); +- ++count; ++ /* ++ * matched! mark request as done ++ */ ++ netsnmp_request_set_error(request, SNMP_ERR_GENERR); ++ ++count; ++ } ++ } ++ if (count) { ++ asp->flags |= SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS; ++ total_count += count; + } + } + + /* + * if we found any, that request may be finished now + */ +- if(count) { ++ if(total_count) { + DEBUGMSGTL(("snmp_agent", "removed %d delegated request(s) for session " +- "%8p\n", count, sess)); +- netsnmp_check_outstanding_agent_requests(); ++ "%8p\n", total_count, sess)); ++ netsnmp_check_delegated_requests(); + } + +- return count; ++ return total_count; + } + + int +@@ -2739,19 +2752,11 @@ handle_var_requests(netsnmp_agent_session *asp) + return final_status; + } + +-/* +- * loop through our sessions known delegated sessions and check to see +- * if they've completed yet. If there are no more delegated sessions, +- * check for and process any queued requests +- */ + void +-netsnmp_check_outstanding_agent_requests(void) ++netsnmp_check_delegated_requests(void) + { + netsnmp_agent_session *asp, *prev_asp = NULL, *next_asp = NULL; + +- /* +- * deal with delegated requests +- */ + for (asp = agent_delegated_list; asp; asp = next_asp) { + next_asp = asp->next; /* save in case we clean up asp */ + if (!netsnmp_check_for_delegated(asp)) { +@@ -2790,6 +2795,23 @@ netsnmp_check_outstanding_agent_requests(void) + prev_asp = asp; + } + } ++} ++ ++ ++/* ++ * loop through our sessions known delegated sessions and check to see ++ * if they've completed yet. If there are no more delegated sessions, ++ * check for and process any queued requests ++ */ ++void ++netsnmp_check_outstanding_agent_requests(void) ++{ ++ netsnmp_agent_session *asp; ++ ++ /* ++ * deal with delegated requests ++ */ ++ netsnmp_check_delegated_requests(); + + /* + * if we are processing a set and there are more delegated +@@ -2819,7 +2841,8 @@ netsnmp_check_outstanding_agent_requests(void) + + netsnmp_processing_set = netsnmp_agent_queued_list; + DEBUGMSGTL(("snmp_agent", "SET request remains queued while " +- "delegated requests finish, asp = %8p\n", asp)); ++ "delegated requests finish, asp = %8p\n", ++ agent_delegated_list)); + break; + } + #endif /* NETSNMP_NO_WRITE_SUPPORT */ +@@ -2880,6 +2903,10 @@ check_delayed_request(netsnmp_agent_session *asp) + case SNMP_MSG_GETBULK: + case SNMP_MSG_GETNEXT: + netsnmp_check_all_requests_status(asp, 0); ++ if (asp->flags & SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS) { ++ DEBUGMSGTL(("snmp_agent","canceling next walk for asp %p\n", asp)); ++ break; ++ } + handle_getnext_loop(asp); + if (netsnmp_check_for_delegated(asp) && + netsnmp_check_transaction_id(asp->pdu->transid) != +diff --git a/include/net-snmp/agent/snmp_agent.h b/include/net-snmp/agent/snmp_agent.h +index aad8837..43f4fff 100644 +--- a/include/net-snmp/agent/snmp_agent.h ++++ b/include/net-snmp/agent/snmp_agent.h +@@ -32,6 +32,9 @@ extern "C" { + #define SNMP_MAX_PDU_SIZE 64000 /* local constraint on PDU size sent by agent + * (see also SNMP_MAX_MSG_SIZE in snmp_api.h) */ + ++#define SNMP_AGENT_FLAGS_NONE 0x0 ++#define SNMP_AGENT_FLAGS_CANCEL_IN_PROGRESS 0x1 ++ + /* + * If non-zero, causes the addresses of peers to be logged when receptions + * occur. +@@ -205,6 +208,7 @@ extern "C" { + int treecache_num; /* number of current cache entries */ + netsnmp_cachemap *cache_store; + int vbcount; ++ int flags; + } netsnmp_agent_session; + + /* +@@ -240,6 +244,7 @@ extern "C" { + int init_master_agent(void); + void shutdown_master_agent(void); + int agent_check_and_process(int block); ++ void netsnmp_check_delegated_requests(void); + void netsnmp_check_outstanding_agent_requests(void); + + int netsnmp_request_set_error(netsnmp_request_info *request, +-- +2.17.1 + diff --git a/src/snmpd/patch-5.9+dfsg/0007-Linux-VRF-5.7.3-Support.patch b/src/snmpd/patch-5.9+dfsg/0007-Linux-VRF-5.7.3-Support.patch new file mode 100755 index 000000000000..48d13d7f62d6 --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0007-Linux-VRF-5.7.3-Support.patch @@ -0,0 +1,799 @@ +From 49ce7fc078dfa8c1a1688e05de4e2d151dbcd76a Mon Sep 17 00:00:00 2001 +From: Harish Venkatraman +Date: Wed, 17 Oct 2018 15:22:04 -0700 +Subject: [PATCH] Linux-VRF 5.7.3 Support from https://sourceforge.net/p/net-snmp/patches/1376/ + +Sourceforge commits related to this consolidated patch are given below. +https://sourceforge.net/p/net-snmp/code/ci/0b637fea62c7b6dc467b94206d0bd2dec6f912ca/ +https://sourceforge.net/p/net-snmp/code/ci/19ba7b0a6b56d201a8563fe6505cd82e313c1c9c/ +https://sourceforge.net/p/net-snmp/code/ci/76336fb63bb74b4dede5dda5c14fb8cf2d60be8e/ +https://sourceforge.net/p/net-snmp/code/ci/c7398de4122102b3250e6dac7c09dbc5d09f1840/ +https://sourceforge.net/p/net-snmp/code/ci/0831ed64a39a34dc040eabe39d0229b07fa2a8a5/ +https://sourceforge.net/p/net-snmp/code/ci/62f6babcc7cfc54c79b442b8a7f45662b4ddc807/ +https://sourceforge.net/p/net-snmp/code/ci/313949522c4d0ddfeac72195fa63512955d9eb28/ + + +This consolidated patch adds native support for VRFs to snmpd. NCLU patches in this same +CCR will be added shortly. The VRF is specified for both listening +addresses as well as TRAP sinks with the 'ipaddr%iface' syntax: + +agentAddress 10.0.1.7%mgmt,22.22.22.22%red +trapsink 10.0.1.9%mgmt +trap2sink 22.22.22.25%red + +The SO_BINDTODEVICE socket option is used to bind a VRF to a particular +socket. + +Testing done included VRFs as well as non-VRF functionality with traps +(v1, v2, and v3) + +--- + agent/agent_trap.c | 20 ++++++++++-- + agent/mibgroup/agentx/master.c | 2 +- + agent/mibgroup/agentx/subagent.c | 2 +- + agent/mibgroup/target/target.c | 3 +- + agent/snmp_agent.c | 21 ++++++++++++- + apps/agentxtrap.c | 2 +- + apps/snmptrap.c | 2 +- + apps/snmptrapd.c | 2 +- + include/net-snmp/library/snmpTCPDomain.h | 2 +- + include/net-snmp/library/snmpUDPBaseDomain.h | 2 +- + include/net-snmp/library/snmpUDPDomain.h | 2 +- + include/net-snmp/library/snmpUDPIPv4BaseDomain.h | 2 +- + include/net-snmp/library/snmpUDPIPv6Domain.h | 2 +- + include/net-snmp/library/snmp_transport.h | 19 +++++++----- + snmplib/snmp_api.c | 4 +-- + snmplib/snmp_transport.c | 26 ++++++++-------- + snmplib/transports/snmpAliasDomain.c | 6 ++-- + snmplib/transports/snmpTCPDomain.c | 16 +++++++--- + snmplib/transports/snmpUDPBaseDomain.c | 39 ++++++++++++++++++------ + snmplib/transports/snmpUDPDomain.c | 15 ++++----- + snmplib/transports/snmpUDPIPv4BaseDomain.c | 4 +-- + snmplib/transports/snmpUDPIPv6Domain.c | 19 ++++----- + snmplib/transports/snmpUnixDomain.c | 5 +-- + 23 files changed, 141 insertions(+), 76 deletions(-) + +diff --git a/agent/agent_trap.c b/agent/agent_trap.c +index 080b8bf..c488ac9 100644 +--- a/agent/agent_trap.c ++++ b/agent/agent_trap.c +@@ -226,6 +226,7 @@ create_trap_session2(const char *sink, const char* sinkport, + { + netsnmp_transport *t; + netsnmp_session session, *sesp; ++ char *iface; + + memset(&session, 0, sizeof(netsnmp_session)); + session.version = version; +@@ -250,7 +251,14 @@ create_trap_session2(const char *sink, const char* sinkport, + ((0 == strcmp("localhost",sink)) || (0 == strcmp("127.0.0.1",sink)))) + session.localname = strdup("localhost"); + +- t = netsnmp_tdomain_transport_full("snmptrap", sink, 0, NULL, sinkport); ++ /* ++ * if given an iface (ip%iface) in sink, send the iface too ++ */ ++ iface = strchr(sink, '%'); ++ if (iface) ++ *iface++ = '\0'; ++ ++ t = netsnmp_tdomain_transport_full("snmptrap", sink, 0, NULL, sinkport, iface); + if (t != NULL) { + sesp = snmp_add(&session, t, NULL, NULL); + +@@ -1219,6 +1227,7 @@ snmpd_parse_config_trapsess(const char *word, char *cptr) + netsnmp_session session, *ss; + netsnmp_transport *transport; + size_t len; ++ char *iface; + + /* + * inform or trap? default to trap +@@ -1240,7 +1249,14 @@ snmpd_parse_config_trapsess(const char *word, char *cptr) + NETSNMP_PARSE_ARGS_NOLOGGING | + NETSNMP_PARSE_ARGS_NOZERO); + +- transport = netsnmp_transport_open_client("snmptrap", session.peername); ++ /* ++ * if iface is given in peer, we will need to bind to that iface ++ */ ++ iface = strchr(session.peername, '%'); ++ if (iface) ++ *iface++ = '\0'; ++ ++ transport = netsnmp_transport_open_client("snmptrap", session.peername, iface); + if (transport == NULL) { + config_perror("snmpd: failed to parse this line."); + return; +diff --git a/agent/mibgroup/agentx/master.c b/agent/mibgroup/agentx/master.c +index baeebaf..6733e7f 100644 +--- a/agent/mibgroup/agentx/master.c ++++ b/agent/mibgroup/agentx/master.c +@@ -126,7 +126,7 @@ real_init_master(void) + sess.remote_port = 0; + sess.callback = handle_master_agentx_packet; + errno = 0; +- t = netsnmp_transport_open_server("agentx", sess.peername); ++ t = netsnmp_transport_open_server("agentx", sess.peername, NULL); + if (t == NULL) { + /* + * diagnose snmp_open errors with the input netsnmp_session +diff --git a/agent/mibgroup/agentx/subagent.c b/agent/mibgroup/agentx/subagent.c +index 1f9d31c..6d38a34 100644 +--- a/agent/mibgroup/agentx/subagent.c ++++ b/agent/mibgroup/agentx/subagent.c +@@ -843,7 +843,7 @@ subagent_open_master_session(void) + + agentx_socket = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID, + NETSNMP_DS_AGENT_X_SOCKET); +- t = netsnmp_transport_open_client("agentx", agentx_socket); ++ t = netsnmp_transport_open_client("agentx", agentx_socket, NULL); + if (t == NULL) { + /* + * Diagnose snmp_open errors with the input +diff --git a/agent/mibgroup/target/target.c b/agent/mibgroup/target/target.c +index 5619e35..6f58817 100644 +--- a/agent/mibgroup/target/target.c ++++ b/agent/mibgroup/target/target.c +@@ -154,7 +154,8 @@ get_target_sessions(char *taglist, TargetFilterFunction * filterfunct, + tAddress, + targaddrs-> + tAddressLen, +- 0); ++ 0, ++ NULL); + if (t == NULL) { + DEBUGMSGTL(("target_sessions", + "bad dest \"")); +diff --git a/agent/snmp_agent.c b/agent/snmp_agent.c +index b96d650..281e8b2 100644 +--- a/agent/snmp_agent.c ++++ b/agent/snmp_agent.c +@@ -1270,6 +1270,7 @@ init_master_agent(void) + char *cptr; + char *buf = NULL; + char *st; ++ char *iface; + + /* default to a default cache size */ + netsnmp_set_lookup_cache_size(-1); +@@ -1318,6 +1319,9 @@ init_master_agent(void) + * AAL5PVC:itf.vpi.vci (if supported) + * IPX:[network]:node[/port] (if supported) + * ++ * ++ * New format to specify an interface for binding along with IP address ++ * address%iface + */ + + cptr = st; +@@ -1334,7 +1338,22 @@ init_master_agent(void) + "requested\n")); + break; + } +- transport = netsnmp_transport_open_server("snmp", cptr); ++ ++ /* ++ * at some point, we may want to add the special listendevice ++ * keyword support. Not sure how to interact with ip%iface ++ iface = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID, ++ NETSNMP_DS_AGENT_LISTEN_DEVICE); ++ */ ++ ++ /* Look for %iface so we can send along a specific interface to ++ setsockopt SO_BINDTODEVICE later. */ ++ iface = strchr(cptr, '%'); ++ if (iface) ++ *iface++ = '\0'; ++ ++ transport = netsnmp_transport_open_server("snmp", cptr, iface); ++ + + if (transport == NULL) { + snmp_log(LOG_ERR, "Error opening specified endpoint \"%s\"\n", +diff --git a/apps/agentxtrap.c b/apps/agentxtrap.c +index 4df423c..ebd81a3 100644 +--- a/apps/agentxtrap.c ++++ b/apps/agentxtrap.c +@@ -231,7 +231,7 @@ ConnectingEntry(UNUSED tState self) + + if(!(t = netsnmp_transport_open_client( + "agentx", netsnmp_ds_get_string( +- NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCKET)))) { ++ NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCKET), NULL))) { + snmp_log(LOG_ERR, "Failed to connect to AgentX server\n"); + change_state(&Exit); + } else if(!(sess = snmp_sess_add_ex( +diff --git a/apps/snmptrap.c b/apps/snmptrap.c +index 7c086db..28d5257 100644 +--- a/apps/snmptrap.c ++++ b/apps/snmptrap.c +@@ -215,7 +215,7 @@ main(int argc, char *argv[]) + } + + ss = snmp_add(&session, +- netsnmp_transport_open_client("snmptrap", session.peername), ++ netsnmp_transport_open_client("snmptrap", session.peername, NULL), + NULL, NULL); + if (ss == NULL) { + /* +diff --git a/apps/snmptrapd.c b/apps/snmptrapd.c +index bce0d47..122a502 100644 +--- a/apps/snmptrapd.c ++++ b/apps/snmptrapd.c +@@ -1186,7 +1186,7 @@ main(int argc, char *argv[]) + *sep = 0; + } + +- transport = netsnmp_transport_open_server("snmptrap", cp); ++ transport = netsnmp_transport_open_server("snmptrap", cp, NULL); + if (transport == NULL) { + snmp_log(LOG_ERR, "couldn't open %s -- errno %d (\"%s\")\n", + cp, errno, strerror(errno)); +diff --git a/include/net-snmp/library/snmpTCPDomain.h b/include/net-snmp/library/snmpTCPDomain.h +index c45856b..3b1fef5 100644 +--- a/include/net-snmp/library/snmpTCPDomain.h ++++ b/include/net-snmp/library/snmpTCPDomain.h +@@ -25,7 +25,7 @@ extern "C" { + #define TRANSPORT_DOMAIN_TCP_IP 1,3,6,1,2,1,100,1,5 + NETSNMP_IMPORT oid netsnmp_snmpTCPDomain[]; + +-netsnmp_transport *netsnmp_tcp_transport(struct sockaddr_in *addr, int local); ++netsnmp_transport *netsnmp_tcp_transport(struct sockaddr_in *addr, int local, char *iface); + + /* + * "Constructor" for transport domain object. +diff --git a/include/net-snmp/library/snmpUDPBaseDomain.h b/include/net-snmp/library/snmpUDPBaseDomain.h +index b9d2c34..0ab2fe5 100644 +--- a/include/net-snmp/library/snmpUDPBaseDomain.h ++++ b/include/net-snmp/library/snmpUDPBaseDomain.h +@@ -18,7 +18,7 @@ extern "C" { + /* + * Prototypes + */ +- void _netsnmp_udp_sockopt_set(int fd, int local); ++ void _netsnmp_udp_sockopt_set(int fd, int local, char *iface); + int netsnmp_udpbase_recv(netsnmp_transport *t, void *buf, int size, + void **opaque, int *olength); + int netsnmp_udpbase_send(netsnmp_transport *t, void *buf, int size, +diff --git a/include/net-snmp/library/snmpUDPDomain.h b/include/net-snmp/library/snmpUDPDomain.h +index 3a09dfd..e402cd8 100644 +--- a/include/net-snmp/library/snmpUDPDomain.h ++++ b/include/net-snmp/library/snmpUDPDomain.h +@@ -18,7 +18,7 @@ extern "C" { + config_require(UDPIPv4Base) + #include + +-netsnmp_transport *netsnmp_udp_transport(struct sockaddr_in *addr, int local); ++netsnmp_transport *netsnmp_udp_transport(struct sockaddr_in *addr, int local, char*iface); + + + /* +diff --git a/include/net-snmp/library/snmpUDPIPv4BaseDomain.h b/include/net-snmp/library/snmpUDPIPv4BaseDomain.h +index 6f7f2c2..8d3e906 100644 +--- a/include/net-snmp/library/snmpUDPIPv4BaseDomain.h ++++ b/include/net-snmp/library/snmpUDPIPv4BaseDomain.h +@@ -25,7 +25,7 @@ extern "C" { + */ + + netsnmp_transport *netsnmp_udpipv4base_transport(struct sockaddr_in *addr, +- int local); ++ int local, char *iface); + + #if defined(HAVE_IP_PKTINFO) || defined(HAVE_IP_RECVDSTADDR) + int netsnmp_udpipv4_recvfrom(int s, void *buf, int len, +diff --git a/include/net-snmp/library/snmpUDPIPv6Domain.h b/include/net-snmp/library/snmpUDPIPv6Domain.h +index 83eba2c..009c510 100644 +--- a/include/net-snmp/library/snmpUDPIPv6Domain.h ++++ b/include/net-snmp/library/snmpUDPIPv6Domain.h +@@ -23,7 +23,7 @@ config_require(UDPBase) + NETSNMP_IMPORT oid netsnmp_UDPIPv6Domain[]; + + netsnmp_transport *netsnmp_udp6_transport(struct sockaddr_in6 *addr, +- int local); ++ int local, char *iface); + + + /* +diff --git a/include/net-snmp/library/snmp_transport.h b/include/net-snmp/library/snmp_transport.h +index 4162897..a3deda7 100644 +--- a/include/net-snmp/library/snmp_transport.h ++++ b/include/net-snmp/library/snmp_transport.h +@@ -206,14 +206,14 @@ typedef struct netsnmp_tdomain_s { + * The f_create_from_tstring field is deprecated, please do not use it + * for new code and try to migrate old code away from using it. + */ +- netsnmp_transport *(*f_create_from_tstring) (const char *, int); ++ netsnmp_transport *(*f_create_from_tstring) (const char *, int, char *); + +- netsnmp_transport *(*f_create_from_ostring) (const u_char *, size_t, int); ++ netsnmp_transport *(*f_create_from_ostring) (const u_char *, size_t, int, char *); + + struct netsnmp_tdomain_s *next; + + netsnmp_transport *(*f_create_from_tstring_new) (const char *, int, +- const char*); ++ const char*, char *); + + } netsnmp_tdomain; + +@@ -273,29 +273,32 @@ void netsnmp_tdomain_init(void); + NETSNMP_IMPORT + netsnmp_transport *netsnmp_tdomain_transport(const char *str, + int local, +- const char *default_domain); ++ const char *default_domain, ++ char *iface); + + NETSNMP_IMPORT + netsnmp_transport *netsnmp_tdomain_transport_full(const char *application, + const char *str, + int local, + const char *default_domain, +- const char *default_target); ++ const char *default_target, ++ char *iface); + + NETSNMP_IMPORT + netsnmp_transport *netsnmp_tdomain_transport_oid(const oid * dom, + size_t dom_len, + const u_char * o, + size_t o_len, +- int local); ++ int local, ++ char *iface); + + NETSNMP_IMPORT + netsnmp_transport* +-netsnmp_transport_open_client(const char* application, const char* str); ++netsnmp_transport_open_client(const char* application, const char* str, char *iface); + + NETSNMP_IMPORT + netsnmp_transport* +-netsnmp_transport_open_server(const char* application, const char* str); ++netsnmp_transport_open_server(const char* application, const char* str, char *iface); + + netsnmp_transport* + netsnmp_transport_open(const char* application, const char* str, int local); +diff --git a/snmplib/snmp_api.c b/snmplib/snmp_api.c +index d155c99..5128c56 100644 +--- a/snmplib/snmp_api.c ++++ b/snmplib/snmp_api.c +@@ -1557,12 +1557,12 @@ _sess_open(netsnmp_session * in_session) + transport = + netsnmp_tdomain_transport_full("snmp", in_session->peername, + in_session->local_port, "tcp,tcp6", +- NULL); ++ NULL, NULL); + } else { + transport = + netsnmp_tdomain_transport_full("snmp", in_session->peername, + in_session->local_port, "udp,udp6", +- NULL); ++ NULL, NULL); + } + + if (NULL != clientaddr_save) +diff --git a/snmplib/snmp_transport.c b/snmplib/snmp_transport.c +index ada4781..40cd631 100644 +--- a/snmplib/snmp_transport.c ++++ b/snmplib/snmp_transport.c +@@ -491,7 +491,8 @@ netsnmp_transport * + netsnmp_tdomain_transport_full(const char *application, + const char *str, int local, + const char *default_domain, +- const char *default_target) ++ const char *default_target, ++ char *iface) + { + netsnmp_tdomain *match = NULL; + const char *addr = NULL; +@@ -646,10 +647,10 @@ netsnmp_tdomain_transport_full(const char *application, + NETSNMP_LOGONCE((LOG_WARNING, + "transport domain %s uses deprecated f_create_from_tstring\n", + match->prefix[0])); +- t = match->f_create_from_tstring(addr, local); ++ t = match->f_create_from_tstring(addr, local, iface); + } + else +- t = match->f_create_from_tstring_new(addr, local, addr2); ++ t = match->f_create_from_tstring_new(addr, local, addr2, iface); + if (t) { + if (lspec) { + free(lspec[0]); +@@ -676,10 +677,11 @@ netsnmp_tdomain_transport_full(const char *application, + + netsnmp_transport * + netsnmp_tdomain_transport(const char *str, int local, +- const char *default_domain) ++ const char *default_domain, ++ char *iface) + { + return netsnmp_tdomain_transport_full("snmp", str, local, default_domain, +- NULL); ++ NULL, iface); + } + + +@@ -687,7 +689,7 @@ netsnmp_tdomain_transport(const char *str, int local, + netsnmp_transport * + netsnmp_tdomain_transport_oid(const oid * dom, + size_t dom_len, +- const u_char * o, size_t o_len, int local) ++ const u_char * o, size_t o_len, int local, char *iface) + { + netsnmp_tdomain *d; + int i; +@@ -700,7 +702,7 @@ netsnmp_tdomain_transport_oid(const oid * dom, + for (i = 0; d->prefix[i] != NULL; i++) { + if (netsnmp_oid_equals(dom, dom_len, d->name, d->name_length) == + 0) { +- return d->f_create_from_ostring(o, o_len, local); ++ return d->f_create_from_ostring(o, o_len, local, iface); + } + } + } +@@ -713,19 +715,19 @@ netsnmp_tdomain_transport_oid(const oid * dom, + netsnmp_transport* + netsnmp_transport_open(const char* application, const char* str, int local) + { +- return netsnmp_tdomain_transport_full(application, str, local, NULL, NULL); ++ return netsnmp_tdomain_transport_full(application, str, local, NULL, NULL, NULL); + } + + netsnmp_transport* +-netsnmp_transport_open_server(const char* application, const char* str) ++netsnmp_transport_open_server(const char* application, const char* str, char *iface) + { +- return netsnmp_tdomain_transport_full(application, str, 1, NULL, NULL); ++ return netsnmp_tdomain_transport_full(application, str, 1, NULL, NULL, iface); + } + + netsnmp_transport* +-netsnmp_transport_open_client(const char* application, const char* str) ++netsnmp_transport_open_client(const char* application, const char* str, char *iface) + { +- return netsnmp_tdomain_transport_full(application, str, 0, NULL, NULL); ++ return netsnmp_tdomain_transport_full(application, str, 0, NULL, NULL, iface); + } + + /** adds a transport to a linked list of transports. +diff --git a/snmplib/transports/snmpAliasDomain.c b/snmplib/transports/snmpAliasDomain.c +index eb50cad..dd7a007 100644 +--- a/snmplib/transports/snmpAliasDomain.c ++++ b/snmplib/transports/snmpAliasDomain.c +@@ -75,7 +75,7 @@ free_alias_config(void) { + + netsnmp_transport * + netsnmp_alias_create_tstring(const char *str, int local, +- const char *default_target) ++ const char *default_target, char *iface) + { + const char *aliasdata; + +@@ -85,13 +85,13 @@ netsnmp_alias_create_tstring(const char *str, int local, + return NULL; + } + +- return netsnmp_tdomain_transport(aliasdata,local,default_target); ++ return netsnmp_tdomain_transport(aliasdata,local,default_target, iface); + } + + + + netsnmp_transport * +-netsnmp_alias_create_ostring(const u_char * o, size_t o_len, int local) ++netsnmp_alias_create_ostring(const u_char * o, size_t o_len, int local, char *iface) + { + fprintf(stderr, "make ostring\n"); + return NULL; +diff --git a/snmplib/transports/snmpTCPDomain.c b/snmplib/transports/snmpTCPDomain.c +index 7feb028..6eb717e 100644 +--- a/snmplib/transports/snmpTCPDomain.c ++++ b/snmplib/transports/snmpTCPDomain.c +@@ -144,7 +144,7 @@ netsnmp_tcp_accept(netsnmp_transport *t) + */ + + netsnmp_transport * +-netsnmp_tcp_transport(struct sockaddr_in *addr, int local) ++netsnmp_tcp_transport(struct sockaddr_in *addr, int local, char *iface) + { + netsnmp_transport *t = NULL; + netsnmp_udp_addr_pair *addr_pair = NULL; +@@ -212,6 +212,11 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local) + * We should set SO_REUSEADDR too. + */ + ++ if (iface && setsockopt(t->sock, SOL_SOCKET, SO_BINDTODEVICE, ++ iface, strlen(iface)) == -1) ++ snmp_log(LOG_ERR, "Bind interface %s to socket: %s\n", ++ iface, strerror(errno)); ++ + setsockopt(t->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, + sizeof(opt)); + +@@ -305,12 +310,13 @@ netsnmp_tcp_transport(struct sockaddr_in *addr, int local) + + netsnmp_transport * + netsnmp_tcp_create_tstring(const char *str, int local, +- const char *default_target) ++ const char *default_target, ++ char *iface) + { + struct sockaddr_in addr; + + if (netsnmp_sockaddr_in2(&addr, str, default_target)) { +- return netsnmp_tcp_transport(&addr, local); ++ return netsnmp_tcp_transport(&addr, local, iface); + } else { + return NULL; + } +@@ -319,7 +325,7 @@ netsnmp_tcp_create_tstring(const char *str, int local, + + + netsnmp_transport * +-netsnmp_tcp_create_ostring(const u_char * o, size_t o_len, int local) ++netsnmp_tcp_create_ostring(const u_char * o, size_t o_len, int local, char *iface) + { + struct sockaddr_in addr; + +@@ -328,7 +334,7 @@ netsnmp_tcp_create_ostring(const u_char * o, size_t o_len, int local) + addr.sin_family = AF_INET; + memcpy((u_char *) & (addr.sin_addr.s_addr), o, 4); + addr.sin_port = htons(porttmp); +- return netsnmp_tcp_transport(&addr, local); ++ return netsnmp_tcp_transport(&addr, local, iface); + } + return NULL; + } +diff --git a/snmplib/transports/snmpUDPBaseDomain.c b/snmplib/transports/snmpUDPBaseDomain.c +index 8497f71..7b415bc 100644 +--- a/snmplib/transports/snmpUDPBaseDomain.c ++++ b/snmplib/transports/snmpUDPBaseDomain.c +@@ -21,6 +21,9 @@ + #if HAVE_NETINET_IN_H + #include + #endif ++#if HAVE_NET_IF_H ++#include ++#endif + #if HAVE_ARPA_INET_H + #include + #endif +@@ -53,8 +56,14 @@ + #endif + + void +-_netsnmp_udp_sockopt_set(int fd, int local) ++_netsnmp_udp_sockopt_set(int fd, int local, char *iface) + { ++ ++ if (iface && setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, iface, strlen(iface)) == -1) ++ snmp_log(LOG_ERR, "Bind socket on interface: %s: %s\n", iface, strerror(errno)); ++ else if (iface) ++ DEBUGMSGTL(("socket:option", "setting SO_BINDTODEVICE to %s\n", iface)); ++ + #ifdef SO_BSDCOMPAT + /* + * Patch for Linux. Without this, UDP packets that fail get an ICMP +@@ -237,7 +246,10 @@ int netsnmp_udpbase_sendto(int fd, struct in_addr *srcip, int if_index, + struct msghdr m = { 0 }; + char cmsg[CMSG_SPACE(cmsg_data_size)]; + int rc; +- ++ char iface[IFNAMSIZ]; ++ socklen_t ifacelen = IFNAMSIZ; ++ ++ iface[0] = '\0'; + iov.iov_base = data; + iov.iov_len = len; + +@@ -269,14 +281,23 @@ int netsnmp_udpbase_sendto(int fd, struct in_addr *srcip, int if_index, + + memset(&ipi, 0, sizeof(ipi)); + /* +- * Except in the case of responding +- * to a broadcast, setting the ifindex +- * when responding results in incorrect +- * behavior of changing the source address +- * that the manager sees the response +- * come from. ++ * For asymmetric multihomed users, we only set ifindex to 0 ++ * to let kernel handle return if there was no iface bound to the socket. + */ +- ipi.ipi_ifindex = 0; ++ if (getsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, iface, &ifacelen) != 0) { ++ DEBUGMSGTL(("socket:option", "error getsockopt %s\n", strerror(errno))); ++ DEBUGMSGTL(("socket:option", "sendto: SO_BINDTODEVICE not set ifindex=0\n")); ++ ipi.ipi_ifindex = 0; ++ } else if (!ifacelen) { ++ DEBUGMSGTL(("socket:option", "sendto: SO_BINDTODEVICE not set ifacelen=%d ifindex=0\n", ++ ifacelen)); ++ ipi.ipi_ifindex = 0; ++ } else { ++ DEBUGMSGTL(("socket:option", "sendto: SO_BINDTODEVICE dev=%s using ifindex=%d\n", ++ iface, if_index)); ++ ipi.ipi_ifindex = if_index; ++ } ++ + #if defined(cygwin) + ipi.ipi_addr.s_addr = srcip->s_addr; + #else +diff --git a/snmplib/transports/snmpUDPDomain.c b/snmplib/transports/snmpUDPDomain.c +index a0abd8c..fc68303 100644 +--- a/snmplib/transports/snmpUDPDomain.c ++++ b/snmplib/transports/snmpUDPDomain.c +@@ -84,7 +84,7 @@ typedef netsnmp_indexed_addr_pair netsnmp_udp_addr_pair; + * not static, since snmpUDPIPv6Domain needs it, but not public, either. + * (ie don't put it in a public header.) + */ +-void _netsnmp_udp_sockopt_set(int fd, int server); ++void _netsnmp_udp_sockopt_set(int fd, int server, char *iface); + int + netsnmp_sockaddr_in2(struct sockaddr_in *addr, + const char *inpeername, const char *default_target); +@@ -125,11 +125,11 @@ int netsnmp_udp_sendto(int fd, struct in_addr *srcip, int if_index, struct socka + */ + + netsnmp_transport * +-netsnmp_udp_transport(struct sockaddr_in *addr, int local) ++netsnmp_udp_transport(struct sockaddr_in *addr, int local, char *iface) + { + netsnmp_transport *t = NULL; + +- t = netsnmp_udpipv4base_transport(addr, local); ++ t = netsnmp_udpipv4base_transport(addr, local, iface); + if (NULL == t) { + return NULL; + } +@@ -473,12 +473,13 @@ netsnmp_udp_getSecName(void *opaque, int olength, + + netsnmp_transport * + netsnmp_udp_create_tstring(const char *str, int local, +- const char *default_target) ++ const char *default_target, ++ char *iface) + { + struct sockaddr_in addr; + + if (netsnmp_sockaddr_in2(&addr, str, default_target)) { +- return netsnmp_udp_transport(&addr, local); ++ return netsnmp_udp_transport(&addr, local, iface); + } else { + return NULL; + } +@@ -486,7 +487,7 @@ netsnmp_udp_create_tstring(const char *str, int local, + + + netsnmp_transport * +-netsnmp_udp_create_ostring(const u_char * o, size_t o_len, int local) ++netsnmp_udp_create_ostring(const u_char * o, size_t o_len, int local, char *iface) + { + struct sockaddr_in addr; + +@@ -495,7 +496,7 @@ netsnmp_udp_create_ostring(const u_char * o, size_t o_len, int local) + addr.sin_family = AF_INET; + memcpy((u_char *) & (addr.sin_addr.s_addr), o, 4); + addr.sin_port = htons(porttmp); +- return netsnmp_udp_transport(&addr, local); ++ return netsnmp_udp_transport(&addr, local, iface); + } + return NULL; + } +diff --git a/snmplib/transports/snmpUDPIPv4BaseDomain.c b/snmplib/transports/snmpUDPIPv4BaseDomain.c +index 8c0fb05..7991b6a 100644 +--- a/snmplib/transports/snmpUDPIPv4BaseDomain.c ++++ b/snmplib/transports/snmpUDPIPv4BaseDomain.c +@@ -57,7 +57,7 @@ int netsnmp_udpipv4_sendto(int fd, struct in_addr *srcip, int if_index, + #endif /* HAVE_IP_PKTINFO || HAVE_IP_RECVDSTADDR */ + + netsnmp_transport * +-netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local) ++netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local, char *iface) + { + netsnmp_transport *t = NULL; + int rc = 0, rc2; +@@ -95,7 +95,7 @@ netsnmp_udpipv4base_transport(struct sockaddr_in *addr, int local) + return NULL; + } + +- _netsnmp_udp_sockopt_set(t->sock, local); ++ _netsnmp_udp_sockopt_set(t->sock, local, iface); + + if (local) { + #ifndef NETSNMP_NO_LISTEN_SUPPORT +diff --git a/snmplib/transports/snmpUDPIPv6Domain.c b/snmplib/transports/snmpUDPIPv6Domain.c +index 18de876..6b44b22 100644 +--- a/snmplib/transports/snmpUDPIPv6Domain.c ++++ b/snmplib/transports/snmpUDPIPv6Domain.c +@@ -74,12 +74,6 @@ oid netsnmp_UDPIPv6Domain[] = { TRANSPORT_DOMAIN_UDP_IPV6 }; + static netsnmp_tdomain udp6Domain; + + /* +- * from snmpUDPDomain. not static, but not public, either. +- * (ie don't put it in a public header.) +- */ +-extern void _netsnmp_udp_sockopt_set(int fd, int server); +- +-/* + * Return a string representing the address in data, or else the "far end" + * address if data is NULL. + */ +@@ -186,7 +186,7 @@ netsnmp_udp6_send(netsnmp_transport *t, void *buf, int size, + */ + + netsnmp_transport * +-netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local) ++netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local, char *iface) + { + netsnmp_transport *t = NULL; + int rc = 0; +@@ -223,7 +223,7 @@ netsnmp_udp6_transport(struct sockaddr_in6 *addr, int local) + return NULL; + } + +- _netsnmp_udp_sockopt_set(t->sock, local); ++ _netsnmp_udp_sockopt_set(t->sock, local, iface); + + if (local) { + #ifndef NETSNMP_NO_LISTEN_SUPPORT +@@ -724,12 +724,13 @@ netsnmp_udp6_getSecName(void *opaque, int olength, + + netsnmp_transport * + netsnmp_udp6_create_tstring(const char *str, int local, +- const char *default_target) ++ const char *default_target, ++ char *iface) + { + struct sockaddr_in6 addr; + + if (netsnmp_sockaddr_in6_2(&addr, str, default_target)) { +- return netsnmp_udp6_transport(&addr, local); ++ return netsnmp_udp6_transport(&addr, local, iface); + } else { + return NULL; + } +@@ -746,7 +747,7 @@ netsnmp_udp6_create_tstring(const char *str, int local, + */ + + netsnmp_transport * +-netsnmp_udp6_create_ostring(const u_char * o, size_t o_len, int local) ++netsnmp_udp6_create_ostring(const u_char * o, size_t o_len, int local, char *iface) + { + struct sockaddr_in6 addr; + +@@ -755,7 +756,7 @@ netsnmp_udp6_create_ostring(const u_char * o, size_t o_len, int local) + addr.sin6_family = AF_INET6; + memcpy((u_char *) & (addr.sin6_addr.s6_addr), o, 16); + addr.sin6_port = htons((o[16] << 8) + o[17]); +- return netsnmp_udp6_transport(&addr, local); ++ return netsnmp_udp6_transport(&addr, local, iface); + } + return NULL; + } +diff --git a/snmplib/transports/snmpUnixDomain.c b/snmplib/transports/snmpUnixDomain.c +index 47dffc1..af56c5d 100644 +--- a/snmplib/transports/snmpUnixDomain.c ++++ b/snmplib/transports/snmpUnixDomain.c +@@ -450,7 +450,8 @@ netsnmp_unix_transport(struct sockaddr_un *addr, int local) + + netsnmp_transport * + netsnmp_unix_create_tstring(const char *string, int local, +- const char *default_target) ++ const char *default_target, ++ char *iface) + { + struct sockaddr_un addr; + +@@ -476,7 +477,7 @@ netsnmp_unix_create_tstring(const char *string, int local, + + + netsnmp_transport * +-netsnmp_unix_create_ostring(const u_char * o, size_t o_len, int local) ++netsnmp_unix_create_ostring(const u_char * o, size_t o_len, int local, char *iface) + { + struct sockaddr_un addr; + +-- +2.7.4 + diff --git a/src/snmpd/patch-5.9+dfsg/0008-Enable-macro-DEB_BUILD_ARCH_OS-in-order-to-build-ipv.patch b/src/snmpd/patch-5.9+dfsg/0008-Enable-macro-DEB_BUILD_ARCH_OS-in-order-to-build-ipv.patch new file mode 100644 index 000000000000..29ab551c7a18 --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/0008-Enable-macro-DEB_BUILD_ARCH_OS-in-order-to-build-ipv.patch @@ -0,0 +1,22 @@ +From 6e038423d7a3269dbfd85b3d7ada6015479f1559 Mon Sep 17 00:00:00 2001 +From: Qi Luo +Date: Fri, 20 Sep 2019 00:42:19 +0000 +Subject: [PATCH] Enable macro DEB_BUILD_ARCH_OS in order to build ipv6 feature + +--- + debian/rules | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/debian/rules b/debian/rules +index 4c3b5b6..1fab6a4 100755 +--- a/debian/rules ++++ b/debian/rules +@@ -4,4 +4,5 @@ + export DEB_BUILD_MAINT_OPTIONS := hardening=+all + DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) ++DEB_BUILD_ARCH_OS ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH_OS) + + LIB_VERSION = 40 +-- +2.18.0 + diff --git a/src/snmpd/patch-5.9+dfsg/series b/src/snmpd/patch-5.9+dfsg/series new file mode 100644 index 000000000000..cabee4060f9f --- /dev/null +++ b/src/snmpd/patch-5.9+dfsg/series @@ -0,0 +1,5 @@ +0001-SNMP-Stop-spamming-logs-with-statfs-permission-denie.patch +#0002-at.c-properly-check-return-status-from-realloc.-Than.patch +#0006-From-Jiri-Cervenka-snmpd-Fixed-agentx-crashing-and-or-freezing-on-timeout.patch +#0007-Linux-VRF-5.7.3-Support.patch +0008-Enable-macro-DEB_BUILD_ARCH_OS-in-order-to-build-ipv.patch diff --git a/src/sonic-build-hooks/hooks/git b/src/sonic-build-hooks/hooks/git index 2101358379d6..8c3e39f67a7d 100755 --- a/src/sonic-build-hooks/hooks/git +++ b/src/sonic-build-hooks/hooks/git @@ -39,7 +39,8 @@ get_clone_path(){ done # if not specific clone path, get default clone path - [ -z $clone_PATH ] && clone_PATH=`echo $URL | rev | awk -F/ '{print$1}' | rev | awk -F. '{print$1}'` + # 1. trim tail slash sign. 2. trim all charactors before the last slash. 3.trim tail '.git' + [ -z $clone_PATH ] && clone_PATH=`echo $URL | sed 's/\/$//' | awk -F/ '{print$NF}' | awk -F. '{print$1}'` } main(){ @@ -62,7 +63,8 @@ main(){ # control version or record version file if [[ $ENABLE_VERSION_CONTROL_GIT == "y" ]];then # control version - [ ! -z $commit ] && $REAL_COMMAND reset --hard $commit &> /dev/null + [ -n $commit ] && echo "git reset --hard $commit" >> ${new_version_file}.log + [ -n $commit ] && $REAL_COMMAND reset --hard $commit &> ${new_version_file}.log else # record version file echo "$URL==$commit_latest" >> $new_version_file diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index 0c2040d95f0e..756743f85e67 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -526,6 +526,7 @@ def parse_dpg(dpg, hname): vlanintfs = child.find(str(QName(ns, "VlanInterfaces"))) vlans = {} vlan_members = {} + dhcp_relay_table = {} vlantype_name = "" intf_vlan_mbr = defaultdict(list) for vintf in vlanintfs.findall(str(QName(ns, "VlanInterface"))): @@ -553,6 +554,7 @@ def parse_dpg(dpg, hname): vlan_members[(sonic_vlan_member_name, vmbr_list[i])] = {'tagging_mode': 'untagged'} vlan_attributes = {'vlanid': vlanid, 'members': vmbr_list } + dhcp_attributes = {} # If this VLAN requires a DHCP relay agent, it will contain a element # containing a list of DHCP server IPs @@ -567,6 +569,9 @@ def parse_dpg(dpg, hname): vintfdhcpservers = vintf_node.text vdhcpserver_list = vintfdhcpservers.split(';') vlan_attributes['dhcpv6_servers'] = vdhcpserver_list + dhcp_attributes['dhcpv6_servers'] = vdhcpserver_list + sonic_vlan_member_name = "Vlan%s" % (vlanid) + dhcp_relay_table[sonic_vlan_member_name] = dhcp_attributes vlanmac = vintf.find(str(QName(ns, "MacAddress"))) if vlanmac is not None and vlanmac.text is not None: @@ -691,7 +696,7 @@ def parse_dpg(dpg, hname): if mg_key in mg_tunnel.attrib: tunnelintfs[tunnel_type][tunnel_name][table_key] = mg_tunnel.attrib[mg_key] - return intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, pcs, pc_members, acls, vni, tunnelintfs, dpg_ecmp_content + return intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnelintfs, dpg_ecmp_content return None, None, None, None, None, None, None, None, None, None, None, None, None def parse_host_loopback(dpg, hname): @@ -1159,6 +1164,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw tunnel_intfs = None vlans = None vlan_members = None + dhcp_relay_table = None pcs = None mgmt_intf = None voq_inband_intfs = None @@ -1217,7 +1223,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw for child in root: if asic_name is None: if child.tag == str(QName(ns, "DpgDec")): - (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, hostname) + (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, hostname) elif child.tag == str(QName(ns, "CpgDec")): (bgp_sessions, bgp_internal_sessions, bgp_voq_chassis_sessions, bgp_asn, bgp_peers_with_range, bgp_monitors) = parse_cpg(child, hostname) elif child.tag == str(QName(ns, "PngDec")): @@ -1232,7 +1238,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw (port_speeds_default, port_descriptions, sys_ports) = parse_deviceinfo(child, hwsku) else: if child.tag == str(QName(ns, "DpgDec")): - (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, asic_name) + (intfs, lo_intfs, mvrf, mgmt_intf, voq_inband_intfs, vlans, vlan_members, dhcp_relay_table, pcs, pc_members, acls, vni, tunnel_intfs, dpg_ecmp_content) = parse_dpg(child, asic_name) host_lo_intfs = parse_host_loopback(child, hostname) elif child.tag == str(QName(ns, "CpgDec")): (bgp_sessions, bgp_internal_sessions, bgp_voq_chassis_sessions, bgp_asn, bgp_peers_with_range, bgp_monitors) = parse_cpg(child, asic_name, local_devices) @@ -1580,7 +1586,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw results['DEVICE_NEIGHBOR_METADATA'] = { key:devices[key] for key in devices if key in {device['name'] for device in neighbors.values()} } results['SYSLOG_SERVER'] = dict((item, {}) for item in syslog_servers) results['DHCP_SERVER'] = dict((item, {}) for item in dhcp_servers) - results['DHCPv6_SERVER'] = dict((item, {}) for item in dhcpv6_servers) + results['DHCP_RELAY'] = dhcp_relay_table results['NTP_SERVER'] = dict((item, {}) for item in ntp_servers) results['TACPLUS_SERVER'] = dict((item, {'priority': '1', 'tcp_port': '49'}) for item in tacacs_servers) results['ACL_TABLE'] = filter_acl_table_bindings(acls, neighbors, pcs, sub_role) diff --git a/src/sonic-config-engine/portconfig.py b/src/sonic-config-engine/portconfig.py index 2eceb81bcac4..db486b1b7d8c 100644 --- a/src/sonic-config-engine/portconfig.py +++ b/src/sonic-config-engine/portconfig.py @@ -205,7 +205,6 @@ def gen_port_config(ports, parent_intf_id, index, alias_list, lanes, k, offset) raise Exception('Regex return for speed is None...') ports[intf_name]['index'] = index.split(",")[alias_position] - ports[intf_name]['admin_status'] = "up" parent_intf_id += step alias_position += 1 @@ -261,9 +260,9 @@ def parse_platform_json_file(hwsku_json_file, platform_json_file): port_dict = readJson(platform_json_file) hwsku_dict = readJson(hwsku_json_file) - if not port_dict: + if port_dict is None: raise Exception("port_dict is none") - if not hwsku_dict: + if hwsku_dict is None: raise Exception("hwsku_dict is none") if INTF_KEY not in port_dict or INTF_KEY not in hwsku_dict: @@ -285,8 +284,8 @@ def parse_platform_json_file(hwsku_json_file, platform_json_file): ports.update(child_ports) - if not ports: - raise Exception("Ports dictionary is empty") + if ports is None: + raise Exception("Ports dictionary is None") for i in ports.keys(): port_alias_map[ports[i]["alias"]]= i diff --git a/src/sonic-config-engine/sonic-cfggen b/src/sonic-config-engine/sonic-cfggen index bd528c64e75e..cb878037dfd8 100755 --- a/src/sonic-config-engine/sonic-cfggen +++ b/src/sonic-config-engine/sonic-cfggen @@ -296,10 +296,6 @@ def main(): 'localhost': {'namespace_id': namespace_id} } }) - # Load the database config for the namespace from global database json - if args.namespace is not None: - SonicDBConfig.load_sonic_global_db_config(namespace=args.namespace) - if hwsku is not None: hardware_data = {'DEVICE_METADATA': {'localhost': { 'hwsku': hwsku @@ -308,7 +304,7 @@ def main(): if args.port_config is None: args.port_config = device_info.get_path_to_port_config_file(hwsku) (ports, _, _) = get_port_config(hwsku, platform, args.port_config, asic_id) - if not ports: + if ports is None: print('Failed to get port config', file=sys.stderr) sys.exit(1) deep_update(data, {'PORT': ports}) @@ -359,6 +355,7 @@ def main(): if args.namespace is None: configdb = ConfigDBPipeConnector(use_unix_socket_path=use_unix_sock, **db_kwargs) else: + SonicDBConfig.load_sonic_global_db_config(namespace=args.namespace) configdb = ConfigDBPipeConnector(use_unix_socket_path=use_unix_sock, namespace=args.namespace, **db_kwargs) configdb.connect() @@ -426,6 +423,7 @@ def main(): if args.namespace is None: configdb = ConfigDBPipeConnector(use_unix_socket_path=True, **db_kwargs) else: + SonicDBConfig.load_sonic_global_db_config(namespace=args.namespace) configdb = ConfigDBPipeConnector(use_unix_socket_path=True, namespace=args.namespace, **db_kwargs) configdb.connect(False) diff --git a/src/sonic-config-engine/tests/platform-sample-graph.xml b/src/sonic-config-engine/tests/platform-sample-graph.xml new file mode 100644 index 000000000000..690b05073c1a --- /dev/null +++ b/src/sonic-config-engine/tests/platform-sample-graph.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + switch-t0 + + + PortChannel01 + Ethernet20 + + + + PortChannel1001 + Ethernet4;Ethernet6 + + + + + + + + + + + + + + + DeviceInterfaceLink + 100000 + ARISTA01T1 + et1 + true + switch-t0 + Ethernet0 + true + + + + + switch-t0 + Force10-S6000 + AAA00PrdStr00 + + + ARISTA01T1 + Arista + + + + + + + + DeviceInterface + + true + 1 + Ethernet0 + + false + 0 + 0 + 100000 + + + DeviceInterface + + true + 1 + Ethernet4 + + false + 0 + 0 + 50000 + + + DeviceInterface + + true + 1 + Ethernet6 + + false + 0 + 0 + 50000 + + + DeviceInterface + + true + 1 + Ethernet20 + + false + 0 + 0 + 100000 + + + true + 0 + Force10-S6000 + + + + switch-t0 + Force10-S6000 + diff --git a/src/sonic-config-engine/tests/sample_output/platform_output.json b/src/sonic-config-engine/tests/sample_output/platform_output.json index 97b49997cf43..8276b19e18a3 100644 --- a/src/sonic-config-engine/tests/sample_output/platform_output.json +++ b/src/sonic-config-engine/tests/sample_output/platform_output.json @@ -3,7 +3,6 @@ "index": "3", "lanes": "8", "description": "Eth3/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth3/1", "pfc_asym": "off", @@ -14,7 +13,6 @@ "index": "3", "lanes": "9", "description": "Eth3/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth3/2", "pfc_asym": "off", @@ -25,7 +23,6 @@ "index": "10", "lanes": "36,37", "description": "Eth10/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth10/1", "pfc_asym": "off", @@ -36,7 +33,6 @@ "index": "25", "lanes": "98", "description": "Eth25/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth25/2", "pfc_asym": "off", @@ -47,7 +43,7 @@ "index": "1", "lanes": "0,1,2,3", "fec": "rs", - "description": "Eth1", + "description": "ARISTA01T1:et1", "admin_status": "up", "mtu": "9100", "alias": "Eth1", @@ -81,7 +77,6 @@ "index": "28", "lanes": "109", "description": "Eth28/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth28/2", "pfc_asym": "off", @@ -92,7 +87,6 @@ "index": "28", "lanes": "108", "description": "Eth28/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth28/1", "pfc_asym": "off", @@ -103,7 +97,6 @@ "index": "5", "lanes": "18", "description": "Eth5/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth5/2", "pfc_asym": "off", @@ -115,7 +108,6 @@ "lanes": "100,101,102,103", "fec": "rs", "description": "Eth26", - "admin_status": "up", "mtu": "9100", "alias": "Eth26", "pfc_asym": "off", @@ -126,7 +118,6 @@ "index": "9", "lanes": "34,35", "description": "Eth9/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth9/3", "pfc_asym": "off", @@ -137,7 +128,6 @@ "index": "27", "lanes": "104,105", "description": "Eth27/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth27/1", "pfc_asym": "off", @@ -148,7 +138,6 @@ "index": "27", "lanes": "106,107", "description": "Eth27/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth27/2", "pfc_asym": "off", @@ -159,7 +148,6 @@ "index": "24", "lanes": "94,95", "description": "Eth24/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth24/3", "pfc_asym": "off", @@ -170,7 +158,6 @@ "index": "32", "lanes": "126,127", "description": "Eth32/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth32/2", "pfc_asym": "off", @@ -181,7 +168,6 @@ "index": "25", "lanes": "96,97", "description": "Eth25/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth25/1", "pfc_asym": "off", @@ -192,7 +178,6 @@ "index": "32", "lanes": "124,125", "description": "Eth32/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth32/1", "pfc_asym": "off", @@ -203,7 +188,6 @@ "index": "23", "lanes": "90", "description": "Eth23/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth23/3", "pfc_asym": "off", @@ -214,7 +198,6 @@ "index": "23", "lanes": "91", "description": "Eth23/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth23/4", "pfc_asym": "off", @@ -225,7 +208,6 @@ "index": "24", "lanes": "92", "description": "Eth24/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth24/1", "pfc_asym": "off", @@ -236,7 +218,6 @@ "index": "24", "lanes": "93", "description": "Eth24/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth24/2", "pfc_asym": "off", @@ -247,7 +228,6 @@ "index": "13", "lanes": "50", "description": "Eth13/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth13/3", "pfc_asym": "off", @@ -258,7 +238,6 @@ "index": "13", "lanes": "51", "description": "Eth13/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth13/4", "pfc_asym": "off", @@ -269,7 +248,6 @@ "index": "14", "lanes": "52", "description": "Eth14/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth14/1", "pfc_asym": "off", @@ -280,7 +258,6 @@ "index": "14", "lanes": "53", "description": "Eth14/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth14/2", "pfc_asym": "off", @@ -291,7 +268,6 @@ "index": "14", "lanes": "54,55", "description": "Eth14/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth14/3", "pfc_asym": "off", @@ -302,7 +278,6 @@ "index": "25", "lanes": "99", "description": "Eth25/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth25/3", "pfc_asym": "off", @@ -313,7 +288,6 @@ "index": "15", "lanes": "56,57", "description": "Eth15/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth15/1", "pfc_asym": "off", @@ -324,7 +298,6 @@ "index": "29", "lanes": "113", "description": "Eth29/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth29/2", "pfc_asym": "off", @@ -335,7 +308,6 @@ "index": "20", "lanes": "76,77", "description": "Eth20/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth20/1", "pfc_asym": "off", @@ -346,7 +318,6 @@ "index": "19", "lanes": "74,75", "description": "Eth19/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth19/3", "pfc_asym": "off", @@ -357,7 +328,6 @@ "index": "10", "lanes": "39", "description": "Eth10/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth10/3", "pfc_asym": "off", @@ -368,7 +338,6 @@ "index": "19", "lanes": "72", "description": "Eth19/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth19/1", "pfc_asym": "off", @@ -379,7 +348,6 @@ "index": "19", "lanes": "73", "description": "Eth19/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth19/2", "pfc_asym": "off", @@ -390,7 +358,6 @@ "index": "18", "lanes": "70", "description": "Eth18/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth18/3", "pfc_asym": "off", @@ -401,7 +368,6 @@ "index": "18", "lanes": "71", "description": "Eth18/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth18/4", "pfc_asym": "off", @@ -412,7 +378,6 @@ "index": "9", "lanes": "32", "description": "Eth9/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth9/1", "pfc_asym": "off", @@ -423,7 +388,6 @@ "index": "9", "lanes": "33", "description": "Eth9/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth9/2", "pfc_asym": "off", @@ -434,7 +398,6 @@ "index": "5", "lanes": "16,17", "description": "Eth5/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth5/1", "pfc_asym": "off", @@ -445,7 +408,6 @@ "index": "28", "lanes": "111", "description": "Eth28/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth28/4", "pfc_asym": "off", @@ -456,7 +418,6 @@ "index": "3", "lanes": "10", "description": "Eth3/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth3/3", "pfc_asym": "off", @@ -467,7 +428,6 @@ "index": "3", "lanes": "11", "description": "Eth3/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth3/4", "pfc_asym": "off", @@ -478,7 +438,6 @@ "index": "4", "lanes": "12", "description": "Eth4/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth4/1", "pfc_asym": "off", @@ -489,7 +448,6 @@ "index": "4", "lanes": "13", "description": "Eth4/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth4/2", "pfc_asym": "off", @@ -500,7 +458,6 @@ "index": "15", "lanes": "58", "description": "Eth15/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth15/2", "pfc_asym": "off", @@ -511,7 +468,6 @@ "index": "5", "lanes": "19", "description": "Eth5/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth5/3", "pfc_asym": "off", @@ -522,7 +478,6 @@ "index": "15", "lanes": "59", "description": "Eth15/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth15/3", "pfc_asym": "off", @@ -533,7 +488,6 @@ "index": "10", "lanes": "38", "description": "Eth10/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth10/2", "pfc_asym": "off", @@ -544,7 +498,6 @@ "index": "20", "lanes": "78", "description": "Eth20/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth20/2", "pfc_asym": "off", @@ -555,7 +508,6 @@ "index": "18", "lanes": "68", "description": "Eth18/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth18/1", "pfc_asym": "off", @@ -566,7 +518,6 @@ "index": "4", "lanes": "14,15", "description": "Eth4/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth4/3", "pfc_asym": "off", @@ -577,7 +528,6 @@ "index": "23", "lanes": "89", "description": "Eth23/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth23/2", "pfc_asym": "off", @@ -588,7 +538,6 @@ "index": "23", "lanes": "88", "description": "Eth23/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth23/1", "pfc_asym": "off", @@ -599,7 +548,6 @@ "index": "30", "lanes": "118", "description": "Eth30/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth30/2", "pfc_asym": "off", @@ -610,7 +558,6 @@ "index": "30", "lanes": "119", "description": "Eth30/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth30/3", "pfc_asym": "off", @@ -621,7 +568,6 @@ "index": "30", "lanes": "116,117", "description": "Eth30/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth30/1", "pfc_asym": "off", @@ -632,7 +578,6 @@ "index": "29", "lanes": "114,115", "description": "Eth29/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth29/3", "pfc_asym": "off", @@ -644,7 +589,6 @@ "lanes": "80,81,82,83", "fec": "rs", "description": "Eth21", - "admin_status": "up", "mtu": "9100", "alias": "Eth21", "pfc_asym": "off", @@ -655,7 +599,6 @@ "index": "29", "lanes": "112", "description": "Eth29/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth29/1", "pfc_asym": "off", @@ -666,7 +609,6 @@ "index": "22", "lanes": "86,87", "description": "Eth22/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth22/2", "pfc_asym": "off", @@ -677,7 +619,6 @@ "index": "28", "lanes": "110", "description": "Eth28/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth28/3", "pfc_asym": "off", @@ -688,7 +629,6 @@ "index": "22", "lanes": "84,85", "description": "Eth22/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth22/1", "pfc_asym": "off", @@ -699,7 +639,6 @@ "index": "8", "lanes": "31", "description": "Eth8/4", - "admin_status": "up", "mtu": "9100", "alias": "Eth8/4", "pfc_asym": "off", @@ -710,7 +649,6 @@ "index": "13", "lanes": "49", "description": "Eth13/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth13/2", "pfc_asym": "off", @@ -721,7 +659,6 @@ "index": "13", "lanes": "48", "description": "Eth13/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth13/1", "pfc_asym": "off", @@ -732,7 +669,6 @@ "index": "12", "lanes": "46,47", "description": "Eth12/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth12/2", "pfc_asym": "off", @@ -743,7 +679,6 @@ "index": "8", "lanes": "30", "description": "Eth8/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth8/3", "pfc_asym": "off", @@ -754,7 +689,6 @@ "index": "8", "lanes": "29", "description": "Eth8/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth8/2", "pfc_asym": "off", @@ -766,7 +700,6 @@ "lanes": "40,41,42,43", "fec": "rs", "description": "Eth11", - "admin_status": "up", "mtu": "9100", "alias": "Eth11", "pfc_asym": "off", @@ -778,7 +711,6 @@ "lanes": "120,121,122,123", "fec": "rs", "description": "Eth31", - "admin_status": "up", "mtu": "9100", "alias": "Eth31", "pfc_asym": "off", @@ -789,7 +721,6 @@ "index": "8", "lanes": "28", "description": "Eth8/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth8/1", "pfc_asym": "off", @@ -800,7 +731,6 @@ "index": "17", "lanes": "66,67", "description": "Eth17/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth17/2", "pfc_asym": "off", @@ -812,7 +742,6 @@ "lanes": "60,61,62,63", "fec": "rs", "description": "Eth16", - "admin_status": "up", "mtu": "9100", "alias": "Eth16", "pfc_asym": "off", @@ -823,7 +752,6 @@ "index": "17", "lanes": "64,65", "description": "Eth17/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth17/1", "pfc_asym": "off", @@ -834,7 +762,6 @@ "index": "12", "lanes": "44,45", "description": "Eth12/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth12/1", "pfc_asym": "off", @@ -857,7 +784,6 @@ "index": "20", "lanes": "79", "description": "Eth20/3", - "admin_status": "up", "mtu": "9100", "alias": "Eth20/3", "pfc_asym": "off", @@ -868,7 +794,6 @@ "index": "18", "lanes": "69", "description": "Eth18/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth18/2", "pfc_asym": "off", @@ -879,7 +804,6 @@ "index": "7", "lanes": "24,25", "description": "Eth7/1", - "admin_status": "up", "mtu": "9100", "alias": "Eth7/1", "pfc_asym": "off", @@ -890,7 +814,6 @@ "index": "7", "lanes": "26,27", "description": "Eth7/2", - "admin_status": "up", "mtu": "9100", "alias": "Eth7/2", "pfc_asym": "off", diff --git a/src/sonic-config-engine/tests/sample_output/py2/interfaces b/src/sonic-config-engine/tests/sample_output/py2/interfaces index 6e952d6f71ea..360ecf7b13de 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/interfaces +++ b/src/sonic-config-engine/tests/sample_output/py2/interfaces @@ -8,6 +8,7 @@ auto lo iface lo inet loopback address 127.0.0.1 netmask 255.255.0.0 + scope host post-up ip addr del 127.0.0.1/8 dev lo # The management network interface diff --git a/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces b/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces index 9e5c8a4261cf..6143d7ba8c4b 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces +++ b/src/sonic-config-engine/tests/sample_output/py2/mvrf_interfaces @@ -17,6 +17,7 @@ auto lo iface lo inet loopback address 127.0.0.1 netmask 255.255.0.0 + scope host post-up ip addr del 127.0.0.1/8 dev lo # The management network interface diff --git a/src/sonic-config-engine/tests/sample_output/py3/interfaces b/src/sonic-config-engine/tests/sample_output/py3/interfaces index 6e952d6f71ea..360ecf7b13de 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/interfaces +++ b/src/sonic-config-engine/tests/sample_output/py3/interfaces @@ -8,6 +8,7 @@ auto lo iface lo inet loopback address 127.0.0.1 netmask 255.255.0.0 + scope host post-up ip addr del 127.0.0.1/8 dev lo # The management network interface diff --git a/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces b/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces index 9e5c8a4261cf..6143d7ba8c4b 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces +++ b/src/sonic-config-engine/tests/sample_output/py3/mvrf_interfaces @@ -17,6 +17,7 @@ auto lo iface lo inet loopback address 127.0.0.1 netmask 255.255.0.0 + scope host post-up ip addr del 127.0.0.1/8 dev lo # The management network interface diff --git a/src/sonic-config-engine/tests/simple-sample-graph-case.xml b/src/sonic-config-engine/tests/simple-sample-graph-case.xml index c1015b6b5362..78e81bd6df78 100644 --- a/src/sonic-config-engine/tests/simple-sample-graph-case.xml +++ b/src/sonic-config-engine/tests/simple-sample-graph-case.xml @@ -134,6 +134,7 @@ ab1 fortyGigE0/8 192.0.0.1;192.0.0.2 + fc02:2000::1;fc02:2000::2 1000 1000 192.168.0.0/27 @@ -143,6 +144,7 @@ ab2 fortyGigE0/4 192.0.0.1 + fc02:2000::3;fc02:2000::4 2000 2000 diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index a607d9b3278c..5be4bb7b75c8 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -820,3 +820,16 @@ def test_minigraph_voq_inband_port(self): 'admin_status': 'up' } ) + + def test_minigraph_dhcp(self): + argument = '-m "' + self.sample_graph_simple_case + '" -p "' + self.port_config + '" -v DHCP_RELAY' + output = self.run_script(argument) + self.assertEqual( + utils.to_dict(output.strip()), + utils.to_dict( + "{'Vlan1000': {'dhcpv6_servers': ['fc02:2000::1', 'fc02:2000::2']}, " + "'Vlan2000': {'dhcpv6_servers': ['fc02:2000::3', 'fc02:2000::4']}}" + ) + ) + + \ No newline at end of file diff --git a/src/sonic-config-engine/tests/test_cfggen_platformJson.py b/src/sonic-config-engine/tests/test_cfggen_platformJson.py index 4c7fc9729e78..3307c3447c0c 100644 --- a/src/sonic-config-engine/tests/test_cfggen_platformJson.py +++ b/src/sonic-config-engine/tests/test_cfggen_platformJson.py @@ -2,11 +2,17 @@ import json import os import subprocess +import sys import tests.common_utils as utils from unittest import TestCase +from portconfig import get_port_config, INTF_KEY +if sys.version_info.major == 3: + from unittest import mock +else: + import mock # Global Variable PLATFORM_OUTPUT_FILE = "platform_output.json" @@ -16,7 +22,7 @@ class TestCfgGenPlatformJson(TestCase): def setUp(self): self.test_dir = os.path.dirname(os.path.realpath(__file__)) self.script_file = utils.PYTHON_INTERPRETTER + ' ' + os.path.join(self.test_dir, '..', 'sonic-cfggen') - self.sample_graph_simple = os.path.join(self.test_dir, 'simple-sample-graph.xml') + self.platform_sample_graph = os.path.join(self.test_dir, 'platform-sample-graph.xml') self.platform_json = os.path.join(self.test_dir, 'sample_platform.json') self.hwsku_json = os.path.join(self.test_dir, 'sample_hwsku.json') @@ -43,13 +49,13 @@ def test_dummy_run(self): self.assertEqual(output, '') def test_print_data(self): - argument = '-m "' + self.sample_graph_simple + '" --print-data' + argument = '-m "' + self.platform_sample_graph + '" --print-data' output = self.run_script(argument) self.assertTrue(len(output.strip()) > 0) # Check whether all interfaces present or not as per platform.json def test_platform_json_interfaces_keys(self): - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT.keys()|list"' + argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT.keys()|list"' output = self.run_script(argument) self.maxDiff = None expected = "['Ethernet8', 'Ethernet9', 'Ethernet36', 'Ethernet98', 'Ethernet0', 'Ethernet6', 'Ethernet4', 'Ethernet109', 'Ethernet108', 'Ethernet18', 'Ethernet100', 'Ethernet34', 'Ethernet104', 'Ethernet106', 'Ethernet94', 'Ethernet126', 'Ethernet96', 'Ethernet124', 'Ethernet90', 'Ethernet91', 'Ethernet92', 'Ethernet93', 'Ethernet50', 'Ethernet51', 'Ethernet52', 'Ethernet53', 'Ethernet54', 'Ethernet99', 'Ethernet56', 'Ethernet113', 'Ethernet76', 'Ethernet74', 'Ethernet39', 'Ethernet72', 'Ethernet73', 'Ethernet70', 'Ethernet71', 'Ethernet32', 'Ethernet33', 'Ethernet16', 'Ethernet111', 'Ethernet10', 'Ethernet11', 'Ethernet12', 'Ethernet13', 'Ethernet58', 'Ethernet19', 'Ethernet59', 'Ethernet38', 'Ethernet78', 'Ethernet68', 'Ethernet14', 'Ethernet89', 'Ethernet88', 'Ethernet118', 'Ethernet119', 'Ethernet116', 'Ethernet114', 'Ethernet80', 'Ethernet112', 'Ethernet86', 'Ethernet110', 'Ethernet84', 'Ethernet31', 'Ethernet49', 'Ethernet48', 'Ethernet46', 'Ethernet30', 'Ethernet29', 'Ethernet40', 'Ethernet120', 'Ethernet28', 'Ethernet66', 'Ethernet60', 'Ethernet64', 'Ethernet44', 'Ethernet20', 'Ethernet79', 'Ethernet69', 'Ethernet24', 'Ethernet26']" @@ -59,21 +65,27 @@ def test_platform_json_interfaces_keys(self): # Check specific Interface with it's proper configuration as per platform.json def test_platform_json_specific_ethernet_interfaces(self): - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet8\']"' + argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet8\']"' output = self.run_script(argument) self.maxDiff = None - expected = "{'index': '3', 'lanes': '8', 'description': 'Eth3/1', 'admin_status': 'up', 'mtu': '9100', 'alias': 'Eth3/1', 'pfc_asym': 'off', 'speed': '25000', 'tpid': '0x8100'}" + expected = "{'index': '3', 'lanes': '8', 'description': 'Eth3/1', 'mtu': '9100', 'alias': 'Eth3/1', 'pfc_asym': 'off', 'speed': '25000', 'tpid': '0x8100'}" self.assertEqual(utils.to_dict(output.strip()), utils.to_dict(expected)) - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet112\']"' + argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet112\']"' output = self.run_script(argument) self.maxDiff = None - expected = "{'index': '29', 'lanes': '112', 'description': 'Eth29/1', 'admin_status': 'up', 'mtu': '9100', 'alias': 'Eth29/1', 'pfc_asym': 'off', 'speed': '25000', 'tpid': '0x8100'}" + expected = "{'index': '29', 'lanes': '112', 'description': 'Eth29/1', 'mtu': '9100', 'alias': 'Eth29/1', 'pfc_asym': 'off', 'speed': '25000', 'tpid': '0x8100'}" self.assertEqual(utils.to_dict(output.strip()), utils.to_dict(expected)) + argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT[\'Ethernet4\']"' + output = self.run_script(argument) + self.maxDiff = None + expected = "{'index': '2', 'lanes': '4,5', 'description': 'Eth2/1', 'admin_status': 'up', 'mtu': '9100', 'alias': 'Eth2/1', 'pfc_asym': 'off', 'speed': '50000', 'tpid': '0x8100'}" + print(output.strip()) + self.assertEqual(utils.to_dict(output.strip()), utils.to_dict(expected)) # Check all Interface with it's proper configuration as per platform.json def test_platform_json_all_ethernet_interfaces(self): - argument = '-m "' + self.sample_graph_simple + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT"' + argument = '-m "' + self.platform_sample_graph + '" -p "' + self.platform_json + '" -S "' + self.hwsku_json + '" -v "PORT"' output = self.run_script(argument) self.maxDiff = None @@ -85,3 +97,10 @@ def test_platform_json_all_ethernet_interfaces(self): output_dict = ast.literal_eval(output.strip()) expected = ast.literal_eval(json.dumps(fh_data)) self.assertDictEqual(output_dict, expected) + + @mock.patch('portconfig.readJson', mock.MagicMock(return_value={INTF_KEY:{}})) + @mock.patch('os.path.isfile', mock.MagicMock(return_value=True)) + def test_platform_json_no_interfaces(self): + (ports, _, _) = get_port_config(port_config_file=self.platform_json) + self.assertNotEqual(ports, None) + self.assertEqual(ports, {}) diff --git a/src/sonic-config-engine/tests/test_minigraph_case.py b/src/sonic-config-engine/tests/test_minigraph_case.py index 08bde40af0cf..0f736998ddeb 100644 --- a/src/sonic-config-engine/tests/test_minigraph_case.py +++ b/src/sonic-config-engine/tests/test_minigraph_case.py @@ -102,6 +102,7 @@ def test_minigraph_vlans(self): 'Vlan1000': { 'alias': 'ab1', 'dhcp_servers': ['192.0.0.1', '192.0.0.2'], + 'dhcpv6_servers': ['fc02:2000::1', 'fc02:2000::2'], 'vlanid': '1000', 'mac': '00:aa:bb:cc:dd:ee', 'members': ['Ethernet8'] @@ -109,6 +110,7 @@ def test_minigraph_vlans(self): 'Vlan2000': { 'alias': 'ab2', 'dhcp_servers': ['192.0.0.1'], + 'dhcpv6_servers': ['fc02:2000::3', 'fc02:2000::4'], 'members': ['Ethernet4'], 'vlanid': '2000' } @@ -357,3 +359,27 @@ def test_minigraph_mux_cable_table(self): utils.to_dict(output.strip()), expected_table ) + + def test_dhcp_table(self): + argument = '-m "' + self.sample_graph + '" -p "' + self.port_config + '" -v "DHCP_RELAY"' + expected = { + 'Vlan1000': { + 'dhcpv6_servers': [ + "fc02:2000::1", + "fc02:2000::2" + ] + }, + 'Vlan2000': { + 'dhcpv6_servers': [ + "fc02:2000::3", + "fc02:2000::4" + ] + } + } + output = self.run_script(argument) + self.assertEqual( + utils.to_dict(output.strip()), + expected + ) + + diff --git a/src/sonic-device-data/Makefile b/src/sonic-device-data/Makefile index 3de98ef84b42..2077e98f3e98 100644 --- a/src/sonic-device-data/Makefile +++ b/src/sonic-device-data/Makefile @@ -18,6 +18,7 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : for d in `find -L ../../../device -maxdepth 3 -mindepth 3 -type d | grep -vE "(plugins|led-code)"`; do \ cp -Lr $$d device/x86_64-kvm_x86_64-r0/ ; \ cp ./sai.vs_profile device/x86_64-kvm_x86_64-r0/$$(basename $$d)/sai.profile; \ + cp ./sai_mlnx.vs_profile device/x86_64-kvm_x86_64-r0/$$(basename $$d)/sai_mlnx.profile; \ grep -v ^# device/x86_64-kvm_x86_64-r0/$$(basename $$d)/port_config.ini | awk '{i=i+1;print "eth"i":"$$2}' > device/x86_64-kvm_x86_64-r0/$$(basename $$d)/lanemap.ini cp ./pai.vs_profile device/x86_64-kvm_x86_64-r0/$$(basename $$d)/pai.profile; \ grep -v ^# device/x86_64-kvm_x86_64-r0/$$(basename $$d)/port_config.ini | awk '{i=i+1;print "eth"i":"$$2}' > device/x86_64-kvm_x86_64-r0/$$(basename $$d)/lanemap.ini diff --git a/src/sonic-device-data/src/sai_mlnx.vs_profile b/src/sonic-device-data/src/sai_mlnx.vs_profile new file mode 100644 index 000000000000..7b54438c4130 --- /dev/null +++ b/src/sonic-device-data/src/sai_mlnx.vs_profile @@ -0,0 +1,5 @@ +SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_MLNX2700 +SAI_VS_HOSTIF_USE_TAP_DEVICE=true +SAI_VS_INTERFACE_LANE_MAP_FILE=/usr/share/sonic/hwsku/lanemap.ini +SAI_VS_CORE_PORT_INDEX_MAP_FILE=/usr/share/sonic/hwsku/coreportindexmap.ini +SAI_VS_INTERFACE_FABRIC_LANE_MAP_FILE=/usr/share/sonic/hwsku/fabriclanemap.ini diff --git a/src/sonic-device-data/tests/hwsku_json_checker b/src/sonic-device-data/tests/hwsku_json_checker index 6fd3d82c4cfb..ee15c6fb4b5e 100755 --- a/src/sonic-device-data/tests/hwsku_json_checker +++ b/src/sonic-device-data/tests/hwsku_json_checker @@ -7,7 +7,7 @@ import sys # Global variable PORT_ATTRIBUTES = ["default_brkout_mode"] -OPTIONAL_PORT_ATTRIBUTES = ["fec", "autoneg"] +OPTIONAL_PORT_ATTRIBUTES = ["fec", "autoneg", "port_type"] PORT_REG = "Ethernet(\d+)" HWSKU_JSON = '*hwsku.json' INTF_KEY = "interfaces" diff --git a/src/sonic-device-data/tests/permitted_list b/src/sonic-device-data/tests/permitted_list index f4f576b8dc31..46a82cce9248 100644 --- a/src/sonic-device-data/tests/permitted_list +++ b/src/sonic-device-data/tests/permitted_list @@ -235,6 +235,7 @@ sai_preinit_cmd_file sai_preinit_warmboot_cmd_file sai_postinit_cmd_file sai_postinit_warmboot_cmd_file +sai_tunnel_global_sip_mask_enable help_cli_enable memlist_enable serdes_lane_config_dfe @@ -256,3 +257,32 @@ appl_param_module_id serdes_lane_config_cl72_auto_polarity_en serdes_lane_config_cl72_restart_timeout_en bist_enable +mmu_config_override +buf.prigroup.guarantee +buf.prigroup.device_headroom_enable +buf.prigroup.pool_resume +buf.prigroup.pool_scale +buf.prigroup.port_guarantee_enable +buf.prigroup.port_max_enable +buf.prigroup.flow_control_enable +buf.queue.pool_scale +buf.mqueue.pool_scale +buf.queue.pool_scale +buf.mqueue.pool_scale +buf.mqueue.pool_scale_cpu +buf.queue.qgroup_guarantee_enable +profile_pg_1hdrm_8shared +buf.map.pri.prigroup +udp_port +multi_hash_recurse_depth_exact_match +robust_hash_seed_exact_match +my_udp_port_int +server_udp_port_int +probe_marker1_int +probe_marker2_int +hoplimit_int +lb_port_pipe0_int +lb_port_pipe1_int +ing_origin_id_device_id_mask +egr_origin_id_device_id_mask +port_count_in_pb_stream diff --git a/src/sonic-frr-mgmt-framework/templates/bgpd/bgpd.conf.db.route_map.j2 b/src/sonic-frr-mgmt-framework/templates/bgpd/bgpd.conf.db.route_map.j2 index 29a4817dc281..5c9e44f1d9a0 100644 --- a/src/sonic-frr-mgmt-framework/templates/bgpd/bgpd.conf.db.route_map.j2 +++ b/src/sonic-frr-mgmt-framework/templates/bgpd/bgpd.conf.db.route_map.j2 @@ -25,7 +25,7 @@ route-map {{rm_key[0]}} {{rm_val['route_operation']}} {{rm_key[1]}} match source-vrf {{rm_val['match_src_vrf']}} {% endif %} {# ---------------match ip/ipv6-Start-------------------------- #} -{% set ip_str = {'ipv4':'ip', 'ipv6':'ipv6' } %} +{% set ip_str = {'IPv4':'ip', 'IPv6':'ipv6' } %} {% if PREFIX_SET is defined and PREFIX_SET|length > 0 %} {% if 'match_prefix_set' in rm_val %} {% for pfx_key, pfx_val in PREFIX_SET.items() %} diff --git a/src/sonic-frr/Makefile b/src/sonic-frr/Makefile index 4bac1e42769d..45f37e52781e 100644 --- a/src/sonic-frr/Makefile +++ b/src/sonic-frr/Makefile @@ -10,7 +10,7 @@ STG_BRANCH = stg_temp.$(SUFFIX) $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : # Build the package pushd ./frr - git checkout -b $(FRR_BRANCH) origin/$(FRR_BRANCH) + git checkout -b $(FRR_BRANCH) origin/$(FRR_BRANCH) || git checkout $(FRR_BRANCH) stg branch --create $(STG_BRANCH) $(FRR_TAG) stg import -s ../patch/series tools/tarsource.sh -V -e '-sonic' diff --git a/src/sonic-frr/frr b/src/sonic-frr/frr index df7ab485bde1..c69608a68083 160000 --- a/src/sonic-frr/frr +++ b/src/sonic-frr/frr @@ -1 +1 @@ -Subproject commit df7ab485bde1a511f131f7ad6b70cb43c48c8e6d +Subproject commit c69608a68083d1017257977bd0260bebdb12322f diff --git a/src/sonic-frr/patch/0010-remove-doc-png-install.patch b/src/sonic-frr/patch/0010-remove-doc-png-install.patch new file mode 100644 index 000000000000..c911d43eaa29 --- /dev/null +++ b/src/sonic-frr/patch/0010-remove-doc-png-install.patch @@ -0,0 +1,21 @@ +Remove the *.png file installation from the frr-doc package. It doesn't look +like it's installed there with Bullseye's tools. + +From: Saikrishna Arcot + +--- + debian/frr-doc.install | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/debian/frr-doc.install b/debian/frr-doc.install +index c48dc5a8d..955c8fc5a 100644 +--- a/debian/frr-doc.install ++++ b/debian/frr-doc.install +@@ -3,7 +3,6 @@ usr/share/doc/frr/html + + # info + images referenced by it + usr/share/info/ +-doc/user/_build/texinfo/*.png usr/share/info + + # other + README.md usr/share/doc/frr diff --git a/src/sonic-frr/patch/series b/src/sonic-frr/patch/series index 2837a79f249a..376b6ce10c7b 100644 --- a/src/sonic-frr/patch/series +++ b/src/sonic-frr/patch/series @@ -7,3 +7,4 @@ 0008-Add-support-of-bgp-l3vni-evpn.patch 0009-Add-bgp-bestpath-peer-type-multipath-relax.patch 0009-Link-local-scope-was-not-set-while-binding-socket-for-bgp-ipv6-link-local-neighbors.patch +0010-remove-doc-png-install.patch diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service index b03c6a9551c0..b93fe92c04ed 100644 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.service @@ -12,6 +12,3 @@ Restart=on-failure RestartSec=10 TimeoutStopSec=3 -[Install] -WantedBy=sonic.target - diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer new file mode 100644 index 000000000000..e0458ff326f5 --- /dev/null +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.aaastatsd.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Delays aaastatsd daemon until SONiC has started +PartOf=aaastatsd.service + +[Timer] +OnActiveSec=1min 30 sec +Unit=aaastatsd.service + +[Install] +WantedBy=timers.target sonic.target + diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service index 4adf2aba77ad..5e2434527124 100644 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.service @@ -9,6 +9,3 @@ After=sonic.target Type=simple ExecStart=/usr/local/bin/hostcfgd -[Install] -WantedBy=sonic.target - diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer new file mode 100644 index 000000000000..baf80f4b4cbd --- /dev/null +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.hostcfgd.timer @@ -0,0 +1,11 @@ +[Unit] +Description=Delays hostcfgd daemon until SONiC has started +PartOf=hostcfgd.service + +[Timer] +OnActiveSec=1min 30 sec +Unit=hostcfgd.service + +[Install] +WantedBy=timers.target sonic.target + diff --git a/src/sonic-host-services/pytest.ini b/src/sonic-host-services/pytest.ini index ae0c05fcb5f1..8823631c6283 100644 --- a/src/sonic-host-services/pytest.ini +++ b/src/sonic-host-services/pytest.ini @@ -1,2 +1,2 @@ [pytest] -addopts = --cov=scripts --cov-report html --cov-report term --cov-report xml --ignore=tests/hostcfgd/test_vectors.py --ignore=tests/hostcfgd/test_radius_vectors.py +addopts = --cov=scripts --cov-report html --cov-report term --cov-report xml --ignore=tests/hostcfgd/test_vectors.py --ignore=tests/hostcfgd/test_radius_vectors.py --ignore=tests/caclmgrd/test_dhcp_vectors.py diff --git a/src/sonic-host-services/scripts/caclmgrd b/src/sonic-host-services/scripts/caclmgrd index 2d8b0b028f84..3ef3b0d0ef63 100755 --- a/src/sonic-host-services/scripts/caclmgrd +++ b/src/sonic-host-services/scripts/caclmgrd @@ -706,11 +706,12 @@ class ControlPlaneAclManager(daemon_base.DaemonBase): # Set up STATE_DB connector to monitor the change in MUX_CABLE_TABLE state_db_connector = None subscribe_mux_cable = None + state_db_id = swsscommon.SonicDBConfig.getDbId("STATE_DB") + if self.DualToR: self.log_info("Dual ToR mode") # set up state_db connector - state_db_id = swsscommon.SonicDBConfig.getDbId("STATE_DB") state_db_connector = swsscommon.DBConnector("STATE_DB", 0) subscribe_mux_cable = swsscommon.SubscriberStateTable(state_db_connector, self.MUX_CABLE_TABLE) sel.addSelectable(subscribe_mux_cable) diff --git a/src/sonic-host-services/scripts/determine-reboot-cause b/src/sonic-host-services/scripts/determine-reboot-cause index ac304a06a027..1408ad0e2952 100755 --- a/src/sonic-host-services/scripts/determine-reboot-cause +++ b/src/sonic-host-services/scripts/determine-reboot-cause @@ -62,7 +62,7 @@ def parse_warmfast_reboot_from_proc_cmdline(): def find_software_reboot_cause_from_reboot_cause_file(): - software_reboot_cause = None + software_reboot_cause = REBOOT_CAUSE_UNKNOWN if os.path.isfile(REBOOT_CAUSE_FILE): with open(REBOOT_CAUSE_FILE) as cause_file: software_reboot_cause = cause_file.readline().rstrip('\n') diff --git a/src/sonic-host-services/tests/caclmgrd/__init__.py b/src/sonic-host-services/tests/caclmgrd/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/src/sonic-host-services/tests/caclmgrd/caclmgrd_dhcp_test.py b/src/sonic-host-services/tests/caclmgrd/caclmgrd_dhcp_test.py new file mode 100644 index 000000000000..9e12fa9994d3 --- /dev/null +++ b/src/sonic-host-services/tests/caclmgrd/caclmgrd_dhcp_test.py @@ -0,0 +1,54 @@ +import os +import sys +import swsscommon + +from parameterized import parameterized +from sonic_py_common.general import load_module_from_source +from unittest import TestCase, mock +from pyfakefs.fake_filesystem_unittest import patchfs + +from .test_dhcp_vectors import CACLMGRD_DHCP_TEST_VECTOR +from tests.common.mock_configdb import MockConfigDb + + +DBCONFIG_PATH = '/var/run/redis/sonic-db/database_config.json' + + +swsscommon.swsscommon.ConfigDBConnector = MockConfigDb +test_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +modules_path = os.path.dirname(test_path) +scripts_path = os.path.join(modules_path, "scripts") +sys.path.insert(0, modules_path) +caclmgrd_path = os.path.join(scripts_path, 'caclmgrd') +caclmgrd = load_module_from_source('caclmgrd', caclmgrd_path) + + +class TestCaclmgrdDhcp(TestCase): + """ + Test caclmgrd dhcp + """ + @parameterized.expand(CACLMGRD_DHCP_TEST_VECTOR) + @patchfs + def test_caclmgrd_dhcp(self, test_name, test_data, fs): + if not os.path.exists(DBCONFIG_PATH): + fs.create_file(DBCONFIG_PATH) # fake database_config.json + + MockConfigDb.set_config_db(test_data["config_db"]) + + with mock.patch("caclmgrd.subprocess") as mocked_subprocess: + popen_mock = mock.Mock() + popen_attrs = test_data["popen_attributes"] + popen_mock.configure_mock(**popen_attrs) + mocked_subprocess.Popen.return_value = popen_mock + + call_mock = mock.Mock() + call_rc = test_data["call_rc"] + mocked_subprocess.call.return_value = call_rc + + caclmgrd_daemon = caclmgrd.ControlPlaneAclManager("caclmgrd") + mux_update = test_data["mux_update"] + + for key,data in mux_update: + caclmgrd_daemon.update_dhcp_acl(key, '', data) + + mocked_subprocess.call.assert_has_calls(test_data["expected_subprocess_calls"], any_order=False) diff --git a/src/sonic-host-services/tests/caclmgrd/test_dhcp_vectors.py b/src/sonic-host-services/tests/caclmgrd/test_dhcp_vectors.py new file mode 100644 index 000000000000..6a58f761251b --- /dev/null +++ b/src/sonic-host-services/tests/caclmgrd/test_dhcp_vectors.py @@ -0,0 +1,163 @@ +from unittest.mock import call + +""" + caclmgrd dhcp test vector +""" +CACLMGRD_DHCP_TEST_VECTOR = [ + [ + "Active_Present", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "active"}), + ("Ethernet8", {"state": "active"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --delete DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + call("iptables --delete DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 0, + }, + ], + [ + "Active_Absent", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "active"}), + ("Ethernet8", {"state": "active"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 1, + }, + ], + [ + "Standby_Present", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "standby"}), + ("Ethernet8", {"state": "standby"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 0, + }, + ], + [ + "Standby_Absent", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "standby"}), + ("Ethernet8", {"state": "standby"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --insert DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + call("iptables --insert DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 1, + }, + ], + [ + "Unknown_Present", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "unknown"}), + ("Ethernet8", {"state": "unknown"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --delete DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + call("iptables --delete DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 0, + }, + ], + [ + "Uknown_Absent", + { + "config_db": { + "DEVICE_METADATA": { + "localhost": { + "subtype": "DualToR", + "type": "ToRRouter", + } + }, + }, + "mux_update": [ + ("Ethernet4", {"state": "unknown"}), + ("Ethernet8", {"state": "unknown"}), + ], + "expected_subprocess_calls": [ + call("iptables --check DHCP -m physdev --physdev-in Ethernet4 -j DROP", shell=True), + call("iptables --check DHCP -m physdev --physdev-in Ethernet8 -j DROP", shell=True), + ], + "popen_attributes": { + 'communicate.return_value': ('output', 'error'), + }, + "call_rc": 1, + }, + ], +] diff --git a/src/sonic-host-services/tests/hostcfgd/mock_configdb.py b/src/sonic-host-services/tests/common/mock_configdb.py similarity index 96% rename from src/sonic-host-services/tests/hostcfgd/mock_configdb.py rename to src/sonic-host-services/tests/common/mock_configdb.py index 5edfc8618d54..7783e6e8eaa5 100644 --- a/src/sonic-host-services/tests/hostcfgd/mock_configdb.py +++ b/src/sonic-host-services/tests/common/mock_configdb.py @@ -5,7 +5,7 @@ class MockConfigDb(object): STATE_DB = None CONFIG_DB = None - def __init__(self): + def __init__(self, **kwargs): pass @staticmethod diff --git a/src/sonic-host-services/tests/hostcfgd/hostcfgd_radius_test.py b/src/sonic-host-services/tests/hostcfgd/hostcfgd_radius_test.py index 39c77b5beae7..5ae05bd9ac6e 100644 --- a/src/sonic-host-services/tests/hostcfgd/hostcfgd_radius_test.py +++ b/src/sonic-host-services/tests/hostcfgd/hostcfgd_radius_test.py @@ -10,7 +10,7 @@ from parameterized import parameterized from unittest import TestCase, mock from tests.hostcfgd.test_radius_vectors import HOSTCFGD_TEST_RADIUS_VECTOR -from tests.hostcfgd.mock_configdb import MockConfigDb +from tests.common.mock_configdb import MockConfigDb swsscommon.ConfigDBConnector = MockConfigDb diff --git a/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py b/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py index e3126dc5eafd..15dd66f29e7e 100644 --- a/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py +++ b/src/sonic-host-services/tests/hostcfgd/hostcfgd_test.py @@ -1,18 +1,19 @@ import os import sys -import swsscommon +import swsscommon as swsscommon_package +from swsscommon import swsscommon from parameterized import parameterized from sonic_py_common.general import load_module_from_source from unittest import TestCase, mock from .test_vectors import HOSTCFGD_TEST_VECTOR -from .mock_configdb import MockConfigDb +from tests.common.mock_configdb import MockConfigDb from pyfakefs.fake_filesystem_unittest import patchfs -swsscommon.swsscommon.ConfigDBConnector = MockConfigDb +swsscommon.ConfigDBConnector = MockConfigDb test_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) modules_path = os.path.dirname(test_path) scripts_path = os.path.join(modules_path, "scripts") @@ -93,7 +94,7 @@ def test_hostcfgd(self, test_name, test_data, fs): Returns: None """ - fs.add_real_paths(swsscommon.__path__) # add real path of swsscommon for database_config.json + fs.add_real_paths(swsscommon_package.__path__) # add real path of swsscommon for database_config.json fs.create_dir(hostcfgd.FeatureHandler.SYSTEMD_SYSTEM_DIR) MockConfigDb.set_config_db(test_data["config_db"]) with mock.patch("hostcfgd.subprocess") as mocked_subprocess: diff --git a/src/sonic-linux-kernel b/src/sonic-linux-kernel index 14a4212e279e..73413db57026 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit 14a4212e279e579048afe28247e80420e7b46de6 +Subproject commit 73413db570261cee72cb6add39da6410fb929586 diff --git a/src/sonic-platform-common b/src/sonic-platform-common index e168f1d46a9f..0dc71c1a19bd 160000 --- a/src/sonic-platform-common +++ b/src/sonic-platform-common @@ -1 +1 @@ -Subproject commit e168f1d46a9f1c30efc40065b3e80321c0f1ad9b +Subproject commit 0dc71c1a19bd27c15a2d4d0ac9c347637cdb4391 diff --git a/src/sonic-platform-daemons b/src/sonic-platform-daemons index 66e78174a726..84386e6a1c46 160000 --- a/src/sonic-platform-daemons +++ b/src/sonic-platform-daemons @@ -1 +1 @@ -Subproject commit 66e78174a7269cccc3da97b2b0f3846b69d6b8e7 +Subproject commit 84386e6a1c46e96bacb6c449c7611904227f58fb diff --git a/src/sonic-py-common/sonic_py_common/device_info.py b/src/sonic-py-common/sonic_py_common/device_info.py index 4d1df6352284..0b58a4231a65 100644 --- a/src/sonic-py-common/sonic_py_common/device_info.py +++ b/src/sonic-py-common/sonic_py_common/device_info.py @@ -29,6 +29,7 @@ NPU_NAME_PREFIX = "asic" NAMESPACE_PATH_GLOB = "/run/netns/*" ASIC_CONF_FILENAME = "asic.conf" +PLATFORM_ENV_CONF_FILENAME = "platform_env.conf" FRONTEND_ASIC_SUB_ROLE = "FrontEnd" BACKEND_ASIC_SUB_ROLE = "BackEnd" @@ -164,6 +165,29 @@ def get_asic_conf_file_path(): return None +def get_platform_env_conf_file_path(): + """ + Retrieves the path to the PLATFORM ENV conguration file on the device + + Returns: + A string containing the path to the PLATFORM ENV conguration file on success, + None on failure + """ + platform_env_conf_path_candidates = [] + + platform_env_conf_path_candidates.append(os.path.join(CONTAINER_PLATFORM_PATH, PLATFORM_ENV_CONF_FILENAME)) + + platform = get_platform() + if platform: + platform_env_conf_path_candidates.append(os.path.join(HOST_DEVICE_PATH, platform, PLATFORM_ENV_CONF_FILENAME)) + + for platform_env_conf_file_path in platform_env_conf_path_candidates: + if os.path.isfile(platform_env_conf_file_path): + return platform_env_conf_file_path + + return None + + def get_path_to_platform_dir(): """ Retreives the paths to the device's platform directory @@ -374,6 +398,22 @@ def is_multi_npu(): return (num_npus > 1) +def is_supervisor(): + platform_env_conf_file_path = get_platform_env_conf_file_path() + if platform_env_conf_file_path is None: + return False + with open(platform_env_conf_file_path) as platform_env_conf_file: + for line in platform_env_conf_file: + tokens = line.split('=') + if len(tokens) < 2: + continue + if tokens[0].lower() == 'supervisor': + val = tokens[1].strip() + if val == '1': + return True + return False + + def get_npu_id_from_name(npu_name): if npu_name.startswith(NPU_NAME_PREFIX): return npu_name[len(NPU_NAME_PREFIX):] diff --git a/src/sonic-py-common/sonic_py_common/multi_asic.py b/src/sonic-py-common/sonic_py_common/multi_asic.py index f6daba8e84a2..a5b5d48bab21 100644 --- a/src/sonic-py-common/sonic_py_common/multi_asic.py +++ b/src/sonic-py-common/sonic_py_common/multi_asic.py @@ -8,6 +8,7 @@ from .device_info import CONTAINER_PLATFORM_PATH from .device_info import HOST_DEVICE_PATH from .device_info import get_platform +from .device_info import is_supervisor ASIC_NAME_PREFIX = 'asic' NAMESPACE_PATH_GLOB = '/run/netns/*' @@ -45,7 +46,11 @@ def connect_config_db_for_ns(namespace=DEFAULT_NAMESPACE): def connect_to_all_dbs_for_ns(namespace=DEFAULT_NAMESPACE): """ The function connects to the DBs for a given namespace and - returns the handle + returns the handle + + For voq chassis systems, the db list includes databases from + supervisor card. Avoid connecting to these databases from linecards + If no namespace is provided, it will connect to the db in the default namespace. In case of multi ASIC, the default namespace is the @@ -56,7 +61,15 @@ def connect_to_all_dbs_for_ns(namespace=DEFAULT_NAMESPACE): handle to all the dbs for a namespaces """ db = swsscommon.SonicV2Connector(namespace=namespace) - for db_id in db.get_db_list(): + db_list = list(db.get_db_list()) + if not is_supervisor(): + try: + db_list.remove('CHASSIS_APP_DB') + db_list.remove('CHASSIS_STATE_DB') + except Exception: + pass + + for db_id in db_list: db.connect(db_id) return db diff --git a/src/sonic-py-swsssdk b/src/sonic-py-swsssdk index 6be76f45705f..2cd6236849d1 160000 --- a/src/sonic-py-swsssdk +++ b/src/sonic-py-swsssdk @@ -1 +1 @@ -Subproject commit 6be76f45705f35ae7a8baefea801558511cd68e7 +Subproject commit 2cd6236849d194625c014d1c2c370f6d2513eb76 diff --git a/src/sonic-sairedis b/src/sonic-sairedis index 84fa50a88f7b..78f36138e14e 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit 84fa50a88f7bd9b196018d89741fcf95ade0f983 +Subproject commit 78f36138e14e1ed0f0f772950f03420327ef1b1c diff --git a/src/sonic-swss b/src/sonic-swss index 7aca82df3b56..db9ca8306546 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit 7aca82df3b56276625ce3d70ffb45b849003b0d8 +Subproject commit db9ca8306546eec0c1b1b703be688e2a8a7ae77a diff --git a/src/sonic-swss-common b/src/sonic-swss-common index e95a4666ad90..7fed0002ee31 160000 --- a/src/sonic-swss-common +++ b/src/sonic-swss-common @@ -1 +1 @@ -Subproject commit e95a4666ad90f13c3675efb9238f273df5232e91 +Subproject commit 7fed0002ee3111a63934f38c6afd9a9e78e69a6b diff --git a/src/sonic-utilities b/src/sonic-utilities index b540f5f8fd73..171eb4f4c3df 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit b540f5f8fd73525d05f6cb3d1844849346f471c8 +Subproject commit 171eb4f4c3dff0c75e38c9f4dfbdbeb72a8eeb5a diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py index 51bc30c89b73..13ce554d022c 100644 --- a/src/sonic-yang-models/setup.py +++ b/src/sonic-yang-models/setup.py @@ -72,6 +72,7 @@ './yang-models/sonic-versions.yang', './yang-models/sonic-vlan.yang', './yang-models/sonic-vrf.yang', + './yang-models/sonic-lldp.yang', './yang-models/sonic_yang_tree']), ], zip_safe=False, diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index 5f354328794b..5d8009afbc04 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -983,6 +983,15 @@ } }, "BGP_NEIGHBOR": { + "10.0.0.1": { + "asn": "65200", + "holdtime": "180", + "keepalive": "60", + "local_addr": "10.0.0.2", + "name":"PEER1", + "nhopself":"0", + "rrclient":"0" + }, "default|192.168.1.1": { } }, @@ -1041,6 +1050,24 @@ "trap_ids": "ip2me", "trap_group": "queue1_group1" } + }, + "LLDP": { + "GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "12", + "multiplier": "5", + "supp_mgmt_address_tlv": "true", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + }, + "LLDP_PORT": { + "Ethernet0": { + "mode": "TRANSMIT", + "enabled": "true" + } } }, diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/crm.json b/src/sonic-yang-models/tests/yang_model_tests/tests/crm.json index c10e42d899f1..cdfc531f212d 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/crm.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/crm.json @@ -77,5 +77,43 @@ "desc": "IPMC_WITH_WRONG_THRESHOLD_TYPE pattern failure.", "eStrKey": "Pattern", "eStr": ["wrong" ] + }, + "MPLS_INSEG_WITH_WRONG_THRESHOLD_TYPE": { + "desc": "MPLS_INSEG_WITH_WRONG_THRESHOLD_TYPE pattern failure.", + "eStrKey": "Pattern", + "eStr": ["wrong" ] + }, + "MPLS_INSEG_WITH_WRONG_PERCENTAGE": { + "desc": "MPLS_INSEG_WITH_WRONG_PERCENTAGE must condition failure.", + "eStrKey": "Must" + }, + "MPLS_INSEG_WITH_HIGH_THRESHOLD_ERR": { + "desc": "MPLS_INSEG_WITH_HIGH_THRESHOLD_ERR must condition failure about high threshold being lower than low threshold.", + "eStr": ["high_threshold should be more than low_threshold"] + }, + "MPLS_INSEG_WITH_CORRECT_USED_VALUE": { + "desc": "MPLS_INSEG_WITH_CORRECT_USED_VALUE no failure." + }, + "MPLS_INSEG_WITH_CORRECT_FREE_VALUE": { + "desc": "MPLS_INSEG_WITH_CORRECT_FREE_VALUE no failure." + }, + "MPLS_NH_WITH_WRONG_THRESHOLD_TYPE": { + "desc": "MPLS_NH_WITH_WRONG_THRESHOLD_TYPE pattern failure.", + "eStrKey": "Pattern", + "eStr": ["wrong" ] + }, + "MPLS_NH_WITH_WRONG_PERCENTAGE": { + "desc": "MPLS_NH_WITH_WRONG_PERCENTAGE must condition failure.", + "eStrKey": "Must" + }, + "MPLS_NH_WITH_HIGH_THRESHOLD_ERR": { + "desc": "MPLS_NH_WITH_HIGH_THRESHOLD_ERR must condition failure about high threshold being lower than low threshold.", + "eStr": ["high_threshold should be more than low_threshold"] + }, + "MPLS_NH_WITH_CORRECT_USED_VALUE": { + "desc": "MPLS_NH_WITH_CORRECT_USED_VALUE no failure." + }, + "MPLS_NH_WITH_CORRECT_USED_VALUE": { + "desc": "MPLS_NH_WITH_CORRECT_USED_VALUE no failure." } } diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/lldp.json b/src/sonic-yang-models/tests/yang_model_tests/tests/lldp.json new file mode 100644 index 000000000000..fbd621b84fd5 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/lldp.json @@ -0,0 +1,28 @@ +{ + "LLDP_GLOBAL_TEST": { + "desc": "LLDP test global LLDP table" + }, + "LLDP_GLOBAL_TEST_INVALID_HELLO": { + "desc": "LLDP test global table with invalid hello value", + "eStrKey" : "InvalidValue", + "eStr": ["hello_time"] + }, + "LLDP_GLOBAL_TEST_INVALID_MULTIPLIER": { + "desc": "LLDP test global table with invalid multiplier value", + "eStrKey" : "InvalidValue", + "eStr": ["multiplier"] + }, + "LLDP_PORT_TEST": { + "desc": "LLDP test LLDP port table" + }, + "LLDP_PORT_TEST_INVALID_IFNAME": { + "desc": "LLDP test port table with invalid ifname", + "eStrKey" : "LeafRef", + "eStr": ["Eth"] + }, + "LLDP_PORT_TEST_INVALID_MODE": { + "desc": "LLDP test port table with invalid mode", + "eStrKey" : "InvalidValue", + "eStr": ["mode"] + } +} diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/crm.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/crm.json index db08d941b6d8..f2878bd7b2a8 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/crm.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/crm.json @@ -218,5 +218,115 @@ } } } + }, + "MPLS_INSEG_WITH_CORRECT_FREE_VALUE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_inseg_high_threshold": 90, + "mpls_inseg_low_threshold": 70, + "mpls_inseg_threshold_type": "free" + } + } + } + }, + "MPLS_INSEG_WITH_CORRECT_USED_VALUE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_inseg_high_threshold": 85, + "mpls_inseg_low_threshold": 25, + "mpls_inseg_threshold_type": "used" + } + } + } + }, + "MPLS_INSEG_WITH_HIGH_THRESHOLD_ERR": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_inseg_high_threshold": 80, + "mpls_inseg_low_threshold": 81, + "mpls_inseg_threshold_type": "PERCENTAGE" + } + } + } + }, + "MPLS_INSEG_WITH_WRONG_PERCENTAGE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_inseg_high_threshold": 110, + "mpls_inseg_low_threshold": 85, + "mpls_inseg_threshold_type": "PERCENTAGE" + } + } + } + }, + "MPLS_INSEG_WITH_WRONG_THRESHOLD_TYPE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_inseg_high_threshold": 90, + "mpls_inseg_low_threshold": 70, + "mpls_inseg_threshold_type": "wrong" + } + } + } + }, + "MPLS_NH_WITH_CORRECT_FREE_VALUE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_nexthop_high_threshold": 90, + "mpls_nexthop_low_threshold": 70, + "mpls_nexthop_threshold_type": "free" + } + } + } + }, + "MPLS_NH_WITH_CORRECT_USED_VALUE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_nexthop_high_threshold": 85, + "mpls_nexthop_low_threshold": 25, + "mpls_nexthop_threshold_type": "used" + } + } + } + }, + "MPLS_NH_WITH_HIGH_THRESHOLD_ERR": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_nexthop_high_threshold": 80, + "mpls_nexthop_low_threshold": 81, + "mpls_nexthop_threshold_type": "PERCENTAGE" + } + } + } + }, + "MPLS_NH_WITH_WRONG_PERCENTAGE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_nexthop_high_threshold": 110, + "mpls_nexthop_low_threshold": 85, + "mpls_nexthop_threshold_type": "PERCENTAGE" + } + } + } + }, + "MPLS_NH_WITH_WRONG_THRESHOLD_TYPE": { + "sonic-crm:sonic-crm": { + "sonic-crm:CRM": { + "Config": { + "mpls_nexthop_high_threshold": 90, + "mpls_nexthop_low_threshold": 70, + "mpls_nexthop_threshold_type": "wrong" + } + } + } } -} \ No newline at end of file +} diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/lldp.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/lldp.json new file mode 100644 index 000000000000..4543fc8a1bb1 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/lldp.json @@ -0,0 +1,166 @@ +{ + "LLDP_GLOBAL_TEST": { + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP": { + "sonic-lldp:GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "20", + "multiplier": "5", + "supp_mgmt_address_tlv": "true", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + } + } + }, + "LLDP_GLOBAL_TEST_INVALID_ID": { + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP": { + "sonic-lldp:GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "10", + "multiplier": "5", + "supp_mgmt_address_tlv": "true", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + } + } + }, + "LLDP_GLOBAL_TEST_INVALID_HELLO": { + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP": { + "sonic-lldp:GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "test", + "multiplier": "5", + "supp_mgmt_address_tlv": "true", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + } + } + }, + "LLDP_GLOBAL_TEST_INVALID_MULTIPLIER": { + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP": { + "sonic-lldp:GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "10", + "multiplier": "xyz", + "supp_mgmt_address_tlv": "true", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + } + } + }, + "LLDP_GLOBAL_TEST_DEFAULT_SUPP_MGMT_ADDR_TLV": { + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP": { + "sonic-lldp:GLOBAL": { + "mode": "TRANSMIT", + "enabled": "true", + "hello_time": "10", + "multiplier": "5", + "supp_mgmt_address_tlv": "false", + "supp_system_capabilities_tlv": "false", + "system_name": "sonic", + "system_description": "sonic-system" + } + } + } + }, + "LLDP_PORT_TEST": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": 9000, + "name": "Ethernet0", + "speed": 25000 + } + ] + } + }, + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP_PORT": { + "LLDP_PORT_LIST": [ + { + "ifname": "Ethernet0", + "mode": "TRANSMIT", + "enabled": "true" + } + ] + } + } + }, + "LLDP_PORT_TEST_INVALID_IFNAME": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": 9000, + "name": "Ethernet0", + "speed": 25000 + } + ] + } + }, + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP_PORT": { + "LLDP_PORT_LIST": [ + { + "ifname": "Eth", + "mode": "TRANSMIT", + "enabled": "true" + } + ] + } + } + }, + "LLDP_PORT_TEST_INVALID_MODE": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": 9000, + "name": "Ethernet0", + "speed": 25000 + } + ] + } + }, + "sonic-lldp:sonic-lldp": { + "sonic-lldp:LLDP_PORT": { + "LLDP_PORT_LIST": [ + { + "ifname": "Ethernet0", + "mode": "TRANSMITTING", + "enabled": "true" + } + ] + } + } + } +} diff --git a/src/sonic-yang-models/yang-models/sonic-bgp-neighbor.yang b/src/sonic-yang-models/yang-models/sonic-bgp-neighbor.yang index cbd94eefdacb..8e0e3f4cc803 100644 --- a/src/sonic-yang-models/yang-models/sonic-bgp-neighbor.yang +++ b/src/sonic-yang-models/yang-models/sonic-bgp-neighbor.yang @@ -48,7 +48,60 @@ module sonic-bgp-neighbor { container sonic-bgp-neighbor { container BGP_NEIGHBOR { + list BGP_NEIGHBOR_TEMPLATE_LIST { + description "This list is to support template based BGP neighbor configuration handled by bgpcfgd"; + key "neighbor"; + + leaf neighbor { + type inet:ip-address; + description "BGP Neighbor address"; + } + + leaf asn { + type uint32 { + range "1..4294967295"; + } + description "Peer AS number"; + } + + leaf holdtime { + type uint16; + description "Hold time"; + } + + leaf keepalive { + type uint16; + description "Keepalive interval"; + } + + leaf local_addr { + type inet:ip-address; + description "Local source address or interface name to use for connection."; + } + + leaf name { + type string; + description "Peer description"; + } + + leaf nhopself { + type uint8 { + range "0..1"; + } + description "Nexthop is self, no nexthop calculation"; + } + + leaf rrclient { + type uint8 { + range "0..1"; + } + description "Route reflector client"; + } + } + list BGP_NEIGHBOR_LIST { + description "This list is to support generic BGP neighbor configuration handled by frrcfgd and + frr_mgmt_framework_config field should be set to true in DEVICE_METADATA talbe for accepting the generic BGP table configurations."; key "vrf_name neighbor"; leaf vrf_name { diff --git a/src/sonic-yang-models/yang-models/sonic-crm.yang b/src/sonic-yang-models/yang-models/sonic-crm.yang index 29161958e479..48c15b0e48cc 100644 --- a/src/sonic-yang-models/yang-models/sonic-crm.yang +++ b/src/sonic-yang-models/yang-models/sonic-crm.yang @@ -353,6 +353,58 @@ module sonic-crm { type threshold; } + leaf mpls_inseg_threshold_type { + description "CRM threshold support for MPLS in-segment entries"; + + must "(((current()='PERCENTAGE' or current()='percentage') and + ../mpls_inseg_high_threshold<100 and + ../mpls_inseg_low_threshold<100) or + (current()!='PERCENTAGE' and current()!='percentage'))"; + type stypes:crm_threshold_type; + } + + leaf mpls_inseg_high_threshold { + description "CRM threshold support for MPLS in-segment entries"; + + must "(current() > ../mpls_inseg_low_threshold)" + { + error-message "high_threshold should be more than low_threshold"; + } + type threshold; + } + + leaf mpls_inseg_low_threshold { + description "CRM threshold support for MPLS in-segment entries"; + + type threshold; + } + + leaf mpls_nexthop_threshold_type { + description "CRM threshold support for MPLS next-hops"; + + must "(((current()='PERCENTAGE' or current()='percentage') and + ../mpls_nexthop_high_threshold<100 and + ../mpls_nexthop_low_threshold<100) or + (current()!='PERCENTAGE' and current()!='percentage'))"; + type stypes:crm_threshold_type; + } + + leaf mpls_nexthop_high_threshold { + description "CRM threshold support for MPLS next-hops"; + + must "(current() > ../mpls_nexthop_low_threshold)" + { + error-message "high_threshold should be more than low_threshold"; + } + type threshold; + } + + leaf mpls_nexthop_low_threshold { + description "CRM threshold support for MPLS next-hops"; + + type threshold; + } + } /* end of Config */ } diff --git a/src/sonic-yang-models/yang-models/sonic-flex_counter.yang b/src/sonic-yang-models/yang-models/sonic-flex_counter.yang index 3f0c805e1e99..6c37d7a0cb5c 100644 --- a/src/sonic-yang-models/yang-models/sonic-flex_counter.yang +++ b/src/sonic-yang-models/yang-models/sonic-flex_counter.yang @@ -23,6 +23,10 @@ module sonic-flex_counter { } } + typedef flex_delay_status { + type boolean; + } + description "FLEX_COUNTER_TABLE part of config_db.json"; /* below are in alphabetical order */ @@ -32,6 +36,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container DEBUG_COUNTER { @@ -39,6 +46,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PFCWD { @@ -46,6 +56,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PG_DROP { @@ -53,6 +66,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PG_WATERMARK { @@ -60,6 +76,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PORT { @@ -67,6 +86,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PORT_RATES { @@ -74,6 +96,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container PORT_BUFFER_DROP { @@ -81,6 +106,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container QUEUE { @@ -88,6 +116,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container QUEUE_WATERMARK { @@ -95,6 +126,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container RIF { @@ -102,6 +136,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } container RIF_RATES { @@ -109,6 +146,9 @@ module sonic-flex_counter { leaf FLEX_COUNTER_STATUS { type flex_status; } + leaf FLEX_COUNTER_DELAY_STATUS { + type flex_delay_status; + } } } diff --git a/src/sonic-yang-models/yang-models/sonic-interface.yang b/src/sonic-yang-models/yang-models/sonic-interface.yang index 48f63a29c563..f559eb6be1b6 100644 --- a/src/sonic-yang-models/yang-models/sonic-interface.yang +++ b/src/sonic-yang-models/yang-models/sonic-interface.yang @@ -68,6 +68,13 @@ module sonic-interface { } default "0"; } + leaf mpls { + description "Enable/disable MPLS routing for the interface"; + type enumeration { + enum enable; + enum disable; + } + } } /* end of INTERFACE_LIST */ diff --git a/src/sonic-yang-models/yang-models/sonic-lldp.yang b/src/sonic-yang-models/yang-models/sonic-lldp.yang new file mode 100644 index 000000000000..d1b04f28e93b --- /dev/null +++ b/src/sonic-yang-models/yang-models/sonic-lldp.yang @@ -0,0 +1,155 @@ +module sonic-lldp { + namespace "http://github.com/Azure/sonic-lldp"; + prefix slldp; + yang-version 1.1; + + import sonic-port { + prefix prt; + } + + import sonic-extension { + prefix sonic-ext; + } + + organization + "SONiC"; + + contact + "SONiC"; + + description + "SONiC LLDP yang model"; + + revision 2021-07-08 { + description + "Initial revision."; + } + + grouping lldp_mode_config { + leaf enabled { + type boolean; + description + "Enable/Disable LLDP"; + } + + leaf mode { + type enumeration { + enum RECEIVE; + enum TRANSMIT; + } + + description + "RX/TX mode for LLDP frames"; + } + } + + container sonic-lldp { + container LLDP { + container GLOBAL { + + leaf hello_time { + type uint8 { + range "5..254" { + error-message "Invalid hello timer value."; + } + } + default 30; + units seconds; + description + "It is the time interval at which periodic hellos are + exchanged. Default is 30 seconds"; + } + + leaf multiplier { + type uint8 { + range "1..10" { + error-message "Invalid LLDP multiplier value."; + } + } + default 4; + description + "This multiplier value is used to determine the timeout + interval (i.e. hello-time x multiplier value) after + which LLDP neighbor entry is deleted."; + } + + leaf system_name { + type string; + description + "System administratively assigned name"; + } + + leaf system_description { + type string; + description + "System description"; + } + + leaf supp_mgmt_address_tlv { + type boolean; + default false; + description + "Suppress sending of Management Address TLV in LLDP frames"; + } + + leaf supp_system_capabilities_tlv { + type boolean; + default false; + description + "Suppress sending of System Capabilities TLV in LLDP frames"; + } + + leaf enabled { + type boolean; + default true; + description + "Enable/Disable LLDP"; + } + + leaf mode { + type enumeration { + enum RECEIVE; + enum TRANSMIT; + } + + description + "RX/TX mode for LLDP frames"; + } + + //uses lldp_mode_config; + } + } + + container LLDP_PORT { + list LLDP_PORT_LIST { + key "ifname"; + + leaf ifname { + type leafref { + path "/prt:sonic-port/prt:PORT/prt:PORT_LIST/prt:name"; + } + description + "Reference of port on which LLDP to be configured."; + } + + leaf enabled { + type boolean; + default true; + description + "Enable/Disable LLDP"; + } + + leaf mode { + type enumeration { + enum RECEIVE; + enum TRANSMIT; + } + + description + "RX/TX mode for LLDP frames"; + } + //uses lldp_mode_config; + } + } + } +} diff --git a/src/sonic-yang-models/yang-models/sonic-nat.yang b/src/sonic-yang-models/yang-models/sonic-nat.yang index 03e12c2301a3..d01a1a9617f4 100644 --- a/src/sonic-yang-models/yang-models/sonic-nat.yang +++ b/src/sonic-yang-models/yang-models/sonic-nat.yang @@ -7,9 +7,10 @@ module sonic-nat { prefix inet; } - import sonic-acl { - prefix sacl; - } + // Comment sonic-acl import here until libyang back-links issue is resolved for ACL_TABLE leaf reference. + // import sonic-acl { + // prefix sacl; + // } import sonic-types { prefix stypes; diff --git a/src/sonic-yang-models/yang-models/sonic-portchannel.yang b/src/sonic-yang-models/yang-models/sonic-portchannel.yang index f02a45d93917..587a19e4bec6 100644 --- a/src/sonic-yang-models/yang-models/sonic-portchannel.yang +++ b/src/sonic-yang-models/yang-models/sonic-portchannel.yang @@ -179,6 +179,13 @@ module sonic-portchannel { } default "0"; } + leaf mpls { + description "Enable/disable MPLS routing for the portchannel interface"; + type enumeration { + enum enable; + enum disable; + } + } } /* end of list PORTCHANNEL_INTERFACE_LIST */ list PORTCHANNEL_INTERFACE_IPPREFIX_LIST { diff --git a/src/sonic-yang-models/yang-models/sonic-vlan.yang b/src/sonic-yang-models/yang-models/sonic-vlan.yang index d6f2a4808a6f..c63bc6b46ac4 100644 --- a/src/sonic-yang-models/yang-models/sonic-vlan.yang +++ b/src/sonic-yang-models/yang-models/sonic-vlan.yang @@ -80,6 +80,13 @@ module sonic-vlan { } default "0"; } + leaf mpls { + description "Enable/disable MPLS routing for the vlan interface"; + type enumeration { + enum enable; + enum disable; + } + } } /* end of VLAN_INTERFACE_LIST */ diff --git a/src/tacacs/nss/patch/0009-fix-compile-error-strncpy.patch b/src/tacacs/nss/patch/0009-fix-compile-error-strncpy.patch new file mode 100644 index 000000000000..5f01047f55d1 --- /dev/null +++ b/src/tacacs/nss/patch/0009-fix-compile-error-strncpy.patch @@ -0,0 +1,29 @@ +Fix calls to strncpy + +From: Saikrishna Arcot + +Calls to strncpy don't guarantee that the destination buffer will be +terminated with a null-byte. GCC, with the -D_FORTIFY_SOURCE=2 flag, will +error out when strncpy is being called with a max size equal to the size of +the destination buffer. + +Change these calls to pass in one less than the size of the destination +buffer, and explicitly add a null byte at the end of the buffer. +--- + nss_tacplus.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/nss_tacplus.c b/nss_tacplus.c +index cc6f0aa..2de00a6 100644 +--- a/nss_tacplus.c ++++ b/nss_tacplus.c +@@ -127,7 +127,8 @@ static int parse_tac_server(char *srv_buf) + } + } + else if(!strncmp(token, "vrf=", 4)){ +- strncpy(vrfname, token + 4, sizeof(vrfname)); ++ strncpy(vrfname, token + 4, sizeof(vrfname) - 1); ++ vrfname[sizeof(vrfname) - 1] = '\0'; + } + else if(!strncmp(token, "secret=", 7)) { + if(tac_srv[tac_srv_no].key) diff --git a/src/tacacs/nss/patch/series b/src/tacacs/nss/patch/series index b60214ead9bc..83e2b31e484f 100644 --- a/src/tacacs/nss/patch/series +++ b/src/tacacs/nss/patch/series @@ -6,3 +6,4 @@ 0006-fix-compiling-warning-about-token-dereference.patch 0007-Add-support-for-TACACS-source-address.patch 0008-do-not-create-or-modify-local-user-if-there-is-no-pr.patch +0009-fix-compile-error-strncpy.patch diff --git a/src/thrift_0_13_0/.gitignore b/src/thrift_0_13_0/.gitignore new file mode 100644 index 000000000000..dc29c1367931 --- /dev/null +++ b/src/thrift_0_13_0/.gitignore @@ -0,0 +1 @@ +thrift* \ No newline at end of file diff --git a/src/thrift_0_13_0/Makefile b/src/thrift_0_13_0/Makefile new file mode 100644 index 000000000000..55cb4d9212ef --- /dev/null +++ b/src/thrift_0_13_0/Makefile @@ -0,0 +1,32 @@ +SHELL = /bin/bash +.ONESHELL: +.SHELLFLAGS += -e -x + +THRIFT_VERSION = 0.13.0 +THRIFT_VERSION_FULL = $(THRIFT_VERSION)-6 + +MAIN_TARGET = libthrift-$(THRIFT_VERSION)_$(THRIFT_VERSION_FULL)_$(CONFIGURED_ARCH).deb +DERIVED_TARGETS = libthrift-dev_$(THRIFT_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + python3-thrift_$(THRIFT_VERSION_FULL)_$(CONFIGURED_ARCH).deb \ + thrift-compiler_$(THRIFT_VERSION_FULL)_$(CONFIGURED_ARCH).deb + +THRIFT_LINK_PRE = http://deb.debian.org/debian/pool/main/t/thrift/ + +$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : + rm -rf thrift-$(THRIFT_VERSION) + + wget -O "thrift_$(THRIFT_VERSION_FULL).debian.tar.xz" "$(THRIFT_LINK_PRE)/thrift_$(THRIFT_VERSION_FULL).debian.tar.xz" + wget -O "thrift_$(THRIFT_VERSION).orig.tar.gz" "$(THRIFT_LINK_PRE)/thrift_$(THRIFT_VERSION).orig.tar.gz" + wget -O "thrift_$(THRIFT_VERSION_FULL).dsc" "$(THRIFT_LINK_PRE)/thrift_$(THRIFT_VERSION_FULL).dsc" + + dpkg-source -x thrift_$(THRIFT_VERSION_FULL).dsc + pushd thrift-$(THRIFT_VERSION) + + # Disable php perl and few other packages as they need additional packages to be installed + patch -p1 < ../patch/0001-Remove-unneeded-packages.patch + DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -d -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --admindir $(SONIC_DPKG_ADMINDIR) + popd + + mv $(DERIVED_TARGETS) $* $(DEST)/ + +$(addprefix $(DEST)/, $(DERIVED_TARGETS)): $(DEST)/% : $(DEST)/$(MAIN_TARGET) diff --git a/src/thrift_0_13_0/patch/0001-Remove-unneeded-packages.patch b/src/thrift_0_13_0/patch/0001-Remove-unneeded-packages.patch new file mode 100644 index 000000000000..f1565408a722 --- /dev/null +++ b/src/thrift_0_13_0/patch/0001-Remove-unneeded-packages.patch @@ -0,0 +1,85 @@ +From 7a8d588fa0425550cfd42c3300c8c0a643137190 Mon Sep 17 00:00:00 2001 +From: Myron Sosyak +Date: Fri, 13 Aug 2021 11:26:13 +0000 +Subject: [PATCH] Remove-unneeded-packages + +--- + debian/control | 28 ---------------------------- + debian/rules | 7 +++---- + 2 files changed, 3 insertions(+), 32 deletions(-) + +diff --git a/debian/control b/debian/control +index 5126e47..3f3028c 100644 +--- a/debian/control ++++ b/debian/control +@@ -13,8 +13,6 @@ Build-Depends: debhelper-compat (= 11), dh-python, + python3-all-dev, + python3-six, + golang-go, golang-github-golang-mock-dev, +- pkg-php-tools (>= 1.14~), php-dev, phpunit, php-codesniffer, +- perl (>= 5.22), libbit-vector-perl, libclass-accessor-perl, + # openjdk-11-jdk, javahelper, maven-debian-helper (>= 1.5), ant (>= 1.7), ant-optional, + # libhttpclient-java, libslf4j-java, libservlet3.1-java (>= 8), + # nodejs, npm, +@@ -175,32 +173,6 @@ Description: Python library for Thrift (debug symbols) + # . + # This package contains Javadoc HTML documentation for libthrift-java . + # +-Package: php-thrift +-Architecture: any +-Section: php +-Depends: ${phpcomposer:Debian-require}, ${shlibs:Depends}, ${misc:Depends} +-Provides: ${php:Provides} +-Conflicts: php7.0-thrift, php7.2-thrift +-Replaces: php7.0-thrift, php7.2-thrift +-Description: PHP language support for Thrift +- Thrift is a software framework for the development of reliable and +- performant communication and data serialization. It combines a software +- stack with code generation to build services that operate seamlessly +- across a number of different development languages. +- . +- This package provides the PHP5 language support for Thrift. +- +-Package: libthrift-perl +-Section: perl +-Architecture: all +-Depends: ${perl:Depends}, ${misc:Depends} +-Description: Perl language support for Thrift +- Thrift is a software framework for the development of reliable and +- performant communication and data serialization. It combines a software +- stack with code generation to build services that operate seamlessly +- across a number of different development languages. +- . +- This package provides the Perl language support for Thrift. + + Package: golang-thrift-dev + Architecture: amd64 arm64 armel armhf i386 ppc64el +diff --git a/debian/rules b/debian/rules +index ba63e6f..8217796 100755 +--- a/debian/rules ++++ b/debian/rules +@@ -47,7 +47,6 @@ override_dh_auto_clean: + $(CURDIR)/lib/go/test/gopath/src/golang.org/x/net \ + $(CURDIR)/lib/go/test/gopath/src/github.com/golang/mock + [ ! -f Makefile ] || $(MAKE) clean +- cd $(CURDIR)/lib/php/src/ext/thrift_protocol/ && phpize --clean + find $(CURDIR) \( -name Makefile -o -name Makefile.in \) -exec rm {} \; + find $(CURDIR) -name .dirstamp -exec rm {} \; + $(RM) aclocal.m4 config.h config.log config.status configure \ +@@ -65,10 +64,10 @@ override_dh_auto_clean: + + override_dh_auto_configure: + dh_auto_configure -- \ +- --with-cpp --with-c_glib --with-php --with-php_extension \ +- --with-perl --without-python --with-py3 --without-java \ ++ --with-cpp --with-c_glib --without-php --without-php_extension \ ++ --without-perl --without-python --with-py3 --without-java \ + --without-nodejs --without-erlang --without-lua \ +- --with-go --with-ruby \ ++ --without-go --without-ruby \ + --with-qt4=no --with-qt5=yes \ + --without-rust \ + --disable-tutorial +-- +2.17.1 +