diff --git a/.azure-pipelines/azure-pipelines-repd-build-variables.yml b/.azure-pipelines/azure-pipelines-repd-build-variables.yml index af77e97e2ff0..9c742ba19f45 100644 --- a/.azure-pipelines/azure-pipelines-repd-build-variables.yml +++ b/.azure-pipelines/azure-pipelines-repd-build-variables.yml @@ -1,7 +1,5 @@ variables: ${{ if eq(variables['Build.Reason'],'PullRequest') }}: VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=$([[ "$(System.PullRequest.TargetBranch)" =~ ^20[2-9][0-9]{3}$ ]] && echo deb,py2,py3,web,git,docker)' - ${{ elseif ne(variables['Build.SourceBranchName'],'master') }}: - VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' ${{ else }}: - VERSION_CONTROL_OPTIONS: '' + VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker' diff --git a/.azure-pipelines/official-build-cache.yml b/.azure-pipelines/official-build-cache.yml index 94fd48ede501..99b36dbdff89 100644 --- a/.azure-pipelines/official-build-cache.yml +++ b/.azure-pipelines/official-build-cache.yml @@ -11,6 +11,14 @@ schedules: - master - 202012 +resources: + repositories: + - repository: buildimage + type: github + name: sonic-net/sonic-buildimage + ref: master + endpoint: sonic-net + trigger: none pr: none @@ -20,7 +28,8 @@ stages: variables: - name: CACHE_MODE value: cache - - template: azure-pipelines-repd-build-variables.yml + - template: .azure-pipelines/azure-pipelines-repd-build-variables.yml@buildimage + - template: .azure-pipelines/template-variables.yml@buildimage jobs: - template: azure-pipelines-build.yml parameters: diff --git a/.azure-pipelines/template-variables.yml b/.azure-pipelines/template-variables.yml index 42d46182d263..934693196807 100644 --- a/.azure-pipelines/template-variables.yml +++ b/.azure-pipelines/template-variables.yml @@ -6,3 +6,4 @@ variables: SONIC_BUILD_RETRY_INTERVAL: 600 DOCKER_BUILDKIT: 0 DOCKER_BUILD_TIMEOUT: 3600 + MIRROR_SNAPSHOT: y diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index b00d61870882..04601ca65f23 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -12,6 +12,7 @@ on: - opened - reopened branches: + - master - '202012' - '202[1-9][0-9][0-9]' - '20[3-9][0-9][0-9][0-9]' diff --git a/.gitmodules b/.gitmodules index 55299d62fe75..b2fe3c4800b5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -71,9 +71,6 @@ [submodule "src/sonic-mgmt-framework"] path = src/sonic-mgmt-framework url = https://github.com/sonic-net/sonic-mgmt-framework -[submodule "Switch-SDK-drivers"] - path = platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers - url = https://github.com/Mellanox/Switch-SDK-drivers [submodule "src/sonic-ztp"] path = src/sonic-ztp url = https://github.com/sonic-net/sonic-ztp diff --git a/Makefile.work b/Makefile.work index bea20edb4219..e0099429ed2a 100644 --- a/Makefile.work +++ b/Makefile.work @@ -499,6 +499,7 @@ SONIC_BUILD_INSTRUCTION := $(MAKE) \ MDEBUG=$(MDEBUG) \ PASSWORD=$(PASSWORD) \ USERNAME=$(USERNAME) \ + CHANGE_DEFAULT_PASSWORD=$(CHANGE_DEFAULT_PASSWORD) \ SONIC_BUILD_JOBS=$(SONIC_BUILD_JOBS) \ SONIC_USE_DOCKER_BUILDKIT=$(SONIC_USE_DOCKER_BUILDKIT) \ VS_PREPARE_MEM=$(VS_PREPARE_MEM) \ diff --git a/README.md b/README.md index 0aa24bebfb67..05c9f5102c98 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,3 @@ -*static analysis*: - -[![Total alerts](https://img.shields.io/lgtm/alerts/g/Azure/sonic-buildimage.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/Azure/sonic-buildimage/alerts/) -[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/Azure/sonic-buildimage.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/Azure/sonic-buildimage/context:python) - *master builds*: [![Barefoot](https://dev.azure.com/mssonic/build/_apis/build/status/barefoot/Azure.sonic-buildimage.official.barefoot?branchName=master&label=Barefoot)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=146&branchName=master) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f1004ab709d1..ece3459196d1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -55,6 +55,8 @@ stages: - stage: Build pool: sonicbld + variables: + INSTALL_DEBUG_TOOLS: y dependsOn: [] jobs: - template: .azure-pipelines/azure-pipelines-build.yml @@ -174,8 +176,7 @@ stages: section: part-2 - job: t0_testbedv2 - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 displayName: "kvmtest-t0 by TestbedV2" timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) @@ -188,8 +189,7 @@ stages: MAX_WORKER: $(T0_INSTANCE_NUM) - job: t0_2vlans_testbedv2 - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 displayName: "kvmtest-t0-2vlans by TestbedV2" timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) @@ -252,8 +252,7 @@ stages: vmtype: ceos - job: t1_lag_testbedv2 - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 displayName: "kvmtest-t1-lag by TestbedV2" timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) @@ -319,8 +318,7 @@ stages: - job: multi_asic_testbedv2 displayName: "kvmtest-multi-asic-t1-lag by TestbedV2" - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) continueOnError: false @@ -334,8 +332,7 @@ stages: NUM_ASIC: 4 - job: dualtor_testbedv2 - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 displayName: "kvmtest-dualtor-t0 by TestbedV2" timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) @@ -350,8 +347,7 @@ stages: - job: sonic_t0_testbedv2 displayName: "kvmtest-t0-sonic by TestbedV2" - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) continueOnError: false @@ -368,8 +364,7 @@ stages: - job: wan_testbedv2 displayName: "kvmtest-wan by TestbedV2" - pool: - vmImage: 'ubuntu-20.04' + pool: ubuntu-20.04 timeoutInMinutes: 240 condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES')) continueOnError: false diff --git a/build_debian.sh b/build_debian.sh index c0f409f49d0e..b599b8c859bb 100755 --- a/build_debian.sh +++ b/build_debian.sh @@ -684,6 +684,16 @@ sudo LANG=C chroot $FILESYSTEM_ROOT umount /proc || true ## Prepare empty directory to trigger mount move in initramfs-tools/mount_loop_root, implemented by patching sudo mkdir $FILESYSTEM_ROOT/host + +if [[ "$CHANGE_DEFAULT_PASSWORD" == "y" ]]; then + ## Expire default password for exitsing users that can do login + default_users=$(cat $FILESYSTEM_ROOT/etc/passwd | grep "/home"| grep ":/bin/bash\|:/bin/sh" | awk -F ":" '{print $1}' 2> /dev/null) + for user in $default_users + do + sudo LANG=C chroot $FILESYSTEM_ROOT passwd -e ${user} + done +fi + ## Compress most file system into squashfs file sudo rm -f $ONIE_INSTALLER_PAYLOAD $FILESYSTEM_SQUASHFS ## Output the file system total size for diag purpose diff --git a/check_install.py b/check_install.py index b8fc3936f751..3a923e91deb6 100755 --- a/check_install.py +++ b/check_install.py @@ -11,6 +11,7 @@ def main(): parser = argparse.ArgumentParser(description='test_login cmdline parser') parser.add_argument('-u', default="admin", help='login user name') parser.add_argument('-P', default="YourPaSsWoRd", help='login password') + parser.add_argument('-N', default="Test@2022", help='new password') parser.add_argument('-p', type=int, default=9000, help='local port') args = parser.parse_args() @@ -20,6 +21,7 @@ def main(): cmd_prompt = "{}@sonic:~\$ $".format(args.u) grub_selection = "The highlighted entry will be executed" firsttime_prompt = 'firsttime_exit' + passwd_change_prompt = ['Current password:', 'New password:', 'Retype new password:'] i = 0 while True: @@ -36,7 +38,6 @@ def main(): # select default SONiC Image p.expect(grub_selection) p.sendline() - # bootup sonic image while True: i = p.expect([login_prompt, passwd_prompt, firsttime_prompt, cmd_prompt]) @@ -46,6 +47,30 @@ def main(): elif i == 1: # send password p.sendline(args.P) + # Check for password change prompt + try: + p.expect('Current password:', timeout=2) + except pexpect.TIMEOUT: + break + else: + # send old password for password prompt + p.sendline(args.P) + p.expect(passwd_change_prompt[1]) + # send new password + p.sendline(args.N) + p.expect(passwd_change_prompt[2]) + # retype new password + p.sendline(args.N) + time.sleep(1) + # Restore default password + p.sendline('passwd {}'.format(args.u)) + p.expect(passwd_change_prompt[0]) + p.sendline(args.N) + p.expect(passwd_change_prompt[1]) + p.sendline(args.P) + p.expect(passwd_change_prompt[2]) + p.sendline(args.P) + break elif i == 2: # fix a login timeout issue, caused by the login_prompt message mixed with the output message of the rc.local time.sleep(1) diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm index 93c5c8d21560..a10f1f5c6f24 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/jr2-a7280cr3-32d4-40x100G.config.bcm @@ -493,15 +493,16 @@ tm_port_header_type_out_233.BCM8869X=CPU tm_port_header_type_in_240.BCM8869X=INJECTED_2 tm_port_header_type_out_240.BCM8869X=RAW -sai_recycle_port_lane_base=0 -ucode_port_221.BCM8869X=RCY.21:core_0.221 -ucode_port_222.BCM8869X=RCY.22:core_1.222 -tm_port_header_type_out_221.BCM8869X=ETH -tm_port_header_type_in_221.BCM8869X=ETH -tm_port_header_type_out_222.BCM8869X=ETH -tm_port_header_type_in_222.BCM8869X=ETH -port_init_speed_221.BCM8869X=400000 -port_init_speed_222.BCM8869X=400000 +#RCY +sai_recycle_port_lane_base=200 +ucode_port_49.BCM8869X=RCY0:core_0.49 +ucode_port_50.BCM8869X=RCY1:core_1.50 +tm_port_header_type_out_49.BCM8869X=ETH +tm_port_header_type_in_49.BCM8869X=ETH +tm_port_header_type_out_50.BCM8869X=ETH +tm_port_header_type_in_50.BCM8869X=ETH +port_init_speed_49.BCM8869X=400000 +port_init_speed_50.BCM8869X=400000 # fabric port_init_cl72_sfi=1 @@ -788,6 +789,7 @@ dport_map_direct.BCM8869X=1 pmf_sexem3_stage.BCM8869X=IPMF3 rif_id_max=0x6000 +appl_param_nof_ports_per_modid=64 dma_desc_aggregator_chain_length_max.BCM8869X=1000 dma_desc_aggregator_buff_size_kb.BCM8869X=100 dma_desc_aggregator_timeout_usec.BCM8869X=1000 diff --git a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini index 34ddd34c2806..ca11e4c0dd6b 100644 --- a/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini +++ b/device/arista/x86_64-arista_7800r3_48cq2_lc/Arista-7800R3-48CQ2-C48/port_config.ini @@ -47,5 +47,5 @@ Ethernet176 54,55 Ethernet45/1 45 Ext 100000 1 Ethernet180 50,51 Ethernet46/1 46 Ext 100000 1 46 8 Ethernet184 52,53 Ethernet47/1 47 Ext 100000 1 47 8 Ethernet188 48,49 Ethernet48/1 48 Ext 100000 1 48 8 -Ethernet-Rec0 221 Recirc0/0 51 Rec 400000 0 221 8 -Ethernet-IB0 222 Recirc0/1 52 Inb 400000 1 222 8 +Ethernet-Rec0 249 Recirc0/0 51 Rec 400000 0 49 8 +Ethernet-IB0 250 Recirc0/1 52 Inb 400000 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers.json.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers.json.j2 new file mode 100644 index 000000000000..f34a844f4a87 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers.json.j2 @@ -0,0 +1,2 @@ +{%- set default_topo = 't2' %} +{%- include 'buffers_config.j2' %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers_defaults_t2.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers_defaults_t2.j2 new file mode 100644 index 000000000000..e7af0aff4934 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/buffers_defaults_t2.j2 @@ -0,0 +1,37 @@ +{%- set default_cable = '300m' %} + +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {%- for port_idx in range(0,144,8) %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} + {%- endfor %} +{%- endmacro %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "6441610000", + "type": "both", + "mode": "dynamic", + "xoff": "11354112" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"1280", + "xon_offset": "2560", + "dynamic_th":"0" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"33030144" + }, + "egress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"-1" + } + }, +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm index 8421a2b9ee08..7fc12d0c432f 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/j2p-a7800r3a-36d-36x400G.config.bcm @@ -263,15 +263,15 @@ tm_port_header_type_in_219=INJECTED_2 port_init_speed_sat=400000 ### RCY -sai_recycle_port_lane_base=0 -ucode_port_221=RCY.21:core_0.221 -ucode_port_222=RCY.22:core_1.222 -tm_port_header_type_out_221=ETH -tm_port_header_type_in_221=ETH -tm_port_header_type_out_222=ETH -tm_port_header_type_in_222=ETH -port_init_speed_221=400000 -port_init_speed_222=400000 +sai_recycle_port_lane_base=200 +ucode_port_49=RCY0:core_0.49 +ucode_port_50=RCY1:core_1.50 +tm_port_header_type_out_49=ETH +tm_port_header_type_in_49=ETH +tm_port_header_type_out_50=ETH +tm_port_header_type_in_50=ETH +port_init_speed_49=400000 +port_init_speed_50=400000 #OLP port tm_port_header_type_in_240=INJECTED_2 @@ -981,5 +981,6 @@ serdes_tx_taps_34=nrz:-5:83:-22:0:0:0 serdes_tx_taps_35=nrz:-4:75:-21:0:0:0 serdes_tx_taps_36=nrz:-8:89:-29:0:0:0 +appl_param_nof_ports_per_modid=64 xflow_macsec_secure_chan_to_num_secure_assoc_encrypt=2 xflow_macsec_secure_chan_to_num_secure_assoc_decrypt=2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini new file mode 100644 index 000000000000..e8289ab03112 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 40000 300m 1280 2560 69632 0 1280 + 100000 300m 1280 2560 110592 0 1280 + 400000 300m 1280 2560 315392 0 1280 + 40000 1000m 1280 2560 114688 0 1280 + 100000 1000m 1280 2560 225280 0 1280 + 400000 1000m 1280 2560 778240 0 1280 + 40000 2000m 1280 2560 184320 0 1280 + 100000 2000m 1280 2560 393216 0 1280 + 400000 2000m 1280 2560 1445888 0 1280 + 40000 80000m 1280 2560 5369856 0 1280 + 100000 80000m 1280 2560 13357056 0 1280 + 400000 80000m 1280 2560 53305344 0 1280 + 40000 120000m 1280 2560 8028160 0 1280 + 100000 120000m 1280 2560 20004864 0 1280 + 400000 120000m 1280 2560 79900672 0 1280 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini index a72d84f584ea..f8448735b26f 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/port_config.ini @@ -17,5 +17,5 @@ Ethernet112 24,25,26,27 Ethernet15/1 15 Ext 100000 Eth1 Ethernet120 16,17,18,19 Ethernet16/1 16 Ext 100000 Eth120-ASIC0 0 16 8 Ethernet128 8,9,10,11 Ethernet17/1 17 Ext 100000 Eth128-ASIC0 0 17 8 Ethernet136 0,1,2,3 Ethernet18/1 18 Ext 100000 Eth136-ASIC0 0 18 8 -Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 221 8 -Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 222 8 +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/qos.json.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/qos.json.j2 new file mode 100644 index 000000000000..3e548325ea30 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/0/qos.json.j2 @@ -0,0 +1 @@ +{%- include 'qos_config.j2' %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers.json.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers.json.j2 new file mode 100644 index 000000000000..f34a844f4a87 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers.json.j2 @@ -0,0 +1,2 @@ +{%- set default_topo = 't2' %} +{%- include 'buffers_config.j2' %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers_defaults_t2.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers_defaults_t2.j2 new file mode 100644 index 000000000000..3555175244d4 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/buffers_defaults_t2.j2 @@ -0,0 +1,37 @@ +{%- set default_cable = '300m' %} + +{%- macro generate_port_lists(PORT_ALL) %} + {# Generate list of ports #} + {%- for port_idx in range(144,288,8) %} + {%- if PORT_ALL.append("Ethernet%d" % (port_idx)) %}{%- endif %} + {%- endfor %} +{%- endmacro %} + +{%- macro generate_buffer_pool_and_profiles() %} + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "6441610000", + "type": "both", + "mode": "dynamic", + "xoff": "11354112" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"1280", + "xon_offset": "2560", + "dynamic_th":"0" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"33030144" + }, + "egress_lossy_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "dynamic_th":"-1" + } + }, +{%- endmacro %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm index 34a77903ebdf..c13991ae101f 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/j2p-a7800r3a-36d-36x400G.config.bcm @@ -263,15 +263,15 @@ tm_port_header_type_in_219=INJECTED_2 port_init_speed_sat=400000 ### RCY -sai_recycle_port_lane_base=0 -ucode_port_221=RCY.21:core_0.221 -ucode_port_222=RCY.22:core_1.222 -tm_port_header_type_out_221=ETH -tm_port_header_type_in_221=ETH -tm_port_header_type_out_222=ETH -tm_port_header_type_in_222=ETH -port_init_speed_221=400000 -port_init_speed_222=400000 +sai_recycle_port_lane_base=200 +ucode_port_49=RCY0:core_0.49 +ucode_port_50=RCY1:core_1.50 +tm_port_header_type_out_49=ETH +tm_port_header_type_in_49=ETH +tm_port_header_type_out_50=ETH +tm_port_header_type_in_50=ETH +port_init_speed_49=400000 +port_init_speed_50=400000 #OLP port tm_port_header_type_in_240=INJECTED_2 @@ -981,5 +981,6 @@ serdes_tx_taps_34=nrz:-5:75:-20:0:0:0 serdes_tx_taps_35=nrz:-5:80:-23:0:0:0 serdes_tx_taps_36=nrz:-7:85:-25:0:0:0 +appl_param_nof_ports_per_modid=64 xflow_macsec_secure_chan_to_num_secure_assoc_encrypt=2 xflow_macsec_secure_chan_to_num_secure_assoc_decrypt=2 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini new file mode 100644 index 000000000000..e8289ab03112 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/pg_profile_lookup.ini @@ -0,0 +1,17 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 40000 300m 1280 2560 69632 0 1280 + 100000 300m 1280 2560 110592 0 1280 + 400000 300m 1280 2560 315392 0 1280 + 40000 1000m 1280 2560 114688 0 1280 + 100000 1000m 1280 2560 225280 0 1280 + 400000 1000m 1280 2560 778240 0 1280 + 40000 2000m 1280 2560 184320 0 1280 + 100000 2000m 1280 2560 393216 0 1280 + 400000 2000m 1280 2560 1445888 0 1280 + 40000 80000m 1280 2560 5369856 0 1280 + 100000 80000m 1280 2560 13357056 0 1280 + 400000 80000m 1280 2560 53305344 0 1280 + 40000 120000m 1280 2560 8028160 0 1280 + 100000 120000m 1280 2560 20004864 0 1280 + 400000 120000m 1280 2560 79900672 0 1280 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini index 81cda90851cb..b15b00ca0953 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/port_config.ini @@ -17,5 +17,5 @@ Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth1 Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth120-ASIC1 0 16 8 Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth128-ASIC1 0 17 8 Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth136-ASIC1 0 18 8 -Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 221 8 -Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 222 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/qos.json.j2 b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/qos.json.j2 new file mode 100644 index 000000000000..3e548325ea30 --- /dev/null +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/1/qos.json.j2 @@ -0,0 +1 @@ +{%- include 'qos_config.j2' %} diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/port_config.ini index 3d1c79a5fe50..268ba635ed44 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-C36/port_config.ini @@ -35,7 +35,7 @@ Ethernet256 24,25,26,27 Ethernet33/1 33 Ext 100000 Eth1 Ethernet264 16,17,18,19 Ethernet34/1 34 Ext 100000 Eth120-ASIC1 0 16 8 Ethernet272 8,9,10,11 Ethernet35/1 35 Ext 100000 Eth128-ASIC1 0 17 8 Ethernet280 0,1,2,3 Ethernet36/1 36 Ext 100000 Eth136-ASIC1 0 18 8 -Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 221 8 -Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 222 8 -Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 221 8 -Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 222 8 \ No newline at end of file +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm index 46dcd675d65c..711800de5c73 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/j2p-a7800r3a-36d-36x400G.config.bcm @@ -263,15 +263,15 @@ tm_port_header_type_in_219=INJECTED_2 port_init_speed_sat=400000 ### RCY -sai_recycle_port_lane_base=0 -ucode_port_221=RCY.21:core_0.221 -ucode_port_222=RCY.22:core_1.222 -tm_port_header_type_out_221=ETH -tm_port_header_type_in_221=ETH -tm_port_header_type_out_222=ETH -tm_port_header_type_in_222=ETH -port_init_speed_221=400000 -port_init_speed_222=400000 +sai_recycle_port_lane_base=200 +ucode_port_49=RCY0:core_0.49 +ucode_port_50=RCY1:core_1.50 +tm_port_header_type_out_49=ETH +tm_port_header_type_in_49=ETH +tm_port_header_type_out_50=ETH +tm_port_header_type_in_50=ETH +port_init_speed_49=400000 +port_init_speed_50=400000 #OLP port tm_port_header_type_in_240=INJECTED_2 @@ -1018,5 +1018,6 @@ serdes_tx_taps_34=pam4:-14:136:-14:2:0:-4 serdes_tx_taps_35=pam4:-16:141:-5:3:-2:-3 serdes_tx_taps_36=pam4:-16:137:-12:2:0:-3 +appl_param_nof_ports_per_modid=64 xflow_macsec_secure_chan_to_num_secure_assoc_encrypt=2 xflow_macsec_secure_chan_to_num_secure_assoc_decrypt=4 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini index a8a0a9603114..de840da3eb9a 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/0/port_config.ini @@ -17,5 +17,5 @@ Ethernet112 24,25,26,27,28,29,30,31 Ethernet15/1 15 Ext Ethernet120 16,17,18,19,20,21,22,23 Ethernet16/1 16 Ext 400000 Eth120-ASIC0 0 16 8 Ethernet128 8,9,10,11,12,13,14,15 Ethernet17/1 17 Ext 400000 Eth128-ASIC0 0 17 8 Ethernet136 0,1,2,3,4,5,6,7 Ethernet18/1 18 Ext 400000 Eth136-ASIC0 0 18 8 -Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 221 8 -Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 222 8 +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm index 5eb17bc354fb..c5712833d21a 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/j2p-a7800r3a-36d-36x400G.config.bcm @@ -263,15 +263,15 @@ tm_port_header_type_in_219=INJECTED_2 port_init_speed_sat=400000 ### RCY -sai_recycle_port_lane_base=0 -ucode_port_221=RCY.21:core_0.221 -ucode_port_222=RCY.22:core_1.222 -tm_port_header_type_out_221=ETH -tm_port_header_type_in_221=ETH -tm_port_header_type_out_222=ETH -tm_port_header_type_in_222=ETH -port_init_speed_221=400000 -port_init_speed_222=400000 +sai_recycle_port_lane_base=200 +ucode_port_49=RCY0:core_0.49 +ucode_port_50=RCY1:core_1.50 +tm_port_header_type_out_49=ETH +tm_port_header_type_in_49=ETH +tm_port_header_type_out_50=ETH +tm_port_header_type_in_50=ETH +port_init_speed_49=400000 +port_init_speed_50=400000 #OLP port tm_port_header_type_in_240=INJECTED_2 @@ -1018,5 +1018,6 @@ serdes_tx_taps_34=pam4:-14:136:-14:2:0:-4 serdes_tx_taps_35=pam4:-16:141:-5:3:-2:-3 serdes_tx_taps_36=pam4:-16:137:-12:2:0:-3 +appl_param_nof_ports_per_modid=64 xflow_macsec_secure_chan_to_num_secure_assoc_encrypt=2 xflow_macsec_secure_chan_to_num_secure_assoc_decrypt=4 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini index 517251fcf7b6..68db8fb44969 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/1/port_config.ini @@ -17,5 +17,5 @@ Ethernet256 24,25,26,27,28,29,30,31 Ethernet33/1 33 Ext Ethernet264 16,17,18,19,20,21,22,23 Ethernet34/1 34 Ext 400000 Eth120-ASIC1 0 16 8 Ethernet272 8,9,10,11,12,13,14,15 Ethernet35/1 35 Ext 400000 Eth128-ASIC1 0 17 8 Ethernet280 0,1,2,3,4,5,6,7 Ethernet36/1 36 Ext 400000 Eth136-ASIC1 0 18 8 -Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 221 8 -Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 222 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 diff --git a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/port_config.ini b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/port_config.ini index 0c057dee3def..37a8915cf32e 100644 --- a/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/port_config.ini +++ b/device/arista/x86_64-arista_7800r3a_36d2_lc/Arista-7800R3A-36D2-D36/port_config.ini @@ -35,7 +35,7 @@ Ethernet256 24,25,26,27,28,29,30,31 Ethernet33/1 33 Ext Ethernet264 16,17,18,19,20,21,22,23 Ethernet34/1 34 Ext 400000 Eth120-ASIC1 0 16 8 Ethernet272 8,9,10,11,12,13,14,15 Ethernet35/1 35 Ext 400000 Eth128-ASIC1 0 17 8 Ethernet280 0,1,2,3,4,5,6,7 Ethernet36/1 36 Ext 400000 Eth136-ASIC1 0 18 8 -Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 221 8 -Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 222 8 -Ethernet-Rec1 221 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 221 8 -Ethernet-IB1 222 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 222 8 +Ethernet-Rec0 249 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 0 49 8 +Ethernet-IB0 250 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 1 50 8 +Ethernet-Rec1 249 Recirc0/0 39 Rec 400000 Rcy0-ASIC1 0 49 8 +Ethernet-IB1 250 Recirc0/1 40 Inb 400000 Rcy1-ASIC1 1 50 8 diff --git a/device/celestica/x86_64-cel_seastone-r0/platform.json b/device/celestica/x86_64-cel_seastone-r0/platform.json index a3778ae81aef..e72c00fea5bd 100644 --- a/device/celestica/x86_64-cel_seastone-r0/platform.json +++ b/device/celestica/x86_64-cel_seastone-r0/platform.json @@ -266,6 +266,9 @@ "name": "PSU-1 FAN-1", "speed": { "controllable": false + }, + "status_led": { + "available": false } } ] @@ -281,6 +284,9 @@ "name": "PSU-2 FAN-1", "speed": { "controllable": false + }, + "status_led": { + "available": false } } ] diff --git a/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp.py b/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp.py index ca2448c80dfd..0521ca56480a 100644 --- a/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp.py +++ b/device/celestica/x86_64-cel_seastone-r0/sonic_platform/sfp.py @@ -1520,7 +1520,7 @@ def get_power_override(self): if dom_control_raw is not None: dom_control_data = sfpd_obj.parse_control_bytes( dom_control_raw, 0) - return ('On' == dom_control_data['data']['PowerOverride']) + return ('On' == dom_control_data['data']['PowerOverride']['value']) else: return False else: diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_1M.csv b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_1M.csv new file mode 100755 index 000000000000..b9f4e750a8df --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_1M.csv @@ -0,0 +1,342 @@ +VERSION,CABLE TYPE,VENDOR,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.2,DAC_1M,GENERIC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,SPEED,ENCODING,,,,,,,,,SPEED,ENCODING,,,,,,,,,,,,,SPEED,ENCODING,,,,,,,SPEED,ENCODING,,,,,,,SPEED,ENCODING,,,,,,,,,, +,,,50G/400G,PAM4,,,,,,,,,25G/100G,NRZ,,,,,,,,,,,,,10G/40G,NRZ,,,,,,,LT 50G/400G ,PAM4,,,,,,,ANLT 25G/100G ,NRZ,,,,,,,,,, +index,Front Port,lane,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_EQ_COARSE_TUNE_EFFORT_50G,RX_EQ_FINE_TUNE_EFFORT_50G,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_AGC_TARGET,RX_EYE_DISQUALIFY_THRESHOLD_25G,RX_EQ_COARSE_TUNE_EFFORT_25G,RX_EQ_FINE_TUNE_EFFORT_25G,SD_RESET_THRESHOLD,SD_RESET_25G,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_EQ_COARSE_TUNE_EFFORT_50G,RX_EQ_FINE_TUNE_EFFORT_50G,RX_CTLE_LF,RX_CTLE_HF,RX_CTLE_BW,LINK_TRAINING,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_AGC_TARGET,RX_EYE_DISQUALIFY_THRESHOLD_25G,RX_EQ_COARSE_TUNE_EFFORT_25G,RX_EQ_FINE_TUNE_EFFORT_25G,SD_RESET_25G,SD_RESET_THRESHOLD_25G,LINK_TRAINING,AN,AN_ABILITY,FEC +0,0,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +1,0,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +2,0,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +3,0,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +4,0,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +5,0,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +6,0,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +7,0,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +8,1,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +9,1,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +10,1,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +11,1,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +12,1,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +13,1,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +14,1,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +15,1,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +16,2,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +17,2,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +18,2,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +19,2,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +20,2,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +21,2,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +22,2,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +23,2,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +24,3,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +25,3,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +26,3,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +27,3,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +28,3,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +29,3,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +30,3,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +31,3,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +32,4,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +33,4,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +34,4,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +35,4,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +36,4,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +37,4,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +38,4,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +39,4,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +40,5,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +41,5,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +42,5,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +43,5,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +44,5,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +45,5,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +46,5,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +47,5,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +48,6,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +49,6,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +50,6,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +51,6,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +52,6,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +53,6,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +54,6,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +55,6,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +56,7,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +57,7,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +58,7,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +59,7,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +60,7,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +61,7,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +62,7,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +63,7,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +64,8,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +65,8,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +66,8,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +67,8,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +68,8,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +69,8,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +70,8,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +71,8,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +72,9,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +73,9,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +74,9,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +75,9,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +76,9,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +77,9,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +78,9,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +79,9,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +80,10,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +81,10,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +82,10,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +83,10,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +84,10,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +85,10,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +86,10,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +87,10,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +88,11,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +89,11,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +90,11,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +91,11,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +92,11,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +93,11,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +94,11,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +95,11,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +96,12,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +97,12,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +98,12,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +99,12,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +100,12,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +101,12,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +102,12,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +103,12,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +104,13,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +105,13,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +106,13,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +107,13,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +108,13,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +109,13,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +110,13,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +111,13,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +112,14,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +113,14,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +114,14,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +115,14,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +116,14,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +117,14,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +118,14,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +119,14,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +120,15,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +121,15,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +122,15,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +123,15,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +124,15,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +125,15,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +126,15,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +127,15,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +128,16,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +129,16,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +130,16,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +131,16,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +132,16,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +133,16,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +134,16,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +135,16,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +136,17,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +137,17,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +138,17,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +139,17,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +140,17,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +141,17,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +142,17,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +143,17,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +144,18,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +145,18,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +146,18,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +147,18,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +148,18,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +149,18,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +150,18,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +151,18,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +152,19,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +153,19,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +154,19,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +155,19,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +156,19,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +157,19,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +158,19,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +159,19,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +160,20,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +161,20,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +162,20,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +163,20,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +164,20,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +165,20,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +166,20,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +167,20,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +168,21,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +169,21,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +170,21,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +171,21,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +172,21,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +173,21,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +174,21,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +175,21,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +176,22,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +177,22,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +178,22,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +179,22,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +180,22,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +181,22,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +182,22,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +183,22,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +184,23,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +185,23,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +186,23,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +187,23,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +188,23,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +189,23,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +190,23,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +191,23,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +192,24,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +193,24,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +194,24,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +195,24,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +196,24,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +197,24,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +198,24,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +199,24,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +200,25,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +201,25,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +202,25,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +203,25,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +204,25,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +205,25,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +206,25,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +207,25,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +208,26,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +209,26,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +210,26,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +211,26,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +212,26,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +213,26,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +214,26,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +215,26,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +216,27,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +217,27,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +218,27,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +219,27,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +220,27,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +221,27,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +222,27,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +223,27,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +224,28,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +225,28,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +226,28,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +227,28,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +228,28,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +229,28,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +230,28,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +231,28,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +232,29,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +233,29,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +234,29,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +235,29,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +236,29,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +237,29,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +238,29,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +239,29,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +240,30,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +241,30,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +242,30,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +243,30,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +244,30,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +245,30,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +246,30,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +247,30,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +248,31,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +249,31,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +250,31,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +251,31,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +252,31,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +253,31,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +254,31,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +255,31,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,0,1,130,100,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_3M.csv b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_3M.csv new file mode 100755 index 000000000000..b6bbd017e483 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_DAC_3M.csv @@ -0,0 +1,342 @@ +VERSION,CABLE TYPE,VENDOR,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.2,DAC_3M,GENERIC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,SPEED,ENCODING,,,,,,,,,SPEED,ENCODING,,,,,,,,,,,,,SPEED,ENCODING,,,,,,,SPEED,ENCODING,,,,,,,SPEED,ENCODING,,,,,,,,,, +,,,50G/400G,PAM4,,,,,,,,,25G/100G,NRZ,,,,,,,,,,,,,10G/40G,NRZ,,,,,,,LT 50G/400G,PAM4,,,,,,,ANLT 25G/100G,NRZ,,,,,,,,,, +index,Front Port,lane,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_EQ_COARSE_TUNE_EFFORT_50G,RX_EQ_FINE_TUNE_EFFORT_50G,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_AGC_TARGET,RX_EYE_DISQUALIFY_THRESHOLD_25G,RX_EQ_COARSE_TUNE_EFFORT_25G,RX_EQ_FINE_TUNE_EFFORT_25G,SD_RESET_THRESHOLD,SD_RESET_25G,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_EQ_COARSE_TUNE_EFFORT_50G,RX_EQ_FINE_TUNE_EFFORT_50G,RX_CTLE_LF,RX_CTLE_HF,RX_CTLE_BW,LINK_TRAINING,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_AGC_TARGET,RX_EYE_DISQUALIFY_THRESHOLD_25G,RX_EQ_COARSE_TUNE_EFFORT_25G,RX_EQ_FINE_TUNE_EFFORT_25G,SD_RESET_25G,SD_RESET_THRESHOLD_25G,LINK_TRAINING,AN,AN_ABILITY,FEC +0,0,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +1,0,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +2,0,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +3,0,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +4,0,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +5,0,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +6,0,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +7,0,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +8,1,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +9,1,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +10,1,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +11,1,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +12,1,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +13,1,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +14,1,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +15,1,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +16,2,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +17,2,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +18,2,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +19,2,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +20,2,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +21,2,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +22,2,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +23,2,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +24,3,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +25,3,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +26,3,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +27,3,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +28,3,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +29,3,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +30,3,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +31,3,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +32,4,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +33,4,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +34,4,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +35,4,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +36,4,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +37,4,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +38,4,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +39,4,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +40,5,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +41,5,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +42,5,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +43,5,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +44,5,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +45,5,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +46,5,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +47,5,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +48,6,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +49,6,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +50,6,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +51,6,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +52,6,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +53,6,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +54,6,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +55,6,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +56,7,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +57,7,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +58,7,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +59,7,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +60,7,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +61,7,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +62,7,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +63,7,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +64,8,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +65,8,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +66,8,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +67,8,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +68,8,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +69,8,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +70,8,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +71,8,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +72,9,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +73,9,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +74,9,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +75,9,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +76,9,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +77,9,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +78,9,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +79,9,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +80,10,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +81,10,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +82,10,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +83,10,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +84,10,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +85,10,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +86,10,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +87,10,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +88,11,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +89,11,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +90,11,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +91,11,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +92,11,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +93,11,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +94,11,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +95,11,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +96,12,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +97,12,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +98,12,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +99,12,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +100,12,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +101,12,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +102,12,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +103,12,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +104,13,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +105,13,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +106,13,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +107,13,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +108,13,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +109,13,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +110,13,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +111,13,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +112,14,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +113,14,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +114,14,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +115,14,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +116,14,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +117,14,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +118,14,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +119,14,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +120,15,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +121,15,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +122,15,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +123,15,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +124,15,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +125,15,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +126,15,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +127,15,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +128,16,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +129,16,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +130,16,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +131,16,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +132,16,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +133,16,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +134,16,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +135,16,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +136,17,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +137,17,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +138,17,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +139,17,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +140,17,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +141,17,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +142,17,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +143,17,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +144,18,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +145,18,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +146,18,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +147,18,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +148,18,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +149,18,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +150,18,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +151,18,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +152,19,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +153,19,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +154,19,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +155,19,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +156,19,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +157,19,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +158,19,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +159,19,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +160,20,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +161,20,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +162,20,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +163,20,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +164,20,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +165,20,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +166,20,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +167,20,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +168,21,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +169,21,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +170,21,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +171,21,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +172,21,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +173,21,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +174,21,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +175,21,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +176,22,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +177,22,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +178,22,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +179,22,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +180,22,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +181,22,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +182,22,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +183,22,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +184,23,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +185,23,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +186,23,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +187,23,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +188,23,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +189,23,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +190,23,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +191,23,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +192,24,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +193,24,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +194,24,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +195,24,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +196,24,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +197,24,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +198,24,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +199,24,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +200,25,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +201,25,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +202,25,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +203,25,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +204,25,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +205,25,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +206,25,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +207,25,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +208,26,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +209,26,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +210,26,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +211,26,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +212,26,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +213,26,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +214,26,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +215,26,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +216,27,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +217,27,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +218,27,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +219,27,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +220,27,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +221,27,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +222,27,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +223,27,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +224,28,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +225,28,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +226,28,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +227,28,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +228,28,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +229,28,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +230,28,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +231,28,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +232,29,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +233,29,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +234,29,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +235,29,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +236,29,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +237,29,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +238,29,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +239,29,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +240,30,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +241,30,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +242,30,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +243,30,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +244,30,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +245,30,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +246,30,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +247,30,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +248,31,0,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +249,31,1,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +250,31,2,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +251,31,3,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +252,31,4,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +253,31,5,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +254,31,6,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +255,31,7,0,0,0,0,0,Medium,HIGH,0,2,0,0,0,0,0,0,2,2,130,150,Low,Low,5,TRUE,0,3,2,-2,0,4,0,1,0,0,2,Medium,High,0,10,10,1,0,1,130,100,Low,Low,0,NA,1,1,100GBASE-KR4,NONE +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_Optics.csv b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_Optics.csv new file mode 100755 index 000000000000..a652f33e78b9 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/CSV/TL7_Optics.csv @@ -0,0 +1,261 @@ +VERSION,CABLE TYPE,VENDOR,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.2,OPTICS,GENERIC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +,,,SPEED,ENCODING,,,,,,,,,,SPEED,ENCODING,,,,,,,,,,,,,,SPEED,ENCODING,,,,,, +,,,50G/400G,PAM4,,,,,,,,,,25G/100G,NRZ,,,,,,,,,,,,,,10G/40G,NRZ,,,,,, +index,Front Port,lane,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,Optical Module CTLE,RX_EQ_COARSE_TUNE_EFFORT_50G,RX_EQ_FINE_TUNE_EFFORT_50G,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,Optical Module CTLE,RX_GAINSHAPE1,RX_GAINSHAPE2,RX_AGC_TARGET,RX_EYE_DISQUALIFY_THRESHOLD_25G,RX_EQ_COARSE_TUNE_EFFORT_25G,RX_EQ_FINE_TUNE_EFFORT_25G,SD_RESET_THRESHOLD,SD_RESET_25G,LINK_TRAINING,TX_EQ_ATTN,TX_EQ_PRE1,TX_EQ_PRE2,TX_EQ_PRE3,TX_EQ_POST,RX_GAINSHAPE1,RX_GAINSHAPE2,LINK_TRAINING +0,0,0,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +1,0,1,0,4,0,0,8,5,Medium,High,0,2,0,0,2,0,0,8,4,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +2,0,2,0,4,0,0,8,3.5,Medium,High,0,2,0,0,2,0,0,4,5,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +3,0,3,0,4,0,0,6,6.5,Medium,High,0,2,0,0,6,0,0,6,4,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +4,0,4,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +5,0,5,0,2,0,0,10,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +6,0,6,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +7,0,7,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,High,High,NA,FALSE,0,0,0,0,0,0,0,0,0 +8,1,0,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +9,1,1,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +10,1,2,0,4,0,0,6,4.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +11,1,3,0,4,0,0,8,3.5,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +12,1,4,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +13,1,5,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +14,1,6,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +15,1,7,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +16,2,0,0,2,0,0,6,5,Medium,High,0,2,0,0,2,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +17,2,1,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +18,2,2,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,5,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +19,2,3,0,4,0,0,6,5.5,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +20,2,4,0,6,0,0,6,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +21,2,5,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +22,2,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +23,2,7,0,6,0,0,6,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +24,3,0,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +25,3,1,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +26,3,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +27,3,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +28,3,4,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +29,3,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +30,3,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +31,3,7,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +32,4,0,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +33,4,1,0,4,0,0,6,5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +34,4,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +35,4,3,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +36,4,4,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +37,4,5,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +38,4,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +39,4,7,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +40,5,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +41,5,1,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +42,5,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +43,5,3,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +44,5,4,0,4,0,0,6,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +45,5,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +46,5,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +47,5,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +48,6,0,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +49,6,1,0,6,0,0,6,4,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +50,6,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +51,6,3,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +52,6,4,0,6,0,0,6,3.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +53,6,5,0,6,0,0,6,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +54,6,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +55,6,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +56,7,0,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +57,7,1,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +58,7,2,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +59,7,3,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +60,7,4,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +61,7,5,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +62,7,6,0,4,0,0,4,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +63,7,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +64,8,0,0,4,0,0,6,5,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +65,8,1,0,4,0,0,6,6.5,Medium,High,0,2,0,0,4,0,0,8,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +66,8,2,0,4,0,0,6,5.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +67,8,3,0,4,0,0,10,4,Medium,High,0,2,0,0,4,0,0,10,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +68,8,4,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +69,8,5,0,4,0,0,10,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +70,8,6,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +71,8,7,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +72,9,0,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +73,9,1,0,4,0,0,4,7,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +74,9,2,0,4,0,0,8,4.5,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +75,9,3,0,4,0,0,8,5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +76,9,4,0,4,0,0,6,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +77,9,5,0,4,0,0,4,7,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +78,9,6,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +79,9,7,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +80,10,0,0,4,0,0,6,5,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +81,10,1,0,4,0,0,8,5,Medium,High,0,2,0,0,4,0,0,6,5,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +82,10,2,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +83,10,3,0,4,0,0,6,6,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +84,10,4,0,4,0,0,4,7,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +85,10,5,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +86,10,6,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +87,10,7,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +88,11,0,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +89,11,1,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +90,11,2,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +91,11,3,0,6,0,0,6,4.5,Medium,High,0,2,0,0,6,0,0,8,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +92,11,4,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +93,11,5,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +94,11,6,0,4,0,0,4,7.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +95,11,7,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +96,12,0,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +97,12,1,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +98,12,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +99,12,3,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +100,12,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +101,12,5,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +102,12,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +103,12,7,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +104,13,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +105,13,1,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +106,13,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +107,13,3,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +108,13,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +109,13,5,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +110,13,6,0,4,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +111,13,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +112,14,0,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +113,14,1,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +114,14,2,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +115,14,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +116,14,4,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +117,14,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +118,14,6,0,4,0,0,4,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +119,14,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +120,15,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +121,15,1,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +122,15,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +123,15,3,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +124,15,4,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +125,15,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +126,15,6,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +127,15,7,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +128,16,0,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +129,16,1,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +130,16,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +131,16,3,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +132,16,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +133,16,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +134,16,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +135,16,7,0,4,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +136,17,0,0,4,0,0,4,4,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +137,17,1,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +138,17,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +139,17,3,0,6,0,0,6,3.5,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +140,17,4,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +141,17,5,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +142,17,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +143,17,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +144,18,0,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +145,18,1,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +146,18,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +147,18,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +148,18,4,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +149,18,5,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +150,18,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +151,18,7,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +152,19,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +153,19,1,0,6,0,0,6,4,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +154,19,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +155,19,3,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +156,19,4,0,4,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +157,19,5,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +158,19,6,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +159,19,7,0,6,0,0,6,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +160,20,0,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +161,20,1,0,4,0,0,6,5.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +162,20,2,0,4,0,0,6,5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +163,20,3,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +164,20,4,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +165,20,5,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +166,20,6,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +167,20,7,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +168,21,0,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +169,21,1,0,4,0,0,6,5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +170,21,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +171,21,3,0,6,0,0,6,4,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +172,21,4,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +173,21,5,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +174,21,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +175,21,7,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +176,22,0,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +177,22,1,0,4,0,0,8,4.5,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +178,22,2,0,4,0,0,8,4,Medium,High,0,2,0,0,4,0,0,8,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +179,22,3,0,4,0,0,10,3,Medium,High,0,2,0,0,4,0,0,10,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +180,22,4,0,4,0,0,10,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +181,22,5,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +182,22,6,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +183,22,7,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +184,23,0,0,6,0,0,6,4,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +185,23,1,0,4,0,0,4,7,Medium,High,0,2,0,0,4,0,0,8,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +186,23,2,0,4,0,0,6,4.5,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +187,23,3,0,4,0,0,6,5.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +188,23,4,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +189,23,5,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +190,23,6,0,4,0,0,8,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +191,23,7,0,4,0,0,8,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +192,24,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +193,24,1,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +194,24,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +195,24,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +196,24,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +197,24,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +198,24,6,0,4,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +199,24,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +200,25,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +201,25,1,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +202,25,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +203,25,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +204,25,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +205,25,5,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +206,25,6,0,4,0,0,4,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +207,25,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +208,26,0,0,4,0,0,6,3.5,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +209,26,1,0,4,0,0,6,4.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +210,26,2,0,4,0,0,4,5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +211,26,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +212,26,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +213,26,5,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +214,26,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +215,26,7,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +216,27,0,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +217,27,1,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +218,27,2,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +219,27,3,0,6,0,0,6,4.5,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +220,27,4,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +221,27,5,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +222,27,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +223,27,7,0,6,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +224,28,0,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +225,28,1,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +226,28,2,0,4,0,0,4,4.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +227,28,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +228,28,4,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +229,28,5,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +230,28,6,0,4,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +231,28,7,0,4,0,0,6,4.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +232,29,0,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +233,29,1,0,6,0,0,6,4,Medium,High,0,2,0,0,6,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +234,29,2,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +235,29,3,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +236,29,4,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +237,29,5,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +238,29,6,0,4,0,0,4,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +239,29,7,0,6,0,0,4,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +240,30,0,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +241,30,1,0,4,0,0,6,6,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +242,30,2,0,4,0,0,6,4,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +243,30,3,0,4,0,0,4,6,Medium,High,0,2,0,0,4,0,0,6,3,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +244,30,4,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +245,30,5,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +246,30,6,0,4,0,0,8,4,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +247,30,7,0,4,0,0,4,6.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +248,31,0,0,6,-1,0,4,4.5,Medium,High,0,2,0,0,6,0,0,6,2,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +249,31,1,0,4,0,0,6,5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +250,31,2,0,4,0,0,4,5.5,Medium,High,0,2,0,0,4,0,0,4,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +251,31,3,0,4,0,0,4,6.5,Medium,High,0,2,0,0,4,0,0,6,4,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +252,31,4,0,4,0,0,6,6,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +253,31,5,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +254,31,6,0,4,0,0,6,5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 +255,31,7,0,4,0,0,6,5.5,Medium,High,0,2,0,0,0,0,0,0,0,0,0,100,100,LOW,LOW,NA,FALSE,0,0,0,0,0,0,0,0,0 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/installer.conf b/device/wistron/x86_64-wistron_6512_32r-r0/installer.conf index d5f9419d77ff..0bd1a8bae86f 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/installer.conf +++ b/device/wistron/x86_64-wistron_6512_32r-r0/installer.conf @@ -1,4 +1,4 @@ CONSOLE_PORT=0x3f8 CONSOLE_DEV=0 CONSOLE_SPEED=115200 -ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="pcie_aspm=off" +ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="pcie_aspm=off intel_iommu=off" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/pcie.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/pcie.yaml new file mode 100755 index 000000000000..227f7cb249bf --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/pcie.yaml @@ -0,0 +1,495 @@ +- bus: '00' + dev: '00' + fn: '0' + id: 6f00 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2 (rev 05)' +- bus: '00' + dev: '01' + fn: '0' + id: 6f02 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 (rev 05)' +- bus: '00' + dev: '01' + fn: '1' + id: 6f03 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 (rev 05)' +- bus: '00' + dev: '02' + fn: '0' + id: 6f04 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 (rev 05)' +- bus: '00' + dev: '02' + fn: '2' + id: 6f06 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 (rev 05)' +- bus: '00' + dev: '02' + fn: '3' + id: 6f07 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 (rev 05)' +- bus: '00' + dev: '03' + fn: '0' + id: 6f08 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 05)' +- bus: '00' + dev: '03' + fn: '1' + id: 6f09 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 05)' +- bus: '00' + dev: '03' + fn: '2' + id: 6f0a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 05)' +- bus: '00' + dev: '03' + fn: '3' + id: 6f0b + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 05)' +- bus: '00' + dev: '04' + fn: '0' + id: 6f20 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 0 (rev 05)' +- bus: '00' + dev: '04' + fn: '1' + id: 6f21 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 1 (rev 05)' +- bus: '00' + dev: '04' + fn: '2' + id: 6f22 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 2 (rev 05)' +- bus: '00' + dev: '04' + fn: '3' + id: 6f23 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 3 (rev 05)' +- bus: '00' + dev: '04' + fn: '4' + id: 6f24 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 4 (rev 05)' +- bus: '00' + dev: '04' + fn: '5' + id: 6f25 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 5 (rev 05)' +- bus: '00' + dev: '04' + fn: '6' + id: 6f26 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 6 (rev 05)' +- bus: '00' + dev: '04' + fn: '7' + id: 6f27 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Crystal Beach DMA Channel 7 (rev 05)' +- bus: '00' + dev: '05' + fn: '0' + id: 6f28 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Map/VTd_Misc/System Management (rev 05)' +- bus: '00' + dev: '05' + fn: '1' + id: 6f29 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Hot Plug (rev 05)' +- bus: '00' + dev: '05' + fn: '2' + id: 6f2a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO RAS/Control Status/Global Errors (rev 05)' +- bus: '00' + dev: '05' + fn: '4' + id: 6f2c + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D I/O APIC (rev 05)' +- bus: '00' + dev: '05' + fn: '6' + id: 6f39 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IO Performance Monitoring (rev 05)' +- bus: '00' + dev: '06' + fn: '0' + id: 6f10 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '1' + id: 6f11 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '2' + id: 6f12 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '3' + id: 6f13 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '4' + id: 6f14 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '5' + id: 6f15 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '6' + id: 6f16 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '06' + fn: '7' + id: 6f17 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '07' + fn: '0' + id: 6f18 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '07' + fn: '1' + id: 6f19 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '07' + fn: '2' + id: 6f1a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '07' + fn: '3' + id: 6f1b + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '07' + fn: '4' + id: 6f1c + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Debug (rev 05)' +- bus: '00' + dev: '14' + fn: '0' + id: 8c31 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)' +- bus: '00' + dev: '16' + fn: '0' + id: 8c3a + name: 'Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)' +- bus: '00' + dev: '16' + fn: '1' + id: 8c3b + name: 'Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #2 (rev 04)' +- bus: '00' + dev: '1c' + fn: '0' + id: 8c10 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)' +- bus: '00' + dev: '1c' + fn: '7' + id: 8c1e + name: 'Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #8 (rev d5)' +- bus: '00' + dev: '1d' + fn: '0' + id: 8c26 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)' +- bus: '00' + dev: '1f' + fn: '0' + id: 8c54 + name: 'Intel Corporation C224 Series Chipset Family Server Standard SKU LPC Controller (rev 05)' +- bus: '00' + dev: '1f' + fn: '2' + id: 8c02 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)' +- bus: '00' + dev: '1f' + fn: '3' + id: 8c22 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)' +- bus: '02' + dev: '00' + fn: '0' + id: 1b58 + name: 'Device 1d98:1b58 (rev 10)' +- bus: '04' + dev: '00' + fn: '0' + id: 15a7 + name: 'Intel Corporation Device 15a7' +- bus: '04' + dev: '00' + fn: '1' + id: 15a7 + name: 'Intel Corporation Device 15a7' +- bus: '05' + dev: '00' + fn: '0' + id: 15a7 + name: 'Intel Corporation Device 15a7' +- bus: '05' + dev: '00' + fn: '1' + id: 15a7 + name: 'Intel Corporation Device 15a7' +- bus: '0b' + dev: '00' + fn: '0' + id: 1533 + name: 'Intel Corporation I210 Gigabit Network Connection (rev 03)' +- bus: 'ff' + dev: '0b' + fn: '0' + id: 6f81 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 05)' +- bus: 'ff' + dev: '0b' + fn: '1' + id: 6f36 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 05)' +- bus: 'ff' + dev: '0b' + fn: '2' + id: 6f37 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 05)' +- bus: 'ff' + dev: '0b' + fn: '3' + id: 6f76 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug (rev 05)' +- bus: 'ff' + dev: '0c' + fn: '0' + id: 6fe0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0c' + fn: '1' + id: 6fe1 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0c' + fn: '2' + id: 6fe2 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0c' + fn: '3' + id: 6fe3 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0f' + fn: '0' + id: 6ff8 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0f' + fn: '4' + id: 6ffc + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0f' + fn: '5' + id: 6ffd + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '0f' + fn: '6' + id: 6ffe + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 05)' +- bus: 'ff' + dev: '10' + fn: '0' + id: 6f1d + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent (rev 05)' +- bus: 'ff' + dev: '10' + fn: '1' + id: 6f34 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent (rev 05)' +- bus: 'ff' + dev: '10' + fn: '5' + id: 6f1e + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 05)' +- bus: 'ff' + dev: '10' + fn: '6' + id: 6f7d + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 05)' +- bus: 'ff' + dev: '10' + fn: '7' + id: 6f1f + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 05)' +- bus: 'ff' + dev: '12' + fn: '0' + id: 6fa0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 (rev 05)' +- bus: 'ff' + dev: '12' + fn: '1' + id: 6f30 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 (rev 05)' +- bus: 'ff' + dev: '12' + fn: '2' + id: 6f70 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 Debug (rev 05)' +- bus: 'ff' + dev: '13' + fn: '0' + id: 6fa8 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS (rev 05)' +- bus: 'ff' + dev: '13' + fn: '1' + id: 6f71 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS (rev 05)' +- bus: 'ff' + dev: '13' + fn: '2' + id: 6faa + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: 'ff' + dev: '13' + fn: '3' + id: 6fab + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: 'ff' + dev: '13' + fn: '4' + id: 6fac + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: 'ff' + dev: '13' + fn: '5' + id: 6fad + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 05)' +- bus: 'ff' + dev: '13' + fn: '6' + id: 6fae + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Broadcast (rev 05)' +- bus: 'ff' + dev: '13' + fn: '7' + id: 6faf + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast (rev 05)' +- bus: 'ff' + dev: '14' + fn: '0' + id: 6fb0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Thermal Control (rev 05)' +- bus: 'ff' + dev: '14' + fn: '1' + id: 6fb1 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Thermal Control (rev 05)' +- bus: 'ff' + dev: '14' + fn: '2' + id: 6fb2 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Error (rev 05)' +- bus: 'ff' + dev: '14' + fn: '3' + id: 6fb3 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Error (rev 05)' +- bus: 'ff' + dev: '14' + fn: '4' + id: 6fbc + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 05)' +- bus: 'ff' + dev: '14' + fn: '5' + id: 6fbd + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 05)' +- bus: 'ff' + dev: '14' + fn: '6' + id: 6fbe + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 05)' +- bus: 'ff' + dev: '14' + fn: '7' + id: 6fbf + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 05)' +- bus: 'ff' + dev: '15' + fn: '0' + id: 6fb4 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Thermal Control (rev 05)' +- bus: 'ff' + dev: '15' + fn: '1' + id: 6fb5 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Thermal Control (rev 05)' +- bus: 'ff' + dev: '15' + fn: '2' + id: 6fb6 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Error (rev 05)' +- bus: 'ff' + dev: '15' + fn: '3' + id: 6fb7 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Error (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '0' + id: 6f98 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '1' + id: 6f99 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '2' + id: 6f9a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '3' + id: 6fc0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '4' + id: 6f9c + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1e' + fn: '7' + id: 6f9f + name: 'Intel Corporation Device 6f9f (rev 05)' +- bus: 'ff' + dev: '1f' + fn: '0' + id: 6f88 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' +- bus: 'ff' + dev: '1f' + fn: '2' + id: 6f8a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 05)' diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/platform.json b/device/wistron/x86_64-wistron_6512_32r-r0/platform.json new file mode 100644 index 000000000000..f978e6190513 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/platform.json @@ -0,0 +1,848 @@ +{ + "chassis": { + "name": "wistron_6512_32r", + "components": [ + { + "name": "BIOS" + }, + { + "name": "CPLD1" + }, + { + "name": "CPLD2" + }, + { + "name": "MB_FPGA" + }, + { + "name": "CPU_FPGA" + }, + { + "name": "BMC" + } + ], + "fans": [ + { + "name": "FAN-1F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-1R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "fan_drawers": [ + { + "name": "FanTray1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-1F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-1R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray2", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-2F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray3", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-3F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray4", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-4F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray5", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-5F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray6", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-6F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray7", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-7F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + } + ], + "psus": [ + { + "name": "PSU-1", + "fans": [ + { + "name": "PSU-1 FAN-1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "status_led": { + "controllable": false + } + }, + { + "name": "PSU-2", + "fans": [ + { + "name": "PSU-2 FAN-1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "status_led": { + "controllable": false + } + } + ], + "thermals": [ + { + "name": "Switch", + "controllable": false + }, + { + "name": "UCPUB", + "controllable": false + }, + { + "name": "UFANB", + "controllable": false + }, + { + "name": "UFRNT1", + "controllable": false + }, + { + "name": "UFRNT2", + "controllable": false + }, + { + "name": "UFRNT3", + "controllable": false + }, + { + "name": "UFRNT4", + "controllable": false + }, + { + "name": "UREAR1", + "controllable": false + } + ], + "sfps": [ + { + "name": "port1" + }, + { + "name": "port2" + }, + { + "name": "port3" + }, + { + "name": "port4" + }, + { + "name": "port5" + }, + { + "name": "port6" + }, + { + "name": "port7" + }, + { + "name": "port8" + }, + { + "name": "port9" + }, + { + "name": "port10" + }, + { + "name": "port11" + }, + { + "name": "port12" + }, + { + "name": "port13" + }, + { + "name": "port14" + }, + { + "name": "port15" + }, + { + "name": "port16" + }, + { + "name": "port17" + }, + { + "name": "port18" + }, + { + "name": "port19" + }, + { + "name": "port20" + }, + { + "name": "port21" + }, + { + "name": "port22" + }, + { + "name": "port23" + }, + { + "name": "port24" + }, + { + "name": "port25" + }, + { + "name": "port26" + }, + { + "name": "port27" + }, + { + "name": "port28" + }, + { + "name": "port29" + }, + { + "name": "port30" + }, + { + "name": "port31" + }, + { + "name": "port32" + } + ] + }, + "interfaces": { + "Ethernet0": { + "index": "0,0,0,0,0,0,0,0", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x400G[100G]": ["Eth1"], + "1x100G(4)": ["Eth1"], + "4x25G[10G](4)": ["Eth1-1", "Eth1-2", "Eth1-3", "Eth1-4"], + "4x10G[25G](4)": ["Eth1-1", "Eth1-2", "Eth1-3", "Eth1-4"] + } + }, + "Ethernet8": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x400G[100G]": ["Eth2"], + "1x100G(4)": ["Eth2"], + "4x25G[10G](4)": ["Eth2-1", "Eth2-2", "Eth2-3", "Eth2-4"], + "4x10G[25G](4)": ["Eth2-1", "Eth2-2", "Eth2-3", "Eth2-4"] + } + }, + "Ethernet16": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x400G[100G]": ["Eth3"], + "1x100G(4)": ["Eth3"], + "4x25G[10G](4)": ["Eth3-1", "Eth3-2", "Eth3-3", "Eth3-4"], + "4x10G[25G](4)": ["Eth3-1", "Eth3-2", "Eth3-3", "Eth3-4"] + } + }, + "Ethernet24": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x400G[100G]": ["Eth4"], + "1x100G(4)": ["Eth4"], + "4x25G[10G](4)": ["Eth4-1", "Eth4-2", "Eth4-3", "Eth4-4"], + "4x10G[25G](4)": ["Eth4-1", "Eth4-2", "Eth4-3", "Eth4-4"] + } + }, + "Ethernet32": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x400G[100G]": ["Eth5"], + "1x100G(4)": ["Eth5"], + "4x25G[10G](4)": ["Eth5-1", "Eth5-2", "Eth5-3", "Eth5-4"], + "4x10G[25G](4)": ["Eth5-1", "Eth5-2", "Eth5-3", "Eth5-4"] + } + }, + "Ethernet40": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x400G[100G]": ["Eth6"], + "1x100G(4)": ["Eth6"], + "4x25G[10G](4)": ["Eth6-1", "Eth6-2", "Eth6-3", "Eth6-4"], + "4x10G[25G](4)": ["Eth6-1", "Eth6-2", "Eth6-3", "Eth6-4"] + } + }, + "Ethernet48": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x400G[100G]": ["Eth7"], + "1x100G(4)": ["Eth7"], + "4x25G[10G](4)": ["Eth7-1", "Eth7-2", "Eth7-3", "Eth7-4"], + "4x10G[25G](4)": ["Eth7-1", "Eth7-2", "Eth7-3", "Eth7-4"] + } + }, + "Ethernet56": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x400G[100G]": ["Eth8"], + "1x100G(4)": ["Eth8"], + "4x25G[10G](4)": ["Eth8-1", "Eth8-2", "Eth8-3", "Eth8-4"], + "4x10G[25G](4)": ["Eth8-1", "Eth8-2", "Eth8-3", "Eth8-4"] + } + }, + "Ethernet64": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "153,154,155,156,157,158,159,160", + "breakout_modes": { + "1x400G[100G]": ["Eth9"], + "1x100G(4)": ["Eth9"], + "4x25G[10G](4)": ["Eth9-1", "Eth9-2", "Eth9-3", "Eth9-4"], + "4x10G[25G](4)": ["Eth9-1", "Eth9-2", "Eth9-3", "Eth9-4"] + } + }, + "Ethernet72": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "145,146,147,148,149,150,151,152", + "breakout_modes": { + "1x400G[100G]": ["Eth10"], + "1x100G(4)": ["Eth10"], + "4x25G[10G](4)": ["Eth10-1", "Eth10-2", "Eth10-3", "Eth10-4"], + "4x10G[25G](4)": ["Eth10-1", "Eth10-2", "Eth10-3", "Eth10-4"] + } + }, + "Ethernet80": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "137,138,139,140,141,142,143,144", + "breakout_modes": { + "1x400G[100G]": ["Eth11"], + "1x100G(4)": ["Eth11"], + "4x25G[10G](4)": ["Eth11-1", "Eth11-2", "Eth11-3", "Eth11-4"], + "4x10G[25G](4)": ["Eth11-1", "Eth11-2", "Eth11-3", "Eth11-4"] + } + }, + "Ethernet88": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x400G[100G]": ["Eth12"], + "1x100G(4)": ["Eth12"], + "4x25G[10G](4)": ["Eth12-1", "Eth12-2", "Eth12-3", "Eth12-4"], + "4x10G[25G](4)": ["Eth12-1", "Eth12-2", "Eth12-3", "Eth12-4"] + } + }, + "Ethernet96": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G[100G]": ["Eth13"], + "1x100G(4)": ["Eth13"], + "4x25G[10G](4)": ["Eth13-1", "Eth13-2", "Eth13-3", "Eth13-4"], + "4x10G[25G](4)": ["Eth13-1", "Eth13-2", "Eth13-3", "Eth13-4"] + } + }, + "Ethernet104": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G[100G]": ["Eth14"], + "1x100G(4)": ["Eth14"], + "4x25G[10G](4)": ["Eth14-1", "Eth14-2", "Eth14-3", "Eth14-4"], + "4x10G[25G](4)": ["Eth14-1", "Eth14-2", "Eth14-3", "Eth14-4"] + } + }, + "Ethernet112": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x400G[100G]": ["Eth15"], + "1x100G(4)": ["Eth15"], + "4x25G[10G](4)": ["Eth15-1", "Eth15-2", "Eth15-3", "Eth15-4"], + "4x10G[25G](4)": ["Eth15-1", "Eth15-2", "Eth15-3", "Eth15-4"] + } + }, + "Ethernet120": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x400G[100G]": ["Eth16"], + "1x100G(4)": ["Eth16"], + "4x25G[10G](4)": ["Eth16-1", "Eth16-2", "Eth16-3", "Eth16-4"], + "4x10G[25G](4)": ["Eth16-1", "Eth16-2", "Eth16-3", "Eth16-4"] + } + }, + "Ethernet128": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "209,210,211,212,213,214,215,216", + "breakout_modes": { + "1x400G[100G]": ["Eth17"], + "1x100G(4)": ["Eth17"], + "4x25G[10G](4)": ["Eth17-1", "Eth17-2", "Eth17-3", "Eth17-4"], + "4x10G[25G](4)": ["Eth17-1", "Eth17-2", "Eth17-3", "Eth17-4"] + } + }, + "Ethernet136": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "217,218,219,220,221,222,223,224", + "breakout_modes": { + "1x400G[100G]": ["Eth18"], + "1x100G(4)": ["Eth18"], + "4x25G[10G](4)": ["Eth18-1", "Eth18-2", "Eth18-3", "Eth18-4"], + "4x10G[25G](4)": ["Eth18-1", "Eth18-2", "Eth18-3", "Eth18-4"] + } + }, + "Ethernet144": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "193,194,195,196,197,198,199,200", + "breakout_modes": { + "1x400G[100G]": ["Eth19"], + "1x100G(4)": ["Eth19"], + "4x25G[10G](4)": ["Eth19-1", "Eth19-2", "Eth19-3", "Eth19-4"], + "4x10G[25G](4)": ["Eth19-1", "Eth19-2", "Eth19-3", "Eth19-4"] + } + }, + "Ethernet152": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "201,202,203,204,205,206,207,208", + "breakout_modes": { + "1x400G[100G]": ["Eth20"], + "1x100G(4)": ["Eth20"], + "4x25G[10G](4)": ["Eth20-1", "Eth20-2", "Eth20-3", "Eth20-4"], + "4x10G[25G](4)": ["Eth20-1", "Eth20-2", "Eth20-3", "Eth20-4"] + } + }, + "Ethernet160": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "177,178,179,180,181,182,183,184", + "breakout_modes": { + "1x400G[100G]": ["Eth21"], + "1x100G(4)": ["Eth21"], + "4x25G[10G](4)": ["Eth21-1", "Eth21-2", "Eth21-3", "Eth21-4"], + "4x10G[25G](4)": ["Eth21-1", "Eth21-2", "Eth21-3", "Eth21-4"] + } + }, + "Ethernet168": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "185,186,187,188,189,190,191,192", + "breakout_modes": { + "1x400G[100G]": ["Eth22"], + "1x100G(4)": ["Eth22"], + "4x25G[10G](4)": ["Eth22-1", "Eth22-2", "Eth22-3", "Eth22-4"], + "4x10G[25G](4)": ["Eth22-1", "Eth22-2", "Eth22-3", "Eth22-4"] + } + }, + "Ethernet176": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "161,162,163,164,165,166,167,168", + "breakout_modes": { + "1x400G[100G]": ["Eth23"], + "1x100G(4)": ["Eth23"], + "4x25G[10G](4)": ["Eth23-1", "Eth23-2", "Eth23-3", "Eth23-4"], + "4x10G[25G](4)": ["Eth23-1", "Eth23-2", "Eth23-3", "Eth23-4"] + } + }, + "Ethernet184": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "169,170,171,172,173,174,175,176", + "breakout_modes": { + "1x400G[100G]": ["Eth24"], + "1x100G(4)": ["Eth24"], + "4x25G[10G](4)": ["Eth24-1", "Eth24-2", "Eth24-3", "Eth24-4"], + "4x10G[25G](4)": ["Eth24-1", "Eth24-2", "Eth24-3", "Eth24-4"] + } + }, + "Ethernet192": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x400G[100G]": ["Eth25"], + "1x100G(4)": ["Eth25"], + "4x25G[10G](4)": ["Eth25-1", "Eth25-2", "Eth25-3", "Eth25-4"], + "4x10G[25G](4)": ["Eth25-1", "Eth25-2", "Eth25-3", "Eth25-4"] + } + }, + "Ethernet200": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x400G[100G]": ["Eth26"], + "1x100G(4)": ["Eth26"], + "4x25G[10G](4)": ["Eth26-1", "Eth26-2", "Eth26-3", "Eth26-4"], + "4x10G[25G](4)": ["Eth26-1", "Eth26-2", "Eth26-3", "Eth26-4"] + } + }, + "Ethernet208": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x400G[100G]": ["Eth27"], + "1x100G(4)": ["Eth27"], + "4x25G[10G](4)": ["Eth27-1", "Eth27-2", "Eth27-3", "Eth27-4"], + "4x10G[25G](4)": ["Eth27-1", "Eth27-2", "Eth27-3", "Eth27-4"] + } + }, + "Ethernet216": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x400G[100G]": ["Eth28"], + "1x100G(4)": ["Eth28"], + "4x25G[10G](4)": ["Eth28-1", "Eth28-2", "Eth28-3", "Eth28-4"], + "4x10G[25G](4)": ["Eth28-1", "Eth28-2", "Eth28-3", "Eth28-4"] + } + }, + "Ethernet224": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "241,242,243,244,245,246,247,248", + "breakout_modes": { + "1x400G[100G]": ["Eth29"], + "1x100G(4)": ["Eth29"], + "4x25G[10G](4)": ["Eth29-1", "Eth29-2", "Eth29-3", "Eth29-4"], + "4x10G[25G](4)": ["Eth29-1", "Eth29-2", "Eth29-3", "Eth29-4"] + } + }, + "Ethernet232": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "249,250,251,252,253,254,255,256", + "breakout_modes": { + "1x400G[100G]": ["Eth30"], + "1x100G(4)": ["Eth30"], + "4x25G[10G](4)": ["Eth30-1", "Eth30-2", "Eth30-3", "Eth30-4"], + "4x10G[25G](4)": ["Eth30-1", "Eth30-2", "Eth30-3", "Eth30-4"] + } + }, + "Ethernet240": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "225,226,227,228,229,230,231,232", + "breakout_modes": { + "1x400G[100G]": ["Eth31"], + "1x100G(4)": ["Eth31"], + "4x25G[10G](4)": ["Eth31-1", "Eth31-2", "Eth31-3", "Eth31-4"], + "4x10G[25G](4)": ["Eth31-1", "Eth31-2", "Eth31-3", "Eth31-4"] + } + }, + "Ethernet248": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "233,234,235,236,237,238,239,240", + "breakout_modes": { + "1x400G[100G]": ["Eth32"], + "1x100G(4)": ["Eth32"], + "4x25G[10G](4)": ["Eth32-1", "Eth32-2", "Eth32-3", "Eth32-4"], + "4x10G[25G](4)": ["Eth32-1", "Eth32-2", "Eth32-3", "Eth32-4"] + } + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/plugins/sfputil.py b/device/wistron/x86_64-wistron_6512_32r-r0/plugins/sfputil.py index 8dbc6ba8519a..c38b792bb9ca 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/plugins/sfputil.py +++ b/device/wistron/x86_64-wistron_6512_32r-r0/plugins/sfputil.py @@ -111,6 +111,7 @@ def get_presence(self, port_num): val_file.close() except IOError as e: print("Error: unable to access file: %s" % str(e)) + val_file.close() return False if content == "1": @@ -134,6 +135,7 @@ def get_low_power_mode(self, port_num): val_file.close() except IOError as e: print("Error: unable to access file: %s" % str(e)) + val_file.close() return False if content == "1": @@ -158,10 +160,35 @@ def set_low_power_mode(self, port_num, lpmode): return True except IOError as e: print("Error: unable to open file: %s" % str(e)) + val_file.close() return False def reset(self, port_num): - raise NotImplementedError + if port_num < self.port_start or port_num > self.port_end: + return False + if not self.get_presence(port_num): + return False # Port is not present, unable to set reset + + if port_num < 16: + reset_path = self.BASE_CPLD1_PATH + "port" + str(port_num+1) + "_reset" + else: + reset_path = self.BASE_CPLD2_PATH + "port" + str(port_num+1) + "_reset" + + self.__port_to_mod_rst = reset_path + + try: + val_file = open(self.__port_to_mod_rst, 'w') + val_file.write('1') + time.sleep(1) + val_file.write('0') + time.sleep(1) + val_file.close() + return True + except IOError as e: + print("Error: unable to open file: %s" % str(e)) + val_file.close() + return False + def _get_sfp_presence(self): port_pres = {} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/fan.py b/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/fan.py deleted file mode 100644 index aec7e23be5c0..000000000000 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/fan.py +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/env python - -############################################################################# -# -# Module contains an implementation of SONiC Platform Base API and -# provides the fan status which are available in the platform -# -############################################################################# - -import os.path - -try: - from sonic_platform_base.fan_base import FanBase -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - -FAN_PATH = "/sys/bus/i2c/devices/0-0044/" -FANTRAY_NAME_LIST = ["FANTRAY-1", "FANTRAY-2", - "FANTRAY-3", "FANTRAY-4", - "FANTRAY-5", "FANTRAY-6", "FANTRAY-7"] -FAN_NAME_LIST = ["fan1_front","fan2_front","fan3_front","fan4_front","fan5_front","fan6_front", "fan7_front",\ -"fan1_rear","fan2_rear","fan3_rear","fan4_rear", "fan5_rear", "fan6_rear", "fan7_rear",] - -class Fan(FanBase): - """Platform-specific Fan class""" - - def __init__(self, fan_index): - self.fan_tray_index = fan_index - self.fan_presence = "fan{}_present" - self.fan_direction = "fan{}_direction" - self.fan_speed_rpm = "fan{}_input" - FanBase.__init__(self) - - def __read_txt_file(self, file_path): - try: - with open(file_path, 'r') as fd: - data = fd.read() - return data.strip() - except IOError: - pass - return "" - - def __write_txt_file(self, file_path, value): - try: - with open(file_path, 'w') as fd: - fd.write(str(value)) - except BaseException: - return False - return True - - def __search_file_by_name(self, directory, file_name): - for dirpath, dirnames, files in os.walk(directory): - for name in files: - file_path = os.path.join(dirpath, name) - if name in file_name: - return file_path - return None - - def get_direction(self): - """ - Retrieves the direction of fan - Returns: - A string, either FAN_DIRECTION_INTAKE or FAN_DIRECTION_EXHAUST - depending on fan direction - """ - index1=self.fan_tray_index - if self.fan_tray_index>6: - index1=self.fan_tray_index%7 - fan_direction_file = (FAN_PATH + - self.fan_direction.format(index1+1)) - raw = self.__read_txt_file(fan_direction_file).strip('\r\n') - direction = self.FAN_DIRECTION_INTAKE if str( - raw).upper() == "1" else self.FAN_DIRECTION_EXHAUST - - return direction - - def get_speed(self): - """ - Retrieves the speed of fan as a percentage of full speed - Returns: - An integer, the percentage of full fan speed, in the range 0 (off) - to 12000 (full speed) - """ - - speed = 0 - if self.fan_tray_index<=13: - index1=self.fan_tray_index - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1)) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - - return int(speed) - - def get_target_speed(self): - """ - Retrieves the target (expected) speed of the fan - Returns: - An integer, the percentage of full fan speed, in the range 0 (off) - to 100 (full speed) - """ - - speed = 0 - if self.fan_tray_index<=13: - index1=self.fan_tray_index - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1)) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - - return int(speed) - - def get_speed_tolerance(self): - """ - Retrieves the speed tolerance of the fan - Returns: - An integer, the percentage of variance from target speed which is - considered tolerable - """ - return 10 - - def set_speed(self, speed): - """ - Sets the fan speed - Args: - speed: An integer, the percentage of full fan speed to set fan to, - in the range 0 (off) to 100 (full speed) - Returns: - A boolean, True if speed is set successfully, False if not - - Note: - Depends on pwm or target mode is selected: - 1) pwm = speed_pc * 255 <-- Currently use this mode. - 2) target_pwm = speed_pc * 100 / 255 - 2.1) set pwm{}_enable to 3 - - """ - return False - - def set_status_led(self, color): - """ - Sets the state of the fan module status LED - Args: - color: A string representing the color with which to set the - fan module status LED - Returns: - bool: True if status LED state is set successfully, False if not - """ - return False - - def get_name(self): - """ - Retrieves the name of the device - Returns: - string: The name of the device - """ - fan_name = FAN_NAME_LIST[self.fan_tray_index] - - return fan_name - - def get_presence(self): - """ - Retrieves the presence of the PSU - Returns: - bool: True if PSU is present, False if not - """ - index1=self.fan_tray_index - if self.fan_tray_index>6: - index1=self.fan_tray_index%7 - fan_direction_file = (FAN_PATH + - self.fan_presence.format(index1+1)) - present_str = self.__read_txt_file(fan_direction_file) or '1' - - return int(present_str) == 1 - - def get_status(self): - """ - Retrieves the operational status of the device - Returns: - A boolean value, True if device is operating properly, False if not - """ - return self.get_presence() and self.get_speed() > 0 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/psu.py b/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/psu.py deleted file mode 100644 index dc13cc1ed824..000000000000 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/psu.py +++ /dev/null @@ -1,248 +0,0 @@ -#!/usr/bin/env python - -############################################################################# -# psuutil.py -# Platform-specific PSU status interface for SONiC -############################################################################# - -try: - from sonic_platform_base.psu_base import PsuBase -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - -PSU_NAME_LIST = ["PSU-1", "PSU-2"] - -class Psu(PsuBase): - """Platform-specific Psu class""" - - SYSFS_PSU_DIR = ["/sys/bus/i2c/devices/0-005a", - "/sys/bus/i2c/devices/0-0059"] - - def __init__(self, psu_index): - self.index = psu_index - PsuBase.__init__(self) - - - def get_fan(self): - """ - Retrieves object representing the fan module contained in this PSU - Returns: - An object dervied from FanBase representing the fan module - contained in this PSU - """ - # Hardware not supported - return False - - def get_powergood_status(self): - """ - Retrieves the powergood status of PSU - Returns: - A boolean, True if PSU has stablized its output voltages and passed all - its internal self-tests, False if not. - """ - return self.get_status() - - def set_status_led(self, color): - """ - Sets the state of the PSU status LED - Args: - color: A string representing the color with which to set the PSU status LED - Note: Only support green and off - Returns: - bool: True if status LED state is set successfully, False if not - """ - # Hardware not supported - return False - - def get_name(self): - """ - Retrieves the name of the device - Returns: - string: The name of the device - """ - return PSU_NAME_LIST[self.index] - - def get_presence(self): - """ - Retrieves the presence of the PSU - Returns: - bool: True if PSU is present, False if not - """ - attr_file ='present' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - status = 0 - try: - with open(attr_path, 'r') as psu_prs: - status = int(psu_prs.read()) - except IOError: - return False - - return status == 1 - - def get_status(self): - """ - Retrieves the operational status of the device - Returns: - A boolean value, True if device is operating properly, False if not - """ - attr_file = 'power_good' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - status = 0 - try: - with open(attr_path, 'r') as power_status: - status = int(power_status.read()) - except IOError: - return False - - return status == 1 - - def get_model(self): - """ - Retrieves the model number/name of a power supply unit (PSU) defined - by 1-based index - :param idx: An integer, 1-based index of the PSU of which to query model number - :return: String, denoting model number/name - """ - attr_file ='model' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - model = "" - try: - with open(attr_path, 'r') as psu_model: - model = psu_model.read() - except IOError: - return model - - return model - - def get_mfr_id(self): - """ - Retrieves the manufacturing id of a power supply unit (PSU) defined - by 1-based index - :param idx: An integer, 1-based index of the PSU of which to query mfr id - :return: String, denoting manufacturing id - """ - attr_file ='vendor' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - vendor = "" - try: - with open(attr_path, 'r') as psu_vendor: - vendor = psu_vendor.read() - except IOError: - return vendor - - return vendor - - def get_serial(self): - """ - Retrieves the serial number of a power supply unit (PSU) defined - by 1-based index - :param idx: An integer, 1-based index of the PSU of which to query serial number - :return: String, denoting serial number of the PSU unit - """ - attr_file ='sn' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - sn = "" - try: - with open(attr_path, 'r') as psu_sn: - sn = psu_sn.read() - except IOError: - return sn - - return sn - - def get_temperature(self): - """ - Retrieves current temperature reading from PSU - Returns: - A float number of current temperature in Celsius up to nearest thousandth - of one degree Celsius, e.g. 30.125 - """ - attr_file ='temp1_input' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - temp = 0.0 - try: - with open(attr_path, 'r') as psu_temp: - temp = float(psu_temp.read()) / 1000 - except IOError: - return temp - - return temp - - def get_temperature_high_threshold(self): - """ - Retrieves the high threshold temperature of PSU - Returns: - A float number, the high threshold temperature of PSU in Celsius - up to nearest thousandth of one degree Celsius, e.g. 30.125 - """ - return False #Not supported - - def get_voltage_high_threshold(self): - """ - Retrieves the high threshold PSU voltage output - Returns: - A float number, the high threshold output voltage in volts, - e.g. 12.1 - """ - return False #Not supported - - def get_voltage_low_threshold(self): - """ - Retrieves the low threshold PSU voltage output - Returns: - A float number, the low threshold output voltage in volts, - e.g. 12.1 - """ - return False #Not supported - - def get_voltage(self): - """ - Retrieves current PSU voltage output - Returns: - A float number, the output voltage in volts, - e.g. 12.1 - """ - attr_file ='in2_input' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - volt = 0.0 - try: - with open(attr_path, 'r') as psu_volt: - volt = float(psu_volt.read()) / 1000 - except IOError: - return volt - - return volt - - def get_current(self): - """ - Retrieves present electric current supplied by PSU - Returns: - A float number, the electric current in amperes, e.g 15.4 - """ - attr_file ='curr2_input' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - curr = 0.0 - try: - with open(attr_path, 'r') as psu_curr: - curr = float(psu_curr.read()) / 1000 - except IOError: - return curr - - return curr - - def get_power(self): - """ - Retrieves current energy supplied by PSU - Returns: - A float number, the power in watts, e.g. 302.6 - """ - attr_file ='power2_input' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file - power = 0.0 - try: - with open(attr_path, 'r') as psu_power: - power = float(psu_power.read()) / 1000000 - except IOError: - return power - - return power diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/watchdog.py b/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/watchdog.py deleted file mode 100644 index 820dd54f954a..000000000000 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/watchdog.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python - -######################################################################## -# -# Abstract base class for implementing a platform-specific class with -# which to interact with a hardware watchdog module in SONiC -# -######################################################################## - -try: - from sonic_platform_base.watchdog_base import WatchdogBase -except ImportError as e: - raise ImportError(str(e) + "- required module not found") - -class Watchdog(WatchdogBase): - """ - Abstract base class for interfacing with a hardware watchdog module - """ - - def __init__(self): - print("INFO: Watchdog __init__") - - def arm(self, seconds): - """ - Arm the hardware watchdog with a timeout of seconds. - If the watchdog is currently armed, calling this function will - simply reset the timer to the provided value. If the underlying - hardware does not support the value provided in , this - method should arm the watchdog with the *next greater* - available value. - Returns: - An integer specifying the *actual* number of seconds the - watchdog was armed with. On failure returns -1. - """ - print("ERROR: Platform did not implement arm()") - raise NotImplementedError - - def disarm(self): - """ - Disarm the hardware watchdog - Returns: - A boolean, True if watchdog is disarmed successfully, False - if not - """ - print("ERROR: Platform did not implement disarm()") - raise NotImplementedError - - def is_armed(self): - """ - Retrieves the armed state of the hardware watchdog. - Returns: - A boolean, True if watchdog is armed, False if not - """ - print("ERROR: Platform did not implement is_armed()") - raise NotImplementedError - - def get_remaining_time(self): - """ - If the watchdog is armed, retrieve the number of seconds - remaining on the watchdog timer - Returns: - An integer specifying the number of seconds remaining on - their watchdog timer. If the watchdog is not armed, returns - -1. - S5232 doesnot have hardware support to show remaining time. - Due to this limitation, this API is implemented in software. - This API would return correct software time difference if it - is called from the process which armed the watchdog timer. - If this API called from any other process, it would return - 0. If the watchdog is not armed, this API would return -1. - """ - print("ERROR: Platform did not implement get_remaining_time()") - raise NotImplementedError diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/system_health_monitoring_config.json b/device/wistron/x86_64-wistron_6512_32r-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..0e0eec971cac --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/system_health_monitoring_config.json @@ -0,0 +1,11 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": ["asic"], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "red", + "normal": "green", + "booting": "green_blinking" + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/6512-32_32x400G.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/6512-32_32x400G.config.yaml index 17ed53abb1d0..cc5bebd7f719 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/6512-32_32x400G.config.yaml +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/6512-32_32x400G.config.yaml @@ -9,16 +9,17 @@ nodes: netdev: - auto_create: "no" multi_interface: "yes" - mac_clk: "1340" - skip_pll_check: "false" - sys_clk: "1720" - mbist_on_init: "true" - ifc_clk: "1200" buffer_management_mode: "api_driven" + wred_cr_ip_proto_list: "17" + cr_assignment_mode: "1" max_lossless_tc: "2" ilpm_enable: "1" forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E" - ecn_stats_enable: "1" + led_cfg_sck_rate: "0x5" + led_refresh_precliff_timer: "0x18eec2" + led_refresh_cliff_timer: "0x15e" + led_cfg_pic_stream_mode: "1" + led_refresh_tmr_ctl_enable: "1" txring: - txring_id: "0" desc_count: "1024" @@ -41,22 +42,24 @@ nodes: desc_count: "1024" prio: "1" netdev: "true" - queues: "0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44" + queues: "0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39" - rxring_id: "1" desc_count: "1024" prio: "1" netdev: "true" - queues: "1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45" + queues: "1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40" - rxring_id: "2" desc_count: "1024" prio: "1" netdev: "true" - queues: "2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46" + queues: "2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 47" - rxring_id: "3" desc_count: "1024" prio: "1" - netdev: "true" - queues: "3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47" + queues: "42, 43, 44, 45, 46" + sys_clk: "1720" + ifc_clk: "1200" + mac_clk: "1340" devports: - id: "0" sysport: "1000" @@ -285,20 +288,6 @@ nodes: speed: "400G" sysport: "233" type: "eth" - - id: "257" - fec: "NONE" - lanes: "0:1" - serdes_group: "32" - speed: "10G" - sysport: "257" - type: "mgmt 0" - - id: "258" - fec: "NONE" - lanes: "1:1" - serdes_group: "32" - speed: "10G" - sysport: "258" - type: "mgmt 1" isg: - id: "11" lane_swap: "27163504" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers.json.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers.json.j2 index 1a31812c26b1..b9265c62eb8f 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configuration available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "51691264", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"135520", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"10243072" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_def_lossy.j2 index 1a31812c26b1..79dbf9b2864b 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_def_lossy.j2 @@ -7,7 +7,7 @@ { "BUFFER_POOL": { "lossy_pool": { - "size": "56985600", + "size": "61458432", "type": "egress", "mode": "dynamic", "xoff": "0" @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_t1.j2 index 93dac6b1992a..b9265c62eb8f 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/buffers_defaults_t1.j2 @@ -1,4 +1,4 @@ -{# Default values which will be used if no actual configura available #} +{# Default values which will be used if no actual configuration available #} {% set default_cable = '40m' %} {# Port configuration to cable length look-up table #} @@ -76,7 +76,7 @@ }, "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "47218432", + "size": "51691264", "type": "ingress", "mode": "dynamic", "xoff": "17708800" @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "xoff":"38816", + "pool":"ingress_lossless_pool", + "xoff":"135520", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/hwsku.json b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/hwsku.json new file mode 100644 index 000000000000..7157f361663e --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_A b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_A +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_B b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_B +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.config.yaml index cf505b299dd8..e3db67a5ccc5 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.config.yaml @@ -3,6 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.datapath.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.datapath.config.yaml index 891b0b3e2834..a539d6c70040 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.datapath.config.yaml +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/ivm.sai.datapath.config.yaml @@ -1,9 +1,9 @@ -ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880" -ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218" +ISAI_PARAM_P0_0_LS : "864 864 720 720 720 720" +ISAI_PARAM_P0_1_LS : "770 490 434 378 378 378" ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98" -ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960" -ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920" -ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938" -ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478" +ISAI_PARAM_P1_0_LS : "288 288 240 240 240 240" +ISAI_PARAM_P1_0_LL : "576 576 480 480 480 480" +ISAI_PARAM_P1_1_LS : "686 406 364 308 308 308" +ISAI_PARAM_P1_1_LL : "574 574 574 574 574 574" ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98" ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos.json.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos.json.j2 index 104d2d78de87..b03078465730 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos.json.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos.json.j2 @@ -32,87 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } - }, - "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, - "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_def_lossy.j2 index 104d2d78de87..c1170619bc6c 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_t1.j2 index 4b9748c7b594..b03078465730 100644 --- a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/6512-32_32x100G.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/6512-32_32x100G.config.yaml new file mode 100644 index 000000000000..f22016d7be80 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/6512-32_32x100G.config.yaml @@ -0,0 +1,419 @@ +ifcs: + options: + log_level: "info" +nodes: +- node_id: "0" + options: + sd_low_power_mode_global_default: "true" + sku: "configs/sku/innovium.77700_A" + netdev: + - auto_create: "no" + multi_interface: "yes" + buffer_management_mode: "api_driven" + wred_cr_ip_proto_list: "17" + cr_assignment_mode: "1" + max_lossless_tc: "2" + ilpm_enable: "1" + forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E" + led_cfg_sck_rate: "0x5" + led_refresh_precliff_timer: "0x18eec2" + led_refresh_cliff_timer: "0x15e" + led_cfg_pic_stream_mode: "1" + led_refresh_tmr_ctl_enable: "1" + txring: + - txring_id: "0" + desc_count: "1024" + prio: "1" + netdev: "true" + - txring_id: "1" + desc_count: "1024" + prio: "1" + netdev: "true" + - txring_id: "2" + desc_count: "1024" + prio: "1" + netdev: "true" + - txring_id: "3" + desc_count: "1024" + prio: "1" + netdev: "true" + rxring: + - rxring_id: "0" + desc_count: "1024" + prio: "1" + netdev: "true" + queues: "0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39" + - rxring_id: "1" + desc_count: "1024" + prio: "1" + netdev: "true" + queues: "1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40" + - rxring_id: "2" + desc_count: "1024" + prio: "1" + netdev: "true" + queues: "2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 47" + - rxring_id: "3" + desc_count: "1024" + prio: "1" + queues: "42, 43, 44, 45, 46" + sys_clk: "1720" + ifc_clk: "1200" + mac_clk: "1340" + devports: + - id: "0" + sysport: "1000" + type: "cpu" + - id: "89" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "11" + speed: "100G" + sysport: "89" + type: "eth" + - id: "81" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "10" + speed: "100G" + sysport: "81" + type: "eth" + - id: "73" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "9" + speed: "100G" + sysport: "73" + type: "eth" + - id: "65" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "8" + speed: "100G" + sysport: "65" + type: "eth" + - id: "57" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "7" + speed: "100G" + sysport: "57" + type: "eth" + - id: "49" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "6" + speed: "100G" + sysport: "49" + type: "eth" + - id: "41" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "5" + speed: "100G" + sysport: "41" + type: "eth" + - id: "33" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "4" + speed: "100G" + sysport: "33" + type: "eth" + - id: "153" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "19" + speed: "100G" + sysport: "153" + type: "eth" + - id: "145" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "18" + speed: "100G" + sysport: "145" + type: "eth" + - id: "137" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "17" + speed: "100G" + sysport: "137" + type: "eth" + - id: "129" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "16" + speed: "100G" + sysport: "129" + type: "eth" + - id: "121" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "15" + speed: "100G" + sysport: "121" + type: "eth" + - id: "113" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "14" + speed: "100G" + sysport: "113" + type: "eth" + - id: "105" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "13" + speed: "100G" + sysport: "105" + type: "eth" + - id: "97" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "12" + speed: "100G" + sysport: "97" + type: "eth" + - id: "209" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "26" + speed: "100G" + sysport: "209" + type: "eth" + - id: "217" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "27" + speed: "100G" + sysport: "217" + type: "eth" + - id: "193" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "24" + speed: "100G" + sysport: "193" + type: "eth" + - id: "201" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "25" + speed: "100G" + sysport: "201" + type: "eth" + - id: "177" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "22" + speed: "100G" + sysport: "177" + type: "eth" + - id: "185" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "23" + speed: "100G" + sysport: "185" + type: "eth" + - id: "161" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "20" + speed: "100G" + sysport: "161" + type: "eth" + - id: "169" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "21" + speed: "100G" + sysport: "169" + type: "eth" + - id: "17" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "2" + speed: "100G" + sysport: "17" + type: "eth" + - id: "25" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "3" + speed: "100G" + sysport: "25" + type: "eth" + - id: "1" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "0" + speed: "100G" + sysport: "1" + type: "eth" + - id: "9" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "1" + speed: "100G" + sysport: "9" + type: "eth" + - id: "241" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "30" + speed: "100G" + sysport: "241" + type: "eth" + - id: "249" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "31" + speed: "100G" + sysport: "249" + type: "eth" + - id: "225" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "28" + speed: "100G" + sysport: "225" + type: "eth" + - id: "233" + fec: "KRFEC" + lanes: "0:4" + serdes_group: "29" + speed: "100G" + sysport: "233" + type: "eth" + isg: + - id: "11" + lane_swap: "27163504" + rx_polarity: "01010000" + tx_polarity: "01100000" + - id: "10" + lane_swap: "51604372" + rx_polarity: "11001000" + tx_polarity: "11110000" + - id: "9" + lane_swap: "17032546" + rx_polarity: "10001000" + tx_polarity: "00000100" + - id: "8" + lane_swap: "70435162" + rx_polarity: "11000100" + tx_polarity: "00100101" + - id: "7" + lane_swap: "27053416" + rx_polarity: "00011001" + tx_polarity: "10001000" + - id: "6" + lane_swap: "70635142" + rx_polarity: "10001000" + tx_polarity: "01100001" + - id: "5" + lane_swap: "27053416" + rx_polarity: "00001001" + tx_polarity: "00001000" + - id: "4" + lane_swap: "62405173" + rx_polarity: "11000101" + tx_polarity: "10110000" + - id: "19" + lane_swap: "06152347" + rx_polarity: "11010110" + tx_polarity: "10001110" + - id: "18" + lane_swap: "73614052" + rx_polarity: "11001100" + tx_polarity: "11100001" + - id: "17" + lane_swap: "17053426" + rx_polarity: "10001001" + tx_polarity: "00001000" + - id: "16" + lane_swap: "54216073" + rx_polarity: "10000011" + tx_polarity: "01001010" + - id: "15" + lane_swap: "36072514" + rx_polarity: "10100000" + tx_polarity: "10100001" + - id: "14" + lane_swap: "50763241" + rx_polarity: "00010001" + tx_polarity: "01110001" + - id: "13" + lane_swap: "26071435" + rx_polarity: "00000011" + tx_polarity: "00101001" + - id: "12" + lane_swap: "43510627" + rx_polarity: "11100100" + tx_polarity: "00011101" + - id: "26" + lane_swap: "31427506" + rx_polarity: "10011000" + tx_polarity: "11110001" + - id: "27" + lane_swap: "21735406" + rx_polarity: "01011110" + tx_polarity: "10011100" + - id: "24" + lane_swap: "07162435" + rx_polarity: "10010000" + tx_polarity: "10001010" + - id: "25" + lane_swap: "64501372" + rx_polarity: "11010001" + tx_polarity: "10001010" + - id: "22" + lane_swap: "35071624" + rx_polarity: "00100011" + tx_polarity: "11001011" + - id: "23" + lane_swap: "64705132" + rx_polarity: "11010100" + tx_polarity: "11101000" + - id: "20" + lane_swap: "16270453" + rx_polarity: "00101100" + tx_polarity: "00001001" + - id: "21" + lane_swap: "71356204" + rx_polarity: "01100010" + tx_polarity: "00001011" + - id: "2" + lane_swap: "37260145" + rx_polarity: "10011010" + tx_polarity: "11000000" + - id: "3" + lane_swap: "47512630" + rx_polarity: "10010100" + tx_polarity: "10101101" + - id: "0" + lane_swap: "05462713" + rx_polarity: "01000000" + tx_polarity: "10010010" + - id: "1" + lane_swap: "71605432" + rx_polarity: "00000000" + tx_polarity: "11000101" + - id: "30" + lane_swap: "37251604" + rx_polarity: "11000010" + tx_polarity: "11001000" + - id: "31" + lane_swap: "42736051" + rx_polarity: "10000110" + tx_polarity: "01000010" + - id: "28" + lane_swap: "01245736" + rx_polarity: "10110101" + tx_polarity: "10000001" + - id: "29" + lane_swap: "52706134" + rx_polarity: "00010010" + tx_polarity: "10101010" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers.json.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers.json.j2 new file mode 100644 index 000000000000..020656fdb8f5 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers.json.j2 @@ -0,0 +1,162 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "51691264", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, + "lossy_pool": { + "size": "18874368", + "type": "egress", + "mode": "dynamic", + "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"10243072" + }, + "ingress_lossy_profile": { + "pool":"lossy_pool", + "size":"0", + "static_th":"10243072" + }, + "egress_lossy_profile": { + "pool":"lossy_pool", + "size":"1518", + "dynamic_th":"2" + } + }, + "BUFFER_PG": { +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + + "BUFFER_QUEUE": { +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_def_lossy.j2 new file mode 100644 index 000000000000..79dbf9b2864b --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_def_lossy.j2 @@ -0,0 +1,42 @@ +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "BUFFER_POOL": { + "lossy_pool": { + "size": "61458432", + "type": "egress", + "mode": "dynamic", + "xoff": "0" + } + }, + "BUFFER_PROFILE": { + "ingress_lossy_profile": { + "pool":"lossy_pool", + "size":"0", + "static_th":"10243072" + }, + "egress_lossy_profile": { + "pool":"lossy_pool", + "size":"1518", + "dynamic_th":"2" + } + }, + "BUFFER_PG": { +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} + }, + "BUFFER_QUEUE": { +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_t1.j2 new file mode 100644 index 000000000000..020656fdb8f5 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/buffers_defaults_t1.j2 @@ -0,0 +1,162 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + +{ + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, + "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "51691264", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, + "lossy_pool": { + "size": "18874368", + "type": "egress", + "mode": "dynamic", + "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" + } + }, + "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"10243072" + }, + "ingress_lossy_profile": { + "pool":"lossy_pool", + "size":"0", + "static_th":"10243072" + }, + "egress_lossy_profile": { + "pool":"lossy_pool", + "size":"1518", + "dynamic_th":"2" + } + }, + "BUFFER_PG": { +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + + "BUFFER_QUEUE": { +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/hwsku.json b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/hwsku.json new file mode 100644 index 000000000000..4116ae2ba5f1 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_A b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_A new file mode 100644 index 000000000000..ec13307805e1 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_A @@ -0,0 +1,60 @@ +sku: innovium.77700_A + +device_id: 0x1b58 + +# Hardware constraint information +hardware: + num_ibs: 6 + ib_active: 0,1,2,3,4,5 + + ports_per_ib: 32, 32, 32, 32, 20, 20 + recirc_port_num: 32, 32, 32, 32, 32, 32 + cpu_port_num: 33 + cpu_port_ib: 0 + mgmt_port_num: 33 + mgmt_port_ibs: 1,2 + + pics_per_ib: 6, 7, 6, 5, 5, 5 + pic_ports_per_pic: 8 + max_serdes_speed: 50 + + num_shared_pics: 2 + + isg [0-4]: + ib: 0 + pic_id: [0-4] + + isg [5-9]: + ib: 5 + pic_id: [0-4] + + isg [10-14]: + ib: 1 + pic_id: [0-4] + + isg [16-20]: + ib: 3 + pic_id: [0-4] + + isg [21-25]: + ib: 4 + pic_id: [0-4] + + isg [26-30]: + ib: 2 + pic_id: [0-4] + + isg 15: + mode: 8:0 + ib: 1 + pic_id: 5 + + isg 31: + mode: 8:0 + ib: 0 + pic_id: 5 + + isg 32: + mode: 1:1 + ib: 1, 2 + pic_id: 6 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_B b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_B new file mode 100644 index 000000000000..57ba52cbc3bc --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/innovium.77700_B @@ -0,0 +1,60 @@ +sku: innovium.77700_B + +device_id: 0x1b58 + +# Hardware constraint information +hardware: + num_ibs: 6 + ib_active: 0,1,2,3,4,5 + + ports_per_ib: 32, 32, 32, 32, 20, 20 + recirc_port_num: 32, 32, 32, 32, 32, 32 + cpu_port_num: 33 + cpu_port_ib: 0 + mgmt_port_num: 33 + mgmt_port_ibs: 1,2 + + pics_per_ib: 6, 7, 7, 6, 5, 5 + pic_ports_per_pic: 8 + max_serdes_speed: 50 + + num_shared_pics: 2 + + isg [0-4]: + ib: 0 + pic_id: [0-4] + + isg [5-9]: + ib: 5 + pic_id: [0-4] + + isg [10-14]: + ib: 1 + pic_id: [0-4] + + isg [16-20]: + ib: 3 + pic_id: [0-4] + + isg [21-25]: + ib: 4 + pic_id: [0-4] + + isg [26-30]: + ib: 2 + pic_id: [0-4] + + isg 15: + mode: 4:4 + ib: 1, 3 + pic_id: 5 + + isg 31: + mode: 4:4 + ib: 0, 2 + pic_id: 5 + + isg 32: + mode: 1:1 + ib: 1, 2 + pic_id: 6 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.config.yaml new file mode 100644 index 000000000000..1f90f4de88dd --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.config.yaml @@ -0,0 +1,9 @@ +IFCS_INIT_FILE : "/usr/share/sonic/hwsku/6512-32_32x100G.config.yaml" +IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" +IFCS_INNO_CLI_PORT : "9999" +IFCS_TARGET : "device" +INNOVIUM_DIR : "/innovium" +PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" +IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" +IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.datapath.config.yaml b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.datapath.config.yaml new file mode 100644 index 000000000000..891b0b3e2834 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/ivm.sai.datapath.config.yaml @@ -0,0 +1,9 @@ +ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880" +ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218" +ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98" +ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960" +ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920" +ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938" +ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478" +ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98" +ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126" diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/pg_profile_lookup.ini new file mode 100644 index 000000000000..0d881737cfa1 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/pg_profile_lookup.ini @@ -0,0 +1,22 @@ +# PG lossless profiles. +# speed cable size xon xoff threshold xon_offset + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/port_config.ini b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/port_config.ini new file mode 100644 index 000000000000..9507616bd5c2 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/port_config.ini @@ -0,0 +1,33 @@ +# name lanes alias speed index mtu fec +Ethernet0 89,90,91,92 Eth1 100000 0 9126 rs +Ethernet8 81,82,83,84 Eth2 100000 1 9126 rs +Ethernet16 73,74,75,76 Eth3 100000 2 9126 rs +Ethernet24 65,66,67,68 Eth4 100000 3 9126 rs +Ethernet32 57,58,59,60 Eth5 100000 4 9126 rs +Ethernet40 49,50,51,52 Eth6 100000 5 9126 rs +Ethernet48 41,42,43,44 Eth7 100000 6 9126 rs +Ethernet56 33,34,35,36 Eth8 100000 7 9126 rs +Ethernet64 153,154,155,156 Eth9 100000 8 9126 rs +Ethernet72 145,146,147,148 Eth10 100000 9 9126 rs +Ethernet80 137,138,139,140 Eth11 100000 10 9126 rs +Ethernet88 129,130,131,132 Eth12 100000 11 9126 rs +Ethernet96 121,122,123,124 Eth13 100000 12 9126 rs +Ethernet104 113,114,115,116 Eth14 100000 13 9126 rs +Ethernet112 105,106,107,108 Eth15 100000 14 9126 rs +Ethernet120 97,98,99,100 Eth16 100000 15 9126 rs +Ethernet128 209,210,211,212 Eth17 100000 16 9126 rs +Ethernet136 217,218,219,220 Eth18 100000 17 9126 rs +Ethernet144 193,194,195,196 Eth19 100000 18 9126 rs +Ethernet152 201,202,203,204 Eth20 100000 19 9126 rs +Ethernet160 177,178,179,180 Eth21 100000 20 9126 rs +Ethernet168 185,186,187,188 Eth22 100000 21 9126 rs +Ethernet176 161,162,163,164 Eth23 100000 22 9126 rs +Ethernet184 169,170,171,172 Eth24 100000 23 9126 rs +Ethernet192 17,18,19,20 Eth25 100000 24 9126 rs +Ethernet200 25,26,27,28 Eth26 100000 25 9126 rs +Ethernet208 1,2,3,4 Eth27 100000 26 9126 rs +Ethernet216 9,10,11,12 Eth28 100000 27 9126 rs +Ethernet224 241,242,243,244 Eth29 100000 28 9126 rs +Ethernet232 249,250,251,252 Eth30 100000 29 9126 rs +Ethernet240 225,226,227,228 Eth31 100000 30 9126 rs +Ethernet248 233,234,235,236 Eth32 100000 31 9126 rs diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos.json.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos.json.j2 new file mode 100644 index 000000000000..b03078465730 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos.json.j2 @@ -0,0 +1,129 @@ +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + + +{ + "TC_TO_QUEUE_MAP":{ + "AZURE":{ + "0":"0", + "1":"1", + "2":"2", + "3":"3", + "4":"4", + "5":"5", + "6":"6", + "7":"7" + } + }, + "TC_TO_PRIORITY_GROUP_MAP": { + "AZURE": { + "0": "0", + "1": "0", + "2": "0", + "3": "3", + "4": "4", + "5": "0", + "6": "0", + "7": "0" + } + }, + "DSCP_TO_TC_MAP": { + "AZURE": { + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" + } + }, + "PORT_QOS_MAP": { +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_def_lossy.j2 new file mode 100644 index 000000000000..c1170619bc6c --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_def_lossy.j2 @@ -0,0 +1,121 @@ +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + + +{ + "TC_TO_QUEUE_MAP":{ + "AZURE":{ + "0":"0", + "1":"1", + "2":"2", + "3":"3", + "4":"4", + "5":"5", + "6":"6", + "7":"7" + } + }, + "TC_TO_PRIORITY_GROUP_MAP": { + "AZURE": { + "0": "0", + "1": "0", + "2": "0", + "3": "1", + "4": "2", + "5": "0", + "6": "0", + "7": "0" + } + }, + "DSCP_TO_TC_MAP": { + "AZURE": { + "0":"0", + "1":"0", + "2":"0", + "3":"0", + "4":"0", + "5":"0", + "6":"0", + "7":"0", + "8":"0", + "9":"0", + "10":"0", + "11":"0", + "12":"0", + "13":"0", + "14":"0", + "15":"0", + "16":"0", + "17":"0", + "18":"0", + "19":"0", + "20":"0", + "21":"0", + "22":"0", + "23":"0", + "24":"0", + "25":"0", + "26":"0", + "27":"0", + "28":"0", + "29":"0", + "30":"0", + "31":"0", + "32":"0", + "33":"0", + "34":"0", + "35":"0", + "36":"0", + "37":"0", + "38":"0", + "39":"0", + "40":"0", + "41":"0", + "42":"0", + "43":"0", + "44":"0", + "45":"0", + "46":"0", + "47":"0", + "48":"0", + "49":"0", + "50":"0", + "51":"0", + "52":"0", + "53":"0", + "54":"0", + "55":"0", + "56":"0", + "57":"0", + "58":"0", + "59":"0", + "60":"0", + "61":"0", + "62":"0", + "63":"0" + } + }, + "PORT_QOS_MAP": { +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "SCHEDULER": { + "scheduler.7": { + "type": "STRICT" + } + }, + "QUEUE": { + "{{ port_names }}|7": { + "scheduler": "[SCHEDULER|scheduler.7]" + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_t1.j2 new file mode 100644 index 000000000000..b03078465730 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/qos_defaults_t1.j2 @@ -0,0 +1,129 @@ +{% set port_names_list = [] %} +{% for port in PORT %} + {%- if port_names_list.append(port) %}{% endif %} +{% endfor %} +{% set port_names = port_names_list | join(',') -%} + + +{ + "TC_TO_QUEUE_MAP":{ + "AZURE":{ + "0":"0", + "1":"1", + "2":"2", + "3":"3", + "4":"4", + "5":"5", + "6":"6", + "7":"7" + } + }, + "TC_TO_PRIORITY_GROUP_MAP": { + "AZURE": { + "0": "0", + "1": "0", + "2": "0", + "3": "3", + "4": "4", + "5": "0", + "6": "0", + "7": "0" + } + }, + "DSCP_TO_TC_MAP": { + "AZURE": { + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" + } + }, + "PORT_QOS_MAP": { +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" + } + } +} diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/sai.profile b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/sai.profile new file mode 100644 index 000000000000..aba4fc81fb17 --- /dev/null +++ b/device/wistron/x86_64-wistron_6512_32r-r0/wistron_6512_32r_32x100/sai.profile @@ -0,0 +1 @@ +SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/ivm.sai.config.yaml diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers.json.j2 index 1a31812c26b1..b9265c62eb8f 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configuration available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "51691264", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"135520", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"10243072" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_def_lossy.j2 index 1a31812c26b1..79dbf9b2864b 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_def_lossy.j2 @@ -7,7 +7,7 @@ { "BUFFER_POOL": { "lossy_pool": { - "size": "56985600", + "size": "61458432", "type": "egress", "mode": "dynamic", "xoff": "0" @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_t1.j2 index 93dac6b1992a..b9265c62eb8f 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/buffers_defaults_t1.j2 @@ -1,4 +1,4 @@ -{# Default values which will be used if no actual configura available #} +{# Default values which will be used if no actual configuration available #} {% set default_cable = '40m' %} {# Port configuration to cable length look-up table #} @@ -76,7 +76,7 @@ }, "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "47218432", + "size": "51691264", "type": "ingress", "mode": "dynamic", "xoff": "17708800" @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", - "xoff":"38816", + "pool":"ingress_lossless_pool", + "xoff":"135520", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/config_32x400G_wistron_sw_to3200k.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/config_32x400G_wistron_sw_to3200k.yaml index 23445c6dede5..b96146517adb 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/config_32x400G_wistron_sw_to3200k.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/config_32x400G_wistron_sw_to3200k.yaml @@ -10,13 +10,11 @@ nodes: - auto_create: "no" multi_interface: "yes" buffer_management_mode: "api_driven" + wred_cr_ip_proto_list: "17" + cr_assignment_mode: "1" max_lossless_tc: "2" ilpm_enable: "1" forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E" - ecn_stats_enable: "1" - pcie_attn: "10, 0, 0, 0" - pcie_post: "10, 18, 18, 18" - pcie_pre1: "0, 0, 0, 0" led_cfg_sck_rate: "0x5" led_refresh_precliff_timer: "0x18eec2" led_refresh_cliff_timer: "0x15e" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/hwsku.json new file mode 100644 index 000000000000..7157f361663e --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_A b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_A +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.config.yaml old mode 100644 new mode 100755 index 0c1644ab7d72..ed98d89bfac6 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.datapath.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.datapath.config.yaml index 891b0b3e2834..a539d6c70040 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.datapath.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/ivm.sai.datapath.config.yaml @@ -1,9 +1,9 @@ -ISAI_PARAM_P0_0_LS : "4608 4608 4608 4608 2880 2880" -ISAI_PARAM_P0_1_LS : "2226 1946 1946 1890 1218 1218" +ISAI_PARAM_P0_0_LS : "864 864 720 720 720 720" +ISAI_PARAM_P0_1_LS : "770 490 434 378 378 378" ISAI_PARAM_P0_1_ALS : "434 154 154 98 98 98" -ISAI_PARAM_P1_0_LS : "1536 1536 1536 1536 960 960" -ISAI_PARAM_P1_0_LL : "3072 3072 3072 3072 1920 1920" -ISAI_PARAM_P1_1_LS : "1778 1498 1498 1442 938 938" -ISAI_PARAM_P1_1_LL : "2478 2478 2478 2478 2478 2478" +ISAI_PARAM_P1_0_LS : "288 288 240 240 240 240" +ISAI_PARAM_P1_0_LL : "576 576 480 480 480 480" +ISAI_PARAM_P1_1_LS : "686 406 364 308 308 308" +ISAI_PARAM_P1_1_LL : "574 574 574 574 574 574" ISAI_PARAM_P1_1_ALS : "434 154 154 98 98 98" ISAI_PARAM_P1_1_ALL : "126 126 126 126 126 126" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos.json.j2 old mode 100644 new mode 100755 index 104d2d78de87..0f1ecd1106d0 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos.json.j2 @@ -18,6 +18,18 @@ "7":"7" } }, + "MAP_PFC_PRIORITY_TO_QUEUE": { + "AZURE": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7" + } + }, "TC_TO_PRIORITY_GROUP_MAP": { "AZURE": { "0": "0", @@ -32,87 +44,149 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" - } - }, - "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" + "scheduler.0": { + "type" : "DWRR", + "weight": "1" + }, + "scheduler.1": { + "type" : "DWRR", + "weight": "1" } }, "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" +{% for port in port_names_list %} + "{{ port }}|3": { + "scheduler" : "scheduler.1", + "wred_profile" : "AZURE_LOSSLESS" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|4": { + "scheduler" : "scheduler.1", + "wred_profile" : "AZURE_LOSSLESS" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|2": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|6": { + "scheduler": "scheduler.0" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "PORT_QOS_MAP": { +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_to_queue_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..0f1ecd1106d0 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k/qos_defaults_t1.j2 @@ -18,6 +18,18 @@ "7":"7" } }, + "MAP_PFC_PRIORITY_TO_QUEUE": { + "AZURE": { + "0": "0", + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7" + } + }, "TC_TO_PRIORITY_GROUP_MAP": { "AZURE": { "0": "0", @@ -32,83 +44,149 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" + } + }, + "SCHEDULER": { + "scheduler.0": { + "type" : "DWRR", + "weight": "1" + }, + "scheduler.1": { + "type" : "DWRR", + "weight": "1" } }, + "QUEUE": { +{% for port in port_names_list %} + "{{ port }}|3": { + "scheduler" : "scheduler.1", + "wred_profile" : "AZURE_LOSSLESS" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|4": { + "scheduler" : "scheduler.1", + "wred_profile" : "AZURE_LOSSLESS" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|2": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5": { + "scheduler": "scheduler.0" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|6": { + "scheduler": "scheduler.0" + }{% if not loop.last %},{% endif %} + +{% endfor %} + }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_to_queue_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers.json.j2 index 1a31812c26b1..794b5c854689 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "47218432", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"9497600" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_def_lossy.j2 index 1a31812c26b1..abb756c7d4ef 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_def_lossy.j2 @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_t1.j2 index 93dac6b1992a..17b85f08443a 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/buffers_defaults_t1.j2 @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", "static_th":"9497600" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/hwsku.json new file mode 100644 index 000000000000..c874d4d0b9ba --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet152": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet160": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet168": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet176": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet184": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet192": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet200": { + "default_brkout_mode": "4x10G[25G](4)", + "fec": "none" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_A b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_A +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/ivm.sai.config.yaml old mode 100644 new mode 100755 index 5e5d2fe66861..b9f2cc4061d1 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos.json.j2 old mode 100644 new mode 100755 index 104d2d78de87..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos.json.j2 @@ -32,87 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } - }, - "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, - "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_104x1025_6x100/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers.json.j2 index 1a31812c26b1..794b5c854689 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "47218432", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"9497600" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_def_lossy.j2 index 1a31812c26b1..abb756c7d4ef 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_def_lossy.j2 @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_t1.j2 index 93dac6b1992a..1479f78fed9e 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/buffers_defaults_t1.j2 @@ -86,52 +86,76 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "type": "egress" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", "static_th":"9497600" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/hwsku.json new file mode 100644 index 000000000000..c597c7248c87 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet200": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_A b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_A +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/ivm.sai.config.yaml old mode 100644 new mode 100755 index 8014caa1da4d..3a18ade8f2b2 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos.json.j2 old mode 100644 new mode 100755 index 104d2d78de87..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos.json.j2 @@ -32,87 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } - }, - "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, - "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_24x400_8x100/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers.json.j2 index 1a31812c26b1..794b5c854689 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "47218432", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"9497600" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_def_lossy.j2 index 1a31812c26b1..abb756c7d4ef 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_def_lossy.j2 @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_t1.j2 index 93dac6b1992a..17b85f08443a 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/buffers_defaults_t1.j2 @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", "static_th":"9497600" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/hwsku.json new file mode 100644 index 000000000000..ac524d6920ce --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet40": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet88": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet152": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G(4)", + "fec": "none" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_A b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_A +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/ivm.sai.config.yaml old mode 100644 new mode 100755 index e17792d88daa..36fd34a546c4 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos.json.j2 old mode 100644 new mode 100755 index 104d2d78de87..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos.json.j2 @@ -32,87 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } - }, - "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, - "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_28x400_4x100/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers.json.j2 index 93dac6b1992a..020656fdb8f5 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers.json.j2 @@ -76,7 +76,7 @@ }, "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "47218432", + "size": "51691264", "type": "ingress", "mode": "dynamic", "xoff": "17708800" @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_def_lossy.j2 index 1a31812c26b1..79dbf9b2864b 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_def_lossy.j2 @@ -7,7 +7,7 @@ { "BUFFER_POOL": { "lossy_pool": { - "size": "56985600", + "size": "61458432", "type": "egress", "mode": "dynamic", "xoff": "0" @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_t1.j2 index 93dac6b1992a..020656fdb8f5 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/buffers_defaults_t1.j2 @@ -76,7 +76,7 @@ }, "BUFFER_POOL": { "ingress_lossless_pool": { - "size": "47218432", + "size": "51691264", "type": "ingress", "mode": "dynamic", "xoff": "17708800" @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "70565632", + "type": "egress", + "mode": "static" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", - "static_th":"9497600" + "static_th":"10243072" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/config_32x100G_wistron_sw_to3200k.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/config_32x100G_wistron_sw_to3200k.yaml index a6f5d00d8b34..a0faac84625e 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/config_32x100G_wistron_sw_to3200k.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/config_32x100G_wistron_sw_to3200k.yaml @@ -10,12 +10,11 @@ nodes: - auto_create: "no" multi_interface: "yes" buffer_management_mode: "api_driven" + wred_cr_ip_proto_list: "17" + cr_assignment_mode: "1" max_lossless_tc: "2" ilpm_enable: "1" forward_profile: "IFCS_FORWARD_PROFILE_ID_PROFILE_E" - pcie_attn: "10, 0, 0, 0" - pcie_post: "10, 18, 18, 18" - pcie_pre1: "0, 0, 0, 0" led_cfg_sck_rate: "0x5" led_refresh_precliff_timer: "0x18eec2" led_refresh_cliff_timer: "0x15e" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/hwsku.json new file mode 100644 index 000000000000..4116ae2ba5f1 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/ivm.sai.config.yaml old mode 100644 new mode 100755 index 8ae2b9683d49..7bc06c952692 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_B" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos.json.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos.json.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_32x100/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers.json.j2 index 1a31812c26b1..794b5c854689 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers.json.j2 @@ -1,3 +1,63 @@ +{# Default values which will be used if no actual configura available #} +{% set default_cable = '40m' %} + +{# Port configuration to cable length look-up table #} +{# Each record describes mapping of DUT (DUT port) role and neighbor role to cable length #} +{# Roles described in the minigraph #} +{% set ports2cable = { + 'torrouter_server' : '5m', + 'leafrouter_torrouter' : '40m', + 'spinerouter_leafrouter' : '300m' + } +%} + +{%- macro cable_length(port_name) %} + {%- set cable_len = [] %} + {%- for local_port in DEVICE_NEIGHBOR %} + {%- if local_port == port_name %} + {%- if DEVICE_NEIGHBOR_METADATA is defined and DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor = DEVICE_NEIGHBOR_METADATA[DEVICE_NEIGHBOR[local_port].name] %} + {%- set neighbor_role = neighbor.type %} + {%- set roles1 = switch_role + '_' + neighbor_role %} + {%- set roles2 = neighbor_role + '_' + switch_role %} + {%- set roles1 = roles1 | lower %} + {%- set roles2 = roles2 | lower %} + {%- if roles1 in ports2cable %} + {%- if cable_len.append(ports2cable[roles1]) %}{% endif %} + {%- elif roles2 in ports2cable %} + {%- if cable_len.append(ports2cable[roles2]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else %} + {%- if switch_role.lower() == 'torrouter' %} + {%- for local_port in VLAN_MEMBER %} + {%- if local_port[1] == port_name %} + {%- set roles3 = switch_role + '_' + 'server' %} + {%- set roles3 = roles3 | lower %} + {%- if roles3 in ports2cable %} + {%- if cable_len.append(ports2cable[roles3]) %}{% endif %} + {%- endif %} + {%- endif %} + {%- endfor %} + {%- if cable_len -%} + {{ cable_len.0 }} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- else -%} + {{ default_cable }} + {%- endif %} + {%- endif %} +{%- endmacro %} + +{%- if DEVICE_METADATA is defined %} +{%- set switch_role = DEVICE_METADATA['localhost']['type'] %} +{%- endif -%} + {% set port_names_list = [] %} {% for port in PORT %} {%- if port_names_list.append(port) %}{% endif %} @@ -5,34 +65,98 @@ {% set port_names = port_names_list | join(',') -%} { + "CABLE_LENGTH": { + "AZURE": { + {% for port in PORT %} + {% set cable = cable_length(port) -%} + "{{ port }}": "{{ cable }}"{%- if not loop.last -%},{% endif %} + + {% endfor %} + } + }, "BUFFER_POOL": { + "ingress_lossless_pool": { + "size": "47218432", + "type": "ingress", + "mode": "dynamic", + "xoff": "17708800" + }, "lossy_pool": { - "size": "56985600", + "size": "18874368", "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { + "ingress_lossless_profile": { + "pool":"ingress_lossless_pool", + "xoff":"38816", + "size":"1518", + "dynamic_th":"1", + "xon_offset":"9408" + }, + "egress_lossless_profile": { + "pool":"ingress_lossless_pool", + "size":"0", + "static_th":"9497600" + }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_def_lossy.j2 index 1a31812c26b1..abb756c7d4ef 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_def_lossy.j2 @@ -15,24 +15,28 @@ }, "BUFFER_PROFILE": { "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} }, "BUFFER_QUEUE": { - "{{ port_names }}|0-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|0-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_t1.j2 index 93dac6b1992a..17b85f08443a 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/buffers_defaults_t1.j2 @@ -86,52 +86,77 @@ "type": "egress", "mode": "dynamic", "xoff": "0" + }, + "egress_lossless_pool": { + "size": "66092800", + "mode": "static", + "type": "egress" } }, "BUFFER_PROFILE": { "ingress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "xoff":"38816", "size":"1518", "dynamic_th":"1", - "xon_offset":"13440" + "xon_offset":"9408" }, "egress_lossless_profile": { - "pool":"[BUFFER_POOL|ingress_lossless_pool]", + "pool":"ingress_lossless_pool", "size":"0", "static_th":"9497600" }, "ingress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"0", "static_th":"9497600" }, "egress_lossy_profile": { - "pool":"[BUFFER_POOL|lossy_pool]", + "pool":"lossy_pool", "size":"1518", "dynamic_th":"2" } }, "BUFFER_PG": { - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - }, - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|ingress_lossless_profile]" - }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|ingress_lossy_profile]" - } +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "ingress_lossless_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|1-2": { + "profile" : "ingress_lossy_profile" + }, +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "ingress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, + "BUFFER_QUEUE": { - "{{ port_names }}|3-4": { - "profile" : "[BUFFER_PROFILE|egress_lossless_profile]" +{% for port in port_names_list %} + "{{ port }}|3-4": { + "profile" : "egress_lossless_profile" }, - "{{ port_names }}|0-2": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|0-2": { + "profile" : "egress_lossy_profile" }, - "{{ port_names }}|5-7": { - "profile" : "[BUFFER_PROFILE|egress_lossy_profile]" - } +{% endfor %} +{% for port in port_names_list %} + "{{ port }}|5-7": { + "profile" : "egress_lossy_profile" + }{% if not loop.last %},{% endif %} + +{% endfor %} } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/hwsku.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/hwsku.json new file mode 100644 index 000000000000..6472483dc248 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/hwsku.json @@ -0,0 +1,132 @@ +{ + "interfaces": { + "Ethernet0": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet8": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet16": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet24": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet32": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet40": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet48": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet56": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet64": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet72": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet80": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet88": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet96": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet104": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet112": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet120": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet128": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet136": { + "default_brkout_mode": "4x25G[10G](4)", + "fec": "rs" + }, + "Ethernet144": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet152": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet160": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet168": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet176": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet184": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet192": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet200": { + "default_brkout_mode": "1x100G(4)", + "fec": "rs" + }, + "Ethernet208": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet216": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet224": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet232": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet240": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + }, + "Ethernet248": { + "default_brkout_mode": "1x400G[100G]", + "fec": "rs" + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_A b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_A index 84aa41983606..ec13307805e1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_A +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_A @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_B b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_B index 27297b313959..57ba52cbc3bc 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_B +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/innovium.77700_B @@ -5,6 +5,7 @@ device_id: 0x1b58 # Hardware constraint information hardware: num_ibs: 6 + ib_active: 0,1,2,3,4,5 ports_per_ib: 32, 32, 32, 32, 20, 20 recirc_port_num: 32, 32, 32, 32, 32, 32 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/ivm.sai.config.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/ivm.sai.config.yaml old mode 100644 new mode 100755 index 01fe64ec7bc9..36da27953d49 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/ivm.sai.config.yaml +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/ivm.sai.config.yaml @@ -3,7 +3,7 @@ IFCS_SKU_FILE : "/usr/share/sonic/hwsku/innovium.77700_A" IFCS_INNO_CLI_PORT : "9999" IFCS_TARGET : "device" INNOVIUM_DIR : "/innovium" -PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes" +PYTHONPATH : "$INNOVIUM_DIR:$INNOVIUM_DIR/cmds:$INNOVIUM_DIR/scripts:$INNOVIUM_DIR/test/:$INNOVIUM_DIR/test/utils:$INNOVIUM_DIR/utils:$INNOVIUM_DIR/pyctypes:$INNOVIUM_DIR/ifcs_cmds:$INNOVIUM_DIR/testutil" PLATFORM_LIBRARY: "/usr/share/sonic/platform/lib_ivm_serdes_pltfm.so" IVM_SAI_DATAPATH_CONFIG_FILE: "/usr/share/sonic/hwsku/ivm.sai.datapath.config.yaml" IVM_SAI_PARAM_A0008: "32" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/pg_profile_lookup.ini b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/pg_profile_lookup.ini index adcb52ab2a29..0d881737cfa1 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/pg_profile_lookup.ini +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/pg_profile_lookup.ini @@ -1,18 +1,22 @@ # PG lossless profiles. # speed cable size xon xoff threshold xon_offset - 25000 5m 1518 0 15680 1 13440 - 50000 5m 1518 0 21248 1 13440 - 100000 5m 1518 0 34624 1 13440 - 400000 5m 1518 0 117536 1 13440 - 25000 40m 1518 0 16928 1 13440 - 50000 40m 1518 0 23392 1 13440 - 100000 40m 1518 0 38816 1 13440 - 400000 40m 1518 0 135520 1 13440 - 25000 100m 1518 0 18848 1 13440 - 50000 100m 1518 0 27264 1 13440 - 100000 100m 1518 0 46496 1 13440 - 400000 100m 1518 0 166688 1 13440 - 25000 300m 1518 0 25184 1 13440 - 50000 300m 1518 0 40128 1 13440 - 100000 300m 1518 0 72384 1 13440 - 400000 300m 1518 0 268640 1 13440 + 25000 5m 1518 0 15680 1 9408 + 50000 5m 1518 0 21248 1 9408 + 100000 5m 1518 0 34624 1 9408 + 200000 5m 1518 0 62368 1 9408 + 400000 5m 1518 0 117536 1 9408 + 25000 40m 1518 0 16928 1 9408 + 50000 40m 1518 0 23392 1 9408 + 100000 40m 1518 0 38816 1 9408 + 200000 40m 1518 0 71904 1 9408 + 400000 40m 1518 0 135520 1 9408 + 25000 100m 1518 0 18848 1 9408 + 50000 100m 1518 0 27264 1 9408 + 100000 100m 1518 0 46496 1 9408 + 200000 100m 1518 0 87168 1 9408 + 400000 100m 1518 0 166688 1 9408 + 25000 300m 1518 0 25184 1 9408 + 50000 300m 1518 0 40128 1 9408 + 100000 300m 1518 0 72384 1 9408 + 200000 300m 1518 0 138112 1 9408 + 400000 300m 1518 0 268640 1 9408 diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos.json.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos.json.j2 old mode 100644 new mode 100755 index 104d2d78de87..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos.json.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos.json.j2 @@ -32,87 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"0", - "4":"0", - "5":"0", - "6":"0", - "7":"0", - "8":"0", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } - }, - "SCHEDULER": { - "scheduler.7": { - "type": "STRICT" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", + "pfc_enable": "3,4" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, - "QUEUE": { - "{{ port_names }}|7": { - "scheduler": "[SCHEDULER|scheduler.7]" + "WRED_PROFILE": { + "AZURE_LOSSLESS" : { + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_def_lossy.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_def_lossy.j2 old mode 100644 new mode 100755 index 104d2d78de87..c1170619bc6c --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_def_lossy.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_def_lossy.j2 @@ -23,8 +23,8 @@ "0": "0", "1": "0", "2": "0", - "3": "3", - "4": "4", + "3": "1", + "4": "2", "5": "0", "6": "0", "7": "0" @@ -99,11 +99,14 @@ } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]" - } +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE" + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "SCHEDULER": { "scheduler.7": { diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_t1.j2 b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_t1.j2 old mode 100644 new mode 100755 index 4b9748c7b594..b03078465730 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_t1.j2 +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/Wistron_sw_to3200k_72x25_6x400/qos_defaults_t1.j2 @@ -32,83 +32,98 @@ }, "DSCP_TO_TC_MAP": { "AZURE": { - "0":"0", - "1":"0", - "2":"0", - "3":"3", - "4":"4", - "5":"0", - "6":"0", - "7":"0", - "8":"1", - "9":"0", - "10":"0", - "11":"0", - "12":"0", - "13":"0", - "14":"0", - "15":"0", - "16":"0", - "17":"0", - "18":"0", - "19":"0", - "20":"0", - "21":"0", - "22":"0", - "23":"0", - "24":"0", - "25":"0", - "26":"0", - "27":"0", - "28":"0", - "29":"0", - "30":"0", - "31":"0", - "32":"0", - "33":"0", - "34":"0", - "35":"0", - "36":"0", - "37":"0", - "38":"0", - "39":"0", - "40":"0", - "41":"0", - "42":"0", - "43":"0", - "44":"0", - "45":"0", - "46":"0", - "47":"0", - "48":"0", - "49":"0", - "50":"0", - "51":"0", - "52":"0", - "53":"0", - "54":"0", - "55":"0", - "56":"0", - "57":"0", - "58":"0", - "59":"0", - "60":"0", - "61":"0", - "62":"0", - "63":"0" + "0" : "1", + "1" : "1", + "2" : "1", + "3" : "3", + "4" : "4", + "5" : "2", + "6" : "1", + "7" : "1", + "8" : "0", + "9" : "1", + "10": "1", + "11": "1", + "12": "1", + "13": "1", + "14": "1", + "15": "1", + "16": "1", + "17": "1", + "18": "1", + "19": "1", + "20": "1", + "21": "1", + "22": "1", + "23": "1", + "24": "1", + "25": "1", + "26": "1", + "27": "1", + "28": "1", + "29": "1", + "30": "1", + "31": "1", + "32": "1", + "33": "1", + "34": "1", + "35": "1", + "36": "1", + "37": "1", + "38": "1", + "39": "1", + "40": "1", + "41": "1", + "42": "1", + "43": "1", + "44": "1", + "45": "1", + "46": "5", + "47": "1", + "48": "6", + "49": "1", + "50": "1", + "51": "1", + "52": "1", + "53": "1", + "54": "1", + "55": "1", + "56": "1", + "57": "1", + "58": "1", + "59": "1", + "60": "1", + "61": "1", + "62": "1", + "63": "1" } }, "PORT_QOS_MAP": { - "{{ port_names }}": { - "tc_to_pg_map": "[TC_TO_PRIORITY_GROUP_MAP|AZURE]", - "tc_to_queue_map": "[TC_TO_QUEUE_MAP|AZURE]", - "dscp_to_tc_map": "[DSCP_TO_TC_MAP|AZURE]", +{% for port in port_names_list %} + "{{ port }}": { + "tc_to_pg_map": "AZURE", + "tc_to_queue_map": "AZURE", + "dscp_to_tc_map": "AZURE", "pfc_enable": "3,4" - } + }{% if not loop.last %},{% endif %} + +{% endfor %} }, "WRED_PROFILE": { "AZURE_LOSSLESS" : { - "red_min_threshold":"50000" + "wred_green_enable" : "true", + "wred_yellow_enable" : "true", + "wred_red_enable" : "true", + "ecn" : "ecn_all", + "green_max_threshold" : "2097152", + "green_min_threshold" : "1048576", + "yellow_max_threshold" : "2097152", + "yellow_min_threshold" : "1048576", + "red_max_threshold" : "2097152", + "red_min_threshold" : "1048576", + "green_drop_probability" : "5", + "yellow_drop_probability": "5", + "red_drop_probability" : "5" } } } diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/installer.conf b/device/wistron/x86_64-wistron_sw_to3200k-r0/installer.conf index 6af5fa8d979b..d7d410dae704 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/installer.conf +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/installer.conf @@ -1,4 +1,4 @@ CONSOLE_PORT=0x3f8 CONSOLE_DEV=4 CONSOLE_SPEED=115200 -ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="pcie_aspm=off" +ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="pcie_aspm=off intel_iommu=off" diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/libplatform.so b/device/wistron/x86_64-wistron_sw_to3200k-r0/libplatform.so new file mode 100644 index 000000000000..1ca41771ff2d Binary files /dev/null and b/device/wistron/x86_64-wistron_sw_to3200k-r0/libplatform.so differ diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/pcie.yaml b/device/wistron/x86_64-wistron_sw_to3200k-r0/pcie.yaml new file mode 100755 index 000000000000..ef4b521c66d3 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/pcie.yaml @@ -0,0 +1,375 @@ +- bus: '00' + dev: '00' + fn: '0' + id: 6f00 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2 (rev 03)' +- bus: '00' + dev: '01' + fn: '0' + id: 6f02 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 (rev 03)' +- bus: '00' + dev: '01' + fn: '1' + id: 6f03 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 1 (rev 03)' +- bus: '00' + dev: '02' + fn: '0' + id: 6f04 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 (rev 03)' +- bus: '00' + dev: '02' + fn: '2' + id: 6f06 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 2 (rev 03)' +- bus: '00' + dev: '03' + fn: '0' + id: 6f08 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 03)' +- bus: '00' + dev: '03' + fn: '1' + id: 6f09 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 03)' +- bus: '00' + dev: '03' + fn: '2' + id: 6f0a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 03)' +- bus: '00' + dev: '03' + fn: '3' + id: 6f0b + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D PCI Express Root Port 3 (rev 03)' +- bus: '00' + dev: '05' + fn: '0' + id: 6f28 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Map/VTd_Misc/System Management (rev 03)' +- bus: '00' + dev: '05' + fn: '1' + id: 6f29 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO Hot Plug (rev 03)' +- bus: '00' + dev: '05' + fn: '2' + id: 6f2a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D IIO RAS/Control Status/Global Errors (rev 03)' +- bus: '00' + dev: '05' + fn: '4' + id: 6f2c + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D I/O APIC (rev 03)' +- bus: '00' + dev: '14' + fn: '0' + id: 8c31 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)' +- bus: '00' + dev: '1c' + fn: '0' + id: 8c10 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)' +- bus: '00' + dev: '1c' + fn: '6' + id: 8c1c + name: 'Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #7 (rev d5)' +- bus: '00' + dev: '1c' + fn: '7' + id: 8c1e + name: 'Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #8 (rev d5)' +- bus: '00' + dev: '1f' + fn: '0' + id: 8c54 + name: 'Intel Corporation C224 Series Chipset Family Server Standard SKU LPC Controller (rev 05)' +- bus: '00' + dev: '1f' + fn: '3' + id: 8c22 + name: 'Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)' +- bus: '03' + dev: '00' + fn: '0' + id: 6f50 + name: 'Intel Corporation Xeon Processor D Family QuickData Technology Register DMA Channel 0' +- bus: '03' + dev: '00' + fn: '1' + id: 6f51 + name: 'Intel Corporation Xeon Processor D Family QuickData Technology Register DMA Channel 1' +- bus: '03' + dev: '00' + fn: '2' + id: 6f52 + name: 'Intel Corporation Xeon Processor D Family QuickData Technology Register DMA Channel 2' +- bus: '03' + dev: '00' + fn: '3' + id: 6f53 + name: 'Intel Corporation Xeon Processor D Family QuickData Technology Register DMA Channel 3' +- bus: '04' + dev: '00' + fn: '0' + id: 15ac + name: 'Intel Corporation Ethernet Connection X552 10 GbE SFP+' +- bus: '04' + dev: '00' + fn: '1' + id: 15ac + name: 'Intel Corporation Ethernet Connection X552 10 GbE SFP+' +- bus: '06' + dev: '00' + fn: '0' + id: 1b58 + name: 'Device 1d98:1b58 (rev 10)' +- bus: '07' + dev: '00' + fn: '0' + id: 9100 + name: 'Solid State Storage Technology Corporation Device 9100 (rev 03)' +- bus: '0b' + dev: '00' + fn: '0' + id: e001 + name: 'Altera Corporation Device e001 (rev 09)' +- bus: '0c' + dev: '00' + fn: '0' + id: 1533 + name: 'Intel Corporation I210 Gigabit Network Connection (rev 03)' +- bus: 'ff' + dev: '0b' + fn: '0' + id: 6f81 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 03)' +- bus: 'ff' + dev: '0b' + fn: '1' + id: 6f36 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 03)' +- bus: 'ff' + dev: '0b' + fn: '2' + id: 6f37 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link 0/1 (rev 03)' +- bus: 'ff' + dev: '0b' + fn: '3' + id: 6f76 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R3 QPI Link Debug (rev 03)' +- bus: 'ff' + dev: '0c' + fn: '0' + id: 6fe0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 03)' +- bus: 'ff' + dev: '0c' + fn: '1' + id: 6fe1 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 03)' +- bus: 'ff' + dev: '0c' + fn: '2' + id: 6fe2 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 03)' +- bus: 'ff' + dev: '0c' + fn: '3' + id: 6fe3 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 03)' +- bus: 'ff' + dev: '0f' + fn: '0' + id: 6ff8 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 03)' +- bus: 'ff' + dev: '0f' + fn: '4' + id: 6ffc + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 03)' +- bus: 'ff' + dev: '0f' + fn: '5' + id: 6ffd + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 03)' +- bus: 'ff' + dev: '0f' + fn: '6' + id: 6ffe + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Caching Agent (rev 03)' +- bus: 'ff' + dev: '10' + fn: '0' + id: 6f1d + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent (rev 03)' +- bus: 'ff' + dev: '10' + fn: '1' + id: 6f34 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D R2PCIe Agent (rev 03)' +- bus: 'ff' + dev: '10' + fn: '5' + id: 6f1e + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 03)' +- bus: 'ff' + dev: '10' + fn: '6' + id: 6f7d + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 03)' +- bus: 'ff' + dev: '10' + fn: '7' + id: 6f1f + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Ubox (rev 03)' +- bus: 'ff' + dev: '12' + fn: '0' + id: 6fa0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 (rev 03)' +- bus: 'ff' + dev: '12' + fn: '1' + id: 6f30 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Home Agent 0 (rev 03)' +- bus: 'ff' + dev: '13' + fn: '0' + id: 6fa8 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS (rev 03)' +- bus: 'ff' + dev: '13' + fn: '1' + id: 6f71 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Target Address/Thermal/RAS (rev 03)' +- bus: 'ff' + dev: '13' + fn: '2' + id: 6faa + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 03)' +- bus: 'ff' + dev: '13' + fn: '3' + id: 6fab + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 03)' +- bus: 'ff' + dev: '13' + fn: '4' + id: 6fac + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 03)' +- bus: 'ff' + dev: '13' + fn: '5' + id: 6fad + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel Target Address Decoder (rev 03)' +- bus: 'ff' + dev: '13' + fn: '6' + id: 6fae + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Broadcast (rev 03)' +- bus: 'ff' + dev: '13' + fn: '7' + id: 6faf + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Global Broadcast (rev 03)' +- bus: 'ff' + dev: '14' + fn: '0' + id: 6fb0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Thermal Control (rev 03)' +- bus: 'ff' + dev: '14' + fn: '1' + id: 6fb1 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Thermal Control (rev 03)' +- bus: 'ff' + dev: '14' + fn: '2' + id: 6fb2 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 0 Error (rev 03)' +- bus: 'ff' + dev: '14' + fn: '3' + id: 6fb3 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 1 Error (rev 03)' +- bus: 'ff' + dev: '14' + fn: '4' + id: 6fbc + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 03)' +- bus: 'ff' + dev: '14' + fn: '5' + id: 6fbd + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 03)' +- bus: 'ff' + dev: '14' + fn: '6' + id: 6fbe + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 03)' +- bus: 'ff' + dev: '14' + fn: '7' + id: 6fbf + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DDRIO Channel 0/1 Interface (rev 03)' +- bus: 'ff' + dev: '15' + fn: '0' + id: 6fb4 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Thermal Control (rev 03)' +- bus: 'ff' + dev: '15' + fn: '1' + id: 6fb5 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Thermal Control (rev 03)' +- bus: 'ff' + dev: '15' + fn: '2' + id: 6fb6 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 2 Error (rev 03)' +- bus: 'ff' + dev: '15' + fn: '3' + id: 6fb7 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Memory Controller 0 - Channel 3 Error (rev 03)' +- bus: 'ff' + dev: '1e' + fn: '0' + id: 6f98 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 03)' +- bus: 'ff' + dev: '1e' + fn: '1' + id: 6f99 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 03)' +- bus: 'ff' + dev: '1e' + fn: '2' + id: 6f9a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 03)' +- bus: 'ff' + dev: '1e' + fn: '3' + id: 6fc0 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 03)' +- bus: 'ff' + dev: '1e' + fn: '4' + id: 6f9c + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 03)' +- bus: 'ff' + dev: '1f' + fn: '0' + id: 6f88 + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 03)' +- bus: 'ff' + dev: '1f' + fn: '2' + id: 6f8a + name: 'Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D Power Control Unit (rev 03)' \ No newline at end of file diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/platform.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/platform.json new file mode 100644 index 000000000000..18dcca800329 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/platform.json @@ -0,0 +1,844 @@ +{ + "chassis": { + "name": "Wistron_sw_to3200k", + "components": [ + { + "name": "BIOS" + }, + { + "name": "CPLD1" + }, + { + "name": "CPLD2" + }, + { + "name": "MB_FPGA" + }, + { + "name": "FAN_CPLD" + }, + { + "name": "BMC" + } + ], + "fans": [ + { + "name": "FAN-1F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-1R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "fan_drawers": [ + { + "name": "FanTray1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-1F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-1R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray2", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-2F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-2R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray3", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-3F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-3R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray4", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-4F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-4R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray5", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-5F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-5R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray6", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-6F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-6R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + }, + { + "name": "FanTray7", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + }, + "fans": [ + { + "name": "FAN-7F", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + }, + { + "name": "FAN-7R", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ] + } + ], + "psus": [ + { + "name": "PSU-1", + "fans": [ + { + "name": "PSU-1 FAN-1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "status_led": { + "controllable": false + } + }, + { + "name": "PSU-2", + "fans": [ + { + "name": "PSU-2 FAN-1", + "speed": { + "controllable": false + }, + "status_led": { + "controllable": false + } + } + ], + "status_led": { + "controllable": false + } + } + ], + "thermals": [ + { + "name": "Bottom-Front", + "controllable": false + }, + { + "name": "Bottom-Rear", + "controllable": false + }, + { + "name": "Left-Front", + "controllable": false + }, + { + "name": "Right-Front", + "controllable": false + }, + { + "name": "Top-Center", + "controllable": false + }, + { + "name": "Top-Front", + "controllable": false + }, + { + "name": "Top-Rear", + "controllable": false + } + ], + "sfps": [ + { + "name": "port1" + }, + { + "name": "port2" + }, + { + "name": "port3" + }, + { + "name": "port4" + }, + { + "name": "port5" + }, + { + "name": "port6" + }, + { + "name": "port7" + }, + { + "name": "port8" + }, + { + "name": "port9" + }, + { + "name": "port10" + }, + { + "name": "port11" + }, + { + "name": "port12" + }, + { + "name": "port13" + }, + { + "name": "port14" + }, + { + "name": "port15" + }, + { + "name": "port16" + }, + { + "name": "port17" + }, + { + "name": "port18" + }, + { + "name": "port19" + }, + { + "name": "port20" + }, + { + "name": "port21" + }, + { + "name": "port22" + }, + { + "name": "port23" + }, + { + "name": "port24" + }, + { + "name": "port25" + }, + { + "name": "port26" + }, + { + "name": "port27" + }, + { + "name": "port28" + }, + { + "name": "port29" + }, + { + "name": "port30" + }, + { + "name": "port31" + }, + { + "name": "port32" + } + ] + }, + "interfaces": { + "Ethernet0": { + "index": "0,0,0,0,0,0,0,0", + "lanes": "89,90,91,92,93,94,95,96", + "breakout_modes": { + "1x400G[100G]": ["Eth1"], + "1x100G(4)": ["Eth1"], + "4x25G[10G](4)": ["Eth1-1", "Eth1-2", "Eth1-3", "Eth1-4"], + "4x10G[25G](4)": ["Eth1-1", "Eth1-2", "Eth1-3", "Eth1-4"] + } + }, + "Ethernet8": { + "index": "1,1,1,1,1,1,1,1", + "lanes": "81,82,83,84,85,86,87,88", + "breakout_modes": { + "1x400G[100G]": ["Eth2"], + "1x100G(4)": ["Eth2"], + "4x25G[10G](4)": ["Eth2-1", "Eth2-2", "Eth2-3", "Eth2-4"], + "4x10G[25G](4)": ["Eth2-1", "Eth2-2", "Eth2-3", "Eth2-4"] + } + }, + "Ethernet16": { + "index": "2,2,2,2,2,2,2,2", + "lanes": "73,74,75,76,77,78,79,80", + "breakout_modes": { + "1x400G[100G]": ["Eth3"], + "1x100G(4)": ["Eth3"], + "4x25G[10G](4)": ["Eth3-1", "Eth3-2", "Eth3-3", "Eth3-4"], + "4x10G[25G](4)": ["Eth3-1", "Eth3-2", "Eth3-3", "Eth3-4"] + } + }, + "Ethernet24": { + "index": "3,3,3,3,3,3,3,3", + "lanes": "65,66,67,68,69,70,71,72", + "breakout_modes": { + "1x400G[100G]": ["Eth4"], + "1x100G(4)": ["Eth4"], + "4x25G[10G](4)": ["Eth4-1", "Eth4-2", "Eth4-3", "Eth4-4"], + "4x10G[25G](4)": ["Eth4-1", "Eth4-2", "Eth4-3", "Eth4-4"] + } + }, + "Ethernet32": { + "index": "4,4,4,4,4,4,4,4", + "lanes": "57,58,59,60,61,62,63,64", + "breakout_modes": { + "1x400G[100G]": ["Eth5"], + "1x100G(4)": ["Eth5"], + "4x25G[10G](4)": ["Eth5-1", "Eth5-2", "Eth5-3", "Eth5-4"], + "4x10G[25G](4)": ["Eth5-1", "Eth5-2", "Eth5-3", "Eth5-4"] + } + }, + "Ethernet40": { + "index": "5,5,5,5,5,5,5,5", + "lanes": "49,50,51,52,53,54,55,56", + "breakout_modes": { + "1x400G[100G]": ["Eth6"], + "1x100G(4)": ["Eth6"], + "4x25G[10G](4)": ["Eth6-1", "Eth6-2", "Eth6-3", "Eth6-4"], + "4x10G[25G](4)": ["Eth6-1", "Eth6-2", "Eth6-3", "Eth6-4"] + } + }, + "Ethernet48": { + "index": "6,6,6,6,6,6,6,6", + "lanes": "41,42,43,44,45,46,47,48", + "breakout_modes": { + "1x400G[100G]": ["Eth7"], + "1x100G(4)": ["Eth7"], + "4x25G[10G](4)": ["Eth7-1", "Eth7-2", "Eth7-3", "Eth7-4"], + "4x10G[25G](4)": ["Eth7-1", "Eth7-2", "Eth7-3", "Eth7-4"] + } + }, + "Ethernet56": { + "index": "7,7,7,7,7,7,7,7", + "lanes": "33,34,35,36,37,38,39,40", + "breakout_modes": { + "1x400G[100G]": ["Eth8"], + "1x100G(4)": ["Eth8"], + "4x25G[10G](4)": ["Eth8-1", "Eth8-2", "Eth8-3", "Eth8-4"], + "4x10G[25G](4)": ["Eth8-1", "Eth8-2", "Eth8-3", "Eth8-4"] + } + }, + "Ethernet64": { + "index": "8,8,8,8,8,8,8,8", + "lanes": "153,154,155,156,157,158,159,160", + "breakout_modes": { + "1x400G[100G]": ["Eth9"], + "1x100G(4)": ["Eth9"], + "4x25G[10G](4)": ["Eth9-1", "Eth9-2", "Eth9-3", "Eth9-4"], + "4x10G[25G](4)": ["Eth9-1", "Eth9-2", "Eth9-3", "Eth9-4"] + } + }, + "Ethernet72": { + "index": "9,9,9,9,9,9,9,9", + "lanes": "145,146,147,148,149,150,151,152", + "breakout_modes": { + "1x400G[100G]": ["Eth10"], + "1x100G(4)": ["Eth10"], + "4x25G[10G](4)": ["Eth10-1", "Eth10-2", "Eth10-3", "Eth10-4"], + "4x10G[25G](4)": ["Eth10-1", "Eth10-2", "Eth10-3", "Eth10-4"] + } + }, + "Ethernet80": { + "index": "10,10,10,10,10,10,10,10", + "lanes": "137,138,139,140,141,142,143,144", + "breakout_modes": { + "1x400G[100G]": ["Eth11"], + "1x100G(4)": ["Eth11"], + "4x25G[10G](4)": ["Eth11-1", "Eth11-2", "Eth11-3", "Eth11-4"], + "4x10G[25G](4)": ["Eth11-1", "Eth11-2", "Eth11-3", "Eth11-4"] + } + }, + "Ethernet88": { + "index": "11,11,11,11,11,11,11,11", + "lanes": "129,130,131,132,133,134,135,136", + "breakout_modes": { + "1x400G[100G]": ["Eth12"], + "1x100G(4)": ["Eth12"], + "4x25G[10G](4)": ["Eth12-1", "Eth12-2", "Eth12-3", "Eth12-4"], + "4x10G[25G](4)": ["Eth12-1", "Eth12-2", "Eth12-3", "Eth12-4"] + } + }, + "Ethernet96": { + "index": "12,12,12,12,12,12,12,12", + "lanes": "121,122,123,124,125,126,127,128", + "breakout_modes": { + "1x400G[100G]": ["Eth13"], + "1x100G(4)": ["Eth13"], + "4x25G[10G](4)": ["Eth13-1", "Eth13-2", "Eth13-3", "Eth13-4"], + "4x10G[25G](4)": ["Eth13-1", "Eth13-2", "Eth13-3", "Eth13-4"] + } + }, + "Ethernet104": { + "index": "13,13,13,13,13,13,13,13", + "lanes": "113,114,115,116,117,118,119,120", + "breakout_modes": { + "1x400G[100G]": ["Eth14"], + "1x100G(4)": ["Eth14"], + "4x25G[10G](4)": ["Eth14-1", "Eth14-2", "Eth14-3", "Eth14-4"], + "4x10G[25G](4)": ["Eth14-1", "Eth14-2", "Eth14-3", "Eth14-4"] + } + }, + "Ethernet112": { + "index": "14,14,14,14,14,14,14,14", + "lanes": "105,106,107,108,109,110,111,112", + "breakout_modes": { + "1x400G[100G]": ["Eth15"], + "1x100G(4)": ["Eth15"], + "4x25G[10G](4)": ["Eth15-1", "Eth15-2", "Eth15-3", "Eth15-4"], + "4x10G[25G](4)": ["Eth15-1", "Eth15-2", "Eth15-3", "Eth15-4"] + } + }, + "Ethernet120": { + "index": "15,15,15,15,15,15,15,15", + "lanes": "97,98,99,100,101,102,103,104", + "breakout_modes": { + "1x400G[100G]": ["Eth16"], + "1x100G(4)": ["Eth16"], + "4x25G[10G](4)": ["Eth16-1", "Eth16-2", "Eth16-3", "Eth16-4"], + "4x10G[25G](4)": ["Eth16-1", "Eth16-2", "Eth16-3", "Eth16-4"] + } + }, + "Ethernet128": { + "index": "16,16,16,16,16,16,16,16", + "lanes": "209,210,211,212,213,214,215,216", + "breakout_modes": { + "1x400G[100G]": ["Eth17"], + "1x100G(4)": ["Eth17"], + "4x25G[10G](4)": ["Eth17-1", "Eth17-2", "Eth17-3", "Eth17-4"], + "4x10G[25G](4)": ["Eth17-1", "Eth17-2", "Eth17-3", "Eth17-4"] + } + }, + "Ethernet136": { + "index": "17,17,17,17,17,17,17,17", + "lanes": "217,218,219,220,221,222,223,224", + "breakout_modes": { + "1x400G[100G]": ["Eth18"], + "1x100G(4)": ["Eth18"], + "4x25G[10G](4)": ["Eth18-1", "Eth18-2", "Eth18-3", "Eth18-4"], + "4x10G[25G](4)": ["Eth18-1", "Eth18-2", "Eth18-3", "Eth18-4"] + } + }, + "Ethernet144": { + "index": "18,18,18,18,18,18,18,18", + "lanes": "193,194,195,196,197,198,199,200", + "breakout_modes": { + "1x400G[100G]": ["Eth19"], + "1x100G(4)": ["Eth19"], + "4x25G[10G](4)": ["Eth19-1", "Eth19-2", "Eth19-3", "Eth19-4"], + "4x10G[25G](4)": ["Eth19-1", "Eth19-2", "Eth19-3", "Eth19-4"] + } + }, + "Ethernet152": { + "index": "19,19,19,19,19,19,19,19", + "lanes": "201,202,203,204,205,206,207,208", + "breakout_modes": { + "1x400G[100G]": ["Eth20"], + "1x100G(4)": ["Eth20"], + "4x25G[10G](4)": ["Eth20-1", "Eth20-2", "Eth20-3", "Eth20-4"], + "4x10G[25G](4)": ["Eth20-1", "Eth20-2", "Eth20-3", "Eth20-4"] + } + }, + "Ethernet160": { + "index": "20,20,20,20,20,20,20,20", + "lanes": "177,178,179,180,181,182,183,184", + "breakout_modes": { + "1x400G[100G]": ["Eth21"], + "1x100G(4)": ["Eth21"], + "4x25G[10G](4)": ["Eth21-1", "Eth21-2", "Eth21-3", "Eth21-4"], + "4x10G[25G](4)": ["Eth21-1", "Eth21-2", "Eth21-3", "Eth21-4"] + } + }, + "Ethernet168": { + "index": "21,21,21,21,21,21,21,21", + "lanes": "185,186,187,188,189,190,191,192", + "breakout_modes": { + "1x400G[100G]": ["Eth22"], + "1x100G(4)": ["Eth22"], + "4x25G[10G](4)": ["Eth22-1", "Eth22-2", "Eth22-3", "Eth22-4"], + "4x10G[25G](4)": ["Eth22-1", "Eth22-2", "Eth22-3", "Eth22-4"] + } + }, + "Ethernet176": { + "index": "22,22,22,22,22,22,22,22", + "lanes": "161,162,163,164,165,166,167,168", + "breakout_modes": { + "1x400G[100G]": ["Eth23"], + "1x100G(4)": ["Eth23"], + "4x25G[10G](4)": ["Eth23-1", "Eth23-2", "Eth23-3", "Eth23-4"], + "4x10G[25G](4)": ["Eth23-1", "Eth23-2", "Eth23-3", "Eth23-4"] + } + }, + "Ethernet184": { + "index": "23,23,23,23,23,23,23,23", + "lanes": "169,170,171,172,173,174,175,176", + "breakout_modes": { + "1x400G[100G]": ["Eth24"], + "1x100G(4)": ["Eth24"], + "4x25G[10G](4)": ["Eth24-1", "Eth24-2", "Eth24-3", "Eth24-4"], + "4x10G[25G](4)": ["Eth24-1", "Eth24-2", "Eth24-3", "Eth24-4"] + } + }, + "Ethernet192": { + "index": "24,24,24,24,24,24,24,24", + "lanes": "17,18,19,20,21,22,23,24", + "breakout_modes": { + "1x400G[100G]": ["Eth25"], + "1x100G(4)": ["Eth25"], + "4x25G[10G](4)": ["Eth25-1", "Eth25-2", "Eth25-3", "Eth25-4"], + "4x10G[25G](4)": ["Eth25-1", "Eth25-2", "Eth25-3", "Eth25-4"] + } + }, + "Ethernet200": { + "index": "25,25,25,25,25,25,25,25", + "lanes": "25,26,27,28,29,30,31,32", + "breakout_modes": { + "1x400G[100G]": ["Eth26"], + "1x100G(4)": ["Eth26"], + "4x25G[10G](4)": ["Eth26-1", "Eth26-2", "Eth26-3", "Eth26-4"], + "4x10G[25G](4)": ["Eth26-1", "Eth26-2", "Eth26-3", "Eth26-4"] + } + }, + "Ethernet208": { + "index": "26,26,26,26,26,26,26,26", + "lanes": "1,2,3,4,5,6,7,8", + "breakout_modes": { + "1x400G[100G]": ["Eth27"], + "1x100G(4)": ["Eth27"], + "4x25G[10G](4)": ["Eth27-1", "Eth27-2", "Eth27-3", "Eth27-4"], + "4x10G[25G](4)": ["Eth27-1", "Eth27-2", "Eth27-3", "Eth27-4"] + } + }, + "Ethernet216": { + "index": "27,27,27,27,27,27,27,27", + "lanes": "9,10,11,12,13,14,15,16", + "breakout_modes": { + "1x400G[100G]": ["Eth28"], + "1x100G(4)": ["Eth28"], + "4x25G[10G](4)": ["Eth28-1", "Eth28-2", "Eth28-3", "Eth28-4"], + "4x10G[25G](4)": ["Eth28-1", "Eth28-2", "Eth28-3", "Eth28-4"] + } + }, + "Ethernet224": { + "index": "28,28,28,28,28,28,28,28", + "lanes": "241,242,243,244,245,246,247,248", + "breakout_modes": { + "1x400G[100G]": ["Eth29"], + "1x100G(4)": ["Eth29"], + "4x25G[10G](4)": ["Eth29-1", "Eth29-2", "Eth29-3", "Eth29-4"], + "4x10G[25G](4)": ["Eth29-1", "Eth29-2", "Eth29-3", "Eth29-4"] + } + }, + "Ethernet232": { + "index": "29,29,29,29,29,29,29,29", + "lanes": "249,250,251,252,253,254,255,256", + "breakout_modes": { + "1x400G[100G]": ["Eth30"], + "1x100G(4)": ["Eth30"], + "4x25G[10G](4)": ["Eth30-1", "Eth30-2", "Eth30-3", "Eth30-4"], + "4x10G[25G](4)": ["Eth30-1", "Eth30-2", "Eth30-3", "Eth30-4"] + } + }, + "Ethernet240": { + "index": "30,30,30,30,30,30,30,30", + "lanes": "225,226,227,228,229,230,231,232", + "breakout_modes": { + "1x400G[100G]": ["Eth31"], + "1x100G(4)": ["Eth31"], + "4x25G[10G](4)": ["Eth31-1", "Eth31-2", "Eth31-3", "Eth31-4"], + "4x10G[25G](4)": ["Eth31-1", "Eth31-2", "Eth31-3", "Eth31-4"] + } + }, + "Ethernet248": { + "index": "31,31,31,31,31,31,31,31", + "lanes": "233,234,235,236,237,238,239,240", + "breakout_modes": { + "1x400G[100G]": ["Eth32"], + "1x100G(4)": ["Eth32"], + "4x25G[10G](4)": ["Eth32-1", "Eth32-2", "Eth32-3", "Eth32-4"], + "4x10G[25G](4)": ["Eth32-1", "Eth32-2", "Eth32-3", "Eth32-4"] + } + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/platform_components.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/platform_components.json new file mode 100644 index 000000000000..304fbcb52557 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/platform_components.json @@ -0,0 +1,14 @@ +{ + "chassis": { + "Wistron_sw_to3200k": { + "component": { + "BIOS": { }, + "CPLD1": { }, + "CPLD2": { }, + "MB_FPGA": { }, + "FAN_CPLD": { }, + "BMC": { } + } + } + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/eeprom.py b/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/eeprom.py index 9f59510eac28..b7724886eea4 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/eeprom.py +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/eeprom.py @@ -3,16 +3,16 @@ try: import os from sonic_eeprom import eeprom_tlvinfo -except ImportError, e: +except ImportError as e: raise ImportError (str(e) + "- required module not found") def eeprom_check(): - filepath="/sys/bus/i2c/devices/0-0056/eeprom" + filepath="/sys/bus/i2c/devices/0-0056/eeprom" if os.path.isfile(filepath): return 1 #now board, 0x56 else: return 0 #now board, 0x57 - + class board(eeprom_tlvinfo.TlvInfoDecoder): _TLV_INFO_MAX_LEN = 256 def __init__(self, name, path, cpld_root, ro): diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/sfputil.py b/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/sfputil.py index fe59dc7d8ce5..8983579016b4 100644 --- a/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/sfputil.py +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/plugins/sfputil.py @@ -111,7 +111,7 @@ def get_presence(self, port_num): content = val_file.readline().rstrip() val_file.close() except IOError as e: - print "Error: unable to access file: %s" % str(e) + print("Error: unable to access file: %s" % str(e)) return False if content == "1": @@ -145,13 +145,13 @@ def get_transceiver_change_event(self, timeout=0): elif timeout > 0: timeout = timeout / float(1000) # Convert to secs else: - print "get_transceiver_change_event:Invalid timeout value", timeout + print("get_transceiver_change_event:Invalid timeout value", timeout) return False, {} end_time = start_time + timeout if start_time > end_time: - print 'get_transceiver_change_event:' \ - 'time wrap / invalid timeout value', timeout + print('get_transceiver_change_event:' \ + 'time wrap / invalid timeout value', timeout) return False, {} # Time wrap or possibly incorrect timeout @@ -182,5 +182,5 @@ def get_transceiver_change_event(self, timeout=0): if timeout > 0: time.sleep(timeout) return True, {} - print "get_evt_change_event: Should not reach here." + print("get_evt_change_event: Should not reach here.") return False, {} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/smartd.conf b/device/wistron/x86_64-wistron_sw_to3200k-r0/smartd.conf new file mode 100644 index 000000000000..c3877d93ee28 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/smartd.conf @@ -0,0 +1,150 @@ +# Sample configuration file for smartd. See man smartd.conf. + +# Home page is: http://www.smartmontools.org + +# smartd will re-read the configuration file if it receives a HUP +# signal + +# The file gives a list of devices to monitor using smartd, with one +# device per line. Text after a hash (#) is ignored, and you may use +# spaces and tabs for white space. You may use '\' to continue lines. + +# You can usually identify which hard disks are on your system by +# looking in /proc/ide and in /proc/scsi. + +# The word DEVICESCAN will cause any remaining lines in this +# configuration file to be ignored: it tells smartd to scan for all +# ATA and SCSI devices. DEVICESCAN may be followed by any of the +# Directives listed below, which will be applied to all devices that +# are found. Most users should comment out DEVICESCAN and explicitly +# list the devices that they wish to monitor. +#DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner + +# Alternative setting to ignore temperature and power-on hours reports +# in syslog. +#DEVICESCAN -I 194 -I 231 -I 9 + +# Alternative setting to report more useful raw temperature in syslog. +#DEVICESCAN -R 194 -R 231 -I 9 + +# Alternative setting to report raw temperature changes >= 5 Celsius +# and min/max temperatures. +#DEVICESCAN -I 194 -I 231 -I 9 -W 5 + +# First ATA/SATA or SCSI/SAS disk. Monitor all attributes, enable +# automatic online data collection, automatic Attribute autosave, and +# start a short self-test every day between 2-3am, and a long self test +# Saturdays between 3-4am. +#/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) + +# Monitor SMART status, ATA Error Log, Self-test log, and track +# changes in all attributes except for attribute 194 +#/dev/sdb -H -l error -l selftest -t -I 194 + +# Monitor all attributes except normalized Temperature (usually 194), +# but track Temperature changes >= 4 Celsius, report Temperatures +# >= 45 Celsius and changes in Raw value of Reallocated_Sector_Ct (5). +# Send mail on SMART failures or when Temperature is >= 55 Celsius. +#/dev/sdc -a -I 194 -W 4,45,55 -R 5 -m admin@example.com + +# An ATA disk may appear as a SCSI device to the OS. If a SCSI to +# ATA Translation (SAT) layer is between the OS and the device then +# this can be flagged with the '-d sat' option. This situation may +# become common with SATA disks in SAS and FC environments. +# /dev/sda -a -d sat + +# A very silent check. Only report SMART health status if it fails +# But send an email in this case +#/dev/sdc -H -C 0 -U 0 -m admin@example.com + +# First two SCSI disks. This will monitor everything that smartd can +# monitor. Start extended self-tests Wednesdays between 6-7pm and +# Sundays between 1-2 am +#/dev/sda -d scsi -s L/../../3/18 +#/dev/sdb -d scsi -s L/../../7/01 + +# Monitor 4 ATA disks connected to a 3ware 6/7/8000 controller which uses +# the 3w-xxxx driver. Start long self-tests Sundays between 1-2, 2-3, 3-4, +# and 4-5 am. +# NOTE: starting with the Linux 2.6 kernel series, the /dev/sdX interface +# is DEPRECATED. Use the /dev/tweN character device interface instead. +# For example /dev/twe0, /dev/twe1, and so on. +#/dev/sdc -d 3ware,0 -a -s L/../../7/01 +#/dev/sdc -d 3ware,1 -a -s L/../../7/02 +#/dev/sdc -d 3ware,2 -a -s L/../../7/03 +#/dev/sdc -d 3ware,3 -a -s L/../../7/04 + +# Monitor 2 ATA disks connected to a 3ware 9000 controller which +# uses the 3w-9xxx driver (Linux, FreeBSD). Start long self-tests Tuesdays +# between 1-2 and 3-4 am. +#/dev/twa0 -d 3ware,0 -a -s L/../../2/01 +#/dev/twa0 -d 3ware,1 -a -s L/../../2/03 + +# Monitor 2 SATA (not SAS) disks connected to a 3ware 9000 controller which +# uses the 3w-sas driver (Linux). Start long self-tests Tuesdays +# between 1-2 and 3-4 am. +# On FreeBSD /dev/tws0 should be used instead +#/dev/twl0 -d 3ware,0 -a -s L/../../2/01 +#/dev/twl0 -d 3ware,1 -a -s L/../../2/03 + +# Same as above for Windows. Option '-d 3ware,N' is not necessary, +# disk (port) number is specified in device name. +# NOTE: On Windows, DEVICESCAN works also for 3ware controllers. +#/dev/hdc,0 -a -s L/../../2/01 +#/dev/hdc,1 -a -s L/../../2/03 +# +# Monitor 2 disks connected to the first HP SmartArray controller which +# uses the cciss driver. Start long tests on Sunday nights and short +# self-tests every night and send errors to root +#/dev/cciss/c0d0 -d cciss,0 -a -s (L/../../7/02|S/../.././02) -m root +#/dev/cciss/c0d0 -d cciss,1 -a -s (L/../../7/03|S/../.././03) -m root + +# Monitor 3 ATA disks directly connected to a HighPoint RocketRAID. Start long +# self-tests Sundays between 1-2, 2-3, and 3-4 am. +#/dev/sdd -d hpt,1/1 -a -s L/../../7/01 +#/dev/sdd -d hpt,1/2 -a -s L/../../7/02 +#/dev/sdd -d hpt,1/3 -a -s L/../../7/03 + +# Monitor 2 ATA disks connected to the same PMPort which connected to the +# HighPoint RocketRAID. Start long self-tests Tuesdays between 1-2 and 3-4 am +#/dev/sdd -d hpt,1/4/1 -a -s L/../../2/01 +#/dev/sdd -d hpt,1/4/2 -a -s L/../../2/03 + +# HERE IS A LIST OF DIRECTIVES FOR THIS CONFIGURATION FILE. +# PLEASE SEE THE smartd.conf MAN PAGE FOR DETAILS +# +# -d TYPE Set the device type: ata, scsi, marvell, removable, 3ware,N, hpt,L/M/N +# -T TYPE set the tolerance to one of: normal, permissive +# -o VAL Enable/disable automatic offline tests (on/off) +# -S VAL Enable/disable attribute autosave (on/off) +# -n MODE No check. MODE is one of: never, sleep, standby, idle +# -H Monitor SMART Health Status, report if failed +# -l TYPE Monitor SMART log. Type is one of: error, selftest +# -f Monitor for failure of any 'Usage' Attributes +# -m ADD Send warning email to ADD for -H, -l error, -l selftest, and -f +# -M TYPE Modify email warning behavior (see man page) +# -s REGE Start self-test when type/date matches regular expression (see man page) +# -p Report changes in 'Prefailure' Normalized Attributes +# -u Report changes in 'Usage' Normalized Attributes +# -t Equivalent to -p and -u Directives +# -r ID Also report Raw values of Attribute ID with -p, -u or -t +# -R ID Track changes in Attribute ID Raw value with -p, -u or -t +# -i ID Ignore Attribute ID for -f Directive +# -I ID Ignore Attribute ID for -p, -u or -t Directive +# -C ID Report if Current Pending Sector count non-zero +# -U ID Report if Offline Uncorrectable count non-zero +# -W D,I,C Monitor Temperature D)ifference, I)nformal limit, C)ritical limit +# -v N,ST Modifies labeling of Attribute N (see man page) +# -a Default: equivalent to -H -f -t -l error -l selftest -C 197 -U 198 +# -F TYPE Use firmware bug workaround. Type is one of: none, samsung +# -P TYPE Drive-specific presets: use, ignore, show, showall +# # Comment: text after a hash sign is ignored +# \ Line continuation character +# Attribute ID is a decimal integer 1 <= ID <= 255 +# except for -C and -U, where ID = 0 turns them off. +# All but -d, -m and -M Directives are only implemented for ATA devices +# +# If the test string DEVICESCAN is the first uncommented text +# then smartd will scan for devices. +# DEVICESCAN may be followed by any desired Directives. +/dev/nvme0n1 -a diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/system_health_monitoring_config.json b/device/wistron/x86_64-wistron_sw_to3200k-r0/system_health_monitoring_config.json new file mode 100644 index 000000000000..0e0eec971cac --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/system_health_monitoring_config.json @@ -0,0 +1,11 @@ +{ + "services_to_ignore": [], + "devices_to_ignore": ["asic"], + "user_defined_checkers": [], + "polling_interval": 60, + "led_color": { + "fault": "red", + "normal": "green", + "booting": "green_blinking" + } +} diff --git a/device/wistron/x86_64-wistron_sw_to3200k-r0/watchdog-control.service b/device/wistron/x86_64-wistron_sw_to3200k-r0/watchdog-control.service new file mode 100644 index 000000000000..02ffe8ce9189 --- /dev/null +++ b/device/wistron/x86_64-wistron_sw_to3200k-r0/watchdog-control.service @@ -0,0 +1,10 @@ +[Unit] +Description=watchdog control service +After=swss.service + +[Service] +Type=simple +ExecStart=/usr/local/bin/sw_to3200k_watchdog.sh + +[Install] +WantedBy=multi-user.target diff --git a/dockers/docker-dhcp-relay/cli-plugin-tests/mock_config.py b/dockers/docker-dhcp-relay/cli-plugin-tests/mock_config.py index ed04367fbba7..1549e1937e09 100644 --- a/dockers/docker-dhcp-relay/cli-plugin-tests/mock_config.py +++ b/dockers/docker-dhcp-relay/cli-plugin-tests/mock_config.py @@ -1,6 +1,6 @@ -TEST_DATA = [ +COMMON_TEST_DATA = [ [ - "DHCPv6_Helpers", + "ipv6_with_header", { "config_db": { "DHCP_RELAY": { @@ -12,7 +12,123 @@ "dhcpv6_option|rfc6939_support": "true" } } - }, + } }, ], + [ + "ipv6_without_header", + { + "config_db": { + "DHCP_RELAY": { + "Vlan1000": { + "dhcpv6_servers": [ + "fc02:2000::1", + "fc02:2000::2" + ], + "dhcpv6_option|rfc6939_support": "true" + } + } + } + }, + ], + [ + "ipv4_with_header", + { + "config_db": { + "VLAN": { + "Vlan1000": { + "dhcp_servers": [ + "192.0.0.1", + "192.0.0.2" + ] + } + } + } + } + ] +] + +NEW_ADDED_TEST_DATA = [ + [ + "ipv6", + { + "config_db": { + "DHCP_RELAY": { + "Vlan1000": { + "dhcpv6_servers": [ + "fc02:2000::1", + "fc02:2000::2" + ], + "dhcpv6_option|rfc6939_support": "true" + } + } + } + }, + ], + [ + "ipv4", + { + "config_db": { + "VLAN": { + "Vlan1000": { + "dhcp_servers": [ + "192.0.0.1", + "192.0.0.2" + ] + }, + "Vlan1001": { + "vlanid": "1001" + } + } + } + } + ] +] + +MULTI_TEST_DATA = [ + [ + "ipv6", + { + "config_db": { + "DHCP_RELAY": { + "Vlan1000": { + "dhcpv6_servers": [ + "fc02:2000::1", + "fc02:2000::2" + ], + "dhcpv6_option|rfc6939_support": "true" + }, + "Vlan1001": { + "dhcpv6_servers": [ + "fc02:2000::3", + "fc02:2000::4" + ], + "dhcpv6_option|rfc6939_support": "true" + } + } + } + }, + ], + [ + "ipv4", + { + "config_db": { + "VLAN": { + "Vlan1000": { + "dhcp_servers": [ + "192.0.0.1", + "192.0.0.2" + ] + }, + "Vlan1001": { + "vlanid": "1001", + "dhcp_servers": [ + "192.0.0.3", + "192.0.0.4" + ] + } + } + } + } + ] ] diff --git a/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py b/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py index b8219fcc6ad3..de679972665f 100644 --- a/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py +++ b/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcp_relay.py @@ -1,28 +1,155 @@ -import os +import pytest import sys -import traceback +import os +sys.path.append('../cli/show/plugins/') +import show_dhcp_relay as show +import show.vlan as vlan +from swsscommon import swsscommon +from mock_config import COMMON_TEST_DATA, NEW_ADDED_TEST_DATA, MULTI_TEST_DATA +from parameterized import parameterized +from pyfakefs.fake_filesystem_unittest import patchfs from unittest import mock -from click.testing import CliRunner +try: + sys.path.insert(0, '../../../src/sonic-host-services/tests/common') + from mock_configdb import MockConfigDb + swsscommon.ConfigDBConnector = MockConfigDb +except KeyError: + pass + +expected_ipv6_table_with_header = """\ ++-------------+----------------------+ +| Interface | DHCP Relay Address | ++=============+======================+ +| Vlan1000 | fc02:2000::1 | +| | fc02:2000::2 | ++-------------+----------------------+ +""" + +expected_ipv4_table_with_header = """\ ++-------------+----------------------+ +| Interface | DHCP Relay Address | ++=============+======================+ +| Vlan1000 | 192.0.0.1 | +| | 192.0.0.2 | ++-------------+----------------------+ +""" + +expected_ipv6_table_without_header = """\ +-------- ------------ +Vlan1000 fc02:2000::1 + fc02:2000::2 +-------- ------------ +""" + +expected_ipv6_table_multi_with_header = """\ ++-------------+----------------------+ +| Interface | DHCP Relay Address | ++=============+======================+ +| Vlan1000 | fc02:2000::1 | +| | fc02:2000::2 | ++-------------+----------------------+ +| Vlan1001 | fc02:2000::3 | +| | fc02:2000::4 | ++-------------+----------------------+ +""" + +expected_ipv4_table_multi_with_header = """\ ++-------------+----------------------+ +| Interface | DHCP Relay Address | ++=============+======================+ +| Vlan1000 | 192.0.0.1 | +| | 192.0.0.2 | ++-------------+----------------------+ +| Vlan1001 | 192.0.0.3 | +| | 192.0.0.4 | ++-------------+----------------------+ +""" + +DBCONFIG_PATH = '/var/run/redis/sonic-db/database_config.json' + +IP_VER_TEST_PARAM_MAP = { + "ipv4": { + "entry": "dhcp_servers", + "table": "VLAN" + }, + "ipv6": { + "entry": "dhcpv6_servers", + "table": "DHCP_RELAY" + } +} + + +def test_plugin_registration(): + cli = mock.MagicMock() + show.register(cli) + assert 'DHCP Helper Address' in dict(vlan.VlanBrief.COLUMNS) + + +def test_dhcp_relay_column_output(): + ctx = ( + ({'Vlan1001': {'dhcp_servers': ['192.0.0.1', '192.168.0.2']}}, {}, {}), + (), + ) + assert show.get_dhcp_helper_address(ctx, 'Vlan1001') == '192.0.0.1\n192.168.0.2' -import show.vlan as vlan -from utilities_common.db import Db -sys.path.insert(0, '../cli/show/plugins/') -import show_dhcp_relay +@parameterized.expand(COMMON_TEST_DATA) +@patchfs +def test_show_dhcp_relay(test_name, test_data, fs): + if not os.path.exists(DBCONFIG_PATH): + fs.create_file(DBCONFIG_PATH) + MockConfigDb.set_config_db(test_data["config_db"]) + config_db = MockConfigDb() + ip_version = "ipv4" if "ipv4" in test_name else "ipv6" + table = config_db.get_table(IP_VER_TEST_PARAM_MAP[ip_version]["table"]) + if test_name == "ipv4_with_header": + result = show.get_dhcp_relay_data_with_header(table, IP_VER_TEST_PARAM_MAP[ip_version]["entry"]) + expected_output = expected_ipv4_table_with_header + elif test_name == "ipv6_with_header": + result = show.get_dhcp_relay_data_with_header(table, IP_VER_TEST_PARAM_MAP[ip_version]["entry"]) + expected_output = expected_ipv6_table_with_header + elif test_name == "ipv6_without_header": + result = show.get_data(table, "Vlan1000") + expected_output = expected_ipv6_table_without_header + assert result == expected_output -class TestVlanDhcpRelay(object): - def test_plugin_registration(self): - cli = mock.MagicMock() - show_dhcp_relay.register(cli) - assert 'DHCP Helper Address' in dict(vlan.VlanBrief.COLUMNS) +@parameterized.expand(NEW_ADDED_TEST_DATA) +@patchfs +def test_show_new_added_dhcp_relay(test_name, test_data, fs): + if not os.path.exists(DBCONFIG_PATH): + fs.create_file(DBCONFIG_PATH) + MockConfigDb.set_config_db(test_data["config_db"]) + config_db = MockConfigDb() + ip_version = test_name + table = config_db.get_table(IP_VER_TEST_PARAM_MAP[ip_version]["table"]) + if ip_version == "ipv4": + result = show.get_dhcp_relay_data_with_header(table, IP_VER_TEST_PARAM_MAP[ip_version]["entry"]) + expected_output = expected_ipv4_table_with_header + assert result == expected_output + else: + result = show.get_dhcp_relay_data_with_header(table, IP_VER_TEST_PARAM_MAP[ip_version]["entry"]) + expected_output = expected_ipv6_table_with_header + assert result == expected_output - def test_dhcp_relay_column_output(self): - ctx = ( - ({'Vlan100': {'dhcp_servers': ['192.0.0.1', '192.168.0.2']}}, {}, {}), - (), - ) - assert show_dhcp_relay.get_dhcp_helper_address(ctx, 'Vlan100') == '192.0.0.1\n192.168.0.2' + result = show.get_data(table, "Vlan1001") + expected_output = "" + assert result == expected_output +@parameterized.expand(MULTI_TEST_DATA) +@patchfs +def test_show_multi_dhcp_relay(test_name, test_data, fs): + if not os.path.exists(DBCONFIG_PATH): + fs.create_file(DBCONFIG_PATH) + MockConfigDb.set_config_db(test_data["config_db"]) + config_db = MockConfigDb() + ip_version = test_name + table = config_db.get_table(IP_VER_TEST_PARAM_MAP[ip_version]["table"]) + result = show.get_dhcp_relay_data_with_header(table, IP_VER_TEST_PARAM_MAP[ip_version]["entry"]) + if ip_version == "ipv4": + expected_output = expected_ipv4_table_multi_with_header + else: + expected_output = expected_ipv6_table_multi_with_header + assert result == expected_output diff --git a/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcpv6_helper.py b/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcpv6_helper.py deleted file mode 100644 index fcb15b98082d..000000000000 --- a/dockers/docker-dhcp-relay/cli-plugin-tests/test_show_dhcpv6_helper.py +++ /dev/null @@ -1,41 +0,0 @@ -import pytest -import sys -import os -sys.path.append('../cli/show/plugins/') -import show_dhcp_relay as show -from click.testing import CliRunner -from swsscommon import swsscommon -from mock_config import TEST_DATA -from parameterized import parameterized -from pyfakefs.fake_filesystem_unittest import patchfs - -try: - sys.path.insert(0, '../../../src/sonic-host-services/tests/common') - from mock_configdb import MockConfigDb - swsscommon.ConfigDBConnector = MockConfigDb -except KeyError: - pass - -expected_table = """\ --------- ------------ -Vlan1000 fc02:2000::1 - fc02:2000::2 --------- ------------ -""" - -DBCONFIG_PATH = '/var/run/redis/sonic-db/database_config.json' - -class TestDhcpRelayHelper(object): - - @parameterized.expand(TEST_DATA) - @patchfs - def test_show_dhcpv6_helper(self, test_name, test_data, fs): - if not os.path.exists(DBCONFIG_PATH): - fs.create_file(DBCONFIG_PATH) - MockConfigDb.set_config_db(test_data["config_db"]) - runner = CliRunner() - config_db = MockConfigDb() - table = config_db.get_table("DHCP_RELAY") - result = show.get_data(table, "Vlan1000") - assert result == expected_table - diff --git a/dockers/docker-dhcp-relay/cli/clear/plugins/clear_dhcp6relay_counter.py b/dockers/docker-dhcp-relay/cli/clear/plugins/clear_dhcp6relay_counter.py index 59bdbbf2cfb5..bfa5af45ae77 100644 --- a/dockers/docker-dhcp-relay/cli/clear/plugins/clear_dhcp6relay_counter.py +++ b/dockers/docker-dhcp-relay/cli/clear/plugins/clear_dhcp6relay_counter.py @@ -1,4 +1,3 @@ -import sys import click import importlib dhcp6_relay = importlib.import_module('show.plugins.dhcp-relay') @@ -6,27 +5,52 @@ import utilities_common.cli as clicommon +def clear_dhcp_relay_ipv6_counter(interface): + counter = dhcp6_relay.DHCPv6_Counter() + counter_intf = counter.get_interface() + + if interface: + counter.clear_table(interface) + else: + for intf in counter_intf: + counter.clear_table(intf) + + # sonic-clear dhcp6relay_counters @click.group(cls=clicommon.AliasedGroup) def dhcp6relay_clear(): pass + @dhcp6relay_clear.command('dhcp6relay_counters') @click.option('-i', '--interface', required=False) def dhcp6relay_clear_counters(interface): """ Clear dhcp6relay message counts """ + clear_dhcp_relay_ipv6_counter(interface) - counter = dhcp6_relay.DHCPv6_Counter() - counter_intf = counter.get_interface() - if interface: - counter.clear_table(interface) - else: - for intf in counter_intf: - counter.clear_table(intf) +@click.group(cls=clicommon.AliasedGroup, name="dhcp_relay") +def dhcp_relay(): + pass + + +@dhcp_relay.group(cls=clicommon.AliasedGroup, name="ipv6") +def dhcp_relay_ipv6(): + pass + + +@dhcp_relay_ipv6.command('counters') +@click.option('-i', '--interface', required=False) +def clear_dhcp_relay_ipv6_counters(interface): + """ Clear dhcp_relay ipv6 message counts """ + clear_dhcp_relay_ipv6_counter(interface) + def register(cli): cli.add_command(dhcp6relay_clear_counters) + cli.add_command(dhcp_relay) + if __name__ == '__main__': dhcp6relay_clear_counters() + dhcp_relay() diff --git a/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py b/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py index 4178915fe0b2..d76d5f6fa6b8 100644 --- a/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py +++ b/dockers/docker-dhcp-relay/cli/show/plugins/show_dhcp_relay.py @@ -1,7 +1,7 @@ import click from natsort import natsorted from tabulate import tabulate -import show.vlan as vlan +import show.vlan as show_vlan import utilities_common.cli as clicommon from swsscommon.swsscommon import ConfigDBConnector @@ -12,12 +12,17 @@ DHCPv6_COUNTER_TABLE = 'DHCPv6_COUNTER_TABLE' # DHCPv6 Counter Messages -messages = ["Unknown", "Solicit", "Advertise", "Request", "Confirm", "Renew", "Rebind", "Reply", "Release", "Decline", "Reconfigure", "Information-Request", "Relay-Forward", "Relay-Reply", "Malformed"] +messages = ["Unknown", "Solicit", "Advertise", "Request", "Confirm", "Renew", "Rebind", "Reply", "Release", "Decline", + "Reconfigure", "Information-Request", "Relay-Forward", "Relay-Reply", "Malformed"] # DHCP_RELAY Config Table DHCP_RELAY = 'DHCP_RELAY' +VLAN = "VLAN" +DHCPV6_SERVERS = "dhcpv6_servers" +DHCPV4_SERVERS = "dhcp_servers" config_db = ConfigDBConnector() + def get_dhcp_helper_address(ctx, vlan): cfg, _ = ctx vlan_dhcp_helper_data, _, _ = cfg @@ -30,7 +35,7 @@ def get_dhcp_helper_address(ctx, vlan): return '\n'.join(natsorted(dhcp_helpers)) -vlan.VlanBrief.register_column('DHCP Helper Address', get_dhcp_helper_address) +show_vlan.VlanBrief.register_column('DHCP Helper Address', get_dhcp_helper_address) class DHCPv6_Counter(object): @@ -39,7 +44,6 @@ def __init__(self): self.db.connect(self.db.STATE_DB) self.table_name = DHCPv6_COUNTER_TABLE + self.db.get_db_separator(self.db.STATE_DB) - def get_interface(self): """ Get all names of all interfaces in DHCPv6_COUNTER_TABLE """ vlans = [] @@ -47,7 +51,6 @@ def get_interface(self): if DHCPv6_COUNTER_TABLE in key: vlans.append(key[21:]) return vlans - def get_dhcp6relay_msg_count(self, interface, msg): """ Get count of a dhcp6relay message """ @@ -55,18 +58,18 @@ def get_dhcp6relay_msg_count(self, interface, msg): data = [str(msg), count] return data - def clear_table(self, interface): """ Reset all message counts to 0 """ for msg in messages: - self.db.set(self.db.STATE_DB, self.table_name + str(interface), str(msg), '0') + self.db.set(self.db.STATE_DB, self.table_name + str(interface), str(msg), '0') + def print_count(counter, intf): """Print count of each message""" data = [] for i in messages: data.append(counter.get_dhcp6relay_msg_count(intf, i)) - print(tabulate(data, headers = ["Message Type", intf], tablefmt='simple', stralign='right') + "\n") + print(tabulate(data, headers=["Message Type", intf], tablefmt='simple', stralign='right') + "\n") # @@ -80,13 +83,7 @@ def dhcp6relay_counters(): pass -# 'counts' subcommand ("show dhcp6relay_counters counts") -@dhcp6relay_counters.command('counts') -@click.option('-i', '--interface', required=False) -@click.option('--verbose', is_flag=True, help="Enable verbose output") -def counts(interface, verbose): - """Show dhcp6relay message counts""" - +def ipv6_counters(interface): counter = DHCPv6_Counter() counter_intf = counter.get_interface() @@ -94,38 +91,114 @@ def counts(interface, verbose): print_count(counter, interface) else: for intf in counter_intf: - print_count(counter, intf) + print_count(counter, intf) +# 'counts' subcommand ("show dhcp6relay_counters counts") +@dhcp6relay_counters.command('counts') +@click.option('-i', '--interface', required=False) +@click.option('--verbose', is_flag=True, help="Enable verbose output") +def counts(interface, verbose): + """Show dhcp6relay message counts""" + + ipv6_counters(interface) + @click.group(cls=clicommon.AliasedGroup, name="dhcprelay_helper") def dhcp_relay_helper(): """Show DHCP_Relay helper information""" pass + +def get_dhcp_relay_data_with_header(table_data, entry_name): + vlan_relay = {} + vlans = table_data.keys() + for vlan in vlans: + vlan_data = table_data.get(vlan) + dhcp_relay_data = vlan_data.get(entry_name) + if dhcp_relay_data is None or len(dhcp_relay_data) == 0: + continue + + vlan_relay[vlan] = [] + for address in dhcp_relay_data: + vlan_relay[vlan].append(address) + + dhcp_relay_vlan_keys = vlan_relay.keys() + relay_address_list = ["\n".join(vlan_relay[key]) for key in dhcp_relay_vlan_keys] + data = {"Interface": dhcp_relay_vlan_keys, "DHCP Relay Address": relay_address_list} + return tabulate(data, tablefmt='grid', stralign='right', headers='keys') + '\n' + + +def get_dhcp_relay(table_name, entry_name, with_header): + if config_db is None: + return + + config_db.connect() + table_data = config_db.get_table(table_name) + if table_data is None: + return + + if with_header: + output = get_dhcp_relay_data_with_header(table_data, entry_name) + print(output) + else: + vlans = config_db.get_keys(table_name) + for vlan in vlans: + output = get_data(table_data, vlan) + print(output) + + @dhcp_relay_helper.command('ipv6') def get_dhcpv6_helper_address(): """Parse through DHCP_RELAY table for each interface in config_db.json and print dhcpv6 helpers in table format""" - if config_db is not None: - config_db.connect() - table_data = config_db.get_table(DHCP_RELAY) - if table_data is not None: - vlans = config_db.get_keys(DHCP_RELAY) - for vlan in vlans: - output = get_data(table_data, vlan) - print(output) - + get_dhcp_relay(DHCP_RELAY, DHCPV6_SERVERS, with_header=False) + def get_data(table_data, vlan): - vlan_data = table_data.get(vlan) + vlan_data = table_data.get(vlan, {}) helpers_data = vlan_data.get('dhcpv6_servers') + addr = {vlan:[]} + output = '' if helpers_data is not None: - addr = {vlan:[]} for ip in helpers_data: addr[vlan].append(ip) - output = tabulate({'Interface':[vlan], vlan:addr.get(vlan)}, tablefmt='simple', stralign='right') + '\n' + output = tabulate({'Interface':[vlan], vlan:addr.get(vlan)}, tablefmt='simple', stralign='right') + '\n' return output + +@click.group(cls=clicommon.AliasedGroup, name="dhcp_relay") +def dhcp_relay(): + """show DHCP_Relay information""" + pass + + +@dhcp_relay.group(cls=clicommon.AliasedGroup, name="ipv6") +def dhcp_relay_ipv6(): + pass + + +@dhcp_relay.group(cls=clicommon.AliasedGroup, name="ipv4") +def dhcp_relay_ipv4(): + pass + + +@dhcp_relay_ipv4.command("helper") +def dhcp_relay_ipv4_destination(): + get_dhcp_relay(VLAN, DHCPV4_SERVERS, with_header=True) + + +@dhcp_relay_ipv6.command("destination") +def dhcp_relay_ipv6_destination(): + get_dhcp_relay(DHCP_RELAY, DHCPV6_SERVERS, with_header=True) + + +@dhcp_relay_ipv6.command("counters") +@click.option('-i', '--interface', required=False) +def dhcp_relay_ip6counters(interface): + ipv6_counters(interface) + + def register(cli): cli.add_command(dhcp6relay_counters) cli.add_command(dhcp_relay_helper) + cli.add_command(dhcp_relay) diff --git a/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/peer-group.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/peer-group.conf.j2 index ec563b380cc6..44a49587d039 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/peer-group.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/templates/voq_chassis/peer-group.conf.j2 @@ -20,8 +20,8 @@ neighbor VOQ_CHASSIS_V6_PEER activate neighbor VOQ_CHASSIS_V6_PEER addpath-tx-all-paths neighbor VOQ_CHASSIS_V6_PEER soft-reconfiguration inbound - neighbor VOQ_CHASSIS_V4_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in - neighbor VOQ_CHASSIS_V4_PEER route-map TO_VOQ_CHASSIS_V6_PEER out + neighbor VOQ_CHASSIS_V6_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in + neighbor VOQ_CHASSIS_V6_PEER route-map TO_VOQ_CHASSIS_V6_PEER out exit-address-family ! ! end of template: bgpd/templates/voq_chassis/peer-group.conf.j2 diff --git a/dockers/docker-ptf/Dockerfile.j2 b/dockers/docker-ptf/Dockerfile.j2 index 47ca3dd7ca52..60b537b2a639 100644 --- a/dockers/docker-ptf/Dockerfile.j2 +++ b/dockers/docker-ptf/Dockerfile.j2 @@ -73,7 +73,8 @@ RUN apt-get update \ libteam-utils \ gdb \ automake \ - iproute2 + iproute2 \ + wireshark-common # Install all python modules from pypi. python-scapy is exception, ptf debian package requires python-scapy # TODO: Clean up this step diff --git a/dockers/docker-sonic-mgmt/Dockerfile.j2 b/dockers/docker-sonic-mgmt/Dockerfile.j2 index 77b30ef784f8..f0865712a8d4 100755 --- a/dockers/docker-sonic-mgmt/Dockerfile.j2 +++ b/dockers/docker-sonic-mgmt/Dockerfile.j2 @@ -22,6 +22,7 @@ RUN apt-get update && apt-get install -y build-essential \ python3-pip \ python3-venv \ rsyslog \ + shellcheck \ snmp \ software-properties-common \ sshpass \ @@ -59,6 +60,7 @@ RUN pip install allure-pytest==2.8.22 \ jsonpatch \ lazy-object-proxy==1.6.0 \ lxml \ + mock \ msrest==0.6.21 \ natsort \ netaddr \ @@ -205,6 +207,7 @@ RUN python3 -m pip install aiohttp \ jsonpatch \ lxml \ markupsafe==2.0.1 \ + mock \ msrest==0.6.21 \ natsort \ ncclient \ diff --git a/dockers/docker-sonic-telemetry/critical_processes b/dockers/docker-sonic-telemetry/critical_processes index 612a94d9edac..3baf6e268907 100644 --- a/dockers/docker-sonic-telemetry/critical_processes +++ b/dockers/docker-sonic-telemetry/critical_processes @@ -1,2 +1 @@ program:telemetry -program:dialout diff --git a/files/Aboot/boot0.j2 b/files/Aboot/boot0.j2 index ca9f8fc2efc4..460fdd88fc18 100644 --- a/files/Aboot/boot0.j2 +++ b/files/Aboot/boot0.j2 @@ -525,6 +525,7 @@ write_platform_specific_cmdline() { if [ "$sid" = "Lodoga" ]; then aboot_machine=arista_7050cx3_32s cmdline_add logs_inram=on + cmdline_add libata.force=2.00:noncq fi if [ "$sid" = "Marysville" ]; then aboot_machine=arista_7050sx3_48yc8 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye new file mode 100644 index 000000000000..d5feb4c69733 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye @@ -0,0 +1,75 @@ +applibs==1.mlnx.4.5.4150 +applibs-dev==1.mlnx.4.5.4150 +bfnplatform==1.0.0 +bfnsdk==1.0.0 +iproute2-dev==1.mlnx.4.5.4150 +isc-dhcp-relay==4.4.1-2.3+deb11u1 +kernel-mft-dkms==4.21.0-100 +libhiredis-dev==0.14.0-3~bpo9+1 +libhiredis0.14==0.14.0-3~bpo9+1 +libnl-3-dev==3.5.0-1 +libnl-cli-3-200==3.5.0-1 +libnl-cli-3-dev==3.5.0-1 +libnl-genl-3-200==3.5.0-1 +libnl-genl-3-dev==3.5.0-1 +libnl-nf-3-200==3.5.0-1 +libnl-nf-3-dev==3.5.0-1 +libnl-route-3-dev==3.5.0-1 +libsaimetadata==1.0.0 +libsaimetadata-dev==1.0.0 +libsairedis==1.0.0 +libsairedis-dev==1.0.0 +libsaithrift-dev==0.9.4 +libsaivs==1.0.0 +libswsscommon==1.0.0 +libswsscommon-dev==1.0.0 +libtac-dev==1.4.1-1 +libtac2==1.4.1-1 +libteam-dev==1.30-1 +libteam-utils==1.30-1 +libteam5==1.30-1 +libteamdctl0==1.30-1 +libthrift-0.11.0==0.11.0-4 +libthrift-dev==0.14.1 +libthrift0==0.14.1 +libyang==1.0.73 +libyang-cpp==1.0.73 +libyang-dev==1.0.73 +linux-headers-5.10.0-18-2-amd64==5.10.140-1 +linux-headers-5.10.0-18-2-common==5.10.140-1 +lldpd==1.0.4-1 +lm-sensors==1:3.6.0-7 +mft==4.21.0-100 +net-tools==1.60+git20181103.0eebece-1 +python-thrift==0.11.0-4 +python3-swsscommon==1.0.0 +python3-thrift==0.14.1 +python3-yang==1.0.73 +sonic-dhcp6relay==1.0.0-0 +sonic-dhcpmon==1.0.0-0 +sonic-eventd==1.0.0-0 +sonic-linkmgrd==1.0.0-1 +sonic-mgmt-common==1.0.0 +sonic-mgmt-common-codegen==1.0.0 +sonic-platform-pddf==1.1 +sonic-platform-pddf-sym==1.1 +swss==1.0.0 +sx-acl-helper==1.mlnx.4.5.4150 +sx-acl-helper-dev==1.mlnx.4.5.4150 +sx-complib==1.mlnx.4.5.4150 +sx-complib-dev==1.mlnx.4.5.4150 +sx-examples==1.mlnx.4.5.4150 +sx-examples-dev==1.mlnx.4.5.4150 +sx-gen-utils==1.mlnx.4.5.4150 +sx-gen-utils-dev==1.mlnx.4.5.4150 +sx-hash-calc==1.mlnx.4.5.4150 +sx-scew==1.mlnx.4.5.4150 +sx-scew-dev==1.mlnx.4.5.4150 +sxd-libs==1.mlnx.4.5.4150 +sxd-libs-dev==1.mlnx.4.5.4150 +syncd==1.0.0 +syncd-vs==1.0.0 +thrift-compiler==0.14.1 +wjh-libs==1.mlnx.4.5.4150 +wjh-libs-dev==1.mlnx.4.5.4150 +wpasupplicant==2:2.9.0-14 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-arm64 b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..90f712515be3 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-arm64 @@ -0,0 +1,3 @@ +libnl-3-200==3.5.0-1 +libnl-route-3-200==3.5.0-1 +linux-headers-5.10.0-18-2-arm64==5.10.140-1 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..ea31993a2e6b --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-deb-bullseye-armhf @@ -0,0 +1,3 @@ +libnl-3-200==3.5.0-1 +libnl-route-3-200==3.5.0-1 +linux-headers-5.10.0-18-2-armmp==5.10.140-1 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 new file mode 100644 index 000000000000..7273003bb701 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3 @@ -0,0 +1,33 @@ +blessed==1.20.0 +charset-normalizer==3.0.1 +click-log==0.4.0 +colorful==0.5.5 +docker==6.0.1 +docker-image-py==0.1.12 +enlighten==1.11.2 +filelock==3.9.0 +ijson==2.6.1 +ipaddress==1.0.23 +jsondiff==2.0.0 +jsonpatch==1.32 +jsonpointer==2.3 +jsonschema==2.6.0 +natsort==6.2.1 +netaddr==0.8.0 +netifaces==0.11.0 +pddf-platform==1.0 +prefixed==0.7.0 +prettyprinter==0.18.0 +psutil==5.9.4 +pycairo==1.23.0 +pyroute2==0.5.19 +python-arptable==0.0.2 +semantic-version==2.10.0 +systemd-python==235 +tabulate==0.8.2 +thrift==0.14.1 +toposort==1.6 +wcwidth==0.2.6 +websocket-client==1.5.1 +www-authenticate==0.9.2 +xmltodict==0.12.0 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-arm64 b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-arm64 new file mode 100644 index 000000000000..defcd2f93cb6 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-arm64 @@ -0,0 +1,6 @@ +bitarray==1.5.3 +click==7.0 +lxml==4.9.1 +redis==3.5.3 +requests==2.28.2 +zipp==1.2.0 diff --git a/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf new file mode 100644 index 000000000000..defcd2f93cb6 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-bullseye/versions-py3-all-armhf @@ -0,0 +1,6 @@ +bitarray==1.5.3 +click==7.0 +lxml==4.9.1 +redis==3.5.3 +requests==2.28.2 +zipp==1.2.0 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster new file mode 100644 index 000000000000..46c1e3ad4017 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster @@ -0,0 +1,34 @@ +libnl-cli-3-200==3.5.0-1 +libnl-cli-3-dev==3.5.0-1 +libnl-genl-3-200==3.5.0-1 +libnl-genl-3-dev==3.5.0-1 +libnl-nf-3-200==3.5.0-1 +libnl-nf-3-dev==3.5.0-1 +libsaimetadata==1.0.0 +libsaimetadata-dev==1.0.0 +libsairedis==1.0.0 +libsairedis-dev==1.0.0 +libsaivs==1.0.0 +libsaivs-dev==1.0.0 +libswsscommon==1.0.0 +libswsscommon-dev==1.0.0 +libteam-dev==1.30-1 +libteam-utils==1.30-1 +libteam5==1.30-1 +libteamdctl0==1.30-1 +libthrift-0.11.0==0.11.0-4 +libthrift-dev==0.11.0-4 +libthrift0==0.14.1 +libyang==1.0.73 +libyang-cpp==1.0.73 +libyang-dev==1.0.73 +python-swsscommon==1.0.0 +python-thrift==0.11.0-4 +python3-swsscommon==1.0.0 +python3-yang==1.0.73 +sonic-mgmt-common==1.0.0 +sonic-mgmt-common-codegen==1.0.0 +sonic-mgmt-framework==1.0-01 +swss==1.0.0 +syncd-vs==1.0.0 +thrift-compiler==0.11.0-4 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-arm64 b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-arm64 new file mode 100644 index 000000000000..2f592dd8dbbc --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-arm64 @@ -0,0 +1,9 @@ +libhiredis-dev==0.14.0-3~bpo9+1 +libhiredis0.14==0.14.0-3~bpo9+1 +libnl-3-200==3.5.0-1 +libnl-3-dev==3.5.0-1 +libnl-route-3-200==3.5.0-1 +libnl-route-3-dev==3.5.0-1 +libsnmp-base==5.7.3+dfsg-5 +libsnmp-dev==5.7.3+dfsg-5 +libsnmp30==5.7.3+dfsg-5 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-armhf b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-armhf new file mode 100644 index 000000000000..2f592dd8dbbc --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-deb-buster-armhf @@ -0,0 +1,9 @@ +libhiredis-dev==0.14.0-3~bpo9+1 +libhiredis0.14==0.14.0-3~bpo9+1 +libnl-3-200==3.5.0-1 +libnl-3-dev==3.5.0-1 +libnl-route-3-200==3.5.0-1 +libnl-route-3-dev==3.5.0-1 +libsnmp-base==5.7.3+dfsg-5 +libsnmp-dev==5.7.3+dfsg-5 +libsnmp30==5.7.3+dfsg-5 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py2 b/files/build/versions/build/build-sonic-slave-buster/versions-py2 new file mode 100644 index 000000000000..ecfc5d8d7bd1 --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py2 @@ -0,0 +1,11 @@ +bitarray==1.5.3 +contextlib2==0.6.0.post1 +future==0.18.3 +importlib-resources==3.3.1 +natsort==6.2.1 +netaddr==0.8.0 +pyang==2.5.3 +pyangbind==0.6.0 +redis==3.5.3 +thrift==0.11.0 +zipp==1.2.0 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-arm64 b/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-arm64 new file mode 100644 index 000000000000..30ca4f716ace --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-arm64 @@ -0,0 +1,2 @@ +ipaddress==1.0.23 +lxml==4.9.1 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-armhf b/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-armhf new file mode 100644 index 000000000000..30ca4f716ace --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py2-all-armhf @@ -0,0 +1,2 @@ +ipaddress==1.0.23 +lxml==4.9.1 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py3 b/files/build/versions/build/build-sonic-slave-buster/versions-py3 new file mode 100644 index 000000000000..0e5c7d3c3afd --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py3 @@ -0,0 +1,31 @@ +blessed==1.20.0 +charset-normalizer==3.0.1 +click==7.0 +click-log==0.4.0 +colorful==0.5.5 +dbus-python==1.3.2 +docker==6.0.1 +docker-image-py==0.1.12 +enlighten==1.11.2 +filelock==3.9.0 +ijson==2.6.1 +ipaddress==1.0.23 +jsondiff==2.0.0 +jsonpatch==1.32 +jsonpointer==2.3 +lazy-object-proxy==1.9.0 +natsort==6.2.1 +netaddr==0.8.0 +netifaces==0.11.0 +prefixed==0.7.0 +prettyprinter==0.18.0 +pycairo==1.23.0 +pyroute2==0.5.19 +semantic-version==2.10.0 +systemd-python==235 +tabulate==0.8.2 +toposort==1.6 +wcwidth==0.2.6 +websocket-client==1.5.1 +www-authenticate==0.9.2 +xmltodict==0.12.0 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-arm64 b/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-arm64 new file mode 100644 index 000000000000..2c6a3d67811f --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-arm64 @@ -0,0 +1,3 @@ +bitarray==1.5.3 +lxml==4.9.1 +redis==3.5.3 diff --git a/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-armhf b/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-armhf new file mode 100644 index 000000000000..2c6a3d67811f --- /dev/null +++ b/files/build/versions/build/build-sonic-slave-buster/versions-py3-all-armhf @@ -0,0 +1,3 @@ +bitarray==1.5.3 +lxml==4.9.1 +redis==3.5.3 diff --git a/files/build/versions/default/versions-docker b/files/build/versions/default/versions-docker new file mode 100644 index 000000000000..3b8b069c2c82 --- /dev/null +++ b/files/build/versions/default/versions-docker @@ -0,0 +1,12 @@ +amd64:amd64/debian:bullseye==sha256:6f1f698e20c8ae73b110eb614a2c6d13fbdb504bbbbcf2965c4d0b80b7bb7fb1 +amd64:amd64/debian:buster==sha256:c75d609d1d06a44ac87c52e9afe4102af856dd1c075f316b4d219f072af0b3b1 +amd64:debian:bullseye==sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430f +amd64:debian:buster==sha256:2d356e1e22c0902f88ef65cb7159ecd5a96feb62345747edfd4324b0d83a2923 +arm64:arm64v8/debian:bullseye==sha256:6509c82860a3b4158fb6537fdec1477443c367b7d5bf1b55dfcc40325aa588e6 +arm64:arm64v8/debian:buster==sha256:0100d882223b08bc979db07977fd493163c545abcac553086bba75a96aebe0bd +arm64:debian:bullseye==sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430f +arm64:debian:buster==sha256:2d356e1e22c0902f88ef65cb7159ecd5a96feb62345747edfd4324b0d83a2923 +armhf:arm32v7/debian:bullseye==sha256:758b1c750089fbcafcea7f4f643cd36d50c0e7673acc5e5674fc803fb52ce2c8 +armhf:arm32v7/debian:buster==sha256:43b845d5864322e89773a602535f5db85debe3356e50488c63dd99bf2cc16899 +armhf:debian:bullseye==sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430f +armhf:debian:buster==sha256:2d356e1e22c0902f88ef65cb7159ecd5a96feb62345747edfd4324b0d83a2923 diff --git a/files/build/versions/default/versions-git b/files/build/versions/default/versions-git new file mode 100644 index 000000000000..47b811e067cd --- /dev/null +++ b/files/build/versions/default/versions-git @@ -0,0 +1,24 @@ +https://chromium.googlesource.com/chromium/tools/depot_tools.git==c962e86f7bafddfc582922dec44cf7a843228abb +https://github.com/aristanetworks/swi-tools.git==b5f087e4774168bf536360d43c9c509c8f14ad9f +https://github.com/CESNET/libyang.git==d57c8888922d1663508ad0f0a5b66f8ad600276d +https://github.com/daveolson53/audisp-tacplus.git==559c9f22edd4f2dea0ecedffb3ad9502b12a75b6 +https://github.com/daveolson53/libnss-tacplus.git==19008ab68d9d504aa58eb34d5f564755a1613b8b +https://github.com/dyninc/OpenBFDD.git==e35f43ad8d2b3f084e96a84c392528a90d05a287 +https://github.com/flashrom/flashrom.git==ec5848899cc6e3ac3ca05d621733b61ea5c37093 +https://github.com/FreeRADIUS/freeradius-server.git==975976645a0a964b7badc742f6ea11fe3cc35764 +https://github.com/FreeRADIUS/pam_radius.git==bcafcf535c763ee193ce7803a56cddb929db04cb +https://github.com/jeroennijhof/pam_tacplus.git==7908a7faa0205beda9ea198bdd3aa37868be6da2 +https://github.com/jpirko/libteam.git==61e27812c1074a865d7e1a778c0ce442837c28d7 +https://github.com/lguohan/gnxi.git==f2b11e45b16ab13485ae14933f30c18ee6336499 +https://github.com/Marvell-switching/mrvl-prestera.git==9dbae444204a2c27b33be698ce497d55926b8893 +https://github.com/Mellanox/libpsample.git==62bb27d9a49424e45191eee81df7ce0d8c74e774 +https://github.com/p4lang/ptf.git==7494366607e2e4c171439df3585eba3c9769fad8 +https://github.com/p4lang/scapy-vxlan.git==85ffe83da156568ee47a0750f638227e6e1d7479 +https://github.com/sflow/host-sflow==b7d12c7fe18f2c4b2377f1b34c1e848d1a5ea16c +https://github.com/sflow/sflowtool==8c914e79ecb7930adcba2e5296041c3f9eb8e450 +https://github.com/thom311/libnl==cbafad9ddf24caef5230fef715d34f0539603be0 +https://salsa.debian.org/debian/libteam.git==48142125234a665ad5367b724af36a58fb484d3d +https://salsa.debian.org/kernel-team/ethtool/==b24474c5f4cad2bb690ced33a3c7df397170a699 +https://salsa.debian.org/kernel-team/initramfs-tools.git==dd16eade69ef76b304a369fac2f6c0de508b855b +https://salsa.debian.org/sk-guest/monit.git==c9da7ebb1f35dfba17b50b5969a6e75e29cbec0d +https://salsa.debian.org/ssh-team/openssh.git==48770216530d8a0a57f5f1d7cc60addd67d1b549 diff --git a/files/build/versions/default/versions-mirror b/files/build/versions/default/versions-mirror new file mode 100644 index 000000000000..d01769d9d220 --- /dev/null +++ b/files/build/versions/default/versions-mirror @@ -0,0 +1,15 @@ +deb.nodesource.com_node%5f14.x_dists_bullseye==2023-02-17T00:35:28Z +deb.nodesource.com_node%5f14.x_dists_buster==2023-02-17T00:35:28Z +debian==20230303T000210Z +debian-security==20230303T000635Z +download.docker.com_linux_debian_dists_bullseye==2023-02-23T17:33:12Z +download.docker.com_linux_debian_dists_buster==2023-02-16T23:33:39Z +packages.microsoft.com_repos_sonic-dev_dists_jessie==2019-05-26T14:59:06Z +packages.trafficmanager.net_snapshot_debian-security_20230303T000635Z_dists_bullseye-security==2023-03-02T15:33:06Z +packages.trafficmanager.net_snapshot_debian-security_20230303T000635Z_dists_buster_updates==2023-03-02T15:33:06Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_bullseye==2022-12-17T10:14:37Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_bullseye-backports==2023-03-02T20:11:01Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_bullseye-updates==2023-03-02T20:11:01Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_buster==2022-09-10T11:30:54Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_buster-backports==2023-03-02T20:11:01Z +packages.trafficmanager.net_snapshot_debian_20230303T000210Z_dists_buster-updates==2023-03-02T20:11:01Z diff --git a/files/build/versions/default/versions-web b/files/build/versions/default/versions-web new file mode 100644 index 000000000000..5c7b0cd0a57c --- /dev/null +++ b/files/build/versions/default/versions-web @@ -0,0 +1,152 @@ +http://deb.debian.org/debian/pool/main/i/iproute2/iproute2_5.10.0-4~bpo10+1.debian.tar.xz==4fcbfdd68253864ebbfc11c3fb1480c6 +http://deb.debian.org/debian/pool/main/i/iproute2/iproute2_5.10.0-4~bpo10+1.dsc==81cf5b863f12de38a48b5a3b602cfff4 +http://deb.debian.org/debian/pool/main/i/iproute2/iproute2_5.10.0.orig.tar.xz==f36f0a0612f7fd565680e918d692900d +http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.2-4.debian.tar.xz==c27e499611c48ba307792518d29cdcc7 +http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.2-4.dsc==d9572a9f48c88293341681601a7b18c5 +http://deb.debian.org/debian/pool/main/i/iptables/iptables_1.8.2.orig.tar.bz2==944558e88ddcc3b9b0d9550070fa3599 +http://deb.debian.org/debian/pool/main/i/isc-dhcp/isc-dhcp_4.4.1-2.3+deb11u1.debian.tar.xz==8c3640097a1b4cc59e927badbd45b3f0 +http://deb.debian.org/debian/pool/main/i/isc-dhcp/isc-dhcp_4.4.1-2.3+deb11u1.dsc==1af0a028a9655235ec3372332f94a19c +http://deb.debian.org/debian/pool/main/i/isc-dhcp/isc-dhcp_4.4.1.orig.tar.gz==dbcba5108f659278200218ac0847ce3f +http://deb.debian.org/debian/pool/main/l/lm-sensors/lm-sensors_3.6.0-7.debian.tar.xz==8eab143a53c71c03695ebc78e4b5ed36 +http://deb.debian.org/debian/pool/main/l/lm-sensors/lm-sensors_3.6.0-7.dsc==983d68fb43001bb2fc94862bc4bc2e2b +http://deb.debian.org/debian/pool/main/l/lm-sensors/lm-sensors_3.6.0.orig.tar.gz==f60e47b5eb50bbeed48a9f43bb08dd5e +http://deb.debian.org/debian/pool/main/n/ntp/ntp_4.2.8p15+dfsg-1.debian.tar.xz==896c9b6679f379d8967b012a0cc792c2 +http://deb.debian.org/debian/pool/main/n/ntp/ntp_4.2.8p15+dfsg.orig.tar.xz==c1c557036197188a22ec285fa53149d8 +http://ftp.us.debian.org/debian/pool/main/s/scapy/python-scapy_2.4.0-2_all.deb==d87d7b22de51937b1e706e4751b86251 +http://http.debian.net/debian/pool/main/h/hiredis/hiredis_0.14.0-3~bpo9+1.debian.tar.xz==ef340aedc6fd42c549cd503bffb498b2 +http://http.debian.net/debian/pool/main/h/hiredis/hiredis_0.14.0-3~bpo9+1.dsc==be4ce11ef67268e59e4b6be587327c40 +http://http.debian.net/debian/pool/main/h/hiredis/hiredis_0.14.0.orig.tar.gz==6d565680a4af0d2e261abbc3e3431b2b +http://www.mellanox.com/downloads/MFT/mft-4.21.0-100-x86_64-deb.tgz==51efe115cbada1120fefe7e4c6958baf +https://archive.apache.org/dist/thrift/0.14.1/thrift-0.14.1.tar.gz==c64434548438df2cb1e53fb27c600e85 +https://bootstrap.pypa.io/pip/2.7/get-pip.py==60e8267eb1b7bc71dc4843eb7bd294d3 +https://deb.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.123+deb11u1.dsc==27f74ae171f50bfc1116d3e23dbbab3f +https://deb.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.123+deb11u1.tar.gz==37b56a6cf74721c6496d05d032cd22af +https://deb.debian.org/debian/pool/main/k/kdump-tools/kdump-tools_1.6.8.4.dsc==f96a03bb090ab03d484e5d232161fafe +https://deb.debian.org/debian/pool/main/k/kdump-tools/kdump-tools_1.6.8.4.tar.xz==26bcae7c27b729d614a4a85e2a01cb64 +https://deb.nodesource.com/gpgkey/nodesource.gpg.key==003b51a89a133b5db4cca98b2dea3117 +https://deb.nodesource.com/node_14.x/dists/bullseye/Release==6b7d50c433d129d4c6fd95bdf56070fa +https://deb.nodesource.com/node_14.x/dists/buster/Release==42875141604382f0abb4d047f645dfe1 +https://deb.nodesource.com/setup_14.x==7e3b27b12367cbc79d788cd43bbc917c +https://download.docker.com/linux/debian/gpg==1afae06b34a13c1b3d9cb61a26285a15 +https://github.com/aristanetworks/sonic-firmware/raw/446f30ccd8626f904d89d5798da7294948e090a6/phy/phy-credo_1.0_amd64.deb==6c3d6c32477615cbe049b9161ce15bd5 +https://github.com/barefootnetworks/sonic-release-pkgs/raw/dev/bfnplatform_20221130_sai_1.11.0_deb11.deb==4a77e5f35b75ad7ce062f631581b40e2 +https://github.com/barefootnetworks/sonic-release-pkgs/raw/dev/bfnsdk_20221130_sai_1.11.0_deb11.deb==c2b0dfb4122dcdbd4af58826e2010640 +https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64==abe26a71ce14950f94d858c317da94d1 +https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-arm64==2b326ca77b64a5cf7df04e80b4fdbca0 +https://github.com/CentecNetworks/sonic-binaries/raw/master/amd64/sai/libsai-dev_1.11.0-1_amd64.deb==6a9e27b3830d96e980651de15b291933 +https://github.com/CentecNetworks/sonic-binaries/raw/master/amd64/sai/libsai_1.11.0-1_amd64.deb==8bd907c4baeacf6467c0794bee0d723c +https://github.com/CentecNetworks/sonic-binaries/raw/master/amd64/third_party/advantech/_Susi4.so==5e1b8daef522c9da00af400abe25810b +https://github.com/CentecNetworks/sonic-binaries/raw/master/amd64/third_party/advantech/libSUSI-4.00.so.1==393a94b0abba146777e276e1febe0cb0 +https://github.com/CentecNetworks/sonic-binaries/raw/master/arm64/sai/libsai-dev_1.11.0-1_arm64.deb==5546bb53d3d09b256c625824059b2953 +https://github.com/CentecNetworks/sonic-binaries/raw/master/arm64/sai/libsai_1.11.0-1_arm64.deb==b5c30d03483a1c30b2c5b44a45c4a13f +https://github.com/CumulusNetworks/ifupdown2/archive/3.0.0-1.tar.gz==755459b3a58fbc11625336846cea7420 +https://github.com/Marvell-switching/sonic-marvell-binaries/raw/master/armhf/sai-plugin/mrvllibsai_1.10.2-1_armhf.deb==6d75ab5ec102247fd42aed43b4bf5da6 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/fw-2010.4150/fw-SPC-rel-13_2010_4150-EVB.mfa==597bd2f1b859413c9dc5f9835a0c26cf +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/fw-2010.4150/fw-SPC2-rel-29_2010_4150-EVB.mfa==3f88f2ccbcb05cd1691bc6865d8f0ce4 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/fw-2010.4150/fw-SPC3-rel-30_2010_4150-EVB.mfa==168181ac54c7fd4da4305dc112a583c1 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/applibs-dev_1.mlnx.4.5.4150_amd64.deb==a89ff63bc29fcd423a15606f98a02759 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/applibs_1.mlnx.4.5.4150_amd64.deb==9c61fb3282ad60e9f5b87654723cb065 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/iproute2-dev_1.mlnx.4.5.4150_amd64.deb==4378c3383f7bafb4441c94d9583d55d9 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/iproute2_1.mlnx.4.5.4150_amd64.deb==791af75b4d90bdd929c2982603c2d6d0 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/python-sdk-api_1.mlnx.4.5.4150_amd64.deb==35deac60f9a25d70737fbd92758d9402 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-acl-helper-dev_1.mlnx.4.5.4150_amd64.deb==cd93c79c798c90c7cc9e81ff6319800e +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-acl-helper_1.mlnx.4.5.4150_amd64.deb==b65e0e58a99af53346d629ec80861d83 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-complib-dev_1.mlnx.4.5.4150_amd64.deb==4e83bf929a5ab3a25a588074b40a71f7 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-complib_1.mlnx.4.5.4150_amd64.deb==eb8de2cc70801165fcdcf8cbaab70dc4 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-examples-dev_1.mlnx.4.5.4150_amd64.deb==b8366ee145fda5533a38adf371779706 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-examples_1.mlnx.4.5.4150_amd64.deb==c67c03e21cb265b542595036b50ffa3d +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-gen-utils-dev_1.mlnx.4.5.4150_amd64.deb==7f6f83237ec3a35e43342da6f293ff56 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-gen-utils_1.mlnx.4.5.4150_amd64.deb==97596613dec6c1f40246216a8066cc32 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-hash-calc_1.mlnx.4.5.4150_amd64.deb==c2e495d2d7ec8dc3cd856e9a32b9d365 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-scew-dev_1.mlnx.4.5.4150_amd64.deb==4aad8c2eb85ad57499179a52957b05cc +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sx-scew_1.mlnx.4.5.4150_amd64.deb==378c3a5f42b3b3aa3ce64675f662a833 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sxd-libs-dev_1.mlnx.4.5.4150_amd64.deb==f0599f5b479854feebf0d6d7a970320e +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/sxd-libs_1.mlnx.4.5.4150_amd64.deb==80e6fc6f837b97b35ddf9f0ff2abb8c7 +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/wjh-libs-dev_1.mlnx.4.5.4150_amd64.deb==e4fa10735f5733d7ef47e6e5d37ce62e +https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins/releases/download/sdk-4.5.4150-bullseye-amd64/wjh-libs_1.mlnx.4.5.4150_amd64.deb==b158af6dfb1dcdcf526d8be6f64353c6 +https://github.com/Mellanox/Spectrum-SDK-Drivers/archive/refs/heads/4.5.4150.zip==aac717744c7794ee069930db71d4ec9f +https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz==6f56ef28c93cee644e8c4aaaef7cfb55 +https://launchpad.net/debian/+archive/primary/+sourcefiles/bash/5.1-2/bash_5.1-2.debian.tar.xz==9d0cbd5f463f461c840c95f62a64d61b +https://launchpad.net/debian/+archive/primary/+sourcefiles/bash/5.1-2/bash_5.1-2.dsc==be44c5a9fc12fb567a486f54b842dd9e +https://launchpad.net/debian/+archive/primary/+sourcefiles/bash/5.1-2/bash_5.1.orig.tar.xz==6ddb13b6111f601db08fc7c72afa0263 +https://raw.githubusercontent.com/p4lang/ptf/master/ptf_nn/ptf_nn_agent.py==628956b660575965429cec84b1778816 +https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/2.4.5/swagger-codegen-cli-2.4.5.jar==219f1453ff22482d9e080effbfa7fa81 +https://sonicstorage.blob.core.windows.net/debian-security/pool/updates/main/l/linux/linux_5.10.140-1.debian.tar.xz==9813a002af43da3a5be05f3d31e85328 +https://sonicstorage.blob.core.windows.net/debian-security/pool/updates/main/l/linux/linux_5.10.140-1.dsc==84ab224b073f97978802d9f998248fcc +https://sonicstorage.blob.core.windows.net/debian-security/pool/updates/main/l/linux/linux_5.10.140.orig.tar.xz==925a4af3dffcc9e2838d223e413d6ebb +https://sonicstorage.blob.core.windows.net/debian/pool/main/l/lldpd/lldpd_1.0.4-1.debian.tar.xz==0a529cf8d1717b5c3dbe0c61b3512aa1 +https://sonicstorage.blob.core.windows.net/debian/pool/main/l/lldpd/lldpd_1.0.4-1.dsc==b88b922d96688c948e90987fcaa3a2de +https://sonicstorage.blob.core.windows.net/debian/pool/main/l/lldpd/lldpd_1.0.4.orig.tar.gz==33e8d58623f99184e4e709cbbfe45db3 +https://sonicstorage.blob.core.windows.net/debian/pool/main/liby/libyang/libyang2_2.0.112-6.debian.tar.xz==aa798a069f506a243d337c18600477e5 +https://sonicstorage.blob.core.windows.net/debian/pool/main/liby/libyang/libyang2_2.0.112-6.dsc==da4924086edc4911c6fca21ca46fdb1d +https://sonicstorage.blob.core.windows.net/debian/pool/main/liby/libyang/libyang2_2.0.112.orig.tar.gz==4ac414ef27f3c4d14f96c2f49c58c2be +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.7.3+dfsg-5.debian.tar.xz==ad957e90207d0669beb2109e4e325def +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.7.3+dfsg-5.dsc==2443e4dffbdb020e7ab4f947a7904912 +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.7.3+dfsg.orig.tar.xz==6391ae27eb1ae34ff5530712bb1c4209 +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.9+dfsg-4+deb11u1.debian.tar.xz==a3e626b1ed5adc26430e1727d81641df +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.9+dfsg-4+deb11u1.dsc==a36ed553b5034b7400d9e9a8d529b27e +https://sonicstorage.blob.core.windows.net/debian/pool/main/n/net-snmp/net-snmp_5.9+dfsg.orig.tar.xz==6c2d346ce3320e8999500497e9bacc99 +https://sonicstorage.blob.core.windows.net/packages/20190307/bcmcmd?sv=2015-04-05&sr=b&sig=sUdbU7oVbh5exbXXHVL5TDFBTWDDBASHeJ8Cp0B0TIc%3D&se=2038-05-06T22%3A34%3A19Z&sp=r==b8aefc751bdf93218716bca6797460ff +https://sonicstorage.blob.core.windows.net/packages/20190307/dsserve?sv=2015-04-05&sr=b&sig=lk7BH3DtW%2F5ehc0Rkqfga%2BUCABI0UzQmDamBsZH9K6w%3D&se=2038-05-06T22%3A34%3A45Z&sp=r==f9d4b815ebb9be9f755dedca8a51170d +https://sonicstorage.blob.core.windows.net/packages/credosai/libsaicredo-owl_0.8.2_amd64.deb?sv=2021-04-10&st=2023-01-31T04%3A25%3A43Z&se=2100-01-31T04%3A25%3A00Z&sr=b&sp=r&sig=%2BdSFujwy0gY%2FiH50Ffi%2FsqZOAHBOFPUcBdR06fHEZkI%3D==cca0a297f413bf6b01ea6761b040d527 +https://sonicstorage.blob.core.windows.net/packages/credosai/libsaicredo_0.8.2_amd64.deb?sv=2021-04-10&st=2023-01-31T04%3A24%3A23Z&se=2100-01-31T04%3A24%3A00Z&sr=b&sp=r&sig=RZPbmaIetvDRtwifrVT4s%2FaQxB%2FBTOyCqXtMtoNRjmY%3D==9107bab0c6295fecd4ab4cd48493bc3f +https://sonicstorage.blob.core.windows.net/packages/debian/socat_1.7.4.1-3.debian.tar.xz?sv=2020-04-08&st=2021-12-14T08%3A00%3A00Z&se=2030-12-14T18%3A18%3A00Z&sr=b&sp=r&sig=C8aYSvaQgMJ58Z13kFY0Wr0J0QF6i7WCeET9%2BpF%2BAxc%3D==e8d1e99b4b9e93f5dde860f6d55f42e3 +https://sonicstorage.blob.core.windows.net/packages/debian/socat_1.7.4.1-3.dsc?sv=2020-04-08&st=2021-12-14T00%3A00%3A00Z&se=2050-12-15T00%3A00%3A00Z&sr=b&sp=r&sig=fIy6dVz3s59K0TiMkTlwSWN8lCzRl3i76ruAtROhfWA%3D==df3ed0dd965589fd09bf6a2920bc273e +https://sonicstorage.blob.core.windows.net/packages/debian/socat_1.7.4.1.orig.tar.gz?sv=2020-04-08&st=2021-12-14T00%3A00%3A00Z&se=2050-12-15T00%3A00%3A00Z&sr=b&sp=r&sig=gpihyZv%2Fr0bVrCUKCKwpS4bIoqiPpdd%2BgCfuUGNHOUc%3D==780d14908dc1a6aa2790de376ab56b7a +https://sonicstorage.blob.core.windows.net/packages/debian/thrift_0.11.0-4.debian.tar.xz?sv=2015-04-05&sr=b&sig=dj9uJ5YjUNupcmuxSX6%2F5IS9NqaGAyM9iF2h%2F2rROZA%3D&se=2156-02-02T17%3A19%3A34Z&sp=r==52ad383b97ad051f4d1d25b54aaad569 +https://sonicstorage.blob.core.windows.net/packages/debian/thrift_0.11.0-4.dsc?sv=2015-04-05&sr=b&sig=pWfg55owvQ2jZtZ6ylHp0OP8uZyfc9sxO6H%2BP4Ez7w4%3D&se=2156-02-02T17%3A20%3A05Z&sp=r==6917fe7b3ada9313be94713dd50fee7b +https://sonicstorage.blob.core.windows.net/packages/debian/thrift_0.11.0.orig.tar.gz?sv=2015-04-05&sr=b&sig=%2BrAjWESiSNRCMN7NGqEqVGceLefpwwS%2FWPKEfJpPLSQ%3D&se=2156-02-02T17%3A17%3A20Z&sp=r==0be59730ebce071eceaf6bfdb8d3a20e +https://sonicstorage.blob.core.windows.net/packages/onie/onie-recovery-x86_64-kvm_x86_64-r0.iso?sv=2015-04-05&sr=b&sig=XMAk1cttBFM369CMbihe5oZgXwe4uaDVfwg4CTLT%2F5U%3D&se=2155-10-13T10%3A40%3A13Z&sp=r==54e11e450a461b1f4ae39c3ce3f15eff +https://sonicstorage.blob.core.windows.net/packages/onie/onie-recovery-x86_64-kvm_x86_64_4_asic-r0.iso?sv=2020-04-08&st=2021-08-27T22%3A41%3A07Z&se=2030-08-28T22%3A41%3A00Z&sr=b&sp=r&sig=zyaX7rHnE5jXldpgrnWq1nvsfmMTrVCSuESZqrIxDLc%3D==1d8b8d3fa37f842d0184b5205be22be9 +https://sonicstorage.blob.core.windows.net/packages/onie/onie-recovery-x86_64-kvm_x86_64_6_asic-r0.iso?sv=2020-04-08&st=2021-08-27T22%3A42%3A24Z&se=2030-08-28T22%3A42%3A00Z&sr=b&sp=r&sig=RqbtHJt8Hvy7j78jt3TgXo27T7zjdUDfSxqmOID1YUU%3D==58494305d4ac201daedf9364a1018a1b +https://sonicstorage.blob.core.windows.net/packages/redis/redis-server_6.0.6-1~bpo10+1_amd64.deb?sv=2015-04-05&sr=b&sig=2Ketg7BmkZEaTxR%2FgvAFVmhjn7ywdmkc7l2T2rsL57o%3D&se=2030-09-06T19%3A45%3A20Z&sp=r==09af97c096f4c854d238f91614a3415b +https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1_bpo10+1_arm64.deb?sv=2015-04-05&sr=b&sig=GbkJV2wWln3hoz27zKi5erdk3NDKrAFrQriA97bcRCY%3D&se=2030-10-24T04%3A22%3A21Z&sp=r==282b4766cc9ac7d8bb70622bd69d9f5c +https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1_bpo10+1_armhf.deb?sv=2015-04-05&sr=b&sig=67vHAMxsl%2BS3X1KsqhdYhakJkGdg5FKSPgU8kUiw4as%3D&se=2030-10-24T04%3A22%3A40Z&sp=r==62f287117afab6caaec564232ebbb5de +https://sonicstorage.blob.core.windows.net/packages/redis/redis-tools_6.0.6-1~bpo10+1_amd64.deb?sv=2015-04-05&sr=b&sig=73zbmjkf3pi%2Bn0R8Hy7CWT2EUvOAyzM5aLYJWCLySGM%3D&se=2030-09-06T19%3A44%3A59Z&sp=r==2d58c3c3358290c04d5e0ba70f297f18 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.1/amd64/golang-1.15-go_1.15.15-1~deb11u4%2Bfips_amd64.deb==b60f6db62805696b47ab422ab798fe56 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.1/amd64/golang-1.15-src_1.15.15-1~deb11u4%2Bfips_amd64.deb==1c920937aa49b602a1bfec3c49747131 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.1/arm64/golang-1.15-go_1.15.15-1~deb11u4%2Bfips_arm64.deb==0b70c104b907db13ff2fe5d52b3d0008 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.1/arm64/golang-1.15-src_1.15.15-1~deb11u4%2Bfips_arm64.deb==1d06900f03424fa5ce34a782605983fe +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/golang-1.15-doc_1.15.15-1~deb11u4+fips_all.deb==72ead09139135d4ecd91b76c89128567 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/golang-1.15-go_1.15.15-1~deb11u4+fips_amd64.deb==145e103357a915cc759cc93de602b631 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/golang-1.15-src_1.15.15-1~deb11u4+fips_amd64.deb==1c1a46d5599be92777702643c37d5751 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/golang-1.15_1.15.15-1~deb11u4+fips_all.deb==847bc1fc5ce9c8ebae5176947ab34d30 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libk5crypto3_1.18.3-6+deb11u1+fips_amd64.deb==5e8de29d5f6844f71f15cbf0c3993f1c +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libpython3.9-minimal_3.9.2-1+fips_amd64.deb==411d2092cd614dd187bdc0ec0bb9598f +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libpython3.9-stdlib_3.9.2-1+fips_amd64.deb==521dd7170cb9519fac3aa492ff3dd1ea +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libpython3.9_3.9.2-1+fips_amd64.deb==c405132eacaf059c7c903f853d48be7e +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libssl-dev_1.1.1n-0+deb11u4+fips_amd64.deb==a1833ecb83cddb66ce30bf4b28e48856 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libssl-doc_1.1.1n-0+deb11u4+fips_all.deb==52925c4fd9932ffe78798dd55bdb077e +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/libssl1.1_1.1.1n-0+deb11u4+fips_amd64.deb==65000162eac58235fbf1acab52047ca9 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/openssh-client_8.4p1-5+deb11u1+fips_amd64.deb==bee0e4f52cf8dedd6dac78be18b02400 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/openssh-server_8.4p1-5+deb11u1+fips_amd64.deb==8ac4a8397c8e62d554718f1c8c6f5896 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/openssh-sftp-server_8.4p1-5+deb11u1+fips_amd64.deb==94740a01d5d025df8d99d3e5b7a0b0e9 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/openssl_1.1.1n-0+deb11u4+fips_amd64.deb==2f3040c1dc6230c5dd09994eeaace905 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/python3.9-minimal_3.9.2-1+fips_amd64.deb==27559fec65ac317419222fd19bcf5150 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/python3.9_3.9.2-1+fips_amd64.deb==30be224443931a2a3428aa270b87384a +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/amd64/symcrypt-openssl_0.7_amd64.deb==6d909de22cf4f44879b27a4fc2697cac +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/golang-1.15-doc_1.15.15-1~deb11u4+fips_all.deb==72ead09139135d4ecd91b76c89128567 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/golang-1.15-go_1.15.15-1~deb11u4+fips_arm64.deb==b59f315800ca2ec31de79136dfb8979d +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/golang-1.15-src_1.15.15-1~deb11u4+fips_arm64.deb==0038c68ed1e3adb1b43434af81cff678 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/golang-1.15_1.15.15-1~deb11u4+fips_all.deb==847bc1fc5ce9c8ebae5176947ab34d30 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libk5crypto3_1.18.3-6+deb11u1+fips_arm64.deb==0bb2a2d23f73e882d91b2e256aad08f6 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libpython3.9-minimal_3.9.2-1+fips_arm64.deb==870a96b0d9d7fe753d495ad6574e4c03 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libpython3.9-stdlib_3.9.2-1+fips_arm64.deb==eb8bb0d3806adbc987ec300e221a3baf +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libpython3.9_3.9.2-1+fips_arm64.deb==edae5c269e2c401873e7cff3d4f93a7a +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libssl-dev_1.1.1n-0+deb11u4+fips_arm64.deb==56aed9e3cef3692a36129598bd9871d6 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libssl-doc_1.1.1n-0+deb11u4+fips_all.deb==52925c4fd9932ffe78798dd55bdb077e +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/libssl1.1_1.1.1n-0+deb11u4+fips_arm64.deb==5c760faf80f6f4efc71e255b2e0774fc +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/openssh-client_8.4p1-5+deb11u1+fips_arm64.deb==ce762b1730871a72bc423c97444342ad +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/openssh-server_8.4p1-5+deb11u1+fips_arm64.deb==c943526cf7317d4c0d05005db47b6992 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/openssh-sftp-server_8.4p1-5+deb11u1+fips_arm64.deb==4e360e97ed3f0eaead7a8ef79fa4f3d7 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/openssl_1.1.1n-0+deb11u4+fips_arm64.deb==68e32a58e12f960ce163decc0f756906 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/python3.9-minimal_3.9.2-1+fips_arm64.deb==add04c26a72788957951d8581b5c8e2a +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/python3.9_3.9.2-1+fips_arm64.deb==4d6307dabcd3060235d6188cfa0346b8 +https://sonicstorage.blob.core.windows.net/public/fips/bullseye/0.7/arm64/symcrypt-openssl_0.7_arm64.deb==f25f73823a0f22805b8e0be43bef190f +https://sonicstorage.blob.core.windows.net/public/sai/bcmpai/REL_3.8/3.8/libsaibroncos_3.8_amd64.deb==f7c3f0ed8c97c2572e3c2e59faaae4a8 +https://sonicstorage.blob.core.windows.net/public/sai/bcmsai/REL_7.0_SAI_1.11/7.1.111.1/libsaibcm-dev_7.1.111.1_amd64.deb==894abd7658c3832962db4eaea1a40fd1 +https://sonicstorage.blob.core.windows.net/public/sai/bcmsai/REL_7.0_SAI_1.11/7.1.111.1/libsaibcm_7.1.111.1_amd64.deb==23d3292d27e1c39cee89575f2a91e18c +https://sonicstorage.blob.core.windows.net/public/sai/bcmsai/REL_7.0_SAI_1.11/7.1.111.1/libsaibcm_dnx_7.1.111.1_amd64.deb==458f404279c3f30ec71de6bad7373323 +https://storage.googleapis.com/golang/go1.14.2.linux-amd64.tar.gz==856d248e3ea8a287d13e5f6afd086282 +https://storage.googleapis.com/golang/go1.14.2.linux-arm64.tar.gz==e5f79b403701e00f20d13f0ea561b064 +https://storage.googleapis.com/golang/go1.14.2.linux-armv6l.tar.gz==04467414e783b18de4278e9f24baf4be diff --git a/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye new file mode 100644 index 000000000000..474ef737c501 --- /dev/null +++ b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye @@ -0,0 +1,80 @@ +ca-certificates==20210119 +curl==7.74.0-1.3+deb11u7 +iproute2==5.10.0-4 +jq==1.6-2.1 +less==551-2 +libatomic1==10.2.1-6 +libbpf0==1:0.3-2 +libbrotli1==1.0.9-2+b2 +libbsd0==0.11.3-1 +libcap2==1:2.44-1 +libcap2-bin==1:2.44-1 +libcurl4==7.74.0-1.3+deb11u7 +libdaemon0==0.14-7.1 +libdbus-1-3==1.12.24-0+deb11u1 +libelf1==0.183-1 +libestr0==0.1.10-2.1+b1 +libexpat1==2.2.10-2+deb11u5 +libfastjson4==0.99.9-1 +libgdbm-compat4==1.19-2 +libgdbm6==1.19-2 +libjansson4==2.13.1-1.1 +libjemalloc2==5.2.1-3 +libjq1==1.6-2.1 +libk5crypto3==1.18.3-6+deb11u1+fips +libldap-2.4-2==2.4.57+dfsg-3+deb11u1 +liblognorm5==2.0.5-1.1 +liblua5.1-0==5.1.5-8.1+b3 +liblzf1==3.6-3 +libmd0==1.0.3-3 +libmnl0==1.0.4-3 +libmpdec3==2.5.1-1 +libncurses6==6.2+20201114-2 +libncursesw6==6.2+20201114-2 +libnghttp2-14==1.43.0-1 +libnorm1==1.5.9+dfsg-2 +libonig5==6.9.6-1.1 +libperl5.32==5.32.1-4+deb11u2 +libpgm-5.3-0==5.3.128~dfsg-2 +libpopt0==1.18-2 +libprocps8==2:3.3.17-5 +libpsl5==0.21.0-1.2 +libpython3-stdlib==3.9.2-3 +libpython3.9-minimal==3.9.2-1 +libpython3.9-stdlib==3.9.2-1 +libreadline8==8.1-1 +librtmp1==2.4+20151223.gitfa8646d.1-2+b2 +libsasl2-2==2.1.27+dfsg-2.1+deb11u1 +libsasl2-modules-db==2.1.27+dfsg-2.1+deb11u1 +libsodium23==1.0.18-1 +libsqlite3-0==3.34.1-3 +libssh2-1==1.9.0-2 +libssl-dev==1.1.1n-0+deb11u4+fips +libssl1.1==1.1.1n-0+deb11u4+fips +libwrap0==7.6.q-31 +libxtables12==1.8.7-1 +libzmq5==4.3.4-1 +lua-bitop==1.0.2-5 +lua-cjson==2.1.0+dfsg-2.1 +media-types==4.0.0 +net-tools==1.60+git20181103.0eebece-1 +openssl==1.1.1n-0+deb11u4+fips +perl==5.32.1-4+deb11u2 +perl-modules-5.32==5.32.1-4+deb11u2 +procps==2:3.3.17-5 +python-is-python3==3.9.2-1 +python3==3.9.2-3 +python3-distutils==3.9.2-1 +python3-lib2to3==3.9.2-1 +python3-minimal==3.9.2-3 +python3.9==3.9.2-1 +python3.9-minimal==3.9.2-1 +readline-common==8.1-1 +redis-tools==5:6.0.16-1+deb11u2 +rsync==3.2.3-4+deb11u1 +rsyslog==8.2302.0-1~bpo11+1 +socat==1.7.4.1-3 +symcrypt-openssl==0.1 +vim-common==2:8.2.2434-3+deb11u1 +vim-tiny==2:8.2.2434-3+deb11u1 +xxd==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye-armhf b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..20da6b512d86 --- /dev/null +++ b/files/build/versions/dockers/docker-base-bullseye/versions-deb-bullseye-armhf @@ -0,0 +1 @@ +openssl==1.1.1n-0+deb11u4 diff --git a/files/build/versions/dockers/docker-base-bullseye/versions-py3 b/files/build/versions/dockers/docker-base-bullseye/versions-py3 new file mode 100644 index 000000000000..a361f59bc20d --- /dev/null +++ b/files/build/versions/dockers/docker-base-bullseye/versions-py3 @@ -0,0 +1,9 @@ +j2cli==0.3.10 +jinja2==3.1.2 +markupsafe==2.1.2 +pip==23.0.1 +setuptools==49.6.0 +supervisor==4.2.1 +supervisord-dependent-startup==1.4.0 +toposort==1.10 +wheel==0.35.1 diff --git a/files/build/versions/dockers/docker-base-buster/versions-deb-buster b/files/build/versions/dockers/docker-base-buster/versions-deb-buster new file mode 100644 index 000000000000..1b2a7d3d3cec --- /dev/null +++ b/files/build/versions/dockers/docker-base-buster/versions-deb-buster @@ -0,0 +1,71 @@ +ca-certificates==20200601~deb10u2 +curl==7.64.0-4+deb10u5 +jq==1.5+dfsg-2+b1 +less==487-0.1+b1 +libatomic1==8.3.0-6 +libcurl4==7.64.0-4+deb10u5 +libdaemon0==0.14-7 +libdbus-1-3==1.12.24-0+deb10u1 +libestr0==0.1.10-2.1 +libexpat1==2.2.6-2+deb10u6 +libfastjson4==0.99.8-2 +libgdbm-compat4==1.18.1-4 +libgdbm6==1.18.1-4 +libgssapi-krb5-2==1.17-3+deb10u5 +libjansson4==2.12-1 +libjemalloc2==5.1.0-3 +libjq1==1.5+dfsg-2+b1 +libk5crypto3==1.17-3+deb10u5 +libkeyutils1==1.6-6 +libkrb5-3==1.17-3+deb10u5 +libkrb5support0==1.17-3+deb10u5 +libldap-2.4-2==2.4.47+dfsg-3+deb10u7 +libldap-common==2.4.47+dfsg-3+deb10u7 +liblognorm5==2.0.5-1 +liblua5.1-0==5.1.5-8.1+b2 +libmpdec2==2.4.2-2 +libncurses6==6.1+20181013-2+deb10u3 +libnghttp2-14==1.36.0-2+deb10u1 +libnorm1==1.5.8+dfsg2-1 +libonig5==6.9.1-1 +libperl5.28==5.28.1-6+deb10u1 +libpgm-5.2-0==5.2.122~dfsg-3 +libpopt0==1.16-12 +libprocps7==2:3.3.15-2 +libpsl5==0.20.2-2 +libpython3-stdlib==3.7.3-1 +libpython3.7-minimal==3.7.3-2+deb10u4 +libpython3.7-stdlib==3.7.3-2+deb10u4 +libreadline7==7.0-5 +librtmp1==2.4+20151223.gitfa8646d.1-2 +libsasl2-2==2.1.27+dfsg-1+deb10u2 +libsasl2-modules-db==2.1.27+dfsg-1+deb10u2 +libsodium23==1.0.17-1 +libsqlite3-0==3.27.2-3+deb10u2 +libssh2-1==1.8.0-2.1 +libssl1.1==1.1.1n-0+deb10u4 +libwrap0==7.6.q-28 +libzmq5==4.3.1-4+deb10u2 +lsb-base==10.2019051400 +lua-bitop==1.0.2-5 +lua-cjson==2.1.0+dfsg-2.1 +mime-support==3.62 +net-tools==1.60+git20180626.aebd88e-1 +openssl==1.1.1n-0+deb10u4 +perl==5.28.1-6+deb10u1 +perl-modules-5.28==5.28.1-6+deb10u1 +procps==2:3.3.15-2 +python3==3.7.3-1 +python3-distutils==3.7.3-1 +python3-lib2to3==3.7.3-1 +python3-minimal==3.7.3-1 +python3.7==3.7.3-2+deb10u4 +python3.7-minimal==3.7.3-2+deb10u4 +readline-common==7.0-5 +redis-tools==5:6.0.6-1~bpo10+1 +rsync==3.1.3-6 +rsyslog==8.1901.0-1+deb10u2 +socat==1.7.4.1-3 +vim-common==2:8.1.0875-5+deb10u4 +vim-tiny==2:8.1.0875-5+deb10u4 +xxd==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-base-buster/versions-py3 b/files/build/versions/dockers/docker-base-buster/versions-py3 new file mode 100644 index 000000000000..a361f59bc20d --- /dev/null +++ b/files/build/versions/dockers/docker-base-buster/versions-py3 @@ -0,0 +1,9 @@ +j2cli==0.3.10 +jinja2==3.1.2 +markupsafe==2.1.2 +pip==23.0.1 +setuptools==49.6.0 +supervisor==4.2.1 +supervisord-dependent-startup==1.4.0 +toposort==1.10 +wheel==0.35.1 diff --git a/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye new file mode 100644 index 000000000000..39e3e32b2dd2 --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye @@ -0,0 +1,18 @@ +apt-utils==2.2.4 +dpkg-dev==1.20.12 +libboost-serialization1.74.0==1.74.0-9 +libhiredis0.14==0.14.0-3~bpo9+1 +libjs-jquery==3.5.1+dfsg+~3.5.5-7 +libnl-3-200==3.5.0-1 +libnl-cli-3-200==3.5.0-1 +libnl-genl-3-200==3.5.0-1 +libnl-nf-3-200==3.5.0-1 +libnl-route-3-200==3.5.0-1 +libpython3.9==3.9.2-1 +libswsscommon==1.0.0 +libyang==1.0.73 +libyang-cpp==1.0.73 +python3-swsscommon==1.0.0 +python3-yang==1.0.73 +sonic-db-cli==1.0.0 +sonic-eventd==1.0.0-0 diff --git a/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-arm64 b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..505ac3265469 --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-arm64 @@ -0,0 +1,14 @@ +icu-devtools==67.1-7 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libicu-dev==67.1-7 +libicu67==67.1-7 +libnsl-dev==1.3.0-2 +libtirpc-dev==1.3.1-1+deb11u1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxml2-dev==2.9.10+dfsg-6.7+deb11u3 +libxslt1-dev==1.1.34-4+deb11u1 +libxslt1.1==1.1.34-4+deb11u1 +linux-libc-dev==5.10.162-1 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-armhf b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..505ac3265469 --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-bullseye/versions-deb-bullseye-armhf @@ -0,0 +1,14 @@ +icu-devtools==67.1-7 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libicu-dev==67.1-7 +libicu67==67.1-7 +libnsl-dev==1.3.0-2 +libtirpc-dev==1.3.1-1+deb11u1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxml2-dev==2.9.10+dfsg-6.7+deb11u3 +libxslt1-dev==1.1.34-4+deb11u1 +libxslt1.1==1.1.34-4+deb11u1 +linux-libc-dev==5.10.162-1 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 b/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 new file mode 100644 index 000000000000..5c7e31dc52fc --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-bullseye/versions-py3 @@ -0,0 +1,14 @@ +bitarray==1.5.3 +ijson==2.6.1 +ipaddress==1.0.23 +jsondiff==2.0.0 +lxml==4.9.1 +natsort==6.2.1 +netaddr==0.8.0 +pyang==2.5.3 +pyangbind==0.8.1 +pyyaml==5.4.1 +regex==2022.10.31 +six==1.16.0 +tabulate==0.8.2 +xmltodict==0.12.0 diff --git a/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster new file mode 100644 index 000000000000..47ee62bb348e --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster @@ -0,0 +1,19 @@ +apt-utils==1.8.2.3 +bzip2==1.0.6-9.2~deb10u2 +dpkg-dev==1.19.8 +libapt-inst2.0==1.8.2.3 +libboost-serialization1.71.0==1.71.0-6~bpo10+1 +libhiredis0.14==0.14.0-3~bpo9+1 +libnl-3-200==3.5.0-1 +libnl-cli-3-200==3.5.0-1 +libnl-genl-3-200==3.5.0-1 +libnl-nf-3-200==3.5.0-1 +libnl-route-3-200==3.5.0-1 +libpython3.7==3.7.3-2+deb10u4 +libswsscommon==1.0.0 +libyang==1.0.73 +libyang-cpp==1.0.73 +python3-swsscommon==1.0.0 +python3-yang==1.0.73 +sonic-db-cli==1.0.0 +xz-utils==5.2.4-1+deb10u1 diff --git a/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-arm64 b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-arm64 new file mode 100644 index 000000000000..08ccce11d685 --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-arm64 @@ -0,0 +1,14 @@ +icu-devtools==63.1-6+deb10u3 +libc-dev-bin==2.28-10+deb10u2 +libc6-dev==2.28-10+deb10u2 +libdpkg-perl==1.19.8 +libglib2.0-0==2.58.3-2+deb10u4 +libicu-dev==63.1-6+deb10u3 +libicu63==63.1-6+deb10u3 +libxml2==2.9.4+dfsg1-7+deb10u5 +libxml2-dev==2.9.4+dfsg1-7+deb10u5 +libxslt1-dev==1.1.32-2.2~deb10u2 +libxslt1.1==1.1.32-2.2~deb10u2 +linux-libc-dev==4.19.269-1 +pkg-config==0.29-6 +zlib1g-dev==1:1.2.11.dfsg-1+deb10u2 diff --git a/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-armhf b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-armhf new file mode 100644 index 000000000000..08ccce11d685 --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-buster/versions-deb-buster-armhf @@ -0,0 +1,14 @@ +icu-devtools==63.1-6+deb10u3 +libc-dev-bin==2.28-10+deb10u2 +libc6-dev==2.28-10+deb10u2 +libdpkg-perl==1.19.8 +libglib2.0-0==2.58.3-2+deb10u4 +libicu-dev==63.1-6+deb10u3 +libicu63==63.1-6+deb10u3 +libxml2==2.9.4+dfsg1-7+deb10u5 +libxml2-dev==2.9.4+dfsg1-7+deb10u5 +libxslt1-dev==1.1.32-2.2~deb10u2 +libxslt1.1==1.1.32-2.2~deb10u2 +linux-libc-dev==4.19.269-1 +pkg-config==0.29-6 +zlib1g-dev==1:1.2.11.dfsg-1+deb10u2 diff --git a/files/build/versions/dockers/docker-config-engine-buster/versions-py3 b/files/build/versions/dockers/docker-config-engine-buster/versions-py3 new file mode 100644 index 000000000000..5c7e31dc52fc --- /dev/null +++ b/files/build/versions/dockers/docker-config-engine-buster/versions-py3 @@ -0,0 +1,14 @@ +bitarray==1.5.3 +ijson==2.6.1 +ipaddress==1.0.23 +jsondiff==2.0.0 +lxml==4.9.1 +natsort==6.2.1 +netaddr==0.8.0 +pyang==2.5.3 +pyangbind==0.8.1 +pyyaml==5.4.1 +regex==2022.10.31 +six==1.16.0 +tabulate==0.8.2 +xmltodict==0.12.0 diff --git a/files/build/versions/dockers/docker-database/versions-deb-bullseye b/files/build/versions/dockers/docker-database/versions-deb-bullseye new file mode 100644 index 000000000000..7eaebfb1714b --- /dev/null +++ b/files/build/versions/dockers/docker-database/versions-deb-bullseye @@ -0,0 +1,26 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +redis-server==5:6.0.16-1+deb11u2 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye b/files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye new file mode 100644 index 000000000000..87e514e61d4c --- /dev/null +++ b/files/build/versions/dockers/docker-dhcp-relay/versions-deb-bullseye @@ -0,0 +1,40 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +isc-dhcp-relay==4.4.1-2.3+deb11u1 +isc-dhcp-relay-dbgsym==4.4.1-2.3+deb11u1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libboost-thread1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdns-export1110==1:9.11.19+dfsg-2.1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libevent-2.1-7==2.1.12-stable-1 +libexplain51==1.4.D001-11 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libirs-export161==1:9.11.19+dfsg-2.1 +libisc-export1105==1:9.11.19+dfsg-2.1 +libisccfg-export163==1:9.11.19+dfsg-2.1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +lsof==4.93.2+dfsg-1.1 +openssh-client==1:8.4p1-5+deb11u1 +sonic-dhcp6relay==1.0.0-0 +sonic-dhcp6relay-dbgsym==1.0.0-0 +sonic-dhcpmon==1.0.0-0 +sonic-dhcpmon-dbgsym==1.0.0-0 +sonic-rsyslog-plugin==1.0.0-0 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-eventd/versions-deb-bullseye b/files/build/versions/dockers/docker-eventd/versions-deb-bullseye new file mode 100644 index 000000000000..aa38871d7122 --- /dev/null +++ b/files/build/versions/dockers/docker-eventd/versions-deb-bullseye @@ -0,0 +1,26 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sonic-eventd-dbgsym==1.0.0-0 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye b/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye new file mode 100644 index 000000000000..1c4d2096e4e9 --- /dev/null +++ b/files/build/versions/dockers/docker-fpm-frr/versions-deb-bullseye @@ -0,0 +1,45 @@ +cron==3.0pl1-137 +frr==8.2.2-sonic-0 +frr-dbgsym==8.2.2-sonic-0 +frr-snmp==8.2.2-sonic-0 +frr-snmp-dbgsym==8.2.2-sonic-0 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libc-ares2==1.17.1-1+deb11u1 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libjson-c5==0.15-2 +libmpfr6==4.1.0-3 +libpci3==1:3.7.0-5 +libsensors-config==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libsnmp-base==5.9+dfsg-4+deb11u1 +libsnmp40==5.9+dfsg-4+deb11u1 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +libyang2==2.0.112-6 +libyang2-dbgsym==2.0.112-6 +logrotate==3.18.0-2+deb11u1 +lsof==4.93.2+dfsg-1.1 +openssh-client==1:8.4p1-5+deb11u1 +pci.ids==0.0~2021.02.08-1 +sensible-utils==0.0.14 +sonic-rsyslog-plugin==1.0.0-0 +sshpass==1.09-1+b1 +strace==5.10-1 +swss-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-fpm-frr/versions-py3 b/files/build/versions/dockers/docker-fpm-frr/versions-py3 new file mode 100644 index 000000000000..bcc3ffc1e6fa --- /dev/null +++ b/files/build/versions/dockers/docker-fpm-frr/versions-py3 @@ -0,0 +1 @@ +zipp==1.2.0 diff --git a/files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye b/files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye new file mode 100644 index 000000000000..20d6577bfa8d --- /dev/null +++ b/files/build/versions/dockers/docker-gbsyncd-broncos/versions-deb-bullseye @@ -0,0 +1,39 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcbor0==0.5.0+dfsg-2 +libcrypt-dev==1:4.4.18-4 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libprotobuf-dev==3.12.4-1 +libprotobuf-lite23==3.12.4-1 +libprotobuf23==3.12.4-1 +libsaibroncos==3.8 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libtirpc-dev==1.3.1-1+deb11u1 +libunwind8==1.3.2-2 +linux-libc-dev==5.10.162-1 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye b/files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye new file mode 100644 index 000000000000..84573f1eb314 --- /dev/null +++ b/files/build/versions/dockers/docker-gbsyncd-credo/versions-deb-bullseye @@ -0,0 +1,30 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsaicredo==0.8.2 +libsaicredo-owl==0.8.2 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye b/files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye new file mode 100644 index 000000000000..2fe98116d51d --- /dev/null +++ b/files/build/versions/dockers/docker-gbsyncd-vs/versions-deb-bullseye @@ -0,0 +1,33 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsaimetadata==1.0.0 +libsaimetadata-dbg==1.0.0 +libsairedis==1.0.0 +libsairedis-dbg==1.0.0 +libsaivs==1.0.0 +libsaivs-dbg==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd-vs==1.0.0 +syncd-vs-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-lldp/versions-deb-bullseye b/files/build/versions/dockers/docker-lldp/versions-deb-bullseye new file mode 100644 index 000000000000..4fe4a5992dca --- /dev/null +++ b/files/build/versions/dockers/docker-lldp/versions-deb-bullseye @@ -0,0 +1,35 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libevent-2.1-7==2.1.12-stable-1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libpci3==1:3.7.0-5 +libsensors-config==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libsnmp-base==5.9+dfsg-4+deb11u1 +libsnmp40==5.9+dfsg-4+deb11u1 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +lldpd==1.0.4-1 +lldpd-dbgsym==1.0.4-1 +openssh-client==1:8.4p1-5+deb11u1 +pci.ids==0.0~2021.02.08-1 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-macsec/versions-deb-bullseye b/files/build/versions/dockers/docker-macsec/versions-deb-bullseye new file mode 100644 index 000000000000..5f51e3838856 --- /dev/null +++ b/files/build/versions/dockers/docker-macsec/versions-deb-bullseye @@ -0,0 +1,34 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libpcsclite1==1.9.1-1 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libteam5==1.30-1 +libteamdctl0==1.30-1 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +swss==1.0.0 +swss-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 +wpasupplicant==2:2.9.0-14 +wpasupplicant-dbgsym==2:2.9.0-14 diff --git a/files/build/versions/dockers/docker-mux/versions-deb-bullseye b/files/build/versions/dockers/docker-mux/versions-deb-bullseye new file mode 100644 index 000000000000..b827eee958ac --- /dev/null +++ b/files/build/versions/dockers/docker-mux/versions-deb-bullseye @@ -0,0 +1,31 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-filesystem1.74.0==1.74.0-9 +libboost-log1.74.0==1.74.0-9 +libboost-program-options1.74.0==1.74.0-9 +libboost-regex1.74.0==1.74.0-9 +libboost-thread1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sonic-linkmgrd==1.0.0-1 +sonic-linkmgrd-dbgsym==1.0.0-1 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-nat/versions-deb-buster b/files/build/versions/dockers/docker-nat/versions-deb-buster new file mode 100644 index 000000000000..867f8616d8d6 --- /dev/null +++ b/files/build/versions/dockers/docker-nat/versions-deb-buster @@ -0,0 +1,27 @@ +bridge-utils==1.6-2 +conntrack==1:1.4.5-2 +gdb==8.2.1-2+b3 +gdbserver==8.2.1-2+b3 +iptables==1.8.2-4 +libbabeltrace1==1.5.6-2+deb10u1 +libbsd0==0.9.1-2+deb10u1 +libdw1==0.176-1.1 +libedit2==3.1-20181209-1 +libglib2.0-0==2.58.3-2+deb10u4 +libgpm2==1.20.7-5 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libip4tc0==1.8.2-4 +libip6tc0==1.8.2-4 +libipt2==2.0-2 +libiptc0==1.8.2-4 +libnetfilter-conntrack3==1.0.7-1 +libnfnetlink0==1.0.1-3+b1 +libnftnl11==1.1.2-2 +libswsscommon-dbg==1.0.0 +libunwind8==1.2.1-10~deb10u1 +openssh-client==1:7.9p1-10+deb10u2 +sshpass==1.06-1 +strace==4.26-0.2 +swss-dbg==1.0.0 +vim==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-orchagent/versions-deb-bullseye b/files/build/versions/dockers/docker-orchagent/versions-deb-bullseye new file mode 100644 index 000000000000..aa10342fcf62 --- /dev/null +++ b/files/build/versions/dockers/docker-orchagent/versions-deb-bullseye @@ -0,0 +1,43 @@ +arping==2.21-2 +bridge-utils==1.7-1 +conntrack==1:1.4.6-2 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +ifupdown==0.8.36 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libnet1==1.1.6+dfsg-3.1 +libnetfilter-conntrack3==1.0.8-3 +libnfnetlink0==1.0.1-3+b1 +libpcap0.8==1.10.0-2 +libpci3==1:3.7.0-5 +libsairedis-dbg==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +ndisc6==1.0.4-2 +ndppd==0.2.5-6 +openssh-client==1:8.4p1-5+deb11u1 +pci.ids==0.0~2021.02.08-1 +pciutils==1:3.7.0-5 +sonic-rsyslog-plugin==1.0.0-0 +sshpass==1.09-1+b1 +strace==5.10-1 +swss-dbg==1.0.0 +tcpdump==4.99.0-2+deb11u1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-orchagent/versions-py3 b/files/build/versions/dockers/docker-orchagent/versions-py3 new file mode 100644 index 000000000000..197d40489fb2 --- /dev/null +++ b/files/build/versions/dockers/docker-orchagent/versions-py3 @@ -0,0 +1,2 @@ +netifaces==0.10.9 +pyroute2==0.5.14 diff --git a/files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye b/files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye new file mode 100644 index 000000000000..63a235b8a176 --- /dev/null +++ b/files/build/versions/dockers/docker-platform-monitor/versions-deb-bullseye @@ -0,0 +1,101 @@ +applibs==1.mlnx.4.5.4150 +applibs-dev==1.mlnx.4.5.4150 +dmidecode==3.3-2 +ethtool==1:5.9-1 +fancontrol==1:3.6.0-7 +fontconfig==2.13.1-4.2 +fontconfig-config==2.13.1-4.2 +fonts-dejavu-core==2.37-2 +freeipmi-common==1.6.6-4+deb11u1 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +i2c-tools==4.2-1+b1 +ipmitool==1.8.18-10.1 +iputils-ping==3:20210202-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcairo2==1.16.0-5 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdatrie1==0.2.13-1 +libdbi1==0.9.0-6 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libfontconfig1==2.13.1-4.2 +libfreeipmi17==1.6.6-4+deb11u1 +libfreetype6==2.10.4+dfsg-1+deb11u1 +libfribidi0==1.0.8-2+deb11u1 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libgraphite2-3==1.3.14-1 +libharfbuzz0b==2.7.4-1 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libi2c0==4.2-1+b1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libpango-1.0-0==1.46.2-3 +libpangocairo-1.0-0==1.46.2-3 +libpangoft2-1.0-0==1.46.2-3 +libpci3==1:3.7.0-5 +libpixman-1-0==0.40.0-1.1~deb11u1 +libpng16-16==1.6.37-3 +librrd-dev==1.7.2-3+b7 +librrd8==1.7.2-3+b7 +libsensors-config==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libsensors5-dbgsym==1:3.6.0-7 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libthai-data==0.1.28-3 +libthai0==0.1.28-3 +libunwind8==1.3.2-2 +libx11-6==2:1.7.2-1 +libx11-data==2:1.7.2-1 +libxau6==1:1.0.9-1 +libxcb-render0==1.14-3 +libxcb-shm0==1.14-3 +libxcb1==1.14-3 +libxdmcp6==1:1.1.2-3 +libxext6==2:1.3.3-1.1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxrender1==1:0.9.10-1 +lm-sensors==1:3.6.0-7 +lm-sensors-dbgsym==1:3.6.0-7 +mft==4.21.0-100 +openssh-client==1:8.4p1-5+deb11u1 +pci.ids==0.0~2021.02.08-1 +pciutils==1:3.7.0-5 +psmisc==23.4-2 +python-sdk-api==1.mlnx.4.5.4150 +python3-attr==20.3.0-1 +python3-importlib-metadata==1.6.0-2 +python3-jsonschema==3.2.0-3 +python3-more-itertools==4.2.0-3 +python3-pkg-resources==52.0.0-4 +python3-pyrsistent==0.15.5-1+b3 +python3-setuptools==52.0.0-4 +python3-six==1.16.0-2 +python3-smbus==4.2-1+b1 +python3-zipp==1.0.0-3 +rrdtool==1.7.2-3+b7 +sensible-utils==0.0.14 +sensord==1:3.6.0-7 +sensord-dbgsym==1:3.6.0-7 +smartmontools==7.2-1 +sshpass==1.09-1+b1 +strace==5.10-1 +sx-complib==1.mlnx.4.5.4150 +sx-complib-dev==1.mlnx.4.5.4150 +sx-gen-utils==1.mlnx.4.5.4150 +sx-gen-utils-dev==1.mlnx.4.5.4150 +sxd-libs==1.mlnx.4.5.4150 +sxd-libs-dev==1.mlnx.4.5.4150 +ucf==3.0043 +udev==247.3-7+deb11u1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-platform-monitor/versions-py3 b/files/build/versions/dockers/docker-platform-monitor/versions-py3 new file mode 100644 index 000000000000..73480e5c379e --- /dev/null +++ b/files/build/versions/dockers/docker-platform-monitor/versions-py3 @@ -0,0 +1,21 @@ +async-timeout==4.0.2 +attrs==20.3.0 +certifi==2022.12.7 +charset-normalizer==3.0.1 +grpcio==1.39.0 +grpcio-tools==1.39.0 +guacamole==0.9.2 +idna==3.4 +importlib-metadata==1.6.0 +jsonschema==2.6.0 +libpci==0.2 +more-itertools==4.2.0 +netifaces==0.11.0 +protobuf==3.20.3 +pyrsistent==0.15.5 +python_sdk_api==4.5.4150 +redis==4.5.1 +requests==2.28.2 +thrift==0.13.0 +urllib3==1.26.14 +zipp==1.0.0 diff --git a/files/build/versions/dockers/docker-ptf-sai/versions-deb-buster b/files/build/versions/dockers/docker-ptf-sai/versions-deb-buster new file mode 100644 index 000000000000..5486258072d5 --- /dev/null +++ b/files/build/versions/dockers/docker-ptf-sai/versions-deb-buster @@ -0,0 +1,3 @@ +libboost-atomic1.67.0==1.67.0-13+deb10u1 +libthrift0==0.14.1 +python3-thrift==0.14.1 diff --git a/files/build/versions/dockers/docker-ptf-sai/versions-py3 b/files/build/versions/dockers/docker-ptf-sai/versions-py3 new file mode 100644 index 000000000000..b1a0ce6ee356 --- /dev/null +++ b/files/build/versions/dockers/docker-ptf-sai/versions-py3 @@ -0,0 +1,12 @@ +crc16==0.1.1 +getmac==0.9.2 +netifaces==0.11.0 +packet-helper==0.0.1 +psutil==5.9.4 +ptf==0.9.3 +pyperclip==1.8.2 +pysubnettree==0.35 +scapy-helper==0.14.8 +tabulate==0.8.10 +thrift==0.14.1 +xmlrunner==1.7.7 diff --git a/files/build/versions/dockers/docker-ptf/versions-deb-buster b/files/build/versions/dockers/docker-ptf/versions-deb-buster new file mode 100644 index 000000000000..e8ac9d645db2 --- /dev/null +++ b/files/build/versions/dockers/docker-ptf/versions-deb-buster @@ -0,0 +1,492 @@ +arping==2.19-6 +autoconf==2.69-11 +automake==1:1.16.1-4 +autotools-dev==20180224.1 +binutils==2.31.1-16 +binutils-common==2.31.1-16 +binutils-x86-64-linux-gnu==2.31.1-16 +blt==2.5.3+dfsg-4 +bridge-utils==1.6-2 +bsd-mailx==8.1.2-0.20180807cvs-1 +build-essential==12.6 +bzip2==1.0.6-9.2~deb10u2 +ca-certificates==20200601~deb10u2 +cmake==3.13.4-1 +cmake-data==3.13.4-1 +cpp==4:8.3.0-1 +cpp-8==8.3.0-6 +cron==3.0pl1-134+deb10u1 +curl==7.64.0-4+deb10u5 +dbus==1.12.24-0+deb10u1 +dh-python==3.20190308 +dirmngr==2.2.12-1+deb10u2 +dmsetup==2:1.02.155-3 +dpkg-dev==1.19.8 +ethtool==1:4.19-1 +exim4-base==4.92-8+deb10u7 +exim4-config==4.92-8+deb10u7 +exim4-daemon-light==4.92-8+deb10u7 +fakeroot==1.23-1 +file==1:5.35-4+deb10u2 +fontconfig==2.13.1-2 +fontconfig-config==2.13.1-2 +fonts-droid-fallback==1:6.0.1r16-1.1 +fonts-liberation==1:1.07.4-9 +fonts-lmodern==2.004.5-6 +fonts-lyx==2.3.2-1 +fonts-noto-mono==20181227-1 +g++==4:8.3.0-1 +g++-8==8.3.0-6 +gcc==4:8.3.0-1 +gcc-8==8.3.0-6 +gdb==8.2.1-2+b3 +gir1.2-glib-2.0==1.58.3-2 +git==1:2.20.1-2+deb10u8 +git-man==1:2.20.1-2+deb10u8 +gnupg==2.2.12-1+deb10u2 +gnupg-l10n==2.2.12-1+deb10u2 +gnupg-utils==2.2.12-1+deb10u2 +gpg==2.2.12-1+deb10u2 +gpg-agent==2.2.12-1+deb10u2 +gpg-wks-client==2.2.12-1+deb10u2 +gpg-wks-server==2.2.12-1+deb10u2 +gpgconf==2.2.12-1+deb10u2 +gpgsm==2.2.12-1+deb10u2 +graphviz==2.40.1-6+deb10u1 +hping3==3.a2.ds2-7 +ipython3==5.8.0-1+deb10u1 +javascript-common==11 +krb5-locales==1.17-3+deb10u5 +less==487-0.1+b1 +libalgorithm-diff-perl==1.19.03-2 +libalgorithm-diff-xs-perl==0.04-5+b1 +libalgorithm-merge-perl==0.08-3 +libapparmor1==2.13.2-10 +libarchive13==3.3.3-4+deb10u3 +libargon2-1==0~20171227-0.2 +libasan5==8.3.0-6 +libassuan0==2.5.2-1 +libatomic1==8.3.0-6 +libauthen-sasl-perl==2.1600-1 +libavahi-client3==0.7-4+deb10u1 +libavahi-common-data==0.7-4+deb10u1 +libavahi-common3==0.7-4+deb10u1 +libbabeltrace1==1.5.6-2+deb10u1 +libbinutils==2.31.1-16 +libblas3==3.8.0-2 +libboost-atomic1.71.0==1.71.0-6~bpo10+1 +libbrotli1==1.0.7-2+deb10u1 +libbsd0==0.9.1-2+deb10u1 +libc-dev-bin==2.28-10+deb10u2 +libc6-dbg==2.28-10+deb10u2 +libc6-dev==2.28-10+deb10u2 +libcairo2==1.16.0-4+deb10u1 +libcc1-0==8.3.0-6 +libcdt5==2.40.1-6+deb10u1 +libcgraph6==2.40.1-6+deb10u1 +libcryptsetup12==2:2.1.0-5+deb10u2 +libcups2==2.2.10-6+deb10u6 +libcupsfilters1==1.21.6-5 +libcupsimage2==2.2.10-6+deb10u6 +libcurl3-gnutls==7.64.0-4+deb10u5 +libcurl4==7.64.0-4+deb10u5 +libdaemon0==0.14-7 +libdata-dump-perl==1.23-1 +libdatrie1==0.2.12-2 +libdbus-1-3==1.12.24-0+deb10u1 +libdevmapper1.02.1==2:1.02.155-3 +libdouble-conversion1==3.1.0-3 +libdpkg-perl==1.19.8 +libdrm-amdgpu1==2.4.97-1 +libdrm-common==2.4.97-1 +libdrm-intel1==2.4.97-1 +libdrm-nouveau2==2.4.97-1 +libdrm-radeon1==2.4.97-1 +libdrm2==2.4.97-1 +libdw1==0.176-1.1 +libedit2==3.1-20181209-1 +libencode-locale-perl==1.05-1 +liberror-perl==0.17027-2 +libestr0==0.1.10-2.1 +libevent-2.1-6==2.1.8-stable-4 +libevent-core-2.1-6==2.1.8-stable-4 +libevent-pthreads-2.1-6==2.1.8-stable-4 +libexpat1==2.2.6-2+deb10u6 +libexpat1-dev==2.2.6-2+deb10u6 +libfakeroot==1.23-1 +libfastjson4==0.99.8-2 +libffi-dev==3.2.1-9 +libfile-basedir-perl==0.08-1 +libfile-desktopentry-perl==0.22-1 +libfile-fcntllock-perl==0.22-3+b5 +libfile-listing-perl==6.04-1 +libfile-mimeinfo-perl==0.29-1 +libfont-afm-perl==1.20-2 +libfontconfig1==2.13.1-2 +libfontenc1==1:1.1.3-1+b2 +libfreetype6==2.9.1-3+deb10u3 +libfribidi0==1.0.5-3.1+deb10u2 +libgcc-8-dev==8.3.0-6 +libgd3==2.2.5-5.2 +libgdbm-compat4==1.18.1-4 +libgdbm6==1.18.1-4 +libgfortran5==8.3.0-6 +libgirepository-1.0-1==1.58.3-2 +libgl1==1.1.0-1 +libgl1-mesa-dri==18.3.6-2+deb10u1 +libglapi-mesa==18.3.6-2+deb10u1 +libglib2.0-0==2.58.3-2+deb10u4 +libglib2.0-data==2.58.3-2+deb10u4 +libglvnd0==1.1.0-1 +libglx-mesa0==18.3.6-2+deb10u1 +libglx0==1.1.0-1 +libgnutls-dane0==3.6.7-4+deb10u10 +libgnutls30==3.6.7-4+deb10u10 +libgomp1==8.3.0-6 +libgpm2==1.20.7-5 +libgraphite2-3==1.3.13-7 +libgs9==9.27~dfsg-2+deb10u6 +libgs9-common==9.27~dfsg-2+deb10u6 +libgssapi-krb5-2==1.17-3+deb10u5 +libgts-0.7-5==0.7.6+darcs121130-4 +libgts-bin==0.7.6+darcs121130-4 +libgvc6==2.40.1-6+deb10u1 +libgvpr2==2.40.1-6+deb10u1 +libharfbuzz-icu0==2.3.1-1 +libharfbuzz0b==2.3.1-1 +libhtml-form-perl==6.03-1 +libhtml-format-perl==2.12-1 +libhtml-parser-perl==3.72-3+b3 +libhtml-tagset-perl==3.20-3 +libhtml-tree-perl==5.07-2 +libhttp-cookies-perl==6.04-1 +libhttp-daemon-perl==6.01-3+deb10u1 +libhttp-date-perl==6.02-1 +libhttp-message-perl==6.18-1 +libhttp-negotiate-perl==6.01-1 +libice6==2:1.0.9-2 +libicu63==63.1-6+deb10u3 +libidn11==1.33-2.2 +libijs-0.35==0.35-14 +libimagequant0==2.12.2-1.1 +libio-html-perl==1.001-1 +libio-socket-ssl-perl==2.060-3 +libio-stringy-perl==2.111-3 +libip4tc0==1.8.2-4 +libipc-system-simple-perl==1.25-4 +libipt2==2.0-2 +libisl19==0.20-2 +libitm1==8.3.0-6 +libjansson4==2.12-1 +libjbig0==2.1-3.1+b2 +libjbig2dec0==0.16-1+deb10u1 +libjpeg62-turbo==1:1.5.2-2+deb10u1 +libjs-jquery==3.3.1~dfsg-3+deb10u1 +libjs-jquery-ui==1.12.1+dfsg-5+deb10u1 +libjson-c3==0.12.1+ds-2+deb10u1 +libjsoncpp1==1.7.4-3 +libk5crypto3==1.17-3+deb10u5 +libkeyutils1==1.6-6 +libkmod2==26-1 +libkpathsea6==2018.20181218.49446-1 +libkrb5-3==1.17-3+deb10u5 +libkrb5support0==1.17-3+deb10u5 +libksba8==1.3.5-2+deb10u2 +liblab-gamut1==2.40.1-6+deb10u1 +liblapack3==3.8.0-2 +liblcms2-2==2.9-3 +libldap-2.4-2==2.4.47+dfsg-3+deb10u7 +libldap-common==2.4.47+dfsg-3+deb10u7 +libllvm7==1:7.0.1-8+deb10u2 +liblocale-gettext-perl==1.07-3+b4 +liblockfile-bin==1.14-1.1 +liblockfile1==1.14-1.1 +liblognorm5==2.0.5-1 +liblsan0==8.3.0-6 +libltdl7==2.4.6-9 +liblwp-mediatypes-perl==6.02-1 +liblwp-protocol-https-perl==6.07-2 +libmagic-mgc==1:5.35-4+deb10u2 +libmagic1==1:5.35-4+deb10u2 +libmailtools-perl==2.18-1 +libmpc3==1.1.0-1 +libmpdec2==2.4.2-2 +libmpfr6==4.0.2-1 +libmpx2==8.3.0-6 +libncurses6==6.1+20181013-2+deb10u3 +libnet-dbus-perl==1.1.0-5+b1 +libnet-http-perl==6.18-1 +libnet-smtp-ssl-perl==1.04-1 +libnet-ssleay-perl==1.85-2+deb10u1 +libnet1==1.1.6+dfsg-3.1 +libnghttp2-14==1.36.0-2+deb10u1 +libnl-3-200==3.4.0-1 +libnl-cli-3-200==3.4.0-1 +libnl-genl-3-200==3.4.0-1 +libnl-nf-3-200==3.4.0-1 +libnl-route-3-200==3.4.0-1 +libnpth0==1.6-1 +libnss-systemd==241-7~deb10u8 +libopenjp2-7==2.3.0-2+deb10u2 +libopts25==1:5.18.12-4 +libpam-systemd==241-7~deb10u8 +libpango-1.0-0==1.42.4-8~deb10u1 +libpangocairo-1.0-0==1.42.4-8~deb10u1 +libpangoft2-1.0-0==1.42.4-8~deb10u1 +libpaper-utils==1.1.28 +libpaper1==1.1.28 +libpathplan4==2.40.1-6+deb10u1 +libpcap-dev==1.8.1-6+deb10u1 +libpcap0.8==1.8.1-6+deb10u1 +libpcap0.8-dev==1.8.1-6+deb10u1 +libpciaccess0==0.14-1 +libpcre2-16-0==10.32-5 +libpcre2-8-0==10.32-5 +libperl5.28==5.28.1-6+deb10u1 +libpixman-1-0==0.36.0-1+deb10u1 +libpng16-16==1.6.36-6 +libpopt0==1.16-12 +libpotrace0==1.15-1 +libprocps7==2:3.3.15-2 +libpsl5==0.20.2-2 +libptexenc1==2018.20181218.49446-1 +libpython-dev==2.7.16-1 +libpython-stdlib==2.7.16-1 +libpython2-dev==2.7.16-1 +libpython2-stdlib==2.7.16-1 +libpython2.7==2.7.16-2+deb10u1 +libpython2.7-dev==2.7.16-2+deb10u1 +libpython2.7-minimal==2.7.16-2+deb10u1 +libpython2.7-stdlib==2.7.16-2+deb10u1 +libpython3-dev==3.7.3-1 +libpython3-stdlib==3.7.3-1 +libpython3.7==3.7.3-2+deb10u4 +libpython3.7-dev==3.7.3-2+deb10u4 +libpython3.7-minimal==3.7.3-2+deb10u4 +libpython3.7-stdlib==3.7.3-2+deb10u4 +libqt5core5a==5.11.3+dfsg1-1+deb10u5 +libqt5dbus5==5.11.3+dfsg1-1+deb10u5 +libqt5network5==5.11.3+dfsg1-1+deb10u5 +libquadmath0==8.3.0-6 +libreadline7==7.0-5 +librhash0==1.3.8-1 +librtmp1==2.4+20151223.gitfa8646d.1-2 +libsasl2-2==2.1.27+dfsg-1+deb10u2 +libsasl2-modules==2.1.27+dfsg-1+deb10u2 +libsasl2-modules-db==2.1.27+dfsg-1+deb10u2 +libsensors-config==1:3.5.0-3 +libsensors5==1:3.5.0-3 +libsigsegv2==2.12-2 +libsm6==2:1.2.3-1 +libsqlite3-0==3.27.2-3+deb10u2 +libssh2-1==1.8.0-2.1 +libssl-dev==1.1.1n-0+deb10u4 +libssl1.1==1.1.1n-0+deb10u4 +libstdc++-8-dev==8.3.0-6 +libsynctex2==2018.20181218.49446-1 +libtacacs+1==4.0.4.27a-3 +libtcl8.6==8.6.9+dfsg-2 +libteam-utils==1.28-1 +libteam5==1.28-1 +libteamdctl0==1.28-1 +libteckit0==2.5.8+ds2-5 +libtexlua52==2018.20181218.49446-1 +libtexlua53==2018.20181218.49446-1 +libtexluajit2==2018.20181218.49446-1 +libtext-iconv-perl==1.7-5+b7 +libthai-data==0.1.28-2 +libthai0==0.1.28-2 +libthrift-0.11.0==0.11.0-4 +libtie-ixhash-perl==1.23-2 +libtiff5==4.1.0+git191117-2~deb10u7 +libtimedate-perl==2.3000-2+deb10u1 +libtk8.6==8.6.9-2 +libtry-tiny-perl==0.30-1 +libtsan0==8.3.0-6 +libubsan1==8.3.0-6 +libunbound8==1.9.0-2+deb10u2 +liburi-perl==1.76-1 +libutempter0==1.1.6-3 +libuv1==1.24.1-1+deb10u1 +libwebp6==0.6.1-2+deb10u1 +libwebpdemux2==0.6.1-2+deb10u1 +libwebpmux3==0.6.1-2+deb10u1 +libwoff1==1.0.2-1 +libwrap0==7.6.q-28 +libwww-perl==6.36-2 +libwww-robotrules-perl==6.02-1 +libx11-6==2:1.6.7-1+deb10u2 +libx11-data==2:1.6.7-1+deb10u2 +libx11-protocol-perl==0.56-7 +libx11-xcb1==2:1.6.7-1+deb10u2 +libxau6==1:1.0.8-1+b2 +libxaw7==2:1.0.13-1+b2 +libxcb-dri2-0==1.13.1-2 +libxcb-dri3-0==1.13.1-2 +libxcb-glx0==1.13.1-2 +libxcb-present0==1.13.1-2 +libxcb-render0==1.13.1-2 +libxcb-shape0==1.13.1-2 +libxcb-shm0==1.13.1-2 +libxcb-sync1==1.13.1-2 +libxcb1==1.13.1-2 +libxcomposite1==1:0.4.4-2 +libxcursor1==1:1.1.15-2 +libxdamage1==1:1.1.4-3+b3 +libxdmcp6==1:1.1.2-3 +libxdot4==2.40.1-6+deb10u1 +libxext6==2:1.3.3-1+b2 +libxfixes3==1:5.0.3-1 +libxft2==2.3.2-2 +libxi6==2:1.7.9-1 +libxinerama1==2:1.1.4-2 +libxml-parser-perl==2.44-4 +libxml-twig-perl==1:3.50-1.1 +libxml-xpathengine-perl==0.14-1 +libxml2==2.9.4+dfsg1-7+deb10u5 +libxmu6==2:1.1.2-2+b3 +libxmuu1==2:1.1.2-2+b3 +libxpm4==1:3.5.12-1 +libxrandr2==2:1.5.1-1 +libxrender1==1:0.9.10-1 +libxshmfence1==1.3-1 +libxss1==1:1.2.3-1 +libxt6==1:1.1.5-1+b3 +libxtst6==2:1.2.3-1 +libxv1==2:1.0.11-1 +libxxf86dga1==2:1.1.4-1+b3 +libxxf86vm1==1:1.1.4-1+b2 +libxxhash0==0.6.5-2 +libzzip-0-13==0.13.62-3.2+deb10u1 +linux-libc-dev==4.19.269-1 +lmodern==2.004.5-6 +logrotate==3.14.0-4 +lsb-base==10.2019051400 +lsof==4.91+dfsg-1 +m4==1.4.18-2 +make==4.2.1-1.2 +manpages==4.16-2 +manpages-dev==4.16-2 +mime-support==3.62 +ncurses-term==6.1+20181013-2+deb10u3 +net-tools==1.60+git20180626.aebd88e-1 +netbase==5.6 +ntp==1:4.2.8p12+dfsg-4 +ntpdate==1:4.2.8p12+dfsg-4 +ntpstat==0.0.0.1-2 +openssh-client==1:7.9p1-10+deb10u2 +openssh-server==1:7.9p1-10+deb10u2 +openssh-sftp-server==1:7.9p1-10+deb10u2 +openssl==1.1.1n-0+deb10u4 +patch==2.7.6-3+deb10u1 +perl==5.28.1-6+deb10u1 +perl-modules-5.28==5.28.1-6+deb10u1 +perl-openssl-defaults==3 +pinentry-curses==1.1.0-2 +pkg-config==0.29-6 +poppler-data==0.4.9-2 +procps==2:3.3.15-2 +psmisc==23.2-1+deb10u1 +publicsuffix==20220811.1734-0+deb10u1 +python==2.7.16-1 +python-dev==2.7.16-1 +python-libpcap==0.6.4-1 +python-matplotlib-data==3.0.2-2 +python-minimal==2.7.16-1 +python-pip-whl==18.1-5 +python-ptf==0.9-1 +python-saithrift==0.9.4 +python-scapy==2.4.0-2 +python-six==1.12.0-1 +python-thrift==0.11.0-4 +python2==2.7.16-1 +python2-dev==2.7.16-1 +python2-minimal==2.7.16-1 +python2.7==2.7.16-2+deb10u1 +python2.7-dev==2.7.16-2+deb10u1 +python2.7-minimal==2.7.16-2+deb10u1 +python3==3.7.3-1 +python3-asn1crypto==0.24.0-1 +python3-cffi-backend==1.12.2-1 +python3-crypto==2.6.1-9+b1 +python3-cryptography==2.6.1-3+deb10u4 +python3-cycler==0.10.0-1 +python3-dateutil==2.7.3-3 +python3-dbus==1.2.8-3 +python3-decorator==4.3.0-1.1 +python3-dev==3.7.3-1 +python3-distutils==3.7.3-1 +python3-entrypoints==0.3-1 +python3-gi==3.30.4-1 +python3-ipython==5.8.0-1+deb10u1 +python3-ipython-genutils==0.2.0-1 +python3-keyring==17.1.1-1 +python3-keyrings.alt==3.1.1-1 +python3-kiwisolver==1.0.1-2+b1 +python3-lib2to3==3.7.3-1 +python3-matplotlib==3.0.2-2 +python3-minimal==3.7.3-1 +python3-numpy==1:1.16.2-1 +python3-olefile==0.46-1 +python3-pexpect==4.6.0-1 +python3-pickleshare==0.7.5-1 +python3-pil==5.4.1-2+deb10u3 +python3-pip==18.1-5 +python3-pkg-resources==40.8.0-1 +python3-prompt-toolkit==1.0.15-1 +python3-ptyprocess==0.6.0-1 +python3-pygments==2.3.1+dfsg-1+deb10u2 +python3-pyparsing==2.2.0+dfsg1-2 +python3-pyx==0.14.1-9 +python3-scapy==2.4.0-2 +python3-secretstorage==2.3.1-2 +python3-setuptools==40.8.0-1 +python3-simplegeneric==0.8.1-2 +python3-six==1.12.0-1 +python3-tk==3.7.3-1 +python3-traitlets==4.3.2-1 +python3-venv==3.7.3-1 +python3-wcwidth==0.1.7+dfsg1-3 +python3-wheel==0.32.3-2 +python3-xdg==0.25-5 +python3.7==3.7.3-2+deb10u4 +python3.7-dev==3.7.3-2+deb10u4 +python3.7-minimal==3.7.3-2+deb10u4 +python3.7-venv==3.7.3-2+deb10u4 +qttranslations5-l10n==5.11.3-2 +readline-common==7.0-5 +rsync==3.1.3-6 +rsyslog==8.1901.0-1+deb10u2 +sensible-utils==0.0.12 +shared-mime-info==1.10-1 +sntp==1:4.2.8p12+dfsg-4 +systemd==241-7~deb10u8 +systemd-sysv==241-7~deb10u8 +t1utils==1.41-3 +tacacs+==4.0.4.27a-3 +tcpdump==4.9.3-1~deb10u2 +telnet==0.17-41.2 +tex-common==6.11 +texlive-base==2018.20190227-2 +texlive-binaries==2018.20181218.49446-1 +texlive-latex-base==2018.20190227-2 +tk8.6-blt2.5==2.5.3+dfsg-4 +tmux==2.8-3+deb10u1 +traceroute==1:2.1.0-2 +ttf-bitstream-vera==1.10-8 +ucf==3.0038+nmu1 +unzip==6.0-23+deb10u3 +vim==2:8.1.0875-5+deb10u4 +vim-common==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 +wget==1.20.1-1.1 +x11-common==1:7.7+19 +x11-utils==7.7+4 +x11-xserver-utils==7.7+8 +xauth==1:1.0.10-1 +xdg-user-dirs==0.17-2 +xdg-utils==1.1.3-1+deb10u1 +xfonts-encodings==1:1.0.4-2 +xfonts-utils==1:7.7+6 +xxd==2:8.1.0875-5+deb10u4 +xz-utils==5.2.4-1+deb10u1 diff --git a/files/build/versions/dockers/docker-ptf/versions-py2 b/files/build/versions/dockers/docker-ptf/versions-py2 new file mode 100644 index 000000000000..871df802fdb1 --- /dev/null +++ b/files/build/versions/dockers/docker-ptf/versions-py2 @@ -0,0 +1,72 @@ +backports.functools-lru-cache==1.6.4 +backports.shutil-get-terminal-size==1.0.0 +bcrypt==3.1.7 +cffi==1.15.1 +click==7.1.2 +contextlib2==0.6.0.post1 +cryptography==3.3.2 +decorator==4.4.2 +dpkt==1.9.8 +enum34==1.1.6 +exabgp==3.4.17 +flask==1.0 +flask-httpauth==2.5.0 +future==0.18.3 +futures==3.2.0 +grpcio==1.18.0 +grpcio-tools==1.15.0 +importlib-resources==3.3.1 +ipaddress==1.0.23 +ipython==5.4.1 +ipython-genutils==0.2.0 +itsdangerous==1.1.0 +jinja2==2.11.3 +markupsafe==1.1.1 +netaddr==0.8.0 +nnpy==1.4.2 +oslo.config==2.1.0 +paramiko==2.12.0 +pathlib2==2.3.7.post1 +pbr==2.0.0 +pexpect==4.8.0 +pickleshare==0.7.5 +pip==20.3.4 +plumbum==1.7.2 +prompt-toolkit==1.0.18 +protobuf==3.6.1 +ptf==0.9.1 +ptyprocess==0.7.0 +pyaml==21.10.1 +pybrctl==0.1.4 +pycparser==2.21 +pygments==2.5.2 +pylibpcap==0.6.4 +pynacl==1.4.0 +pyrasite==2.0 +pyro4==4.82 +pysubnettree==0.26 +pyyaml==5.4.1 +retrying==1.3.4 +rpyc==4.1.5 +saithrift==0.9 +scandir==1.10.0 +scapy==2.2.0.dev0 +selectors34==1.2 +serpent==1.28 +setuptools==44.1.1 +simplegeneric==0.8.1 +singledispatch==3.7.0 +six==1.12.0 +stevedore==1.32.0 +supervisor==4.2.5 +thrift==0.11.0 +traitlets==4.3.3 +twisted==16.0.0 +typing==3.10.0.0 +unittest-xml-reporting==2.5.2 +wcwidth==0.2.6 +werkzeug==1.0.1 +wheel==0.37.1 +yabgp==0.8.2 +zipp==1.2.0 +zope.interface==5.5.2 diff --git a/files/build/versions/dockers/docker-ptf/versions-py3 b/files/build/versions/dockers/docker-ptf/versions-py3 new file mode 100644 index 000000000000..e8d1cb8d4836 --- /dev/null +++ b/files/build/versions/dockers/docker-ptf/versions-py3 @@ -0,0 +1,33 @@ +asn1crypto==0.24.0 +cryptography==2.6.1 +cycler==0.10.0 +decorator==4.3.0 +entrypoints==0.3 +ipython==5.8.0 +ipython-genutils==0.2.0 +keyring==17.1.1 +keyrings.alt==3.1.1 +kiwisolver==1.0.1 +matplotlib==3.0.2 +numpy==1.16.2 +olefile==0.46 +pexpect==4.6.0 +pickleshare==0.7.5 +pillow==5.4.1 +pip==18.1 +prompt-toolkit==1.0.15 +pycrypto==2.6.1 +pygments==2.3.1 +pygobject==3.30.4 +pyparsing==2.2.0 +python-dateutil==2.7.3 +pyx==0.14.1 +pyxdg==0.25 +scapy==2.4.0 +secretstorage==2.3.1 +setuptools==40.8.0 +simplegeneric==0.8.1 +six==1.12.0 +traitlets==4.3.2 +wcwidth==0.1.7 +wheel==0.32.3 diff --git a/files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye b/files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye new file mode 100644 index 000000000000..478b32e84519 --- /dev/null +++ b/files/build/versions/dockers/docker-router-advertiser/versions-deb-bullseye @@ -0,0 +1,26 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +radvd==1:2.18-3 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye b/files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye new file mode 100644 index 000000000000..64bc00d8eb5f --- /dev/null +++ b/files/build/versions/dockers/docker-saiserverv2-bfn/versions-deb-bullseye @@ -0,0 +1,67 @@ +bfnplatform==1.0.0 +bfnsdk==1.0.0 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +libarchive13==3.4.3-2+deb11u1 +libblkid-dev==2.36.1-8+deb11u1 +libboost-atomic1.74.0==1.74.0-9 +libc-ares2==1.17.1-1+deb11u1 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdbus-1-dev==1.12.24-0+deb11u1 +libdouble-conversion3==3.1.5-6.1 +libdpkg-perl==1.20.12 +libedit2==3.1-20191231-2+b1 +libffi-dev==3.3-6 +libglib2.0-0==2.66.8-1 +libglib2.0-bin==2.66.8-1 +libglib2.0-data==2.66.8-1 +libglib2.0-dev==2.66.8-1 +libglib2.0-dev-bin==2.66.8-1 +libgoogle-perftools4==2.8.1-1 +libicu67==67.1-7 +libjsoncpp24==1.9.4-4 +liblzma-dev==5.2.5-2.1~deb11u1 +libmount-dev==2.36.1-8+deb11u1 +libnsl-dev==1.3.0-2 +libpcap-dev==1.10.0-2 +libpcap0.8==1.10.0-2 +libpcap0.8-dev==1.10.0-2 +libpcre16-3==2:8.39-13 +libpcre2-16-0==10.36-2+deb11u1 +libpcre2-32-0==10.36-2+deb11u1 +libpcre2-dev==10.36-2+deb11u1 +libpcre2-posix2==10.36-2+deb11u1 +libpcre3-dev==2:8.39-13 +libpcre32-3==2:8.39-13 +libpcrecpp0v5==2:8.39-13 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +librhash0==1.4.1-2 +libsaithrift-dev==0.9.4 +libselinux1-dev==3.1-3 +libsepol1-dev==3.1-1 +libtcmalloc-minimal4==2.8.1-1 +libthrift-dev==0.14.1 +libthrift0==0.14.1 +libtirpc-dev==1.3.1-1+deb11u1 +libunwind-dev==1.3.2-2 +libunwind8==1.3.2-2 +libusb-1.0-0==2:1.0.24-3 +libuv1==1.40.0-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +pkg-config==0.29.2-1 +python-pip-whl==20.3.4-4+deb11u1 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-setuptools==52.0.0-4 +python3-wheel==0.34.2-1 +saiserver==0.9.4 +shared-mime-info==2.0-1 +uuid-dev==2.36.1-8+deb11u1 +wget==1.21-1+deb11u1 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye b/files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye new file mode 100644 index 000000000000..d4cba04595a3 --- /dev/null +++ b/files/build/versions/dockers/docker-saiserverv2-brcm/versions-deb-bullseye @@ -0,0 +1,19 @@ +gdb==10.1-1.7 +kmod==28-1 +libbabeltrace1==1.5.8-1+b3 +libboost-atomic1.74.0==1.74.0-9 +libboost-regex1.74.0==1.74.0-9 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libglib2.0-0==2.66.8-1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libsaithrift-dev==0.9.4 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libthrift0==0.14.1 +libyaml-0-2==0.2.2-1 +saiserver==0.9.4 diff --git a/files/build/versions/dockers/docker-sflow/versions-deb-buster b/files/build/versions/dockers/docker-sflow/versions-deb-buster new file mode 100644 index 000000000000..38a7cee14435 --- /dev/null +++ b/files/build/versions/dockers/docker-sflow/versions-deb-buster @@ -0,0 +1,21 @@ +dmidecode==3.2-1 +gdb==8.2.1-2+b3 +gdbserver==8.2.1-2+b3 +hsflowd==2.0.35-1 +libbabeltrace1==1.5.6-2+deb10u1 +libbsd0==0.9.1-2+deb10u1 +libdw1==0.176-1.1 +libedit2==3.1-20181209-1 +libglib2.0-0==2.58.3-2+deb10u4 +libgpm2==1.20.7-5 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libipt2==2.0-2 +libswsscommon-dbg==1.0.0 +libunwind8==1.2.1-10~deb10u1 +openssh-client==1:7.9p1-10+deb10u2 +psample==1.1-1 +sflowtool==5.04 +sshpass==1.06-1 +strace==4.26-0.2 +vim==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-snmp/versions-deb-bullseye b/files/build/versions/dockers/docker-snmp/versions-deb-bullseye new file mode 100644 index 000000000000..27d2dff348be --- /dev/null +++ b/files/build/versions/dockers/docker-snmp/versions-deb-bullseye @@ -0,0 +1,41 @@ +freeipmi-common==1.6.6-4+deb11u1 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +ipmitool==1.8.18-10.1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libc-l10n==2.31-13+deb11u5 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libfreeipmi17==1.6.6-4+deb11u1 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libpci3==1:3.7.0-5 +libsensors-config==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libsnmp-base==5.9+dfsg-4+deb11u1 +libsnmp40==5.9+dfsg-4+deb11u1 +libsnmp40-dbgsym==5.9+dfsg-4+deb11u1 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +locales==2.31-13+deb11u5 +openssh-client==1:8.4p1-5+deb11u1 +pci.ids==0.0~2021.02.08-1 +snmp==5.9+dfsg-4+deb11u1 +snmp-dbgsym==5.9+dfsg-4+deb11u1 +snmpd==5.9+dfsg-4+deb11u1 +snmpd-dbgsym==5.9+dfsg-4+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-snmp/versions-py3 b/files/build/versions/dockers/docker-snmp/versions-py3 new file mode 100644 index 000000000000..ab546f5af486 --- /dev/null +++ b/files/build/versions/dockers/docker-snmp/versions-py3 @@ -0,0 +1,6 @@ +async-timeout==4.0.2 +hiredis==2.2.2 +psutil==5.9.4 +python-arptable==0.0.2 +redis==4.5.1 +smbus==1.1.post2 diff --git a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster new file mode 100644 index 000000000000..83853c32f130 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-deb-buster @@ -0,0 +1,25 @@ +gdb==8.2.1-2+b3 +gdbserver==8.2.1-2+b3 +libbabeltrace1==1.5.6-2+deb10u1 +libbsd0==0.9.1-2+deb10u1 +libcjson-dev==1.7.10-1.1+deb10u1 +libcjson1==1.7.10-1.1+deb10u1 +libcurl3-gnutls==7.64.0-4+deb10u5 +libdw1==0.176-1.1 +libedit2==3.1-20181209-1 +libglib2.0-0==2.58.3-2+deb10u4 +libgpm2==1.20.7-5 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu63==63.1-6+deb10u3 +libipt2==2.0-2 +libswsscommon-dbg==1.0.0 +libunwind8==1.2.1-10~deb10u1 +libxml2==2.9.4+dfsg1-7+deb10u5 +openssh-client==1:7.9p1-10+deb10u2 +sonic-mgmt-common==1.0.0 +sonic-mgmt-framework==1.0-01 +sonic-mgmt-framework-dbg==1.0-01 +sshpass==1.06-1 +strace==4.26-0.2 +vim==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 new file mode 100644 index 000000000000..c087795c6b30 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-mgmt-framework/versions-py3 @@ -0,0 +1,32 @@ +attrs==22.2.0 +certifi==2017.4.17 +charset-normalizer==3.0.1 +click==8.1.3 +clickclick==20.10.2 +connexion==2.7.0 +flask==2.2.3 +grpcio==1.51.3 +grpcio-tools==1.20.0 +idna==3.4 +importlib-metadata==6.0.0 +importlib-resources==5.12.0 +inflection==0.5.1 +itsdangerous==2.1.2 +jsonschema==4.17.3 +jsonschema-spec==0.1.3 +lazy-object-proxy==1.9.0 +openapi-schema-validator==0.4.3 +openapi-spec-validator==0.5.5 +pathable==0.4.3 +pkgutil_resolve_name==1.3.10 +protobuf==4.22.0 +pyrsistent==0.19.3 +python-dateutil==2.6.0 +requests==2.28.2 +rfc3339-validator==0.1.4 +setuptools==21.0.0 +six==1.11.0 +typing_extensions==4.5.0 +urllib3==1.26.5 +werkzeug==2.2.3 +zipp==3.15.0 diff --git a/files/build/versions/dockers/docker-sonic-p4rt/versions-deb-bullseye b/files/build/versions/dockers/docker-sonic-p4rt/versions-deb-bullseye new file mode 100644 index 000000000000..96b484c6d9b7 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-p4rt/versions-deb-bullseye @@ -0,0 +1,2 @@ +libgmpxx4ldbl==2:6.2.1+dfsg-1+deb11u1 +sonic-p4rt==0.0.1 diff --git a/files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye b/files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye new file mode 100644 index 000000000000..2341ccbd487b --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-telemetry/versions-deb-bullseye @@ -0,0 +1,45 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libasan6==10.2.1-6 +libbabeltrace1==1.5.8-1+b3 +libboost-dev==1.74.0.3 +libboost-regex1.74.0==1.74.0-9 +libboost1.74-dev==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcbor0==0.5.0+dfsg-2 +libcrypt-dev==1:4.4.18-4 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libgcc-10-dev==10.2.1-6 +libglib2.0-0==2.66.8-1 +libgomp1==10.2.1-6 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libitm1==10.2.1-6 +liblsan0==10.2.1-6 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libquadmath0==10.2.1-6 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libstdc++-10-dev==10.2.1-6 +libswsscommon-dbg==1.0.0 +libswsscommon-dev==1.0.0 +libtirpc-dev==1.3.1-1+deb11u1 +libtsan0==10.2.1-6 +libubsan1==10.2.1-6 +libunwind8==1.3.2-2 +linux-libc-dev==5.10.162-1 +openssh-client==1:8.4p1-5+deb11u1 +sonic-gnmi==0.1 +sonic-mgmt-common==1.0.0 +sshpass==1.09-1+b1 +strace==5.10-1 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-sonic-vs/versions-deb-buster b/files/build/versions/dockers/docker-sonic-vs/versions-deb-buster new file mode 100644 index 000000000000..93a5c8865de8 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-vs/versions-deb-buster @@ -0,0 +1,123 @@ +arping==2.19-6 +bash-completion==1:2.8-6 +bridge-utils==1.6-2 +comerr-dev==2.1-1.44.5-1+deb10u3 +conntrack==1:1.4.5-2 +cron==3.0pl1-134+deb10u1 +dbus==1.12.24-0+deb10u1 +dirmngr==2.2.12-1+deb10u2 +dmsetup==2:1.02.155-3 +ethtool==1:4.19-1 +fontconfig-config==2.13.1-2 +fonts-dejavu-core==2.37-1 +frr==8.2.2-sonic-0 +gettext-base==0.19.8.1-9 +gir1.2-glib-2.0==1.58.3-2 +gnupg==2.2.12-1+deb10u2 +gnupg-l10n==2.2.12-1+deb10u2 +gnupg-utils==2.2.12-1+deb10u2 +gpg==2.2.12-1+deb10u2 +gpg-agent==2.2.12-1+deb10u2 +gpg-wks-client==2.2.12-1+deb10u2 +gpg-wks-server==2.2.12-1+deb10u2 +gpgconf==2.2.12-1+deb10u2 +gpgsm==2.2.12-1+deb10u2 +grub-common==2.06-3~deb10u3 +grub2-common==2.06-3~deb10u3 +ifupdown==0.8.35 +iproute2==5.10.0-4~bpo10+1 +iptables==1.8.2-4 +krb5-multidev==1.17-3+deb10u5 +libapparmor1==2.13.2-10 +libassuan0==2.5.2-1 +libblkid-dev==2.33.1-0.1 +libboost-atomic1.71.0==1.71.0-6~bpo10+1 +libboost-program-options1.71.0==1.71.0-6~bpo10+1 +libboost-system1.71.0==1.71.0-6~bpo10+1 +libboost-thread1.71.0==1.71.0-6~bpo10+1 +libbpf0==1:0.3-2~bpo10+1 +libbsd0==0.9.1-2+deb10u1 +libc-ares2==1.14.0-1+deb10u2 +libc-dev-bin==2.28-10+deb10u2 +libc6-dev==2.28-10+deb10u2 +libdevmapper1.02.1==2:1.02.155-3 +libdouble-conversion1==3.1.0-3 +libedit2==3.1-20181209-1 +libefiboot1==37-2+deb10u1 +libefivar1==37-2+deb10u1 +libfreetype6==2.9.1-3+deb10u3 +libfreetype6-dev==2.9.1-3+deb10u3 +libfuse2==2.9.9-1+deb10u1 +libgirepository-1.0-1==1.58.3-2 +libglib2.0-0==2.58.3-2+deb10u4 +libglib2.0-data==2.58.3-2+deb10u4 +libgssrpc4==1.17-3+deb10u5 +libicu63==63.1-6+deb10u3 +libip4tc0==1.8.2-4 +libip6tc0==1.8.2-4 +libiptc0==1.8.2-4 +libjson-c3==0.12.1+ds-2+deb10u1 +libjudydebian1==1.0.5-5 +libkadm5clnt-mit11==1.17-3+deb10u5 +libkadm5srv-mit11==1.17-3+deb10u5 +libkdb5-9==1.17-3+deb10u5 +libkrb5-dev==1.17-3+deb10u5 +libksba8==1.3.5-2+deb10u2 +libnet1==1.1.6+dfsg-3.1 +libnetfilter-conntrack3==1.0.7-1 +libnfnetlink0==1.0.1-3+b1 +libnftnl11==1.1.2-2 +libnorm-dev==1.5.8+dfsg2-1 +libnpth0==1.6-1 +libpcap0.8==1.8.1-6+deb10u1 +libpcre2-16-0==10.32-5 +libpcre2-8-0==10.32-5 +libpgm-dev==5.2.122~dfsg-3 +libpng16-16==1.6.36-6 +libpython-stdlib==2.7.16-1 +libpython2-stdlib==2.7.16-1 +libpython2.7==2.7.16-2+deb10u1 +libpython2.7-minimal==2.7.16-2+deb10u1 +libpython2.7-stdlib==2.7.16-2+deb10u1 +libqt5core5a==5.11.3+dfsg1-1+deb10u5 +libqt5dbus5==5.11.3+dfsg1-1+deb10u5 +libqt5network5==5.11.3+dfsg1-1+deb10u5 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsaivs==1.0.0 +libsodium-dev==1.0.17-1 +libteam-utils==1.30-1 +libteam5==1.30-1 +libteamdctl0==1.30-1 +libunwind8==1.2.1-10~deb10u1 +libyang2==2.0.112-6 +libzmq3-dev==4.3.1-4+deb10u2 +linux-libc-dev==4.19.269-1 +logrotate==3.14.0-4 +lsof==4.91+dfsg-1 +ndisc6==1.0.4-1 +openssh-client==1:7.9p1-10+deb10u2 +openssh-server==1:7.9p1-10+deb10u2 +openssh-sftp-server==1:7.9p1-10+deb10u2 +pinentry-curses==1.1.0-2 +psmisc==23.2-1+deb10u1 +python==2.7.16-1 +python-minimal==2.7.16-1 +python-ply==3.11-3 +python-scapy==2.4.0-2 +python-swsscommon==1.0.0 +python2==2.7.16-1 +python2-minimal==2.7.16-1 +python2.7==2.7.16-2+deb10u1 +python2.7-minimal==2.7.16-2+deb10u1 +redis-server==5:6.0.6-1~bpo10+1 +sensible-utils==0.0.12 +sonic-device-data==1.0-1 +sonic-host-services-data==1.0-1 +sonic-utilities-data==1.0-1 +swss==1.0.0 +syncd-vs==1.0.0 +tcpdump==4.9.3-1~deb10u2 +ucf==3.0038+nmu1 +uuid-dev==2.33.1-0.1 +x11-common==1:7.7+19 diff --git a/files/build/versions/dockers/docker-sonic-vs/versions-py2 b/files/build/versions/dockers/docker-sonic-vs/versions-py2 new file mode 100644 index 000000000000..40404455a1a9 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-vs/versions-py2 @@ -0,0 +1,16 @@ +certifi==2021.10.8 +chardet==4.0.0 +crontab==1.0.0 +idna==2.10 +monotonic==1.5 +netifaces==0.10.7 +pip==20.3.4 +ply==3.11 +py2-ipaddress==3.4.2 +pyroute2==0.5.3 +requests==2.27.1 +scapy==2.4.0 +setuptools==40.8.0 +six==1.16.0 +urllib3==1.26.14 +wheel==0.33.6 diff --git a/files/build/versions/dockers/docker-sonic-vs/versions-py3 b/files/build/versions/dockers/docker-sonic-vs/versions-py3 new file mode 100644 index 000000000000..c4f1483a4f38 --- /dev/null +++ b/files/build/versions/dockers/docker-sonic-vs/versions-py3 @@ -0,0 +1,40 @@ +async-timeout==4.0.2 +blessed==1.20.0 +certifi==2022.12.7 +charset-normalizer==3.0.1 +click==7.0 +click-log==0.4.0 +colorful==0.5.5 +dbus-python==1.3.2 +docker==6.0.1 +docker-image-py==0.1.12 +enlighten==1.11.2 +filelock==3.9.0 +idna==3.4 +importlib-metadata==6.0.0 +jsonpatch==1.32 +jsonpointer==2.3 +lazy-object-proxy==1.9.0 +m2crypto==0.38.0 +netifaces==0.10.9 +packaging==23.0 +pexpect==4.8.0 +prefixed==0.7.0 +prettyprinter==0.18.0 +ptyprocess==0.7.0 +pycairo==1.23.0 +pygments==2.14.0 +pygobject==3.42.2 +pyroute2==0.5.14 +redis==4.5.1 +requests==2.28.2 +scapy==2.4.4 +semantic-version==2.10.0 +systemd-python==235 +toposort==1.6 +typing_extensions==4.5.0 +urllib3==1.26.14 +wcwidth==0.2.6 +websocket-client==1.5.1 +www-authenticate==0.9.2 +zipp==3.15.0 diff --git a/files/build/versions/dockers/docker-swss-layer-bullseye/versions-deb-bullseye b/files/build/versions/dockers/docker-swss-layer-bullseye/versions-deb-bullseye new file mode 100644 index 000000000000..3708dc6eb3a1 --- /dev/null +++ b/files/build/versions/dockers/docker-swss-layer-bullseye/versions-deb-bullseye @@ -0,0 +1,6 @@ +iputils-ping==3:20210202-1 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libteam5==1.30-1 +libteamdctl0==1.30-1 +swss==1.0.0 diff --git a/files/build/versions/dockers/docker-swss-layer-buster/versions-deb-buster b/files/build/versions/dockers/docker-swss-layer-buster/versions-deb-buster new file mode 100644 index 000000000000..9ce47d764811 --- /dev/null +++ b/files/build/versions/dockers/docker-swss-layer-buster/versions-deb-buster @@ -0,0 +1,5 @@ +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libteam5==1.30-1 +libteamdctl0==1.30-1 +swss==1.0.0 diff --git a/files/build/versions/dockers/docker-syncd-bfn-rpc/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-bfn-rpc/versions-deb-bullseye new file mode 100644 index 000000000000..0b1a236c4c74 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-bfn-rpc/versions-deb-bullseye @@ -0,0 +1,23 @@ +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +libarchive13==3.4.3-2+deb11u1 +libboost-atomic1.74.0==1.74.0-9 +libdouble-conversion3==3.1.5-6.1 +libjsoncpp24==1.9.4-4 +libpcre2-16-0==10.36-2+deb11u1 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +librhash0==1.4.1-2 +libthrift0==0.14.1 +libuv1==1.40.0-2 +mailcap==3.69 +mime-support==3.66 +python-pip-whl==20.3.4-4+deb11u1 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-setuptools==52.0.0-4 +python3-wheel==0.34.2-1 +shared-mime-info==2.0-1 +syncd-rpc==1.0.0 +wget==1.21-1+deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye new file mode 100644 index 000000000000..ad702e9001a0 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-bfn/versions-deb-bullseye @@ -0,0 +1,29 @@ +bfnplatform==1.0.0 +bfnsdk==1.0.0 +libc-ares2==1.17.1-1+deb11u1 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdbus-1-dev==1.12.24-0+deb11u1 +libdpkg-perl==1.20.12 +libedit2==3.1-20191231-2+b1 +libglib2.0-0==2.66.8-1 +libgoogle-perftools4==2.8.1-1 +libicu67==67.1-7 +liblzma-dev==5.2.5-2.1~deb11u1 +libnsl-dev==1.3.0-2 +libpcap-dev==1.10.0-2 +libpcap0.8==1.10.0-2 +libpcap0.8-dev==1.10.0-2 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libtcmalloc-minimal4==2.8.1-1 +libtirpc-dev==1.3.1-1+deb11u1 +libunwind-dev==1.3.2-2 +libunwind8==1.3.2-2 +libusb-1.0-0==2:1.0.24-3 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +pkg-config==0.29.2-1 +syncd==1.0.0 diff --git a/files/build/versions/dockers/docker-syncd-brcm-dnx-rpc/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-brcm-dnx-rpc/versions-deb-bullseye new file mode 100644 index 000000000000..8957a01b62b0 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-brcm-dnx-rpc/versions-deb-bullseye @@ -0,0 +1,81 @@ +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +build-essential==12.9 +bzip2==1.0.8-4 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +g++==4:10.2.1-1 +g++-10==10.2.1-6 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +libarchive13==3.4.3-2+deb11u1 +libasan6==10.2.1-6 +libbinutils==2.35.2-2 +libboost-atomic1.74.0==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcc1-0==10.2.1-6 +libcrypt-dev==1:4.4.18-4 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libdouble-conversion3==3.1.5-6.1 +libdpkg-perl==1.20.12 +libexpat1-dev==2.2.10-2+deb11u5 +libffi-dev==3.3-6 +libgcc-10-dev==10.2.1-6 +libglib2.0-0==2.66.8-1 +libgomp1==10.2.1-6 +libicu67==67.1-7 +libisl23==0.23-1 +libitm1==10.2.1-6 +libjsoncpp24==1.9.4-4 +liblsan0==10.2.1-6 +libmpc3==1.2.0-1 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libpcre2-16-0==10.36-2+deb11u1 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +libquadmath0==10.2.1-6 +librhash0==1.4.1-2 +libstdc++-10-dev==10.2.1-6 +libthrift-0.11.0==0.11.0-4 +libtirpc-dev==1.3.1-1+deb11u1 +libtsan0==10.2.1-6 +libubsan1==10.2.1-6 +libuv1==1.40.0-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +mailcap==3.69 +make==4.3-4.1 +mime-support==3.66 +patch==2.7.6-7 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python-pip-whl==20.3.4-4+deb11u1 +python-pkg-resources==44.1.1-1 +python-setuptools==44.1.1-1 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-setuptools==52.0.0-4 +python3-wheel==0.34.2-1 +shared-mime-info==2.0-1 +syncd-rpc==1.0.0 +wget==1.21-1+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye new file mode 100644 index 000000000000..dbb94382e400 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-brcm-dnx/versions-deb-bullseye @@ -0,0 +1,34 @@ +ethtool==1:5.9-1 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +kmod==28-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libsaimetadata==1.0.0 +libsaimetadata-dbg==1.0.0 +libsairedis==1.0.0 +libsairedis-dbg==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd==1.0.0 +syncd-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-brcm-rpc/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-brcm-rpc/versions-deb-bullseye new file mode 100644 index 000000000000..8957a01b62b0 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-brcm-rpc/versions-deb-bullseye @@ -0,0 +1,81 @@ +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +build-essential==12.9 +bzip2==1.0.8-4 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +g++==4:10.2.1-1 +g++-10==10.2.1-6 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +libarchive13==3.4.3-2+deb11u1 +libasan6==10.2.1-6 +libbinutils==2.35.2-2 +libboost-atomic1.74.0==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcc1-0==10.2.1-6 +libcrypt-dev==1:4.4.18-4 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libdouble-conversion3==3.1.5-6.1 +libdpkg-perl==1.20.12 +libexpat1-dev==2.2.10-2+deb11u5 +libffi-dev==3.3-6 +libgcc-10-dev==10.2.1-6 +libglib2.0-0==2.66.8-1 +libgomp1==10.2.1-6 +libicu67==67.1-7 +libisl23==0.23-1 +libitm1==10.2.1-6 +libjsoncpp24==1.9.4-4 +liblsan0==10.2.1-6 +libmpc3==1.2.0-1 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libpcre2-16-0==10.36-2+deb11u1 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +libquadmath0==10.2.1-6 +librhash0==1.4.1-2 +libstdc++-10-dev==10.2.1-6 +libthrift-0.11.0==0.11.0-4 +libtirpc-dev==1.3.1-1+deb11u1 +libtsan0==10.2.1-6 +libubsan1==10.2.1-6 +libuv1==1.40.0-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +mailcap==3.69 +make==4.3-4.1 +mime-support==3.66 +patch==2.7.6-7 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python-pip-whl==20.3.4-4+deb11u1 +python-pkg-resources==44.1.1-1 +python-setuptools==44.1.1-1 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-setuptools==52.0.0-4 +python3-wheel==0.34.2-1 +shared-mime-info==2.0-1 +syncd-rpc==1.0.0 +wget==1.21-1+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye new file mode 100644 index 000000000000..6f9c216bc8d8 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-brcm/versions-deb-bullseye @@ -0,0 +1,35 @@ +ethtool==1:5.9-1 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +kmod==28-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libsaimetadata==1.0.0 +libsaimetadata-dbg==1.0.0 +libsairedis==1.0.0 +libsairedis-dbg==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +libyaml-0-2==0.2.2-1 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd==1.0.0 +syncd-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-centec-rpc/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-centec-rpc/versions-deb-bullseye new file mode 100644 index 000000000000..8957a01b62b0 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-centec-rpc/versions-deb-bullseye @@ -0,0 +1,81 @@ +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +build-essential==12.9 +bzip2==1.0.8-4 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +g++==4:10.2.1-1 +g++-10==10.2.1-6 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +libarchive13==3.4.3-2+deb11u1 +libasan6==10.2.1-6 +libbinutils==2.35.2-2 +libboost-atomic1.74.0==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcc1-0==10.2.1-6 +libcrypt-dev==1:4.4.18-4 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libdouble-conversion3==3.1.5-6.1 +libdpkg-perl==1.20.12 +libexpat1-dev==2.2.10-2+deb11u5 +libffi-dev==3.3-6 +libgcc-10-dev==10.2.1-6 +libglib2.0-0==2.66.8-1 +libgomp1==10.2.1-6 +libicu67==67.1-7 +libisl23==0.23-1 +libitm1==10.2.1-6 +libjsoncpp24==1.9.4-4 +liblsan0==10.2.1-6 +libmpc3==1.2.0-1 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libpcre2-16-0==10.36-2+deb11u1 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +libquadmath0==10.2.1-6 +librhash0==1.4.1-2 +libstdc++-10-dev==10.2.1-6 +libthrift-0.11.0==0.11.0-4 +libtirpc-dev==1.3.1-1+deb11u1 +libtsan0==10.2.1-6 +libubsan1==10.2.1-6 +libuv1==1.40.0-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +mailcap==3.69 +make==4.3-4.1 +mime-support==3.66 +patch==2.7.6-7 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python-pip-whl==20.3.4-4+deb11u1 +python-pkg-resources==44.1.1-1 +python-setuptools==44.1.1-1 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-setuptools==52.0.0-4 +python3-wheel==0.34.2-1 +shared-mime-info==2.0-1 +syncd-rpc==1.0.0 +wget==1.21-1+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye new file mode 100644 index 000000000000..094359a99c1b --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye @@ -0,0 +1,31 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +kmod==28-1 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libkmod2==28-1 +libmpfr6==4.1.0-3 +libsai==1.11.0-1 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +syncd==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye-arm64 b/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..0af33189fd01 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-centec/versions-deb-bullseye-arm64 @@ -0,0 +1,39 @@ +dmsetup==2:1.02.175-2.1 +iputils-ping==3:20210202-1 +keyutils==1.6.1-2 +libdbus-1-dev==1.12.24-0+deb11u1 +libdevmapper1.02.1==2:1.02.175-2.1 +libdpkg-perl==1.20.12 +libevent-2.1-7==2.1.12-stable-1 +libexpat1-dev==2.2.10-2+deb11u5 +libnfsidmap2==0.25-6 +libpcap-dev==1.10.0-2 +libpcap0.8==1.10.0-2 +libpcap0.8-dev==1.10.0-2 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libsensors-config==1:3.6.0-7 +libsensors-dev==1:3.6.0-7 +libsensors4-dev==1:3.6.0-7 +libsensors5==1:3.6.0-7 +mailcap==3.69 +mime-support==3.66 +nfs-common==1:1.3.4-6 +pkg-config==0.29.2-1 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +rpcbind==1.2.5-9 +sensible-utils==0.0.14 +swig==4.0.2-1 +swig4.0==4.0.2-1 +ucf==3.0043 diff --git a/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-deb-bullseye new file mode 100644 index 000000000000..f13d3c30824b --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-deb-bullseye @@ -0,0 +1,69 @@ +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +build-essential==12.9 +bzip2==1.0.8-4 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +g++==4:10.2.1-1 +g++-10==10.2.1-6 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +libarchive13==3.4.3-2+deb11u1 +libasan6==10.2.1-6 +libbinutils==2.35.2-2 +libboost-atomic1.74.0==1.74.0-9 +libcc1-0==10.2.1-6 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libdouble-conversion3==3.1.5-6.1 +libdpkg-perl==1.20.12 +libffi-dev==3.3-6 +libgcc-10-dev==10.2.1-6 +libglib2.0-0==2.66.8-1 +libgomp1==10.2.1-6 +libisl23==0.23-1 +libitm1==10.2.1-6 +libjsoncpp24==1.9.4-4 +liblsan0==10.2.1-6 +libmpc3==1.2.0-1 +libmpfr6==4.1.0-3 +libpcre2-16-0==10.36-2+deb11u1 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +libquadmath0==10.2.1-6 +librhash0==1.4.1-2 +libstdc++-10-dev==10.2.1-6 +libthrift-0.11.0==0.11.0-4 +libtsan0==10.2.1-6 +libubsan1==10.2.1-6 +libuv1==1.40.0-2 +mailcap==3.69 +make==4.3-4.1 +mime-support==3.66 +patch==2.7.6-7 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python-pkg-resources==44.1.1-1 +python-ptf==0.9-1 +python-scapy==2.4.0-2 +python-setuptools==44.1.1-1 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +shared-mime-info==2.0-1 +syncd-rpc==1.0.0 +wget==1.21-1+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 diff --git a/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-py2 b/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-py2 new file mode 100644 index 000000000000..64e02e587988 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-mlnx-rpc/versions-py2 @@ -0,0 +1,9 @@ +cffi==1.7.0 +nnpy==1.4.2 +pip==20.3.4 +ptf==0.9.1 +pycparser==2.21 +python-sdk-api==4.5.4150 +scapy==2.4.0 +setuptools==44.1.1 +wheel==0.37.1 diff --git a/files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye b/files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye new file mode 100644 index 000000000000..5be840380412 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-mlnx/versions-deb-bullseye @@ -0,0 +1,81 @@ +applibs==1.mlnx.4.5.4150 +applibs-dev==1.mlnx.4.5.4150 +gdb==10.1-1.7 +gdbserver==10.1-1.7 +iproute2==1.mlnx.4.5.4150 +iproute2-dev==1.mlnx.4.5.4150 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcbor0==0.5.0+dfsg-2 +libcrypt-dev==1:4.4.18-4 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libelf1==0.183-1 +libexpat1-dev==2.2.10-2+deb11u5 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libjs-sphinxdoc==3.4.3-2 +libjs-underscore==1.9.1~dfsg-3 +libmpfr6==4.1.0-3 +libnsl-dev==1.3.0-2 +libpython3-dev==3.9.2-3 +libpython3.9-dev==3.9.2-1 +libsaimetadata==1.0.0 +libsaimetadata-dbg==1.0.0 +libsairedis==1.0.0 +libsairedis-dbg==1.0.0 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libtirpc-dev==1.3.1-1+deb11u1 +libunwind8==1.3.2-2 +libxml2==2.9.10+dfsg-6.7+deb11u3 +linux-libc-dev==5.10.162-1 +mft==4.21.0-100 +mlnx-sai==1.mlnx.SAIBuild2211.23.1.0 +openssh-client==1:8.4p1-5+deb11u1 +python-pip-whl==20.3.4-4+deb11u1 +python-sdk-api==1.mlnx.4.5.4150 +python3-attr==20.3.0-1 +python3-dev==3.9.2-3 +python3-importlib-metadata==1.6.0-2 +python3-jsonschema==3.2.0-3 +python3-more-itertools==4.2.0-3 +python3-pip==20.3.4-4+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-pyrsistent==0.15.5-1+b3 +python3-setuptools==52.0.0-4 +python3-six==1.16.0-2 +python3-wheel==0.34.2-1 +python3-zipp==1.0.0-3 +python3.9-dev==3.9.2-1 +sshpass==1.09-1+b1 +strace==5.10-1 +sx-acl-helper==1.mlnx.4.5.4150 +sx-acl-helper-dev==1.mlnx.4.5.4150 +sx-complib==1.mlnx.4.5.4150 +sx-complib-dev==1.mlnx.4.5.4150 +sx-examples==1.mlnx.4.5.4150 +sx-examples-dev==1.mlnx.4.5.4150 +sx-gen-utils==1.mlnx.4.5.4150 +sx-gen-utils-dev==1.mlnx.4.5.4150 +sx-hash-calc==1.mlnx.4.5.4150 +sx-scew==1.mlnx.4.5.4150 +sx-scew-dev==1.mlnx.4.5.4150 +sxd-libs==1.mlnx.4.5.4150 +sxd-libs-dev==1.mlnx.4.5.4150 +syncd==1.0.0 +syncd-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 +wjh-libs==1.mlnx.4.5.4150 +wjh-libs-dev==1.mlnx.4.5.4150 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/docker-syncd-mlnx/versions-py3 b/files/build/versions/dockers/docker-syncd-mlnx/versions-py3 new file mode 100644 index 000000000000..5d8ad070bcf6 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-mlnx/versions-py3 @@ -0,0 +1,7 @@ +attrs==20.3.0 +importlib-metadata==1.6.0 +jsonschema==3.2.0 +more-itertools==4.2.0 +pyrsistent==0.15.5 +python_sdk_api==4.5.4150 +zipp==1.0.0 diff --git a/files/build/versions/dockers/docker-syncd-mrvl/versions-deb-bullseye-armhf b/files/build/versions/dockers/docker-syncd-mrvl/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..52fd16409917 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-mrvl/versions-deb-bullseye-armhf @@ -0,0 +1,44 @@ +dmsetup==2:1.02.175-2.1 +iputils-ping==3:20210202-1 +keyutils==1.6.1-2 +libdbus-1-dev==1.12.24-0+deb11u1 +libdevmapper1.02.1==2:1.02.175-2.1 +libdpkg-perl==1.20.12 +libevent-2.1-7==2.1.12-stable-1 +libexpat1-dev==2.2.10-2+deb11u5 +libglib2.0-0==2.66.8-1 +libnfsidmap2==0.25-6 +libpcap-dev==1.10.0-2 +libpcap0.8==1.10.0-2 +libpcap0.8-dev==1.10.0-2 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libsaimetadata==1.0.0 +libsairedis==1.0.0 +libsensors-config==1:3.6.0-7 +libsensors-dev==1:3.6.0-7 +libsensors4-dev==1:3.6.0-7 +libsensors5==1:3.6.0-7 +mailcap==3.69 +mime-support==3.66 +mrvllibsai==1.10.2-1 +nfs-common==1:1.3.4-6 +pkg-config==0.29.2-1 +python-dev-is-python2==2.7.18-9 +python-is-python2==2.7.18-9 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +rpcbind==1.2.5-9 +sensible-utils==0.0.14 +swig==4.0.2-1 +swig4.0==4.0.2-1 +syncd==1.0.0 +ucf==3.0043 diff --git a/files/build/versions/dockers/docker-syncd-vs/versions-deb-buster b/files/build/versions/dockers/docker-syncd-vs/versions-deb-buster new file mode 100644 index 000000000000..4e582a3ecee9 --- /dev/null +++ b/files/build/versions/dockers/docker-syncd-vs/versions-deb-buster @@ -0,0 +1,27 @@ +gdb==8.2.1-2+b3 +gdbserver==8.2.1-2+b3 +iproute2==5.10.0-4~bpo10+1 +libbabeltrace1==1.5.6-2+deb10u1 +libbpf0==1:0.3-2~bpo10+1 +libbsd0==0.9.1-2+deb10u1 +libdw1==0.176-1.1 +libedit2==3.1-20181209-1 +libglib2.0-0==2.58.3-2+deb10u4 +libgpm2==1.20.7-5 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libipt2==2.0-2 +libsaimetadata==1.0.0 +libsaimetadata-dbg==1.0.0 +libsairedis==1.0.0 +libsairedis-dbg==1.0.0 +libsaivs==1.0.0 +libsaivs-dbg==1.0.0 +libswsscommon-dbg==1.0.0 +libunwind8==1.2.1-10~deb10u1 +openssh-client==1:7.9p1-10+deb10u2 +sshpass==1.06-1 +strace==4.26-0.2 +syncd-vs==1.0.0 +syncd-vs-dbg==1.0.0 +vim==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 diff --git a/files/build/versions/dockers/docker-teamd/versions-deb-bullseye b/files/build/versions/dockers/docker-teamd/versions-deb-bullseye new file mode 100644 index 000000000000..251f8ded3768 --- /dev/null +++ b/files/build/versions/dockers/docker-teamd/versions-deb-bullseye @@ -0,0 +1,29 @@ +gdb==10.1-1.7 +gdbserver==10.1-1.7 +libbabeltrace1==1.5.8-1+b3 +libboost-regex1.74.0==1.74.0-9 +libcbor0==0.5.0+dfsg-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libdebuginfod1==0.183-1 +libdw1==0.183-1 +libedit2==3.1-20191231-2+b1 +libfido2-1==1.6.0-2 +libglib2.0-0==2.66.8-1 +libgpm2==1.20.7-8 +libhiredis0.14-dbgsym==0.14.0-3~bpo9+1 +libicu67==67.1-7 +libipt2==2.0.3-1 +libmpfr6==4.1.0-3 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libswsscommon-dbg==1.0.0 +libteam-utils==1.30-1 +libteam-utils-dbgsym==1.30-1 +libteamdctl0-dbgsym==1.30-1 +libunwind8==1.3.2-2 +openssh-client==1:8.4p1-5+deb11u1 +sshpass==1.09-1+b1 +strace==5.10-1 +swss-dbg==1.0.0 +vim==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye new file mode 100644 index 000000000000..01ed54b46e5d --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye @@ -0,0 +1,1731 @@ +adwaita-icon-theme==3.38.0-1 +alsa-topology-conf==1.2.4-1 +alsa-ucm-conf==1.2.4-2 +ant==1.10.9-4 +ant-optional==1.10.9-4 +apparmor==2.13.6-10 +apt-file==3.2.2 +apt-transport-https==2.2.4 +apt-utils==2.2.4 +arch-test==0.17-1 +asciidoctor==2.0.12-2 +aspell==0.60.8-3 +aspell-en==2018.04.16-0-1 +at-spi2-core==2.38.0-4 +auditd==1:3.0-2 +augeas-lenses==1.12.0-2 +augeas-tools==1.12.0-2 +autoconf==2.69-14 +autoconf-archive==20190106-2.1 +autogen==1:5.18.16-4 +autogen-doc==1:5.18.16-4 +automake==1:1.16.3-2 +autopoint==0.21-4 +autotools-dev==20180224.1+nmu1 +bash-completion==1:2.11-2 +bc==1.07.1-2+b2 +bind9-dnsutils==1:9.16.37-1~deb11u1 +bind9-host==1:9.16.37-1~deb11u1 +bind9-libs==1:9.16.37-1~deb11u1 +binfmt-support==2.2.1-1+deb11u1 +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +bison==2:3.7.5+dfsg-1 +blt==2.5.3+dfsg-4.1 +bsdextrautils==2.36.1-8+deb11u1 +build-essential==12.9 +byacc==20140715-1+b1 +bzip2==1.0.8-4 +bzip2-doc==1.0.8-4 +ca-certificates==20210119 +ca-certificates-java==20190909 +cdbs==0.4.163 +check==0.15.2-2 +chrpath==0.16-2+b1 +clang==1:11.0-51+nmu5 +clang-11==1:11.0.1-2 +cm-super-minimal==0.3.4-15 +cmake==3.18.4-2+deb11u1 +cmake-data==3.18.4-2+deb11u1 +cmocka-doc==1.1.5-2 +comerr-dev==2.1-1.46.2-2 +containerd.io==1.5.11-1 +cowbuilder==0.89 +cowdancer==0.89 +cpio==2.13+dfsg-4 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +cppcheck==2.3-1 +cron==3.0pl1-137 +curl==7.74.0-1.3+deb11u7 +dbus==1.12.24-0+deb11u1 +dbus-user-session==1.12.24-0+deb11u1 +dconf-gsettings-backend==0.38.0-2 +dconf-service==0.38.0-2 +dctrl-tools==2.24-3+b1 +debhelper==13.3.4 +debian-keyring==2021.07.26 +debootstrap==1.0.123+deb11u1 +default-jdk-headless==2:1.11-72 +default-jre==2:1.11-72 +default-jre-headless==2:1.11-72 +default-libmysqlclient-dev==1.0.7 +device-tree-compiler==1.6.0-1 +devscripts==2.21.3+deb11u1 +dh-apparmor==2.13.6-10 +dh-autoreconf==20 +dh-exec==0.23.2 +dh-make==2.202003 +dh-python==4.20201102+nmu1 +dh-runit==2.10.3 +dh-strip-nondeterminism==1.12.0-1 +dictionaries-common==1.28.4 +diffstat==1.64-1 +dirmngr==2.2.27-2+deb11u2 +distro-info-data==0.51+deb11u3 +dkms==2.8.4-3 +dmeventd==2:1.02.175-2.1 +dmsetup==2:1.02.175-2.1 +dnsutils==1:9.16.37-1~deb11u1 +docbook==4.5-6 +docbook-dsssl==1.79-9.2 +docbook-to-man==1:2.0.0-45 +docbook-utils==0.6.14-3.4 +docbook-xml==4.5-9 +docker-ce==5:20.10.14~3-0~debian-bullseye +docker-ce-cli==5:20.10.14~3-0~debian-bullseye +docker-ce-rootless-extras==5:23.0.1-1~debian.11~bullseye +docker-scan-plugin==0.23.0~debian-bullseye +docutils-common==0.16+dfsg-4 +dosfstools==4.2-1 +doxygen==1.9.1-1 +dpatch==2.0.41 +dpkg-dev==1.20.12 +dput==1.1.0 +dvipng==1.15-1.1+b1 +dvisvgm==2.11.1-1 +dwarves==1.20-1 +dwz==0.13+20210201-1 +eatmydata==105-9 +ed==1.17-1 +emacsen-common==3.0.4 +equivs==2.3.1 +exim4-base==4.94.2-7 +exim4-config==4.94.2-7 +exim4-daemon-light==4.94.2-7 +expat==2.2.10-2+deb11u5 +fakeroot==1.25.3-1.1 +file==1:5.39-3 +flex==2.6.4-8 +fontconfig==2.13.1-4.2 +fontconfig-config==2.13.1-4.2 +fonts-dejavu-core==2.37-2 +fonts-dejavu-extra==2.37-2 +fonts-droid-fallback==1:6.0.1r16-1.1 +fonts-font-awesome==5.0.10+really4.7.0~dfsg-4.1 +fonts-lato==2.0-2.1 +fonts-liberation==1:1.07.4-11 +fonts-lmodern==2.004.5-6.1 +fonts-noto-mono==20201225-1 +fonts-texgyre==20180621-3.1 +fonts-urw-base35==20200910-1 +g++==4:10.2.1-1 +g++-10==10.2.1-6 +gawk==1:5.1.0-1 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +gcc-10-multilib==10.2.1-6 +gcc-multilib==4:10.2.1-1 +gcovr==4.2-1 +gdb==10.1-1.7 +gem2deb==1.4 +gem2deb-test-runner==1.4 +gettext==0.21-4 +gettext-base==0.21-4 +ghostscript==9.53.3~dfsg-7+deb11u2 +gir1.2-atk-1.0==2.36.0-2 +gir1.2-atspi-2.0==2.38.0-4 +gir1.2-freedesktop==1.66.1-1+b1 +gir1.2-gdkpixbuf-2.0==2.42.2+dfsg-1+deb11u1 +gir1.2-glib-2.0==1.66.1-1+b1 +gir1.2-gtk-3.0==3.24.24-4+deb11u2 +gir1.2-harfbuzz-0.0==2.7.4-1 +gir1.2-packagekitglib-1.0==1.2.2-2 +gir1.2-pango-1.0==1.46.2-3 +git==1:2.30.2-1+deb11u2 +git-buildpackage==0.9.22 +git-man==1:2.30.2-1+deb11u2 +glib-networking==2.66.0-2 +glib-networking-common==2.66.0-2 +glib-networking-services==2.66.0-2 +gnupg==2.2.27-2+deb11u2 +gnupg-l10n==2.2.27-2+deb11u2 +gnupg-utils==2.2.27-2+deb11u2 +gnupg2==2.2.27-2+deb11u2 +gobject-introspection==1.66.1-1+b1 +golang-1.15==1.15.15-1~deb11u4 +golang-1.15-doc==1.15.15-1~deb11u4 +golang-1.15-go==1.15.15-1~deb11u4+fips +golang-1.15-src==1.15.15-1~deb11u4+fips +googletest==1.10.0.20201025-1.1 +gpg==2.2.27-2+deb11u2 +gpg-agent==2.2.27-2+deb11u2 +gpg-wks-client==2.2.27-2+deb11u2 +gpg-wks-server==2.2.27-2+deb11u2 +gpgconf==2.2.27-2+deb11u2 +gpgsm==2.2.27-2+deb11u2 +graphviz==2.42.2-5 +groff==1.22.4-6 +groff-base==1.22.4-6 +gsasl-common==1.10.0-4+deb11u1 +gsettings-desktop-schemas==3.38.0-2 +gsfonts==1:8.11+urwcyr1.0.7~pre44-4.5 +gstreamer1.0-libav==1.18.4-3 +gstreamer1.0-plugins-base==1.18.4-2 +gstreamer1.0-plugins-good==1.18.4-2+deb11u1 +gstreamer1.0-x==1.18.4-2 +gtk-update-icon-cache==3.24.24-4+deb11u2 +guile-2.2-libs==2.2.7+1-6 +hicolor-icon-theme==0.17-2 +i965-va-driver==2.4.1+dfsg1-1 +ibverbs-providers==33.2-1 +icc-profiles-free==2.0.1+dfsg-1.1 +icu-devtools==67.1-7 +imagemagick==8:6.9.11.60+dfsg-1.3+deb11u1 +imagemagick-6-common==8:6.9.11.60+dfsg-1.3+deb11u1 +imagemagick-6.q16==8:6.9.11.60+dfsg-1.3+deb11u1 +install-info==6.7.0.dfsg.2-6 +intel-media-va-driver==21.1.1+dfsg1-1 +intltool-debian==0.35.0+20060710.5 +iproute2==5.10.0-4 +iptables==1.8.7-1 +ipxe-qemu==1.0.0+git-20190125.36a4c85-5.1 +iso-codes==4.6.0-1 +java-common==0.72 +java-wrappers==0.3 +javahelper==0.78 +javascript-common==11+nmu1 +jq==1.6-2.1 +junit5==5.3.2-4 +kernel-wedge==2.104 +kmod==28-1 +krb5-multidev==1.18.3-6+deb11u3 +lcov==1.14-2 +less==551-2 +lib32asan6==10.2.1-6 +lib32atomic1==10.2.1-6 +lib32gcc-10-dev==10.2.1-6 +lib32gcc-s1==10.2.1-6 +lib32gomp1==10.2.1-6 +lib32itm1==10.2.1-6 +lib32quadmath0==10.2.1-6 +lib32stdc++6==10.2.1-6 +lib32ubsan1==10.2.1-6 +libaa1==1.4p5-48 +libaacs0==0.9.0-2 +libacl1-dev==2.2.53-10 +libaio1==0.3.112-9 +libalgorithm-c3-perl==0.11-1 +libalgorithm-diff-perl==1.201-1 +libalgorithm-diff-xs-perl==0.04-6+b1 +libalgorithm-merge-perl==0.08-3 +libaliased-perl==0.34-1.1 +libann0==1.1.2+doc-7 +libaom0==1.0.0.errata1-3 +libaopalliance-java==20070526-6 +libapache-pom-java==18-1 +libapiguardian-java==1.1.0-2 +libapparmor1==2.13.6-10 +libappconfig-perl==1.71-2.1 +libappstream4==0.14.4-1 +libapt-pkg-perl==0.1.39 +libarchive-cpio-perl==0.10-1.1 +libarchive-zip-perl==1.68-1 +libarchive13==3.4.3-2+deb11u1 +libargon2-1==0~20171227-0.2 +libarray-intspan-perl==2.004-1 +libasan6==10.2.1-6 +libasm-java==9.1-1 +libasound2==1.2.4-1.1 +libasound2-data==1.2.4-1.1 +libaspell15==0.60.8-3 +libass9==1:0.15.0-2 +libassuan0==2.5.3-7.1 +libasyncns0==0.8-6+b2 +libatinject-jsr330-api-java==1.0+ds1-5 +libatk-bridge2.0-0==2.38.0-1 +libatk-bridge2.0-dev==2.38.0-1 +libatk-wrapper-java==0.38.0-2+deb11u1 +libatk-wrapper-java-jni==0.38.0-2+deb11u1 +libatk1.0-0==2.36.0-2 +libatk1.0-data==2.36.0-2 +libatk1.0-dev==2.36.0-2 +libatm1==1:2.5.1-4 +libatm1-dev==1:2.5.1-4 +libatomic1==10.2.1-6 +libatspi2.0-0==2.38.0-4 +libatspi2.0-dev==2.38.0-4 +libattr1-dev==1:2.4.48-6 +libaudit-dev==1:3.0-2 +libaugeas0==1.12.0-2 +libauparse-dev==1:3.0-2 +libauparse0==1:3.0-2 +libauthen-sasl-perl==2.1600-1.1 +libavahi-client3==0.8-5+deb11u1 +libavahi-common-data==0.8-5+deb11u1 +libavahi-common3==0.8-5+deb11u1 +libavc1394-0==0.5.4-5 +libavcodec58==7:4.3.5-0+deb11u1 +libavfilter7==7:4.3.5-0+deb11u1 +libavformat58==7:4.3.5-0+deb11u1 +libavutil56==7:4.3.5-0+deb11u1 +libb-hooks-endofscope-perl==0.24-1.1 +libb-hooks-op-check-perl==0.22-1+b3 +libbabeltrace-dev==1.5.8-1+b3 +libbabeltrace1==1.5.8-1+b3 +libbatik-java==1.12-4+deb11u1 +libbdplus0==0.1.2-3 +libbind-export-dev==1:9.11.19+dfsg-2.1 +libbinutils==2.35.2-2 +libbit-vector-perl==7.4-1+b7 +libblas3==3.9.0-3 +libblkid-dev==2.36.1-8+deb11u1 +libbluray2==1:1.2.1-4+deb11u2 +libboost-atomic-dev==1.74.0.3 +libboost-atomic1.74-dev==1.74.0-9 +libboost-atomic1.74.0==1.74.0-9 +libboost-chrono-dev==1.74.0.3 +libboost-chrono1.74-dev==1.74.0-9 +libboost-chrono1.74.0==1.74.0-9 +libboost-container-dev==1.74.0.3 +libboost-container1.74-dev==1.74.0-9 +libboost-container1.74.0==1.74.0-9 +libboost-context-dev==1.74.0.3 +libboost-context1.74-dev==1.74.0-9 +libboost-context1.74.0==1.74.0-9 +libboost-contract-dev==1.74.0.3 +libboost-contract1.74-dev==1.74.0-9 +libboost-contract1.74.0==1.74.0-9 +libboost-coroutine-dev==1.74.0.3 +libboost-coroutine1.74-dev==1.74.0-9 +libboost-coroutine1.74.0==1.74.0-9 +libboost-date-time-dev==1.74.0.3 +libboost-date-time1.74-dev==1.74.0-9 +libboost-date-time1.74.0==1.74.0-9 +libboost-dev==1.74.0.3 +libboost-fiber-dev==1.74.0.3 +libboost-fiber1.74-dev==1.74.0-9 +libboost-fiber1.74.0==1.74.0-9 +libboost-filesystem-dev==1.74.0.3 +libboost-filesystem1.74-dev==1.74.0-9 +libboost-filesystem1.74.0==1.74.0-9 +libboost-graph-parallel-dev==1.74.0.3 +libboost-graph-parallel1.74-dev==1.74.0-9 +libboost-graph-parallel1.74.0==1.74.0-9 +libboost-log-dev==1.74.0.3 +libboost-log1.74-dev==1.74.0-9 +libboost-log1.74.0==1.74.0-9 +libboost-mpi1.74.0==1.74.0-9 +libboost-program-options-dev==1.74.0.3 +libboost-program-options1.74-dev==1.74.0-9 +libboost-program-options1.74.0==1.74.0-9 +libboost-regex-dev==1.74.0.3 +libboost-regex1.74-dev==1.74.0-9 +libboost-regex1.74.0==1.74.0-9 +libboost-serialization1.74-dev==1.74.0-9 +libboost-serialization1.74.0==1.74.0-9 +libboost-system-dev==1.74.0.3 +libboost-system1.74-dev==1.74.0-9 +libboost-system1.74.0==1.74.0-9 +libboost-test1.74-dev==1.74.0-9 +libboost-test1.74.0==1.74.0-9 +libboost-thread-dev==1.74.0.3 +libboost-thread1.74-dev==1.74.0-9 +libboost-thread1.74.0==1.74.0-9 +libboost1.74-dev==1.74.0-9 +libbpf0==1:0.3-2 +libbrlapi0.8==6.3+dfsg-1+deb11u1 +libbrotli-dev==1.0.9-2+b2 +libbrotli1==1.0.9-2+b2 +libbs2b0==3.1.0+dfsg-2.2+b1 +libbsd-dev==0.11.3-1 +libbsd0==0.11.3-1 +libbsh-java==2.0b4-20 +libbz2-dev==1.0.8-4 +libc-ares-dev==1.17.1-1+deb11u1 +libc-ares2==1.17.1-1+deb11u1 +libc-dev-bin==2.31-13+deb11u5 +libc-devtools==2.31-13+deb11u5 +libc-l10n==2.31-13+deb11u5 +libc6-dbg==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libc6-dev-i386==2.31-13+deb11u5 +libc6-dev-x32==2.31-13+deb11u5 +libc6-i386==2.31-13+deb11u5 +libc6-x32==2.31-13+deb11u5 +libcaca0==0.99.beta19-2.2 +libcacard0==1:2.8.0-3 +libcairo-gobject2==1.16.0-5 +libcairo-script-interpreter2==1.16.0-5 +libcairo2==1.16.0-5 +libcairo2-dev==1.16.0-5 +libcap-dev==1:2.44-1 +libcap-ng-dev==0.7.9-2.2+b1 +libcap2==1:2.44-1 +libcap2-bin==1:2.44-1 +libcapstone4==4.0.2-3 +libcapture-tiny-perl==0.48-1 +libcarp-clan-perl==6.08-1 +libcbor0==0.5.0+dfsg-2 +libcc1-0==10.2.1-6 +libcdi-api-java==1.2-3 +libcdparanoia0==3.10.2+debian-13.1 +libcdt5==2.42.2-5 +libcgraph6==2.42.2-5 +libchromaprint1==1.5.0-2 +libcjson-dev==1.7.14-1 +libcjson1==1.7.14-1 +libclang-common-11-dev==1:11.0.1-2 +libclang-cpp11==1:11.0.1-2 +libclang1-11==1:11.0.1-2 +libclass-accessor-perl==0.51-1 +libclass-c3-perl==0.35-1 +libclass-c3-xs-perl==0.15-1+b1 +libclass-data-inheritable-perl==0.08-3 +libclass-inspector-perl==1.36-1 +libclass-load-perl==0.25-1 +libclass-load-xs-perl==0.10-1+b5 +libclass-method-modifiers-perl==2.13-1 +libclass-tiny-perl==1.008-1 +libclass-xsaccessor-perl==1.19-3+b7 +libclone-perl==0.45-1+b1 +libcmocka-dev==1.1.5-2 +libcmocka0==1.1.5-2 +libcodec2-0.9==0.9.2-4 +libcolord2==1.4.5-3 +libcommon-sense-perl==3.75-1+b4 +libcommons-beanutils-java==1.9.4-1 +libcommons-cli-java==1.4-2 +libcommons-codec-java==1.15-1 +libcommons-collections3-java==3.2.2-2 +libcommons-compress-java==1.20-1 +libcommons-configuration-java==1.10-5 +libcommons-digester-java==1.8.1-5 +libcommons-io-java==2.8.0-1 +libcommons-lang-java==2.6-9 +libcommons-lang3-java==3.11-1 +libcommons-logging-java==1.2-2 +libcommons-parent-java==43-1 +libcommons-validator-java==1:1.6-2 +libconfig-tiny-perl==2.26-1 +libconst-fast-perl==0.014-1.1 +libcontextual-return-perl==0.004014-2 +libconvert-binhex-perl==1.125-1 +libcpanel-json-xs-perl==4.25-1+b1 +libcrypt-dev==1:4.4.18-4 +libcryptsetup12==2:2.3.7-1+deb11u1 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libcunit1==2.1-3-dfsg-2.3 +libcunit1-dev==2.1-3-dfsg-2.3 +libcups2==2.3.3op2-3+deb11u2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libcurl3-nss==7.74.0-1.3+deb11u7 +libcurl4==7.74.0-1.3+deb11u7 +libcurl4-nss-dev==7.74.0-1.3+deb11u7 +libdaemon-dev==0.14-7.1 +libdaemon0==0.14-7.1 +libdata-dpath-perl==0.58-1 +libdata-dump-perl==1.23-1.1 +libdata-messagepack-perl==1.00-4+b1 +libdata-optlist-perl==0.110-1.1 +libdata-validate-domain-perl==0.10-1.1 +libdatrie-dev==0.2.13-1 +libdatrie1==0.2.13-1 +libdav1d4==0.7.1-3 +libdaxctl1==71.1-1 +libdb-dev==5.3.1+nmu1 +libdb5.3-dev==5.3.28+dfsg1-0.8 +libdbi1==0.9.0-6 +libdbus-1-3==1.12.24-0+deb11u1 +libdbus-1-dev==1.12.24-0+deb11u1 +libdbus-glib-1-2==0.110-6 +libdbus-glib-1-dev==0.110-6 +libdbus-glib-1-dev-bin==0.110-6 +libdconf1==0.38.0-2 +libde265-0==1.0.11-0+deb11u1 +libdebhelper-perl==13.3.4 +libdebuginfod1==0.183-1 +libdeflate0==1.7-1 +libdevel-callchecker-perl==0.008-1+b2 +libdevel-caller-perl==2.06-2+b3 +libdevel-globaldestruction-perl==0.14-1.1 +libdevel-lexalias-perl==0.05-2+b3 +libdevel-overloadinfo-perl==0.005-1 +libdevel-partialdump-perl==0.20-1 +libdevel-size-perl==0.83-1+b2 +libdevel-stacktrace-perl==2.0400-1 +libdevmapper-event1.02.1==2:1.02.175-2.1 +libdevmapper1.02.1==2:1.02.175-2.1 +libdist-checkconflicts-perl==0.11-1.1 +libdistro-info-perl==1.0 +libdjvulibre-text==3.5.28-2 +libdjvulibre21==3.5.28-2 +libdns-export1110==1:9.11.19+dfsg-2.1 +libdom4j-java==2.1.3-1 +libdouble-conversion3==3.1.5-6.1 +libdoxia-core-java==1.7-2 +libdoxia-java==1.7-2 +libdoxia-sitetools-java==1.7.5-2 +libdpkg-perl==1.20.12 +libdrm-amdgpu1==2.4.104-1 +libdrm-common==2.4.104-1 +libdrm-intel1==2.4.104-1 +libdrm-nouveau2==2.4.104-1 +libdrm-radeon1==2.4.104-1 +libdrm2==2.4.104-1 +libdv4==1.0.0-13 +libdw-dev==0.183-1 +libdw1==0.183-1 +libdynaloader-functions-perl==0.003-1.1 +libeatmydata1==105-9 +libedit-dev==3.1-20191231-2+b1 +libedit2==3.1-20191231-2+b1 +libegl-dev==1.3.2-1 +libegl-mesa0==20.3.5-1 +libegl1==1.3.2-1 +libegl1-mesa-dev==20.3.5-1 +libel-api-java==3.0.0-3 +libelf-dev==0.183-1 +libelf1==0.183-1 +libemail-address-xs-perl==1.04-1+b3 +libencode-locale-perl==1.05-1.1 +libepoxy-dev==1.5.5-1 +libepoxy0==1.5.5-1 +liberror-perl==0.17029-1 +libestr0==0.1.10-2.1+b1 +libeval-closure-perl==0.14-1 +libevdev2==1.11.0+dfsg-1 +libevent-2.1-7==2.1.12-stable-1 +libevent-core-2.1-7==2.1.12-stable-1 +libevent-dev==2.1.12-stable-1 +libevent-extra-2.1-7==2.1.12-stable-1 +libevent-openssl-2.1-7==2.1.12-stable-1 +libevent-pthreads-2.1-7==2.1.12-stable-1 +libexception-class-perl==1.44-1 +libexecs0==1.3-1 +libexpat1==2.2.10-2+deb11u5 +libexpat1-dev==2.2.10-2+deb11u5 +libexplain-dev==1.4.D001-11 +libexplain51==1.4.D001-11 +libexporter-tiny-perl==1.002002-1 +libfabric1==1.11.0-2 +libfakeroot==1.25.3-1.1 +libfastjson4==0.99.9-1 +libfcgi-bin==2.4.2-2 +libfcgi-perl==0.79+ds-2 +libfcgi0ldbl==2.4.2-2 +libfdt1==1.6.0-1 +libffi-dev==3.3-6 +libfftw3-double3==3.3.8-2 +libfido2-1==1.6.0-2 +libfido2-dev==1.6.0-2 +libfile-basedir-perl==0.08-1 +libfile-chdir-perl==0.1008-1.1 +libfile-copy-recursive-perl==0.45-1 +libfile-desktopentry-perl==0.22-2 +libfile-dirlist-perl==0.05-2 +libfile-fcntllock-perl==0.22-3+b7 +libfile-find-rule-perl==0.34-1 +libfile-homedir-perl==1.006-1 +libfile-listing-perl==6.14-1 +libfile-mimeinfo-perl==0.30-1 +libfile-slurp-perl==9999.32-1 +libfile-stripnondeterminism-perl==1.12.0-1 +libfile-touch-perl==0.11-1 +libfile-which-perl==1.23-1 +libfl-dev==2.6.4-8 +libfl2==2.6.4-8 +libflac8==1.3.3-2+deb11u1 +libflite1==2.2-2 +libfont-afm-perl==1.20-3 +libfont-ttf-perl==1.06-1.1 +libfontbox-java==1:1.8.16-2 +libfontbox2-java==2.0.23-1 +libfontconfig-dev==2.13.1-4.2 +libfontconfig1==2.13.1-4.2 +libfontconfig1-dev==2.13.1-4.2 +libfontenc1==1:1.1.4-1 +libfop-java==1:2.5-3 +libfreetype-dev==2.10.4+dfsg-1+deb11u1 +libfreetype6==2.10.4+dfsg-1+deb11u1 +libfreetype6-dev==2.10.4+dfsg-1+deb11u1 +libfribidi-dev==1.0.8-2+deb11u1 +libfribidi0==1.0.8-2+deb11u1 +libfstrm0==0.6.0-1+b1 +libgbm1==20.3.5-1 +libgc1==1:8.0.4-3 +libgcc-10-dev==10.2.1-6 +libgd-perl==2.73-1+b1 +libgd3==2.3.0-2 +libgdbm-compat4==1.19-2 +libgdbm6==1.19-2 +libgdk-pixbuf-2.0-0==2.42.2+dfsg-1+deb11u1 +libgdk-pixbuf-2.0-dev==2.42.2+dfsg-1+deb11u1 +libgdk-pixbuf2.0-bin==2.42.2+dfsg-1+deb11u1 +libgdk-pixbuf2.0-common==2.42.2+dfsg-1+deb11u1 +libgeronimo-annotation-1.3-spec-java==1.3-1 +libgeronimo-interceptor-3.0-spec-java==1.0.1-4 +libgetopt-long-descriptive-perl==0.105-1 +libgfortran5==10.2.1-6 +libgif7==5.1.9-2 +libgirepository-1.0-1==1.66.1-1+b1 +libgirepository1.0-dev==1.66.1-1+b1 +libgit-wrapper-perl==0.048-1 +libgitlab-api-v4-perl==0.26-1 +libgl-dev==1.3.2-1 +libgl1==1.3.2-1 +libgl1-mesa-dri==20.3.5-1 +libglapi-mesa==20.3.5-1 +libgles-dev==1.3.2-1 +libgles1==1.3.2-1 +libgles2==1.3.2-1 +libglib2.0-0==2.66.8-1 +libglib2.0-bin==2.66.8-1 +libglib2.0-data==2.66.8-1 +libglib2.0-dev==2.66.8-1 +libglib2.0-dev-bin==2.66.8-1 +libglu1-mesa==9.0.1-1 +libglu1-mesa-dev==9.0.1-1 +libglvnd-dev==1.3.2-1 +libglvnd0==1.3.2-1 +libglx-dev==1.3.2-1 +libglx-mesa0==20.3.5-1 +libglx0==1.3.2-1 +libgme0==0.6.3-2 +libgmock-dev==1.10.0.20201025-1.1 +libgmp-dev==2:6.2.1+dfsg-1+deb11u1 +libgmpxx4ldbl==2:6.2.1+dfsg-1+deb11u1 +libgnutls-dane0==3.7.1-5+deb11u3 +libgomp1==10.2.1-6 +libgoogle-perftools4==2.8.1-1 +libgpgme11==1.14.0-1+b2 +libgpm2==1.20.7-8 +libgraphite2-3==1.3.14-1 +libgraphite2-dev==1.3.14-1 +libgs9==9.53.3~dfsg-7+deb11u2 +libgs9-common==9.53.3~dfsg-7+deb11u2 +libgsasl7==1.10.0-4+deb11u1 +libgsm1==1.0.18-2 +libgssrpc4==1.18.3-6+deb11u3 +libgstreamer-plugins-base1.0-0==1.18.4-2 +libgstreamer1.0-0==1.18.4-2.1 +libgtest-dev==1.10.0.20201025-1.1 +libgtk-3-0==3.24.24-4+deb11u2 +libgtk-3-bin==3.24.24-4+deb11u2 +libgtk-3-common==3.24.24-4+deb11u2 +libgtk-3-dev==3.24.24-4+deb11u2 +libgts-0.7-5==0.7.6+darcs121130-4+b1 +libgts-bin==0.7.6+darcs121130-4+b1 +libguava-java==29.0-6 +libgudev-1.0-0==234-1 +libguice-java==4.2.3-2 +libgvc6==2.42.2-5 +libgvpr2==2.42.2-5 +libharfbuzz-dev==2.7.4-1 +libharfbuzz-gobject0==2.7.4-1 +libharfbuzz-icu0==2.7.4-1 +libharfbuzz0b==2.7.4-1 +libhash-fieldhash-perl==0.15-1+b3 +libhawtjni-runtime-java==1.17-1 +libheif1==1.11.0-1 +libhtml-form-perl==6.07-1 +libhtml-format-perl==2.12-1.1 +libhtml-html5-entities-perl==0.004-1.1 +libhtml-parser-perl==3.75-1+b1 +libhtml-tagset-perl==3.20-4 +libhtml-tree-perl==5.07-2 +libhttp-cookies-perl==6.10-1 +libhttp-daemon-perl==6.12-1+deb11u1 +libhttp-date-perl==6.05-1 +libhttp-message-perl==6.28-1 +libhttp-negotiate-perl==6.01-1 +libhttp-tiny-multipart-perl==0.08-1.1 +libhttpclient-java==4.5.13-2 +libhttpcore-java==4.4.14-1 +libhwloc-plugins==2.4.1+dfsg-1 +libhwloc15==2.4.1+dfsg-1 +libiberty-dev==20210106-1 +libibverbs1==33.2-1 +libice-dev==2:1.0.10-1 +libice6==2:1.0.10-1 +libicu-dev==67.1-7 +libicu67==67.1-7 +libidn11==1.33-3 +libiec61883-0==1.2.0-4 +libigdgmm11==20.4.1+ds1-1 +libijs-0.35==0.35-15 +libilmbase25==2.5.4-1 +libimagequant0==2.12.2-1.1 +libimport-into-perl==1.002005-1 +libinput-bin==1.16.4-3 +libinput10==1.16.4-3 +libio-html-perl==1.004-2 +libio-prompter-perl==0.004015-1 +libio-pty-perl==1:1.15-2 +libio-sessiondata-perl==1.03-1.1 +libio-socket-ssl-perl==2.069-1 +libio-string-perl==1.08-3.1 +libio-stringy-perl==2.111-3 +libip4tc-dev==1.8.7-1 +libip4tc2==1.8.7-1 +libip6tc-dev==1.8.7-1 +libip6tc2==1.8.7-1 +libipc-run-perl==20200505.0-1 +libipc-run3-perl==0.048-2 +libipc-system-simple-perl==1.30-1 +libipt2==2.0.3-1 +libiptc-dev==1.8.7-1 +libirs-export161==1:9.11.19+dfsg-2.1 +libisc-export1105==1:9.11.19+dfsg-2.1 +libisccc-export161==1:9.11.19+dfsg-2.1 +libisccfg-export163==1:9.11.19+dfsg-2.1 +libisl23==0.23-1 +libiterator-perl==0.03+ds1-1.1 +libiterator-util-perl==0.02+ds1-1.1 +libitext1-java==1.4-7 +libitm1==10.2.1-6 +libjack-jackd2-0==1.9.17~dfsg-1 +libjansi-java==1.18-1 +libjansi-native-java==1.8-1 +libjansson-dev==2.13.1-1.1 +libjansson4==2.13.1-1.1 +libjaxen-java==1.1.6-4 +libjaxp1.3-java==1.3.05-6 +libjbig0==2.1-3.1+b2 +libjbig2dec0==0.19-2 +libjemalloc-dev==5.2.1-3 +libjemalloc2==5.2.1-3 +libjetty9-java==9.4.39-3+deb11u1 +libjpeg62-turbo==1:2.0.6-4 +libjq1==1.6-2.1 +libjs-bootstrap4==4.5.2+dfsg1-8~deb11u1 +libjs-d3==3.5.17-4 +libjs-jquery==3.5.1+dfsg+~3.5.5-7 +libjs-jquery-hotkeys==0~20130707+git2d51e3a9+dfsg-2.1 +libjs-jquery-isonscreen==1.2.0-1.1 +libjs-jquery-metadata==12-3 +libjs-jquery-tablesorter==1:2.31.3+dfsg1-1 +libjs-jquery-throttle-debounce==1.1+dfsg.1-1.1 +libjs-popper.js==1.16.1+ds-3 +libjs-sizzle==2.3.5+ds-2 +libjs-sphinxdoc==3.4.3-2 +libjs-underscore==1.9.1~dfsg-3 +libjson-c-dev==0.15-2 +libjson-c5==0.15-2 +libjson-glib-1.0-0==1.6.2-1 +libjson-glib-1.0-common==1.6.2-1 +libjson-maybexs-perl==1.004003-1 +libjson-perl==4.03000-1 +libjson-xs-perl==4.030-1+b1 +libjsoncpp24==1.9.4-4 +libjsp-api-java==2.3.4-3 +libjsr305-java==0.1~+svn49-11 +libjtidy-java==7+svn20110807-5 +libjudy-dev==1.0.5-5+b2 +libjudydebian1==1.0.5-5+b2 +libjxr-tools==1.1-6+b1 +libjxr0==1.1-6+b1 +libkadm5clnt-mit12==1.18.3-6+deb11u3 +libkadm5srv-mit12==1.18.3-6+deb11u3 +libkdb5-10==1.18.3-6+deb11u3 +libkmod2==28-1 +libkpathsea6==2020.20200327.54578-7 +libkrb5-dev==1.18.3-6+deb11u3 +libksba8==1.5.0-3+deb11u2 +liblab-gamut1==2.42.2-5 +liblapack3==3.9.0-3 +liblcms2-2==2.12~rc1-2 +libldap-2.4-2==2.4.57+dfsg-3+deb11u1 +libldap-common==2.4.57+dfsg-3+deb11u1 +libldap2-dev==2.4.57+dfsg-3+deb11u1 +liblilv-0-0==0.24.12-2 +liblist-compare-perl==0.55-1 +liblist-moreutils-perl==0.430-2 +liblist-moreutils-xs-perl==0.430-2 +liblist-someutils-perl==0.58-1 +liblist-someutils-xs-perl==0.58-2+b1 +liblist-utilsby-perl==0.11-1 +libllvm11==1:11.0.1-2 +liblmdb0==0.9.24-1 +liblocale-gettext-perl==1.07-4+b1 +liblog-any-adapter-screen-perl==0.140-1 +liblog-any-perl==1.709-1 +liblog4j1.2-java==1.2.17-10+deb11u1 +liblognorm5==2.0.5-1.1 +liblqr-1-0==0.4.2-2.1 +liblsan0==10.2.1-6 +libltdl-dev==2.4.6-15 +libltdl7==2.4.6-15 +liblua5.1-0==5.1.5-8.1+b3 +liblua5.1-0-dev==5.1.5-8.1+b3 +liblua5.3-0==5.3.3-1.1+b1 +liblvm2cmd2.03==2.03.11-2.1 +liblwp-mediatypes-perl==6.04-1 +liblwp-protocol-https-perl==6.10-1 +liblzma-dev==5.2.5-2.1~deb11u1 +liblzo2-2==2.10-2 +liblzo2-dev==2.10-2 +libmagic-mgc==1:5.39-3 +libmagic1==1:5.39-3 +libmagickcore-6.q16-6==8:6.9.11.60+dfsg-1.3+deb11u1 +libmagickcore-6.q16-6-extra==8:6.9.11.60+dfsg-1.3+deb11u1 +libmagickwand-6.q16-6==8:6.9.11.60+dfsg-1.3+deb11u1 +libmail-sendmail-perl==0.80-1.1 +libmailtools-perl==2.21-1 +libmailutils7==1:3.10-3+b1 +libmariadb-dev==1:10.5.18-0+deb11u1 +libmariadb-dev-compat==1:10.5.18-0+deb11u1 +libmariadb3==1:10.5.18-0+deb11u1 +libmarkdown2==2.2.6-1 +libmaven-archiver-java==3.2.0-2.1 +libmaven-clean-plugin-java==3.1.0-1 +libmaven-common-artifact-filters-java==3.1.1-1 +libmaven-compiler-plugin-java==3.8.1-4 +libmaven-file-management-java==3.0.0-1 +libmaven-filtering-java==3.1.1-1 +libmaven-jar-plugin-java==3.1.2-1 +libmaven-parent-java==31-2 +libmaven-plugin-tools-java==3.6.0-1 +libmaven-reporting-api-java==3.0-1.1 +libmaven-reporting-exec-java==1.4-3 +libmaven-reporting-impl-java==3.0.0-2 +libmaven-resolver-java==1.4.2-3 +libmaven-resources-plugin-java==3.1.0-1 +libmaven-shared-incremental-java==1.1-3 +libmaven-shared-io-java==3.0.0-3 +libmaven-shared-utils-java==3.3.0-1+deb11u1 +libmaven-site-plugin-java==3.6-4 +libmaven3-core-java==3.6.3-5 +libmaxminddb0==1.5.2-1 +libmd-dev==1.0.3-3 +libmd0==1.0.3-3 +libmd4c0==0.4.7-2 +libmfx1==21.1.0-1 +libmime-tools-perl==5.509-1 +libmnl-dev==1.0.4-3 +libmnl0==1.0.4-3 +libmodule-implementation-perl==0.09-1.1 +libmodule-runtime-conflicts-perl==0.003-1.1 +libmodule-runtime-perl==0.016-1 +libmoo-perl==2.004004-1 +libmoose-perl==2.2014-2 +libmoosex-aliases-perl==0.11-1.1 +libmoox-aliases-perl==0.001006-1.1 +libmoox-struct-perl==0.020-1 +libmount-dev==2.36.1-8+deb11u1 +libmouse-perl==2.5.10-1+b1 +libmp3lame0==3.100-3 +libmpc3==1.2.0-1 +libmpdec3==2.5.1-1 +libmpfr6==4.1.0-3 +libmpg123-0==1.26.4-1 +libmro-compat-perl==0.13-1 +libmtdev1==1.1.6-1 +libmysofa1==1.2~dfsg0-1 +libnamespace-autoclean-perl==0.29-1 +libnamespace-clean-perl==0.27-1 +libnanomsg-dev==1.1.5+dfsg-1+b2 +libnanomsg5==1.1.5+dfsg-1+b2 +libncurses-dev==6.2+20201114-2 +libncurses5-dev==6.2+20201114-2 +libncurses6==6.2+20201114-2 +libncursesw6==6.2+20201114-2 +libndctl6==71.1-1 +libnet-dbus-perl==1.2.0-1+b1 +libnet-domain-tld-perl==1.75-1.1 +libnet-http-perl==6.20-1 +libnet-smtp-ssl-perl==1.04-1 +libnet-ssleay-perl==1.88-3+b1 +libnetfilter-conntrack-dev==1.0.8-3 +libnetfilter-conntrack3==1.0.8-3 +libnetpbm10==2:10.0-15.4 +libnetsnmptrapd40==5.9+dfsg-4+deb11u1 +libnewt-dev==0.52.21-4+b3 +libnewt0.52==0.52.21-4+b3 +libnfnetlink-dev==1.0.1-3+b1 +libnfnetlink0==1.0.1-3+b1 +libnftables1==0.9.8-3.1+deb11u1 +libnftnl-dev==1.1.9-1 +libnftnl11==1.1.9-1 +libnghttp2-14==1.43.0-1 +libnl-3-200==3.4.0-1+b1 +libnl-route-3-200==3.4.0-1+b1 +libnorm-dev==1.5.9+dfsg-2 +libnorm1==1.5.9+dfsg-2 +libnpth0==1.6-3 +libnsl-dev==1.3.0-2 +libnspr4==2:4.29-1 +libnss-systemd==247.3-7+deb11u1 +libnss3==2:3.61-1+deb11u3 +libntlm0==1.6-3 +libnuma-dev==2.0.12-1+b1 +libnuma1==2.0.12-1+b1 +libnumber-compare-perl==0.03-1.1 +libnumber-range-perl==0.12-1.1 +libobjc-10-dev==10.2.1-6 +libobjc4==10.2.1-6 +libobject-id-perl==0.1.2-2.1 +libogg0==1.3.4-0.1 +libomp-11-dev==1:11.0.1-2 +libomp5-11==1:11.0.1-2 +libonig5==6.9.6-1.1 +libopencsd-dev==0.14.4-1 +libopencsd0==0.14.4-1 +libopenexr25==2.5.4-2+deb11u1 +libopengl-dev==1.3.2-1 +libopengl0==1.3.2-1 +libopenjp2-7==2.4.0-3 +libopenmpi3==4.1.0-10 +libopenmpt0==0.4.11-1 +libopentest4j-java==1.2.0-2 +libopts25==1:5.18.16-4 +libopts25-dev==1:5.18.16-4 +libopus0==1.3.1-0.1 +liborc-0.4-0==1:0.4.32-1 +liboro-java==2.0.8a-14 +libosp5==1.5.2-13+b2 +libossp-uuid-perl==1.6.2-1.5+b9 +libossp-uuid16==1.6.2-1.5+b9 +libostyle1c2==1.4devel1-22 +libpackage-deprecationmanager-perl==0.17-1.1 +libpackage-stash-perl==0.39-1 +libpackage-stash-xs-perl==0.29-1+b2 +libpackagekit-glib2-18==1.2.2-2 +libpadwalker-perl==2.5-1+b1 +libpam-cap==1:2.44-1 +libpam-systemd==247.3-7+deb11u1 +libpam0g-dev==1.4.0-9+deb11u1 +libpango-1.0-0==1.46.2-3 +libpango1.0-dev==1.46.2-3 +libpangocairo-1.0-0==1.46.2-3 +libpangoft2-1.0-0==1.46.2-3 +libpangoxft-1.0-0==1.46.2-3 +libpaper-utils==1.1.28+b1 +libpaper1==1.1.28+b1 +libparams-classify-perl==0.015-1+b3 +libparams-util-perl==1.102-1+b1 +libparams-validate-perl==1.30-1+b1 +libparboiled-java==1.1.7-2.1 +libpath-iterator-rule-perl==1.014-1 +libpath-tiny-perl==0.118-1 +libpathplan4==2.42.2-5 +libpcap-dev==1.10.0-2 +libpcap0.8==1.10.0-2 +libpcap0.8-dev==1.10.0-2 +libpci-dev==1:3.7.0-5 +libpci3==1:3.7.0-5 +libpciaccess0==0.16-1 +libpcre16-3==2:8.39-13 +libpcre2-16-0==10.36-2+deb11u1 +libpcre2-32-0==10.36-2+deb11u1 +libpcre2-dev==10.36-2+deb11u1 +libpcre2-posix2==10.36-2+deb11u1 +libpcre3-dev==2:8.39-13 +libpcre32-3==2:8.39-13 +libpcrecpp0v5==2:8.39-13 +libpcsclite-dev==1.9.1-1 +libpcsclite1==1.9.1-1 +libpdfbox-java==1:1.8.16-2 +libpegdown-java==1.6.0-1.1 +libperl-dev==5.32.1-4+deb11u2 +libperl5.32==5.32.1-4+deb11u2 +libperlio-gzip-perl==0.19-1+b7 +libpfm4==4.11.1+git32-gd0b85fb-1 +libpgm-5.3-0==5.3.128~dfsg-2 +libpgm-dev==5.3.128~dfsg-2 +libpipeline1==1.5.3-1 +libpixman-1-0==0.40.0-1.1~deb11u1 +libpixman-1-dev==0.40.0-1.1~deb11u1 +libplexus-ant-factory-java==1.0~alpha2.1-4 +libplexus-archiver-java==3.6.0-2 +libplexus-bsh-factory-java==1.0~alpha7-4.1 +libplexus-build-api-java==0.0.7-4 +libplexus-cipher-java==1.8-2 +libplexus-classworlds-java==2.6.0-1 +libplexus-compiler-java==2.8.8-2 +libplexus-component-annotations-java==2.1.0-1 +libplexus-container-default-java==2.1.0-1 +libplexus-container-default1.5-java==2.1.0-1 +libplexus-i18n-java==1.0-beta-10-5 +libplexus-interpolation-java==1.26-1 +libplexus-io-java==3.2.0-1.1 +libplexus-languages-java==0.9.10-2 +libplexus-sec-dispatcher-java==1.4-4 +libplexus-utils2-java==3.3.0-1 +libplexus-velocity-java==1.2-3.1 +libpmem1==1.10-2+deb11u1 +libpmix2==4.0.0-4.1 +libpng-dev==1.6.37-3 +libpng-tools==1.6.37-3 +libpng16-16==1.6.37-3 +libpocketsphinx3==0.8+5prealpha+1-13 +libpod-constants-perl==0.19-2 +libpod-parser-perl==1.63-2 +libpolkit-agent-1-0==0.105-31+deb11u1 +libpolkit-gobject-1-0==0.105-31+deb11u1 +libpopt0==1.18-2 +libpostproc55==7:4.3.5-0+deb11u1 +libproc-processtable-perl==0.59-2+b1 +libprocps8==2:3.3.17-5 +libprotobuf-c1==1.3.3-1+b2 +libprotobuf-dev==3.12.4-1 +libprotobuf-lite23==3.12.4-1 +libprotobuf23==3.12.4-1 +libprotoc23==3.12.4-1 +libproxy1v5==0.4.17-1 +libpsl5==0.21.0-1.2 +libpsm-infinipath1==3.3+20.604758e7-6.1 +libpsm2-2==11.2.185-1 +libptexenc1==2020.20200327.54578-7 +libpthread-stubs0-dev==0.4-1 +libpulse0==14.2-2 +libpython2-dev==2.7.18-3 +libpython2-stdlib==2.7.18-3 +libpython2.7==2.7.18-8 +libpython2.7-dev==2.7.18-8 +libpython2.7-minimal==2.7.18-8 +libpython2.7-stdlib==2.7.18-8 +libpython3-all-dbg==3.9.2-3 +libpython3-all-dev==3.9.2-3 +libpython3-dbg==3.9.2-3 +libpython3-dev==3.9.2-3 +libpython3-stdlib==3.9.2-3 +libpython3.9==3.9.2-1 +libpython3.9-dbg==3.9.2-1 +libpython3.9-dev==3.9.2-1 +libpython3.9-minimal==3.9.2-1 +libpython3.9-stdlib==3.9.2-1 +libqdox-java==1.12.1-3 +libqdox2-java==2.0.0-1 +libqt5concurrent5==5.15.2+dfsg-9 +libqt5core5a==5.15.2+dfsg-9 +libqt5dbus5==5.15.2+dfsg-9 +libqt5gui5==5.15.2+dfsg-9 +libqt5network5==5.15.2+dfsg-9 +libqt5opengl5==5.15.2+dfsg-9 +libqt5opengl5-dev==5.15.2+dfsg-9 +libqt5printsupport5==5.15.2+dfsg-9 +libqt5sql5==5.15.2+dfsg-9 +libqt5sql5-sqlite==5.15.2+dfsg-9 +libqt5svg5==5.15.2-3 +libqt5test5==5.15.2+dfsg-9 +libqt5widgets5==5.15.2+dfsg-9 +libqt5xml5==5.15.2+dfsg-9 +libquadmath0==10.2.1-6 +librabbitmq4==0.10.0-1 +libraw1394-11==2.1.2-2 +librdmacm1==33.2-1 +libre-engine-re2-perl==0.14-1 +libre2-9==20210201+dfsg-1 +libreadline-dev==8.1-1 +libreadline8==8.1-1 +libreadonly-perl==2.050-3 +libref-util-perl==0.204-1 +libref-util-xs-perl==0.117-1+b3 +libregexp-assemble-perl==0.36-1.1 +libregexp-pattern-license-perl==3.4.0-1 +libregexp-pattern-perl==0.2.14-1 +librest-0.7-0==0.8.1-1.1 +librhash0==1.4.1-2 +librole-tiny-perl==2.002004-1 +librrd-dev==1.7.2-3+b7 +librrd8==1.7.2-3+b7 +librsvg2-2==2.50.3+dfsg-1 +librsvg2-common==2.50.3+dfsg-1 +librtmp1==2.4+20151223.gitfa8646d.1-2+b2 +librubberband2==1.9.0-1 +libruby2.7==2.7.4-1+deb11u1 +libsamplerate0==0.2.1+ds0-1 +libsasl2-2==2.1.27+dfsg-2.1+deb11u1 +libsasl2-modules==2.1.27+dfsg-2.1+deb11u1 +libsasl2-modules-db==2.1.27+dfsg-2.1+deb11u1 +libsaxon-java==1:6.5.5-12 +libselinux1-dev==3.1-3 +libsensors-config==1:3.6.0-7 +libsensors-dev==1:3.6.0-7 +libsensors4-dev==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libsepol1-dev==3.1-1 +libserd-0-0==0.30.10-2 +libsereal-decoder-perl==4.018+ds-1+b1 +libsereal-encoder-perl==4.018+ds-1+b1 +libservlet-api-java==4.0.1-2 +libservlet3.1-java==1:4.0.1-2 +libsgmls-perl==1.03ii-36 +libshine3==3.1.1-2 +libshout3==2.4.5-1+b1 +libsigsegv2==2.13-1 +libsisu-inject-java==0.3.4-2 +libsisu-plexus-java==0.3.4-3 +libslang2==2.3.2-5 +libslang2-dev==2.3.2-5 +libslf4j-java==1.7.30-1 +libslirp0==4.4.0-1+deb11u2 +libsm-dev==2:1.2.3-1 +libsm6==2:1.2.3-1 +libsnappy-java==1.1.8.3-1 +libsnappy-jni==1.1.8.3-1 +libsnappy1v5==1.1.8-1 +libsndfile1==1.0.31-2 +libsnmp-base==5.9+dfsg-4+deb11u1 +libsnmp-dev==5.9+dfsg-4+deb11u1 +libsnmp40==5.9+dfsg-4+deb11u1 +libsoap-lite-perl==1.27-1 +libsodium-dev==1.0.18-1 +libsodium23==1.0.18-1 +libsord-0-0==0.16.8-2 +libsort-key-perl==1.33-2+b3 +libsort-versions-perl==1.62-1 +libsoup-gnome2.4-1==2.72.0-2 +libsoup2.4-1==2.72.0-2 +libsource-highlight-common==3.1.9-3 +libsource-highlight4v5==3.1.9-3+b1 +libsoxr0==0.1.3-4 +libspeex1==1.2~rc1.2-1.1 +libsphinxbase3==0.8+5prealpha+1-12 +libspice-server1==0.14.3-2.1 +libsqlite3-0==3.34.1-3 +libsratom-0-0==0.6.8-1 +libsrt1.4-gnutls==1.4.2-1.3 +libssh-gcrypt-4==0.9.5-1+deb11u1 +libssh2-1==1.9.0-2 +libssl-dev==1.1.1n-0+deb11u4 +libstdc++-10-dev==10.2.1-6 +libstemmer0d==2.1.0-1 +libstrictures-perl==2.000006-1 +libstring-copyright-perl==0.003006-1 +libstring-escape-perl==2010.002-2 +libstring-shellquote-perl==1.04-1 +libsub-exporter-perl==0.987-1 +libsub-exporter-progressive-perl==0.001013-1 +libsub-identify-perl==0.14-1+b3 +libsub-install-perl==0.928-1.1 +libsub-name-perl==0.26-1+b1 +libsub-override-perl==0.09-2 +libsub-quote-perl==2.006006-1 +libsubunit-dev==1.4.0-3 +libsubunit0==1.4.0-3 +libsurefire-java==2.22.3-1 +libswitch-perl==2.17-2.1 +libswresample3==7:4.3.5-0+deb11u1 +libswscale5==7:4.3.5-0+deb11u1 +libsynctex2==2020.20200327.54578-7 +libsys-cpuaffinity-perl==1.13~03-1 +libsys-hostname-long-perl==1.5-2 +libsystemd-dev==247.3-7+deb11u1 +libtag1v5==1.11.1+dfsg.1-3 +libtag1v5-vanilla==1.11.1+dfsg.1-3 +libtask-weaken-perl==1.06-1 +libtcl8.6==8.6.11+dfsg-1 +libtcmalloc-minimal4==2.8.1-1 +libteckit0==2.5.10+ds1-3 +libtemplate-perl==2.27-1+b3 +libterm-readkey-perl==2.38-1+b2 +libtexlua53==2020.20200327.54578-7 +libtexluajit2==2020.20200327.54578-7 +libtext-charwidth-perl==0.04-10+b1 +libtext-glob-perl==0.11-1 +libtext-hogan-perl==2.03-1 +libtext-iconv-perl==1.7-7+b1 +libtext-levenshteinxs-perl==0.03-4+b8 +libtext-markdown-discount-perl==0.12-1+b1 +libtext-trim-perl==1.04-1 +libtext-unidecode-perl==1.30-1 +libtext-wrapi18n-perl==0.06-9 +libtext-xslate-perl==3.5.8-1+b1 +libthai-data==0.1.28-3 +libthai-dev==0.1.28-3 +libthai0==0.1.28-3 +libtheora0==1.1.1+dfsg.1-15 +libtie-ixhash-perl==1.23-2.1 +libtiff5==4.2.0-1+deb11u4 +libtime-duration-perl==1.21-1 +libtime-moment-perl==0.44-1+b3 +libtimedate-perl==2.3300-2 +libtinyxml2-8==8.0.0+dfsg-2 +libtinyxml2-dev==8.0.0+dfsg-2 +libtirpc-dev==1.3.1-1+deb11u1 +libtk8.6==8.6.11-2 +libtool==2.4.6-15 +libtool-bin==2.4.6-15 +libtry-tiny-perl==0.30-1 +libtsan0==10.2.1-6 +libtwolame0==0.4.0-2 +libtype-tiny-perl==1.012001-2 +libtype-tiny-xs-perl==0.022-1 +libtypes-serialiser-perl==1.01-1 +libubsan1==10.2.1-6 +libuchardet0==0.0.7-1 +libucx0==1.10.1~rc1+really.1.10.0-1 +libudev-dev==247.3-7+deb11u1 +libudfread0==1.1.1-1 +libunbound8==1.13.1-1 +libunicode-utf8-perl==0.62-1+b2 +libunivocity-parsers-java==2.8.3-2 +libunwind-dev==1.3.2-2 +libunwind8==1.3.2-2 +liburi-perl==5.08-1 +liburing1==0.7-3 +libusb-0.1-4==2:0.1.12-32 +libusb-1.0-0==2:1.0.24-3 +libusb-1.0-0-dev==2:1.0.24-3 +libusb-1.0-doc==2:1.0.24-3 +libusb-dev==2:0.1.12-32 +libusbredirparser1==0.8.0-1+b1 +libuv1==1.40.0-2 +libv4l-0==1.20.0-2 +libv4lconvert0==1.20.0-2 +libva-drm2==2.10.0-1 +libva-x11-2==2.10.0-1 +libva2==2.10.0-1 +libvariable-magic-perl==0.62-1+b3 +libvdeplug2==4.0.1-2 +libvdpau-va-gl1==0.4.2-1+b1 +libvdpau1==1.4-3 +libvelocity-tools-java==2.0-8 +libvidstab1.1==1.1.0-2+b1 +libvirglrenderer1==0.8.2-5+deb11u1 +libvirt-clients==7.0.0-3 +libvirt0==7.0.0-3 +libvisual-0.4-0==0.4.0-17 +libvorbis0a==1.3.7-1 +libvorbisenc2==1.3.7-1 +libvorbisfile3==1.3.7-1 +libvpx6==1.9.0-1 +libvte-2.91-0==0.62.3-1 +libvte-2.91-common==0.62.3-1 +libvulkan-dev==1.2.162.0-1 +libvulkan1==1.2.162.0-1 +libwacom-bin==1.8-2 +libwacom-common==1.8-2 +libwacom2==1.8-2 +libwagon-file-java==3.3.4-1 +libwagon-http-shaded-java==3.3.4-1 +libwagon-provider-api-java==3.3.4-1 +libwant-perl==0.29-1+b6 +libwavpack1==5.4.0-1 +libwayland-bin==1.18.0-2~exp1.1 +libwayland-client0==1.18.0-2~exp1.1 +libwayland-cursor0==1.18.0-2~exp1.1 +libwayland-dev==1.18.0-2~exp1.1 +libwayland-egl1==1.18.0-2~exp1.1 +libwayland-server0==1.18.0-2~exp1.1 +libwebp6==0.6.1-2.1 +libwebpdemux2==0.6.1-2.1 +libwebpmux3==0.6.1-2.1 +libwebsocket-api-java==1.1-2 +libwmf0.2-7==0.2.8.4-17 +libwoff1==1.0.2-1+b1 +libwrap0==7.6.q-31 +libwrap0-dev==7.6.q-31 +libwww-perl==6.52-1 +libwww-robotrules-perl==6.02-1 +libx11-6==2:1.7.2-1 +libx11-data==2:1.7.2-1 +libx11-dev==2:1.7.2-1 +libx11-protocol-perl==0.56-7.1 +libx11-xcb1==2:1.7.2-1 +libx264-160==2:0.160.3011+gitcde9a93-2.1 +libx265-192==3.4-2 +libx32asan6==10.2.1-6 +libx32atomic1==10.2.1-6 +libx32gcc-10-dev==10.2.1-6 +libx32gcc-s1==10.2.1-6 +libx32gomp1==10.2.1-6 +libx32itm1==10.2.1-6 +libx32quadmath0==10.2.1-6 +libx32stdc++6==10.2.1-6 +libx32ubsan1==10.2.1-6 +libxalan2-java==2.7.2-4 +libxapian30==1.4.18-3 +libxau-dev==1:1.0.9-1 +libxau6==1:1.0.9-1 +libxaw7==2:1.0.13-1.1 +libxbean-reflect-java==4.5-8 +libxcb-dri2-0==1.14-3 +libxcb-dri3-0==1.14-3 +libxcb-glx0==1.14-3 +libxcb-icccm4==0.4.1-1.1 +libxcb-image0==0.4.0-1+b3 +libxcb-keysyms1==0.4.0-1+b2 +libxcb-present0==1.14-3 +libxcb-randr0==1.14-3 +libxcb-render-util0==0.3.9-1+b1 +libxcb-render0==1.14-3 +libxcb-render0-dev==1.14-3 +libxcb-shape0==1.14-3 +libxcb-shm0==1.14-3 +libxcb-shm0-dev==1.14-3 +libxcb-sync1==1.14-3 +libxcb-util1==0.4.0-1+b1 +libxcb-xfixes0==1.14-3 +libxcb-xinerama0==1.14-3 +libxcb-xinput0==1.14-3 +libxcb-xkb1==1.14-3 +libxcb1==1.14-3 +libxcb1-dev==1.14-3 +libxcomposite-dev==1:0.4.5-1 +libxcomposite1==1:0.4.5-1 +libxcursor-dev==1:1.2.0-2 +libxcursor1==1:1.2.0-2 +libxdamage-dev==1:1.1.5-2 +libxdamage1==1:1.1.5-2 +libxdelta2==1.1.3-9.3 +libxdmcp-dev==1:1.1.2-3 +libxdmcp6==1:1.1.2-3 +libxencall1==4.14.5+86-g1c354767d5-1 +libxendevicemodel1==4.14.5+86-g1c354767d5-1 +libxenevtchn1==4.14.5+86-g1c354767d5-1 +libxenforeignmemory1==4.14.5+86-g1c354767d5-1 +libxengnttab1==4.14.5+86-g1c354767d5-1 +libxenhypfs1==4.14.5+86-g1c354767d5-1 +libxenmisc4.14==4.14.5+86-g1c354767d5-1 +libxenstore3.0==4.14.5+86-g1c354767d5-1 +libxentoolcore1==4.14.5+86-g1c354767d5-1 +libxentoollog1==4.14.5+86-g1c354767d5-1 +libxerces2-java==2.12.1-1 +libxext-dev==2:1.3.3-1.1 +libxext6==2:1.3.3-1.1 +libxfixes-dev==1:5.0.3-2 +libxfixes3==1:5.0.3-2 +libxft-dev==2.3.2-2 +libxft2==2.3.2-2 +libxi-dev==2:1.7.10-1 +libxi6==2:1.7.10-1 +libxinerama-dev==2:1.1.4-2 +libxinerama1==2:1.1.4-2 +libxkbcommon-dev==1.0.3-2 +libxkbcommon-x11-0==1.0.3-2 +libxkbcommon0==1.0.3-2 +libxkbfile1==1:1.1.0-1 +libxml-commons-external-java==1.4.01-5 +libxml-commons-resolver1.1-java==1.2-11 +libxml-libxml-perl==2.0134+dfsg-2+b1 +libxml-namespacesupport-perl==1.12-1.1 +libxml-parser-perl==2.46-2 +libxml-sax-base-perl==1.09-1.1 +libxml-sax-expat-perl==0.51-1 +libxml-sax-perl==1.02+dfsg-1 +libxml-simple-perl==2.25-1 +libxml-twig-perl==1:3.52-1 +libxml-xpathengine-perl==0.14-1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxml2-dev==2.9.10+dfsg-6.7+deb11u3 +libxml2-utils==2.9.10+dfsg-6.7+deb11u3 +libxmlgraphics-commons-java==2.4-2~deb11u1 +libxmlrpc-lite-perl==0.717-4 +libxmu6==2:1.1.2-2+b3 +libxmuu1==2:1.1.2-2+b3 +libxnvctrl0==470.141.03-1~deb11u1 +libxpm4==1:3.5.12-1 +libxrandr-dev==2:1.5.1-1 +libxrandr2==2:1.5.1-1 +libxrender-dev==1:0.9.10-1 +libxrender1==1:0.9.10-1 +libxshmfence1==1.3-1 +libxslt1.1==1.1.34-4+deb11u1 +libxss1==1:1.2.3-1 +libxt-dev==1:1.2.0-1 +libxt6==1:1.2.0-1 +libxtables-dev==1.8.7-1 +libxtables12==1.8.7-1 +libxtst-dev==2:1.2.3-1 +libxtst6==2:1.2.3-1 +libxv1==2:1.0.11-1 +libxvidcore4==2:1.3.7-1 +libxxf86dga1==2:1.1.4-1+b3 +libxxf86vm1==1:1.1.4-1+b2 +libxz-java==1.8-2 +libyajl2==2.1.0-3 +libyaml-0-2==0.2.2-1 +libyaml-dev==0.2.2-1 +libyaml-libyaml-perl==0.82+repack-1+b1 +libz3-4==4.8.10-1 +libz3-dev==4.8.10-1 +libzmq3-dev==4.3.4-1 +libzmq5==4.3.4-1 +libzvbi-common==0.2.35-18 +libzvbi0==0.2.35-18 +libzzip-0-13==0.13.62-3.3+deb11u1 +licensecheck==3.1.1-2 +lintian==2.104.0 +linux-compiler-gcc-10-x86==5.10.162-1 +linux-headers-5.10.0-21-amd64==5.10.162-1 +linux-headers-5.10.0-21-common==5.10.162-1 +linux-headers-amd64==5.10.162-1 +linux-kbuild-5.10==5.10.162-1 +linux-libc-dev==5.10.162-1 +linuxdoc-tools==0.9.82-1 +llvm-11==1:11.0.1-2 +llvm-11-runtime==1:11.0.1-2 +lmodern==2.004.5-6.1 +locales==2.31-13+deb11u5 +logrotate==3.18.0-2+deb11u1 +lsb-release==11.1.0 +lsof==4.93.2+dfsg-1.1 +lua-bitop==1.0.2-5 +lua-bitop-dev==1.0.2-5 +lua-cjson==2.1.0+dfsg-2.1 +lua-cjson-dev==2.1.0+dfsg-2.1 +lvm2==2.03.11-2.1 +lynx==2.9.0dev.6-3~deb11u1 +lynx-common==2.9.0dev.6-3~deb11u1 +lz4==1.9.3-2 +lzip==1.22-3 +lzop==1.04-2 +m4==1.4.18-5 +mailcap==3.69 +mailutils==1:3.10-3+b1 +mailutils-common==1:3.10-3 +make==4.3-4.1 +man-db==2.9.4-2 +man2html-base==1.6g-14 +manpages==5.10-1 +manpages-dev==5.10-1 +mariadb-common==1:10.5.18-0+deb11u1 +maven==3.6.3-5 +maven-debian-helper==2.6 +maven-repo-helper==1.10 +media-types==4.0.0 +mesa-va-drivers==20.3.5-1 +mesa-vdpau-drivers==20.3.5-1 +mesa-vulkan-drivers==20.3.5-1 +mime-support==3.66 +module-assistant==0.11.10 +mysql-common==5.8+1.0.7 +ncurses-term==6.2+20201114-2 +netbase==6.3 +netpbm==2:10.0-15.4 +nftables==0.9.8-3.1+deb11u1 +node-jquery==3.5.1+dfsg+~3.5.5-7 +ocl-icd-libopencl1==2.2.14-2 +openjade==1.4devel1-22 +openjdk-11-jdk==11.0.18+10-1~deb11u1 +openjdk-11-jdk-headless==11.0.18+10-1~deb11u1 +openjdk-11-jre==11.0.18+10-1~deb11u1 +openjdk-11-jre-headless==11.0.18+10-1~deb11u1 +opensp==1.5.2-13+b2 +openssh-client==1:8.4p1-5+deb11u1 +openssh-server==1:8.4p1-5+deb11u1 +openssh-sftp-server==1:8.4p1-5+deb11u1 +openssl==1.1.1n-0+deb11u4 +ovmf==2020.11-2+deb11u1 +packagekit==1.2.2-2 +packagekit-tools==1.2.2-2 +pango1.0-tools==1.46.2-3 +patch==2.7.6-7 +patchutils==0.4.2-1 +pbuilder==0.231 +pbzip2==1.1.13-1 +pci.ids==0.0~2021.02.08-1 +perl==5.32.1-4+deb11u2 +perl-modules-5.32==5.32.1-4+deb11u2 +perl-openssl-defaults==5 +php-cli==2:7.4+76 +php-codecoverage==9.2.5+dfsg-3 +php-common==2:76 +php-deepcopy==1.10.2-3 +php-doctrine-instantiator==1.4.0-1 +php-file-iterator==3.0.5-2 +php-invoker==3.1.1-2 +php-mbstring==2:7.4+76 +php-parser==4.10.4-1 +php-pear==1:1.10.12+submodules+notgz+20210212-1 +php-phar-io-manifest==2.0.1-2 +php-phar-io-version==3.0.4-1 +php-phpdocumentor-reflection-common==2.2.0-1 +php-phpdocumentor-reflection-docblock==5.2.2-1 +php-phpdocumentor-type-resolver==1.4.0-2 +php-phpspec-prophecy==1.12.2-1 +php-text-template==2.0.4-1 +php-timer==5.0.3-2 +php-tokenizer==1.2.0-1 +php-webmozart-assert==1.9.1-2 +php-xml==2:7.4+76 +php7.4-cli==7.4.33-1+deb11u3 +php7.4-common==7.4.33-1+deb11u3 +php7.4-json==7.4.33-1+deb11u3 +php7.4-mbstring==7.4.33-1+deb11u3 +php7.4-opcache==7.4.33-1+deb11u3 +php7.4-readline==7.4.33-1+deb11u3 +php7.4-xml==7.4.33-1+deb11u3 +phpunit==9.5.2-1 +phpunit-cli-parser==1.0.1-1 +phpunit-code-unit==1.0.8-1 +phpunit-code-unit-reverse-lookup==2.0.3-2 +phpunit-comparator==4.0.6-1 +phpunit-complexity==2.0.2-1 +phpunit-diff==4.0.4-1 +phpunit-environment==5.1.3-2 +phpunit-exporter==4.0.3-2 +phpunit-global-state==5.0.2-1 +phpunit-lines-of-code==1.0.3-1 +phpunit-object-enumerator==4.0.4-1 +phpunit-object-reflector==2.0.4-1 +phpunit-recursion-context==4.0.4-1 +phpunit-resource-operations==3.0.3-2 +phpunit-type==2.3.1-1 +phpunit-version==3.0.2-2 +pigz==2.6-1 +pinentry-curses==1.1.0-4 +pixz==1.0.7-1 +pkg-config==0.29.2-1 +pkg-php-tools==1.40 +po-debconf==1.0.21+nmu1 +pocketsphinx-en-us==0.8+5prealpha+1-13 +policykit-1==0.105-31+deb11u1 +poppler-data==0.4.10-1 +pps-tools==1.0.2-2 +preview-latex-style==12.2-1 +pristine-tar==1.49 +procmail==3.22-26+deb11u1 +procps==2:3.3.17-5 +protobuf-compiler==3.12.4-1 +psmisc==23.4-2 +psutils==1.17.dfsg-4 +publicsuffix==20220811.1734-0+deb11u1 +pylint==2.7.2-3 +python-all==2.7.18-3 +python-apt-common==2.2.1 +python-babel-localedata==2.8.0+dfsg.1-7 +python-is-python3==3.9.2-1 +python-pip-whl==20.3.4-4+deb11u1 +python-pkg-resources==44.1.1-1 +python-setuptools==44.1.1-1 +python2==2.7.18-3 +python2-dev==2.7.18-3 +python2-minimal==2.7.18-3 +python2.7==2.7.18-8 +python2.7-dev==2.7.18-8 +python2.7-minimal==2.7.18-8 +python3==3.9.2-3 +python3-alabaster==0.7.8-1.1 +python3-all==3.9.2-3 +python3-all-dbg==3.9.2-3 +python3-all-dev==3.9.2-3 +python3-apt==2.2.1 +python3-astroid==2.5.1-1 +python3-attr==20.3.0-1 +python3-automat==20.2.0-1 +python3-babel==2.8.0+dfsg.1-7 +python3-bcrypt==3.1.7-4 +python3-bs4==4.9.3-1 +python3-certifi==2020.6.20-1 +python3-cffi-backend==1.14.5-1 +python3-chardet==4.0.0-1 +python3-click==7.1.2-1 +python3-colorama==0.4.4-1 +python3-constantly==15.1.0-2 +python3-cov-core==1.15.0-3 +python3-coverage==5.1+dfsg.1-2+b2 +python3-cryptography==3.3.2-1 +python3-dateutil==2.8.1-6 +python3-dbg==3.9.2-3 +python3-dbus==1.2.16-5 +python3-debian==0.1.39 +python3-dev==3.9.2-3 +python3-distro-info==1.0 +python3-distutils==3.9.2-1 +python3-docutils==0.16+dfsg-4 +python3-gi==3.38.0-2 +python3-gpg==1.14.0-1+b2 +python3-hamcrest==1.9.0-3 +python3-html5lib==1.1-3 +python3-hyperlink==19.0.0-2 +python3-idna==2.10-1 +python3-imagesize==1.2.0-2 +python3-importlib-metadata==1.6.0-2 +python3-incremental==17.5.0-1 +python3-iniconfig==1.1.1-1 +python3-ipaddr==2.2.0-4 +python3-isort==5.6.4-1 +python3-jinja2==2.11.3-1 +python3-lazy-object-proxy==1.5.2-1 +python3-lib2to3==3.9.2-1 +python3-logilab-common==1.8.1-1 +python3-lxml==4.6.3+dfsg-0.1+deb11u1 +python3-magic==2:0.4.20-3 +python3-mako==1.1.3+ds1-2 +python3-markdown==3.3.4-1 +python3-markupsafe==1.1.1-1+b3 +python3-mccabe==0.6.1-3 +python3-minimal==3.9.2-3 +python3-more-itertools==4.2.0-3 +python3-mypy-extensions==0.4.3-2 +python3-nose2==0.9.2-1 +python3-olefile==0.46-3 +python3-openssl==20.0.1-1 +python3-packaging==20.9-2 +python3-parse==1.6.6-0.2 +python3-pil==8.1.2+dfsg-0.3+deb11u1 +python3-pkg-resources==52.0.0-4 +python3-pluggy==0.13.0-6 +python3-py==1.10.0-1 +python3-pyasn1==0.4.8-1 +python3-pyasn1-modules==0.2.1-1 +python3-pycurl==7.43.0.6-5 +python3-pygments==2.7.1+dfsg-2.1 +python3-pyparsing==2.4.7-1 +python3-pytest==6.0.2-2 +python3-pytest-cov==2.10.1-1 +python3-requests==2.25.1+dfsg-2 +python3-roman==2.0.0-5 +python3-service-identity==18.1.0-6 +python3-setuptools==52.0.0-4 +python3-six==1.16.0-2 +python3-snowballstemmer==2.1.0-1 +python3-software-properties==0.96.20.2-2.1 +python3-soupsieve==2.2.1-1 +python3-sphinx==3.4.3-2 +python3-sphinx-rtd-theme==0.5.1+dfsg-1 +python3-stdeb==0.10.0-1 +python3-tk==3.9.2-1 +python3-toml==0.10.1-1 +python3-twisted==20.3.0-7+deb11u1 +python3-twisted-bin==20.3.0-7+deb11u1 +python3-typing-extensions==3.7.4.3-1 +python3-tz==2021.1-1 +python3-unidiff==0.5.5-2 +python3-urllib3==1.26.5-1~exp1 +python3-venv==3.9.2-3 +python3-webencodings==0.5.1-2 +python3-wheel==0.34.2-1 +python3-wrapt==1.12.1-4+b1 +python3-xdg==0.27-2 +python3-zipp==1.0.0-3 +python3-zope.interface==5.2.0-1 +python3.9==3.9.2-1 +python3.9-dbg==3.9.2-1 +python3.9-dev==3.9.2-1 +python3.9-minimal==3.9.2-1 +python3.9-venv==3.9.2-1 +qemu-system-common==1:5.2+dfsg-11+deb11u2 +qemu-system-data==1:5.2+dfsg-11+deb11u2 +qemu-system-gui==1:5.2+dfsg-11+deb11u2 +qemu-system-x86==1:5.2+dfsg-11+deb11u2 +qemu-utils==1:5.2+dfsg-11+deb11u2 +qt5-gtk-platformtheme==5.15.2+dfsg-9 +qt5-qmake==5.15.2+dfsg-9 +qt5-qmake-bin==5.15.2+dfsg-9 +qtbase5-dev==5.15.2+dfsg-9 +qtbase5-dev-tools==5.15.2+dfsg-9 +qtchooser==66-2 +qttranslations5-l10n==5.15.2-2 +quilt==0.66-2.1 +rake==13.0.3-1 +readline-common==8.1-1 +rrdtool==1.7.2-3+b7 +rsync==3.2.3-4+deb11u1 +rsyslog==8.2102.0-2+deb11u1 +ruby==1:2.7+2 +ruby-all-dev==1:2.7+2 +ruby-asciidoctor==2.0.12-2 +ruby-minitest==5.13.0-1 +ruby-net-telnet==0.1.1-2 +ruby-power-assert==1.1.7-2 +ruby-rubygems==3.2.5-2 +ruby-test-unit==3.3.9-1 +ruby-xmlrpc==0.3.0-2 +ruby2.7==2.7.4-1+deb11u1 +ruby2.7-dev==2.7.4-1+deb11u1 +ruby2.7-doc==2.7.4-1+deb11u1 +rubygems-integration==1.18 +runit-helper==2.10.3 +sbsigntool==0.9.2-2 +seabios==1.14.0-2 +sensible-utils==0.0.14 +sgml-base==1.30 +sgml-data==2.0.11+nmu1 +sgmlspl==1.03ii-36 +shared-mime-info==2.0-1 +sharutils==1:4.15.2-5 +shellcheck==0.7.1-1+deb11u1 +slirp4netns==1.0.1-2 +software-properties-common==0.96.20.2-2.1 +sphinx-common==3.4.3-2 +sphinx-rtd-theme-common==0.5.1+dfsg-1 +squashfs-tools==1:4.4-2+deb11u2 +stgit==0.19-1 +strace==5.10-1 +sudo==1.9.5p2-3+deb11u1 +swig==4.0.2-1 +swig4.0==4.0.2-1 +systemd==247.3-7+deb11u1 +systemd-sysv==247.3-7+deb11u1 +systemd-timesyncd==247.3-7+deb11u1 +t1utils==1.41-4 +tcl==8.6.11+1 +tcl8.6==8.6.11+dfsg-1 +teckit==2.5.10+ds1-3 +telnet==0.17-42 +termit==3.1-1 +tex-common==6.16 +tex-gyre==20180621-3.1 +texi2html==1.82+dfsg1-6 +texinfo==6.7.0.dfsg.2-6 +texlive-base==2020.20210202-3 +texlive-binaries==2020.20200327.54578-7 +texlive-fonts-recommended==2020.20210202-3 +texlive-formats-extra==2020.20210202-3 +texlive-latex-base==2020.20210202-3 +texlive-latex-extra==2020.20210202-3 +texlive-latex-recommended==2020.20210202-3 +texlive-pictures==2020.20210202-3 +texlive-plain-generic==2020.20210202-3 +texlive-xetex==2020.20210202-3 +thin-provisioning-tools==0.9.0-1 +time==1.9-0.1 +tipa==2:1.3-20.1 +tk==8.6.11+1 +tk8.6==8.6.11-2 +tk8.6-blt2.5==2.5.3+dfsg-4.1 +ucf==3.0043 +unattended-upgrades==2.8 +unzip==6.0-26+deb11u1 +uuid-dev==2.36.1-8+deb11u1 +va-driver-all==2.10.0-1 +vdpau-driver-all==1.4-3 +velocity==1.7-6 +vim==2:8.2.2434-3+deb11u1 +vim-common==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 +wayland-protocols==1.20-1 +wdiff==1.2.2-2+b1 +wget==1.21-1+deb11u1 +x11-common==1:7.7+22 +x11-utils==7.7+5 +x11-xserver-utils==7.7+8 +x11proto-dev==2020.1-1 +x11proto-input-dev==2020.1-1 +x11proto-randr-dev==2020.1-1 +x11proto-record-dev==2020.1-1 +x11proto-xext-dev==2020.1-1 +x11proto-xinerama-dev==2020.1-1 +xauth==1:1.1-1 +xdelta==1.1.3-9.3 +xdelta3==3.0.11-dfsg-1+b1 +xdg-user-dirs==0.17-2 +xdg-utils==1.1.3-4.1 +xfonts-encodings==1:1.0.4-2.1 +xfonts-utils==1:7.7+6 +xkb-data==2.29-2 +xml-core==0.18+nmu1 +xorg-sgml-doctools==1:1.11-1.1 +xsltproc==1.1.34-4+deb11u1 +xtrans-dev==1.4.0-1 +xxd==2:8.2.2434-3+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 +zip==3.0-12 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..29fe1b59d419 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-arm64 @@ -0,0 +1,22 @@ +binutils-aarch64-linux-gnu==2.35.2-2 +binutils-arm-linux-gnueabihf==2.35.2-2 +cpp-10-arm-linux-gnueabihf==10.2.1-6cross1 +cpp-arm-linux-gnueabihf==4:10.2.1-1 +dctrl-tools==2.24-3 +dvipng==1.15-1.1 +gcc-10-arm-linux-gnueabihf==10.2.1-6cross1 +gcc-10-arm-linux-gnueabihf-base==10.2.1-6cross1 +gcc-10-cross-base==10.2.1-6cross1 +gcc-arm-linux-gnueabihf==4:10.2.1-1 +libasan6-armhf-cross==10.2.1-6cross1 +libatomic1-armhf-cross==10.2.1-6cross1 +libc6-armhf-cross==2.31-9cross4 +libgcc-10-dev-armhf-cross==10.2.1-6cross1 +libgcc-s1-armhf-cross==10.2.1-6cross1 +libgomp1-armhf-cross==10.2.1-6cross1 +libstdc++6-armhf-cross==10.2.1-6cross1 +libubsan1-armhf-cross==10.2.1-6cross1 +libxslt1-dev==1.1.34-4+deb11u1 +linux-headers-5.10.0-21-arm64==5.10.162-1 +linux-headers-arm64==5.10.162-1 +nodejs==14.21.3-deb-1nodesource1 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..a3be7dd829cb --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-deb-bullseye-armhf @@ -0,0 +1,10 @@ +binutils-arm-linux-gnueabihf==2.35.2-2 +dctrl-tools==2.24-3 +dvipng==1.15-1.1 +golang-1.15-go==1.15.15-1~deb11u4 +golang-1.15-src==1.15.15-1~deb11u4 +libxslt1-dev==1.1.34-4+deb11u1 +linux-compiler-gcc-10-arm==5.10.162-1 +linux-headers-5.10.0-21-armmp==5.10.162-1 +linux-headers-armmp==5.10.162-1 +nodejs==14.21.3-deb-1nodesource1 diff --git a/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 b/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 new file mode 100644 index 000000000000..47d7ced0ed77 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-bullseye/versions-py3 @@ -0,0 +1,111 @@ +alabaster==0.7.8 +astroid==2.5.1 +async-timeout==4.0.2 +attrs==20.3.0 +automat==20.2.0 +babel==2.8.0 +bcrypt==3.1.7 +beautifulsoup4==4.9.3 +bitarray==2.7.3 +certifi==2020.6.20 +chardet==4.0.0 +click==7.1.2 +colorama==0.4.4 +constantly==15.1.0 +cov-core==1.15.0 +coverage==5.1 +crc16==0.1.1 +cryptography==3.3.2 +ctypesgen==1.0.2 +dbus-python==1.2.16 +devscripts==2.21.3+deb11u1 +distro-info==1.0 +docutils==0.16 +fastentrypoints==0.12 +gbp==0.9.22 +gcovr==4.2 +gpg===1.14.0-unknown +html5lib==1.1 +hyperlink==19.0.0 +idna==2.10 +imagesize==1.2.0 +importlib-metadata==1.6.0 +incremental==17.5.0 +iniconfig==0.0.0 +ipaddr==2.2.0 +isort==5.6.4 +j2cli==0.3.10 +jinja2==2.11.3 +lazy-object-proxy==0.0.0 +logilab-common==1.8.1 +lxml==4.6.2 +m2crypto==0.36.0 +mako==1.1.3 +markdown==3.3.4 +markupsafe==1.1.1 +mccabe==0.6.1 +mmh3==2.5.1 +mock==5.0.1 +mockredispy==2.9.3 +more-itertools==4.2.0 +mypy-extensions==0.4.3 +nose==1.3.7 +nose2==0.9.2 +olefile==0.46 +packaging==20.9 +parameterized==0.8.1 +parse==1.6.6 +pexpect==4.8.0 +pillow==8.1.2 +pip==23.0.1 +pluggy==0.13.0 +ptyprocess==0.7.0 +py==1.10.0 +pyang==2.4.0 +pyangbind==0.8.1 +pyasn1==0.4.8 +pyasn1-modules==0.2.1 +pycurl==7.43.0.6 +pyfakefs==5.1.0 +pygments==2.7.1 +pygobject==3.38.0 +pyhamcrest==1.9.0 +pylint==2.7.2 +pympler==0.8 +pyopenssl==20.0.1 +pyparsing==2.4.7 +pytest==6.0.2 +pytest-cov==2.10.1 +pytest-runner==5.2 +python-apt==2.2.1 +python-dateutil==2.8.1 +python-debian==0.1.39 +python-magic==0.4.20 +pytz==2021.1 +pyxdg==0.27 +pyyaml==5.4.1 +redis==4.5.1 +regex==2022.10.31 +requests==2.25.1 +roman==2.0.0 +service-identity==18.1.0 +setuptools==49.6.0 +six==1.16.0 +snowballstemmer==2.1.0 +soupsieve==2.2.1 +sphinx==3.4.3 +sphinx-rtd-theme==0.5.1 +stdeb==0.10.0 +stgit==0.19 +toml==0.10.1 +twisted==20.3.0 +typing-extensions==3.7.4.3 +unattended-upgrades==0.1 +unidiff==0.5.5 +urllib3==1.26.5 +webencodings==0.5.1 +wheel==0.35.1 +wrapt==1.12.1 +xdg==5 +zipp==1.0.0 +zope.interface==5.2.0 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster new file mode 100644 index 000000000000..f1c0d158e8b9 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster @@ -0,0 +1,1776 @@ +adwaita-icon-theme==3.30.1-1 +ant==1.10.5-2 +ant-optional==1.10.5-2 +apparmor==2.13.2-10 +apt-file==3.2.2 +apt-transport-https==1.8.2.3 +apt-utils==1.8.2.3 +arch-test==0.15-2+deb10u1 +asciidoctor==1.5.8-1 +aspell==0.60.7~20110707-6+deb10u1 +aspell-en==2018.04.16-0-1 +at==3.1.23-1 +at-spi2-core==2.30.0-7 +auditd==1:2.8.4-3 +augeas-lenses==1.11.0-3 +augeas-tools==1.11.0-3 +autoconf==2.69-11 +autoconf-archive==20180313-1 +autogen==1:5.18.12-4 +autogen-doc==1:5.18.12-4 +automake==1:1.16.1-4 +autopoint==0.19.8.1-9 +autotools-dev==20180224.1 +bash-completion==1:2.8-6 +bc==1.07.1-2+b1 +bind9-host==1:9.11.5.P4+dfsg-5.1+deb10u8 +binfmt-support==2.2.0-2 +binutils==2.31.1-16 +binutils-common==2.31.1-16 +binutils-x86-64-linux-gnu==2.31.1-16 +bison==2:3.3.2.dfsg-1 +blt==2.5.3+dfsg-4 +bsd-mailx==8.1.2-0.20180807cvs-1 +bsdmainutils==11.1.2+b1 +build-essential==12.6 +byacc==20140715-1+b1 +bzip2==1.0.6-9.2~deb10u2 +bzip2-doc==1.0.6-9.2~deb10u2 +ca-certificates==20200601~deb10u2 +ca-certificates-java==20190405 +cdbs==0.4.159 +check==0.10.0-3+b3 +chrpath==0.16-2+b1 +clang==1:7.0-47 +clang-7==1:7.0.1-8+deb10u2 +cm-super-minimal==0.3.4-14 +cmake==3.13.4-1 +cmake-data==3.13.4-1 +cmocka-doc==1.1.3-1 +comerr-dev==2.1-1.44.5-1+deb10u3 +containerd.io==1.6.18-1 +cowbuilder==0.88 +cowdancer==0.88 +cpio==2.12+dfsg-9 +cpp==4:8.3.0-1 +cpp-8==8.3.0-6 +cppcheck==1.86-1 +cron==3.0pl1-134+deb10u1 +curl==7.64.0-4+deb10u5 +dbus==1.12.24-0+deb10u1 +dbus-user-session==1.12.24-0+deb10u1 +dconf-gsettings-backend==0.30.1-2 +dconf-service==0.30.1-2 +dctrl-tools==2.24-3 +debhelper==13.3.3~bpo10+1 +debian-keyring==2019.02.25 +debootstrap==1.0.114+deb10u1 +default-jdk-headless==2:1.11-71 +default-jre==2:1.11-71 +default-jre-headless==2:1.11-71 +default-libmysqlclient-dev==1.0.5 +device-tree-compiler==1.4.7-4 +devscripts==2.19.5+deb10u1 +dh-apparmor==2.13.2-10 +dh-autoreconf==19 +dh-exec==0.23.1 +dh-make==2.201802 +dh-python==3.20190308 +dh-strip-nondeterminism==1.1.2-1 +dh-systemd==12.1.1 +dictionaries-common==1.28.1 +diffstat==1.62-1 +dirmngr==2.2.12-1+deb10u2 +distro-info-data==0.41+deb10u6 +dkms==2.6.1-4 +dmeventd==2:1.02.155-3 +dmsetup==2:1.02.155-3 +dnsutils==1:9.11.5.P4+dfsg-5.1+deb10u8 +docbook==4.5-6 +docbook-dsssl==1.79-9.1 +docbook-to-man==1:2.0.0-42 +docbook-utils==0.6.14-3.3 +docbook-xml==4.5-8 +docker-ce==5:20.10.21~3-0~debian-buster +docker-ce-cli==5:20.10.21~3-0~debian-buster +docker-ce-rootless-extras==5:23.0.1-1~debian.10~buster +docker-scan-plugin==0.23.0~debian-buster +docutils-common==0.14+dfsg-4 +docutils-doc==0.14+dfsg-4 +dosfstools==4.1-2 +doxygen==1.8.13-10 +dpatch==2.0.38+nmu1 +dpkg-dev==1.19.8 +dput==1.0.3 +dvipng==1.15-1.1 +dwz==0.13-5~bpo10+1 +eatmydata==105-7 +emacsen-common==3.0.4 +equivs==2.2.0 +exim4-base==4.92-8+deb10u7 +exim4-config==4.92-8+deb10u7 +exim4-daemon-light==4.92-8+deb10u7 +expat==2.2.6-2+deb10u6 +exuberant-ctags==1:5.9~svn20110310-12+deb10u1 +fakeroot==1.23-1 +file==1:5.35-4+deb10u2 +flex==2.6.4-6.2 +fontconfig==2.13.1-2 +fontconfig-config==2.13.1-2 +fonts-dejavu-core==2.37-1 +fonts-dejavu-extra==2.37-1 +fonts-droid-fallback==1:6.0.1r16-1.1 +fonts-font-awesome==5.0.10+really4.7.0~dfsg-1 +fonts-glyphicons-halflings==1.009~3.4.1+dfsg-1 +fonts-lato==2.0-2 +fonts-liberation==1:1.07.4-9 +fonts-lmodern==2.004.5-6 +fonts-noto-mono==20181227-1 +fonts-roboto-slab==1.100263+20170512-1 +fonts-texgyre==20180621-3 +g++==4:8.3.0-1 +g++-8==8.3.0-6 +gawk==1:4.2.1+dfsg-1 +gcc==4:8.3.0-1 +gcc-8==8.3.0-6 +gcc-8-multilib==8.3.0-6 +gcc-multilib==4:8.3.0-1 +gcovr==4.1-2 +gdb==8.2.1-2+b3 +gem2deb==0.43 +gem2deb-test-runner==0.43 +geoip-database==20181108-1 +gettext==0.19.8.1-9 +gettext-base==0.19.8.1-9 +gfortran==4:8.3.0-1 +gfortran-8==8.3.0-6 +ghostscript==9.27~dfsg-2+deb10u6 +gir1.2-atk-1.0==2.30.0-2 +gir1.2-atspi-2.0==2.30.0-7 +gir1.2-freedesktop==1.58.3-2 +gir1.2-gdkpixbuf-2.0==2.38.1+dfsg-1 +gir1.2-glib-2.0==1.58.3-2 +gir1.2-gtk-3.0==3.24.5-1 +gir1.2-harfbuzz-0.0==2.3.1-1 +gir1.2-packagekitglib-1.0==1.1.12-5 +gir1.2-pango-1.0==1.42.4-8~deb10u1 +git==1:2.20.1-2+deb10u8 +git-buildpackage==0.9.14 +git-man==1:2.20.1-2+deb10u8 +glib-networking==2.58.0-2+deb10u2 +glib-networking-common==2.58.0-2+deb10u2 +glib-networking-services==2.58.0-2+deb10u2 +gnupg==2.2.12-1+deb10u2 +gnupg-l10n==2.2.12-1+deb10u2 +gnupg-utils==2.2.12-1+deb10u2 +gnupg2==2.2.12-1+deb10u2 +gobject-introspection==1.58.3-2 +googletest==1.8.1-3 +gpg==2.2.12-1+deb10u2 +gpg-agent==2.2.12-1+deb10u2 +gpg-wks-client==2.2.12-1+deb10u2 +gpg-wks-server==2.2.12-1+deb10u2 +gpgconf==2.2.12-1+deb10u2 +gpgsm==2.2.12-1+deb10u2 +graphviz==2.40.1-6+deb10u1 +groff==1.22.4-3+deb10u1 +groff-base==1.22.4-3+deb10u1 +gsettings-desktop-schemas==3.28.1-1 +gsfonts==1:8.11+urwcyr1.0.7~pre44-4.4 +gstreamer1.0-libav==1.15.0.1+git20180723+db823502-2+deb10u1 +gstreamer1.0-plugins-base==1.14.4-2+deb10u1 +gstreamer1.0-plugins-good==1.14.4-1+deb10u2 +gstreamer1.0-plugins-ugly==1.14.4-1+deb10u1 +gstreamer1.0-x==1.14.4-2+deb10u1 +gtk-update-icon-cache==3.24.5-1 +guile-2.0-libs==2.0.13+1-5.1 +hicolor-icon-theme==0.17-2 +i965-va-driver==2.3.0+dfsg1-1 +ibverbs-providers==22.1-1 +icc-profiles-free==2.0.1+dfsg-1 +icu-devtools==63.1-6+deb10u3 +imagemagick==8:6.9.10.23+dfsg-2.1+deb10u1 +imagemagick-6-common==8:6.9.10.23+dfsg-2.1+deb10u1 +imagemagick-6.q16==8:6.9.10.23+dfsg-2.1+deb10u1 +install-info==6.5.0.dfsg.1-4+b1 +intel-media-va-driver==18.4.1+dfsg1-1 +intltool-debian==0.35.0+20060710.5 +iptables==1.8.2-4 +iptables-dev==1.8.2-4 +ipxe-qemu==1.0.0+git-20190125.36a4c85-1 +iso-codes==4.2-1 +java-common==0.71 +java-wrappers==0.3 +javahelper==0.72.9 +javascript-common==11 +jq==1.5+dfsg-2+b1 +kernel-wedge==2.99 +kmod==26-1 +krb5-locales==1.17-3+deb10u5 +krb5-multidev==1.17-3+deb10u5 +lcov==1.13-4 +less==487-0.1+b1 +lib32asan5==8.3.0-6 +lib32atomic1==8.3.0-6 +lib32gcc-8-dev==8.3.0-6 +lib32gcc1==1:8.3.0-6 +lib32gomp1==8.3.0-6 +lib32itm1==8.3.0-6 +lib32mpx2==8.3.0-6 +lib32quadmath0==8.3.0-6 +lib32stdc++6==8.3.0-6 +lib32ubsan1==8.3.0-6 +liba52-0.7.4==0.7.4-19 +libaa1==1.4p5-46 +libaacs0==0.9.0-2 +libaio1==0.3.112-3 +libalgorithm-c3-perl==0.10-1 +libalgorithm-diff-perl==1.19.03-2 +libalgorithm-diff-xs-perl==0.04-5+b1 +libalgorithm-merge-perl==0.08-3 +libaom0==1.0.0-3 +libaopalliance-java==20070526-6 +libapache-pom-java==18-1 +libapparmor1==2.13.2-10 +libappconfig-perl==1.71-2 +libappstream4==0.12.5-1 +libapt-inst2.0==1.8.2.3 +libapt-pkg-perl==0.1.34+b1 +libarchive-cpio-perl==0.10-1 +libarchive-zip-perl==1.64-1 +libarchive13==3.3.3-4+deb10u3 +libargon2-1==0~20171227-0.2 +libasan5==8.3.0-6 +libasm-java==7.0-1 +libasound2==1.1.8-1 +libasound2-data==1.1.8-1 +libaspell15==0.60.7~20110707-6+deb10u1 +libass9==1:0.14.0-2 +libassuan0==2.5.2-1 +libasync-mergepoint-perl==0.04-2 +libasyncns0==0.8-6 +libatinject-jsr330-api-java==1.0+ds1-5 +libatk-bridge2.0-0==2.30.0-5 +libatk-bridge2.0-dev==2.30.0-5 +libatk-wrapper-java==0.33.3-22+deb10u1 +libatk-wrapper-java-jni==0.33.3-22+deb10u1 +libatk1.0-0==2.30.0-2 +libatk1.0-data==2.30.0-2 +libatk1.0-dev==2.30.0-2 +libatm1==1:2.5.1-2 +libatm1-dev==1:2.5.1-2 +libatomic1==8.3.0-6 +libatspi2.0-0==2.30.0-7 +libatspi2.0-dev==2.30.0-7 +libaudio2==1.9.4-6 +libaudit-dev==1:2.8.4-3 +libaugeas0==1.11.0-3 +libauparse-dev==1:2.8.4-3 +libauparse0==1:2.8.4-3 +libauthen-sasl-perl==2.1600-1 +libavahi-client3==0.7-4+deb10u1 +libavahi-common-data==0.7-4+deb10u1 +libavahi-common3==0.7-4+deb10u1 +libavalon-framework-java==4.2.0-10 +libavc1394-0==0.5.4-5 +libavcodec58==7:4.1.10-0+deb10u1 +libavfilter7==7:4.1.10-0+deb10u1 +libavformat58==7:4.1.10-0+deb10u1 +libavutil56==7:4.1.10-0+deb10u1 +libb-hooks-endofscope-perl==0.24-1 +libb-hooks-op-check-perl==0.22-1+b1 +libbabeltrace-dev==1.5.6-2+deb10u1 +libbabeltrace1==1.5.6-2+deb10u1 +libbatik-java==1.10-2+deb10u2 +libbdplus0==0.1.2-3 +libbind-export-dev==1:9.11.5.P4+dfsg-5.1+deb10u8 +libbind9-161==1:9.11.5.P4+dfsg-5.1+deb10u8 +libbinutils==2.31.1-16 +libbison-dev==2:3.3.2.dfsg-1 +libbit-vector-perl==7.4-1+b5 +libblkid-dev==2.33.1-0.1 +libbluetooth3==5.50-1.2~deb10u3 +libbluray2==1:1.1.0-1+deb10u1 +libboost-atomic1.71-dev==1.71.0-6~bpo10+1 +libboost-atomic1.71.0==1.71.0-6~bpo10+1 +libboost-chrono1.71-dev==1.71.0-6~bpo10+1 +libboost-chrono1.71.0==1.71.0-6~bpo10+1 +libboost-container1.71-dev==1.71.0-6~bpo10+1 +libboost-container1.71.0==1.71.0-6~bpo10+1 +libboost-context1.71-dev==1.71.0-6~bpo10+1 +libboost-context1.71.0==1.71.0-6~bpo10+1 +libboost-contract1.71-dev==1.71.0-6~bpo10+1 +libboost-contract1.71.0==1.71.0-6~bpo10+1 +libboost-coroutine1.71-dev==1.71.0-6~bpo10+1 +libboost-coroutine1.71.0==1.71.0-6~bpo10+1 +libboost-date-time1.71-dev==1.71.0-6~bpo10+1 +libboost-date-time1.71.0==1.71.0-6~bpo10+1 +libboost-fiber1.71-dev==1.71.0-6~bpo10+1 +libboost-fiber1.71.0==1.71.0-6~bpo10+1 +libboost-filesystem1.71-dev==1.71.0-6~bpo10+1 +libboost-filesystem1.71.0==1.71.0-6~bpo10+1 +libboost-graph-parallel1.71-dev==1.71.0-6~bpo10+1 +libboost-graph-parallel1.71.0==1.71.0-6~bpo10+1 +libboost-log1.71-dev==1.71.0-6~bpo10+1 +libboost-log1.71.0==1.71.0-6~bpo10+1 +libboost-mpi1.71.0==1.71.0-6~bpo10+1 +libboost-program-options1.71-dev==1.71.0-6~bpo10+1 +libboost-program-options1.71.0==1.71.0-6~bpo10+1 +libboost-regex1.71-dev==1.71.0-6~bpo10+1 +libboost-regex1.71.0==1.71.0-6~bpo10+1 +libboost-serialization1.71-dev==1.71.0-6~bpo10+1 +libboost-serialization1.71.0==1.71.0-6~bpo10+1 +libboost-system1.71-dev==1.71.0-6~bpo10+1 +libboost-system1.71.0==1.71.0-6~bpo10+1 +libboost-test1.71-dev==1.71.0-6~bpo10+1 +libboost-test1.71.0==1.71.0-6~bpo10+1 +libboost-thread1.71-dev==1.71.0-6~bpo10+1 +libboost-thread1.71.0==1.71.0-6~bpo10+1 +libboost1.71-dev==1.71.0-6~bpo10+1 +libbpf-dev==1:0.3-2~bpo10+1 +libbpf0==1:0.3-2~bpo10+1 +libbrlapi0.6==5.6-10+deb10u1 +libbrotli1==1.0.7-2+deb10u1 +libbs2b0==3.1.0+dfsg-2.2 +libbsd-dev==0.9.1-2+deb10u1 +libbsd0==0.9.1-2+deb10u1 +libbsh-java==2.0b4-19 +libbz2-dev==1.0.6-9.2~deb10u2 +libc-ares-dev==1.14.0-1+deb10u2 +libc-ares2==1.14.0-1+deb10u2 +libc-dev-bin==2.28-10+deb10u2 +libc-l10n==2.28-10+deb10u2 +libc6-dbg==2.28-10+deb10u2 +libc6-dev==2.28-10+deb10u2 +libc6-dev-i386==2.28-10+deb10u2 +libc6-dev-x32==2.28-10+deb10u2 +libc6-i386==2.28-10+deb10u2 +libc6-x32==2.28-10+deb10u2 +libcaca0==0.99.beta19-2.1 +libcacard0==1:2.6.1-1 +libcaf-openmpi-3==2.4.0-2 +libcairo-gobject2==1.16.0-4+deb10u1 +libcairo-script-interpreter2==1.16.0-4+deb10u1 +libcairo2==1.16.0-4+deb10u1 +libcairo2-dev==1.16.0-4+deb10u1 +libcap-dev==1:2.25-2 +libcap-ng-dev==0.7.9-2 +libcapstone3==4.0.1+really+3.0.5-1 +libcapture-tiny-perl==0.48-1 +libcarp-clan-perl==6.07-1 +libcc1-0==8.3.0-6 +libcdi-api-java==1.2-2 +libcdio18==2.0.0-2 +libcdparanoia0==3.10.2+debian-13 +libcdt5==2.40.1-6+deb10u1 +libcgi-fast-perl==1:2.13-1 +libcgi-pm-perl==4.40-1 +libcglib-java==3.2.10-1 +libcgraph6==2.40.1-6+deb10u1 +libchromaprint1==1.4.3-3 +libcjson-dev==1.7.10-1.1+deb10u1 +libcjson1==1.7.10-1.1+deb10u1 +libclang-common-7-dev==1:7.0.1-8+deb10u2 +libclang1-6.0==1:6.0.1-10 +libclang1-7==1:7.0.1-8+deb10u2 +libclass-accessor-perl==0.51-1 +libclass-c3-perl==0.34-1 +libclass-c3-xs-perl==0.14-1+b3 +libclass-inspector-perl==1.32-1 +libclass-load-perl==0.25-1 +libclass-load-xs-perl==0.10-1+b3 +libclass-method-modifiers-perl==2.12-1 +libclass-tiny-perl==1.006-1 +libclass-xsaccessor-perl==1.19-3+b2 +libclone-perl==0.41-1+b1 +libcmocka-dev==1.1.3-1 +libcmocka0==1.1.3-1 +libcoarrays-dev==2.4.0-2 +libcoarrays-openmpi-dev==2.4.0-2 +libcodec2-0.8.1==0.8.1-2 +libcolord2==1.4.3-4 +libcommon-sense-perl==3.74-2+b7 +libcommons-beanutils-java==1.9.3-1 +libcommons-cli-java==1.4-1 +libcommons-codec-java==1.11-1 +libcommons-collections3-java==3.2.2-2 +libcommons-compress-java==1.18-2+deb10u1 +libcommons-configuration-java==1.10-5 +libcommons-digester-java==1.8.1-5 +libcommons-io-java==2.6-2+deb10u1 +libcommons-lang-java==2.6-8 +libcommons-lang3-java==3.8-2 +libcommons-logging-java==1.2-2 +libcommons-parent-java==43-1 +libcommons-validator-java==1:1.6-2 +libconst-fast-perl==0.014-1 +libcontextual-return-perl==0.004014-2 +libconvert-binhex-perl==1.125-1 +libcroco3==0.6.12-3 +libcryptsetup12==2:2.1.0-5+deb10u2 +libcrystalhd3==1:0.0~git20110715.fdd2f19-13 +libcunit1==2.1-3-dfsg-2+b12 +libcunit1-dev==2.1-3-dfsg-2+b12 +libcups2==2.2.10-6+deb10u6 +libcupsfilters1==1.21.6-5 +libcupsimage2==2.2.10-6+deb10u6 +libcurl3-gnutls==7.64.0-4+deb10u5 +libcurl3-nss==7.64.0-4+deb10u5 +libcurl4==7.64.0-4+deb10u5 +libcurl4-nss-dev==7.64.0-4+deb10u5 +libdaemon-dev==0.14-7 +libdaemon0==0.14-7 +libdata-dump-perl==1.23-1 +libdata-optlist-perl==0.110-1 +libdatrie1==0.2.12-2 +libdb-dev==5.3.1+nmu1 +libdb5.3-dev==5.3.28+dfsg1-0.5 +libdbi1==0.9.0-5 +libdbus-1-3==1.12.24-0+deb10u1 +libdbus-1-dev==1.12.24-0+deb10u1 +libdbus-glib-1-2==0.110-4 +libdbus-glib-1-dev==0.110-4 +libdbus-glib-1-dev-bin==0.110-4 +libdconf1==0.30.1-2 +libde265-0==1.0.3-1+deb10u3 +libdebhelper-perl==13.3.3~bpo10+1 +libdevel-callchecker-perl==0.008-1 +libdevel-caller-perl==2.06-2+b1 +libdevel-globaldestruction-perl==0.14-1 +libdevel-lexalias-perl==0.05-2+b1 +libdevel-overloadinfo-perl==0.005-1 +libdevel-partialdump-perl==0.20-1 +libdevel-stacktrace-perl==2.0300-1 +libdevmapper-event1.02.1==2:1.02.155-3 +libdevmapper1.02.1==2:1.02.155-3 +libdigest-bubblebabble-perl==0.02-2 +libdigest-hmac-perl==1.03+dfsg-2 +libdist-checkconflicts-perl==0.11-1 +libdistro-info-perl==0.21 +libdjvulibre-text==3.5.27.1-10+deb10u1 +libdjvulibre21==3.5.27.1-10+deb10u1 +libdns-export1104==1:9.11.5.P4+dfsg-5.1+deb10u8 +libdns1104==1:9.11.5.P4+dfsg-5.1+deb10u8 +libdom4j-java==2.1.1-2 +libdouble-conversion1==3.1.0-3 +libdoxia-core-java==1.7-2 +libdoxia-java==1.7-2 +libdoxia-sitetools-java==1.7.5-1 +libdpkg-perl==1.19.8 +libdrm-amdgpu1==2.4.97-1 +libdrm-common==2.4.97-1 +libdrm-dev==2.4.97-1 +libdrm-intel1==2.4.97-1 +libdrm-nouveau2==2.4.97-1 +libdrm-radeon1==2.4.97-1 +libdrm2==2.4.97-1 +libdv4==1.0.0-12 +libdvdnav4==6.0.0-1 +libdvdread4==6.0.1-1 +libdw-dev==0.176-1.1 +libdw1==0.176-1.1 +libdynaloader-functions-perl==0.003-1 +libeatmydata1==105-7 +libedit-dev==3.1-20181209-1 +libedit2==3.1-20181209-1 +libegl-mesa0==18.3.6-2+deb10u1 +libegl1==1.1.0-1 +libegl1-mesa-dev==18.3.6-2+deb10u1 +libel-api-java==3.0.0-2+deb10u1 +libelf-dev==0.176-1.1 +libemail-valid-perl==1.202-1 +libencode-locale-perl==1.05-1 +libepoxy-dev==1.5.3-0.1 +libepoxy0==1.5.3-0.1 +liberror-perl==0.17027-2 +libestr0==0.1.10-2.1 +libeval-closure-perl==0.14-1 +libevdev2==1.6.0+dfsg-1 +libevent-2.1-6==2.1.8-stable-4 +libevent-core-2.1-6==2.1.8-stable-4 +libevent-dev==2.1.8-stable-4 +libevent-extra-2.1-6==2.1.8-stable-4 +libevent-openssl-2.1-6==2.1.8-stable-4 +libevent-pthreads-2.1-6==2.1.8-stable-4 +libexpat1==2.2.6-2+deb10u6 +libexpat1-dev==2.2.6-2+deb10u6 +libexplain-dev==1.4.D001-8 +libexplain51==1.4.D001-8 +libexporter-tiny-perl==1.002001-1 +libfabric1==1.6.2-3 +libfakeroot==1.23-1 +libfastjson4==0.99.8-2 +libfcgi-perl==0.78-2+b3 +libfdt1==1.4.7-4 +libffi-dev==3.2.1-9 +libfftw3-double3==3.3.8-2 +libfile-basedir-perl==0.08-1 +libfile-chdir-perl==0.1008-1 +libfile-desktopentry-perl==0.22-1 +libfile-fcntllock-perl==0.22-3+b5 +libfile-homedir-perl==1.004-1 +libfile-listing-perl==6.04-1 +libfile-mimeinfo-perl==0.29-1 +libfile-stripnondeterminism-perl==1.1.2-1 +libfile-which-perl==1.23-1 +libfl-dev==2.6.4-6.2 +libfl2==2.6.4-6.2 +libflac8==1.3.2-3+deb10u2 +libflite1==2.1-release-3 +libfont-afm-perl==1.20-2 +libfontbox2-java==2.0.13-2 +libfontconfig1==2.13.1-2 +libfontconfig1-dev==2.13.1-2 +libfontenc1==1:1.1.3-1+b2 +libfop-java==1:2.3-2 +libfreetype6==2.9.1-3+deb10u3 +libfreetype6-dev==2.9.1-3+deb10u3 +libfribidi-dev==1.0.5-3.1+deb10u2 +libfribidi0==1.0.5-3.1+deb10u2 +libfstrm0==0.4.0-1 +libfuture-perl==0.39-1 +libgail-common==2.24.32-3 +libgail18==2.24.32-3 +libgbm1==18.3.6-2+deb10u1 +libgc1c2==1:7.6.4-0.4 +libgcc-8-dev==8.3.0-6 +libgd-perl==2.71-2 +libgd3==2.2.5-5.2 +libgdbm-compat4==1.18.1-4 +libgdbm6==1.18.1-4 +libgdk-pixbuf2.0-0==2.38.1+dfsg-1 +libgdk-pixbuf2.0-bin==2.38.1+dfsg-1 +libgdk-pixbuf2.0-common==2.38.1+dfsg-1 +libgdk-pixbuf2.0-dev==2.38.1+dfsg-1 +libgeoip1==1.6.12-1 +libgeronimo-annotation-1.3-spec-java==1.0-1 +libgeronimo-interceptor-3.0-spec-java==1.0.1-4 +libgetopt-long-descriptive-perl==0.103-2 +libgfortran-8-dev==8.3.0-6 +libgfortran5==8.3.0-6 +libgif7==5.1.4-3+deb10u1 +libgirepository-1.0-1==1.58.3-2 +libgirepository1.0-dev==1.58.3-2 +libgit-wrapper-perl==0.048-1 +libgitlab-api-v4-perl==0.16-1 +libgl1==1.1.0-1 +libgl1-mesa-dev==18.3.6-2+deb10u1 +libgl1-mesa-dri==18.3.6-2+deb10u1 +libglapi-mesa==18.3.6-2+deb10u1 +libgles1==1.1.0-1 +libgles2==1.1.0-1 +libglib2.0-0==2.58.3-2+deb10u4 +libglib2.0-bin==2.58.3-2+deb10u4 +libglib2.0-data==2.58.3-2+deb10u4 +libglib2.0-dev==2.58.3-2+deb10u4 +libglib2.0-dev-bin==2.58.3-2+deb10u4 +libglu1-mesa==9.0.0-2.1+b3 +libglu1-mesa-dev==9.0.0-2.1+b3 +libglvnd-core-dev==1.1.0-1 +libglvnd-dev==1.1.0-1 +libglvnd0==1.1.0-1 +libglx-mesa0==18.3.6-2+deb10u1 +libglx0==1.1.0-1 +libgme0==0.6.2-1 +libgmock-dev==1.8.1-3 +libgmp-dev==2:6.1.2+dfsg-4+deb10u1 +libgmpxx4ldbl==2:6.1.2+dfsg-4+deb10u1 +libgnutls-dane0==3.6.7-4+deb10u10 +libgnutls-openssl27==3.6.7-4+deb10u10 +libgnutls28-dev==3.6.7-4+deb10u10 +libgnutlsxx28==3.6.7-4+deb10u10 +libgomp1==8.3.0-6 +libgoogle-perftools4==2.7-1 +libgpgme11==1.12.0-6 +libgpm2==1.20.7-5 +libgraphite2-3==1.3.13-7 +libgraphite2-dev==1.3.13-7 +libgs9==9.27~dfsg-2+deb10u6 +libgs9-common==9.27~dfsg-2+deb10u6 +libgsm1==1.0.18-2 +libgssapi-krb5-2==1.17-3+deb10u5 +libgssrpc4==1.17-3+deb10u5 +libgstreamer-plugins-base1.0-0==1.14.4-2+deb10u1 +libgstreamer1.0-0==1.14.4-1 +libgtest-dev==1.8.1-3 +libgtk-3-0==3.24.5-1 +libgtk-3-bin==3.24.5-1 +libgtk-3-common==3.24.5-1 +libgtk-3-dev==3.24.5-1 +libgtk2.0-0==2.24.32-3 +libgtk2.0-bin==2.24.32-3 +libgtk2.0-common==2.24.32-3 +libgts-0.7-5==0.7.6+darcs121130-4 +libgts-bin==0.7.6+darcs121130-4 +libguava-java==19.0-1 +libgudev-1.0-0==232-2 +libguice-java==4.2.1-1 +libgvc6==2.40.1-6+deb10u1 +libgvpr2==2.40.1-6+deb10u1 +libharfbuzz-dev==2.3.1-1 +libharfbuzz-gobject0==2.3.1-1 +libharfbuzz-icu0==2.3.1-1 +libharfbuzz0b==2.3.1-1 +libhawtjni-runtime-java==1.16-1 +libheif1==1.3.2-2~deb10u1 +libhiredis-dev==0.14.0-3 +libhiredis0.14==0.14.0-3 +libhtml-form-perl==6.03-1 +libhtml-format-perl==2.12-1 +libhtml-parser-perl==3.72-3+b3 +libhtml-tagset-perl==3.20-3 +libhtml-tree-perl==5.07-2 +libhttp-cookies-perl==6.04-1 +libhttp-daemon-perl==6.01-3+deb10u1 +libhttp-date-perl==6.02-1 +libhttp-message-perl==6.18-1 +libhttp-negotiate-perl==6.01-1 +libhttp-tiny-multipart-perl==0.08-1 +libhttpclient-java==4.5.7-1+deb10u1 +libhttpcore-java==4.4.11-1 +libhwloc-dev==1.11.12-3 +libhwloc-plugins==1.11.12-3 +libhwloc5==1.11.12-3 +libiberty-dev==20190122-1 +libibverbs-dev==22.1-1 +libibverbs1==22.1-1 +libice-dev==2:1.0.9-2 +libice6==2:1.0.9-2 +libicu-dev==63.1-6+deb10u3 +libicu63==63.1-6+deb10u3 +libidn11==1.33-2.2 +libidn2-dev==2.0.5-1+deb10u1 +libiec61883-0==1.2.0-3 +libigdgmm5==18.4.1+ds1-1 +libijs-0.35==0.35-14 +libilmbase23==2.2.1-2 +libimagequant0==2.12.2-1.1 +libimport-into-perl==1.002005-1 +libinput-bin==1.12.6-2+deb10u1 +libinput10==1.12.6-2+deb10u1 +libio-async-perl==0.72-1 +libio-html-perl==1.001-1 +libio-prompter-perl==0.004015-1 +libio-pty-perl==1:1.08-1.1+b5 +libio-sessiondata-perl==1.03-1 +libio-socket-ssl-perl==2.060-3 +libio-string-perl==1.08-3 +libio-stringy-perl==2.111-3 +libip4tc-dev==1.8.2-4 +libip4tc0==1.8.2-4 +libip6tc-dev==1.8.2-4 +libip6tc0==1.8.2-4 +libipc-run-perl==20180523.0-1 +libipc-system-simple-perl==1.25-4 +libipt2==2.0-2 +libiptc-dev==1.8.2-4 +libiptc0==1.8.2-4 +libirs-export161==1:9.11.5.P4+dfsg-5.1+deb10u8 +libirs161==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisc-export1100==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisc1100==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisccc-export161==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisccc161==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisccfg-export163==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisccfg163==1:9.11.5.P4+dfsg-5.1+deb10u8 +libisl19==0.20-2 +libitext1-java==1.4-7 +libitm1==8.3.0-6 +libjack-jackd2-0==1.9.12~dfsg-2 +libjansi-java==1.17.1-1 +libjansi-native-java==1.8-1 +libjansson-dev==2.12-1 +libjansson4==2.12-1 +libjaxen-java==1.1.6-4 +libjaxp1.3-java==1.3.05-5 +libjbig0==2.1-3.1+b2 +libjbig2dec0==0.16-1+deb10u1 +libjemalloc-dev==5.1.0-3 +libjemalloc2==5.1.0-3 +libjetty9-java==9.4.16-0+deb10u2 +libjpeg62-turbo==1:1.5.2-2+deb10u1 +libjq1==1.5+dfsg-2+b1 +libjs-bootstrap==3.4.1+dfsg-1 +libjs-jquery==3.3.1~dfsg-3+deb10u1 +libjs-jquery-hotkeys==0~20130707+git2d51e3a9+dfsg-2 +libjs-jquery-isonscreen==1.2.0-1 +libjs-jquery-metadata==12-1.1 +libjs-jquery-tablesorter==1:2.31.1+dfsg1-1 +libjs-jquery-throttle-debounce==1.1+dfsg.1-1 +libjs-modernizr==2.6.2+ds1-3 +libjs-sphinxdoc==1.8.4-1 +libjs-underscore==1.9.1~dfsg-1+deb10u1 +libjson-c-dev==0.12.1+ds-2+deb10u1 +libjson-c3==0.12.1+ds-2+deb10u1 +libjson-glib-1.0-0==1.4.4-2 +libjson-glib-1.0-common==1.4.4-2 +libjson-perl==4.02000-1 +libjson-xs-perl==3.040-1+b1 +libjsoncpp1==1.7.4-3 +libjsp-api-java==2.3.4-2+deb10u1 +libjsr305-java==0.1~+svn49-11 +libjtidy-java==7+svn20110807-5 +libjudy-dev==1.0.5-5 +libjudydebian1==1.0.5-5 +libjxr-tools==1.1-6+b1 +libjxr0==1.1-6+b1 +libk5crypto3==1.17-3+deb10u5 +libkadm5clnt-mit11==1.17-3+deb10u5 +libkadm5srv-mit11==1.17-3+deb10u5 +libkdb5-9==1.17-3+deb10u5 +libkeyutils1==1.6-6 +libkmod2==26-1 +libkpathsea6==2018.20181218.49446-1 +libkrb5-3==1.17-3+deb10u5 +libkrb5-dev==1.17-3+deb10u5 +libkrb5support0==1.17-3+deb10u5 +libksba8==1.3.5-2+deb10u2 +liblab-gamut1==2.40.1-6+deb10u1 +liblcms2-2==2.9-3 +libldap-2.4-2==2.4.47+dfsg-3+deb10u7 +libldap-common==2.4.47+dfsg-3+deb10u7 +libldap2-dev==2.4.47+dfsg-3+deb10u7 +liblilv-0-0==0.24.2~dfsg0-2 +liblist-compare-perl==0.53-1 +liblist-moreutils-perl==0.416-1+b4 +libllvm6.0==1:6.0.1-10 +libllvm7==1:7.0.1-8+deb10u2 +liblmdb0==0.9.22-1 +liblocale-gettext-perl==1.07-3+b4 +liblockfile-bin==1.14-1.1 +liblockfile1==1.14-1.1 +liblog-any-adapter-screen-perl==0.140-1 +liblog-any-perl==1.707-1 +liblog4j1.2-java==1.2.17-8+deb10u2 +liblognorm5==2.0.5-1 +liblqr-1-0==0.4.2-2.1 +liblsan0==8.3.0-6 +libltdl-dev==2.4.6-9 +libltdl7==2.4.6-9 +liblua5.1-0==5.1.5-8.1+b2 +liblua5.1-0-dev==5.1.5-8.1+b2 +liblvm2cmd2.03==2.03.02-3 +liblwp-mediatypes-perl==6.02-1 +liblwp-protocol-https-perl==6.07-2 +liblwres161==1:9.11.5.P4+dfsg-5.1+deb10u8 +liblzma-dev==5.2.4-1+deb10u1 +liblzo2-2==2.10-0.1 +liblzo2-dev==2.10-0.1 +libmagic-mgc==1:5.35-4+deb10u2 +libmagic1==1:5.35-4+deb10u2 +libmagickcore-6.q16-6==8:6.9.10.23+dfsg-2.1+deb10u1 +libmagickcore-6.q16-6-extra==8:6.9.10.23+dfsg-2.1+deb10u1 +libmagickwand-6.q16-6==8:6.9.10.23+dfsg-2.1+deb10u1 +libmail-sendmail-perl==0.80-1 +libmailtools-perl==2.18-1 +libmariadb-dev==1:10.3.38-0+deb10u1 +libmariadb-dev-compat==1:10.3.38-0+deb10u1 +libmariadb3==1:10.3.38-0+deb10u1 +libmaven-archiver-java==3.2.0-2 +libmaven-clean-plugin-java==3.1.0-1 +libmaven-common-artifact-filters-java==3.0.1-3 +libmaven-compiler-plugin-java==3.8.0-2 +libmaven-filtering-java==3.1.1-1 +libmaven-jar-plugin-java==3.1.1-1 +libmaven-parent-java==31-2 +libmaven-plugin-tools-java==3.6.0-1 +libmaven-reporting-api-java==3.0-1 +libmaven-reporting-exec-java==1.4-2 +libmaven-reporting-impl-java==3.0.0-2 +libmaven-resolver-java==1.3.1-1 +libmaven-resources-plugin-java==3.1.0-1 +libmaven-shared-incremental-java==1.1-3 +libmaven-shared-utils-java==3.3.0-1+deb10u1 +libmaven-site-plugin-java==3.6-3 +libmaven3-core-java==3.6.0-1 +libmime-tools-perl==5.509-1 +libmng1==1.0.10+dfsg-3.1+b5 +libmnl-dev==1.0.4-2 +libmodule-implementation-perl==0.09-1 +libmodule-runtime-conflicts-perl==0.003-1 +libmodule-runtime-perl==0.016-1 +libmoo-perl==2.003004-2 +libmoose-perl==2.2011-1+b1 +libmoosex-aliases-perl==0.11-1 +libmount-dev==2.33.1-0.1 +libmp3lame0==3.100-2+b1 +libmpc3==1.1.0-1 +libmpdec2==2.4.2-2 +libmpeg2-4==0.5.1-8 +libmpfr6==4.0.2-1 +libmpg123-0==1.25.10-2 +libmpx2==8.3.0-6 +libmro-compat-perl==0.13-1 +libmtdev1==1.1.5-1+b1 +libmysofa0==0.6~dfsg0-3+deb10u1 +libnamespace-autoclean-perl==0.28-1 +libnamespace-clean-perl==0.27-1 +libnanomsg-dev==1.1.5+dfsg-1 +libnanomsg5==1.1.5+dfsg-1 +libncurses-dev==6.1+20181013-2+deb10u3 +libncurses5-dev==6.1+20181013-2+deb10u3 +libncurses6==6.1+20181013-2+deb10u3 +libnet-dbus-perl==1.1.0-5+b1 +libnet-dns-perl==1.19-1 +libnet-dns-sec-perl==1.11-1 +libnet-domain-tld-perl==1.75-1 +libnet-http-perl==6.18-1 +libnet-ip-perl==1.26-2 +libnet-libidn-perl==0.12.ds-3+b1 +libnet-smtp-ssl-perl==1.04-1 +libnet-ssleay-perl==1.85-2+deb10u1 +libnetfilter-conntrack-dev==1.0.7-1 +libnetfilter-conntrack3==1.0.7-1 +libnetpbm10==2:10.0-15.3+b2 +libnewt-dev==0.52.20-8 +libnewt0.52==0.52.20-8 +libnfnetlink-dev==1.0.1-3+b1 +libnfnetlink0==1.0.1-3+b1 +libnftables0==0.9.0-2 +libnftnl-dev==1.1.2-2 +libnftnl11==1.1.2-2 +libnghttp2-14==1.36.0-2+deb10u1 +libnl-3-200==3.4.0-1 +libnl-3-dev==3.4.0-1 +libnl-route-3-200==3.4.0-1 +libnl-route-3-dev==3.4.0-1 +libnorm-dev==1.5.8+dfsg2-1 +libnorm1==1.5.8+dfsg2-1 +libnpth0==1.6-1 +libnspr4==2:4.20-1 +libnss-systemd==241-7~deb10u8 +libnss3==2:3.42.1-1+deb10u6 +libnuma-dev==2.0.12-1 +libnuma1==2.0.12-1 +libnumber-compare-perl==0.03-1 +libnumber-range-perl==0.12-1 +libobjc-8-dev==8.3.0-6 +libobjc4==8.3.0-6 +libogg0==1.3.2-1+b1 +libomp-7-dev==1:7.0.1-8+deb10u2 +libomp5-7==1:7.0.1-8+deb10u2 +libonig5==6.9.1-1 +libopencore-amrnb0==0.1.3-2.1+b2 +libopencore-amrwb0==0.1.3-2.1+b2 +libopencsd-dev==0.10.1-1 +libopencsd0==0.10.1-1 +libopenexr23==2.2.1-4.1+deb10u2 +libopengl0==1.1.0-1 +libopenjp2-7==2.3.0-2+deb10u2 +libopenmpi-dev==3.1.3-11 +libopenmpi3==3.1.3-11 +libopenmpt0==0.4.3-1+deb10u1 +libopts25==1:5.18.12-4 +libopts25-dev==1:5.18.12-4 +libopus0==1.3-1 +liborc-0.4-0==1:0.4.28-3.1 +liboro-java==2.0.8a-13 +libosp5==1.5.2-13+b1 +libossp-uuid-perl==1.6.2-1.5+b7 +libossp-uuid16==1.6.2-1.5+b7 +libostyle1c2==1.4devel1-21.3+b1 +libp11-kit-dev==0.23.15-2+deb10u1 +libpackage-deprecationmanager-perl==0.17-1 +libpackage-stash-perl==0.38-1 +libpackage-stash-xs-perl==0.29-1 +libpackagekit-glib2-18==1.1.12-5 +libpadwalker-perl==2.3-1+b1 +libpam-systemd==241-7~deb10u8 +libpam0g-dev==1.3.1-5 +libpango-1.0-0==1.42.4-8~deb10u1 +libpango1.0-dev==1.42.4-8~deb10u1 +libpangocairo-1.0-0==1.42.4-8~deb10u1 +libpangoft2-1.0-0==1.42.4-8~deb10u1 +libpangoxft-1.0-0==1.42.4-8~deb10u1 +libpaper-utils==1.1.28 +libpaper1==1.1.28 +libparams-classify-perl==0.015-1+b1 +libparams-util-perl==1.07-3+b4 +libparams-validate-perl==1.29-1+b1 +libparboiled-java==1.1.7-2 +libparse-debianchangelog-perl==1.2.0-13 +libpath-iterator-rule-perl==1.014-1 +libpath-tiny-perl==0.108-1 +libpathplan4==2.40.1-6+deb10u1 +libpcap-dev==1.8.1-6+deb10u1 +libpcap0.8==1.8.1-6+deb10u1 +libpcap0.8-dev==1.8.1-6+deb10u1 +libpci-dev==1:3.5.2-1 +libpci3==1:3.5.2-1 +libpciaccess0==0.14-1 +libpcre16-3==2:8.39-12 +libpcre2-16-0==10.32-5 +libpcre2-32-0==10.32-5 +libpcre2-8-0==10.32-5 +libpcre2-dev==10.32-5 +libpcre2-posix0==10.32-5 +libpcre3-dev==2:8.39-12 +libpcre32-3==2:8.39-12 +libpcrecpp0v5==2:8.39-12 +libpcsclite-dev==1.8.24-1 +libpcsclite1==1.8.24-1 +libpegdown-java==1.6.0-1 +libperl-dev==5.28.1-6+deb10u1 +libperl5.28==5.28.1-6+deb10u1 +libperlio-gzip-perl==0.19-1+b5 +libpgm-5.2-0==5.2.122~dfsg-3 +libpgm-dev==5.2.122~dfsg-3 +libpipeline1==1.5.1-2 +libpixman-1-0==0.36.0-1+deb10u1 +libpixman-1-dev==0.36.0-1+deb10u1 +libplexus-ant-factory-java==1.0~alpha2.1-4 +libplexus-archiver-java==3.6.0-2 +libplexus-bsh-factory-java==1.0~alpha7-4 +libplexus-build-api-java==0.0.7-3 +libplexus-cipher-java==1.7-3 +libplexus-classworlds-java==2.6.0-1 +libplexus-compiler-java==2.8.5-1 +libplexus-component-annotations-java==1.7.1-7 +libplexus-container-default-java==1.7.1-7 +libplexus-container-default1.5-java==1.7.1-7 +libplexus-i18n-java==1.0-beta-10-5 +libplexus-interpolation-java==1.25-1 +libplexus-io-java==3.1.1-1 +libplexus-languages-java==0.9.10-1 +libplexus-sec-dispatcher-java==1.4-4 +libplexus-utils2-java==3.1.1-1 +libplexus-velocity-java==1.2-3 +libpmix2==3.1.2-3 +libpng-dev==1.6.36-6 +libpng-tools==1.6.36-6 +libpng16-16==1.6.36-6 +libpod-constants-perl==0.19-1 +libpolkit-agent-1-0==0.105-25+deb10u1 +libpolkit-backend-1-0==0.105-25+deb10u1 +libpolkit-gobject-1-0==0.105-25+deb10u1 +libpopt0==1.16-12 +libpostproc55==7:4.1.10-0+deb10u1 +libpotrace0==1.15-1 +libprocps7==2:3.3.15-2 +libprotobuf-c1==1.3.1-1+b1 +libprotobuf-dev==3.6.1.3-2 +libprotobuf-lite17==3.6.1.3-2 +libprotobuf17==3.6.1.3-2 +libprotoc17==3.6.1.3-2 +libproxy1v5==0.4.15-5+deb10u1 +libpsl5==0.20.2-2 +libpsm-infinipath1==3.3+20.604758e7-6 +libpsm2-2==11.2.78-1 +libptexenc1==2018.20181218.49446-1 +libpthread-stubs0-dev==0.4-1 +libpulse0==12.2-4+deb10u1 +libpython-all-dev==2.7.16-1 +libpython-dev==2.7.16-1 +libpython-stdlib==2.7.16-1 +libpython2-dev==2.7.16-1 +libpython2-stdlib==2.7.16-1 +libpython2.7==2.7.16-2+deb10u1 +libpython2.7-dev==2.7.16-2+deb10u1 +libpython2.7-minimal==2.7.16-2+deb10u1 +libpython2.7-stdlib==2.7.16-2+deb10u1 +libpython3-all-dbg==3.7.3-1 +libpython3-all-dev==3.7.3-1 +libpython3-dbg==3.7.3-1 +libpython3-dev==3.7.3-1 +libpython3-stdlib==3.7.3-1 +libpython3.7==3.7.3-2+deb10u4 +libpython3.7-dbg==3.7.3-2+deb10u4 +libpython3.7-dev==3.7.3-2+deb10u4 +libpython3.7-minimal==3.7.3-2+deb10u4 +libpython3.7-stdlib==3.7.3-2+deb10u4 +libqdox-java==1.12.1-3 +libqdox2-java==2.0~M10-1 +libqt4-dbus==4:4.8.7+dfsg-18+deb10u1 +libqt4-declarative==4:4.8.7+dfsg-18+deb10u1 +libqt4-designer==4:4.8.7+dfsg-18+deb10u1 +libqt4-dev==4:4.8.7+dfsg-18+deb10u1 +libqt4-dev-bin==4:4.8.7+dfsg-18+deb10u1 +libqt4-help==4:4.8.7+dfsg-18+deb10u1 +libqt4-network==4:4.8.7+dfsg-18+deb10u1 +libqt4-opengl==4:4.8.7+dfsg-18+deb10u1 +libqt4-opengl-dev==4:4.8.7+dfsg-18+deb10u1 +libqt4-qt3support==4:4.8.7+dfsg-18+deb10u1 +libqt4-script==4:4.8.7+dfsg-18+deb10u1 +libqt4-scripttools==4:4.8.7+dfsg-18+deb10u1 +libqt4-sql==4:4.8.7+dfsg-18+deb10u1 +libqt4-sql-mysql==4:4.8.7+dfsg-18+deb10u1 +libqt4-svg==4:4.8.7+dfsg-18+deb10u1 +libqt4-test==4:4.8.7+dfsg-18+deb10u1 +libqt4-xml==4:4.8.7+dfsg-18+deb10u1 +libqt4-xmlpatterns==4:4.8.7+dfsg-18+deb10u1 +libqt5concurrent5==5.11.3+dfsg1-1+deb10u5 +libqt5core5a==5.11.3+dfsg1-1+deb10u5 +libqt5dbus5==5.11.3+dfsg1-1+deb10u5 +libqt5gui5==5.11.3+dfsg1-1+deb10u5 +libqt5network5==5.11.3+dfsg1-1+deb10u5 +libqt5opengl5==5.11.3+dfsg1-1+deb10u5 +libqt5opengl5-dev==5.11.3+dfsg1-1+deb10u5 +libqt5printsupport5==5.11.3+dfsg1-1+deb10u5 +libqt5sql5==5.11.3+dfsg1-1+deb10u5 +libqt5sql5-sqlite==5.11.3+dfsg1-1+deb10u5 +libqt5svg5==5.11.3-2 +libqt5test5==5.11.3+dfsg1-1+deb10u5 +libqt5widgets5==5.11.3+dfsg1-1+deb10u5 +libqt5xml5==5.11.3+dfsg1-1+deb10u5 +libqtcore4==4:4.8.7+dfsg-18+deb10u1 +libqtdbus4==4:4.8.7+dfsg-18+deb10u1 +libqtgui4==4:4.8.7+dfsg-18+deb10u1 +libquadmath0==8.3.0-6 +libraw1394-11==2.1.2-1+b1 +librdmacm1==22.1-1 +libreadline-dev==7.0-5 +libreadline5==5.2+dfsg-3+b13 +libreadline7==7.0-5 +libreadonly-perl==2.050-1 +libref-util-perl==0.204-1 +libref-util-xs-perl==0.117-1+b1 +libregexp-assemble-perl==0.36-1 +libregexp-pattern-license-perl==3.0.31-4 +librest-0.7-0==0.8.1-1 +librhash0==1.3.8-1 +librole-tiny-perl==2.000006-1 +librrd-dev==1.7.1-2 +librrd8==1.7.1-2 +librsvg2-2==2.44.10-2.1+deb10u3 +librsvg2-common==2.44.10-2.1+deb10u3 +librtmp1==2.4+20151223.gitfa8646d.1-2 +librubberband2==1.8.1-7 +libruby2.5==2.5.5-3+deb10u4 +libsamplerate0==0.1.9-2 +libsasl2-2==2.1.27+dfsg-1+deb10u2 +libsasl2-modules==2.1.27+dfsg-1+deb10u2 +libsasl2-modules-db==2.1.27+dfsg-1+deb10u2 +libsaxon-java==1:6.5.5-12 +libselinux1-dev==2.8-1+b1 +libsensors-config==1:3.5.0-3 +libsensors4-dev==1:3.5.0-3 +libsensors5==1:3.5.0-3 +libsepol1-dev==2.8-1 +libserd-0-0==0.28.0~dfsg0-1 +libsereal-decoder-perl==4.005+ds-1+b1 +libsereal-encoder-perl==4.005+ds-1+b1 +libsereal-perl==4.005-1 +libservlet-api-java==4.0.1-2 +libservlet3.1-java==1:4.0.1-2 +libsgmls-perl==1.03ii-36 +libshine3==3.1.1-2 +libshout3==2.4.1-2 +libsidplay1v5==1.36.59-11 +libsigsegv2==2.12-2 +libsisu-guice-java==4.2.0-1 +libsisu-inject-java==0.3.3-1 +libsisu-ioc-java==2.3.0-11 +libsisu-plexus-java==0.3.3-3 +libslang2==2.3.2-2 +libslang2-dev==2.3.2-2 +libslf4j-java==1.7.25-3 +libsm-dev==2:1.2.3-1 +libsm6==2:1.2.3-1 +libsnappy-java==1.1.7.2-1 +libsnappy-jni==1.1.7.2-1 +libsnappy1v5==1.1.7-1 +libsndfile1==1.0.28-6+deb10u2 +libsnmp-base==5.7.3+dfsg-5+deb10u4 +libsnmp-dev==5.7.3+dfsg-5+deb10u4 +libsnmp30==5.7.3+dfsg-5+deb10u4 +libsoap-lite-perl==1.27-1 +libsodium-dev==1.0.17-1 +libsodium23==1.0.17-1 +libsord-0-0==0.16.0~dfsg0-1+b1 +libsort-key-perl==1.33-2+b1 +libsort-versions-perl==1.62-1 +libsoup-gnome2.4-1==2.64.2-2 +libsoup2.4-1==2.64.2-2 +libsoxr0==0.1.2-3 +libspeex1==1.2~rc1.2-1+b2 +libspice-server1==0.14.0-1.3+deb10u1 +libsqlite3-0==3.27.2-3+deb10u2 +libsratom-0-0==0.6.0~dfsg0-1 +libssh-gcrypt-4==0.8.7-1+deb10u1 +libssh2-1==1.8.0-2.1 +libssl-dev==1.1.1n-0+deb10u4 +libssl1.1==1.1.1n-0+deb10u4 +libstdc++-8-dev==8.3.0-6 +libstemmer0d==0+svn585-1+b2 +libstrictures-perl==2.000005-1 +libstring-copyright-perl==0.003006-1 +libstring-escape-perl==2010.002-2 +libstring-shellquote-perl==1.04-1 +libstruct-dumb-perl==0.09-1 +libsub-exporter-perl==0.987-1 +libsub-exporter-progressive-perl==0.001013-1 +libsub-identify-perl==0.14-1+b1 +libsub-install-perl==0.928-1 +libsub-name-perl==0.21-1+b3 +libsub-quote-perl==2.005001-1 +libsubunit-dev==1.3.0-1 +libsubunit0==1.3.0-1 +libsurefire-java==2.22.1-1 +libswitch-perl==2.17-2 +libswresample3==7:4.1.10-0+deb10u1 +libswscale5==7:4.1.10-0+deb10u1 +libsynctex2==2018.20181218.49446-1 +libsys-hostname-long-perl==1.5-1 +libsystemd-dev==241-7~deb10u8 +libtag1v5==1.11.1+dfsg.1-0.3+deb10u1 +libtag1v5-vanilla==1.11.1+dfsg.1-0.3+deb10u1 +libtask-weaken-perl==1.06-1 +libtasn1-6-dev==4.13-3+deb10u1 +libtasn1-doc==4.13-3+deb10u1 +libtcl8.6==8.6.9+dfsg-2 +libtcmalloc-minimal4==2.7-1 +libteckit0==2.5.8+ds2-5 +libtemplate-perl==2.27-1+b1 +libterm-readkey-perl==2.38-1 +libtest-fatal-perl==0.014-1 +libtest-refcount-perl==0.08-3 +libtexlua52==2018.20181218.49446-1 +libtexlua53==2018.20181218.49446-1 +libtexluajit2==2018.20181218.49446-1 +libtext-charwidth-perl==0.04-7.1+b1 +libtext-glob-perl==0.10-1 +libtext-iconv-perl==1.7-5+b7 +libtext-levenshtein-perl==0.13-1 +libtext-unidecode-perl==1.30-1 +libtext-wrapi18n-perl==0.06-7.1 +libthai-data==0.1.28-2 +libthai0==0.1.28-2 +libtheora0==1.1.1+dfsg.1-15 +libtie-ixhash-perl==1.23-2 +libtiff5==4.1.0+git191117-2~deb10u7 +libtimedate-perl==2.3000-2+deb10u1 +libtinyxml2-6a==7.0.0+dfsg-1 +libtinyxml2-dev==7.0.0+dfsg-1 +libtk8.6==8.6.9-2 +libtool==2.4.6-9 +libtool-bin==2.4.6-9 +libtry-tiny-perl==0.30-1 +libtsan0==8.3.0-6 +libtwolame0==0.3.13-4 +libtype-tiny-perl==1.004004-1 +libtype-tiny-xs-perl==0.014-1+b1 +libtypes-serialiser-perl==1.0-1 +libubsan1==8.3.0-6 +libuchardet0==0.0.6-3 +libudev-dev==241-7~deb10u8 +libunbound8==1.9.0-2+deb10u2 +libunicode-utf8-perl==0.62-1 +libunwind-dev==1.2.1-10~deb10u1 +libunwind8==1.2.1-10~deb10u1 +liburi-perl==1.76-1 +libusb-0.1-4==2:0.1.12-32 +libusb-1.0-0==2:1.0.22-2 +libusb-1.0-0-dev==2:1.0.22-2 +libusb-1.0-doc==2:1.0.22-2 +libusb-dev==2:0.1.12-32 +libusbredirparser1==0.8.0-1 +libutempter0==1.1.6-3 +libuv1==1.24.1-1+deb10u1 +libv4l-0==1.16.3-3 +libv4lconvert0==1.16.3-3 +libva-drm2==2.4.0-1 +libva-x11-2==2.4.0-1 +libva2==2.4.0-1 +libvariable-magic-perl==0.62-1+b1 +libvdeplug2==2.3.2+r586-2.2 +libvdpau-va-gl1==0.4.2-1+b1 +libvdpau1==1.1.1-10 +libvelocity-tools-java==2.0-7 +libvidstab1.1==1.1.0-2 +libvirglrenderer0==0.7.0-2+deb10u1 +libvirt-clients==5.0.0-4+deb10u1 +libvirt0==5.0.0-4+deb10u1 +libvisual-0.4-0==0.4.0-15 +libvorbis0a==1.3.6-2 +libvorbisenc2==1.3.6-2 +libvorbisfile3==1.3.6-2 +libvpx5==1.7.0-3+deb10u1 +libvte-2.91-0==0.54.2-2 +libvte-2.91-common==0.54.2-2 +libvulkan-dev==1.1.97-2 +libvulkan1==1.1.97-2 +libwacom-bin==0.32-1 +libwacom-common==0.32-1 +libwacom2==0.32-1 +libwagon-file-java==3.3.1-2 +libwagon-http-shaded-java==3.3.1-2 +libwagon-provider-api-java==3.3.1-2 +libwant-perl==0.29-1+b4 +libwavpack1==5.1.0-6+deb10u1 +libwayland-bin==1.16.0-1 +libwayland-client0==1.16.0-1 +libwayland-cursor0==1.16.0-1 +libwayland-dev==1.16.0-1 +libwayland-egl1==1.16.0-1 +libwayland-server0==1.16.0-1 +libwebp6==0.6.1-2+deb10u1 +libwebpdemux2==0.6.1-2+deb10u1 +libwebpmux3==0.6.1-2+deb10u1 +libwebsocket-api-java==1.1-1+deb10u1 +libwmf0.2-7==0.2.8.4-14 +libwoff1==1.0.2-1 +libwrap0==7.6.q-28 +libwrap0-dev==7.6.q-28 +libwww-perl==6.36-2 +libwww-robotrules-perl==6.02-1 +libx11-6==2:1.6.7-1+deb10u2 +libx11-data==2:1.6.7-1+deb10u2 +libx11-dev==2:1.6.7-1+deb10u2 +libx11-protocol-perl==0.56-7 +libx11-xcb-dev==2:1.6.7-1+deb10u2 +libx11-xcb1==2:1.6.7-1+deb10u2 +libx264-155==2:0.155.2917+git0a84d98-2 +libx265-165==2.9-4 +libx32asan5==8.3.0-6 +libx32atomic1==8.3.0-6 +libx32gcc-8-dev==8.3.0-6 +libx32gcc1==1:8.3.0-6 +libx32gomp1==8.3.0-6 +libx32itm1==8.3.0-6 +libx32quadmath0==8.3.0-6 +libx32stdc++6==8.3.0-6 +libx32ubsan1==8.3.0-6 +libxalan2-java==2.7.2-2 +libxapian30==1.4.11-1 +libxau-dev==1:1.0.8-1+b2 +libxau6==1:1.0.8-1+b2 +libxaw7==2:1.0.13-1+b2 +libxbean-reflect-java==4.5-8 +libxcb-dri2-0==1.13.1-2 +libxcb-dri2-0-dev==1.13.1-2 +libxcb-dri3-0==1.13.1-2 +libxcb-dri3-dev==1.13.1-2 +libxcb-glx0==1.13.1-2 +libxcb-glx0-dev==1.13.1-2 +libxcb-icccm4==0.4.1-1.1 +libxcb-image0==0.4.0-1+b2 +libxcb-keysyms1==0.4.0-1+b2 +libxcb-present-dev==1.13.1-2 +libxcb-present0==1.13.1-2 +libxcb-randr0==1.13.1-2 +libxcb-randr0-dev==1.13.1-2 +libxcb-render-util0==0.3.9-1+b1 +libxcb-render0==1.13.1-2 +libxcb-render0-dev==1.13.1-2 +libxcb-shape0==1.13.1-2 +libxcb-shape0-dev==1.13.1-2 +libxcb-shm0==1.13.1-2 +libxcb-shm0-dev==1.13.1-2 +libxcb-sync-dev==1.13.1-2 +libxcb-sync1==1.13.1-2 +libxcb-util0==0.3.8-3+b2 +libxcb-xfixes0==1.13.1-2 +libxcb-xfixes0-dev==1.13.1-2 +libxcb-xinerama0==1.13.1-2 +libxcb-xkb1==1.13.1-2 +libxcb1==1.13.1-2 +libxcb1-dev==1.13.1-2 +libxcomposite-dev==1:0.4.4-2 +libxcomposite1==1:0.4.4-2 +libxcursor-dev==1:1.1.15-2 +libxcursor1==1:1.1.15-2 +libxdamage-dev==1:1.1.4-3+b3 +libxdamage1==1:1.1.4-3+b3 +libxdelta2==1.1.3-9.2 +libxdmcp-dev==1:1.1.2-3 +libxdmcp6==1:1.1.2-3 +libxdot4==2.40.1-6+deb10u1 +libxencall1==4.11.4+107-gef32c7afa2-1 +libxendevicemodel1==4.11.4+107-gef32c7afa2-1 +libxenevtchn1==4.11.4+107-gef32c7afa2-1 +libxenforeignmemory1==4.11.4+107-gef32c7afa2-1 +libxengnttab1==4.11.4+107-gef32c7afa2-1 +libxenmisc4.11==4.11.4+107-gef32c7afa2-1 +libxenstore3.0==4.11.4+107-gef32c7afa2-1 +libxentoolcore1==4.11.4+107-gef32c7afa2-1 +libxentoollog1==4.11.4+107-gef32c7afa2-1 +libxerces2-java==2.12.0-1 +libxext-dev==2:1.3.3-1+b2 +libxext6==2:1.3.3-1+b2 +libxfixes-dev==1:5.0.3-1 +libxfixes3==1:5.0.3-1 +libxft-dev==2.3.2-2 +libxft2==2.3.2-2 +libxi-dev==2:1.7.9-1 +libxi6==2:1.7.9-1 +libxinerama-dev==2:1.1.4-2 +libxinerama1==2:1.1.4-2 +libxkbcommon-dev==0.8.2-1 +libxkbcommon-x11-0==0.8.2-1 +libxkbcommon0==0.8.2-1 +libxml-commons-external-java==1.4.01-3 +libxml-commons-resolver1.1-java==1.2-9 +libxml-libxml-perl==2.0134+dfsg-1 +libxml-namespacesupport-perl==1.12-1 +libxml-parser-perl==2.44-4 +libxml-sax-base-perl==1.09-1 +libxml-sax-expat-perl==0.51-1 +libxml-sax-perl==1.00+dfsg-1 +libxml-simple-perl==2.25-1 +libxml-twig-perl==1:3.50-1.1 +libxml-xpathengine-perl==0.14-1 +libxml2==2.9.4+dfsg1-7+deb10u5 +libxml2-dev==2.9.4+dfsg1-7+deb10u5 +libxml2-utils==2.9.4+dfsg1-7+deb10u5 +libxmlgraphics-commons-java==2.3-1+deb10u1 +libxmlrpc-lite-perl==0.717-2 +libxmu6==2:1.1.2-2+b3 +libxmuu1==2:1.1.2-2+b3 +libxpm4==1:3.5.12-1 +libxrandr-dev==2:1.5.1-1 +libxrandr2==2:1.5.1-1 +libxrender-dev==1:0.9.10-1 +libxrender1==1:0.9.10-1 +libxshmfence-dev==1.3-1 +libxshmfence1==1.3-1 +libxslt1.1==1.1.32-2.2~deb10u2 +libxss1==1:1.2.3-1 +libxt-dev==1:1.1.5-1+b3 +libxt6==1:1.1.5-1+b3 +libxtables-dev==1.8.2-4 +libxtst-dev==2:1.2.3-1 +libxtst6==2:1.2.3-1 +libxv1==2:1.0.11-1 +libxvidcore4==2:1.3.5-1 +libxxf86dga1==2:1.1.4-1+b3 +libxxf86vm-dev==1:1.1.4-1+b2 +libxxf86vm1==1:1.1.4-1+b2 +libxxhash0==0.6.5-2 +libxz-java==1.8-2 +libyajl2==2.1.0-3 +libyaml-0-2==0.2.1-1 +libyaml-dev==0.2.1-1 +libyaml-libyaml-perl==0.76+repack-1 +libzmq3-dev==4.3.1-4+deb10u2 +libzmq5==4.3.1-4+deb10u2 +libzvbi-common==0.2.35-16 +libzvbi0==0.2.35-16 +libzzip-0-13==0.13.62-3.2+deb10u1 +licensecheck==3.0.31-3 +lintian==2.15.0 +linux-compiler-gcc-8-x86==4.19.269-1 +linux-headers-4.19.0-23-amd64==4.19.269-1 +linux-headers-4.19.0-23-common==4.19.269-1 +linux-headers-amd64==4.19+105+deb10u18 +linux-kbuild-4.19==4.19.269-1 +linux-libc-dev==4.19.269-1 +linuxdoc-tools==0.9.73-2 +llvm-7==1:7.0.1-8+deb10u2 +llvm-7-dev==1:7.0.1-8+deb10u2 +llvm-7-runtime==1:7.0.1-8+deb10u2 +lmodern==2.004.5-6 +locales==2.28-10+deb10u2 +logrotate==3.14.0-4 +lsb-base==10.2019051400 +lsb-release==10.2019051400 +lsof==4.91+dfsg-1 +lua-bitop==1.0.2-5 +lua-bitop-dev==1.0.2-5 +lua-cjson==2.1.0+dfsg-2.1 +lua-cjson-dev==2.1.0+dfsg-2.1 +lvm2==2.03.02-3 +lynx==2.8.9rel.1-3+deb10u1 +lynx-common==2.8.9rel.1-3+deb10u1 +m4==1.4.18-2 +make==4.2.1-1.2 +man-db==2.8.5-2 +man2html-base==1.6g-11 +manpages==4.16-2 +manpages-dev==4.16-2 +mariadb-common==1:10.3.38-0+deb10u1 +maven==3.6.0-1 +maven-debian-helper==2.3.2 +maven-repo-helper==1.9.3 +mesa-common-dev==18.3.6-2+deb10u1 +mesa-va-drivers==18.3.6-2+deb10u1 +mesa-vdpau-drivers==18.3.6-2+deb10u1 +mime-support==3.62 +module-assistant==0.11.10 +mysql-common==5.8+1.0.5 +ncurses-term==6.1+20181013-2+deb10u3 +netbase==5.6 +netpbm==2:10.0-15.3+b2 +nettle-dev==3.4.1-1+deb10u1 +nftables==0.9.0-2 +ocl-icd-libopencl1==2.2.12-2 +openjade==1.4devel1-21.3+b1 +openjdk-11-jdk==11.0.18+10-1~deb10u1 +openjdk-11-jdk-headless==11.0.18+10-1~deb10u1 +openjdk-11-jre==11.0.18+10-1~deb10u1 +openjdk-11-jre-headless==11.0.18+10-1~deb10u1 +openmpi-bin==3.1.3-11 +openmpi-common==3.1.3-11 +opensp==1.5.2-13+b1 +openssh-client==1:7.9p1-10+deb10u2 +openssh-server==1:7.9p1-10+deb10u2 +openssh-sftp-server==1:7.9p1-10+deb10u2 +openssl==1.1.1n-0+deb10u4 +ovmf==0~20181115.85588389-3+deb10u3 +packagekit==1.1.12-5 +packagekit-tools==1.1.12-5 +pango1.0-tools==1.42.4-8~deb10u1 +patch==2.7.6-3+deb10u1 +patchutils==0.3.4-2 +pbuilder==0.230.4 +pbzip2==1.1.9-1+b1 +perl==5.28.1-6+deb10u1 +perl-modules-5.28==5.28.1-6+deb10u1 +perl-openssl-defaults==3 +php-cli==2:7.3+69 +php-codecoverage==6.1.4+dfsg-1 +php-common==2:69 +php-deepcopy==1.8.1-1 +php-doctrine-instantiator==1.1.0-2 +php-file-iterator==2.0.2-1 +php-mbstring==2:7.3+69 +php-pear==1:1.10.6+submodules+notgz-1.1+deb10u2 +php-phar-io-manifest==1.0.3-1 +php-phar-io-version==2.0.1-1 +php-phpdocumentor-reflection-common==1.0.1-1 +php-phpdocumentor-reflection-docblock==4.3.0-1 +php-phpdocumentor-type-resolver==0.4.0-2 +php-phpspec-prophecy==1.8.0-1 +php-text-template==1.2.1-2 +php-timer==2.1.1-1 +php-token-stream==3.0.1-1 +php-tokenizer==1.1.0-1 +php-webmozart-assert==1.4.0-3 +php-xml==2:7.3+69 +php7.3-cli==7.3.31-1~deb10u3 +php7.3-common==7.3.31-1~deb10u3 +php7.3-json==7.3.31-1~deb10u3 +php7.3-mbstring==7.3.31-1~deb10u3 +php7.3-opcache==7.3.31-1~deb10u3 +php7.3-readline==7.3.31-1~deb10u3 +php7.3-xml==7.3.31-1~deb10u3 +phpunit==7.5.6-1 +phpunit-code-unit-reverse-lookup==1.0.1-1 +phpunit-comparator==3.0.2-1 +phpunit-diff==3.0.2-1 +phpunit-environment==4.1.0-1 +phpunit-exporter==3.1.0-2 +phpunit-global-state==2.0.0really2.0.0-2 +phpunit-object-enumerator==3.0.3-3 +phpunit-object-reflector==1.1.1-2 +phpunit-recursion-context==3.0.0-2 +phpunit-resource-operations==2.0.1-1 +phpunit-version==2.0.1-1 +pigz==2.4-1 +pinentry-curses==1.1.0-2 +pkg-config==0.29-6 +pkg-php-tools==1.37 +po-debconf==1.0.21 +policykit-1==0.105-25+deb10u1 +poppler-data==0.4.9-2 +pps-tools==1.0.2-1 +preview-latex-style==11.91-2 +pristine-tar==1.46 +procmail==3.22-26+deb10u1 +procps==2:3.3.15-2 +protobuf-compiler==3.6.1.3-2 +psmisc==23.2-1+deb10u1 +psutils==1.17.dfsg-4 +publicsuffix==20220811.1734-0+deb10u1 +pylint==1.9.4-1 +python==2.7.16-1 +python-alabaster==0.7.8-1 +python-all==2.7.16-1 +python-all-dev==2.7.16-1 +python-apt-common==1.8.4.3 +python-asn1crypto==0.24.0-1 +python-astroid==1.6.5-3 +python-atomicwrites==1.1.5-2 +python-attr==18.2.0-1 +python-automat==0.6.0-1 +python-babel==2.6.0+dfsg.1-1+deb10u1 +python-babel-localedata==2.6.0+dfsg.1-1+deb10u1 +python-backports.functools-lru-cache==1.5-3 +python-bs4==4.7.1-1 +python-certifi==2018.8.24-1 +python-cffi-backend==1.12.2-1 +python-chardet==3.0.4-3 +python-click==7.0-1 +python-colorama==0.3.7-1 +python-concurrent.futures==3.2.0-2 +python-configparser==3.5.0b2-1 +python-constantly==15.1.0-1 +python-cov-core==1.15.0-2 +python-coverage==4.5.2+dfsg.1-1 +python-crypto==2.6.1-9+b1 +python-cryptography==2.6.1-3+deb10u4 +python-dbus==1.2.8-3 +python-dev==2.7.16-1 +python-docutils==0.14+dfsg-4 +python-egenix-mxdatetime==3.2.9-1 +python-egenix-mxtools==3.2.9-1 +python-entrypoints==0.3-1 +python-enum34==1.1.6-2 +python-funcsigs==1.0.2-4 +python-gi==3.30.4-1 +python-html5lib==1.0.1-1 +python-hyperlink==17.3.1-2 +python-idna==2.6-1 +python-imagesize==1.0.0-1 +python-incremental==16.10.1-3 +python-ipaddr==2.2.0-2 +python-ipaddress==1.0.17-1 +python-isort==4.3.4+ds1-1.1 +python-jinja2==2.10-2 +python-keyring==17.1.1-1 +python-keyrings.alt==3.1.1-1 +python-lazy-object-proxy==1.3.1-1+b1 +python-logilab-common==1.4.2-1 +python-lxml==4.3.2-1+deb10u4 +python-markupsafe==1.1.0-1 +python-mccabe==0.6.1-2 +python-minimal==2.7.16-1 +python-mock==2.0.0-4 +python-more-itertools==4.2.0-1 +python-nose2==0.8.0-1 +python-olefile==0.46-1 +python-openssl==19.0.0-1 +python-packaging==19.0-1 +python-parse==1.6.6-0.1 +python-pathlib2==2.3.3-1 +python-pbr==4.2.0-5 +python-pil==5.4.1-2+deb10u3 +python-pip-whl==18.1-5 +python-pkg-resources==40.8.0-1 +python-pluggy==0.8.0-1 +python-py==1.7.0-2 +python-pyasn1==0.4.2-3 +python-pyasn1-modules==0.2.1-0.2 +python-pygments==2.3.1+dfsg-1+deb10u2 +python-pyparsing==2.2.0+dfsg1-2 +python-pytest==3.10.1-2 +python-pytest-cov==2.6.0-1 +python-requests==2.21.0-1 +python-roman==2.0.0-3 +python-scandir==1.9.0-2 +python-secretstorage==2.3.1-2 +python-service-identity==16.0.0-2 +python-setuptools==40.8.0-1 +python-singledispatch==3.4.0.3-2 +python-six==1.12.0-1 +python-soupsieve==1.8+dfsg-1 +python-sphinx==1.8.4-1 +python-stdeb==0.8.5-1 +python-tk==2.7.16-2 +python-twisted==18.9.0-3+deb10u2 +python-twisted-bin==18.9.0-3+deb10u2 +python-twisted-core==18.9.0-3+deb10u2 +python-typing==3.6.6-1 +python-tz==2019.1-1 +python-urllib3==1.24.1-1 +python-webencodings==0.5.1-1 +python-wheel==0.32.3-2 +python-wrapt==1.10.11-1 +python-xdg==0.25-5 +python-zope.interface==4.3.2-1+b2 +python2==2.7.16-1 +python2-dev==2.7.16-1 +python2-minimal==2.7.16-1 +python2.7==2.7.16-2+deb10u1 +python2.7-dev==2.7.16-2+deb10u1 +python2.7-minimal==2.7.16-2+deb10u1 +python3==3.7.3-1 +python3-alabaster==0.7.8-1 +python3-all==3.7.3-1 +python3-all-dbg==3.7.3-1 +python3-all-dev==3.7.3-1 +python3-apt==1.8.4.3 +python3-asn1crypto==0.24.0-1 +python3-atomicwrites==1.1.5-2 +python3-attr==18.2.0-1 +python3-babel==2.6.0+dfsg.1-1+deb10u1 +python3-certifi==2018.8.24-1 +python3-cffi-backend==1.12.2-1 +python3-chardet==3.0.4-3 +python3-cov-core==1.15.0-2 +python3-coverage==4.5.2+dfsg.1-1 +python3-crypto==2.6.1-9+b1 +python3-cryptography==2.6.1-3+deb10u4 +python3-dateutil==2.7.3-3 +python3-dbg==3.7.3-1 +python3-dbus==1.2.8-3 +python3-debian==0.1.35 +python3-dev==3.7.3-1 +python3-distro-info==0.21 +python3-distutils==3.7.3-1 +python3-docutils==0.14+dfsg-4 +python3-entrypoints==0.3-1 +python3-gi==3.30.4-1 +python3-gpg==1.12.0-6 +python3-idna==2.6-1 +python3-imagesize==1.0.0-1 +python3-jinja2==2.10-2 +python3-keyring==17.1.1-1 +python3-keyrings.alt==3.1.1-1 +python3-lib2to3==3.7.3-1 +python3-magic==2:0.4.15-2 +python3-mako==1.0.7+ds1-1+deb10u1 +python3-markdown==3.0.1-3 +python3-markupsafe==1.1.0-1 +python3-minimal==3.7.3-1 +python3-mock==2.0.0-4 +python3-more-itertools==4.2.0-1 +python3-nose2==0.8.0-1 +python3-olefile==0.46-1 +python3-packaging==19.0-1 +python3-pbr==4.2.0-5 +python3-pil==5.4.1-2+deb10u3 +python3-pkg-resources==40.8.0-1 +python3-pluggy==0.8.0-1 +python3-py==1.7.0-2 +python3-pycurl==7.43.0.2-0.1 +python3-pygments==2.3.1+dfsg-1+deb10u2 +python3-pyparsing==2.2.0+dfsg1-2 +python3-pytest==3.10.1-2 +python3-pytest-cov==2.6.0-1 +python3-requests==2.21.0-1 +python3-roman==2.0.0-3 +python3-secretstorage==2.3.1-2 +python3-setuptools==40.8.0-1 +python3-six==1.12.0-1 +python3-software-properties==0.96.20.2-2 +python3-sphinx==1.8.4-1 +python3-sphinx-rtd-theme==0.4.3+dfsg-1 +python3-tz==2019.1-1 +python3-unidiff==0.5.4-1 +python3-urllib3==1.24.1-1 +python3-wheel==0.32.3-2 +python3-xdg==0.25-5 +python3.7==3.7.3-2+deb10u4 +python3.7-dbg==3.7.3-2+deb10u4 +python3.7-dev==3.7.3-2+deb10u4 +python3.7-minimal==3.7.3-2+deb10u4 +qdbus==4:4.8.7+dfsg-18+deb10u1 +qemu-kvm==1:3.1+dfsg-8+deb10u9 +qemu-system-common==1:3.1+dfsg-8+deb10u9 +qemu-system-data==1:3.1+dfsg-8+deb10u9 +qemu-system-gui==1:3.1+dfsg-8+deb10u9 +qemu-system-x86==1:3.1+dfsg-8+deb10u9 +qemu-utils==1:3.1+dfsg-8+deb10u9 +qt-at-spi==0.4.0-9 +qt4-linguist-tools==4:4.8.7+dfsg-18+deb10u1 +qt4-qmake==4:4.8.7+dfsg-18+deb10u1 +qt5-default==5.11.3+dfsg1-1+deb10u5 +qt5-gtk-platformtheme==5.11.3+dfsg1-1+deb10u5 +qt5-qmake==5.11.3+dfsg1-1+deb10u5 +qt5-qmake-bin==5.11.3+dfsg1-1+deb10u5 +qtbase5-dev==5.11.3+dfsg1-1+deb10u5 +qtbase5-dev-tools==5.11.3+dfsg1-1+deb10u5 +qtchooser==66-2 +qtcore4-l10n==4:4.8.7+dfsg-18+deb10u1 +qttranslations5-l10n==5.11.3-2 +quilt==0.65-3 +rake==12.3.1-3+deb10u1 +readline-common==7.0-5 +rrdtool==1.7.1-2 +rsync==3.1.3-6 +rsyslog==8.1901.0-1+deb10u2 +ruby==1:2.5.1 +ruby-all-dev==1:2.5.1 +ruby-asciidoctor==1.5.8-1 +ruby-did-you-mean==1.2.1-1 +ruby-minitest==5.11.3-1 +ruby-net-telnet==0.1.1-2 +ruby-power-assert==1.1.1-1 +ruby-setup==3.4.1-9 +ruby-test-unit==3.2.8-1 +ruby-xmlrpc==0.3.0-2 +ruby2.5==2.5.5-3+deb10u4 +ruby2.5-dev==2.5.5-3+deb10u4 +ruby2.5-doc==2.5.5-3+deb10u4 +rubygems-integration==1.11+deb10u1 +sbsigntool==0.9.2-2 +seabios==1.12.0-1 +sensible-utils==0.0.12 +sgml-base==1.29 +sgml-data==2.0.11 +sgmlspl==1.03ii-36 +shared-mime-info==1.10-1 +sharutils==1:4.15.2-4 +shellcheck==0.5.0-3 +software-properties-common==0.96.20.2-2 +sphinx-common==1.8.4-1 +sphinx-rtd-theme-common==0.4.3+dfsg-1 +squashfs-tools==1:4.3-12+deb10u2 +stgit==0.18-1 +strace==4.26-0.2 +sudo==1.8.27-1+deb10u5 +swig==3.0.12-2 +swig3.0==3.0.12-2 +systemd==241-7~deb10u8 +systemd-sysv==241-7~deb10u8 +t1utils==1.41-3 +tcl==8.6.9+1 +tcl8.6==8.6.9+dfsg-2 +teckit==2.5.8+ds2-5 +telnet==0.17-41.2 +tex-common==6.11 +tex-gyre==20180621-3 +texi2html==1.82+dfsg1-5 +texinfo==6.5.0.dfsg.1-4+b1 +texlive-base==2018.20190227-2 +texlive-binaries==2018.20181218.49446-1 +texlive-fonts-recommended==2018.20190227-2 +texlive-formats-extra==2018.20190227-2 +texlive-generic-recommended==2018.20190227-2 +texlive-latex-base==2018.20190227-2 +texlive-latex-extra==2018.20190227-2 +texlive-latex-recommended==2018.20190227-2 +texlive-pictures==2018.20190227-2 +texlive-plain-generic==2018.20190227-2 +texlive-xetex==2018.20190227-2 +thin-provisioning-tools==0.7.6-2.1 +time==1.7-25.1+b1 +tipa==2:1.3-20 +tk==8.6.9+1 +tk8.6==8.6.9-2 +tk8.6-blt2.5==2.5.3+dfsg-4 +ucf==3.0038+nmu1 +unattended-upgrades==1.11.2 +unzip==6.0-23+deb10u3 +uuid-dev==2.33.1-0.1 +va-driver-all==2.4.0-1 +vdpau-driver-all==1.1.1-10 +velocity==1.7-5+deb10u1 +vim==2:8.1.0875-5+deb10u4 +vim-common==2:8.1.0875-5+deb10u4 +vim-runtime==2:8.1.0875-5+deb10u4 +wayland-protocols==1.17-1 +wdiff==1.2.2-2+b1 +wget==1.20.1-1.1 +x11-common==1:7.7+19 +x11-utils==7.7+4 +x11-xserver-utils==7.7+8 +x11proto-composite-dev==1:2018.4-4 +x11proto-core-dev==2018.4-4 +x11proto-damage-dev==1:2018.4-4 +x11proto-dev==2018.4-4 +x11proto-fixes-dev==1:2018.4-4 +x11proto-input-dev==2018.4-4 +x11proto-randr-dev==2018.4-4 +x11proto-record-dev==2018.4-4 +x11proto-xext-dev==2018.4-4 +x11proto-xf86vidmode-dev==2018.4-4 +x11proto-xinerama-dev==2018.4-4 +xauth==1:1.0.10-1 +xbitmaps==1.1.1-2 +xdelta==1.1.3-9.2 +xdelta3==3.0.11-dfsg-1+b1 +xdg-user-dirs==0.17-2 +xdg-utils==1.1.3-1+deb10u1 +xfonts-encodings==1:1.0.4-2 +xfonts-utils==1:7.7+6 +xkb-data==2.26-2 +xml-core==0.18+nmu1 +xorg-sgml-doctools==1:1.11-1 +xsltproc==1.1.32-2.2~deb10u2 +xterm==344-1+deb10u2 +xtrans-dev==1.3.5-1 +xxd==2:8.1.0875-5+deb10u4 +xz-utils==5.2.4-1+deb10u1 +zip==3.0-11+b1 +zlib1g-dev==1:1.2.11.dfsg-1+deb10u2 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 new file mode 100644 index 000000000000..36d10bb078b2 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-arm64 @@ -0,0 +1,7 @@ +binutils-aarch64-linux-gnu==2.31.1-16 +libdrm-etnaviv1==2.4.97-1 +libdrm-freedreno1==2.4.97-1 +libdrm-tegra0==2.4.97-1 +libtext-iconv-perl==1.7-5+b6 +libxslt1-dev==1.1.32-2.2~deb10u2 +nodejs==14.21.3-deb-1nodesource1 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf new file mode 100644 index 000000000000..0bc0aa6909b1 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-buster/versions-deb-buster-armhf @@ -0,0 +1,10 @@ +binutils-arm-linux-gnueabihf==2.31.1-16 +libdrm-etnaviv1==2.4.97-1 +libdrm-exynos1==2.4.97-1 +libdrm-freedreno1==2.4.97-1 +libdrm-omap1==2.4.97-1 +libdrm-tegra0==2.4.97-1 +libgles2-mesa-dev==18.3.6-2+deb10u1 +libxslt1-dev==1.1.32-2.2~deb10u2 +linux-compiler-gcc-8-arm==4.19.269-1 +nodejs==14.21.3-deb-1nodesource1 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-py2 b/files/build/versions/dockers/sonic-slave-buster/versions-py2 new file mode 100644 index 000000000000..60d9f8a7c63c --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-buster/versions-py2 @@ -0,0 +1,95 @@ +alabaster==0.7.8 +asn1crypto==0.24.0 +astroid==1.6.5 +atomicwrites==1.1.5 +attrs==18.2.0 +automat==0.6.0 +babel==2.6.0 +backports.functools-lru-cache==1.5 +beautifulsoup4==4.7.1 +certifi==2018.8.24 +chardet==3.0.4 +click==7.0 +colorama==0.3.7 +configparser==3.5.0b2 +constantly==15.1.0 +cov-core==1.15.0 +coverage==4.5.2 +crc16==0.1.1 +cryptography==2.6.1 +ctypesgen==1.0.2 +docutils==0.14 +entrypoints==0.3 +enum34==1.1.6 +fastentrypoints==0.12 +funcsigs==1.0.2 +futures==3.2.0 +html5lib==1.0.1 +hyperlink==17.3.1 +idna==2.6 +imagesize==1.0.0 +incremental==16.10.1 +ipaddr==2.2.0 +ipaddress==1.0.17 +isort==4.3.4 +j2cli==0.3.10 +jinja2==2.10 +keyring==17.1.1 +keyrings.alt==3.1.1 +lazy-object-proxy==1.3.1 +logilab-common==1.4.2 +lxml==4.6.5 +m2crypto==0.36.0 +markupsafe==1.1.0 +mccabe==0.6.1 +mmh3==2.5.1 +mock==3.0.5 +mockredispy==2.9.3 +more-itertools==4.2.0 +nose==1.3.7 +nose2==0.8.0 +olefile==0.46 +packaging==19.0 +parse==1.6.6 +pathlib2==2.3.3 +pbr==4.2.0 +pexpect==4.6.0 +pillow==5.4.1 +pip==20.3.4 +pluggy==0.8.0 +ptyprocess==0.7.0 +py==1.7.0 +pyasn1==0.4.2 +pyasn1-modules==0.2.1 +pycrypto==2.6.1 +pygments==2.3.1 +pygobject==3.30.4 +pylint==1.9.4 +pympler==0.8 +pyopenssl==19.0.0 +pyparsing==2.2.0 +pytest==3.10.1 +pytest-cov==2.6.0 +pytest-runner==4.4 +pytz==2019.1 +pyxdg==0.25 +pyyaml==5.4.1 +requests==2.21.0 +roman==2.0.0 +scandir==1.9.0 +secretstorage==2.3.1 +service-identity==16.0.0 +setuptools==40.8.0 +singledispatch==3.4.0.3 +six==1.12.0 +soupsieve==1.8 +sphinx==1.8.4 +stdeb==0.8.5 +stgit==0.18 +twisted==18.9.0 +typing==3.6.6 +urllib3==1.24.1 +webencodings==0.5.1 +wheel==0.35.1 +wrapt==1.10.11 +zope.interface==4.3.2 diff --git a/files/build/versions/dockers/sonic-slave-buster/versions-py3 b/files/build/versions/dockers/sonic-slave-buster/versions-py3 new file mode 100644 index 000000000000..9e34cdb7f7e2 --- /dev/null +++ b/files/build/versions/dockers/sonic-slave-buster/versions-py3 @@ -0,0 +1,81 @@ +alabaster==0.7.8 +asn1crypto==0.24.0 +async-timeout==4.0.2 +atomicwrites==1.1.5 +attrs==18.2.0 +babel==2.6.0 +bitarray==2.7.3 +certifi==2018.8.24 +chardet==3.0.4 +cov-core==1.15.0 +coverage==4.5.2 +cryptography==2.6.1 +devscripts==2.19.5+deb10u1 +distro-info==0.21 +docutils==0.14 +entrypoints==0.3 +fastentrypoints==0.12 +gbp==0.9.14 +gcovr==4.1 +gpg==1.12.0 +idna==2.6 +imagesize==1.0.0 +importlib-metadata==6.0.0 +jinja2==3.0.3 +keyring==17.1.1 +keyrings.alt==3.1.1 +lxml==4.6.5 +m2crypto==0.38.0 +mako==1.0.7 +markdown==3.0.1 +markupsafe==2.0.1 +mmh3==2.5.1 +mock==2.0.0 +mockredispy==2.9.3 +more-itertools==4.2.0 +nose==1.3.7 +nose2==0.8.0 +olefile==0.46 +packaging==19.0 +parameterized==0.8.1 +pbr==4.2.0 +pexpect==4.8.0 +pillow==5.4.1 +pip==23.0.1 +pluggy==0.8.0 +ptyprocess==0.7.0 +py==1.7.0 +pyang==2.4.0 +pyangbind==0.8.1 +pycrypto==2.6.1 +pycurl==7.43.0.2 +pyfakefs==5.1.0 +pygments==2.3.1 +pygobject==3.30.4 +pympler==0.8 +pyparsing==2.2.0 +pytest==3.10.1 +pytest-cov==2.6.0 +pytest-runner==5.2 +python-apt==1.8.4.3 +python-dateutil==2.7.3 +python-debian==0.1.35 +python-magic==0.4.16 +pytz==2019.1 +pyxdg==0.25 +pyyaml==5.4.1 +redis==4.5.1 +regex==2022.10.31 +requests==2.21.0 +roman==2.0.0 +secretstorage==2.3.1 +setuptools==49.6.0 +six==1.12.0 +sphinx==1.8.4 +sphinx-rtd-theme==0.4.3 +typing_extensions==4.5.0 +unattended-upgrades==0.1 +unidiff==0.5.4 +urllib3==1.24.1 +wheel==0.35.1 +zipp==3.15.0 diff --git a/files/build/versions/host-base-image/versions-deb-bullseye b/files/build/versions/host-base-image/versions-deb-bullseye new file mode 100644 index 000000000000..be4a5752d1ec --- /dev/null +++ b/files/build/versions/host-base-image/versions-deb-bullseye @@ -0,0 +1,96 @@ +adduser==3.118 +apt==2.2.4 +base-files==11.1+deb11u6 +base-passwd==3.5.51 +bash==5.1-2+deb11u1 +bsdutils==1:2.36.1-8+deb11u1 +coreutils==8.32-4+b1 +dash==0.5.11+git20200708+dd9ef66-5 +debconf==1.5.77 +debian-archive-keyring==2021.1.1 +debianutils==4.11.2 +diffutils==1:3.7-5 +dpkg==1.20.12 +e2fsprogs==1.46.2-2 +findutils==4.8.0-1 +gcc-10-base==10.2.1-6 +gcc-9-base==9.3.0-22 +gpgv==2.2.27-2+deb11u2 +grep==3.6-1 +gzip==1.10-4+deb11u1 +hostname==3.23 +init-system-helpers==1.60 +libacl1==2.2.53-10 +libapt-pkg6.0==2.2.4 +libattr1==1:2.4.48-6 +libaudit-common==1:3.0-2 +libaudit1==1:3.0-2 +libblkid1==2.36.1-8+deb11u1 +libbz2-1.0==1.0.8-4 +libc-bin==2.31-13+deb11u5 +libc6==2.31-13+deb11u5 +libcap-ng0==0.7.9-2.2+b1 +libcom-err2==1.46.2-2 +libcrypt1==1:4.4.18-4 +libdb5.3==5.3.28+dfsg1-0.8 +libdebconfclient0==0.260 +libext2fs2==1.46.2-2 +libffi7==3.3-6 +libgcc-s1==10.2.1-6 +libgcrypt20==1.8.7-6 +libgmp10==2:6.2.1+dfsg-1+deb11u1 +libgnutls30==3.7.1-5+deb11u2 +libgpg-error0==1.38-2 +libgssapi-krb5-2==1.18.3-6+deb11u3 +libhogweed6==3.7.3-1 +libidn2-0==2.3.0-5 +libk5crypto3==1.18.3-6+deb11u3 +libkeyutils1==1.6.1-2 +libkrb5-3==1.18.3-6+deb11u3 +libkrb5support0==1.18.3-6+deb11u3 +liblz4-1==1.9.3-2 +liblzma5==5.2.5-2.1~deb11u1 +libmount1==2.36.1-8+deb11u1 +libnettle8==3.7.3-1 +libnsl2==1.3.0-2 +libp11-kit0==0.23.22-1 +libpam-modules==1.4.0-9+deb11u1 +libpam-modules-bin==1.4.0-9+deb11u1 +libpam-runtime==1.4.0-9+deb11u1 +libpam0g==1.4.0-9+deb11u1 +libpcre2-8-0==10.36-2+deb11u1 +libpcre3==2:8.39-13 +libseccomp2==2.5.1-1+deb11u1 +libselinux1==3.1-3 +libsemanage-common==3.1-1 +libsemanage1==3.1-1+b2 +libsepol1==3.1-1 +libsmartcols1==2.36.1-8+deb11u1 +libss2==1.46.2-2 +libssl1.1==1.1.1n-0+deb11u3 +libstdc++6==10.2.1-6 +libsystemd0==247.3-7+deb11u1 +libtasn1-6==4.16.0-2+deb11u1 +libtinfo6==6.2+20201114-2 +libtirpc-common==1.3.1-1+deb11u1 +libtirpc3==1.3.1-1+deb11u1 +libudev1==247.3-7+deb11u1 +libunistring2==0.9.10-4 +libuuid1==2.36.1-8+deb11u1 +libxxhash0==0.8.0-2 +libzstd1==1.4.8+dfsg-2.1 +login==1:4.8.1-1 +logsave==1.46.2-2 +lsb-base==11.1.0 +mawk==1.3.4.20200120-2 +mount==2.36.1-8+deb11u1 +ncurses-base==6.2+20201114-2 +ncurses-bin==6.2+20201114-2 +passwd==1:4.8.1-1 +perl-base==5.32.1-4+deb11u2 +sed==4.7-1 +sysvinit-utils==2.96-7+deb11u1 +tar==1.34+dfsg-1 +tzdata==2021a-1+deb11u8 +util-linux==2.36.1-8+deb11u1 +zlib1g==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/host-base-image/versions-deb-bullseye-arm64 b/files/build/versions/host-base-image/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..89c485cacc41 --- /dev/null +++ b/files/build/versions/host-base-image/versions-deb-bullseye-arm64 @@ -0,0 +1 @@ +coreutils==8.32-4 diff --git a/files/build/versions/host-base-image/versions-deb-bullseye-armhf b/files/build/versions/host-base-image/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..89c485cacc41 --- /dev/null +++ b/files/build/versions/host-base-image/versions-deb-bullseye-armhf @@ -0,0 +1 @@ +coreutils==8.32-4 diff --git a/files/build/versions/host-image/versions-deb-bullseye b/files/build/versions/host-image/versions-deb-bullseye new file mode 100644 index 000000000000..2d393abfc454 --- /dev/null +++ b/files/build/versions/host-image/versions-deb-bullseye @@ -0,0 +1,338 @@ +acl==2.2.53-10 +apparmor==2.13.6-10 +apt-transport-https==2.2.4 +arping==2.21-2 +audisp-tacplus==1.0.2 +auditd==1:3.0-2 +bash==5.1-2 +bash-completion==1:2.11-2 +bash-tacplus==1.0.0 +bfn-modules==1.0 +binutils==2.35.2-2 +binutils-common==2.35.2-2 +binutils-x86-64-linux-gnu==2.35.2-2 +bridge-utils==1.7-1 +bsdextrautils==2.36.1-8+deb11u1 +bsdmainutils==12.1.7+nmu3 +busybox==1:1.30.1-6+b3 +ca-certificates==20210119 +cgroup-tools==0.41-11 +conntrack==1:1.4.6-2 +containerd.io==1.5.11-1 +cpio==2.13+dfsg-4 +cpp==4:10.2.1-1 +cpp-10==10.2.1-6 +cracklib-runtime==2.9.6-3.4 +cron==3.0pl1-137 +curl==7.74.0-1.3+deb11u7 +dbus==1.12.24-0+deb11u1 +device-tree-compiler==1.6.0-1 +dirmngr==2.2.27-2+deb11u2 +distro-info-data==0.51+deb11u3 +dmidecode==3.3-2 +dmsetup==2:1.02.175-2.1 +docker-ce==5:20.10.14~3-0~debian-bullseye +docker-ce-cli==5:20.10.14~3-0~debian-bullseye +dpkg-dev==1.20.12 +eatmydata==105-9 +ebtables==2.0.11-4+b1 +efibootmgr==17-1 +fdisk==2.36.1-8+deb11u1 +file==1:5.39-3 +firmware-amd-graphics==20210315-3 +firmware-linux-nonfree==20210315-3 +firmware-misc-nonfree==20210315-3 +flashrom==0.9.7 +fontconfig-config==2.13.1-4.2 +fonts-dejavu-core==2.37-2 +freeipmi-common==1.6.6-4+deb11u1 +gcc==4:10.2.1-1 +gcc-10==10.2.1-6 +gdisk==1.0.6-1.1 +gettext-base==0.21-4 +gir1.2-glib-2.0==1.66.1-1+b1 +gir1.2-packagekitglib-1.0==1.2.2-2 +gnupg==2.2.27-2+deb11u2 +gnupg-l10n==2.2.27-2+deb11u2 +gnupg-utils==2.2.27-2+deb11u2 +gpg==2.2.27-2+deb11u2 +gpg-agent==2.2.27-2+deb11u2 +gpg-wks-client==2.2.27-2+deb11u2 +gpg-wks-server==2.2.27-2+deb11u2 +gpgconf==2.2.27-2+deb11u2 +gpgsm==2.2.27-2+deb11u2 +grub-common==2.06-3~deb11u5 +grub2-common==2.06-3~deb11u5 +haveged==1.9.14-1 +hdparm==9.60+ds-1 +hping3==3.a2.ds2-10 +hw-management==1.mlnx.7.0020.4104 +i2c-tools==4.2-1+b1 +ifmetric==0.3-5 +ifupdown2==3.0.0-1 +initramfs-tools==0.140 +initramfs-tools-core==0.140 +ipmitool==1.8.18-10.1 +iproute2==5.10.0-4 +iptables==1.8.7-1 +iptables-persistent==1.0.15 +iputils-ping==3:20210202-1 +isc-dhcp-client==4.4.1-2.3+deb11u1 +iso-codes==4.6.0-1 +jq==1.6-2.1 +kdump-tools==1:1.6.8.4 +kernel-mft-dkms-modules-5.10.0-18-2-amd64==4.21.0 +kexec-tools==1:2.0.20-2.1 +klibc-utils==2.0.8-6.1 +kmod==28-1 +less==551-2 +libabsl20200923==0~20200923.3-2 +libapparmor1==2.13.6-10 +libargon2-1==0~20171227-0.2 +libasan6==10.2.1-6 +libassuan0==2.5.3-7.1 +libatomic1==10.2.1-6 +libauparse0==1:3.0-2 +libbabeltrace1==1.5.8-1+b3 +libbinutils==2.35.2-2 +libblkid-dev==2.36.1-8+deb11u1 +libboost-serialization1.74.0==1.74.0-9 +libbpf0==1:0.3-2 +libbrotli1==1.0.9-2+b2 +libbsd0==0.11.3-1 +libc-ares2==1.17.1-1+deb11u1 +libc-l10n==2.31-13+deb11u5 +libcap2==1:2.44-1 +libcap2-bin==1:2.44-1 +libcbor0==0.5.0+dfsg-2 +libcc1-0==10.2.1-6 +libcgroup1==0.41-11 +libcrack2==2.9.6-3.4 +libcryptsetup12==2:2.3.7-1+deb11u1 +libctf-nobfd0==2.35.2-2 +libctf0==2.35.2-2 +libcurl3-gnutls==7.74.0-1.3+deb11u7 +libcurl4==7.74.0-1.3+deb11u7 +libdbd-sqlite3-perl==1.66-1+b1 +libdbi-perl==1.643-3+b1 +libdbus-1-3==1.12.24-0+deb11u1 +libdevmapper1.02.1==2:1.02.175-2.1 +libdns-export1110==1:9.11.19+dfsg-2.1 +libdw1==0.183-1 +libeatmydata1==105-9 +libedit2==3.1-20191231-2+b1 +libefiboot1==37-6 +libefivar1==37-6 +libelf1==0.183-1 +libestr0==0.1.10-2.1+b1 +libexpat1==2.2.10-2+deb11u5 +libfastjson4==0.99.9-1 +libfdisk1==2.36.1-8+deb11u1 +libfdt1==1.6.0-1 +libffi-dev==3.3-6 +libfido2-1==1.6.0-2 +libfreeipmi17==1.6.6-4+deb11u1 +libfreetype6==2.10.4+dfsg-1+deb11u1 +libfreetype6-dev==2.10.4+dfsg-1+deb11u1 +libfuse2==2.9.9-5 +libgcc-10-dev==10.2.1-6 +libgdbm-compat4==1.19-2 +libgdbm6==1.19-2 +libgirepository-1.0-1==1.66.1-1+b1 +libglib2.0-0==2.66.8-1 +libgnutls30==3.7.1-5+deb11u3 +libgomp1==10.2.1-6 +libgpm2==1.20.7-8 +libgrpc++1==1.30.2-3 +libgrpc10==1.30.2-3 +libhavege2==1.9.14-1 +libhiredis0.14==0.14.0-3~bpo9+1 +libi2c0==4.2-1+b1 +libiniparser1==4.1-4 +libip4tc2==1.8.7-1 +libip6tc2==1.8.7-1 +libisc-export1105==1:9.11.19+dfsg-2.1 +libisl23==0.23-1 +libitm1==10.2.1-6 +libjansson4==2.13.1-1.1 +libjq1==1.6-2.1 +libjs-jquery==3.5.1+dfsg+~3.5.5-7 +libjson-c5==0.15-2 +libk5crypto3==1.18.3-6+deb11u1+fips +libklibc==2.0.8-6.1 +libkmod2==28-1 +libksba8==1.5.0-3+deb11u2 +libldap-2.4-2==2.4.57+dfsg-3+deb11u1 +liblognorm5==2.0.5-1.1 +liblsan0==10.2.1-6 +liblua5.1-0==5.1.5-8.1+b3 +liblzo2-2==2.10-2 +libmagic-mgc==1:5.39-3 +libmagic1==1:5.39-3 +libmd0==1.0.3-3 +libmnl0==1.0.4-3 +libmpc3==1.2.0-1 +libmpdec3==2.5.1-1 +libmpfr6==4.1.0-3 +libncurses6==6.2+20201114-2 +libncursesw6==6.2+20201114-2 +libnet1==1.1.6+dfsg-3.1 +libnetfilter-conntrack3==1.0.8-3 +libnfnetlink0==1.0.1-3+b1 +libnftnl11==1.1.9-1 +libnghttp2-14==1.43.0-1 +libnl-3-200==3.5.0-1 +libnl-cli-3-200==3.5.0-1 +libnl-genl-3-200==3.5.0-1 +libnl-nf-3-200==3.5.0-1 +libnl-route-3-200==3.5.0-1 +libnorm1==1.5.9+dfsg-2 +libnpth0==1.6-3 +libnss-radius==1.0.1-1 +libnss-tacplus==1.0.4-1 +libnuma1==2.0.12-1+b1 +libonig5==6.9.6-1.1 +libopencsd0==0.14.4-1 +libopts25==1:5.18.16-4 +libpackagekit-glib2-18==1.2.2-2 +libpam-cracklib==1.4.0-9+deb11u1 +libpam-radius-auth==1.4.1-1 +libpam-tacplus==1.4.1-1 +libpcap0.8==1.10.0-2 +libpci3==1:3.7.0-5 +libperl5.32==5.32.1-4+deb11u2 +libpgm-5.3-0==5.3.128~dfsg-2 +libpng16-16==1.6.37-3 +libpopt0==1.18-2 +libprocps8==2:3.3.17-5 +libprotobuf23==3.12.4-1 +libpsl5==0.21.0-1.2 +libpython3-stdlib==3.9.2-3 +libpython3.9==3.9.2-1 +libpython3.9-minimal==3.9.2-1 +libpython3.9-stdlib==3.9.2-1 +libquadmath0==10.2.1-6 +libreadline8==8.1-1 +librtmp1==2.4+20151223.gitfa8646d.1-2+b2 +libsasl2-2==2.1.27+dfsg-2.1+deb11u1 +libsasl2-modules-db==2.1.27+dfsg-2.1+deb11u1 +libsensors-config==1:3.6.0-7 +libsensors5==1:3.6.0-7 +libslang2==2.3.2-5 +libsodium23==1.0.18-1 +libsqlite3-0==3.34.1-3 +libssh2-1==1.9.0-2 +libssl1.1==1.1.1n-0+deb11u4+fips +libswsscommon==1.0.0 +libsysfs2==2.1.0+repack-7 +libtac2==1.4.1-1 +libtcl8.6==8.6.11+dfsg-1 +libtsan0==10.2.1-6 +libubootenv-tool==0.3.2-0.1 +libubootenv0.1==0.3.2-0.1 +libubsan1==10.2.1-6 +libunwind8==1.3.2-2 +libusb-1.0-0==2:1.0.24-3 +libutempter0==1.2.1-2 +libwrap0==7.6.q-31 +libxtables12==1.8.7-1 +libyaml-0-2==0.2.2-1 +libyang==1.0.73 +libyang-cpp==1.0.73 +libzmq5==4.3.4-1 +linux-base==4.6 +linux-image-5.10.0-18-2-amd64-unsigned==5.10.140-1 +linux-perf==5.10.162-1 +linux-perf-5.10==5.10.162-1 +locales==2.31-13+deb11u5 +logrotate==3.18.0-2+deb11u1 +lsb-release==11.1.0 +lsof==4.93.2+dfsg-1.1 +makedev==2.3.1-94.1 +makedumpfile==1:1.6.8-4 +media-types==4.0.0 +mft==4.21.0-100 +mft-oem==4.21.0-100 +monit==1:5.20.0-6 +mtd-utils==1:2.1.2-2 +mtr-tiny==0.94-1+deb11u1 +ncal==12.1.7+nmu3 +ndisc6==1.0.4-2 +net-tools==1.60+git20181103.0eebece-1 +netbase==6.3 +netfilter-persistent==1.0.15 +ntp==1:4.2.8p15+dfsg-1+deb10u2 +ntpstat==0.0.0.1-2+b1 +opennsl-modules==7.1.0.0 +openssh-client==1:8.4p1-5+deb11u1+fips +openssh-server==1:8.4p1-5+deb11u1+fips +openssh-sftp-server==1:8.4p1-5+deb11u1+fips +openssl==1.1.1n-0+deb11u4+fips +pci.ids==0.0~2021.02.08-1 +pciutils==1:3.7.0-5 +perl==5.32.1-4+deb11u2 +perl-modules-5.32==5.32.1-4+deb11u2 +picocom==3.1-2+b1 +pinentry-curses==1.1.0-4 +procps==2:3.3.17-5 +psmisc==23.4-2 +python-apt-common==2.2.1 +python-is-python3==3.9.2-1 +python-pip-whl==20.3.4-4+deb11u1 +python3==3.9.2-3 +python3-apt==2.2.1 +python3-dbus==1.2.16-5 +python3-distutils==3.9.2-1 +python3-lib2to3==3.9.2-1 +python3-minimal==3.9.2-3 +python3-pkg-resources==52.0.0-4 +python3-pycurl==7.43.0.6-5 +python3-setuptools==52.0.0-4 +python3-software-properties==0.96.20.2-2.1 +python3-swsscommon==1.0.0 +python3-wheel==0.34.2-1 +python3-yang==1.0.73 +python3.9==3.9.2-1 +python3.9-minimal==3.9.2-1 +rasdaemon==0.6.6-2 +readline-common==8.1-1 +resolvconf==1.87 +rsync==3.2.3-4+deb11u1 +rsyslog==8.2302.0-1~bpo11+1 +runit-helper==2.10.3 +screen==4.8.0-6 +sensible-utils==0.0.14 +smartmontools==7.2-1 +software-properties-common==0.96.20.2-2.1 +sonic-db-cli==1.0.0 +sonic-device-data==1.0-1 +sonic-host-services-data==1.0-1 +sonic-platform-pddf==1.1 +sonic-rsyslog-plugin==1.0.0-0 +sonic-utilities-data==1.0-1 +sqlite3==3.34.1-3 +squashfs-tools==1:4.4-2+deb11u2 +sudo==1.9.5p2-3+deb11u1 +sx-kernel==1.mlnx.4.5.4150 +symcrypt-openssl==0.1 +sysfsutils==2.1.0+repack-7 +sysstat==12.5.2-2 +systemd==247.3-7+deb11u1 +systemd-bootchart==234-1 +systemd-sonic-generator==1.0.0 +systemd-sysv==247.3-7+deb11u1 +tcpdump==4.99.0-2+deb11u1 +tcptraceroute==1.5beta7+debian-4.1+b1 +traceroute==1:2.1.0-2+b1 +u-boot-tools==2021.01+dfsg-5 +ucf==3.0043 +udev==247.3-7+deb11u1 +unzip==6.0-26+deb11u1 +usbutils==1:013-3 +vim==2:8.2.2434-3+deb11u1 +vim-common==2:8.2.2434-3+deb11u1 +vim-runtime==2:8.2.2434-3+deb11u1 +wamerican==2019.10.06-1 +x11-common==1:7.7+22 +xxd==2:8.2.2434-3+deb11u1 +xz-utils==5.2.5-2.1~deb11u1 diff --git a/files/build/versions/host-image/versions-deb-bullseye-arm64 b/files/build/versions/host-image/versions-deb-bullseye-arm64 new file mode 100644 index 000000000000..d25523f8ea7a --- /dev/null +++ b/files/build/versions/host-image/versions-deb-bullseye-arm64 @@ -0,0 +1,21 @@ +binutils-aarch64-linux-gnu==2.35.2-2 +ebtables==2.0.11-4 +icu-devtools==67.1-7 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libicu-dev==67.1-7 +libicu67==67.1-7 +libnsl-dev==1.3.0-2 +libtirpc-dev==1.3.1-1+deb11u1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxml2-dev==2.9.10+dfsg-6.7+deb11u3 +libxslt1-dev==1.1.34-4+deb11u1 +libxslt1.1==1.1.34-4+deb11u1 +linux-image-5.10.0-18-2-arm64-unsigned==5.10.140-1 +linux-libc-dev==5.10.162-1 +ntpstat==0.0.0.1-2 +picocom==3.1-2 +traceroute==1:2.1.0-2 +tsingma-bsp==1.0 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/host-image/versions-deb-bullseye-armhf b/files/build/versions/host-image/versions-deb-bullseye-armhf new file mode 100644 index 000000000000..3ef35b061779 --- /dev/null +++ b/files/build/versions/host-image/versions-deb-bullseye-armhf @@ -0,0 +1,26 @@ +binutils-arm-linux-gnueabihf==2.35.2-2 +ebtables==2.0.11-4 +icu-devtools==67.1-7 +libc-dev-bin==2.31-13+deb11u5 +libc6-dev==2.31-13+deb11u5 +libcrypt-dev==1:4.4.18-4 +libicu-dev==67.1-7 +libicu67==67.1-7 +libnsl-dev==1.3.0-2 +libssl1.1==1.1.1n-0+deb11u4 +libtirpc-dev==1.3.1-1+deb11u1 +libxml2==2.9.10+dfsg-6.7+deb11u3 +libxml2-dev==2.9.10+dfsg-6.7+deb11u3 +libxslt1-dev==1.1.34-4+deb11u1 +libxslt1.1==1.1.34-4+deb11u1 +linux-image-5.10.0-18-2-armmp==5.10.140-1 +linux-libc-dev==5.10.162-1 +mrvlprestera==1.0 +ntpstat==0.0.0.1-2 +openssh-client==1:8.4p1-5+deb11u1 +openssh-server==1:8.4p1-5+deb11u1 +openssh-sftp-server==1:8.4p1-5+deb11u1 +openssl==1.1.1n-0+deb11u4 +picocom==3.1-2 +traceroute==1:2.1.0-2 +zlib1g-dev==1:1.2.11.dfsg-2+deb11u2 diff --git a/files/build/versions/host-image/versions-py3 b/files/build/versions/host-image/versions-py3 new file mode 100644 index 000000000000..99f4463c3601 --- /dev/null +++ b/files/build/versions/host-image/versions-py3 @@ -0,0 +1,74 @@ +azure-common==1.1.28 +azure-nspkg==3.0.2 +azure-storage==0.36.0 +bitarray==1.5.3 +blessed==1.20.0 +certifi==2022.12.7 +cffi==1.15.1 +charset-normalizer==3.0.1 +click==7.0 +click-log==0.4.0 +colorful==0.5.5 +cryptography==39.0.2 +dbus-python==1.2.16 +docker==5.0.3 +docker-image-py==0.1.12 +enlighten==1.11.2 +filelock==3.9.0 +grpcio==1.39.0 +grpcio-tools==1.39.0 +idna==3.4 +ijson==2.6.1 +ipaddr==2.2.0 +ipaddress==1.0.23 +j2cli==0.3.10 +jinja2==3.1.2 +jsondiff==2.0.0 +jsonpatch==1.32 +jsonpointer==2.3 +jsonschema==2.6.0 +lazy-object-proxy==1.9.0 +lxml==4.9.1 +m2crypto==0.38.0 +markupsafe==2.1.2 +natsort==6.2.1 +netaddr==0.8.0 +netifaces==0.11.0 +pathtools==0.1.2 +pddf-platform==1.0 +pexpect==4.8.0 +pip==23.0.1 +prefixed==0.7.0 +prettyprinter==0.18.0 +protobuf==3.20.3 +psutil==5.9.4 +ptyprocess==0.7.0 +pyang==2.5.3 +pyangbind==0.8.1 +pycairo==1.23.0 +pycparser==2.21 +pycurl==7.43.0.6 +pygments==2.14.0 +pygobject==3.42.2 +pyroute2==0.5.19 +python-apt==2.2.1 +python-dateutil==2.8.2 +pyyaml==5.4.1 +redis==3.5.3 +regex==2022.10.31 +requests==2.28.2 +scapy==2.4.4 +semantic-version==2.10.0 +setuptools==49.6.0 +six==1.16.0 +systemd-python==235 +tabulate==0.8.2 +thrift==0.13.0 +toposort==1.6 +urllib3==1.26.14 +watchdog==0.10.3 +wcwidth==0.2.6 +websocket-client==1.5.1 +wheel==0.35.1 +www-authenticate==0.9.2 +xmltodict==0.12.0 diff --git a/files/build/versions/host-image/versions-py3-all-armhf b/files/build/versions/host-image/versions-py3-all-armhf new file mode 100644 index 000000000000..4b03e7899eb1 --- /dev/null +++ b/files/build/versions/host-image/versions-py3-all-armhf @@ -0,0 +1 @@ +cryptography==3.3.1 diff --git a/files/build_templates/init_cfg.json.j2 b/files/build_templates/init_cfg.json.j2 index b490dc424b0a..39e180a1179d 100644 --- a/files/build_templates/init_cfg.json.j2 +++ b/files/build_templates/init_cfg.json.j2 @@ -133,5 +133,16 @@ "digits_class": "true", "special_class": "true" } + }, + "SYSTEM_DEFAULTS" : { +{%- if include_mux == "y" %} + "mux_tunnel_egress_acl": { +{%- if sonic_asic_platform == "mellanox" %} + "status": "enabled" +{% else %} + "status": "disabled" +{% endif %} + } +{% endif %} } } diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 8edf79553d7e..848bf717c33f 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -928,11 +928,18 @@ sudo cp {{src}} $FILESYSTEM_ROOT/{{dst}} {% endfor -%} {% if sonic_asic_platform == "mellanox" %} -sudo mkdir -p $FILESYSTEM_ROOT/etc/mlnx/ -sudo cp $files_path/$MLNX_SPC_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC.mfa -sudo cp $files_path/$MLNX_SPC2_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC2.mfa -sudo cp $files_path/$MLNX_SPC3_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC3.mfa -sudo cp $files_path/$MLNX_SPC4_FW_FILE $FILESYSTEM_ROOT/etc/mlnx/fw-SPC4.mfa +declare -rA FW_FILE_MAP=( \ + [$MLNX_SPC_FW_FILE]="fw-SPC.mfa" \ + [$MLNX_SPC2_FW_FILE]="fw-SPC2.mfa" \ + [$MLNX_SPC3_FW_FILE]="fw-SPC3.mfa" \ +) +sudo mkdir -p $FILESYSTEM_ROOT/$PLATFORM_DIR/fw/asic/ +sudo mkdir -p $FILESYSTEM_ROOT_ETC/mlnx/ +for fw_file_name in ${!FW_FILE_MAP[@]}; do + sudo cp $files_path/$fw_file_name $FILESYSTEM_ROOT/$PLATFORM_DIR/fw/asic/${FW_FILE_MAP[$fw_file_name]} + # Link old FW location to not break existing automation/scripts + sudo ln -s /host/image-$SONIC_IMAGE_VERSION/$PLATFORM_DIR/fw/asic/${FW_FILE_MAP[$fw_file_name]} $FILESYSTEM_ROOT/etc/mlnx/${FW_FILE_MAP[$fw_file_name]} +done sudo cp $files_path/$ISSU_VERSION_FILE $FILESYSTEM_ROOT/etc/mlnx/issu-version sudo cp $files_path/$MLNX_FFB_SCRIPT $FILESYSTEM_ROOT/usr/bin/mlnx-ffb.sh sudo cp $files_path/$MLNX_ONIE_FW_UPDATE $FILESYSTEM_ROOT/usr/bin/$MLNX_ONIE_FW_UPDATE diff --git a/files/image_config/sysctl/sysctl-net.conf b/files/image_config/sysctl/sysctl-net.conf index 1a2cc35ad491..3e7c0811200a 100644 --- a/files/image_config/sysctl/sysctl-net.conf +++ b/files/image_config/sysctl/sysctl-net.conf @@ -34,7 +34,7 @@ net.ipv6.conf.all.keep_addr_on_down=1 net.ipv6.conf.eth0.keep_addr_on_down=1 net.ipv4.tcp_l3mdev_accept=1 net.ipv4.udp_l3mdev_accept=1 -net.core.rmem_max=3145728 -net.core.wmem_max=3145728 +net.core.rmem_max=16777216 +net.core.wmem_max=16777216 net.core.somaxconn=512 net.ipv4.fib_multipath_use_neigh=1 diff --git a/files/scripts/syncd.sh b/files/scripts/syncd.sh index 2f0382f273a9..8ec8438fb31d 100755 --- a/files/scripts/syncd.sh +++ b/files/scripts/syncd.sh @@ -104,6 +104,12 @@ function stopplatform1() { debug "Stopped pmon service" fi + # Invoke platform specific pre shutdown routine. + PLATFORM=`$SONIC_DB_CLI CONFIG_DB hget 'DEVICE_METADATA|localhost' platform` + PLATFORM_PRE_SHUTDOWN="/usr/share/sonic/device/$PLATFORM/plugins/syncd_request_pre_shutdown" + [ -f $PLATFORM_PRE_SHUTDOWN ] && \ + /usr/bin/docker exec -i syncd$DEV /usr/share/sonic/platform/plugins/syncd_request_pre_shutdown --${TYPE} + debug "${TYPE} shutdown syncd process ..." /usr/bin/docker exec -i syncd$DEV /usr/bin/syncd_request_shutdown --${TYPE} diff --git a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/dx010_cpld.c b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/dx010_cpld.c index d8142777c6e1..3cdfb3939558 100644 --- a/platform/broadcom/sonic-platform-modules-cel/dx010/modules/dx010_cpld.c +++ b/platform/broadcom/sonic-platform-modules-cel/dx010/modules/dx010_cpld.c @@ -1,7 +1,7 @@ /* * dx010_cpld.c - driver for SeaStone's CPLD * - * Copyright (C) 2017 Celestica Corp. + * Copyright (C) 2023 Celestica Corp. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -120,11 +120,11 @@ #define SSRR_ID_BANK2 0x296 #define SSRR_ID_BANK3 0x396 -#define HST_CNTL2_QUICK 0x00 -#define HST_CNTL2_BYTE 0x01 -#define HST_CNTL2_BYTE_DATA 0x02 -#define HST_CNTL2_WORD_DATA 0x03 -#define HST_CNTL2_BLOCK 0x05 +#define SSRR_MASTER_ERR 0x80 +#define SSRR_BUS_BUSY 0x40 + +#define I2C_BAUD_RATE_100K 0x40 + struct dx010_i2c_data { int portid; @@ -610,6 +610,166 @@ static int i2c_read_eeprom(struct i2c_adapter *a, u16 addr, return error; } + +/** + * Read/Write eeprom of CPLD connected QSFP device. + * @param a i2c adapter. + * @param addr address to read. + * @param new_data QSFP port number struct. + * @param rw read/write flag + * @param cmd i2c command. + * @param size access size + * @return 0 if not error, else the error code. + */ +static int dx010_cpld_i2c_access(struct i2c_adapter *a, u16 addr, + struct dx010_i2c_data *new_data, char rw, + u8 cmd, int size, union i2c_smbus_data *data) +{ + u32 reg; + int ioBase=0; + char byte; + char data_len = 0; + short temp; + short portid, opcode, devaddr, cmdbyte0, ssrr, writedata, readdata; + __u16 word_data; + __u8 byte_data; + int error = -EIO; + + mutex_lock(&cpld_data->cpld_lock); + + if (((new_data->portid >= PORT_BANK1_START) + && (new_data->portid <= PORT_BANK1_END)) + || (new_data->portid == PORT_SFPP1) + || (new_data->portid == PORT_SFPP2)) + { + portid = PORT_ID_BANK1; + opcode = OPCODE_ID_BANK1; + devaddr = DEVADDR_ID_BANK1; + cmdbyte0 = CMDBYT_ID_BANK1; + ssrr = SSRR_ID_BANK1; + writedata = WRITE_ID_BANK1; + readdata = READ_ID_BANK1; + }else if ((new_data->portid >= PORT_BANK2_START) && (new_data->portid <= PORT_BANK2_END)){ + portid = PORT_ID_BANK2; + opcode = OPCODE_ID_BANK2; + devaddr = DEVADDR_ID_BANK2; + cmdbyte0 = CMDBYT_ID_BANK2; + ssrr = SSRR_ID_BANK2; + writedata = WRITE_ID_BANK2; + readdata = READ_ID_BANK2; + }else if ((new_data->portid >= PORT_BANK3_START) && (new_data->portid <= PORT_BANK3_END)){ + portid = PORT_ID_BANK3; + opcode = OPCODE_ID_BANK3; + devaddr = DEVADDR_ID_BANK3; + cmdbyte0 = CMDBYT_ID_BANK3; + ssrr = SSRR_ID_BANK3; + writedata = WRITE_ID_BANK3; + readdata = READ_ID_BANK3; + }else{ + /* Invalid parameter! */ + error = -EINVAL; + goto exit; + } + + if (size == I2C_SMBUS_BYTE || size == I2C_SMBUS_BYTE_DATA) + data_len = 1; + else if (size == I2C_SMBUS_WORD_DATA) + data_len = 2; + else { + error = -EINVAL; + goto exit; + } + + while ((inb(ioBase + ssrr) & SSRR_BUS_BUSY)); + if ((inb(ioBase + ssrr) & SSRR_MASTER_ERR) == SSRR_MASTER_ERR) { + error = -EIO; + /* Read error reset the port */ + outb(0x00, ioBase + ssrr); + udelay(3000); + outb(0x01, ioBase + ssrr); + goto exit; + } + + byte = I2C_BAUD_RATE_100K + new_data->portid; + reg = cmd; + outb(byte, ioBase + portid); + outb(reg, ioBase + cmdbyte0); + byte = (data_len << 4) | 0x1; + outb(byte, ioBase + opcode); + addr = addr << 1; + if (rw == I2C_SMBUS_READ) + { + addr |= 0x01; + outb(addr, ioBase + devaddr); + while ((inb(ioBase + ssrr) & SSRR_BUS_BUSY)) + { + udelay(100); + } + + if ((inb(ioBase + ssrr) & SSRR_MASTER_ERR) == SSRR_MASTER_ERR) { + /* Read error reset the port */ + error = -EIO; + outb(0x00, ioBase + ssrr); + udelay(3000); + outb(0x01, ioBase + ssrr); + goto exit; + } + + temp = ioBase + readdata; + if (data_len == 1) + { + byte_data = inb(temp); + data->byte = byte_data; + } + else if (data_len == 2) + { + word_data = inb(temp); + word_data |= (inb(++temp) << 8); + data->word = word_data; + } + } + else // do i2c write + { + temp = ioBase + writedata; + if (data_len == 1) + { + byte_data = data->byte; + outb(byte_data, temp); + } + else if (data_len == 2) + { + word_data = data->word; + outb((word_data & 0xff), temp); + outb((word_data >> 4), (++temp)); + } + // write dev addr + outb(addr, ioBase + devaddr); + + // check bus access status + while ((inb(ioBase + ssrr) & SSRR_BUS_BUSY)) + { + udelay(100); + } + + if ((inb(ioBase + ssrr) & SSRR_MASTER_ERR) == SSRR_MASTER_ERR) { + /* Read error reset the port */ + error = -EIO; + outb(0x00, ioBase + ssrr); + udelay(3000); + outb(0x01, ioBase + ssrr); + goto exit; + } + } + + mutex_unlock(&cpld_data->cpld_lock); + return 0; + +exit: + mutex_unlock(&cpld_data->cpld_lock); + return error; +} + + static int dx010_i2c_access(struct i2c_adapter *a, u16 addr, unsigned short flags, char rw, u8 cmd, int size, union i2c_smbus_data *data) @@ -624,39 +784,19 @@ static int dx010_i2c_access(struct i2c_adapter *a, u16 addr, /* Map the size to what the chip understands */ switch (size) { - case I2C_SMBUS_QUICK: - size = HST_CNTL2_QUICK; - break; case I2C_SMBUS_BYTE: - size = HST_CNTL2_BYTE; - break; case I2C_SMBUS_BYTE_DATA: - size = HST_CNTL2_BYTE_DATA; - break; case I2C_SMBUS_WORD_DATA: - size = HST_CNTL2_WORD_DATA; - break; - case I2C_SMBUS_BLOCK_DATA: - size = HST_CNTL2_BLOCK; - break; - default: - dev_warn(&a->dev, "Unsupported transaction %d\n", size); - error = -EOPNOTSUPP; - goto Done; - } - - switch (size) { - case HST_CNTL2_BYTE: /* Result put in SMBHSTDAT0 */ - break; - case HST_CNTL2_BYTE_DATA: - break; - case HST_CNTL2_WORD_DATA: - if( 0 == i2c_read_eeprom(a,addr,new_data,cmd,data)){ + if(0 == dx010_cpld_i2c_access(a, addr, new_data, rw, cmd, size, data)){ error = 0; }else{ error = -EIO; } break; + default: + dev_warn(&a->dev, "Unsupported transaction %d\n", size); + error = -EOPNOTSUPP; + goto Done; } Done: @@ -790,6 +930,6 @@ module_init(cel_dx010_lpc_init); module_exit(cel_dx010_lpc_exit); MODULE_AUTHOR("Pradchaya P "); -MODULE_VERSION("1.0.1"); +MODULE_VERSION("1.0.2"); MODULE_DESCRIPTION("Celestica SeaStone DX010 LPC Driver"); -MODULE_LICENSE("GPL"); \ No newline at end of file +MODULE_LICENSE("GPL"); diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/Makefile b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/Makefile index 86a67f55089b..4e7a7e8191b7 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/Makefile +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/Makefile @@ -1,7 +1,7 @@ ifneq ($(KERNELRELEASE),) obj-m:= wistron_6512_32r_cpld.o wistron_6512_32r_fan.o \ wistron_6512_32r_oom.o wistron_6512_32r_psu.o \ - wistron_6512_32r_thermal.o \ + wistron_6512_32r_thermal.o i2c-imc.o \ wistron_6512_32r_leds.o wistron_6512_32r_syseeprom.o else ifeq (,$(KERNEL_SRC)) diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/i2c-imc.c b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/i2c-imc.c new file mode 100644 index 000000000000..a650f3cf1923 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/i2c-imc.c @@ -0,0 +1,515 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Intel Memory Controller iMC SMBus Driver to DIMMs. + * + * Copyright (c) 2013-2016 Andrew Lutomirski + * Copyright (c) 2020 Stefan Schaeckeler , Cisco Systems + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include + +/* iMC Main, PCI dev 0x13, fn 0, 8086.6fa8 */ +#define PCI_DEVICE_ID_INTEL_BROADWELL_IMC_TA 0x6fa8 + +/* Register offsets for channel pairs 0+1 and 2+3 */ +#define SMBSTAT(i) (0x180 + 0x10*(i)) +#define SMBCMD(i) (0x184 + 0x10*(i)) +#define SMBCNTL(i) (0x188 + 0x10*(i)) + +/* SMBSTAT fields */ +#define SMBSTAT_RDO (1U << 31) /* Read Data Valid */ +#define SMBSTAT_WOD (1U << 30) /* Write Operation Done */ +#define SMBSTAT_SBE (1U << 29) /* SMBus Error */ +#define SMBSTAT_SMB_BUSY (1U << 28) /* SMBus Busy State */ +#define SMBSTAT_RDATA_MASK 0xffff /* Result of a read */ + +/* SMBCMD fields */ +#define SMBCMD_TRIGGER (1U << 31) /* CMD Trigger */ +#define SMBCMD_WORD_ACCESS (1U << 29) /* Word (vs byte) access */ +#define SMBCMD_TYPE_READ (0U << 27) /* Read */ +#define SMBCMD_TYPE_WRITE (1U << 27) /* Write */ +#define SMBCMD_SA_SHIFT 24 +#define SMBCMD_BA_SHIFT 16 + +/* SMBCNTL fields */ +#define SMBCNTL_DTI_MASK 0xf0000000 /* Slave Address low bits */ +#define SMBCNTL_DTI_SHIFT 28 /* Slave Address low bits */ +#define SMBCNTL_DIS_WRT (1U << 26) /* Disable Write */ +#define SMBCNTL_TSOD_PRES_MASK 0xff /* DIMM Present mask */ + +/* For sanity check: bits that might randomly change if we race with firmware */ +#define SMBCMD_OUR_BITS (~(u32)SMBCMD_TRIGGER) +#define SMBCNTL_OUR_BITS (SMBCNTL_DTI_MASK) + + +/* System Address Decoder, PCI dev 0xf fn 5, 8086.6ffd */ +#define PCI_DEVICE_ID_INTEL_BROADWELL_IMC_SAD 0x6ffd + +/* Register offsets */ +#define SADCNTL 0xf4 + +/* SADCNTL fields */ +#define SADCNTL_LOCAL_NODEID_MASK 0xf /* Local NodeID of socket */ + + +/* Power Control Unit, PCI dev 0x1e fn 1, 8086.6f99 */ +#define PCI_DEVICE_ID_INTEL_BROADWELL_IMC_PCU 0x6f99 + +/* Register offsets */ +#define TSODCNTL 0xe0 + +/* TSODCNTL fields */ + + +/* DIMMs hold jc42 thermal sensors starting at i2c address 0x18 */ +#define DIMM_SENSOR_DRV "jc42" +#define DIMM_SENSOR_BASE_ADR 0x18 + + +#define sanitycheck 1 + +struct imc_channelpair { + struct i2c_adapter adapter; + bool can_write, cltt; +}; + +struct imc_pcu { + struct pci_dev *pci_dev; + u32 tsod_polling_interval; + struct mutex mutex; /* see imc_channelpair_claim() */ +}; + +struct imc_priv { + struct pci_dev *pci_dev; + struct imc_channelpair channelpair[2]; + struct imc_pcu pcu; + bool suspended; +}; + +static int imc_channelpair_claim(struct imc_priv *priv, int i) +{ + if (priv->suspended) + return -EIO; + + /* + * i2c controllers need exclusive access to a psu register and wait + * then for 10ms before starting their transaction. + * + * Possible optimization: Once an i2c controller modified the psu + * register and waits, the other controller does not need to wait for + * the whole 10ms, but then only this other controller has to clean up + * the psu register. + */ + mutex_lock(&priv->pcu.mutex); + + if (priv->channelpair[i].cltt) { + pci_write_config_dword(priv->pcu.pci_dev, TSODCNTL, 0); + usleep_range(10000, 10500); + } + return 0; +} + +static void imc_channelpair_release(struct imc_priv *priv, int i) +{ + if (priv->channelpair[i].cltt) { + /* set tosd_control.tsod_polling_interval to previous value */ + pci_write_config_dword(priv->pcu.pci_dev, TSODCNTL, + priv->pcu.tsod_polling_interval); + } + mutex_unlock(&priv->pcu.mutex); +} + +static bool imc_wait_for_transaction(struct imc_priv *priv, int i, u32 *stat) +{ + int j; + static int busywaits = 1; + + /* + * Distribution of transaction time from 10000 collected samples: + * + * 70us: 1, 80us: 12, 90us: 34, 100us: 132, 110us: 424, 120us: 1138, + * 130us: 5224, 140us: 3035. + * + */ + usleep_range(131, 140); + + /* Don't give up, yet */ + for (j = 0; j < 20; j++) { + pci_read_config_dword(priv->pci_dev, SMBSTAT(i), stat); + if (!(*stat & SMBSTAT_SMB_BUSY)) { + if (j > busywaits) { + busywaits = j; + dev_warn(&priv->pci_dev->dev, + "Discovered surprisingly long transaction time (%d)\n", + busywaits); + } + return true; + } + udelay(9); + } + return false; +} + +/* + * The iMC supports five access types. The terminology is rather inconsistent. + * These are the types: + * + * "Write to pointer register SMBus": I2C_SMBUS_WRITE, I2C_SMBUS_BYTE + * + * Read byte/word: I2C_SMBUS_READ, I2C_SMBUS_{BYTE|WORD}_DATA + * + * Write byte/word: I2C_SMBUS_WRITE, I2C_SMBUS_{BYTE|WORD}_DATA + */ + +static u32 imc_func(struct i2c_adapter *adapter) +{ + int i; + struct imc_channelpair *cp; + struct imc_priv *priv = i2c_get_adapdata(adapter); + + i = (adapter == &priv->channelpair[0].adapter ? 0 : 1); + cp = &priv->channelpair[i]; + + if (cp->can_write) + return I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA; + else + return I2C_FUNC_SMBUS_READ_BYTE_DATA | + I2C_FUNC_SMBUS_READ_WORD_DATA; +} + +static s32 imc_smbus_xfer(struct i2c_adapter *adap, u16 addr, + unsigned short flags, char read_write, u8 command, + int size, union i2c_smbus_data *data) +{ + int ret, i; + u32 cmd = 0, cntl, stat; +#ifdef sanitycheck + u32 final_cmd, final_cntl; +#endif + struct imc_channelpair *cp; + struct imc_priv *priv = i2c_get_adapdata(adap); + + i = (adap == &priv->channelpair[0].adapter ? 0 : 1); + cp = &priv->channelpair[i]; + + /* Encode CMD part of addresses and access size */ + cmd |= ((u32)addr & 0x7) << SMBCMD_SA_SHIFT; + cmd |= ((u32)command) << SMBCMD_BA_SHIFT; + if (size == I2C_SMBUS_WORD_DATA) + cmd |= SMBCMD_WORD_ACCESS; + + /* Encode read/write and data to write */ + if (read_write == I2C_SMBUS_READ) { + cmd |= SMBCMD_TYPE_READ; + } else { + cmd |= SMBCMD_TYPE_WRITE; + cmd |= (size == I2C_SMBUS_WORD_DATA + ? swab16(data->word) + : data->byte); + } + + ret = imc_channelpair_claim(priv, i); + if (ret) + return ret; + + pci_read_config_dword(priv->pci_dev, SMBCNTL(i), &cntl); + cntl &= ~SMBCNTL_DTI_MASK; + cntl |= ((u32)addr >> 3) << SMBCNTL_DTI_SHIFT; + pci_write_config_dword(priv->pci_dev, SMBCNTL(i), cntl); + + cmd |= SMBCMD_TRIGGER; + pci_write_config_dword(priv->pci_dev, SMBCMD(i), cmd); + + if (!imc_wait_for_transaction(priv, i, &stat)) { + dev_warn(&priv->pci_dev->dev, "smbus transaction did not complete.\n"); + ret = -ETIMEDOUT; + goto xfer_out_release; + } + +#ifdef sanitycheck /* This is a young driver. Keep the checks for now */ + pci_read_config_dword(priv->pci_dev, SMBCMD(i), &final_cmd); + pci_read_config_dword(priv->pci_dev, SMBCNTL(i), &final_cntl); + if (((cmd ^ final_cmd) & SMBCMD_OUR_BITS) || + ((cntl ^ final_cntl) & SMBCNTL_OUR_BITS)) { + dev_err(&priv->pci_dev->dev, + "Access to channel pair %d-%d raced with hardware: cmd 0x%08X->0x%08X, cntl 0x%08X->0x%08X\n", + 2*i, 2*i+1, cmd, final_cmd, cntl, final_cntl); + ret = -EIO; + goto xfer_out_release; + } +#endif + + if (stat & SMBSTAT_SBE) { + /* + * While SBE is set hardware TSOD polling is disabled. This is + * very bad as this bit is RO-V and will only be cleared after + * a further software initiated transaction finishes + * successfully. + */ + dev_err(&priv->pci_dev->dev, + "smbus error: sbe is set 0x%x\n", stat); + ret = -ENXIO; + goto xfer_out_release; + } + + if (read_write == I2C_SMBUS_READ) { + if (!(stat & SMBSTAT_RDO)) { + dev_warn(&priv->pci_dev->dev, + "Unexpected read status 0x%08X\n", stat); + ret = -EIO; + goto xfer_out_release; + } + /* + * The iMC SMBus controller thinks of SMBus words as being + * big-endian (MSB first). Linux treats them as little-endian, + * so we need to swap them. + */ + if (size == I2C_SMBUS_WORD_DATA) + data->word = swab16(stat & SMBSTAT_RDATA_MASK); + else + data->byte = stat & 0xFF; + } else { + if (!(stat & SMBSTAT_WOD)) { + dev_warn(&priv->pci_dev->dev, + "Unexpected write status 0x%08X\n", stat); + ret = -EIO; + } + } + +xfer_out_release: + imc_channelpair_release(priv, i); + + return ret; +} + +static const struct i2c_algorithm imc_smbus_algorithm = { + .smbus_xfer = imc_smbus_xfer, + .functionality = imc_func, +}; + +static void imc_instantiate_sensors(struct i2c_adapter *adapter, u8 presence) +{ + struct i2c_board_info info = {}; + + strcpy(info.type, DIMM_SENSOR_DRV); + info.addr = DIMM_SENSOR_BASE_ADR; + + /* + * Presence is a bit vector. Bits from right to left map into i2c slave + * addresses starting 0x18. + */ + while (presence) { + if (presence & 0x1) + i2c_new_client_device(adapter, &info); + info.addr++; + presence >>= 1; + } +} + +static int imc_init_channelpair(struct imc_priv *priv, int i, int socket) +{ + int err; + u32 val; + struct imc_channelpair *cp = &priv->channelpair[i]; + + i2c_set_adapdata(&cp->adapter, priv); + cp->adapter.owner = THIS_MODULE; + cp->adapter.algo = &imc_smbus_algorithm; + cp->adapter.dev.parent = &priv->pci_dev->dev; + + pci_read_config_dword(priv->pci_dev, SMBCNTL(i), &val); + cp->can_write = !(val & SMBCNTL_DIS_WRT); + + /* + * A TSOD polling interval of > 0 tells us if CLTT mode is enabled on + * some channel pair. + * + * Is there a better way to check for CLTT mode? In particular, is + * there a way to distingush the mode on a channel pair basis? + */ + cp->cltt = (priv->pcu.tsod_polling_interval > 0); + + snprintf(cp->adapter.name, sizeof(cp->adapter.name), + "iMC socket %d for channel pair %d-%d", socket, 2*i, 2*i+1); + err = i2c_add_adapter(&cp->adapter); + if (err) + return err; + + /* For reasons unknown, TSOD_PRES_MASK is only set in CLTT mode. */ + if (cp->cltt) { + dev_info(&priv->pci_dev->dev, + "CLTT is enabled on channel pair %d-%d. Thermal sensors will be automatically enabled\n", + 2*i, 2*i+1); + } else { + dev_info(&priv->pci_dev->dev, + "CLTT is disabled on channel pair %d-%d. Thermal sensors need to be manually enabled\n", + 2*i, 2*i+1); + } + + imc_instantiate_sensors(&cp->adapter, val & SMBCNTL_TSOD_PRES_MASK); + + return 0; +} + +static void imc_free_channelpair(struct imc_priv *priv, int i) +{ + struct imc_channelpair *cp = &priv->channelpair[i]; + + i2c_del_adapter(&cp->adapter); +} + +static struct pci_dev *imc_get_related_device(struct pci_bus *bus, + unsigned int devfn, u16 devid) +{ + struct pci_dev *dev = pci_get_slot(bus, devfn); + + if (!dev) + return NULL; + + if (dev->vendor != PCI_VENDOR_ID_INTEL || dev->device != devid) { + pci_dev_put(dev); + return NULL; + } + return dev; +} + +static int imc_probe(struct pci_dev *dev, const struct pci_device_id *id) +{ + int i, j, err; + struct imc_priv *priv; + struct pci_dev *sad; /* System Address Decoder */ + u32 sadcntl; + + /* Sanity check. This device is always at 0x13.0 */ + if (dev->devfn != PCI_DEVFN(0x13, 0)) + return -ENODEV; + + priv = devm_kzalloc(&dev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + priv->pci_dev = dev; + pci_set_drvdata(dev, priv); + + /* + * From sad, we learn the local node id of the socket. + * + * The socket will not change at runtime and so we throw away sad. + */ + sad = imc_get_related_device(dev->bus, PCI_DEVFN(0x0f, 5), + PCI_DEVICE_ID_INTEL_BROADWELL_IMC_SAD); + if (!sad) { + err = -ENODEV; + goto probe_out_free; + } + pci_read_config_dword(sad, SADCNTL, &sadcntl); + pci_dev_put(sad); + + /* + * From pcu, we access the CLTT polling interval. + * + * The polling interval is set by BIOS. We assume it will not change at + * runtime and cache the initial value. + */ + priv->pcu.pci_dev = imc_get_related_device(dev->bus, PCI_DEVFN(0x1e, 1), + PCI_DEVICE_ID_INTEL_BROADWELL_IMC_PCU); + if (!priv->pcu.pci_dev) { + err = -ENODEV; + goto probe_out_free; + } + pci_read_config_dword(priv->pcu.pci_dev, TSODCNTL, + &priv->pcu.tsod_polling_interval); + + mutex_init(&priv->pcu.mutex); + + for (i = 0; i < 2; i++) { + err = imc_init_channelpair(priv, i, + sadcntl & SADCNTL_LOCAL_NODEID_MASK); + if (err) + goto probe_out_free_channelpair; + } + + return 0; + +probe_out_free_channelpair: + for (j = 0; j < i; j++) + imc_free_channelpair(priv, j); + + mutex_destroy(&priv->pcu.mutex); + +probe_out_free: + kfree(priv); + return err; +} + +static void imc_remove(struct pci_dev *dev) +{ + int i; + struct imc_priv *priv = pci_get_drvdata(dev); + + for (i = 0; i < 2; i++) + imc_free_channelpair(priv, i); + + /* set tosd_control.tsod_polling_interval to initial value */ + pci_write_config_dword(priv->pcu.pci_dev, TSODCNTL, + priv->pcu.tsod_polling_interval); + + mutex_destroy(&priv->pcu.mutex); +} + +static int imc_suspend(struct pci_dev *dev, pm_message_t mesg) +{ + struct imc_priv *priv = pci_get_drvdata(dev); + + /* BIOS is in charge. We should finish any pending transaction */ + priv->suspended = true; + + return 0; +} + +static int imc_resume(struct pci_dev *dev) +{ + struct imc_priv *priv = pci_get_drvdata(dev); + + priv->suspended = false; + + return 0; +} + +static const struct pci_device_id imc_ids[] = { + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, + PCI_DEVICE_ID_INTEL_BROADWELL_IMC_TA) }, + { 0, } +}; +MODULE_DEVICE_TABLE(pci, imc_ids); + +static struct pci_driver imc_pci_driver = { + .name = "imc_smbus", + .id_table = imc_ids, + .probe = imc_probe, + .remove = imc_remove, + .suspend = imc_suspend, + .resume = imc_resume, +}; + +static int __init i2c_imc_init(void) +{ + return pci_register_driver(&imc_pci_driver); +} +module_init(i2c_imc_init); + +static void __exit i2c_imc_exit(void) +{ + pci_unregister_driver(&imc_pci_driver); +} +module_exit(i2c_imc_exit); + +MODULE_AUTHOR("Stefan Schaeckeler "); +MODULE_DESCRIPTION("iMC SMBus driver"); +MODULE_LICENSE("GPL v2"); diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_cpld.c b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_cpld.c index a6c21966d1cf..e66d95a52290 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_cpld.c +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_cpld.c @@ -37,6 +37,7 @@ struct wistron_cpld_data { int reset[PORT_NUM]; int lpmod[PORT_NUM]; int modsel[PORT_NUM]; + int data_rdy[PORT_NUM]; }; static const struct i2c_device_id wistron_cpld_id[] = { @@ -51,6 +52,7 @@ MODULE_DEVICE_TABLE(i2c, wistron_cpld_id); #define TRANSCEIVER_RESET_ATTR_ID(index) MODULE_RESET_##index #define TRANSCEIVER_LPMOD_ATTR_ID(index) MODULE_LPMOD_##index #define TRANSCEIVER_MODSEL_ATTR_ID(index) MODULE_MODSEL_##index +#define TRANSCEIVER_DATA_RDY_ATTR_ID(index) MODULE_DATA_RDY_##index enum wistron_cpld_sysfs_attributes { /* chip version */ @@ -189,6 +191,38 @@ enum wistron_cpld_sysfs_attributes { TRANSCEIVER_MODSEL_ATTR_ID(30), TRANSCEIVER_MODSEL_ATTR_ID(31), TRANSCEIVER_MODSEL_ATTR_ID(32), + TRANSCEIVER_DATA_RDY_ATTR_ID(1), + TRANSCEIVER_DATA_RDY_ATTR_ID(2), + TRANSCEIVER_DATA_RDY_ATTR_ID(3), + TRANSCEIVER_DATA_RDY_ATTR_ID(4), + TRANSCEIVER_DATA_RDY_ATTR_ID(5), + TRANSCEIVER_DATA_RDY_ATTR_ID(6), + TRANSCEIVER_DATA_RDY_ATTR_ID(7), + TRANSCEIVER_DATA_RDY_ATTR_ID(8), + TRANSCEIVER_DATA_RDY_ATTR_ID(9), + TRANSCEIVER_DATA_RDY_ATTR_ID(10), + TRANSCEIVER_DATA_RDY_ATTR_ID(11), + TRANSCEIVER_DATA_RDY_ATTR_ID(12), + TRANSCEIVER_DATA_RDY_ATTR_ID(13), + TRANSCEIVER_DATA_RDY_ATTR_ID(14), + TRANSCEIVER_DATA_RDY_ATTR_ID(15), + TRANSCEIVER_DATA_RDY_ATTR_ID(16), + TRANSCEIVER_DATA_RDY_ATTR_ID(17), + TRANSCEIVER_DATA_RDY_ATTR_ID(18), + TRANSCEIVER_DATA_RDY_ATTR_ID(19), + TRANSCEIVER_DATA_RDY_ATTR_ID(20), + TRANSCEIVER_DATA_RDY_ATTR_ID(21), + TRANSCEIVER_DATA_RDY_ATTR_ID(22), + TRANSCEIVER_DATA_RDY_ATTR_ID(23), + TRANSCEIVER_DATA_RDY_ATTR_ID(24), + TRANSCEIVER_DATA_RDY_ATTR_ID(25), + TRANSCEIVER_DATA_RDY_ATTR_ID(26), + TRANSCEIVER_DATA_RDY_ATTR_ID(27), + TRANSCEIVER_DATA_RDY_ATTR_ID(28), + TRANSCEIVER_DATA_RDY_ATTR_ID(29), + TRANSCEIVER_DATA_RDY_ATTR_ID(30), + TRANSCEIVER_DATA_RDY_ATTR_ID(31), + TRANSCEIVER_DATA_RDY_ATTR_ID(32), }; /* sysfs attributes for hwmon */ @@ -204,6 +238,8 @@ static ssize_t get_mode_lpmod(struct device *dev, struct device_attribute *da, c static ssize_t set_mode_lpmod(struct device *dev, struct device_attribute *da, const char *buf, size_t count); static ssize_t get_mode_modsel(struct device *dev, struct device_attribute *da, char *buf); static ssize_t set_mode_modsel(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_mode_data_rdy(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_mode_data_rdy(struct device *dev, struct device_attribute *da, const char *buf, size_t count); /* version */ static SENSOR_DEVICE_ATTR(version, S_IWUSR | S_IRUGO, get_version, set_version, CPLD_VERSION); @@ -234,6 +270,10 @@ static SENSOR_DEVICE_ATTR(psu_led, S_IWUSR | S_IRUGO, get_led_status, set_led_s static SENSOR_DEVICE_ATTR(port##index##_modsel, S_IWUSR | S_IRUGO, get_mode_modsel, set_mode_modsel, MODULE_MODSEL_##index) #define DECLARE_TRANSCEIVER_MODSEL_ATTR(index) &sensor_dev_attr_port##index##_modsel.dev_attr.attr +#define DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(index) \ + static SENSOR_DEVICE_ATTR(port##index##_data_rdy, S_IWUSR | S_IRUGO, get_mode_data_rdy, set_mode_data_rdy, MODULE_DATA_RDY_##index) +#define DECLARE_TRANSCEIVER_DATA_RDY_ATTR(index) &sensor_dev_attr_port##index##_data_rdy.dev_attr.attr + /* transceiver attributes */ DECLARE_TRANSCEIVER_PRESENT_SENSOR_DEVICE_ATTR(1); DECLARE_TRANSCEIVER_PRESENT_SENSOR_DEVICE_ATTR(2); @@ -363,6 +403,38 @@ DECLARE_TRANSCEIVER_SENSOR_DEVICE_MODSEL_ATTR(29); DECLARE_TRANSCEIVER_SENSOR_DEVICE_MODSEL_ATTR(30); DECLARE_TRANSCEIVER_SENSOR_DEVICE_MODSEL_ATTR(31); DECLARE_TRANSCEIVER_SENSOR_DEVICE_MODSEL_ATTR(32); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(1); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(2); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(3); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(4); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(5); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(6); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(7); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(8); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(9); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(10); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(11); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(12); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(13); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(14); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(15); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(16); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(17); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(18); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(19); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(20); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(21); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(22); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(23); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(24); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(25); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(26); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(27); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(28); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(29); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(30); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(31); +DECLARE_TRANSCEIVER_SENSOR_DEVICE_DATA_RDY_ATTR(32); static struct attribute *wistron_fpga_attributes[] = { &sensor_dev_attr_version.dev_attr.attr, @@ -443,6 +515,22 @@ static struct attribute *wistron_cpld1_attributes[] = { DECLARE_TRANSCEIVER_MODSEL_ATTR(14), DECLARE_TRANSCEIVER_MODSEL_ATTR(15), DECLARE_TRANSCEIVER_MODSEL_ATTR(16), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(1), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(2), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(3), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(4), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(5), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(6), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(7), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(8), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(9), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(10), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(11), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(12), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(13), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(14), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(15), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(16), NULL }; @@ -516,6 +604,22 @@ static struct attribute *wistron_cpld2_attributes[] = { DECLARE_TRANSCEIVER_MODSEL_ATTR(30), DECLARE_TRANSCEIVER_MODSEL_ATTR(31), DECLARE_TRANSCEIVER_MODSEL_ATTR(32), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(17), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(18), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(19), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(20), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(21), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(22), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(23), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(24), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(25), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(26), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(27), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(28), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(29), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(30), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(31), + DECLARE_TRANSCEIVER_DATA_RDY_ATTR(32), NULL }; @@ -758,6 +862,43 @@ static ssize_t set_mode_modsel(struct device *dev, struct device_attribute *da, return count; } +static ssize_t get_mode_data_rdy(struct device *dev, struct device_attribute *da, char *buf) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct wistron_cpld_data *data = i2c_get_clientdata(client); + int update_idx, data_rdy = 0; + + update_idx = attr->index - MODULE_DATA_RDY_1; + + mutex_lock(&data->lock); + data_rdy = data->data_rdy[update_idx]; + mutex_unlock(&data->lock); + + return sprintf(buf, "%d", data_rdy); +} + +static ssize_t set_mode_data_rdy(struct device *dev, struct device_attribute *da, const char *buf, size_t count) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct wistron_cpld_data *data = i2c_get_clientdata(client); + int error, data_rdy; + int update_idx; + + error = kstrtoint(buf, 10, &data_rdy); + if (error) + return error; + + update_idx = attr->index - MODULE_DATA_RDY_1; + + mutex_lock(&data->lock); + data->data_rdy[update_idx] = data_rdy; + mutex_unlock(&data->lock); + + return count; +} + static void wistron_cpld_add_client(struct i2c_client *client) { struct cpld_client_node *node = kzalloc(sizeof(struct cpld_client_node), GFP_KERNEL); diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_oom.c b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_oom.c index 4236373499b2..0ad2e2ca1ae0 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_oom.c +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_oom.c @@ -10,19 +10,56 @@ #include #include -/* QSFP-DD: page0 (low page + high page (128+128 byte)), page 2 (high page (128 byte)), page11 (high page (128 byte))*/ +#define QSFP28_TYPE 0x11 +#define QSFP_DD_TYPE 0x18 + +#define LOWER_PAGE_OFFSET 0x0 +#define PAGE0_OFFSET 0x80 +#define PAGE1_OFFSET 0x0 +#define PAGE2_OFFSET 0x80 +#define PAGE3_OFFSET 0x0 +#define PAGE10_OFFSET 0x80 +#define PAGE11_OFFSET 0x100 + +#define QSFP_DD_CHAN_MON_OFFSET 0x1a +#define QSFP_DD_TEMP_OFFSET 0xe +#define QSFP_DD_VOLT_OFFSET 0x10 +#define QSFP_DD_RX_LOS_OFFSET 0x13 +#define QSFP_DD_TX_FAULT_OFFSET 0x7 +#define QSFP_DD_DISABLE_OFFSET 0x2 + +#define QSFP28_DOM_BULK_DATA_OFFSET 0x16 +#define QSFP28_RX_LOS_OFFSET 0x3 +#define QSFP28_TX_FAULT_OFFSET 0x4 +#define QSFP28_DISABLE_OFFSET 0x56 + + +/* QSFP-DD: page0 (low page + high page (128+128 byte)), page 1/2/3/10/11 (high page (128 byte))*/ #define EEPROM_DATA_SIZE 256 +#define EEPROM3_DATA_SIZE 384 /* Addresses scanned */ static const unsigned short normal_i2c[] = { I2C_CLIENT_END }; #define MAX_PORT_NAME_LEN 20 +#define TEMP_DATA_SIZE 2 +#define VOLT_DATA_SIZE 2 +#define QSFP_DD_CHAN_MON_DATA_SIZE 0x30 +#define QSFP_DOM_BULK_DATA_SIZE 0x24 -enum sysfs_fan_attributes { +enum sysfs_oom_attributes { OOM_LP_MODE, OOM_TEMP, OOM_EEPROM1, OOM_EEPROM2, + OOM_EEPROM3, OOM_PORT_NAME, + OOM_TEMP_E, + OOM_VOLT_E, + OOM_QSFPDD_CHAN_MON, + OOM_QSFP_DOM_BULK, + OOM_CHAN_RX_LOS, + OOM_CHAN_TX_FAULT, + OOM_CHAN_DISABLE, OOM_ATTR_MAX }; @@ -35,7 +72,16 @@ struct wistron_oom_data { int temp; unsigned char eeprom1[EEPROM_DATA_SIZE]; unsigned char eeprom2[EEPROM_DATA_SIZE]; + unsigned char eeprom3[EEPROM3_DATA_SIZE]; char port_name[MAX_PORT_NAME_LEN]; + + unsigned char qsfp_dd_chan_mon[QSFP_DD_CHAN_MON_DATA_SIZE]; + unsigned char qsfp_dom_bulk[QSFP_DOM_BULK_DATA_SIZE]; + unsigned char tempe[TEMP_DATA_SIZE]; + unsigned char volte[VOLT_DATA_SIZE]; + int rx_los; + int tx_fault; + int disable; }; /* sysfs attributes for hwmon */ @@ -45,20 +91,46 @@ static ssize_t get_oom_info1(struct device *dev, struct device_attribute *da, ch static ssize_t set_oom_info1(struct device *dev, struct device_attribute *da, const char *buf, size_t count); static ssize_t get_oom_info2(struct device *dev, struct device_attribute *da, char *buf); static ssize_t set_oom_info2(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_oom_info3(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_oom_info3(struct device *dev, struct device_attribute *da, const char *buf, size_t count); static ssize_t get_port_name(struct device *dev, struct device_attribute *da, char *buf); static ssize_t set_port_name(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_t_v_e(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_t_v_e(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_qsfp_dd_chan_mon(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_qsfp_dd_chan_mon(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_qsfp_dom_bulk(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_qsfp_dom_bulk(struct device *dev, struct device_attribute *da, const char *buf, size_t count); + + static SENSOR_DEVICE_ATTR(lp_mode, S_IWUSR | S_IRUGO, get_oom_value, set_oom_value, OOM_LP_MODE); static SENSOR_DEVICE_ATTR(temp, S_IWUSR | S_IRUGO, get_oom_value, set_oom_value, OOM_TEMP); static SENSOR_DEVICE_ATTR(eeprom1, S_IWUSR | S_IRUGO, get_oom_info1, set_oom_info1, OOM_EEPROM1); static SENSOR_DEVICE_ATTR(eeprom2, S_IWUSR | S_IRUGO, get_oom_info2, set_oom_info2, OOM_EEPROM2); +static SENSOR_DEVICE_ATTR(eeprom3, S_IWUSR | S_IRUGO, get_oom_info3, set_oom_info3, OOM_EEPROM3); static SENSOR_DEVICE_ATTR(port_name, S_IRUGO | S_IWUSR, get_port_name, set_port_name, OOM_PORT_NAME); +static SENSOR_DEVICE_ATTR(qsfp_dd_chan_mon, S_IWUSR | S_IRUGO, get_qsfp_dd_chan_mon, set_qsfp_dd_chan_mon, OOM_QSFPDD_CHAN_MON); +static SENSOR_DEVICE_ATTR(qsfp_dom_bulk, S_IWUSR | S_IRUGO, get_qsfp_dom_bulk, set_qsfp_dom_bulk, OOM_QSFP_DOM_BULK); +static SENSOR_DEVICE_ATTR(tempe, S_IWUSR | S_IRUGO, get_t_v_e, set_t_v_e, OOM_TEMP_E); +static SENSOR_DEVICE_ATTR(volte, S_IWUSR | S_IRUGO, get_t_v_e, set_t_v_e, OOM_VOLT_E); +static SENSOR_DEVICE_ATTR(rx_los, S_IWUSR | S_IRUGO, get_oom_value, set_oom_value, OOM_CHAN_RX_LOS); +static SENSOR_DEVICE_ATTR(tx_fault, S_IWUSR | S_IRUGO, get_oom_value, set_oom_value, OOM_CHAN_TX_FAULT); +static SENSOR_DEVICE_ATTR(disable, S_IWUSR | S_IRUGO, get_oom_value, set_oom_value, OOM_CHAN_DISABLE); static struct attribute *wistron_oom_attributes[] = { &sensor_dev_attr_lp_mode.dev_attr.attr, &sensor_dev_attr_temp.dev_attr.attr, &sensor_dev_attr_eeprom1.dev_attr.attr, &sensor_dev_attr_eeprom2.dev_attr.attr, + &sensor_dev_attr_eeprom3.dev_attr.attr, &sensor_dev_attr_port_name.dev_attr.attr, + &sensor_dev_attr_qsfp_dd_chan_mon.dev_attr.attr, + &sensor_dev_attr_qsfp_dom_bulk.dev_attr.attr, + &sensor_dev_attr_tempe.dev_attr.attr, + &sensor_dev_attr_volte.dev_attr.attr, + &sensor_dev_attr_rx_los.dev_attr.attr, + &sensor_dev_attr_tx_fault.dev_attr.attr, + &sensor_dev_attr_disable.dev_attr.attr, NULL }; @@ -70,10 +142,27 @@ static ssize_t get_oom_value(struct device *dev, struct device_attribute *da, ch int value = 0; mutex_lock(&data->lock); - if (attr->index == OOM_LP_MODE) - value = data->lp_mode; - else - value = data->temp; + switch (attr->index) { + case OOM_LP_MODE: + value = data->lp_mode; + break; + case OOM_TEMP: + value = data->temp; + break; + case OOM_CHAN_RX_LOS: + value = data->rx_los; + break; + case OOM_CHAN_TX_FAULT: + value = data->tx_fault; + break; + case OOM_CHAN_DISABLE: + value = data->disable; + break; + default: + value = data->temp; + break; + + } mutex_unlock(&data->lock); return sprintf(buf, "%d", value); @@ -93,10 +182,38 @@ static ssize_t set_oom_value(struct device *dev, struct device_attribute *da, co } mutex_lock(&data->lock); - if (attr->index == OOM_LP_MODE) - data->lp_mode = value; - else - data->temp = value; + switch (attr->index) { + case OOM_LP_MODE: + data->lp_mode = value; + break; + case OOM_TEMP: + data->temp = value; + break; + case OOM_CHAN_RX_LOS: + data->rx_los = value; + if (data->eeprom1[0] == QSFP_DD_TYPE) + data->eeprom3[PAGE11_OFFSET + QSFP_DD_RX_LOS_OFFSET] = value; + if (data->eeprom1[0] == QSFP28_TYPE) + data->eeprom1[LOWER_PAGE_OFFSET + QSFP28_RX_LOS_OFFSET] = value; + break; + case OOM_CHAN_TX_FAULT: + data->tx_fault = value; + if (data->eeprom1[0] == QSFP_DD_TYPE) + data->eeprom3[PAGE11_OFFSET + QSFP_DD_TX_FAULT_OFFSET] = value; + if (data->eeprom1[0] == QSFP28_TYPE) + data->eeprom1[LOWER_PAGE_OFFSET + QSFP28_TX_FAULT_OFFSET] = value; + break; + case OOM_CHAN_DISABLE: + data->disable = value; + if (data->eeprom1[0] == QSFP_DD_TYPE) + data->eeprom3[PAGE10_OFFSET + QSFP_DD_DISABLE_OFFSET] = value; + if (data->eeprom1[0] == QSFP28_TYPE) + data->eeprom1[LOWER_PAGE_OFFSET + QSFP28_DISABLE_OFFSET] = value; + break; + default: + data->temp = value; + break; + } mutex_unlock(&data->lock); return count; @@ -123,8 +240,8 @@ static ssize_t set_oom_info1(struct device *dev, struct device_attribute *da, co unsigned int val; mutex_lock(&data->lock); - memset(data->eeprom1, 0xFF, EEPROM_DATA_SIZE); - memset(str, 0x0, 3); + memzero_explicit(data->eeprom1, EEPROM_DATA_SIZE); + memzero_explicit(str, sizeof(str)); if (strlen(buf) >= EEPROM_DATA_SIZE) { for (i=0; i < strlen(buf) ; i++) { @@ -170,8 +287,8 @@ static ssize_t set_oom_info2(struct device *dev, struct device_attribute *da, co unsigned int val; mutex_lock(&data->lock); - memset(data->eeprom2, 0xFF, EEPROM_DATA_SIZE); - memset(str, 0x0, 3); + memzero_explicit(data->eeprom2, EEPROM_DATA_SIZE); + memzero_explicit(str, sizeof(str)); if (strlen(buf) >= EEPROM_DATA_SIZE) { for (i = 0; i < strlen(buf) ; i++) { @@ -195,6 +312,52 @@ static ssize_t set_oom_info2(struct device *dev, struct device_attribute *da, co return size; } +static ssize_t get_oom_info3(struct device *dev, struct device_attribute *da, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + + mutex_lock(&data->lock); + memcpy(buf, data->eeprom3, EEPROM3_DATA_SIZE); + mutex_unlock(&data->lock); + + return EEPROM3_DATA_SIZE; +} + +static ssize_t set_oom_info3(struct device *dev, struct device_attribute *da, const char *buf, size_t size) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + int i = 0, j = 0, k = 0; + unsigned char str[3]; + unsigned int val; + + mutex_lock(&data->lock); + memzero_explicit(data->eeprom3, EEPROM3_DATA_SIZE); + memzero_explicit(str, sizeof(str)); + + if (strlen(buf) >= EEPROM3_DATA_SIZE) { + for (i = 0; i < strlen(buf) ; i++) { + for (j = 0; j < 2; j++) { + str[j] = buf[i + j]; + } + + sscanf(str, "%x", &val); + + i = j + i - 1; + if (k >= EEPROM3_DATA_SIZE) + break; + + data->eeprom3[k]=(unsigned char)val; + k++; + } + } + + mutex_unlock(&data->lock); + + return size; +} + static ssize_t get_port_name(struct device *dev, struct device_attribute *da, char *buf) { struct i2c_client *client = to_i2c_client(dev); @@ -224,6 +387,191 @@ static ssize_t set_port_name(struct device *dev, struct device_attribute *da, co return count; } +static ssize_t get_t_v_e(struct device *dev, struct device_attribute *da, char *buf) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + + mutex_lock(&data->lock); + if (attr->index == OOM_TEMP_E) + memcpy(buf, data->tempe, TEMP_DATA_SIZE); + else + memcpy(buf, data->volte, VOLT_DATA_SIZE); + mutex_unlock(&data->lock); + + return (attr->index == OOM_TEMP_E) ? TEMP_DATA_SIZE : VOLT_DATA_SIZE; +} + +static ssize_t set_t_v_e(struct device *dev, struct device_attribute *da, const char *buf, size_t size) +{ + struct sensor_device_attribute *attr = to_sensor_dev_attr(da); + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + int i = 0, j = 0, k = 0; + unsigned char str[3]; + unsigned int val; + + mutex_lock(&data->lock); + if (attr->index == OOM_TEMP_E) { + memzero_explicit(data->tempe, TEMP_DATA_SIZE); + memzero_explicit(str, sizeof(str)); + + if (strlen(buf) >= TEMP_DATA_SIZE) { + for (i = 0; i < strlen(buf) ; i++) { + for (j = 0; j < 2; j++) { + str[j] = buf[i + j]; + } + + sscanf(str, "%x", &val); + + i = j + i - 1; + if (k >= TEMP_DATA_SIZE) + break; + + data->tempe[k]=(unsigned char)val; + + if (k == 0) + data->temp = data->tempe[k]; + k++; + } + } + + if (data->eeprom1[0] == QSFP_DD_TYPE) + memcpy(&data->eeprom1[LOWER_PAGE_OFFSET + QSFP_DD_TEMP_OFFSET], data->tempe, TEMP_DATA_SIZE); + } + else { + memzero_explicit(data->volte, VOLT_DATA_SIZE); + memzero_explicit(str, sizeof(str)); + + if (strlen(buf) >= VOLT_DATA_SIZE) { + for (i = 0; i < strlen(buf) ; i++) { + for (j = 0; j < 2; j++) { + str[j] = buf[i + j]; + } + + sscanf(str, "%x", &val); + + i = j + i - 1; + if (k >= VOLT_DATA_SIZE) + break; + + data->volte[k]=(unsigned char)val; + k++; + } + } + + if (data->eeprom1[0] == QSFP_DD_TYPE) + memcpy(&data->eeprom1[LOWER_PAGE_OFFSET + QSFP_DD_VOLT_OFFSET], data->volte, VOLT_DATA_SIZE); + } + + mutex_unlock(&data->lock); + + return size; +} + +static ssize_t get_qsfp_dd_chan_mon(struct device *dev, struct device_attribute *da, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + + mutex_lock(&data->lock); + memcpy(buf, data->qsfp_dd_chan_mon, QSFP_DD_CHAN_MON_DATA_SIZE); + mutex_unlock(&data->lock); + + return QSFP_DD_CHAN_MON_DATA_SIZE; +} + +static ssize_t set_qsfp_dd_chan_mon(struct device *dev, struct device_attribute *da, const char *buf, size_t size) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + int i = 0, j = 0, k = 0; + unsigned char str[3]; + unsigned int val; + + mutex_lock(&data->lock); + memzero_explicit(data->qsfp_dd_chan_mon, QSFP_DD_CHAN_MON_DATA_SIZE); + memzero_explicit(str, sizeof(str)); + + if (strlen(buf) >= QSFP_DD_CHAN_MON_DATA_SIZE) { + for (i=0; i < strlen(buf) ; i++) { + for (j = 0; j < 2; j++) { + str[j] = buf[i + j]; + } + + sscanf(str, "%x", &val); + + i = j + i - 1; + + if (k >= QSFP_DD_CHAN_MON_DATA_SIZE) + break; + + data->qsfp_dd_chan_mon[k] = (unsigned char)val; + k++; + } + } + + if (data->eeprom1[0] == QSFP_DD_TYPE) + memcpy(&data->eeprom3[PAGE11_OFFSET + QSFP_DD_CHAN_MON_OFFSET], data->qsfp_dd_chan_mon, QSFP_DD_CHAN_MON_DATA_SIZE); + + mutex_unlock(&data->lock); + + return size; +} + +static ssize_t get_qsfp_dom_bulk(struct device *dev, struct device_attribute *da, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + + mutex_lock(&data->lock); + memcpy(buf, data->qsfp_dom_bulk, QSFP_DOM_BULK_DATA_SIZE); + mutex_unlock(&data->lock); + + return QSFP_DOM_BULK_DATA_SIZE; +} + +static ssize_t set_qsfp_dom_bulk(struct device *dev, struct device_attribute *da, const char *buf, size_t size) +{ + struct i2c_client *client = to_i2c_client(dev); + struct wistron_oom_data *data = i2c_get_clientdata(client); + int i = 0, j = 0, k = 0; + unsigned char str[3]; + unsigned int val; + + mutex_lock(&data->lock); + memzero_explicit(data->qsfp_dom_bulk, QSFP_DOM_BULK_DATA_SIZE); + memzero_explicit(str, sizeof(str)); + + if (strlen(buf) >= QSFP_DOM_BULK_DATA_SIZE) { + for (i=0; i < strlen(buf) ; i++) { + for (j = 0; j < 2; j++) { + str[j] = buf[i + j]; + } + + sscanf(str, "%x", &val); + + i = j + i - 1; + + if (k >= QSFP_DOM_BULK_DATA_SIZE) + break; + + data->qsfp_dom_bulk[k] = (unsigned char)val; + k++; + } + } + + if (data->eeprom1[0] == QSFP28_TYPE) { + memcpy(&data->eeprom1[LOWER_PAGE_OFFSET + QSFP28_DOM_BULK_DATA_OFFSET], data->qsfp_dom_bulk, QSFP_DOM_BULK_DATA_SIZE); + data->temp = data->qsfp_dom_bulk[0]; + } + + mutex_unlock(&data->lock); + + return size; +} + static const struct attribute_group wistron_oom_group = { .attrs = wistron_oom_attributes, }; diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_psu.c b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_psu.c index 1ea7764dd430..fa48e9ce5d41 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_psu.c +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_psu.c @@ -21,6 +21,7 @@ static const unsigned short normal_i2c[] = { I2C_CLIENT_END }; #define MFR_VENDOR_NAME_LENGTH 16 #define MFR_MODEL_NAME_LENGTH 16 #define MFR_SERIAL_NUM_LENGTH 32 +#define MFR_REV_LENGTH 10 /* Each client has this additional data */ struct wistron_psu_data { @@ -33,13 +34,15 @@ struct wistron_psu_data { int v_out; int i_in; int i_out; - int p_in; - int p_out; + long p_in; + long p_out; int temp_input; + int pwm; int fault; u8 mfr_id[MFR_VENDOR_NAME_LENGTH]; u8 mfr_model[MFR_MODEL_NAME_LENGTH]; u8 mfr_serial[MFR_SERIAL_NUM_LENGTH]; + u8 mfr_rev[MFR_REV_LENGTH]; }; enum psu_index { @@ -57,10 +60,12 @@ enum wistron_psu_sysfs_attributes { PSU_P_IN, PSU_P_OUT, PSU_TEMP1_INPUT, + PSU_PWM, PSU_FAULT, PSU_MFR_ID, PSU_MFR_MODEL, PSU_MFR_SERIAL, + PSU_MFR_REV, }; /* sysfs attributes for hwmon */ @@ -73,10 +78,12 @@ static SENSOR_DEVICE_ATTR(curr2_input, S_IWUSR | S_IRUGO, get_value, set_valu static SENSOR_DEVICE_ATTR(power1_input, S_IWUSR | S_IRUGO, get_value, set_value, PSU_P_IN); static SENSOR_DEVICE_ATTR(power2_input, S_IWUSR | S_IRUGO, get_value, set_value, PSU_P_OUT); static SENSOR_DEVICE_ATTR(temp1_input, S_IWUSR | S_IRUGO, get_value, set_value, PSU_TEMP1_INPUT); +static SENSOR_DEVICE_ATTR(pwm, S_IWUSR | S_IRUGO, get_value, set_value, PSU_PWM); static SENSOR_DEVICE_ATTR(fault, S_IWUSR | S_IRUGO, get_value, set_value, PSU_FAULT); static SENSOR_DEVICE_ATTR(vendor, S_IWUSR | S_IRUGO, get_value, set_value, PSU_MFR_ID); static SENSOR_DEVICE_ATTR(model, S_IWUSR | S_IRUGO, get_value, set_value, PSU_MFR_MODEL); static SENSOR_DEVICE_ATTR(sn, S_IWUSR | S_IRUGO, get_value, set_value, PSU_MFR_SERIAL); +static SENSOR_DEVICE_ATTR(rev, S_IWUSR | S_IRUGO, get_value, set_value, PSU_MFR_REV); static struct attribute *wistron_psu_attributes[] = { @@ -89,10 +96,12 @@ static struct attribute *wistron_psu_attributes[] = { &sensor_dev_attr_power1_input.dev_attr.attr, &sensor_dev_attr_power2_input.dev_attr.attr, &sensor_dev_attr_temp1_input.dev_attr.attr, + &sensor_dev_attr_pwm.dev_attr.attr, &sensor_dev_attr_fault.dev_attr.attr, &sensor_dev_attr_vendor.dev_attr.attr, &sensor_dev_attr_model.dev_attr.attr, &sensor_dev_attr_sn.dev_attr.attr, + &sensor_dev_attr_rev.dev_attr.attr, NULL }; @@ -162,14 +171,17 @@ static ssize_t get_value(struct device *dev, struct device_attribute *da, char * ret_count = sprintf(buf, "%d", data->i_out); break; case PSU_P_IN: - ret_count = sprintf(buf, "%d", data->p_in); + ret_count = sprintf(buf, "%ld", data->p_in); break; case PSU_P_OUT: - ret_count = sprintf(buf, "%d", data->p_out); + ret_count = sprintf(buf, "%ld", data->p_out); break; case PSU_TEMP1_INPUT: ret_count = sprintf(buf, "%d", data->temp_input); break; + case PSU_PWM: + ret_count = sprintf(buf, "%d", data->pwm); + break; case PSU_FAULT: ret_count = sprintf(buf, "%d", data->fault); break; @@ -182,6 +194,9 @@ static ssize_t get_value(struct device *dev, struct device_attribute *da, char * case PSU_MFR_SERIAL: ret_count = sprintf(buf, "%s", data->mfr_serial); break; + case PSU_MFR_REV: + ret_count = sprintf(buf, "%s", data->mfr_rev); + break; default: break; } @@ -222,12 +237,12 @@ static ssize_t set_value(struct device *dev, struct device_attribute *da, const goto exit_err; break; case PSU_P_IN: - error = kstrtoint(buf, 10, &data->p_in); + error = kstrtol(buf, 10, &data->p_in); if (error) goto exit_err; break; case PSU_P_OUT: - error = kstrtoint(buf, 10, &data->p_out); + error = kstrtol(buf, 10, &data->p_out); if (error) goto exit_err; break; @@ -236,23 +251,32 @@ static ssize_t set_value(struct device *dev, struct device_attribute *da, const if (error) goto exit_err; break; + case PSU_PWM: + error = kstrtoint(buf, 10, &data->pwm); + if (error) + goto exit_err; + break; case PSU_FAULT: error = kstrtoint(buf, 10, &data->fault); if (error) goto exit_err; break; case PSU_MFR_ID: - memset(&data->mfr_id, 0x0, sizeof(data->mfr_id)); + memzero_explicit(&data->mfr_id, sizeof(data->mfr_id)); strncpy(data->mfr_id, buf, sizeof(data->mfr_id) - 1); break; case PSU_MFR_MODEL: - memset(&data->mfr_model, 0x0, sizeof(data->mfr_model)); + memzero_explicit(&data->mfr_model, sizeof(data->mfr_model)); strncpy(data->mfr_model, buf, sizeof(data->mfr_model) - 1); break; case PSU_MFR_SERIAL: - memset(&data->mfr_serial, 0x0, sizeof(data->mfr_serial)); + memzero_explicit(&data->mfr_serial, sizeof(data->mfr_serial)); strncpy(data->mfr_serial, buf, sizeof(data->mfr_serial) - 1); break; + case PSU_MFR_REV: + memzero_explicit(&data->mfr_rev, sizeof(data->mfr_rev)); + strncpy(data->mfr_rev, buf, sizeof(data->mfr_rev) - 1); + break; default: break; } diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_syseeprom.c b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_syseeprom.c index a281df719677..578aa3c1d5ef 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_syseeprom.c +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/modules/wistron_6512_32r_syseeprom.c @@ -43,8 +43,8 @@ static ssize_t set_syseeprom(struct device *dev, struct device_attribute *da, co unsigned int val; mutex_lock(&data->lock); - memset(data->eeprom, 0xFF, EEPROM_DATA_SIZE); - memset(str, 0x0, 3); + memzero_explicit(data->eeprom, EEPROM_DATA_SIZE); + memzero_explicit(str, sizeof(str)); if (strlen(buf) >= EEPROM_DATA_SIZE) { for (i = 0; i < strlen(buf) ; i++) { diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-firmware_ver.service b/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-firmware_ver.service new file mode 100644 index 000000000000..42a4d4e50f61 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-firmware_ver.service @@ -0,0 +1,12 @@ +[Unit] +Description=Wistron 6512-32R Platform firmware version service +After=platform-modules-6512-32r.service +DefaultDependencies=no + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/platform_firmware_version +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-platform.service b/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-platform.service index 1842d036cda4..ab8effcc4096 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-platform.service +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/service/6512-32r-platform.service @@ -1,7 +1,6 @@ [Unit] Description=Wistron 6512-32R Platform Monitoring service -Before=pmon.service -After=sysinit.target +After=platform-modules-6512-32r.service DefaultDependencies=no [Service] diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/setup.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/setup.py index 3c2888412e90..3b92de8c129c 100644 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/setup.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/setup.py @@ -1,7 +1,5 @@ from setuptools import setup -DEVICE_NAME = 'wistron' -HW_SKU = 'x86_64-wistron_6512_32r-r0' setup( name='sonic-platform', @@ -16,9 +14,8 @@ packages=[ 'sonic_platform', ], - package_dir={ - 'sonic_platform': '../../../../device/{}/{}/sonic_platform'.format(DEVICE_NAME, HW_SKU)}, - classifiers=[ + package_dir={'sonic_platform': 'sonic_platform'}, + classifiers=[ 'Development Status :: 3 - Alpha', 'Environment :: Plugins', 'Intended Audience :: Developers', diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/__init__.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/__init__.py old mode 100644 new mode 100755 similarity index 70% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/__init__.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/__init__.py index 29dfc92139ef..cc568450a400 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/__init__.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/__init__.py @@ -1,2 +1,2 @@ -__all__ = ['chassis', 'eeprom', 'platform', 'psu', 'sfp', 'thermal', 'fan', 'watchdog'] +__all__ = ['chassis', 'eeprom', 'platform', 'psu', 'sfp', 'thermal', 'fan', 'component', 'watchdog'] from . import platform diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/chassis.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/chassis.py old mode 100644 new mode 100755 similarity index 55% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/chassis.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/chassis.py index 232ca0ca5fe3..d27b26b98f62 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/chassis.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/chassis.py @@ -8,7 +8,6 @@ ############################################################################# try: import sys - import os import time import subprocess from sonic_platform_base.chassis_base import ChassisBase @@ -16,16 +15,19 @@ raise ImportError(str(e) + "- required module not found") NUM_FAN = 14 +NUM_FANTRAY = 7 NUM_PSU = 2 NUM_THERMAL = 8 NUM_SFP = 32 +NUM_COMPONENT = 6 HOST_REBOOT_CAUSE_PATH = "/host/reboot-cause/" PMON_REBOOT_CAUSE_PATH = "/usr/share/sonic/platform/api_files/reboot-cause/" REBOOT_CAUSE_FILE = "reboot-cause.txt" PREV_REBOOT_CAUSE_FILE = "previous-reboot-cause.txt" -HOST_CHK_CMD = "docker > /dev/null 2>&1" -GET_HWSKU_CMD = "sonic-cfggen -d -v DEVICE_METADATA.localhost.hwsku" -GET_PLATFORM_CMD = "sonic-cfggen -d -v DEVICE_METADATA.localhost.platform" +HOST_CHK_CMD = ["docker"] +GET_HWSKU_CMD = ["sonic-cfggen", "-d", "-v", "DEVICE_METADATA.localhost.hwsku"] +GET_PLATFORM_CMD = ["sonic-cfggen", "-d", "-v", "DEVICE_METADATA.localhost.platform"] +EEPROM_BOOT_TIME_INIT_DONE='/tmp/eeprom_init_done' class Chassis(ChassisBase): """Platform-specific Chassis class""" @@ -43,6 +45,7 @@ def __init__(self): self.__initialize_fan() self.__initialize_psu() self.__initialize_thermals() + self.__initialize_components() self.__initialize_sfp() self.__initialize_eeprom() @@ -54,10 +57,11 @@ def __initialize_sfp(self): def __initialize_fan(self): - from sonic_platform.fan import Fan - for fan_index in range(0, NUM_FAN): - fan = Fan(fan_index) - self._fan_list.append(fan) + from sonic_platform.fan_drawer import FanDrawer + for fan_index in range(0, NUM_FANTRAY): + fandrawer = FanDrawer(fan_index) + self._fan_drawer_list.append(fandrawer) + self._fan_list.extend(fandrawer._fan_list) def __initialize_psu(self): from sonic_platform.psu import Psu @@ -75,8 +79,14 @@ def __initialize_eeprom(self): from sonic_platform.eeprom import Tlv self._eeprom = Tlv() + def __initialize_components(self): + from sonic_platform.component import Component + for index in range(0, NUM_COMPONENT): + component = Component(index) + self._component_list.append(component) + def __is_host(self): - return os.system(HOST_CHK_CMD) == 0 + return subprocess.call(HOST_CHK_CMD) == 0 def __read_txt_file(self, file_path): try: @@ -96,7 +106,7 @@ def get_base_mac(self): """ return self._eeprom.get_mac() - def get_serial_number(self): + def get_serial(self): """ Retrieves the hardware serial number for the chassis Returns: @@ -141,15 +151,28 @@ def get_reboot_cause(self): return (reboot_cause, description) def _get_sku_name(self): - p = subprocess.Popen(GET_HWSKU_CMD, shell=True, stdout=subprocess.PIPE) + p = subprocess.Popen(GET_HWSKU_CMD, stdout=subprocess.PIPE) out, err = p.communicate() return out.decode().rstrip('\n') def _get_platform_name(self): - p = subprocess.Popen(GET_PLATFORM_CMD, shell=True, stdout=subprocess.PIPE) + p = subprocess.Popen(GET_PLATFORM_CMD, stdout=subprocess.PIPE) out, err = p.communicate() return out.decode().rstrip('\n') + def get_watchdog(self): + """ + Retreives hardware watchdog device on this chassis + Returns: + An object derived from WatchdogBase representing the hardware + watchdog device + """ + if self._watchdog is None: + from sonic_platform.watchdog import Watchdog + self._watchdog = Watchdog() + + return self._watchdog + def get_name(self): """ Retrieves the name of the device @@ -171,10 +194,22 @@ def _get_sfp_presence(self): port_pres = {} for port in range(0, NUM_SFP): sfp = self._sfp_list[port] - port_pres[port] = sfp.get_presence() + port_pres[port] = 1 if sfp.get_presence() else 0 return port_pres + def _read_sfp_eeprom_to_buffer(self, port): + sfp = self._sfp_list[port] + #if os.path.exists(EEPROM_BOOT_TIME_INIT_DONE): + # return sfp.read_eeprom_buffer() + c = sfp._read_eeprom_specific_bytes(0,1) + return c != ['ff'] and c != ['00'] + + def _clear_sfp_eeprom_buffer(self, port): + sfp = self._sfp_list[port] + return sfp.clear_eeprom_buffer() + + def get_change_event(self, timeout=0): port_dict = {} ret_dict = {'sfp': port_dict} @@ -201,12 +236,19 @@ def get_change_event(self, timeout=0): if cur_presence[port] != self._transceiver_presence[port]: change_event = True if cur_presence[port] == 1: - port_dict[port] = '1' + if self._read_sfp_eeprom_to_buffer(port): + port_dict[port] = '1' + self._transceiver_presence[port] = 1 + else: + cur_presence[port] = 0 + self._transceiver_presence[port] = 0 else: port_dict[port] = '0' + self._clear_sfp_eeprom_buffer(port) + self._transceiver_presence[port] = 0 - self._transceiver_presence = cur_presence - if change_event == True: + #self._transceiver_presence = cur_presence + if change_event is True: break if not forever: @@ -220,3 +262,96 @@ def get_change_event(self, timeout=0): sfp.reinit() return True, ret_dict + + def is_modular_chassis(self): + """ + Retrieves whether the sonic instance is part of modular chassis + Returns: + A bool value, should return False by default or for fixed-platforms. + Should return True for supervisor-cards, line-cards etc running as part + of modular-chassis. + """ + return False + + def initizalize_system_led(self): + self.system_led = "" + return True + + def set_status_led(self, color): + """ + Sets the state of the system LED + + Args: + color: A string representing the color with which to set the + system LED + + Returns: + bool: True if system LED state is set successfully, False if not + """ + self.system_led = color + return True + + def get_status_led(self): + """ + Gets the state of the system LED + + Returns: + A string, one of the valid LED color strings which could be vendor + specified. + """ + return self.system_led + + + def get_presence(self): + """ + Retrieves the presence of the Chassis + Returns: + bool: True if Chassis is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return self._eeprom.get_model() + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. If the agent cannot determine the parent-relative position + for some reason, or if the associated value of entPhysicalContainedIn is '0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + + def get_revision(self): + """ + Retrieves the hardware revision of the device + + Returns: + string: Revision value of device + """ + + return '0' + + def get_thermal_manager(self): + raise NotImplementedError diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/component.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/component.py new file mode 100755 index 000000000000..40a0ba551be2 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/component.py @@ -0,0 +1,269 @@ +#!/usr/bin/env python + +import subprocess +from shlex import split +from collections import namedtuple +from functools import reduce + + +try: + from sonic_platform_base.component_base import ComponentBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +CPLD_ADDR_MAPPING = { + "CPLD1": "0-0006", + "CPLD2": "0-0007", +} + +FPGA_ADDR_MAPPING = { + "MB_FPGA": "0-0030", +} + +proc_output = namedtuple('proc_output', 'stdout stderr') +GET_CPU_FPGA_VER_CMD = ["i2cget", "-f", "-y", "0", "0x10", "0x0"] +#GET_BMC_VER_CMD= "ipmitool mc info | grep 'Firmware Revision' | awk '{printf $4}'" +SYSFS_PATH = "/sys/bus/i2c/devices/" +BIOS_VERSION_PATH = "/sys/class/dmi/id/bios_version" +COMPONENT_LIST= [ + ("BIOS", "Basic Input/Output System"), + ("CPLD1", "CPLD 1"), + ("CPLD2", "CPLD 2"), + ("MB_FPGA", "MB FPGA"), + ("CPU_FPGA", "CPU FPGA"), + ("BMC", "baseboard management controller") +] + +class Component(ComponentBase): + """Platform-specific Component class""" + + DEVICE_TYPE = "component" + + def __init__(self, component_index=0): + ComponentBase.__init__(self) + self.index = component_index + self.name = self.get_name() + + def pipeline(self, starter_command, *commands): + if not commands: + try: + starter_command, *commands = starter_command.split('|') + except AttributeError: + pass + starter_command = self._parse(starter_command) + starter = subprocess.Popen(starter_command, stdout=subprocess.PIPE) + last_proc = reduce(self._create_pipe, map(self._parse, commands), starter) + return proc_output(*last_proc.communicate()) + + def _create_pipe(self, previous, command): + proc = subprocess.Popen(command, stdin=previous.stdout, stdout=subprocess.PIPE) + previous.stdout.close() + return proc + + def _parse(self, cmd): + try: + return split(cmd) + except Exception: + return cmd + + def __read_txt_file(self, file_path): + try: + with open(file_path, 'r') as fd: + data = fd.read() + return data.strip() + except IOError: + pass + return "" + + def __get_bios_version(self): + # Retrieves the BIOS firmware version + try: + with open(BIOS_VERSION_PATH, 'r') as fd: + bios_version = fd.read() + return bios_version.strip() + except Exception as e: + return None + + def __get_cpld_version(self): + # Retrieves the CPLD firmware version + cpld_version = dict() + for cpld_name in CPLD_ADDR_MAPPING: + try: + cpld_path = "{}{}{}".format(SYSFS_PATH, CPLD_ADDR_MAPPING[cpld_name], '/version') + cpld_version_raw= int(self.__read_txt_file(cpld_path), 10) + cpld_version[cpld_name] = "{} {}".format("MP" if (cpld_version_raw & 0x10) else "Proto", cpld_version_raw & 0xf) + except Exception as e: + print('Get exception when read cpld') + cpld_version[cpld_name] = 'None' + + return cpld_version + + def __get_cpu_fpga_ver(self): + try: + p = subprocess.Popen(GET_CPU_FPGA_VER_CMD, stdout=subprocess.PIPE) + out, err = p.communicate() + return out.decode().rstrip('\n') + except Exception as e: + print('Get exception when read cpu fpga') + return 'None' + + def __get_bmc_version(self): + try: + #GET_BMC_VER_CMD + out, err = self.pipeline("ipmitool mc info", "grep 'Firmware Revision'", "awk '{printf $4}'") + return out.decode().rstrip('\n') + except Exception as e: + print('Get exception when read bmc') + return 'None' + + def __get_fpga_version(self): + # Retrieves the fpga firmware version + fpga_version = dict() + try: + fpga_path = "{}{}{}".format(SYSFS_PATH, FPGA_ADDR_MAPPING['MB_FPGA'], '/version') + fpga_version_raw= int(self.__read_txt_file(fpga_path), 10) + fpga_version["MB_FPGA"] = "{} {}.{}".format("Formal" if (fpga_version_raw & 0x80) else "Test", ((fpga_version_raw & 0x70) >> 4), fpga_version_raw & 0xf) + except Exception as e: + print('Get exception when read fpga') + fpga_version["MB_FPGA"] = 'None' + + fpga_version_raw= int(self.__get_cpu_fpga_ver(), 16) + fpga_version["CPU_FPGA"] = "{} {}.{}".format("Formal" if (fpga_version_raw & 0x80) else "Test", ((fpga_version_raw & 0x70) >> 4), fpga_version_raw & 0xf) + + return fpga_version + + def get_name(self): + """ + Retrieves the name of the component + Returns: + A string containing the name of the component + """ + return COMPONENT_LIST[self.index][0] + + def get_description(self): + """ + Retrieves the description of the component + Returns: + A string containing the description of the component + """ + return COMPONENT_LIST[self.index][1] + + + def get_firmware_version(self): + """ + Retrieves the firmware version of module + Returns: + string: The firmware versions of the module + """ + fw_version = None + + if self.name == "BIOS": + fw_version = self.__get_bios_version() + elif "CPLD" in self.name: + cpld_version = self.__get_cpld_version() + fw_version = cpld_version.get(self.name) + elif "FPGA" in self.name: + fpga_version = self.__get_fpga_version() + fw_version = fpga_version.get(self.name) + elif "BMC" in self.name: + fw_version = self.__get_bmc_version() + + return fw_version + + def install_firmware(self, image_path): + """ + Install firmware to module + Args: + image_path: A string, path to firmware image + Returns: + A boolean, True if install successfully, False if not + """ + raise NotImplementedError + + def get_presence(self): + """ + Retrieves the presence of the FAN + Returns: + bool: True if FAN is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return 'N/A' + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return 'N/A' + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + + def get_available_firmware_version(self, image_path): + """ + Retrieves the available firmware version of the component + Note: the firmware version will be read from image + Args: + image_path: A string, path to firmware image + Returns: + A string containing the available firmware version of the component + """ + return "N/A" + + def get_firmware_update_notification(self, image_path): + """ + Retrieves a notification on what should be done in order to complete + the component firmware update + Args: + image_path: A string, path to firmware image + Returns: + A string containing the component firmware update notification if required. + By default 'None' value will be used, which indicates that no actions are required + """ + return "None" + + def update_firmware(self, image_path): + """ + Updates firmware of the component + This API performs firmware update: it assumes firmware installation and loading in a single call. + In case platform component requires some extra steps (apart from calling Low Level Utility) + to load the installed firmware (e.g, reboot, power cycle, etc.) - this will be done automatically by API + Args: + image_path: A string, path to firmware image + Raises: + RuntimeError: update failed + """ + return False diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/eeprom.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/eeprom.py old mode 100644 new mode 100755 similarity index 81% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/eeprom.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/eeprom.py index 9d01b1f866b8..7db38ead60a5 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/eeprom.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/eeprom.py @@ -41,12 +41,19 @@ def __parse_output(self, decode_output): for line in lines: try: match = re.search( - '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', line) - if match is not None: + '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+[\s]+[\S]+)', line) + if match is not None and match.group(1) == '0x25': idx = match.group(1) value = match.group(3).rstrip('\0') + _eeprom_info_dict[idx] = value + else: + match = re.search( + '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', line) + if match is not None: + idx = match.group(1) + value = match.group(3).rstrip('\0') + _eeprom_info_dict[idx] = value - _eeprom_info_dict[idx] = value except BaseException: pass return _eeprom_info_dict @@ -70,7 +77,7 @@ def _load_eeprom(self): if not os.path.exists(CACHE_ROOT): try: os.makedirs(CACHE_ROOT) - except OSError: + except Exception: pass # @@ -79,7 +86,7 @@ def _load_eeprom(self): # try: self.set_cache_name(os.path.join(CACHE_ROOT, CACHE_FILE)) - except OSError: + except Exception: pass e = self.read_eeprom() @@ -90,6 +97,7 @@ def _load_eeprom(self): self.update_cache(e) except Exception: pass + self.decode_eeprom(e) decode_output = sys.stdout.getvalue() sys.stdout = original_stdout @@ -108,3 +116,6 @@ def get_serial(self): def get_mac(self): return self._eeprom.get('0x24', "Undefined.") + + def get_model(self): + return self._eeprom.get('0x21', "Undefined.") diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan.py new file mode 100755 index 000000000000..e6e2ff599524 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan.py @@ -0,0 +1,263 @@ +############################################################################# +# +# Module contains an implementation of SONiC Platform Base API and +# provides the fan status which are available in the platform +# +############################################################################# + + +import os.path + +try: + from sonic_platform_base.fan_base import FanBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +SPEED_TOLERANCE = 15 +SYSFS_PATH = "/sys/bus/i2c/devices/0-0044" +SYSFS_PSU_DIR = ["/sys/bus/i2c/devices/0-005a", + "/sys/bus/i2c/devices/0-0059"] + +FAN_NAME_LIST = ["FAN-1F", "FAN-1R", "FAN-2F", "FAN-2R", + "FAN-3F", "FAN-3R", "FAN-4F", "FAN-4R", + "FAN-5F", "FAN-5R", "FAN-6F", "FAN-6R", + "FAN-7F", "FAN-7R"] + +class Fan(FanBase): + """Platform-specific Fan class""" + + def __init__(self, fan_tray_index, fan_index=0, is_psu_fan=False, psu_index=0): + self.fan_index = fan_index + self.fan_tray_index = fan_tray_index + self.is_psu_fan = is_psu_fan + + if self.is_psu_fan: + self.psu_index = psu_index + + FanBase.__init__(self) + + def __search_hwmon_dir_name(self, directory): + try: + dirs = os.listdir(directory) + for file in dirs: + if file.startswith("hwmon"): + return file + except IOError: + pass + return '' + + def __read_txt_file(self, file_path): + try: + with open(file_path, 'r') as fd: + data = fd.read() + return data.strip() + except IOError: + pass + return None + + def __write_txt_file(self, file_path, data): + try: + with open(file_path, 'w') as fd: + fd.write(data) + except IOError: + pass + return None + + def get_direction(self): + """ + Retrieves the direction of fan + Returns: + A string, either FAN_DIRECTION_INTAKE or FAN_DIRECTION_EXHAUST + depending on fan direction + """ + direction = 0 + if self.is_psu_fan: + # psu fan direction should be the same as fan tray + path= "{}/fan1_direction".format(SYSFS_PATH) + direction=self.__read_txt_file(path) + if direction is None: + return self.FAN_DIRECTION_EXHAUST + elif self.get_presence(): + path= "{}/fan{}_direction".format(SYSFS_PATH, self.fan_tray_index + 1) + direction=self.__read_txt_file(path) + if direction is None: + return self.FAN_DIRECTION_EXHAUST + + return self.FAN_DIRECTION_EXHAUST if int(direction) == 0 else self.FAN_DIRECTION_INTAKE + + + def get_speed(self): + """ + Retrieves the speed of fan as a percentage of full speed + Returns: + An integer, the percentage of full fan speed, in the range 0 (off) + to 100 (full speed) + + """ + speed = 0 + if self.is_psu_fan: + fan_path="{}/pwm".format(SYSFS_PSU_DIR[self.psu_index]) + speed = self.__read_txt_file(fan_path) + if speed is not None: + return int(speed) + else: + return 0 + elif self.get_presence(): + path= "{}/pwm".format(SYSFS_PATH) + speed=self.__read_txt_file(path) + if speed is None: + return 0 + + return int(speed) + + def get_target_speed(self): + """ + Retrieves the target (expected) speed of the fan + Returns: + An integer, the percentage of full fan speed, in the range 0 (off) + to 100 (full speed) + + Note: + speed_pc = pwm_target/255*100 + + 0 : when PWM mode is use + pwm : when pwm mode is not use + """ + return self.get_speed() + + def get_speed_tolerance(self): + """ + Retrieves the speed tolerance of the fan + Returns: + An integer, the percentage of variance from target speed which is + considered tolerable + """ + return SPEED_TOLERANCE + + def set_speed(self, speed): + """ + Sets the fan speed + Args: + speed: An integer, the percentage of full fan speed to set fan to, + in the range 0 (off) to 100 (full speed) + Returns: + A boolean, True if speed is set successfully, False if not + + """ + + return False + + def set_status_led(self, color): + """ + Sets the state of the fan module status LED + Args: + color: A string representing the color with which to set the + fan module status LED + Returns: + bool: True if status LED state is set successfully, False if not + """ + return False #Not supported + + def get_status_led(self): + """ + Gets the state of the fan status LED + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + status=self.get_presence() + if status is None: + return self.STATUS_LED_COLOR_OFF + + return { + 1: self.STATUS_LED_COLOR_GREEN, + 0: self.STATUS_LED_COLOR_RED + }.get(status, self.STATUS_LED_COLOR_OFF) + + def get_name(self): + """ + Retrieves the name of the device + Returns: + string: The name of the device + """ + + fan_name = FAN_NAME_LIST[self.fan_tray_index*2 + self.fan_index] \ + if not self.is_psu_fan \ + else "PSU-{} FAN-{}".format(self.psu_index+1, self.fan_index+1) + + return fan_name + + def get_presence(self): + """ + Retrieves the presence of the FAN + Returns: + bool: True if FAN is present, False if not + """ + + if self.is_psu_fan: + present_path="{}/present".format(SYSFS_PSU_DIR[self.psu_index]) + else: + present_path="{}/fan{}_present".format(SYSFS_PATH, self.fan_tray_index + 1) + + val=self.__read_txt_file(present_path) + if val is not None: + return int(val, 10)==1 + else: + return False + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + if self.is_psu_fan: + status_path = "{}/power_good".format(SYSFS_PSU_DIR[self.psu_index]) + val=self.__read_txt_file(status_path) + if val is not None: + return int(val, 10)==1 + else: + return False + else: + status=self.get_presence() + if status is None: + return False + return status + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + + return "N/A" + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return "N/A" + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return (self.fan_tray_index * 2 + self.fan_index + 1) \ + if not self.is_psu_fan else (self.psu_index + 1) + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return True if not self.is_psu_fan else False + diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan_drawer.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan_drawer.py new file mode 100644 index 000000000000..78d54f5dec25 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/fan_drawer.py @@ -0,0 +1,120 @@ +######################################################################## +# +# Module contains an implementation of SONiC Platform Base API and +# provides the Fan-Drawers' information available in the platform. +# +######################################################################## + +try: + from sonic_platform_base.fan_drawer_base import FanDrawerBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +FANS_PER_FANTRAY = 2 +MAX_FAN_WATT = 40.32 + + +class FanDrawer(FanDrawerBase): + """Platform-specific Fan class""" + + def __init__(self, fantray_index): + + FanDrawerBase.__init__(self) + # FanTray is 0-based in platforms + self.fantrayindex = fantray_index + self.__initialize_fan_drawer() + + + def __initialize_fan_drawer(self): + from sonic_platform.fan import Fan + for i in range(FANS_PER_FANTRAY): + self._fan_list.append(Fan(self.fantrayindex, i)) + + def get_name(self): + """ + Retrieves the fan drawer name + Returns: + string: The name of the device + """ + return "FanTray{}".format(self.fantrayindex+1) + + def get_presence(self): + """ + Retrieves the presence of the device + Returns: + bool: True if device is present, False if not + """ + return self._fan_list[0].get_presence() + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return self._fan_list[0].get_model() + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return self._fan_list[0].get_serial() + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return self._fan_list[0].get_status() + + def set_status_led(self, color): + """ + Sets the state of the fan drawer status LED + Args: + color: A string representing the color with which to set the + fan drawer status LED + Returns: + bool: True if status LED state is set successfully, False if not + """ + return self._fan_list[0].set_status_led(color) + def get_status_led(self): + """ + Gets the state of the fan drawer LED + + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + return self._fan_list[0].get_status_led() + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return (self.fantrayindex+1) + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return True + + def get_maximum_consumed_power(self): + """ + Retrives the maximum power drawn by Fan Drawer + Returns: + A float, with value of the maximum consumable power of the + component. + """ + return MAX_FAN_WATT + diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/platform.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/platform.py old mode 100644 new mode 100755 similarity index 100% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/platform.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/platform.py diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/psu.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/psu.py new file mode 100755 index 000000000000..2ec59298a4d0 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/psu.py @@ -0,0 +1,324 @@ +#!/usr/bin/env python + +############################################################################# +# psuutil.py +# Platform-specific PSU status interface for SONiC +############################################################################# + +try: + from sonic_platform_base.psu_base import PsuBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +PSU_NAME_LIST = ["PSU-1", "PSU-2"] + +class Psu(PsuBase): + """Platform-specific Psu class""" + + SYSFS_PSU_DIR = ["/sys/bus/i2c/devices/0-005a", + "/sys/bus/i2c/devices/0-0059"] + + def __init__(self, psu_index): + self._fan_list = [] + self.PSU_TEMP_MAX = 85 * 1000 + self.PSU_OUTPUT_POWER_MAX = 1300 * 1000 + self.PSU_OUTPUT_VOLTAGE_MIN = 11400 + self.PSU_OUTPUT_VOLTAGE_MAX = 12600 + self.index = psu_index + PsuBase.__init__(self) + self.__initialize_fan() + + def __initialize_fan(self): + from sonic_platform.fan import Fan + for fan_index in range(0, 1): + fan = Fan(fan_index, 0, is_psu_fan=True, psu_index=self.index) + self._fan_list.append(fan) + + def __read_txt_file(self, file_path): + try: + with open(file_path, 'r') as fd: + data = fd.read() + return data.strip() + except IOError: + pass + return "" + + + def get_fan(self, index): + """ + Retrieves object representing the fan module contained in this PSU + Returns: + An object dervied from FanBase representing the fan module + contained in this PSU + """ + return self._fan_list[index] + + def get_powergood_status(self): + """ + Retrieves the powergood status of PSU + Returns: + A boolean, True if PSU has stablized its output voltages and passed all + its internal self-tests, False if not. + """ + return self.get_status() + + def set_status_led(self, color): + """ + Sets the state of the PSU status LED + Args: + color: A string representing the color with which to set the PSU status LED + Note: Only support green and off + Returns: + bool: True if status LED state is set successfully, False if not + """ + # Hardware not supported + return False + + def get_name(self): + """ + Retrieves the name of the device + Returns: + string: The name of the device + """ + return PSU_NAME_LIST[self.index] + + def get_presence(self): + """ + Retrieves the presence of the PSU + Returns: + bool: True if PSU is present, False if not + """ + attr_file ='present' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + status = 0 + try: + with open(attr_path, 'r') as psu_prs: + status = int(psu_prs.read()) + except IOError: + return False + + return status == 1 + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + attr_file = 'power_good' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + status = 0 + try: + with open(attr_path, 'r') as power_status: + status = int(power_status.read()) + except IOError: + return False + + return status == 1 + + def get_model(self): + """ + Retrieves the model number/name of a power supply unit (PSU) defined + by 1-based index + :param idx: An integer, 1-based index of the PSU of which to query model number + :return: String, denoting model number/name + """ + try: + if self.get_presence(): + attr_file = 'model' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return str(val) + except Exception as e: + return None + + def get_mfr_id(self): + """ + Retrieves the manufacturing id of a power supply unit (PSU) defined + by 1-based index + :param idx: An integer, 1-based index of the PSU of which to query mfr id + :return: String, denoting manufacturing id + """ + try: + if self.get_presence(): + attr_file = 'vendor' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return str(val) + except Exception as e: + return None + + def get_serial(self): + """ + Retrieves the serial number of a power supply unit (PSU) defined + by 1-based index + :param idx: An integer, 1-based index of the PSU of which to query serial number + :return: String, denoting serial number of the PSU unit + """ + try: + if self.get_presence(): + attr_file = 'sn' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return str(val) + except Exception as e: + return None + + def get_voltage(self): + """ + Retrieves current PSU voltage output + Returns: + A int number, the output voltage in volts. + """ + try: + if self.get_presence(): + attr_file = 'in2_input' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return float(val) / 1000.0 + except Exception as e: + return None + + def get_current(self): + """ + Retrieves present electric current supplied by PSU + Returns: + A int number, electric current in amperes + """ + try: + if self.get_presence(): + attr_file = 'curr2_input' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return float(val) / 1000.0 + except Exception as e: + return None + + def get_power(self): + """ + Retrieves current energy supplied by PSU + Returns: + A int number, the power in watts. + """ + try: + if self.get_presence(): + attr_file = 'power2_input' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return float(val) / 1000000.0 + except Exception as e: + return None + + def get_status_led(self): + """ + Gets the state of the PSU status LED + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings. + """ + # TODO + if self.get_presence(): + if self.get_powergood_status(): + return self.STATUS_LED_COLOR_GREEN + else: + return self.STATUS_LED_COLOR_RED + else: + return None + + def get_temperature(self): + """ + Retrieves current temperature reading from PSU + Returns: + A float number of current temperature in Celsius up to nearest thousandth + of one degree Celsius, e.g. 30.125 + """ + try: + if self.get_presence(): + attr_file = 'temp1_input' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + val = self.__read_txt_file(attr_path) + return float(val) / 1000.0 + except Exception as e: + return None + + def get_temperature_high_threshold(self): + """ + Retrieves the high threshold temperature of PSU + Returns: + A float number, the high threshold temperature of PSU in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + return float(self.PSU_TEMP_MAX/1000) + + def get_voltage_high_threshold(self): + """ + Retrieves the high threshold PSU voltage output + Returns: + A float number, the high threshold output voltage in volts, + e.g. 12.1 + """ + return float(self.PSU_OUTPUT_VOLTAGE_MAX/1000) + + def get_voltage_low_threshold(self): + """ + Retrieves the low threshold PSU voltage output + Returns: + A float number, the low threshold output voltage in volts, + e.g. 12.1 + """ + return float(self.PSU_OUTPUT_VOLTAGE_MIN/1000) + + def get_maximum_supplied_power(self): + """ + Retrieves the maximum supplied power by PSU + Returns: + A float number, the maximum power output in Watts. + e.g. 1200.1 + """ + return float(self.PSU_OUTPUT_POWER_MAX/1000) + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. If the agent cannot determine the parent-relative position + for some reason, or if the associated value of entPhysicalContainedIn is '0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device or -1 if cannot determine the position + """ + return self.index + 1 + + def is_replaceable(self): + return True + + def get_revision(self): + """ + Retrieves the hardware revision of the device + Returns: + string: Revision value of device + """ + try: + if self.get_presence(): + attr_file = 'rev' + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file + with open(attr_path, 'r') as revision: + val = revision.read() + return val.strip() + except IOError: + return None + + def get_num_fans(self): + """ + Retrieves the number of fan modules available on this PSU + + Returns: + An integer, the number of fan modules available on this PSU + """ + return len(self._fan_list) + + def get_all_fans(self): + """ + Retrieves all fan modules available on this PSU + + Returns: + A list of objects derived from FanBase representing all fan + modules available on this PSU + """ + return self._fan_list diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/sfp.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/sfp.py old mode 100644 new mode 100755 similarity index 72% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/sfp.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/sfp.py index 7664999e56b8..53ca1e970500 --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/sfp.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/sfp.py @@ -10,8 +10,14 @@ from sonic_platform_base.sonic_sfp.sff8436 import sff8436Dom from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_InterfaceId from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_Dom + from sonic_platform_base.sonic_sfp.sffbase import sffbase + from sonic_platform_base.sonic_sfp.sff8024 import type_abbrv_name + from sonic_platform_base.sonic_sfp.sff8024 import type_of_media_interface from sonic_py_common.logger import Logger import sys + import time + import subprocess + import os except ImportError as e: raise ImportError(str(e) + "- required module not found") @@ -133,9 +139,9 @@ QSFP_OPTION_VALUE_WIDTH = 4 QSFP_MODULE_UPPER_PAGE3_START = 384 -QSFP_MODULE_THRESHOLD_OFFSET = 128 +QSFP_MODULE_THRESHOLD_OFFSET = 0 QSFP_MODULE_THRESHOLD_WIDTH = 24 -QSFP_CHANNL_THRESHOLD_OFFSET = 176 +QSFP_CHANNL_THRESHOLD_OFFSET = 48 QSFP_CHANNL_THRESHOLD_WIDTH = 24 #definitions of the offset and width for values in DOM info eeprom @@ -149,9 +155,13 @@ QSFP_DD_RX_POWER_WIDTH = 16 QSFP_DD_TX_POWER_OFFSET = 26 QSFP_DD_TX_POWER_WIDTH = 16 +QSFP_DD_CHANNL_FLAGS_SUPPORT_OFFSET = 29 +QSFP_DD_CHANNL_FLAGS_SUPPORT_WIDTH = 2 +QSFP_DD_CHANNL_MON_SUPPORT_OFFSET = 31 +QSFP_DD_CHANNL_MON_SUPPORT_WIDTH = 2 QSFP_DD_CHANNL_MON_OFFSET = 154 QSFP_DD_CHANNL_MON_WIDTH = 48 -QSFP_DD_CHANNL_DISABLE_STATUS_OFFSET = 86 +QSFP_DD_CHANNL_DISABLE_STATUS_OFFSET = 2 QSFP_DD_CHANNL_DISABLE_STATUS_WIDTH = 1 QSFP_DD_CHANNL_RX_LOS_STATUS_OFFSET = 19 QSFP_DD_CHANNL_RX_LOS_STATUS_WIDTH = 1 @@ -193,8 +203,52 @@ QSFP_TYPE = "QSFP" QSFP_DD_TYPE = "QSFP_DD" +PAUSE_EEPROM_SERVICE_STAMP='/tmp/pause_eeprom_polling' + # Global logger class instance logger = Logger() +class ext_qsfp_dd(sffbase): + version = '1.0' + + qsfp_dd_mon_capability = { + 'Tx_bias_support': + {'offset': 1, + 'bit': 0, + 'type': 'bitvalue'}, + 'Tx_power_support': + {'offset': 1, + 'bit': 1, + 'type': 'bitvalue'}, + 'Rx_power_support': + {'offset': 1, + 'bit': 2, + 'type': 'bitvalue'}, + 'Voltage_support': + {'offset': 0, + 'bit': 1, + 'type': 'bitvalue'}, + 'Temp_support': + {'offset': 0, + 'bit': 0, + 'type': 'bitvalue'} + } + + qsfp_dd_flags_capability = { + 'tx_fault': + {'offset': 0, + 'bit': 0, + 'type': 'bitvalue'}, + 'rx_los': + {'offset': 1, + 'bit': 1, + 'type': 'bitvalue'} + } + + def parse_mon_capability(self, sn_raw_data, start_pos): + return sffbase.parse(self, self.qsfp_dd_mon_capability, sn_raw_data, start_pos) + + def parse_flags_capability(self, sn_raw_data, start_pos): + return sffbase.parse(self, self.qsfp_dd_flags_capability, sn_raw_data, start_pos) class Sfp(SfpBase): """Platform-specific Sfp class""" @@ -243,19 +297,24 @@ class Sfp(SfpBase): RESET_17_32_PATH = "/sys/bus/i2c/devices/0-0007/port{}_reset" PRS_1_16_PATH = "/sys/bus/i2c/devices/0-0006/port{}_present" PRS_17_32_PATH = "/sys/bus/i2c/devices/0-0007/port{}_present" + LPMODE_1_16_PATH = "/sys/bus/i2c/devices/0-0006/port{}_lpmode" + LPMODE_17_32_PATH = "/sys/bus/i2c/devices/0-0007/port{}_lpmode" def __init__(self, sfp_index, sfp_type): # Init index self.index = sfp_index self.port_num = self.index + 1 + self.abbrv = None # Init eeprom path eeprom_path_prefix = '/sys/bus/i2c/devices/0-00' self.port_to_eeprom1_mapping = {} self.port_to_eeprom2_mapping = {} + self.port_to_eeprom3_mapping = {} for x in range(self.PORT_START, self.PORT_END + 1): self.port_to_eeprom1_mapping[x] = eeprom_path_prefix + self.port_to_i2c_mapping[x] + '/eeprom1' self.port_to_eeprom2_mapping[x] = eeprom_path_prefix + self.port_to_i2c_mapping[x] + '/eeprom2' + self.port_to_eeprom3_mapping[x] = eeprom_path_prefix + self.port_to_i2c_mapping[x] + '/eeprom3' self._detect_sfp_type(sfp_type) self._dom_capability_detect() @@ -282,7 +341,153 @@ def get_presence(self): except IOError: return False logger.log_info("debug:port_ %s sfp presence is %s" % (str(self.index), str(presence))) - return presence + return presence == 1 + + def _get_eeprom_by_bmc(self): + eeprom_path_prefix = '/sys/bus/i2c/devices/0-00' + mux = int((0x70 + self.index / 8) * 2) + chan = 1 << (self.index % 8) + sel_ch_cmd = 'ipmitool raw 0x30 0x25 0x1 {} 0x0 {} 2>/dev/null'.format(mux, chan) + desel_ch_cmd = 'ipmitool raw 0x30 0x25 0x1 {} 0x0 0x0 2>/dev/null'.format(mux) + desel_all_ch_cmd = 'ipmitool raw 0x30 0x25 0x1 0xe0 0x0 0x0 2>/dev/null; ipmitool raw 0x30 0x25 0x1 0xe2 0x0 0x0 2>/dev/null; ipmitool raw 0x30 0x25 0x1 0xe4 0x0 0x0 2>/dev/null; ipmitool raw 0x30 0x25 0x1 0xe6 0x0 0x0 2>/dev/null' + sel_page_cmd = 'ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f {} 2>/dev/null' + read_lower_cmd = 'ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x0 2>/dev/null' + read_upper_cmd = 'ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>/dev/null' + + try: + subprocess.Popen(sel_ch_cmd, stdout=subprocess.PIPE) + subprocess.Popen(sel_page_cmd.format(0), stdout=subprocess.PIPE) + time.sleep(0.05) + p = subprocess.Popen(read_lower_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + # retry if error occurred + i = 0 + while out == b'' and i < 3: + subprocess.Popen(desel_all_ch_cmd, stdout=subprocess.PIPE) + time.sleep(0.05) + subprocess.Popen(sel_ch_cmd, stdout=subprocess.PIPE) + subprocess.Popen(sel_page_cmd.format(0), stdout=subprocess.PIPE) + time.sleep(0.05) + p = subprocess.Popen(read_lower_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + i = i + 1 + if out == b'': + return False + + data_lower = out.decode().strip().replace("\n", "") + + i = 0 + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + while out == b'' and i < 3: + time.sleep(0.05) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + i = i + 1 + if out == b'': + return False + + data_upper_page_0 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0x1), stdout=subprocess.PIPE) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + data_upper_page_1 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0x2), stdout=subprocess.PIPE) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + data_upper_page_2 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0x3), stdout=subprocess.PIPE) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + data_upper_page_3 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0x10), stdout=subprocess.PIPE) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + data_upper_page_10 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0x11), stdout=subprocess.PIPE) + p = subprocess.Popen(read_upper_cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + data_upper_page_11 = out.decode().strip().replace("\n", "") + + subprocess.Popen(sel_page_cmd.format(0), stdout=subprocess.PIPE) + subprocess.Popen(desel_ch_cmd, stdout=subprocess.PIPE) + + eeprom1 = data_lower + " " + data_upper_page_0 + eeprom2 = data_upper_page_1 + " " + data_upper_page_2 + eeprom3 = data_upper_page_3 + " " + data_upper_page_10 + " " + data_upper_page_11 + + os.remove(PAUSE_EEPROM_SERVICE_STAMP) + + eeprom_raw_lower = [int(x, 16) for x in data_lower.split()] + if eeprom_raw_lower[0] in QSFP_TYPE_CODE_LIST: + temp = eeprom_raw_lower[22] + if temp > 128: + return False + elif eeprom_raw_lower[0] in QSFP_DD_TYPE_CODE_LIST: + temp = eeprom_raw_lower[14] + if temp > 128: + return False + + eeprom1 = eeprom1.replace(" ","") + eeprom2 = eeprom2.replace(" ","") + eeprom3 = eeprom3.replace(" ","") + + for i in range(0, 3): + sysfs_sfp_i2c_client_temp_path = eeprom_path_prefix + self.port_to_i2c_mapping[self.index] + '/temp' + if i == 0: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom1_mapping[self.index] + eeprom = eeprom1 + elif i == 1: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom2_mapping[self.index] + eeprom = eeprom2 + else: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom3_mapping[self.index] + eeprom = eeprom3 + + try: + with open(sysfs_sfp_i2c_client_eeprom_path, 'w') as fd: + fd.write(eeprom) + fd.close() + if i == 0: + with open(sysfs_sfp_i2c_client_temp_path, 'w') as fd: + fd.write(temp) + fd.close() + except IOError: + fd.close() + return True + except Exception: + return False + + def read_eeprom_buffer(self): + with open(PAUSE_EEPROM_SERVICE_STAMP, 'w') as f: + f.write("") + f.close() + + time.sleep(0.2) + rc = self._get_eeprom_by_bmc() + + + return rc + + def clear_eeprom_buffer(self): + for i in range(0, 3): + if i == 0: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom1_mapping[self.index] + elif i == 1: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom2_mapping[self.index] + else: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom3_mapping[self.index] + try: + with open(sysfs_sfp_i2c_client_eeprom_path, 'w') as fd: + fd.write(" ") + fd.close() + except IOError: + fd.close() def _read_eeprom_specific_bytes(self, offset, num_bytes): sysfsfile_eeprom = None @@ -292,9 +497,12 @@ def _read_eeprom_specific_bytes(self, offset, num_bytes): if offset < 256: sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom1_mapping[self.index] - else: + elif offset < 512: sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom2_mapping[self.index] offset = offset - 256 + else: + sysfs_sfp_i2c_client_eeprom_path = self.port_to_eeprom3_mapping[self.index] + offset = offset - 512 try: sysfsfile_eeprom = open(sysfs_sfp_i2c_client_eeprom_path, mode="rb", buffering=0) @@ -321,8 +529,10 @@ def _detect_sfp_type(self, sfp_type): if eeprom_raw: if eeprom_raw[0] in QSFP_TYPE_CODE_LIST: self.sfp_type = QSFP_TYPE + self.abbrv = type_abbrv_name[eeprom_raw[0]] elif eeprom_raw[0] in QSFP_DD_TYPE_CODE_LIST: self.sfp_type = QSFP_DD_TYPE + self.abbrv = type_abbrv_name[eeprom_raw[0]] else: # we don't regonize this identifier value, treat the xSFP module as the default type self.sfp_type = sfp_type @@ -333,6 +543,7 @@ def _detect_sfp_type(self, sfp_type): # eeprom_raw being None indicates the module is not present. # in this case we treat it as the default type according to the SKU self.sfp_type = sfp_type + self.abbrv = type_abbrv_name['18'] def _dom_capability_detect(self): if not self.get_presence(): @@ -342,17 +553,23 @@ def _dom_capability_detect(self): self.dom_rx_power_supported = False self.dom_tx_bias_power_supported = False self.dom_tx_power_supported = False - self.dom_channel_monitor_supported = False self.dom_module_monitor_supported = False - self.dom_channel_treshold_supported = False - self.dom_module_treshold_supported =False self.calibration = 0 return - self.dom_channel_monitor_supported = False + self.dom_channel_monitor_supported = True self.dom_module_monitor_supported = True - self.dom_channel_treshold_supported = False - self.dom_module_treshold_supported =False + self.dom_channel_threshold_supported = True + self.dom_module_threshold_supported = True + + + self.dom_supported = False + self.dom_temp_supported = False + self.dom_volt_supported = False + self.dom_rx_power_supported = False + self.dom_tx_bias_supported = False + self.dom_tx_power_supported = False + self.dom_thresholds_supported = False if self.sfp_type == QSFP_TYPE: self.calibration = 1 @@ -369,7 +586,7 @@ def _dom_capability_detect(self): if qsfp_dom_capability_raw is not None: qsfp_version_compliance_raw = self._read_eeprom_specific_bytes(QSFP_VERSION_COMPLIANCE_OFFSET, QSFP_VERSION_COMPLIANCE_WIDTH) qsfp_version_compliance = int(qsfp_version_compliance_raw[0], 16) - dom_capability = sfpi_obj.parse_qsfp_dom_capability(qsfp_dom_capability_raw, 0) + dom_capability = sfpi_obj.parse_dom_capability(qsfp_dom_capability_raw, 0) if qsfp_version_compliance >= 0x08: self.dom_temp_supported = dom_capability['data']['Temp_support']['value'] == 'On' self.dom_volt_supported = dom_capability['data']['Voltage_support']['value'] == 'On' @@ -405,33 +622,36 @@ def _dom_capability_detect(self): if sfpi_obj is None: self.dom_supported = False - offset = 0 + self.dom_temp_supported = True + self.dom_volt_supported = True + self.dom_tx_fault_supported = False + self.dom_rx_los_supported = False + + offset = 0; + # two types of QSFP-DD cable types supported: Copper and Optical. qsfp_dom_capability_raw = self._read_eeprom_specific_bytes((offset + XCVR_DOM_CAPABILITY_OFFSET_QSFP_DD), XCVR_DOM_CAPABILITY_WIDTH_QSFP_DD) + if qsfp_dom_capability_raw is not None: - self.dom_temp_supported = True - self.dom_volt_supported = True dom_capability = sfpi_obj.parse_dom_capability(qsfp_dom_capability_raw, 0) if dom_capability['data']['Flat_MEM']['value'] == 'Off': - self.dom_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - self.dom_tx_bias_power_supported = False - self.dom_thresholds_supported = False - else: - self.dom_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - self.dom_tx_bias_power_supported = False - self.dom_thresholds_supported = False - else: - self.dom_supported = False - self.dom_temp_supported = False - self.dom_volt_supported = False - self.dom_rx_power_supported = False - self.dom_tx_power_supported = False - self.dom_tx_bias_power_supported = False - self.dom_thresholds_supported = False + + ext_dd = ext_qsfp_dd() + offset = 256 + mon_sup_raw = self._read_eeprom_specific_bytes(offset + QSFP_DD_CHANNL_MON_SUPPORT_OFFSET, QSFP_DD_CHANNL_MON_SUPPORT_WIDTH) + mon_sup_data = ext_dd.parse_mon_capability(mon_sup_raw, 0) + + self.dom_thresholds_supported = mon_sup_data['data']['Tx_power_support']['value'] == 'On' + self.dom_rx_power_supported = mon_sup_data['data']['Tx_power_support']['value'] == 'On' + self.dom_tx_power_supported = mon_sup_data['data']['Rx_power_support']['value'] == 'On' + self.dom_tx_bias_supported = mon_sup_data['data']['Tx_bias_support']['value'] == 'On' + self.dom_supported = True + + flags_sup_raw = self._read_eeprom_specific_bytes(offset + QSFP_DD_CHANNL_FLAGS_SUPPORT_OFFSET, QSFP_DD_CHANNL_FLAGS_SUPPORT_WIDTH) + flags_sup_data = ext_dd.parse_flags_capability(flags_sup_raw, 0) + + self.dom_tx_fault_supported = flags_sup_data['data']['tx_fault']['value'] == 'On' + self.dom_rx_los_supported = flags_sup_data['data']['rx_los']['value'] == 'On' else: self.dom_supported = False @@ -486,8 +706,19 @@ def get_transceiver_info(self): application_advertisement |1*255VCHAR |supported applications advertisement ================================================================================ """ + self.reinit() + info_dict_keys = [ + 'type', 'hardware_rev', 'serial', 'manufacturer', + 'model', 'connector', 'encoding', 'ext_identifier', + 'ext_rateselect_compliance', 'cable_type', 'cable_length', + 'nominal_bit_rate', 'specification_compliance', 'vendor_date', + 'vendor_oui', 'application_advertisement', 'type_abbrv_name'] + transceiver_info_dict = {} compliance_code_dict = {} + transceiver_info_dict = dict.fromkeys(info_dict_keys, "NA") + transceiver_info_dict["specification_compliance"] = '{}' + transceiver_info_dict['type_abbrv_name'] = self.abbrv #QSFP if self.sfp_type == QSFP_TYPE: @@ -636,6 +867,7 @@ def get_transceiver_info(self): if sfp_media_type_dict is None: return None + transceiver_info_dict['specification_compliance'] = type_of_media_interface[sfp_media_type_raw[0]] host_media_list = "" sfp_application_type_first_list = self._read_eeprom_specific_bytes((XCVR_FIRST_APPLICATION_LIST_OFFSET_QSFP_DD), XCVR_FIRST_APPLICATION_LIST_WIDTH_QSFP_DD) possible_application_count = 8 @@ -663,7 +895,6 @@ def get_transceiver_info(self): transceiver_info_dict['encoding'] = "Not supported for CMIS cables" transceiver_info_dict['ext_identifier'] = str(sfp_ext_identifier_data['data']['Extended Identifier']['value']) transceiver_info_dict['ext_rateselect_compliance'] = "Not supported for CMIS cables" - transceiver_info_dict['specification_compliance'] = "Not supported for CMIS cables" transceiver_info_dict['cable_type'] = "Length Cable Assembly(m)" transceiver_info_dict['cable_length'] = str(sfp_cable_len_data['data']['Length Cable Assembly(m)']['value']) transceiver_info_dict['nominal_bit_rate'] = "Not supported for CMIS cables" @@ -700,6 +931,7 @@ def get_transceiver_bulk_status(self): TX power |INT |TX output power in mW ======================================================================== """ + self.reinit() transceiver_dom_info_dict = {} dom_info_dict_keys = ['temperature', 'voltage', @@ -754,6 +986,10 @@ def get_transceiver_bulk_status(self): dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params_with_tx_power(dom_data_raw[start : end], 0) if self.dom_tx_power_supported: + transceiver_dom_info_dict['tx1bias'] = dom_channel_monitor_data['data']['TX1Bias']['value'] + transceiver_dom_info_dict['tx2bias'] = dom_channel_monitor_data['data']['TX2Bias']['value'] + transceiver_dom_info_dict['tx3bias'] = dom_channel_monitor_data['data']['TX3Bias']['value'] + transceiver_dom_info_dict['tx4bias'] = dom_channel_monitor_data['data']['TX4Bias']['value'] transceiver_dom_info_dict['tx1power'] = self._convert_string_to_num(dom_channel_monitor_data['data']['TX1Power']['value']) transceiver_dom_info_dict['tx2power'] = self._convert_string_to_num(dom_channel_monitor_data['data']['TX2Power']['value']) transceiver_dom_info_dict['tx3power'] = self._convert_string_to_num(dom_channel_monitor_data['data']['TX3Power']['value']) @@ -765,38 +1001,64 @@ def get_transceiver_bulk_status(self): transceiver_dom_info_dict['rx3power'] = self._convert_string_to_num(dom_channel_monitor_data['data']['RX3Power']['value']) transceiver_dom_info_dict['rx4power'] = self._convert_string_to_num(dom_channel_monitor_data['data']['RX4Power']['value']) - transceiver_dom_info_dict['tx1bias'] = dom_channel_monitor_data['data']['TX1Bias']['value'] - transceiver_dom_info_dict['tx2bias'] = dom_channel_monitor_data['data']['TX2Bias']['value'] - transceiver_dom_info_dict['tx3bias'] = dom_channel_monitor_data['data']['TX3Bias']['value'] - transceiver_dom_info_dict['tx4bias'] = dom_channel_monitor_data['data']['TX4Bias']['value'] #QSFP-DD else: - offset = 0 sfpd_obj = qsfp_dd_Dom() if sfpd_obj is None: return transceiver_dom_info_dict - dom_data_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_DOM_BULK_DATA_START), QSFP_DD_DOM_BULK_DATA_SIZE) - if dom_data_raw is None: - return transceiver_dom_info_dict - if self.dom_module_monitor_supported: + if self.dom_temp_supported: - start = QSFP_DD_TEMPE_OFFSET - QSFP_DD_DOM_BULK_DATA_START - end = start + QSFP_DD_TEMPE_WIDTH - dom_temperature_data = sfpd_obj.parse_temperature(dom_data_raw[start : end], 0) + offset = 0 + dom_data_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_TEMPE_OFFSET), QSFP_DD_TEMPE_WIDTH) + dom_temperature_data = sfpd_obj.parse_temperature(dom_data_raw, 0) temp = self._convert_string_to_num(dom_temperature_data['data']['Temperature']['value']) if temp is not None: transceiver_dom_info_dict['temperature'] = temp if self.dom_volt_supported: - start = QSFP_DD_VOLT_OFFSET - QSFP_DD_DOM_BULK_DATA_START - end = start + QSFP_DD_VOLT_WIDTH - dom_voltage_data = sfpd_obj.parse_voltage(dom_data_raw[start : end], 0) + offset = 0 + dom_data_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_VOLT_OFFSET), QSFP_DD_VOLT_WIDTH) + dom_voltage_data = sfpd_obj.parse_voltage(dom_data_raw, 0) volt = self._convert_string_to_num(dom_voltage_data['data']['Vcc']['value']) if volt is not None: transceiver_dom_info_dict['voltage'] = volt + if self.dom_channel_monitor_supported: + + offset = 768 + dom_data_raw = self._read_eeprom_specific_bytes(offset + (QSFP_DD_CHANNL_MON_OFFSET - 128), QSFP_DD_CHANNL_MON_WIDTH) + dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(dom_data_raw, 0) + if self.dom_tx_power_supported: + transceiver_dom_info_dict['tx1power'] = dom_channel_monitor_data['data']['TX1Power']['value'] + transceiver_dom_info_dict['tx2power'] = dom_channel_monitor_data['data']['TX2Power']['value'] + transceiver_dom_info_dict['tx3power'] = dom_channel_monitor_data['data']['TX3Power']['value'] + transceiver_dom_info_dict['tx4power'] = dom_channel_monitor_data['data']['TX4Power']['value'] + transceiver_dom_info_dict['tx5power'] = dom_channel_monitor_data['data']['TX5Power']['value'] + transceiver_dom_info_dict['tx6power'] = dom_channel_monitor_data['data']['TX6Power']['value'] + transceiver_dom_info_dict['tx7power'] = dom_channel_monitor_data['data']['TX7Power']['value'] + transceiver_dom_info_dict['tx8power'] = dom_channel_monitor_data['data']['TX8Power']['value'] + + if self.dom_rx_power_supported: + transceiver_dom_info_dict['rx1power'] = dom_channel_monitor_data['data']['RX1Power']['value'] + transceiver_dom_info_dict['rx2power'] = dom_channel_monitor_data['data']['RX2Power']['value'] + transceiver_dom_info_dict['rx3power'] = dom_channel_monitor_data['data']['RX3Power']['value'] + transceiver_dom_info_dict['rx4power'] = dom_channel_monitor_data['data']['RX4Power']['value'] + transceiver_dom_info_dict['rx5power'] = dom_channel_monitor_data['data']['RX5Power']['value'] + transceiver_dom_info_dict['rx6power'] = dom_channel_monitor_data['data']['RX6Power']['value'] + transceiver_dom_info_dict['rx7power'] = dom_channel_monitor_data['data']['RX7Power']['value'] + transceiver_dom_info_dict['rx8power'] = dom_channel_monitor_data['data']['RX8Power']['value'] + + if self.dom_tx_bias_supported: + transceiver_dom_info_dict['tx1bias'] = dom_channel_monitor_data['data']['TX1Bias']['value'] + transceiver_dom_info_dict['tx2bias'] = dom_channel_monitor_data['data']['TX2Bias']['value'] + transceiver_dom_info_dict['tx3bias'] = dom_channel_monitor_data['data']['TX3Bias']['value'] + transceiver_dom_info_dict['tx4bias'] = dom_channel_monitor_data['data']['TX4Bias']['value'] + transceiver_dom_info_dict['tx5bias'] = dom_channel_monitor_data['data']['TX5Bias']['value'] + transceiver_dom_info_dict['tx6bias'] = dom_channel_monitor_data['data']['TX6Bias']['value'] + transceiver_dom_info_dict['tx7bias'] = dom_channel_monitor_data['data']['TX7Bias']['value'] + transceiver_dom_info_dict['tx8bias'] = dom_channel_monitor_data['data']['TX8Bias']['value'] return transceiver_dom_info_dict @@ -831,6 +1093,7 @@ def get_transceiver_threshold_info(self): txbiaslowwarning |FLOAT |Low Warning Threshold value of tx Bias Current in mA. ======================================================================== """ + self.reinit() transceiver_dom_threshold_info_dict = {} dom_info_dict_keys = ['temphighalarm', 'temphighwarning', @@ -851,9 +1114,7 @@ def get_transceiver_threshold_info(self): if not self.dom_supported or not self.qsfp_page3_available: return transceiver_dom_threshold_info_dict - # Dom Threshold data starts from offset 384 - # Revert offset back to 0 once data is retrieved - offset = QSFP_MODULE_UPPER_PAGE3_START + offset = 512 sfpd_obj = sff8436Dom() if sfpd_obj is None: return transceiver_dom_threshold_info_dict @@ -871,7 +1132,7 @@ def get_transceiver_threshold_info(self): dom_channel_threshold_data = sfpd_obj.parse_channel_threshold_values(dom_channel_threshold_raw, 0) # Threshold Data - if self.dom_module_treshold_supported: + if self.dom_module_threshold_supported: transceiver_dom_threshold_info_dict['temphighalarm'] = dom_module_threshold_data['data']['TempHighAlarm']['value'] transceiver_dom_threshold_info_dict['temphighwarning'] = dom_module_threshold_data['data']['TempHighWarning']['value'] transceiver_dom_threshold_info_dict['templowalarm'] = dom_module_threshold_data['data']['TempLowAlarm']['value'] @@ -880,7 +1141,7 @@ def get_transceiver_threshold_info(self): transceiver_dom_threshold_info_dict['vcchighwarning'] = dom_module_threshold_data['data']['VccHighWarning']['value'] transceiver_dom_threshold_info_dict['vcclowalarm'] = dom_module_threshold_data['data']['VccLowAlarm']['value'] transceiver_dom_threshold_info_dict['vcclowwarning'] = dom_module_threshold_data['data']['VccLowWarning']['value'] - if self.dom_channel_treshold_supported: + if self.dom_channel_threshold_supported: transceiver_dom_threshold_info_dict['rxpowerhighalarm'] = dom_channel_threshold_data['data']['RxPowerHighAlarm']['value'] transceiver_dom_threshold_info_dict['rxpowerhighwarning'] = dom_channel_threshold_data['data']['RxPowerHighWarning']['value'] transceiver_dom_threshold_info_dict['rxpowerlowalarm'] = dom_channel_threshold_data['data']['RxPowerLowAlarm']['value'] @@ -906,8 +1167,8 @@ def get_transceiver_threshold_info(self): if sfpd_obj is None: return transceiver_dom_threshold_info_dict - # page 02 (we put page 2 to byte 256~384) - offset = 256 + # page 02 (we put page 2 to byte 384~511) + offset = 384 dom_module_threshold_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_MODULE_THRESHOLD_OFFSET), QSFP_DD_MODULE_THRESHOLD_WIDTH) if dom_module_threshold_raw is None: return transceiver_dom_threshold_info_dict @@ -915,7 +1176,7 @@ def get_transceiver_threshold_info(self): dom_module_threshold_data = sfpd_obj.parse_module_threshold_values(dom_module_threshold_raw, 0) # Threshold Data - if self.dom_module_treshold_supported: + if self.dom_module_threshold_supported: transceiver_dom_threshold_info_dict['temphighalarm'] = dom_module_threshold_data['data']['TempHighAlarm']['value'] transceiver_dom_threshold_info_dict['temphighwarning'] = dom_module_threshold_data['data']['TempHighWarning']['value'] transceiver_dom_threshold_info_dict['templowalarm'] = dom_module_threshold_data['data']['TempLowAlarm']['value'] @@ -924,7 +1185,7 @@ def get_transceiver_threshold_info(self): transceiver_dom_threshold_info_dict['vcchighwarning'] = dom_module_threshold_data['data']['VccHighWarning']['value'] transceiver_dom_threshold_info_dict['vcclowalarm'] = dom_module_threshold_data['data']['VccLowAlarm']['value'] transceiver_dom_threshold_info_dict['vcclowwarning'] = dom_module_threshold_data['data']['VccLowWarning']['value'] - if self.dom_channel_treshold_supported: + if self.dom_channel_threshold_supported: transceiver_dom_threshold_info_dict['rxpowerhighalarm'] = dom_module_threshold_data['data']['RxPowerHighAlarm']['value'] transceiver_dom_threshold_info_dict['rxpowerhighwarning'] = dom_module_threshold_data['data']['RxPowerHighWarning']['value'] transceiver_dom_threshold_info_dict['rxpowerlowalarm'] = dom_module_threshold_data['data']['RxPowerLowAlarm']['value'] @@ -974,12 +1235,12 @@ def get_rx_los(self): #QSFP-DD else: - # page 11h (we put page 2 to byte 384~512) - if self.dom_rx_tx_power_bias_supported: - offset = 384 + # page 11h (we put page 11 to byte 768~895) + if self.dom_rx_los_supported: + offset = 768 dom_channel_monitor_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_CHANNL_RX_LOS_STATUS_OFFSET), QSFP_DD_CHANNL_RX_LOS_STATUS_WIDTH) if dom_channel_monitor_raw is not None: - rx_los_data = int(dom_channel_monitor_raw[0], 8) + rx_los_data = int(dom_channel_monitor_raw[0], 16) rx_los_list.append(rx_los_data & 0x01 != 0) rx_los_list.append(rx_los_data & 0x02 != 0) rx_los_list.append(rx_los_data & 0x04 != 0) @@ -999,6 +1260,7 @@ def get_tx_fault(self): A Boolean, True if SFP has TX fault, False if not Note : TX fault status is lached until a call to get_tx_fault or a reset. """ + self.reinit() if not self.dom_supported: return None @@ -1016,7 +1278,20 @@ def get_tx_fault(self): #QSFP-DD else: - return None + # page 11h (we put page 11 to byte 768~895) + if self.dom_tx_fault_supported: + offset = 768 + dom_channel_monitor_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_CHANNL_TX_FAULT_STATUS_OFFSET), QSFP_DD_CHANNL_TX_FAULT_STATUS_WIDTH) + if dom_channel_monitor_raw is not None: + tx_fault_data = int(dom_channel_monitor_raw[0], 16) + tx_fault_list.append(tx_fault_data & 0x01 != 0) + tx_fault_list.append(tx_fault_data & 0x02 != 0) + tx_fault_list.append(tx_fault_data & 0x04 != 0) + tx_fault_list.append(tx_fault_data & 0x08 != 0) + tx_fault_list.append(tx_fault_data & 0x10 != 0) + tx_fault_list.append(tx_fault_data & 0x20 != 0) + tx_fault_list.append(tx_fault_data & 0x40 != 0) + tx_fault_list.append(tx_fault_data & 0x80 != 0) return tx_fault_list @@ -1031,6 +1306,7 @@ def get_tx_disable(self): for SFP, the TX Disable State and Soft TX Disable Select is ORed as the tx_disable status returned These two bits are bit 7 & 6 in byte 110 page a2 respectively """ + self.reinit() if not self.dom_supported: return None @@ -1048,20 +1324,19 @@ def get_tx_disable(self): #QSFP-DD else: - if self.dom_rx_tx_power_bias_supported: - # page 11h (we put page 1 to byte 384~512) - offset = 384 - dom_channel_monitor_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_CHANNL_DISABLE_STATUS_OFFSET), QSFP_DD_CHANNL_DISABLE_STATUS_WIDTH) - if dom_channel_monitor_raw is not None: - tx_disable_data = int(dom_channel_monitor_raw[0], 16) - tx_disable_list.append(tx_disable_data & 0x01 != 0) - tx_disable_list.append(tx_disable_data & 0x02 != 0) - tx_disable_list.append(tx_disable_data & 0x04 != 0) - tx_disable_list.append(tx_disable_data & 0x08 != 0) - tx_disable_list.append(tx_disable_data & 0x10 != 0) - tx_disable_list.append(tx_disable_data & 0x20 != 0) - tx_disable_list.append(tx_disable_data & 0x40 != 0) - tx_disable_list.append(tx_disable_data & 0x80 != 0) + # page 10h (we put page 10 to byte 640~767) + offset = 640 + dom_channel_monitor_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_CHANNL_DISABLE_STATUS_OFFSET), QSFP_DD_CHANNL_DISABLE_STATUS_WIDTH) + if dom_channel_monitor_raw is not None: + tx_disable_data = int(dom_channel_monitor_raw[0], 16) + tx_disable_list.append(tx_disable_data & 0x01 != 0) + tx_disable_list.append(tx_disable_data & 0x02 != 0) + tx_disable_list.append(tx_disable_data & 0x04 != 0) + tx_disable_list.append(tx_disable_data & 0x08 != 0) + tx_disable_list.append(tx_disable_data & 0x10 != 0) + tx_disable_list.append(tx_disable_data & 0x20 != 0) + tx_disable_list.append(tx_disable_data & 0x40 != 0) + tx_disable_list.append(tx_disable_data & 0x80 != 0) return tx_disable_list @@ -1083,8 +1358,17 @@ def get_lpmode(self): Returns: A Boolean, True if lpmode is enabled, False if disabled """ - # SFP doesn't support this feature - return False + lpmode = False + try: + if self.index < 16: + lpmode_path=self.LPMODE_1_16_PATH.format(self.port_num) + else: + lpmode_path=self.LPMODE_17_32_PATH.format(self.port_num) + with open(lpmode_path, 'r') as sfp_lpmode: + lpmode = int(sfp_lpmode.read(), 16) + except IOError: + return False + return lpmode == 1 def get_power_override(self): """ @@ -1102,6 +1386,7 @@ def get_temperature(self): Returns: An integer number of current temperature in Celsius """ + self.reinit() if not self.dom_supported: return None #QSFP @@ -1146,6 +1431,7 @@ def get_voltage(self): Returns: An integer number of supply voltage in mV """ + self.reinit() if not self.dom_supported: return None @@ -1192,6 +1478,7 @@ def get_tx_bias(self): for channel 0 to channel 4. Ex. ['110.09', '111.12', '108.21', '112.09'] """ + self.reinit() tx_bias_list = [] #QSFP @@ -1212,25 +1499,24 @@ def get_tx_bias(self): #QSFP-DD else: - # page 11h (we put page 1 to byte 384~512) - if self.dom_rx_tx_power_bias_supported: - offset = 384 + # page 11h (we put page 1 to byte 768~895) + if dom_tx_bias_power_supported: + offset = 768 sfpd_obj = qsfp_dd_Dom() if sfpd_obj is None: return None - if dom_tx_bias_power_supported: - dom_tx_bias_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_TX_BIAS_OFFSET), QSFP_DD_TX_BIAS_WIDTH) - if dom_tx_bias_raw is not None: - dom_tx_bias_data = sfpd_obj.parse_dom_tx_bias(dom_tx_bias_raw, 0) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX1Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX2Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX3Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX4Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX5Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX6Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX7Bias']['value'])) - tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX8Bias']['value'])) + dom_tx_bias_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_TX_BIAS_OFFSET), QSFP_DD_TX_BIAS_WIDTH) + if dom_tx_bias_raw is not None: + dom_tx_bias_data = sfpd_obj.parse_dom_tx_bias(dom_tx_bias_raw, 0) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX1Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX2Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX3Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX4Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX5Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX6Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX7Bias']['value'])) + tx_bias_list.append(self._convert_string_to_num(dom_tx_bias_data['data']['TX8Bias']['value'])) return tx_bias_list @@ -1243,6 +1529,7 @@ def get_rx_power(self): power in mW for channel 0 to channel 4. Ex. ['1.77', '1.71', '1.68', '1.70'] """ + self.reinit() rx_power_list = [] #QSFP @@ -1268,25 +1555,24 @@ def get_rx_power(self): #QSFP-DD elif self.sfp_type == QSFP_DD_TYPE: - # page 11h (we put page 1 to byte 384~512) - if self.dom_rx_tx_power_bias_supported: - offset = 384 + # page 11h (we put page 11 to byte 768~895) + if self.dom_rx_power_supported: + offset = 768 sfpd_obj = qsfp_dd_Dom() if sfpd_obj is None: return None - if self.dom_rx_power_supported: - dom_rx_power_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_RX_POWER_OFFSET), QSFP_DD_RX_POWER_WIDTH) - if dom_rx_power_raw is not None: - dom_rx_power_data = sfpd_obj.parse_dom_rx_power(dom_rx_power_raw, 0) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX1Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX2Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX3Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX4Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX5Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX6Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX7Power']['value'])) - rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX8Power']['value'])) + dom_rx_power_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_RX_POWER_OFFSET), QSFP_DD_RX_POWER_WIDTH) + if dom_rx_power_raw is not None: + dom_rx_power_data = sfpd_obj.parse_dom_rx_power(dom_rx_power_raw, 0) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX1Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX2Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX3Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX4Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX5Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX6Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX7Power']['value'])) + rx_power_list.append(self._convert_string_to_num(dom_rx_power_data['data']['RX8Power']['value'])) return rx_power_list @@ -1299,6 +1585,7 @@ def get_tx_power(self): for channel 0 to channel 4. Ex. ['1.86', '1.86', '1.86', '1.86'] """ + self.reinit() tx_power_list = [] #QSFP @@ -1324,25 +1611,24 @@ def get_tx_power(self): #QSFP-DD else: - # page 11h (we put page 1 to byte 384~512) - if self.dom_rx_tx_power_bias_supported: - offset = 384 + # page 11h (we put page 11 to byte 768~895) + if self.dom_tx_power_supported: + offset = 768 sfpd_obj = qsfp_dd_Dom() if sfpd_obj is None: return None - if self.dom_tx_power_supported: - dom_tx_power_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_TX_POWER_OFFSET), QSFP_DD_TX_POWER_WIDTH) - if dom_tx_power_raw is not None: - dom_tx_power_data = sfpd_obj.parse_dom_tx_power(dom_tx_power_raw, 0) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX1Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX2Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX3Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX4Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX5Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX6Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX7Power']['value'])) - tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX8Power']['value'])) + dom_tx_power_raw = self._read_eeprom_specific_bytes((offset + QSFP_DD_TX_POWER_OFFSET), QSFP_DD_TX_POWER_WIDTH) + if dom_tx_power_raw is not None: + dom_tx_power_data = sfpd_obj.parse_dom_tx_power(dom_tx_power_raw, 0) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX1Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX2Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX3Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX4Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX5Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX6Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX7Power']['value'])) + tx_power_list.append(self._convert_string_to_num(dom_tx_power_data['data']['TX8Power']['value'])) return tx_power_list @@ -1352,8 +1638,22 @@ def reset(self): Returns: A boolean, True if successful, False if not """ - # SFP doesn't support this feature - return False + try: + if self.index < 16: + file_path=self.RESET_1_16_PATH.format(self.port_num) + else: + file_path=self.RESET_17_32_PATH.format(self.port_num) + + with open(file_path, 'w') as fd: + fd.write(str(1)) + time.sleep(1) + fd.write(str(0)) + time.sleep(1) + + except IOError: + return False + + return True def tx_disable(self, tx_disable): """ @@ -1390,8 +1690,18 @@ def set_lpmode(self, lpmode): Returns: A boolean, True if lpmode is set successfully, False if not """ - # SFP doesn't support this feature - return False + try: + if self.index < 16: + lpmode_path=self.LPMODE_1_16_PATH.format(self.port_num) + else: + lpmode_path=self.LPMODE_17_32_PATH.format(self.port_num) + val_file = open(lpmode_path, 'w') + val_file.write('1' if lpmode else '0') + val_file.close() + return True + except IOError: + val_file.close() + return False def set_power_override(self, power_override, power_set): """ @@ -1420,7 +1730,7 @@ def get_name(self): string: The name of the device """ - name='port'+str(self.index) + name='port'+str(self.index + 1) return name def get_model(self): @@ -1441,3 +1751,40 @@ def get_serial(self): transceiver_dom_info_dict = self.get_transceiver_info() return transceiver_dom_info_dict.get("serial", "N/A") + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return self.get_presence() and not self.get_reset_status() + + def get_position_in_parent(self): + """ + Returns: + Temp return 0 + """ + return 0 + + def is_replaceable(self): + """ + Retrieves if replaceable + Returns: + A boolean value, True if replaceable + """ + return True + + def get_error_description(self): + """ + Get error description + + Args: + error_code: The error code returned by _get_error_code + + Returns: + The error description + """ + if self.get_presence(): + return self.SFP_STATUS_OK + else: + return self.SFP_STATUS_UNPLUGGED diff --git a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/thermal.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/thermal.py old mode 100644 new mode 100755 similarity index 61% rename from device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/thermal.py rename to platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/thermal.py index 942e6b7be347..73228ce8f0ac --- a/device/wistron/x86_64-wistron_6512_32r-r0/sonic_platform/thermal.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/thermal.py @@ -15,7 +15,6 @@ except ImportError as e: raise ImportError(str(e) + "- required module not found") - class Thermal(ThermalBase): """Platform-specific Thermal class""" @@ -42,6 +41,8 @@ def __init__(self, thermal_index): self.THERMAL_NAME_LIST.append("UCPUB") self.THERMAL_NAME_LIST.append("UFANB") ThermalBase.__init__(self) + self.minimum_thermal = self.get_temperature() + self.maximum_thermal = self.get_temperature() def __read_txt_file(self, file_path): try: @@ -50,13 +51,24 @@ def __read_txt_file(self, file_path): return data.strip() except IOError: pass - return "" + return None def __get_temp(self, temp_file): temp_file_path = os.path.join(self.SYSFS_THERMAL_DIR[self.index], temp_file) raw_temp = self.__read_txt_file(temp_file_path) - temp = float(raw_temp)/1000 - return "{:.3f}".format(temp) + if raw_temp is not None: + return float(raw_temp)/1000 + else: + return 0.0 + + def __set_threshold(self, file_name, temperature): + temp_file_path = os.path.join(self.SYSFS_THERMAL_DIR[self.index], file_name) + try: + with open(temp_file_path, 'w') as fd: + fd.write(str(temperature)) + return True + except IOError: + return False def get_temperature(self): """ @@ -74,7 +86,8 @@ def get_low_threshold(self): :return: A float number, the low threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - return int(3) + # work temperatur is 0~40, hyst is 2 + return 2.0 def get_low_critical_threshold(self): """ @@ -82,7 +95,8 @@ def get_low_critical_threshold(self): :return: A float number, the low critical threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - return int(0) + # work temperatur is 0~40 + return 0.0 def get_high_threshold(self): """ @@ -120,7 +134,7 @@ def get_presence(self): bool: True if PSU is present, False if not """ temp_file = "temp1_input" - temp_file_path = os.path.join(self.hwmon_path, temp_file) + temp_file_path = os.path.join(self.SYSFS_THERMAL_DIR[self.index], temp_file) return os.path.isfile(temp_file_path) def get_status(self): @@ -134,3 +148,63 @@ def get_status(self): return True + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return "None" + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return "None" + + def is_replaceable(self): + """ + Retrieves whether thermal module is replaceable + Returns: + A boolean value, True if replaceable, False if not + """ + return False + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return self.index + 1 + + def get_minimum_recorded(self): + """ + Retrieves the minimum recorded temperature of thermal + Returns: + A float number, the minimum recorded temperature of thermal in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + tmp = self.get_temperature() + if tmp < self.minimum_thermal: + self.minimum_thermal = tmp + return self.minimum_thermal + + def get_maximum_recorded(self): + """ + Retrieves the maximum recorded temperature of thermal + Returns: + A float number, the maximum recorded temperature of thermal in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + tmp = self.get_temperature() + if tmp > self.maximum_thermal: + self.maximum_thermal = tmp + return self.maximum_thermal + diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/watchdog.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/watchdog.py new file mode 100755 index 000000000000..fb7987bdd682 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/sonic_platform/watchdog.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python + +######################################################################## +# +# Abstract base class for implementing a platform-specific class with +# which to interact with a hardware watchdog module in SONiC +# +######################################################################## + +try: + import subprocess + from sonic_platform_base.watchdog_base import WatchdogBase + from shlex import split + from collections import namedtuple + from functools import reduce +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +proc_output = namedtuple('proc_output', 'stdout stderr') + +WDT_COMMON_ERROR = -1 + +IPMI_WDT_EN_KICK_CMD = ["ipmitool", "mc", "watchdog", "reset"] +IPMI_WDT_OFF_CMD = ["ipmitool", "mc", "watchdog", "off"] +IPMI_WDT_SET_TIMEOUT_CMD = ["ipmitool", "raw", "0x6", "0x24", "0x4", "0x0", "0x0", "0x0"] +#IPMI_WDT_GET_TIMEOUT_CMD = "ipmitool mc watchdog get | grep Present | awk '{print $3}'" +#IPMI_WDT_GET_STATUS_CMD = "ipmitool mc watchdog get | grep 'Timer Is' | awk '{printf $4}'" + +class Watchdog(WatchdogBase): + """ + Abstract base class for interfacing with a hardware watchdog module + """ + + def __init__(self): + # Set default value + self.armed = self._get_status() + self.timeout = self._gettimeout() + + def pipeline(self, starter_command, *commands): + if not commands: + try: + starter_command, *commands = starter_command.split('|') + except AttributeError: + pass + starter_command = self._parse(starter_command) + starter = subprocess.Popen(starter_command, stdout=subprocess.PIPE) + last_proc = reduce(self._create_pipe, map(self._parse, commands), starter) + return proc_output(*last_proc.communicate()) + + def _create_pipe(self, previous, command): + proc = subprocess.Popen(command, stdin=previous.stdout, stdout=subprocess.PIPE) + previous.stdout.close() + return proc + + def _parse(self, cmd): + try: + return split(cmd) + except Exception: + return cmd + + def _get_status(self): + #IPMI_WDT_GET_STATUS_CMD + out, err = self.pipeline("ipmitool mc watchdog get", "grep 'Timer Is'", "awk '{print $4}'") + status_str = out.decode().rstrip('\n') + + if "Running" in status_str: + return True + + return False + + def _enable(self): + """ + Turn on the watchdog timer + """ + p = subprocess.Popen(IPMI_WDT_EN_KICK_CMD, stdout=subprocess.PIPE) + p.communicate() + return 0 + + def _disable(self): + """ + Turn off the watchdog timer + """ + p = subprocess.Popen(IPMI_WDT_OFF_CMD, stdout=subprocess.PIPE) + p.communicate() + return 0 + + def _keepalive(self): + """ + Keep alive watchdog timer + """ + p = subprocess.Popen(IPMI_WDT_EN_KICK_CMD, stdout=subprocess.PIPE) + p.communicate() + return 0 + + def _settimeout(self, seconds): + """ + Set watchdog timer timeout + @param seconds - timeout in seconds + @return is the actual set timeout + """ + ipmi_timeout = seconds * 10; + cmd = ["ipmitool", "raw", "0x6", "0x24", "0x4", "0x0", "0x0", "0x0"] + cmd.append(str(ipmi_timeout % 256)) + cmd.append(str(int(ipmi_timeout / 256))) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE) + p.communicate() + + return seconds + + def _gettimeout(self): + #IPMI_WDT_GET_TIMEOUT_CMD + out, err = self.pipeline("ipmitool mc watchdog get", "grep Present", "awk '{print $3}'") + return int(out.decode().rstrip('\n'), 10) + + def arm(self, seconds): + """ + Arm the hardware watchdog with a timeout of seconds. + If the watchdog is currently armed, calling this function will + simply reset the timer to the provided value. If the underlying + hardware does not support the value provided in , this + method should arm the watchdog with the *next greater* available + value. + Returns: + An integer specifying the *actual* number of seconds the watchdog + was armed with. On failure returns -1. + """ + ret = WDT_COMMON_ERROR + + if seconds < 0 or seconds > 500: + return ret + + try: + if self.timeout != seconds: + self.timeout = self._settimeout(seconds) + + if self.armed: + self._keepalive() + else: + self._enable() + + ret = self.timeout + except IOError as e: + print("Error: unable to enable wdt due to : {}".format(e)) + + return ret + + def disarm(self): + """ + Disarm the hardware watchdog + Returns: + A boolean, True if watchdog is disarmed successfully, False if not + """ + disarmed = False + try: + self._disable() + self.armed = False + disarmed = True + except IOError as e: + print("Error: unable to disable wdt due to : {}".format(e)) + return disarmed + + def is_armed(self): + """ + Retrieves the armed state of the hardware watchdog. + Returns: + A boolean, True if watchdog is armed, False if not + """ + return self.armed + + def get_remaining_time(self): + """ + If the watchdog is armed, retrieve the number of seconds remaining on + the watchdog timer + Returns: + An integer specifying the number of seconds remaining on thei + watchdog timer. If the watchdog is not armed, returns -1. + """ + + timeleft = WDT_COMMON_ERROR + + if self.armed: + return self._gettimeout() + + return timeleft diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_firmware_version b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_firmware_version new file mode 100755 index 000000000000..1fe70c7f4310 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_firmware_version @@ -0,0 +1,17 @@ +#!/bin/bash +cpld1_ver=$(ipmitool raw 0x30 0x25 0x0 0xc 0x1 0x0 2>>/dev/null | awk '{printf $1}') +cpld2_ver=$(ipmitool raw 0x30 0x25 0x0 0xe 0x1 0x0 2>>/dev/null | awk '{printf $1}') +fpga_ver=$(ipmitool raw 0x30 0x25 0x0 0x60 0x1 0x0 2>>/dev/null | awk '{printf $1}') +cpld1_ver=$( printf "%d" 0x$cpld1_ver ) +cpld2_ver=$( printf "%d" 0x$cpld2_ver ) +fpga_ver=$( printf "%d" 0x$fpga_ver ) +cpld1_ver_path="/sys/bus/i2c/devices/0-0006/version" +cpld2_ver_path="/sys/bus/i2c/devices/0-0007/version" +fpga_ver_path="/sys/bus/i2c/devices/0-0030/version" + +echo $cpld1_ver > $cpld1_ver_path +echo $cpld2_ver > $cpld2_ver_path +echo $fpga_ver > $fpga_ver_path + +exit 0 + diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_sync b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_sync old mode 100644 new mode 100755 index 9c357e7ac7e8..071339cac9d3 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_sync +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_sync @@ -3,5 +3,7 @@ /usr/local/bin/sonic-led-monitor & /usr/local/bin/sonic-qsfp-monitor & /usr/local/bin/sonic-psu-monitor & +/usr/local/bin/sonic-qsfp-eeprom-monitor & +/usr/local/bin/sonic-send-temp-to-bmc & exit 0 diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_syseeprom b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_syseeprom old mode 100644 new mode 100755 index 2db0a921cb9a..4a19db909864 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_syseeprom +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/platform_syseeprom @@ -1,10 +1,15 @@ #!/bin/bash -eeprom_part1=$(ipmitool raw 0x30 0x25 0x00 0xaa 0x80 0x0 2>>/dev/null) -eeprom_part2=$(ipmitool raw 0x30 0x25 0x00 0xaa 0x80 0x80 2>>/dev/null) -eeprom1_full=$eeprom_part1$eeprom_part2 -eeprom1_full=$(echo $eeprom1_full | sed 's/[[:space:]]//g') -eeprom1_path="/sys/bus/i2c/devices/0-0055/eeprom" -eeprom1_full=$(echo $eeprom1_full | sed -e 's/ //g') -echo $eeprom1_full > $eeprom1_path +board_ver=$(i2cget -f -y 0 0x55 0x0 1>/dev/null 2>/dev/null; echo $?) + +if [ $board_ver != 0 ]; then + eeprom_part1=$(ipmitool raw 0x30 0x25 0x00 0xaa 0x80 0x0 2>>/dev/null) + eeprom_part2=$(ipmitool raw 0x30 0x25 0x00 0xaa 0x80 0x80 2>>/dev/null) + eeprom1_full=$eeprom_part1$eeprom_part2 + eeprom1_full=$(echo $eeprom1_full | sed 's/[[:space:]]//g') + eeprom1_path="/sys/bus/i2c/devices/0-0055/eeprom" + eeprom1_full=$(echo $eeprom1_full | sed -e 's/ //g') + echo $eeprom1_full > $eeprom1_path +fi + exit 0 diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-fanthrml-monitor b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-fanthrml-monitor old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-led-monitor b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-led-monitor old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-psu-monitor b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-psu-monitor old mode 100644 new mode 100755 index 180456f6a8aa..793e022823cb --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-psu-monitor +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-psu-monitor @@ -44,13 +44,8 @@ add_byte(){ # string_read [start byte] [length] string_read(){ value="" - len=$(echo $val | awk '{print $'"$1"'}') - byte_hex_test $len - if [ $? -eq 0 ]; then - return 0 - fi - len=$(printf "%d" 0x$len) - s=$(($1 + 1)) + len=$2 + s=$(($1)) e=$(($1 + len - 1)) for i in $(seq $s $e) do @@ -189,6 +184,17 @@ get_PSU_information() if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-0059/fault fi + + byte_read 41 + if [ $? -eq 1 ];then + echo $value > /sys/bus/i2c/devices/0-005a/pwm + fi + + byte_read 42 + if [ $? -eq 1 ];then + echo $value > /sys/bus/i2c/devices/0-0059/pwm + fi + fi #____________________________________________________________________________ @@ -196,35 +202,46 @@ get_PSU_information() val=$(ipmitool raw 0x30 0x8a 2>>/dev/null) if [ -e /sys/bus/i2c/devices/0-005a/vendor ] && [ -e /sys/bus/i2c/devices/0-0059/vendor ];then #PSU1 mfr_ID - string_read 1 + string_read 1 20 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-005a/vendor fi #PSU2 mfr_ID - string_read 21 + string_read 21 20 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-0059/vendor fi #PSU1 mfr_model - string_read 41 + string_read 41 20 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-005a/model fi #PSU2 mfr_model - string_read 61 + string_read 61 20 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-0059/model fi #PSU1 mfr_serial - string_read 81 + string_read 81 30 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-005a/sn fi - #PSU1 mfr_serial - string_read 111 + #PSU2 mfr_serial + string_read 111 30 if [ $? -eq 1 ];then echo $value > /sys/bus/i2c/devices/0-0059/sn fi + + #PSU1 mfr_rev + string_read 141 2 + if [ $? -eq 1 ];then + echo $value > /sys/bus/i2c/devices/0-005a/rev + fi + #PSU2 mfr_serial + string_read 143 2 + if [ $? -eq 1 ];then + echo $value > /sys/bus/i2c/devices/0-0059/rev + fi fi } diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-eeprom-monitor b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-eeprom-monitor new file mode 100755 index 000000000000..a7213e3a9260 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-eeprom-monitor @@ -0,0 +1,596 @@ +#!/bin/bash + +debug_flag=0 +port_map=('00' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '1a' '1b' '1c' '1d' '1e' '1f' '20' '21' '22' '23' '24' '25' '26' '27' '28' '29' '2a' '2b' '2c' '2d' '2e' '2f') + +port_init=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + +port_sfp_type=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + +board_ver=$(ipmitool raw 0x30 0x25 0x1 0xe0 0x1 0x0 1>/dev/null 2>/dev/null; echo $?) #error will get 1 means EVT, otherwise DVT + + +byte_hex_test() +{ + if ! [[ $1 =~ ^[0-9A-Fa-f]{2}$ ]] ; then + return 0 + else + return 1 + fi +} + +pmon_status_check() +{ + output=$( docker inspect -f '{{.State.Status}}' pmon 2>/dev/null) + if [ $? -eq 0 ]; then + if [ $output == 'running' ]; then + return 1 + else + return 0 + fi + else + return 0 + fi +} + +#$1=mux $2=channel $3=dev_addr, $4=reg, $5=val +bmc_write() +{ + if [ $board_ver == 1 ]; then + addr_8b=$(echo $(($3)) | awk '{printf $1}') + addr_8b=`expr $addr_8b \\* 2` + ipmitool raw 0x30 0x85 $1 $2 $addr_8b 2 $4 $5 1>>/dev/null 2>>/dev/null + sleep 1 + ipmitool raw 0x30 0x87 1>>/dev/null 2>>/dev/null + else + pmon_status_check + if [ $? -eq 1 ]; then + while [ $(docker exec pmon bash -c 'if [ -e /tmp/pause_eeprom_polling ]; then echo 1; else echo 0; fi') == '1' ]; do + sleep 0.1; + done + fi + mux_addr=$(((0x70 + $1 - 2) * 2)) + chan=$((1 << $2)) + addr_8b=$(echo $(($3)) | awk '{printf $1}') + addr_8b=`expr $addr_8b \\* 2` + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 $chan 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x25 0x1 $addr_8b 0x0 $4 $5 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + fi +} + +#$1=mux $2=channel $3=dev_addr, $4=reg, $5=len +bmc_read() +{ + if [ $board_ver == 1 ]; then + addr_8b=$(echo $(($3)) | awk '{printf $1}') + addr_8b=`expr $addr_8b \\* 2` + ipmitool raw 0x30 0x86 $1 $2 $addr_8b $5 $4 1>>/dev/null 2>>/dev/null + sleep 1 + val=$(ipmitool raw 0x30 0x87 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + return 1 + else + return 0 + fi + else + mux_addr=$(((0x70 + $1 - 2) * 2)) + chan=$((1 << $2)) + addr_8b=$(echo $(($3)) | awk '{printf $1}') + addr_8b=`expr $addr_8b \\* 2` + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 $chan 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 $addr_8b $5 $4 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + return 1 + else + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + return 0 + fi + fi +} + + +bmc_dump() +{ + err=0 + mux_addr=$(((0x70 + $1 - 2) * 2)) + chan=$((1 << $2)) + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 $chan 1>>/dev/null 2>>/dev/null + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x0 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x0 2>>/dev/null) + if [ $? -eq 0 ];then + result1=$val + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result2=$val + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x1 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result3=$val + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x2 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result4=$val + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x3 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result5=$val + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x10 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result6=$val + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x11 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x80 0x80 2>>/dev/null) + if [ $? -eq 0 ];then + result7=$val + else + err=1 + fi + + + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + + if [ $err -eq 0 ];then + return 1 + else + return 0 + fi +} + +bmc_update_dynamic() +{ + local port=$1 + i2cmux_dev=0 + i2cmux_dev=`expr $port / 8` + i2cmux_dev=`expr $i2cmux_dev + 2` + ch=`expr $port % 8` + + if [ ${port_sfp_type[$port]} -eq 17 ]; then + err=0 + mux_addr=$(((0x70 + $i2cmux_dev - 2) * 2)) + chan=$((1 << $ch)) + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 $chan 1>>/dev/null 2>>/dev/null + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x0 1>>/dev/null 2>>/dev/null + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x3 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/rx_los" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x4 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/tx_fault" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x56 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/disable" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x24 0x16 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + result=$(echo $result | sed 's/[[:space:]]//g') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/qsfp_dom_bulk" + result=$(echo $result | sed -e 's/ //g') + echo $result > $result_path + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + + if [ $err -eq 0 ];then + return 1 + else + return 0 + fi + + elif [ ${port_sfp_type[$port]} -eq 24 ]; then + err=0 + mux_addr=$(((0x70 + $i2cmux_dev - 2) * 2)) + chan=$((1 << $ch)) + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 $chan 1>>/dev/null 2>>/dev/null + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x0 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x2 0xe 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + result=$(echo $result | sed 's/[[:space:]]//g') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/tempe" + result=$(echo $result | sed -e 's/ //g') + echo $result > $result_path + else + err=1 + fi + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x2 0x10 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + result=$(echo $result | sed 's/[[:space:]]//g') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/volte" + result=$(echo $result | sed -e 's/ //g') + echo $result > $result_path + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x10 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x82 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/disable" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 0xa0 0x0 0x7f 0x11 1>>/dev/null 2>>/dev/null + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x87 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/tx_fault" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x1 0x93 2>>/dev/null) + if [ $? -eq 0 ];then + result=$(echo $val | awk '{printf $1}') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/rx_los" + result=$( printf "%d" 0x$result ) + echo $result > $result_path + else + err=1 + fi + + val=$(ipmitool raw 0x30 0x25 0x1 0xa0 0x30 0x9a 2>>/dev/null) + if [ $? -eq 0 ];then + result=$val + result=$(echo $result | sed 's/[[:space:]]//g') + result_path="/sys/bus/i2c/devices/0-00"${port_map[$((port + 1))]}"/qsfp_dd_chan_mon" + result=$(echo $result | sed -e 's/ //g') + echo $result > $result_path + else + err=1 + fi + + ipmitool raw 0x30 0x25 0x1 $mux_addr 0x0 0x0 1>>/dev/null 2>>/dev/null + + if [ $err -eq 0 ];then + return 1 + else + return 0 + fi + fi +} + +#$1=port_no +bmc_qsfp_eeprom_read() +{ + local port=$1 + local eeprom_part1 + local eeprom_part2 + local eeprom_part3 + local eeprom_part4 + local eeprom_part5 + local eeprom_part6 + local eeprom_part7 + local eeprom1_full + local eeprom2_full + local eeprom3_full + + port=`expr $port - 1` + i2cmux_dev=0 + i2cmux_dev=`expr $port / 8` + i2cmux_dev=`expr $i2cmux_dev + 2` + ch=`expr $port % 8` + if [ ${port_init[$port]} -eq 0 ]; then + if [ $board_ver == 1 ]; then + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x00 + bmc_read $i2cmux_dev $ch 0x50 0 128 + if [ $? -eq 1 ];then + eeprom_part1=$result + else + return 1 + fi + + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part2=$result + else + return 1 + fi + + #QSFP-DD page1 + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x01 + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part3=$result + else + return 1 + fi + + #QSFP-DD page2 + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x2 + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part4=$result + else + return 1 + fi + + #QSFP-DD page3 + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x3 + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part5=$result + else + return 1 + fi + + #QSFP-DD page10 + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x10 + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part6=$result + else + return 1 + fi + + #QSFP-DD page11 + bmc_write $i2cmux_dev $ch 0x50 0x7f 0x11 + bmc_read $i2cmux_dev $ch 0x50 128 128 + if [ $? -eq 1 ];then + eeprom_part7=$result + else + return 1 + fi + else + #pmon_status_check + #if [ $? -eq 1 ]; then + # while [ $(docker exec pmon bash -c 'if [ -e /tmp/pause_eeprom_polling ]; then echo 1; else echo 0; fi') == '1' ]; do + # sleep 0.1; + # done + #fi + + bmc_dump $i2cmux_dev $ch + if [ $? -eq 1 ];then + eeprom_part1=$result1 + eeprom_part2=$result2 + eeprom_part3=$result3 + eeprom_part4=$result4 + eeprom_part5=$result5 + eeprom_part6=$result6 + eeprom_part7=$result7 + else + return 1 + fi + fi + fi + + if [ ${port_init[$port]} -eq 1 ]; then + + eeprom1_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom1" + check=$(od -An -tx1 -w1 -v $eeprom1_path | head -n 1) + if [ $check != '00' ] && [ $check != 'ff' ] ; then + if [ -e /tmp/plugin_module_event ]; then + return + fi + + bmc_update_dynamic $port + if [ $? -eq 0 ];then + return 1 + fi + else + port_init[$port]=0 + fi + fi + + + if [ ${port_init[$port]} -eq 0 ]; then + sfp_type=$(echo $eeprom_part1 | awk '{printf $1}') + byte_hex_test $sfp_type + if [ $? -eq 0 ]; then + return + fi + sfp_type=$( printf "%d" 0x$sfp_type ) + port_sfp_type[$((i - 1))]=$sfp_type + #get temperature + if [ $sfp_type -eq 24 ];then + temp=$(echo $eeprom_part1 | awk '{printf $15}') + if [ $temp != "" ];then + temp=$( printf "%d" 0x$temp ) + temp_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/temp" + echo $temp > $temp_path + fi + elif [ $sfp_type -eq 17 ];then + temp=$(echo $eeprom_part1 | awk '{printf $23}') + if [ $temp != "" ];then + temp=$( printf "%d" 0x$temp ) + temp_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/temp" + echo $temp > $temp_path + fi + fi + + #get lp_mode + lpmod_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/lp_mode" + if [ $sfp_type -eq 24 ];then + lpmod=$(echo $eeprom_part1 | awk '{printf $27}') + if [ $lpmod != "" ];then + state=$((lpmod&0x10)) + if [ $state -eq 16 ];then + echo 1 > $lpmod_path + else + echo 0 > $lpmod_path + fi + fi + elif [ $sfp_type -eq 17 ];then + lpmod=$(echo $eeprom_part1 | awk '{printf $93}') + if [ $lpmod != "" ];then + state=$((lpmod&0x02)) + if [ $state -eq 2 ];then + echo 1 > $lpmod_path + else + echo 0 > $lpmod_path + fi + fi + else + lpmod="" + fi + + eeprom1_full=$eeprom_part1$eeprom_part2 + eeprom1_full=$(echo $eeprom1_full | sed 's/[[:space:]]//g') + eeprom2_full=$eeprom_part3$eeprom_part4 + eeprom2_full=$(echo $eeprom2_full | sed 's/[[:space:]]//g') + eeprom3_full=$eeprom_part5$eeprom_part6$eeprom_part7 + eeprom3_full=$(echo $eeprom3_full | sed 's/[[:space:]]//g') + + if [ $debug_flag -eq 0 ];then + eeprom1_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom1" + eeprom1_full=$(echo $eeprom1_full | sed -e 's/ //g') + echo $eeprom1_full > $eeprom1_path + eeprom2_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom2" + eeprom2_full=$(echo $eeprom2_full | sed -e 's/ //g') + echo $eeprom2_full > $eeprom2_path + eeprom3_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom3" + eeprom3_full=$(echo $eeprom3_full | sed -e 's/ //g') + echo $eeprom3_full > $eeprom3_path + else + printf "\nPort %d EEPROM:" $1 + printf "\n-----------------------------------------------\n" + for i in $(seq 1 256); + do + printf "%s " ${eeprom1_full:0:2} + eeprom1_full=$(echo $eeprom1_full | sed 's/^..//') + + val=`expr $i % 16` + if [ $val -eq 0 ];then + printf "\n" + fi + done + printf "\n-----------------------------------------------\n" + fi + + if [ $board_ver == 0 ]; then + port_init[$port]=1 + if [ $port -lt 16 ];then + cpld_path="/sys/bus/i2c/devices/0-0006/" + else + cpld_path="/sys/bus/i2c/devices/0-0007/" + fi + echo 1 > $cpld_path"port"$((port + 1))"_data_rdy" + fi + fi + + return 0 +} + +TRANSCEIVER_DATA_READ() +{ + first_detect=0 + loop_after_plugin=0 + + while true + do + if [ -e /sys/bus/i2c/devices/0-0006/port1_present ] && [ -e /sys/bus/i2c/devices/0-0007/port32_present ] && [ -e /sys/bus/i2c/devices/0-002f/eeprom1 ];then + if [ $first_detect == 0 ]; then + ipmitool raw 0x30 0x25 0x1 0xe0 0x0 0x0 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x25 0x1 0xe2 0x0 0x0 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x25 0x1 0xe4 0x0 0x0 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x25 0x1 0xe6 0x0 0x0 1>>/dev/null 2>>/dev/null + fi + for i in $(seq 1 32); + do + if [ $i -le 16 ];then + cpld_path="/sys/bus/i2c/devices/0-0006/" + else + cpld_path="/sys/bus/i2c/devices/0-0007/" + fi + + pre=$(cat $cpld_path"port"$i"_present") + if [ $pre == 1 ]; then + bmc_qsfp_eeprom_read $i + if [ $first_detect == 0 ]; then + first_detect=1 + fi + else + port_init[$((i - 1))]=0 + port_sfp_type[$((i - 1))]=0 + fi + done + + if [ $first_detect == 1 ]; then + touch /tmp/eeprom_init_done + fi + + if [ -e /tmp/plugin_module_event ]; then + loop_after_plugin=$((loop_after_plugin + 1)) + + if [ $loop_after_plugin -gt 2 ]; then + rm /tmp/plugin_module_event + loop_after_plugin=0 + fi + fi + + pmon_status_check + if [ $? -eq 1 ]; then + if [ $first_detect == 1 ]; then + docker exec pmon bash -c 'echo "" > /tmp/eeprom_init_done' + fi + else + first_detect=0 + fi + + sleep 1; + fi + done +} + +TRANSCEIVER_DATA_READ diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-monitor b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-monitor old mode 100644 new mode 100755 index 645b8528851f..f2eb928346d7 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-monitor +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-qsfp-monitor @@ -1,7 +1,7 @@ #!/bin/bash -debug_flag=0 -port_map=('00' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '1a' '1b' '1c' '1d' '1e' '1f' '20' '21' '22' '23' '24' '25' '26' '27' '28' '29' '2a' '2b' '2c' '2d' '2e' '2f') +board_ver=$(ipmitool raw 0x30 0x25 0x1 0xe0 0x1 0x0 1>/dev/null 2>/dev/null; echo $?) #error will get 1 means EVT, otherwise DVT + port_1_8_presence=0 port_9_16_presence=0 port_17_24_presence=0 @@ -10,6 +10,14 @@ port_1_8_reset=0 port_9_16_reset=0 port_17_24_reset=0 port_25_32_reset=0 +port_1_8_lpmode=0 +port_9_16_lpmode=0 +port_17_24_lpmode=0 +port_25_32_lpmode=0 +port_1_8_modsel=0 +port_9_16_modsel=0 +port_17_24_modsel=0 +port_25_32_modsel=0 result=0 pre_port_1_8_reset=256 @@ -25,6 +33,8 @@ pre_port_9_16_modsel=256 pre_port_17_24_modsel=256 pre_port_25_32_modsel=256 +port_pre_present=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + byte_hex_test() { if ! [[ $1 =~ ^[0-9A-Fa-f]{2}$ ]] ; then @@ -34,405 +44,517 @@ byte_hex_test() fi } -#$1=mux $2=channel $3=dev_addr, $4=reg, $5=val -bmc_write() -{ - addr_8b=$(echo $(($3)) | awk '{printf $1}') - addr_8b=`expr $addr_8b \\* 2` - ipmitool raw 0x30 0x85 $1 $2 $addr_8b 2 $4 $5 1>>/dev/null 2>>/dev/null - sleep 1 - ipmitool raw 0x30 0x87 1>>/dev/null 2>>/dev/null -} - -#$1=mux $2=channel $3=dev_addr, $4=reg, $5=len -bmc_read() +bmc_read_low_speed_signal_status() { - addr_8b=$(echo $(($3)) | awk '{printf $1}') - addr_8b=`expr $addr_8b \\* 2` - ipmitool raw 0x30 0x86 $1 $2 $addr_8b $5 $4 1>>/dev/null 2>>/dev/null - sleep 1 - val=$(ipmitool raw 0x30 0x87 2>>/dev/null) - if [ $? -eq 0 ];then - result=$val - return 1 - else + val=$(ipmitool raw 0x30 0x8d 2>/dev/null); + if [ $? -ne 0 ];then return 0 fi -} -bmc_qsfp_lpmode_write() -{ + port_1_8_presence=$(echo $val | awk '{printf $1}') + byte_hex_test $port_1_8_presence + if [ $? -eq 0 ]; then + return 0 + fi + port_1_8_presence=$( printf "%d" 0x$port_1_8_presence ) - cpld_path="/sys/bus/i2c/devices/0-0006/" - val=0 - for i in $(seq 1 8); - do - lpmode_path=$cpld_path"port"$i"_lpmode" - lpmode_input=$(cat $lpmode_path | awk '{printf $1}') - val=$((val | (lpmode_input << ($i - 1)))) - done - if [ $val -ne $pre_port_1_8_lpmode ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x50 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_1_8_lpmode=$val + port_9_16_presence=$(echo $val | awk '{printf $2}') + byte_hex_test $port_9_16_presence + if [ $? -eq 0 ]; then + return 0 fi - val=0 - for i in $(seq 9 16); - do - lpmode_path=$cpld_path"port"$i"_lpmode" - lpmode_input=$(cat $lpmode_path | awk '{printf $1}') - val=$((val | (lpmode_input << ($i - 9)))) - done + port_9_16_presence=$( printf "%d" 0x$port_9_16_presence ) - if [ $val -ne $pre_port_9_16_lpmode ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x51 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_9_16_lpmode=$val + port_17_24_presence=$(echo $val | awk '{printf $9}') + byte_hex_test $port_17_24_presence + if [ $? -eq 0 ]; then + return 0 fi + port_17_24_presence=$( printf "%d" 0x$port_17_24_presence ) - cpld_path="/sys/bus/i2c/devices/0-0007/" - val=0 - for i in $(seq 17 24); - do - lpmode_path=$cpld_path"port"$i"_lpmode" - lpmode_input=$(cat $lpmode_path | awk '{printf $1}') - val=$((val | (lpmode_input << ($i - 17)))) - done + port_25_32_presence=$(echo $val | awk '{printf $10}') + byte_hex_test $port_25_32_presence + if [ $? -eq 0 ]; then + return 0 + fi + port_25_32_presence=$( printf "%d" 0x$port_25_32_presence ) - if [ $val -ne $pre_port_17_24_lpmode ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x50 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_17_24_lpmode=$val + port_1_8_reset=$(echo $val | awk '{printf $3}') + byte_hex_test $port_1_8_reset + if [ $? -eq 0 ]; then + return 0 fi - val=0 - for i in $(seq 25 32); - do - lpmode_path=$cpld_path"port"$i"_lpmode" - lpmode_input=$(cat $lpmode_path | awk '{printf $1}') - val=$((val | (lpmode_input << ($i - 25)))) - done + port_1_8_reset=$( printf "%d" 0x$port_1_8_reset ) - if [ $val -ne $pre_port_25_32_lpmode ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x51 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_25_32_lpmode=$val + port_9_16_reset=$(echo $val | awk '{printf $4}') + byte_hex_test $port_9_16_reset + if [ $? -eq 0 ]; then + return 0 fi + port_9_16_reset=$( printf "%d" 0x$port_9_16_reset ) + port_17_24_reset=$(echo $val | awk '{printf $11}') + byte_hex_test $port_17_24_reset + if [ $? -eq 0 ]; then + return 0 + fi + port_17_24_reset=$( printf "%d" 0x$port_17_24_reset ) - return 0 -} + port_25_32_reset=$(echo $val | awk '{printf $12}') + byte_hex_test $port_25_32_reset + if [ $? -eq 0 ]; then + return 0 + fi + port_25_32_reset=$( printf "%d" 0x$port_25_32_reset ) -bmc_qsfp_modsel_write() -{ + port_1_8_lpmode=$(echo $val | awk '{printf $5}') + byte_hex_test $port_1_8_lpmode + if [ $? -eq 0 ]; then + return 0 + fi + port_1_8_lpmode=$( printf "%d" 0x$port_1_8_lpmode ) - cpld_path="/sys/bus/i2c/devices/0-0006/" - val=0 - for i in $(seq 1 8); - do - modsel_path=$cpld_path"port"$i"_modsel" - modsel_input=$(cat $modsel_path | awk '{printf $1}') - val=$((val | (modsel_input << ($i - 1)))) - done + port_9_16_lpmode=$(echo $val | awk '{printf $6}') + byte_hex_test $port_9_16_lpmode + if [ $? -eq 0 ]; then + return 0 + fi + port_9_16_lpmode=$( printf "%d" 0x$port_9_16_lpmode ) - val=$((0xff - val)) - if [ $val -ne $pre_port_1_8_modsel ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x60 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_1_8_modsel=$val + port_17_24_lpmode=$(echo $val | awk '{printf $13}') + byte_hex_test $port_17_24_lpmode + if [ $? -eq 0 ]; then + return 0 fi - val=0 - for i in $(seq 9 16); - do - modsel_path=$cpld_path"port"$i"_modsel" - modsel_input=$(cat $modsel_path | awk '{printf $1}') - val=$((val | (modsel_input << ($i - 9)))) - done + port_17_24_lpmode=$( printf "%d" 0x$port_17_24_lpmode ) - val=$((0xff - val)) - if [ $val -ne $pre_port_9_16_modsel ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x61 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_9_16_modsel=$val + port_25_32_lpmode=$(echo $val | awk '{printf $14}') + byte_hex_test $port_25_32_lpmode + if [ $? -eq 0 ]; then + return 0 fi + port_25_32_lpmode=$( printf "%d" 0x$port_25_32_lpmode ) - cpld_path="/sys/bus/i2c/devices/0-0007/" - val=0 - for i in $(seq 17 24); - do - modsel_path=$cpld_path"port"$i"_modsel" - modsel_input=$(cat $modsel_path | awk '{printf $1}') - val=$((val | (modsel_input << ($i - 17)))) - done + port_1_8_modsel=$(echo $val | awk '{printf $7}') + byte_hex_test $port_1_8_modsel + if [ $? -eq 0 ]; then + return 0 + fi + port_1_8_modsel=$( printf "%d" 0x$port_1_8_modsel ) - val=$((0xff - val)) - if [ $val -ne $pre_port_17_24_modsel ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x60 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_17_24_modsel=$val + port_9_16_modsel=$(echo $val | awk '{printf $8}') + byte_hex_test $port_9_16_modsel + if [ $? -eq 0 ]; then + return 0 fi - val=0 - for i in $(seq 25 32); - do - modsel_path=$cpld_path"port"$i"_modsel" - modsel_input=$(cat $modsel_path | awk '{printf $1}') - val=$((val | (modsel_input << ($i - 25)))) - done + port_9_16_modsel=$( printf "%d" 0x$port_9_16_modsel ) - val=$((0xff - val)) - if [ $val -ne $pre_port_25_32_modsel ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x61 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_25_32_modsel=$val + port_17_24_modsel=$(echo $val | awk '{printf $15}') + byte_hex_test $port_17_24_modsel + if [ $? -eq 0 ]; then + return 0 fi + port_17_24_modsel=$( printf "%d" 0x$port_17_24_modsel ) + port_25_32_modsel=$(echo $val | awk '{printf $16}') + byte_hex_test $port_25_32_modsel + if [ $? -eq 0 ]; then + return 0 + fi + port_25_32_modsel=$( printf "%d" 0x$port_25_32_modsel ) - return 0 + return 1 } -bmc_qsfp_presence_read() +bmc_qsfp_lpmode_write() { - a=0 - tmp1=$(ipmitool raw 0x30 0x25 0x00 0x0c 0x1 0x30 2>>/dev/null) - a=$((a+$?)) - tmp1=$(echo $tmp1 | awk '{printf $1}') - sleep 0.05 - tmp2=$(ipmitool raw 0x30 0x25 0x00 0x0c 0x1 0x31 2>>/dev/null) - a=$((a+$?)) - tmp2=$(echo $tmp2 | awk '{printf $1}') - sleep 0.05 - tmp3=$(ipmitool raw 0x30 0x25 0x00 0x0e 0x1 0x30 2>>/dev/null) - a=$((a+$?)) - tmp3=$(echo $tmp3 | awk '{printf $1}') - sleep 0.05 - tmp4=$(ipmitool raw 0x30 0x25 0x00 0x0e 0x1 0x31 2>>/dev/null) - a=$((a+$?)) - tmp4=$(echo $tmp4 | awk '{printf $1}') - sleep 0.05 - if [ $a -eq 0 ];then - byte_hex_test $tmp1 - if [ $? -eq 0 ]; then - return 0 + + if [ $board_ver == 1 ]; then + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 1)))) + done + if [ $val -ne $pre_port_1_8_lpmode ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x50 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_1_8_lpmode=$val fi - port_1_8_presence=$( printf "%d" 0x$tmp1 ) - byte_hex_test $tmp2 - if [ $? -eq 0 ]; then - return 0 + val=0 + for i in $(seq 9 16); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 9)))) + done + + if [ $val -ne $pre_port_9_16_lpmode ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x51 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_9_16_lpmode=$val fi - port_9_16_presence=$( printf "%d" 0x$tmp2 ) - byte_hex_test $tmp3 - if [ $? -eq 0 ]; then - return 0 + + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 17)))) + done + + if [ $val -ne $pre_port_17_24_lpmode ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x50 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_17_24_lpmode=$val fi - port_17_24_presence=$( printf "%d" 0x$tmp3 ) - byte_hex_test $tmp4 - if [ $? -eq 0 ]; then - return 0 + val=0 + for i in $(seq 25 32); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 25)))) + done + + if [ $val -ne $pre_port_25_32_lpmode ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x51 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_25_32_lpmode=$val fi - port_25_32_presence=$( printf "%d" 0x$tmp4 ) - return 1 + + else + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 1)))) + done + val2=0 + for i in $(seq 9 16); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val2=$((val2 | (lpmode_input << ($i - 9)))) + done + + if [ $val -ne $port_1_8_lpmode ] || [ $val2 -ne $port_9_16_lpmode ]; then + ipmitool raw 0x30 0x8c 0x0 0x1 $val $val2 1>>/dev/null 2>>/dev/null + fi + + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val=$((val | (lpmode_input << ($i - 17)))) + done + + val2=0 + for i in $(seq 25 32); + do + lpmode_path=$cpld_path"port"$i"_lpmode" + lpmode_input=$(cat $lpmode_path | awk '{printf $1}') + val2=$((val2 | (lpmode_input << ($i - 25)))) + done + + if [ $val -ne $port_17_24_lpmode ] || [ $val2 -ne $port_25_32_lpmode ]; then + ipmitool raw 0x30 0x8c 0x1 0x1 $val $val2 1>>/dev/null 2>>/dev/null + fi + fi return 0 } -bmc_qsfp_reset_write() +bmc_qsfp_modsel_write() { - cpld_path="/sys/bus/i2c/devices/0-0006/" - val=0 - for i in $(seq 1 8); - do - reset_path=$cpld_path"port"$i"_reset" - reset_input=$(cat $reset_path | awk '{printf $1}') - val=$((val | (reset_input << ($i - 1)))) - done + if [ $board_ver == 1 ]; then + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 1)))) + done - val=$((0xff - val)) - if [ $val -ne $pre_port_1_8_reset ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x20 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_1_8_reset=$val - fi - val=0 - for i in $(seq 9 16); - do - reset_path=$cpld_path"port"$i"_reset" - reset_input=$(cat $reset_path | awk '{printf $1}') - val=$((val | (reset_input << ($i - 9)))) - done + val=$((0xff - val)) + if [ $val -ne $pre_port_1_8_modsel ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x60 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_1_8_modsel=$val + fi + val=0 + for i in $(seq 9 16); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 9)))) + done - val=$((0xff - val)) - if [ $val -ne $pre_port_9_16_reset ]; then - ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x21 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_9_16_reset=$val - fi + val=$((0xff - val)) + if [ $val -ne $pre_port_9_16_modsel ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x61 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_9_16_modsel=$val + fi - cpld_path="/sys/bus/i2c/devices/0-0007/" - val=0 - for i in $(seq 17 24); - do - reset_path=$cpld_path"port"$i"_reset" - reset_input=$(cat $reset_path | awk '{printf $1}') - val=$((val | (reset_input << ($i - 17)))) - done + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 17)))) + done - val=$((0xff - val)) - if [ $val -ne $pre_port_17_24_reset ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x20 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_17_24_reset=$val - fi - val=0 - for i in $(seq 25 32); - do - reset_path=$cpld_path"port"$i"_reset" - reset_input=$(cat $reset_path | awk '{printf $1}') - val=$((val | (reset_input << ($i - 25)))) - done + val=$((0xff - val)) + if [ $val -ne $pre_port_17_24_modsel ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x60 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_17_24_modsel=$val + fi + val=0 + for i in $(seq 25 32); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 25)))) + done - val=$((0xff - val)) - if [ $val -ne $pre_port_25_32_reset ]; then - ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x21 $val 1>>/dev/null 2>>/dev/null - sleep 0.05 - pre_port_25_32_reset=$val - fi + val=$((0xff - val)) + if [ $val -ne $pre_port_25_32_modsel ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x61 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_25_32_modsel=$val + fi + else + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 1)))) + done + val=$((0xff - val)) + + val2=0 + for i in $(seq 9 16); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val2=$((val2 | (modsel_input << ($i - 9)))) + done + + val2=$((0xff - val2)) + if [ $val -ne $port_1_8_modsel ] || [ $val2 -ne $port_9_16_modsel ]; then + ipmitool raw 0x30 0x8c 0x0 0x2 $val $val2 1>>/dev/null 2>>/dev/null + fi + + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val=$((val | (modsel_input << ($i - 17)))) + done + + val=$((0xff - val)) + + val2=0 + for i in $(seq 25 32); + do + modsel_path=$cpld_path"port"$i"_modsel" + modsel_input=$(cat $modsel_path | awk '{printf $1}') + val2=$((val2 | (modsel_input << ($i - 25)))) + done + + val2=$((0xff - val2)) + if [ $val -ne $port_17_24_modsel ] || [ $val2 -ne $port_25_32_modsel ]; then + ipmitool raw 0x30 0x8c 0x1 0x2 $val $val2 1>>/dev/null 2>>/dev/null + fi + fi return 0 } -#$1=port_no -bmc_qsfp_eeprom_read() +bmc_qsfp_presence_read() { - local port=$1 - local eeprom_part1 - local eeprom_part2 - local eeprom_part3 - local eeprom_part4 - local eeprom1_full - local eeprom2_full - - port=`expr $port - 1` - i2cmux_dev=0 - i2cmux_dev=`expr $port / 8` - i2cmux_dev=`expr $i2cmux_dev + 2` - ch=`expr $port % 8` - - bmc_write $i2cmux_dev $ch 0x50 0x7f 0x00 - bmc_read $i2cmux_dev $ch 0x50 0 128 - if [ $? -eq 1 ];then - eeprom_part1=$result - else - return 1 - fi + if [ $board_ver == 1 ]; then + a=0 + tmp1=$(ipmitool raw 0x30 0x25 0x00 0x0c 0x1 0x30 2>>/dev/null) + a=$((a+$?)) + tmp1=$(echo $tmp1 | awk '{printf $1}') + sleep 0.05 + tmp2=$(ipmitool raw 0x30 0x25 0x00 0x0c 0x1 0x31 2>>/dev/null) + a=$((a+$?)) + tmp2=$(echo $tmp2 | awk '{printf $1}') + sleep 0.05 + tmp3=$(ipmitool raw 0x30 0x25 0x00 0x0e 0x1 0x30 2>>/dev/null) + a=$((a+$?)) + tmp3=$(echo $tmp3 | awk '{printf $1}') + sleep 0.05 + tmp4=$(ipmitool raw 0x30 0x25 0x00 0x0e 0x1 0x31 2>>/dev/null) + a=$((a+$?)) + tmp4=$(echo $tmp4 | awk '{printf $1}') + sleep 0.05 + if [ $a -eq 0 ];then + byte_hex_test $tmp1 + if [ $? -eq 0 ]; then + return 0 + fi + port_1_8_presence=$( printf "%d" 0x$tmp1 ) + byte_hex_test $tmp2 + if [ $? -eq 0 ]; then + return 0 + fi + port_9_16_presence=$( printf "%d" 0x$tmp2 ) + byte_hex_test $tmp3 + if [ $? -eq 0 ]; then + return 0 + fi + port_17_24_presence=$( printf "%d" 0x$tmp3 ) + byte_hex_test $tmp4 + if [ $? -eq 0 ]; then + return 0 + fi + port_25_32_presence=$( printf "%d" 0x$tmp4 ) + return 1 + fi - bmc_read $i2cmux_dev $ch 0x50 128 128 - if [ $? -eq 1 ];then - eeprom_part2=$result + return 0 else - return 1 + bmc_read_low_speed_signal_status + if [ $? -eq 0 ]; then + return 0 + fi fi +} - #QSFP-DD page2 - bmc_write $i2cmux_dev $ch 0x50 0x7f 0x02 - bmc_read $i2cmux_dev $ch 0x50 128 128 - if [ $? -eq 1 ];then - eeprom_part3=$result - else - return 1 - fi +bmc_qsfp_reset_write() +{ - #QSFP-DD page11 - bmc_write $i2cmux_dev $ch 0x50 0x7f 0x11 - bmc_read $i2cmux_dev $ch 0x50 128 128 - if [ $? -eq 1 ];then - eeprom_part4=$result - else - return 1 - fi + if [ $board_ver == 1 ]; then + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 1)))) + done - sfp_type=$(echo $eeprom_part1 | awk '{printf $1}') - byte_hex_test $sfp_type - if [ $? -eq 0 ]; then - return - fi - sfp_type=$( printf "%d" 0x$sfp_type ) - - #get temperature - temp=$(echo $eeprom_part1 | awk '{printf $15}') - if [ $temp != "" ];then - temp=$( printf "%d" 0x$temp ) - temp_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/temp" - echo $temp > $temp_path - fi + val=$((0xff - val)) + if [ $val -ne $pre_port_1_8_reset ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x20 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_1_8_reset=$val + fi + val=0 + for i in $(seq 9 16); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 9)))) + done - #get lp_mode - lpmod_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/lp_mode" - if [ $sfp_type -eq 24 ];then - lpmod=$(echo $eeprom_part1 | awk '{printf $27}') - if [ $lpmod != "" ];then - state=$((lpmod&0x10)) - if [ $state -eq 16 ];then - echo 1 > $lpmod_path - else - echo 0 > $lpmod_path - fi + val=$((0xff - val)) + if [ $val -ne $pre_port_9_16_reset ]; then + ipmitool raw 0x30 0x25 0x00 0x0c 0x0 0x21 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_9_16_reset=$val fi - elif [ $sfp_type -eq 17 ];then - lpmod=$(echo $eeprom_part1 | awk '{printf $93}') - if [ $lpmod != "" ];then - state=$((lpmod&0x02)) - if [ $state -eq 2 ];then - echo 1 > $lpmod_path - else - echo 0 > $lpmod_path - fi + + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 17)))) + done + + val=$((0xff - val)) + if [ $val -ne $pre_port_17_24_reset ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x20 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_17_24_reset=$val fi - else - lpmod="" - fi + val=0 + for i in $(seq 25 32); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 25)))) + done - eeprom1_full=$eeprom_part1$eeprom_part2 - eeprom1_full=$(echo $eeprom1_full | sed 's/[[:space:]]//g') - eeprom2_full=$eeprom_part3$eeprom_part4 - eeprom2_full=$(echo $eeprom2_full | sed 's/[[:space:]]//g') - - if [ $debug_flag -eq 0 ];then - eeprom1_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom1" - eeprom1_full=$(echo $eeprom1_full | sed -e 's/ //g') - echo $eeprom1_full > $eeprom1_path - eeprom2_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom2" - eeprom2_full=$(echo $eeprom2_full | sed -e 's/ //g') - echo $eeprom2_full > $eeprom2_path + val=$((0xff - val)) + if [ $val -ne $pre_port_25_32_reset ]; then + ipmitool raw 0x30 0x25 0x00 0x0e 0x0 0x21 $val 1>>/dev/null 2>>/dev/null + sleep 0.05 + pre_port_25_32_reset=$val + fi else - printf "\nPort %d EEPROM:" $1 - printf "-----------------------------------------------\n" - for i in $(seq 1 256); + cpld_path="/sys/bus/i2c/devices/0-0006/" + val=0 + for i in $(seq 1 8); do - printf "%s " ${eeprom1_full:0:2} - eeprom1_full=$(echo $eeprom1_full | sed 's/^..//') + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 1)))) + done - val=`expr $i % 16` - if [ $val -eq 0 ];then - printf "\n" - fi + val=$((0xff - val)) + val2=0 + for i in $(seq 9 16); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val2=$((val2 | (reset_input << ($i - 9)))) done - printf "\n-----------------------------------------------\n" + + val2=$((0xff - val2)) + if [ $val -ne $port_1_8_reset ] || [ $val2 -ne $port_9_16_reset ]; then + ipmitool raw 0x30 0x8c 0x0 0x0 $val $val2 1>>/dev/null 2>>/dev/null + fi + + cpld_path="/sys/bus/i2c/devices/0-0007/" + val=0 + for i in $(seq 17 24); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val=$((val | (reset_input << ($i - 17)))) + done + + val=$((0xff - val)) + val2=0 + for i in $(seq 25 32); + do + reset_path=$cpld_path"port"$i"_reset" + reset_input=$(cat $reset_path | awk '{printf $1}') + val2=$((val2 | (reset_input << ($i - 25)))) + done + + val2=$((0xff - val2)) + if [ $val -ne $port_17_24_reset ] || [ $val2 -ne $port_25_32_reset ]; then + ipmitool raw 0x30 0x8c 0x1 0x0 $val $val2 1>>/dev/null 2>>/dev/null + fi fi return 0 } -#$1=port_no -bmc_qsfp_eeprom_clear() -{ - eeprom1_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom1" - echo "" > $eeprom1_path - eeprom2_path="/sys/bus/i2c/devices/0-00"${port_map[$1]}"/eeprom2" - echo "" > $eeprom2_path -} - QSFP_monitor() { while true @@ -463,16 +585,24 @@ QSFP_monitor() if [ $is_presence -eq 0 ];then echo 1 > $cpld_path"port"$i"_present" - bmc_qsfp_eeprom_read $i + if [ $board_ver == 0 ]; then + if [ -e /tmp/eeprom_init_done ] && [ ${port_pre_present[$((i - 1))]} -eq 0 ]; then + touch /tmp/plugin_module_event + fi + + port_pre_present[$((i - 1))]=1 + fi else echo 0 > $cpld_path"port"$i"_present" - bmc_qsfp_eeprom_clear $i + echo 0 > $cpld_path"port"$i"_data_rdy" + if [ $board_ver == 0 ]; then + port_pre_present[$((i - 1))]=0 + fi fi done - sleep 2 - else - sleep 1 fi + + sleep 0.2 done } diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-send-temp-to-bmc b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-send-temp-to-bmc new file mode 100755 index 000000000000..4f2c1be21ab1 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/sonic-send-temp-to-bmc @@ -0,0 +1,51 @@ +#!/bin/bash +board_ver=$(ipmitool raw 0x30 0x25 0x1 0xe0 0x1 0x0 1>/dev/null 2>/dev/null; echo $?) #error will get 1 means EVT, otherwise DVT + +send_temp_to_bmc() +{ + c_path=$(ls /sys/devices/platform/coretemp.0/hwmon/) + c_temp=$(cat /sys/class/hwmon/$c_path/temp1_input) + cputemp=`expr $c_temp / 1000` + + transceiver_temp="" + for i in $(seq 1 32); + do + index=$((i + 15)); + path="/sys/bus/i2c/devices/0-00$(printf "%x" $index)/temp"; + t_temp=$(cat $path) + transceiver_temp+="$transcevicer_temp $t_temp" + done + + m2_temp=$(smartctl -A /dev/sda | egrep ^194 | awk '{print $10}') + + d_dev=$(find /sys/devices/ -name 1-00\*) + d_path=$(ls $d_dev/hwmon/) + d_temp=$(cat /sys/class/hwmon/$d_path/temp1_input) + dimm_temp=`expr $d_temp / 1000` + + ipmitool raw 0x30 0x8b $cputemp $transceiver_temp $m2_temp $dimm_temp +} + +SEND_TEMP() +{ + boot_time_barrier=1 + while true + do + if [ -e /sys/bus/i2c/devices/0-0006/port1_present ] && [ -e /sys/bus/i2c/devices/0-0007/port32_present ] && [ -e /sys/bus/i2c/devices/0-002f/eeprom1 ];then + + if [ $board_ver == 0 ]; then + if [ $boot_time_barrier == 1 ]; then + if [ -e /tmp/eeprom_init_done ]; then + boot_time_barrier=0 + fi + else + send_temp_to_bmc + fi + fi + + sleep 1; + fi + done +} + +SEND_TEMP diff --git a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/wistron_6512_32r_util.py b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/wistron_6512_32r_util.py old mode 100644 new mode 100755 index 030942825df0..31cf25f4cbe9 --- a/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/wistron_6512_32r_util.py +++ b/platform/innovium/sonic-platform-modules-wistron/6512-32r/utils/wistron_6512_32r_util.py @@ -68,8 +68,6 @@ # PSU 'echo wistron_psu1 0x5a > /sys/bus/i2c/devices/i2c-0/new_device', 'echo wistron_psu2 0x59 > /sys/bus/i2c/devices/i2c-0/new_device', -# EEPROM -'echo wistron_syseeprom 0x55 > /sys/bus/i2c/devices/i2c-0/new_device', ] FORCE = 0 @@ -173,6 +171,7 @@ def driver_inserted(): 'modprobe ipmi_watchdog', 'modprobe i2c_dev', 'modprobe at24', +'modprobe i2c-imc', 'modprobe wistron_6512_32r_syseeprom', 'modprobe wistron_6512_32r_cpld', 'modprobe wistron_6512_32r_fan', @@ -242,6 +241,20 @@ def device_install(): if FORCE == 0: return status + + status, output = log_os_system("i2cget -y 0 0x55 0x0 1>/dev/null 2>/dev/null; echo $?", 1) + if status: + print(output) + if FORCE == 0: + return status + else: + if output == '0': + log_os_system("echo 24c02 0x55 > /sys/bus/i2c/devices/i2c-0/new_device", 1) + else: + log_os_system("echo wistron_syseeprom 0x55 > /sys/bus/i2c/devices/i2c-0/new_device", 1) + + + for i in range(0,len(sfp_map)): status, output = log_os_system("echo wistron_oom 0x"+str(sfp_map[i])+ " > /sys/bus/i2c/devices/i2c-0/new_device", 1) if status: @@ -324,12 +337,6 @@ def do_install(): else: print(PROJECT_NAME.upper()+" devices detected....") - status, output = log_os_system( - "/bin/sh /usr/local/bin/platform_api_mgnt.sh init", 1) - if status: - print(output) - if FORCE == 0: - return status return def do_uninstall(): diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/changelog b/platform/innovium/sonic-platform-modules-wistron/debian/changelog new file mode 100644 index 000000000000..12d04e4d0303 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/changelog @@ -0,0 +1,5 @@ +sonic-wistron-platform-modules (1.1) unstable; urgency=low + + * Initial release + + -- Haowei Chung Fri, 30 Aug 2019 14:48:00 +0800 diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/compat b/platform/innovium/sonic-platform-modules-wistron/debian/compat new file mode 100644 index 000000000000..b4de39476753 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/compat @@ -0,0 +1 @@ +11 diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/control b/platform/innovium/sonic-platform-modules-wistron/debian/control new file mode 100644 index 000000000000..00ad6637c378 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/control @@ -0,0 +1,14 @@ +Source: sonic-wistron-platform-modules +Section: main +Priority: extra +Maintainer: Wistron +Build-Depends: debhelper (>= 8.0.0), bzip2 +Standards-Version: 3.9.3 + +Package: sonic-platform-wistron-sw-to3200k +Architecture: amd64 +Description: kernel modules for platform devices such as fan, led, sfp + +Package: sonic-platform-wistron-6512-32r +Architecture: amd64 +Description: kernel modules for platform devices such as fan, led, sfp diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/rules b/platform/innovium/sonic-platform-modules-wistron/debian/rules new file mode 100755 index 000000000000..defb1f932d16 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/rules @@ -0,0 +1,143 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +include /usr/share/dpkg/pkg-info.mk + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +export INSTALL_MOD_DIR:=extra + +PYTHON ?= python2 +PYTHON3 ?= python3 + +PACKAGE_PRE_NAME := sonic-platform-wistron +KVERSION ?= $(shell uname -r) +KERNEL_SRC := /lib/modules/$(KVERSION) +MOD_SRC_DIR:= $(shell pwd) +MODULE_DIRS := sw-to3200k 6512-32r +MODULE_DIR := modules +UTILS_DIR := utils +SERVICE_DIR := service +CONF_DIR := conf + +%: + dh $@ --with systemd,python2,python3 --buildsystem=pybuild + +clean: + dh_testdir + dh_testroot + dh_clean + +build: + #make modules -C $(KERNEL_SRC)/build M=$(MODULE_SRC) + (for mod in $(MODULE_DIRS); do \ + make modules -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules; \ + #$(PYTHON) $${mod}/setup.py build; \ + cd $(MOD_SRC_DIR)/$${mod}; \ + if [ -f setup.py ]; then \ + $(PYTHON3) setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}; \ + echo "Finished making whl package for $$mod"; \ + fi; \ + cd $(MOD_SRC_DIR); \ + done) + +binary: binary-arch binary-indep + # Nothing to do + +binary-arch: + # Nothing to do + +#install: build + #dh_testdir + #dh_testroot + #dh_clean -k + #dh_installdirs + +binary-indep: + dh_testdir + dh_installdirs + + # Custom package commands + (for mod in $(MODULE_DIRS); do \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} $(KERNEL_SRC)/$(INSTALL_MOD_DIR); \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} usr/local/bin; \ + dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} lib/systemd/system; \ + cp $(MOD_SRC_DIR)/$${mod}/$(MODULE_DIR)/*.ko debian/$(PACKAGE_PRE_NAME)-$${mod}/$(KERNEL_SRC)/$(INSTALL_MOD_DIR); \ + #cp $(MOD_SRC_DIR)/$${mod}/$(UTILS_DIR)/* debian/$(PACKAGE_PRE_NAME)-$${mod}/usr/local/bin/; \ + cp $(MOD_SRC_DIR)/$${mod}/$(SERVICE_DIR)/*.service debian/$(PACKAGE_PRE_NAME)-$${mod}/lib/systemd/system/; \ + #$(PYTHON) $${mod}/setup.py install --root=$(MOD_SRC_DIR)/debian/$(PACKAGE_PRE_NAME)-$${mod} --install-layout=deb; \ + done) + # Resuming debhelper scripts + dh_testroot + dh_install + dh_installchangelogs + dh_installdocs + dh_installsystemd + dh_installinit + dh_link + dh_fixperms + dh_compress + dh_strip + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb +.PHONY: build binary binary-arch binary-indep clean + +##!/usr/bin/make -f +# +#export INSTALL_MOD_DIR:=extra +# +#PYTHON ?= python2 +#PYTHON3 ?= python3 +# +#KVERSION ?= $(shell uname -r) +#KERNEL_SRC := /lib/modules/$(KVERSION) +#MOD_SRC_DIR:= $(shell pwd) +# +#PACKAGE_PRE_NAME := sonic-platform-wistron +#MODULE_DIRS := 3306-32 +#MODULE_SRC := modules +##UTILITY_SRC := utils +#SERVICE_SRC := service +#COMMON_SRC := common +#%: +# dh $@ +# +# +#override_dh_auto_build: +# (for mod in $(MODULE_DIRS); do \ +# make modules -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules; \ +# cd $(MOD_SRC_DIR)/$${mod}; \ +# python2.7 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ +# cd $(MOD_SRC_DIR); \ +# done) +# +#override_dh_auto_install: +# (for mod in $(MODULE_DIRS); do \ +# dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} \ +# $(KERNEL_SRC)/$(INSTALL_MOD_DIR); \ +# cp $(MOD_SRC_DIR)/$${mod}/$(MODULE_SRC)/*.ko \ +# debian/$(PACKAGE_PRE_NAME)-$${mod}/$(KERNEL_SRC)/$(INSTALL_MOD_DIR); \ +# dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} usr/local/bin; \ +## cp $(MOD_SRC_DIR)/$${mod}/$(UTILITY_SRC)/* \ +## debian/$(PACKAGE_PRE_NAME)-$${mod}/usr/local/bin; \ +# dh_installdirs -p$(PACKAGE_PRE_NAME)-$${mod} lib/systemd/system; \ +# cp $(MOD_SRC_DIR)/$${mod}/$(SERVICE_SRC)/*.service \ +# debian/$(PACKAGE_PRE_NAME)-$${mod}/lib/systemd/system; \ +# done) +# +#override_dh_usrlocal: +# +#override_dh_clean: +# dh_clean +# $(RM) -r $(COMMON_SRC)/*.o $(COMMON_SRC)/.*.cmd +# (for mod in $(MODULE_DIRS); do \ +# make -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules clean; \ +# done) diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.install b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.install new file mode 100644 index 000000000000..955583027537 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.install @@ -0,0 +1,3 @@ +6512-32r/utils/* usr/local/bin +6512-32r/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-wistron_6512_32r-r0 +6512-32r/service/*.service lib/systemd/system diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.postinst b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.postinst new file mode 100644 index 000000000000..b1cef228e7ee --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-6512-32r.postinst @@ -0,0 +1,41 @@ +#!/bin/bash + +kernel_version=$(uname -r) + +for i in $(seq 1 10); +do + if [ -e /lib/modules/${kernel_version}/modules.dep ];then + wisko=$(cat /lib/modules/${kernel_version}/modules.dep | grep wistron) + ipdko=$(cat /lib/modules/${kernel_version}/modules.dep | grep ipd) + if [ "$wisko" == "" ] || [ "$ipdko" == "" ];then + depmod -a + else + if [ ! -e /lib/modules/${kernel_version}/modules.dep.bin ];then + depmod -a + else + break + fi + fi + + echo "depmod -a" + sleep 1 + else + sleep 1 + fi +done + +#Install sonic-platform package +DEVICE="/usr/share/sonic/device" +PLATFORM=$(/usr/local/bin/sonic-cfggen -H -v DEVICE_METADATA.localhost.platform) +if [ -e $DEVICE/$PLATFORM/sonic_platform-1.0-py3-none-any.whl ]; then + pip3 install $DEVICE/$PLATFORM/sonic_platform-1.0-py3-none-any.whl +fi + +systemctl enable platform-modules-6512-32r.service +systemctl start platform-modules-6512-32r.service +systemctl enable 6512-32r-platform.service +systemctl start 6512-32r-platform.service +systemctl enable 6512-32r-syseeprom.service +systemctl start 6512-32r-syseeprom.service +systemctl enable 6512-32r-firmware_ver.service +systemctl start 6512-32r-firmware_ver.service diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.install b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.install new file mode 100644 index 000000000000..2323a24d6bcc --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.install @@ -0,0 +1,4 @@ +sw-to3200k/utils/* usr/local/bin +sw-to3200k/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-wistron_sw_to3200k-r0 +sw-to3200k/cfg/sw-to3200k-modules.conf etc/modules-load.d +sw-to3200k/service/*.service lib/systemd/system diff --git a/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.postinst b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.postinst new file mode 100644 index 000000000000..9a1d167da53d --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/debian/sonic-platform-wistron-sw-to3200k.postinst @@ -0,0 +1,43 @@ +#!/bin/bash + +kernel_version=$(uname -r) + +for i in $(seq 1 10); +do + if [ -e /lib/modules/${kernel_version}/modules.dep ];then + wisko=$(cat /lib/modules/${kernel_version}/modules.dep | grep wistron) + ipdko=$(cat /lib/modules/${kernel_version}/modules.dep | grep ipd) + if [ "$wisko" == "" ] || [ "$ipdko" == "" ];then + depmod -a + else + if [ ! -e /lib/modules/${kernel_version}/modules.dep.bin ];then + depmod -a + else + break + fi + fi + + echo "depmod -a" + sleep 1 + else + sleep 1 + fi +done + +#Install sonic-platform package +DEVICE="/usr/share/sonic/device" +PLATFORM=$(/usr/local/bin/sonic-cfggen -H -v DEVICE_METADATA.localhost.platform) +if [ -e $DEVICE/$PLATFORM/sonic_platform-1.0-py3-none-any.whl ]; then + pip3 install $DEVICE/$PLATFORM/sonic_platform-1.0-py3-none-any.whl +fi + +systemctl enable platform-modules-sw-to3200k.service +systemctl start platform-modules-sw-to3200k.service +systemctl enable sw-to3200k-firmware_ver.service +systemctl start sw-to3200k-firmware_ver.service +systemctl enable to3200k-platform.service +systemctl start to3200k-platform.service +systemctl enable to3200k-led.service +systemctl start to3200k-led.service +systemctl enable to3200k-pld.service +systemctl start to3200k-pld.service diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_i2c_psu.c b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_i2c_psu.c index 746e581486cb..5024ecdd70e6 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_i2c_psu.c +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_i2c_psu.c @@ -342,25 +342,25 @@ static ssize_t set_value } case PSU_MFR_ID: { - memset(&data->mfr_id, 0x0, sizeof(data->mfr_id)); + memzero_explicit(&data->mfr_id, sizeof(data->mfr_id)); strncpy(data->mfr_id, buf, sizeof(data->mfr_id)-1); break; } case PSU_MFR_MODEL: { - memset(&data->mfr_model, 0x0, sizeof(data->mfr_model)); + memzero_explicit(&data->mfr_model, sizeof(data->mfr_model)); strncpy(data->mfr_model, buf, sizeof(data->mfr_model)-1); break; } case PSU_MFR_REVISION: { - memset(&data->mfr_revsion, 0x0, sizeof(data->mfr_revsion)); + memzero_explicit(&data->mfr_revsion, sizeof(data->mfr_revsion)); strncpy(data->mfr_revsion, buf, sizeof(data->mfr_revsion)-1); break; } case PSU_MFR_SERIAL: { - memset(&data->mfr_serial, 0x0, sizeof(data->mfr_serial)); + memzero_explicit(&data->mfr_serial, sizeof(data->mfr_serial)); strncpy(data->mfr_serial, buf, sizeof(data->mfr_serial)-1); break; } @@ -403,7 +403,7 @@ static int wistron_i2c_psu_probe(struct i2c_client *client, const struct i2c_dev goto exit_free; } - data->hwmon_dev = hwmon_device_register(&client->dev); + data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "wistron_i2c_psu", NULL, NULL, NULL); if (IS_ERR(data->hwmon_dev)) { status = PTR_ERR(data->hwmon_dev); diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_fan.c b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_fan.c index 82dfa71b7805..0f7e856e8330 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_fan.c +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_fan.c @@ -16,6 +16,8 @@ static ssize_t get_fan_value(struct device *dev, struct device_attribute *da, char *buf); static ssize_t set_fan_value(struct device *dev, struct device_attribute *da, const char *buf, size_t count); +static ssize_t get_version(struct device *dev, struct device_attribute *da, char *buf); +static ssize_t set_version(struct device *dev, struct device_attribute *da, const char *buf, size_t count); enum fan_id { FAN1_ID, @@ -49,7 +51,7 @@ enum sysfs_fan_attributes { FAN4_DIRECTION, FAN5_DIRECTION, FAN6_DIRECTION, - FAN7_DIRECTION, + FAN7_DIRECTION, FAN1_FRONT_SPEED_RPM, FAN2_FRONT_SPEED_RPM, FAN3_FRONT_SPEED_RPM, @@ -64,6 +66,7 @@ enum sysfs_fan_attributes { FAN5_REAR_SPEED_RPM, FAN6_REAR_SPEED_RPM, FAN7_REAR_SPEED_RPM, + CPLD_VERSION, FAN_ATTR_MAX }; @@ -71,9 +74,13 @@ enum sysfs_fan_attributes { struct sw_to3200k_fan_data { struct device *hwmon_dev; struct mutex update_lock; + int version; int fan_val[FAN_ATTR_MAX]; }; +/* version */ +static SENSOR_DEVICE_ATTR(version, S_IWUSR | S_IRUGO, get_version, set_version, CPLD_VERSION); + /* Define attributes */ #define DECLARE_FAN_DUTY_CYCLE_SENSOR_DEV_ATTR(index) \ static SENSOR_DEVICE_ATTR(fan##index##_duty_cycle_percentage, S_IWUSR | S_IRUGO, get_fan_value, set_fan_value, FAN##index##_DUTY_CYCLE_PERCENTAGE) @@ -171,9 +178,40 @@ static struct attribute *sw_to3200k_fan_attributes[] = { DECLARE_FAN_DIRECTION_ATTR(6), DECLARE_FAN_DIRECTION_ATTR(7), DECLARE_FAN_DUTY_CYCLE_ATTR(), + &sensor_dev_attr_version.dev_attr.attr, NULL }; +static ssize_t get_version(struct device *dev, struct device_attribute *da, char *buf) +{ + struct i2c_client *client = to_i2c_client(dev); + struct sw_to3200k_fan_data *data = i2c_get_clientdata(client); + int version; + + mutex_lock(&data->update_lock); + version = data->version; + mutex_unlock(&data->update_lock); + return sprintf(buf, "%d", version); +} + +static ssize_t set_version(struct device *dev, struct device_attribute *da, const char *buf, size_t count) +{ + struct i2c_client *client = to_i2c_client(dev); + struct sw_to3200k_fan_data *data = i2c_get_clientdata(client); + int error, version; + + error = kstrtoint(buf, 10, &version); + if (error) + { + return error; + } + + mutex_lock(&data->update_lock); + data->version = version; + mutex_unlock(&data->update_lock); + return count; +} + static ssize_t get_fan_value(struct device *dev, struct device_attribute *da, char *buf) { struct sensor_device_attribute *attr = to_sensor_dev_attr(da); @@ -245,7 +283,7 @@ static int sw_to3200k_fan_probe goto exit_free; } - data->hwmon_dev = hwmon_device_register(&client->dev); + data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "wistron_fan", NULL, NULL, NULL); if (IS_ERR(data->hwmon_dev)) { status = PTR_ERR(data->hwmon_dev); diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_oom.c b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_oom.c index 6e1df229c9fd..3e26edff07cc 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_oom.c +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_oom.c @@ -242,27 +242,27 @@ static ssize_t set_oom_info(struct device *dev, struct device_attribute *da, con { case OOM_EEPROM_LOW: { - memset(&data->eeproml, 0x0, sizeof(data->eeproml)); + memzero_explicit(&data->eeproml, sizeof(data->eeproml)); break; } case OOM_EEPROM_PG0: { - memset(&data->eeprom0, 0x0, sizeof(data->eeprom0)); + memzero_explicit(&data->eeprom0, sizeof(data->eeprom0)); break; } case OOM_EEPROM_PG2: { - memset(&data->eeprom2, 0x0, sizeof(data->eeprom2)); + memzero_explicit(&data->eeprom2, sizeof(data->eeprom2)); break; } case OOM_EEPROM_PG3: { - memset(&data->eeprom3, 0x0, sizeof(data->eeprom3)); + memzero_explicit(&data->eeprom3, sizeof(data->eeprom3)); break; } case OOM_EEPROM_PG11: { - memset(&data->eeprom11, 0x0, sizeof(data->eeprom11)); + memzero_explicit(&data->eeprom11, sizeof(data->eeprom11)); break; } default: @@ -332,7 +332,7 @@ static int sw_to3200k_oom_probe(struct i2c_client *client, const struct i2c_devi goto exit_free; } - data->hwmon_dev = hwmon_device_register(&client->dev); + data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "wistron_oom", NULL, NULL, NULL); if (IS_ERR(data->hwmon_dev)) { status = PTR_ERR(data->hwmon_dev); diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_psu.c b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_psu.c index 849ec1315407..418e22240ace 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_psu.c +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_psu.c @@ -140,7 +140,7 @@ static ssize_t set_string(struct device *dev, struct device_attribute *da, const struct sw_to3200k_psu_data *data = i2c_get_clientdata(client); char tmp_str[32]; - memset(&tmp_str, 0x0, sizeof(tmp_str)); + memzero_explicit(&tmp_str, sizeof(tmp_str)); if (attr->index == PSU_MODEL_NAME) { if (sscanf(buf, "%16s", tmp_str) != 1) @@ -205,7 +205,7 @@ static int sw_to3200k_psu_probe(struct i2c_client *client, goto exit_free; } - data->hwmon_dev = hwmon_device_register(&client->dev); + data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "wistron_psu", NULL, NULL, NULL); if (IS_ERR(data->hwmon_dev)) { status = PTR_ERR(data->hwmon_dev); diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_thermal.c b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_thermal.c index e96e9d723f46..a86d53a94fb3 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_thermal.c +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/modules/wistron_sw_to3200k_thermal.c @@ -140,7 +140,7 @@ static int sw_to3200k_thermal_probe(struct i2c_client *client, const struct i2c_ goto exit_free; } - data->hwmon_dev = hwmon_device_register(&client->dev); + data->hwmon_dev = hwmon_device_register_with_info(&client->dev, "wistron_thermal", NULL, NULL, NULL); if (IS_ERR(data->hwmon_dev)) { status = PTR_ERR(data->hwmon_dev); diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/service/sw-to3200k-firmware_ver.service b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/service/sw-to3200k-firmware_ver.service new file mode 100644 index 000000000000..c609042622c0 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/service/sw-to3200k-firmware_ver.service @@ -0,0 +1,12 @@ +[Unit] +Description=Wistron SW3200K Platform firmware version service +After=platform-modules-sw-to3200k.service +DefaultDependencies=no + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/platform_firmware_version +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/__init__.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/__init__.py index 0c73278ba9f5..afc599aeca4e 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/__init__.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/__init__.py @@ -1,2 +1,2 @@ -__all__ = ["platform", "chassis", "sfp", "eeprom", "psu", "thermal", "fan", "watchdog"] +__all__ = ["platform", "chassis", "sfp", "eeprom", "psu", "thermal", "fan", "watchdog", 'component'] from . import platform diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/chassis.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/chassis.py index 4effac20b6a4..655949d8fc56 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/chassis.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/chassis.py @@ -8,7 +8,6 @@ ############################################################################# try: import sys - import os import time import subprocess from sonic_platform_base.chassis_base import ChassisBase @@ -16,16 +15,19 @@ raise ImportError(str(e) + "- required module not found") NUM_FAN = 14 +NUM_FANTRAY = 7 NUM_PSU = 2 NUM_THERMAL = 7 NUM_SFP = 32 +NUM_COMPONENT = 6 HOST_REBOOT_CAUSE_PATH = "/host/reboot-cause/" PMON_REBOOT_CAUSE_PATH = "/usr/share/sonic/platform/api_files/reboot-cause/" REBOOT_CAUSE_FILE = "reboot-cause.txt" PREV_REBOOT_CAUSE_FILE = "previous-reboot-cause.txt" -HOST_CHK_CMD = "docker > /dev/null 2>&1" -GET_HWSKU_CMD = "sonic-cfggen -d -v DEVICE_METADATA.localhost.hwsku" -GET_PLATFORM_CMD = "sonic-cfggen -d -v DEVICE_METADATA.localhost.platform" +HOST_CHK_CMD = ["docker"] +GET_HWSKU_CMD = ["sonic-cfggen", "-d", "-v", "DEVICE_METADATA.localhost.hwsku"] +GET_PLATFORM_CMD = ["sonic-cfggen", "-d", "-v", "DEVICE_METADATA.localhost.platform"] + class Chassis(ChassisBase): """Platform-specific Chassis class""" @@ -45,6 +47,7 @@ def __init__(self): self.__initialize_thermals() self.__initialize_sfp() self.__initialize_eeprom() + self.__initialize_components() def __initialize_sfp(self): from sonic_platform.sfp import Sfp @@ -52,12 +55,12 @@ def __initialize_sfp(self): sfp_module = Sfp(index, 'QSFP_DD') self._sfp_list.append(sfp_module) - def __initialize_fan(self): - from sonic_platform.fan import Fan - for fan_index in range(0, NUM_FAN): - fan = Fan(fan_index) - self._fan_list.append(fan) + from sonic_platform.fan_drawer import FanDrawer + for fan_index in range(0, NUM_FANTRAY): + fandrawer = FanDrawer(fan_index) + self._fan_drawer_list.append(fandrawer) + self._fan_list.extend(fandrawer._fan_list) def __initialize_psu(self): from sonic_platform.psu import Psu @@ -75,8 +78,14 @@ def __initialize_eeprom(self): from sonic_platform.eeprom import Tlv self._eeprom = Tlv() + def __initialize_components(self): + from sonic_platform.component import Component + for index in range(0, NUM_COMPONENT): + component = Component(index) + self._component_list.append(component) + def __is_host(self): - return os.system(HOST_CHK_CMD) == 0 + return subprocess.call(HOST_CHK_CMD) == 0 def __read_txt_file(self, file_path): try: @@ -88,12 +97,12 @@ def __read_txt_file(self, file_path): return None def _get_sku_name(self): - p = subprocess.Popen(GET_HWSKU_CMD, shell=True, stdout=subprocess.PIPE) + p = subprocess.Popen(GET_HWSKU_CMD, stdout=subprocess.PIPE) out, err = p.communicate() return out.decode().rstrip('\n') def _get_platform_name(self): - p = subprocess.Popen(GET_PLATFORM_CMD, shell=True, stdout=subprocess.PIPE) + p = subprocess.Popen(GET_PLATFORM_CMD, stdout=subprocess.PIPE) out, err = p.communicate() return out.decode().rstrip('\n') @@ -114,7 +123,7 @@ def get_base_mac(self): """ return self._eeprom.get_mac() - def get_serial_number(self): + def get_serial(self): """ Retrieves the hardware serial number for the chassis Returns: @@ -181,7 +190,7 @@ def _get_sfp_presence(self): port_pres = {} for port in range(0, NUM_SFP): sfp = self._sfp_list[port] - port_pres[port] = sfp.get_presence() + port_pres[port] = 1 if sfp.get_presence() else 0 return port_pres @@ -217,7 +226,7 @@ def get_change_event(self, timeout=0): port_dict[port] = '0' self._transceiver_presence = cur_presence - if change_event == True: + if change_event is True: break if not forever: @@ -231,3 +240,86 @@ def get_change_event(self, timeout=0): sfp.reinit() return True, ret_dict + + def initizalize_system_led(self): + self.system_led = "" + return True + + def set_status_led(self, color): + """ + Sets the state of the system LED + + Args: + color: A string representing the color with which to set the + system LED + + Returns: + bool: True if system LED state is set successfully, False if not + """ + self.system_led = color + return True + + def get_status_led(self): + """ + Gets the state of the system LED + + Returns: + A string, one of the valid LED color strings which could be vendor + specified. + """ + return self.system_led + + + def get_presence(self): + """ + Retrieves the presence of the Chassis + Returns: + bool: True if Chassis is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return self._eeprom.get_model() + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. If the agent cannot determine the parent-relative position + for some reason, or if the associated value of entPhysicalContainedIn is '0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + + def get_revision(self): + """ + Retrieves the hardware revision of the device + + Returns: + string: Revision value of device + """ + + return '0' + + def get_thermal_manager(self): + raise NotImplementedError diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/component.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/component.py new file mode 100644 index 000000000000..8b855e0a5f86 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/component.py @@ -0,0 +1,240 @@ +#!/usr/bin/env python + +import subprocess +from shlex import split +from collections import namedtuple +from functools import reduce + + +try: + from sonic_platform_base.component_base import ComponentBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +CPLD_ADDR_MAPPING = { + "CPLD1": "0-0061", + "CPLD2": "0-0062", + "MB_FPGA": "0-0060", + "FAN_CPLD" : "0-0066" +} + +proc_output = namedtuple('proc_output', 'stdout stderr') +SYSFS_PATH = "/sys/bus/i2c/devices/" +#GET_BMC_VER_CMD= "ipmitool mc info | grep 'Firmware Revision' | awk '{printf $4}'" +BIOS_VERSION_PATH = "/sys/class/dmi/id/bios_version" +COMPONENT_LIST= [ + ("BIOS", "Basic Input/Output System"), + ("CPLD1", "CPLD 1"), + ("CPLD2", "CPLD 2"), + ("MB_FPGA", "MB FPGA"), + ("FAN_CPLD", "FAN CPLD"), + ("BMC", "baseboard management controller") +] + +class Component(ComponentBase): + """Platform-specific Component class""" + + DEVICE_TYPE = "component" + + def __init__(self, component_index=0): + ComponentBase.__init__(self) + self.index = component_index + self.name = self.get_name() + + def pipeline(self, starter_command, *commands): + if not commands: + try: + starter_command, *commands = starter_command.split('|') + except AttributeError: + pass + starter_command = self._parse(starter_command) + starter = subprocess.Popen(starter_command, stdout=subprocess.PIPE) + last_proc = reduce(self._create_pipe, map(self._parse, commands), starter) + return proc_output(*last_proc.communicate()) + + def _create_pipe(self, previous, command): + proc = subprocess.Popen(command, stdin=previous.stdout, stdout=subprocess.PIPE) + previous.stdout.close() + return proc + + def _parse(self, cmd): + try: + return split(cmd) + except Exception: + return cmd + + def __read_txt_file(self, file_path): + try: + with open(file_path, 'r') as fd: + data = fd.read() + return data.strip() + except IOError: + pass + return "" + + def __get_bios_version(self): + # Retrieves the BIOS firmware version + try: + with open(BIOS_VERSION_PATH, 'r') as fd: + bios_version = fd.read() + return bios_version.strip() + except Exception as e: + return None + + def __get_bmc_version(self): + try: + #GET_BMC_VER_CMD + out, err = self.pipeline("ipmitool mc info", "grep 'Firmware Revision'", "awk '{printf $4}'") + return out.decode().rstrip('\n') + except Exception as e: + print('Get exception when read bmc') + return 'None' + + def __get_cpld_version(self): + # Retrieves the CPLD firmware version + cpld_version = dict() + for cpld_name in CPLD_ADDR_MAPPING: + try: + cpld_path = "{}{}{}".format(SYSFS_PATH, CPLD_ADDR_MAPPING[cpld_name], '/version') + cpld_version_raw= int(self.__read_txt_file(cpld_path), 10) + cpld_version[cpld_name] = "{}".format(hex(cpld_version_raw)) + except Exception as e: + print('Get exception when read cpld') + cpld_version[cpld_name] = 'None' + + return cpld_version + + def get_name(self): + """ + Retrieves the name of the component + Returns: + A string containing the name of the component + """ + return COMPONENT_LIST[self.index][0] + + def get_description(self): + """ + Retrieves the description of the component + Returns: + A string containing the description of the component + """ + return COMPONENT_LIST[self.index][1] + + def get_firmware_version(self): + """ + Retrieves the firmware version of module + Returns: + string: The firmware versions of the module + """ + fw_version = None + + if self.name == "BIOS": + fw_version = self.__get_bios_version() + elif "BMC" in self.name: + fw_version = self.__get_bmc_version() + elif "CPLD" in self.name: + cpld_version = self.__get_cpld_version() + fw_version = cpld_version.get(self.name) + elif "FPGA" in self.name: + fpga_version = self.__get_cpld_version() + fw_version = fpga_version.get(self.name) + + return fw_version + + def install_firmware(self, image_path): + """ + Install firmware to module + Args: + image_path: A string, path to firmware image + Returns: + A boolean, True if install successfully, False if not + """ + raise NotImplementedError + + def get_presence(self): + """ + Retrieves the presence of the FAN + Returns: + bool: True if FAN is present, False if not + """ + return True + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return 'N/A' + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return 'N/A' + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return True + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return -1 + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return False + + def get_available_firmware_version(self, image_path): + """ + Retrieves the available firmware version of the component + Note: the firmware version will be read from image + Args: + image_path: A string, path to firmware image + Returns: + A string containing the available firmware version of the component + """ + return "N/A" + + def get_firmware_update_notification(self, image_path): + """ + Retrieves a notification on what should be done in order to complete + the component firmware update + Args: + image_path: A string, path to firmware image + Returns: + A string containing the component firmware update notification if required. + By default 'None' value will be used, which indicates that no actions are required + """ + return "None" + + def update_firmware(self, image_path): + """ + Updates firmware of the component + This API performs firmware update: it assumes firmware installation and loading in a single call. + In case platform component requires some extra steps (apart from calling Low Level Utility) + to load the installed firmware (e.g, reboot, power cycle, etc.) - this will be done automatically by API + Args: + image_path: A string, path to firmware image + Raises: + RuntimeError: update failed + """ + return False diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/eeprom.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/eeprom.py index 448e083712ce..e495b297576a 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/eeprom.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/eeprom.py @@ -41,12 +41,19 @@ def __parse_output(self, decode_output): for line in lines: try: match = re.search( - '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', line) - if match is not None: + '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+[\s]+[\S]+)', line) + if match is not None and match.group(1) == '0x25': idx = match.group(1) value = match.group(3).rstrip('\0') + _eeprom_info_dict[idx] = value + else: + match = re.search( + '(0x[0-9a-fA-F]{2})([\s]+[\S]+[\s]+)([\S]+)', line) + if match is not None: + idx = match.group(1) + value = match.group(3).rstrip('\0') + _eeprom_info_dict[idx] = value - _eeprom_info_dict[idx] = value except BaseException: pass return _eeprom_info_dict @@ -108,3 +115,7 @@ def get_serial(self): def get_mac(self): return self._eeprom.get('0x24', "Undefined.") + + def get_model(self): + return self._eeprom.get('0x21', "Undefined.") + diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan.py index f5b7f9e80ed6..9849cd472893 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan.py @@ -14,23 +14,66 @@ except ImportError as e: raise ImportError(str(e) + "- required module not found") +SPEED_TOLERANCE = 15 FAN_PATH = "/sys/bus/i2c/devices/0-0066/" -FANTRAY_NAME_LIST = ["FANTRAY-1", "FANTRAY-2", - "FANTRAY-3", "FANTRAY-4", - "FANTRAY-5", "FANTRAY-6", "FANTRAY-7"] -FAN_NAME_LIST = ["fan1_front","fan2_front","fan3_front","fan4_front","fan5_front","fan6_front", "fan7_front",\ -"fan1_rear","fan2_rear","fan3_rear","fan4_rear", "fan5_rear", "fan6_rear", "fan7_rear",] +SYSFS_PATH = "/sys/bus/i2c/devices/{0}-00{1}" +PSU_STS_I2C_MAPPING = { + 0: { + "num": 0, + "addr": "51" + }, + 1: { + "num": 0, + "addr": "52" + }, +} + +PSU_HWMON_I2C_MAPPING = { + 0: { + "num": 0, + "addr": "59" + }, + 1: { + "num": 0, + "addr": "5a" + }, +} + +FAN_NAME_LIST = ["FAN-1F", "FAN-1R", "FAN-2F", "FAN-2R", + "FAN-3F", "FAN-3R", "FAN-4F", "FAN-4R", + "FAN-5F", "FAN-5R", "FAN-6F", "FAN-6R", + "FAN-7F", "FAN-7R"] class Fan(FanBase): """Platform-specific Fan class""" - def __init__(self, fan_index): - self.fan_tray_index = fan_index - self.fan_presence = "fan{}_presence" - self.fan_direction = "fan{}_direction" - self.fan_speed_rpm = "fan{}_{}_speed_rpm" + def __init__(self, fan_tray_index, fan_index=0, is_psu_fan=False, psu_index=0): + self.fan_index = fan_index + self.fan_tray_index = fan_tray_index + self.is_psu_fan = is_psu_fan + + if self.is_psu_fan: + self.psu_index = psu_index + self.psu_status_i2c_num = PSU_STS_I2C_MAPPING[self.psu_index]['num'] + self.psu_status_i2c_addr = PSU_STS_I2C_MAPPING[self.psu_index]['addr'] + self.psu_status_path = SYSFS_PATH.format(self.psu_status_i2c_num, self.psu_status_i2c_addr) + self.psu_hwmon_i2c_num = PSU_HWMON_I2C_MAPPING[self.psu_index]['num'] + self.psu_hwmon_i2c_addr = PSU_HWMON_I2C_MAPPING[self.psu_index]['addr'] + self.psu_hwmon_path = SYSFS_PATH.format(self.psu_hwmon_i2c_num, self.psu_hwmon_i2c_addr) + + FanBase.__init__(self) + def __search_hwmon_dir_name(self, directory): + try: + dirs = os.listdir(directory) + for file in dirs: + if file.startswith("hwmon"): + return file + except IOError: + pass + return '' + def __read_txt_file(self, file_path): try: with open(file_path, 'r') as fd: @@ -38,22 +81,14 @@ def __read_txt_file(self, file_path): return data.strip() except IOError: pass - return "" + return None - def __write_txt_file(self, file_path, value): + def __write_txt_file(self, file_path, data): try: with open(file_path, 'w') as fd: - fd.write(str(value)) - except BaseException: - return False - return True - - def __search_file_by_name(self, directory, file_name): - for dirpath, dirnames, files in os.walk(directory): - for name in files: - file_path = os.path.join(dirpath, name) - if name in file_name: - return file_path + fd.write(data) + except IOError: + pass return None def get_direction(self): @@ -63,38 +98,46 @@ def get_direction(self): A string, either FAN_DIRECTION_INTAKE or FAN_DIRECTION_EXHAUST depending on fan direction """ - index1=self.fan_tray_index - if self.fan_tray_index>6: - index1=self.fan_tray_index%7 - fan_direction_file = (FAN_PATH + - self.fan_direction.format(index1+1)) - raw = self.__read_txt_file(fan_direction_file).strip('\r\n') - direction = self.FAN_DIRECTION_INTAKE if str( - raw).upper() == "1" else self.FAN_DIRECTION_EXHAUST + direction = 0 + if self.is_psu_fan: + path= "{}/psu_fan_dir".format(self.psu_status_path) + direction=self.__read_txt_file(path) + if direction is None: + return self.FAN_DIRECTION_EXHAUST + elif self.get_presence(): + path= "{}/fan{}_direction".format(FAN_PATH, self.fan_tray_index + 1) + direction=self.__read_txt_file(path) + if direction is None: + return self.FAN_DIRECTION_EXHAUST + + return self.FAN_DIRECTION_EXHAUST if int(direction) == 0 else self.FAN_DIRECTION_INTAKE - return direction def get_speed(self): """ Retrieves the speed of fan as a percentage of full speed Returns: An integer, the percentage of full fan speed, in the range 0 (off) - to 12000 (full speed) - """ - if self.fan_tray_index<=6: - index1=self.fan_tray_index - speed = 0 - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1,"front")) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - else: - index1=self.fan_tray_index%7 - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1,"rear")) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - + to 100 (full speed) + + """ + speed = 0 + if self.is_psu_fan: + psu_fan_path= "{}/{}".format(self.psu_hwmon_path, 'fan1_input') + fan_speed_rpm = self.__read_txt_file(psu_fan_path) + if fan_speed_rpm is not None: + speed = (int(fan_speed_rpm,10))*100/33000 + if speed > 100: + speed=100 + else: + return 0 + elif self.get_presence(): + path= "{}/fan_duty_cycle_percentage".format(FAN_PATH) + speed=self.__read_txt_file(path) + if speed is None: + return 0 + return int(int(speed)*100/255) + return int(speed) def get_target_speed(self): @@ -103,22 +146,14 @@ def get_target_speed(self): Returns: An integer, the percentage of full fan speed, in the range 0 (off) to 100 (full speed) - """ - if self.fan_tray_index<=6: - index1=self.fan_tray_index - speed = 0 - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1,"front")) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - else: - index1=self.fan_tray_index%7 - if self.get_presence(): - fan_speed_file = (FAN_PATH + - self.fan_speed_rpm.format(index1+1,"rear")) - speed = self.__read_txt_file(fan_speed_file).strip('\r\n') - return int(speed) + Note: + speed_pc = pwm_target/255*100 + + 0 : when PWM mode is use + pwm : when pwm mode is not use + """ + return self.get_speed() def get_speed_tolerance(self): """ @@ -127,7 +162,7 @@ def get_speed_tolerance(self): An integer, the percentage of variance from target speed which is considered tolerable """ - return 10 + return SPEED_TOLERANCE def set_speed(self, speed): """ @@ -138,13 +173,8 @@ def set_speed(self, speed): Returns: A boolean, True if speed is set successfully, False if not - Note: - Depends on pwm or target mode is selected: - 1) pwm = speed_pc * 255 <-- Currently use this mode. - 2) target_pwm = speed_pc * 100 / 255 - 2.1) set pwm{}_enable to 3 - """ + return False def set_status_led(self, color): @@ -156,7 +186,22 @@ def set_status_led(self, color): Returns: bool: True if status LED state is set successfully, False if not """ - return False + return False #Not supported + + def get_status_led(self): + """ + Gets the state of the fan status LED + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + status=self.get_presence() + if status is None: + return self.STATUS_LED_COLOR_OFF + + return { + 1: self.STATUS_LED_COLOR_GREEN, + 0: self.STATUS_LED_COLOR_RED + }.get(status, self.STATUS_LED_COLOR_OFF) def get_name(self): """ @@ -164,24 +209,30 @@ def get_name(self): Returns: string: The name of the device """ - fan_name = FAN_NAME_LIST[self.fan_tray_index] + + fan_name = FAN_NAME_LIST[self.fan_tray_index*2 + self.fan_index] \ + if not self.is_psu_fan \ + else "PSU-{} FAN-{}".format(self.psu_index+1, self.fan_index+1) return fan_name def get_presence(self): """ - Retrieves the presence of the PSU + Retrieves the presence of the FAN Returns: - bool: True if PSU is present, False if not + bool: True if FAN is present, False if not """ - index1=self.fan_tray_index - if self.fan_tray_index>6: - index1=self.fan_tray_index%7 - fan_direction_file = (FAN_PATH + - self.fan_presence.format(index1+1)) - present_str = self.__read_txt_file(fan_direction_file) or '1' - return int(present_str) == 1 + if self.is_psu_fan: + present_path="{}/psu_present".format(self.psu_status_path) + else: + present_path="{}/fan{}_presence".format(FAN_PATH, self.fan_tray_index + 1) + + val=self.__read_txt_file(present_path) + if val is not None: + return int(val, 10)==1 + else: + return False def get_status(self): """ @@ -189,4 +240,55 @@ def get_status(self): Returns: A boolean value, True if device is operating properly, False if not """ - return self.get_presence() and self.get_speed() > 0 + if self.is_psu_fan: + psu_fan_path= "{}/{}".format(self.psu_status_path, 'psu_power_good') + val=self.__read_txt_file(psu_fan_path) + if val is not None: + return int(val, 10)==1 + else: + return False + else: + status=self.get_presence() + if status is None: + return False + return status + + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + + return "N/A" + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return "N/A" + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return (self.fan_tray_index * 2 + self.fan_index + 1) \ + if not self.is_psu_fan else (self.psu_index + 1) + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return True if not self.is_psu_fan else False + diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan_drawer.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan_drawer.py new file mode 100644 index 000000000000..c299adec1dec --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/fan_drawer.py @@ -0,0 +1,119 @@ +######################################################################## +# +# Module contains an implementation of SONiC Platform Base API and +# provides the Fan-Drawers' information available in the platform. +# +######################################################################## + +try: + from sonic_platform_base.fan_drawer_base import FanDrawerBase +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +FANS_PER_FANTRAY = 2 +MAX_FAN_WATT = 20.0 + +class FanDrawer(FanDrawerBase): + """Platform-specific Fan class""" + + def __init__(self, fantray_index): + + FanDrawerBase.__init__(self) + # FanTray is 0-based in platforms + self.fantrayindex = fantray_index + self.__initialize_fan_drawer() + + + def __initialize_fan_drawer(self): + from sonic_platform.fan import Fan + for i in range(FANS_PER_FANTRAY): + self._fan_list.append(Fan(self.fantrayindex, i)) + + def get_name(self): + """ + Retrieves the fan drawer name + Returns: + string: The name of the device + """ + return "FanTray{}".format(self.fantrayindex+1) + + def get_presence(self): + """ + Retrieves the presence of the device + Returns: + bool: True if device is present, False if not + """ + return self._fan_list[0].get_presence() + + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return self._fan_list[0].get_model() + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return self._fan_list[0].get_serial() + + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return self._fan_list[0].get_status() + + def set_status_led(self, color): + """ + Sets the state of the fan drawer status LED + Args: + color: A string representing the color with which to set the + fan drawer status LED + Returns: + bool: True if status LED state is set successfully, False if not + """ + return self._fan_list[0].set_status_led(color) + def get_status_led(self): + """ + Gets the state of the fan drawer LED + + Returns: + A string, one of the predefined STATUS_LED_COLOR_* strings above + """ + return self._fan_list[0].get_status_led() + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return (self.fantrayindex+1) + + def is_replaceable(self): + """ + Indicate whether this device is replaceable. + Returns: + bool: True if it is replaceable. + """ + return True + + def get_maximum_consumed_power(self): + """ + Retrives the maximum power drawn by Fan Drawer + Returns: + A float, with value of the maximum consumable power of the + component. + """ + return MAX_FAN_WATT + diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/psu.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/psu.py index c26b82ee4c76..78089ca3c986 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/psu.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/psu.py @@ -22,12 +22,20 @@ class Psu(PsuBase): "/sys/bus/i2c/devices/0-005a"] def __init__(self, psu_index): + self._fan_list = [] self.PSU_TEMP_MAX = 85 * 1000 self.PSU_OUTPUT_POWER_MAX = 1300 * 1000 self.PSU_OUTPUT_VOLTAGE_MIN = 11400 self.PSU_OUTPUT_VOLTAGE_MAX = 12600 self.index = psu_index PsuBase.__init__(self) + self.__initialize_fan() + + def __initialize_fan(self): + from sonic_platform.fan import Fan + for fan_index in range(0, 1): + fan = Fan(fan_index, 0, is_psu_fan=True, psu_index=self.index) + self._fan_list.append(fan) def __read_txt_file(self, file_path): try: @@ -38,15 +46,14 @@ def __read_txt_file(self, file_path): pass return "" - def get_fan(self): + def get_fan(self, index): """ Retrieves object representing the fan module contained in this PSU Returns: An object dervied from FanBase representing the fan module contained in this PSU """ - # Hardware not supported - return False + return self._fan_list[index] def get_powergood_status(self): """ @@ -84,7 +91,7 @@ def get_presence(self): bool: True if PSU is present, False if not """ attr_file ='psu_present' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file status = 0 try: with open(attr_path, 'r') as psu_prs: @@ -101,7 +108,7 @@ def get_status(self): A boolean value, True if device is operating properly, False if not """ attr_file = 'psu_power_good' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file status = 0 try: with open(attr_path, 'r') as power_status: @@ -120,13 +127,11 @@ def get_model(self): try: if self.get_presence(): attr_file = 'psu_model_name' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) return str(val) except Exception as e: - logger.error(str(e)) - - return None + return None def get_serial(self): """ @@ -137,13 +142,11 @@ def get_serial(self): try: if self.get_presence(): attr_file = 'psu_serial_number' - attr_path = self.SYSFS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.SYSFS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) return str(val) except Exception as e: - logger.error(str(e)) - - return None + return None def get_voltage(self): """ @@ -154,13 +157,11 @@ def get_voltage(self): try: if self.get_presence(): attr_file = 'psu_v_out' - attr_path = self.STATUS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.STATUS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) - return int(val) + return float(val) / 1000.0 except Exception as e: - logger.error(str(e)) - - return None + return None def get_current(self): """ @@ -171,13 +172,11 @@ def get_current(self): try: if self.get_presence(): attr_file = 'psu_i_out' - attr_path = self.STATUS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.STATUS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) - return int(val) + return float(val) / 1000.0 except Exception as e: - logger.error(str(e)) - - return None + return None def get_power(self): """ @@ -188,13 +187,11 @@ def get_power(self): try: if self.get_presence(): attr_file = 'psu_p_out' - attr_path = self.STATUS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.STATUS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) - return int(val) + return float(val) / 1000000.0 except Exception as e: - logger.error(str(e)) - - return None + return None def get_status_led(self): """ @@ -221,13 +218,11 @@ def get_temperature(self): try: if self.get_presence(): attr_file = 'psu_temp1_input' - attr_path = self.STATUS_PSU_DIR[self.index-1] +'/' + attr_file + attr_path = self.STATUS_PSU_DIR[self.index] +'/' + attr_file val = self.__read_txt_file(attr_path) - return int(val) + return float(val) / 1000.0 except Exception as e: - logger.error(str(e)) - - return None + return None def get_temperature_high_threshold(self): """ @@ -272,7 +267,42 @@ def get_position_in_parent(self): Returns: integer: The 1-based relative physical position in parent device or -1 if cannot determine the position """ - return -1 + return self.index + 1 def is_replaceable(self): return True + + def get_revision(self): + """ + Retrieves the hardware revision of the device + Returns: + string: Revision value of device + """ + try: + if self.get_presence(): + attr_file = 'psu_mfr_revision' + attr_path = self.STATUS_PSU_DIR[self.index] +'/' + attr_file + with open(attr_path, 'r') as revision: + val = revision.read() + return val.strip() + except IOError: + return None + + def get_num_fans(self): + """ + Retrieves the number of fan modules available on this PSU + + Returns: + An integer, the number of fan modules available on this PSU + """ + return len(self._fan_list) + + def get_all_fans(self): + """ + Retrieves all fan modules available on this PSU + + Returns: + A list of objects derived from FanBase representing all fan + modules available on this PSU + """ + return self._fan_list diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/sfp.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/sfp.py index 004bda2ada66..63225a040472 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/sfp.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/sfp.py @@ -11,6 +11,8 @@ from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_InterfaceId from sonic_platform_base.sonic_sfp.qsfp_dd import qsfp_dd_Dom from sonic_platform_base.sonic_sfp.sffbase import sffbase + from sonic_platform_base.sonic_sfp.sff8024 import type_abbrv_name + from sonic_platform_base.sonic_sfp.sff8024 import type_of_media_interface from sonic_py_common.logger import Logger import sys except ImportError as e: @@ -277,6 +279,7 @@ def __init__(self, sfp_index, sfp_type): # Init index self.index = sfp_index self.port_num = self.index + 1 + self.abbrv = None # Init eeprom path eeprom_low_path = '/sys/bus/i2c/devices/0-00{}/eeprom_low' @@ -328,7 +331,7 @@ def get_presence(self): except IOError: return False logger.log_info("debug:port_ %s sfp presence is %s" % (str(self.index), str(presence))) - return presence + return True if presence == 1 else False def _read_eeprom_specific_bytes(self, offset, num_bytes, page = 0): sysfsfile_eeprom = None @@ -383,8 +386,10 @@ def _detect_sfp_type(self, sfp_type): if eeprom_raw: if eeprom_raw[0] in QSFP_TYPE_CODE_LIST: self.sfp_type = QSFP_TYPE + self.abbrv = type_abbrv_name[eeprom_raw[0]] elif eeprom_raw[0] in QSFP_DD_TYPE_CODE_LIST: self.sfp_type = QSFP_DD_TYPE + self.abbrv = type_abbrv_name[eeprom_raw[0]] else: # we don't regonize this identifier value, treat the xSFP module as the default type self.sfp_type = sfp_type @@ -395,6 +400,7 @@ def _detect_sfp_type(self, sfp_type): # eeprom_raw being None indicates the module is not present. # in this case we treat it as the default type according to the SKU self.sfp_type = sfp_type + self.abbrv = type_abbrv_name['18'] def _dom_capability_detect(self): @@ -426,7 +432,7 @@ def _dom_capability_detect(self): if qsfp_dom_capability_raw is not None: qsfp_version_compliance_raw = self._read_eeprom_specific_bytes(QSFP_VERSION_COMPLIANCE_OFFSET, QSFP_VERSION_COMPLIANCE_WIDTH) qsfp_version_compliance = int(qsfp_version_compliance_raw[0], 16) - dom_capability = sfpi_obj.parse_qsfp_dom_capability(qsfp_dom_capability_raw, 0) + dom_capability = sfpi_obj.parse_dom_capability(qsfp_dom_capability_raw, 0) if qsfp_version_compliance >= 0x08: self.dom_temp_supported = dom_capability['data']['Temp_support']['value'] == 'On' self.dom_volt_supported = dom_capability['data']['Voltage_support']['value'] == 'On' @@ -462,11 +468,13 @@ def _dom_capability_detect(self): self.dom_temp_supported = True self.dom_volt_supported = True + self.dom_rx_tx_power_bias_supported = False + self.dom_tx_bias_power_supported = True # two types of QSFP-DD cable types supported: Copper and Optical. qsfp_dom_capability_raw = self._read_eeprom_specific_bytes(QSFP_DD_FLAT_MEM['offset'], QSFP_DD_FLAT_MEM['width'], QSFP_DD_FLAT_MEM['page']) if qsfp_dom_capability_raw is not None: - dom_capability = sfpi_obj.parse_qsfp_dom_capability(qsfp_dom_capability_raw, 0) + dom_capability = sfpi_obj.parse_dom_capability(qsfp_dom_capability_raw, 0) if dom_capability['data']['Flat_MEM']['value'] == 'Off': ext_dd = ext_qsfp_dd() @@ -474,8 +482,8 @@ def _dom_capability_detect(self): mon_sup_data = ext_dd.parse_mon_capability(mon_sup_raw, 0) self.dom_thresholds_supported = mon_sup_data['data']['Tx_power_support']['value'] == 'On' - self.dom_rx_power_supported = mon_sup_data['data']['Tx_power_support']['value'] == 'On' - self.dom_tx_power_supported = mon_sup_data['data']['Rx_power_support']['value'] == 'On' + self.dom_rx_power_supported = mon_sup_data['data']['Rx_power_support']['value'] == 'On' + self.dom_tx_power_supported = mon_sup_data['data']['Tx_power_support']['value'] == 'On' self.dom_tx_bias_supported = mon_sup_data['data']['Tx_bias_support']['value'] == 'On' #self.dom_temp_supported = mon_sup_data['data']['Temp_support']['value'] == 'On' #self.dom_volt_supported = mon_sup_data['data']['Voltage_support']['value'] == 'On' @@ -490,7 +498,7 @@ def _dom_capability_detect(self): def _convert_string_to_num(self, value_str): if "-inf" in value_str: - return 'N/A' + return '-inf' elif "Unknown" in value_str: return 'N/A' elif 'dBm' in value_str: @@ -534,8 +542,19 @@ def get_transceiver_info(self): application_advertisement |1*255VCHAR |supported applications advertisement ================================================================================ """ + self.reinit() + info_dict_keys = [ + 'type', 'hardware_rev', 'serial', 'manufacturer', + 'model', 'connector', 'encoding', 'ext_identifier', + 'ext_rateselect_compliance', 'cable_type', 'cable_length', + 'nominal_bit_rate', 'specification_compliance', 'vendor_date', + 'vendor_oui', 'application_advertisement', 'type_abbrv_name'] + transceiver_info_dict = {} compliance_code_dict = {} + transceiver_info_dict = dict.fromkeys(info_dict_keys, "NA") + transceiver_info_dict["specification_compliance"] = '{}' + transceiver_info_dict['type_abbrv_name'] = self.abbrv #QSFP if self.sfp_type == QSFP_TYPE: @@ -684,6 +703,7 @@ def get_transceiver_info(self): if sfp_media_type_dict is None: return None + transceiver_info_dict['specification_compliance'] = type_of_media_interface[sfp_media_type_raw[0]] host_media_list = "" sfp_application_type_first_list = self._read_eeprom_specific_bytes((XCVR_FIRST_APPLICATION_LIST_OFFSET_QSFP_DD), XCVR_FIRST_APPLICATION_LIST_WIDTH_QSFP_DD) possible_application_count = 8 @@ -711,7 +731,6 @@ def get_transceiver_info(self): transceiver_info_dict['encoding'] = "Not supported for CMIS cables" transceiver_info_dict['ext_identifier'] = str(sfp_ext_identifier_data['data']['Extended Identifier']['value']) transceiver_info_dict['ext_rateselect_compliance'] = "Not supported for CMIS cables" - transceiver_info_dict['specification_compliance'] = "Not supported for CMIS cables" transceiver_info_dict['cable_type'] = "Length Cable Assembly(m)" transceiver_info_dict['cable_length'] = str(sfp_cable_len_data['data']['Length Cable Assembly(m)']['value']) transceiver_info_dict['nominal_bit_rate'] = "Not supported for CMIS cables" @@ -748,6 +767,7 @@ def get_transceiver_bulk_status(self): TX power |INT |TX output power in mW ======================================================================== """ + self.reinit() transceiver_dom_info_dict = {} dom_info_dict_keys = ['temperature', 'voltage', @@ -844,7 +864,7 @@ def get_transceiver_bulk_status(self): dom_data_raw = self._read_eeprom_specific_bytes(QSFP_DD_CHANNL_MON['offset'], QSFP_DD_CHANNL_MON['width'], QSFP_DD_CHANNL_MON['page']) dom_channel_monitor_data = sfpd_obj.parse_channel_monitor_params(dom_data_raw, 0) - if self.dom_rx_power_supported: + if self.dom_tx_power_supported: transceiver_dom_info_dict['tx1power'] = dom_channel_monitor_data['data']['TX1Power']['value'] transceiver_dom_info_dict['tx2power'] = dom_channel_monitor_data['data']['TX2Power']['value'] transceiver_dom_info_dict['tx3power'] = dom_channel_monitor_data['data']['TX3Power']['value'] @@ -907,6 +927,7 @@ def get_transceiver_threshold_info(self): txbiaslowwarning |FLOAT |Low Warning Threshold value of tx Bias Current in mA. ======================================================================== """ + self.reinit() transceiver_dom_threshold_info_dict = {} dom_info_dict_keys = ['temphighalarm', 'temphighwarning', @@ -1031,6 +1052,7 @@ def get_rx_los(self): A Boolean, True if SFP has RX LOS, False if not. Note : RX LOS status is latched until a call to get_rx_los or a reset. """ + self.reinit() if not self.dom_supported: return None @@ -1052,7 +1074,7 @@ def get_rx_los(self): if self.dom_rx_tx_power_bias_supported: #not implement dom_channel_monitor_raw = self._read_eeprom_specific_bytes(QSFP_DD_CHANNL_RX_LOS_STATUS['offset'], QSFP_DD_CHANNL_RX_LOS_STATUS['width'], QSFP_DD_CHANNL_RX_LOS_STATUS['page']) if dom_channel_monitor_raw is not None: - rx_los_data = int(dom_channel_monitor_raw[0], 8) + rx_los_data = int(dom_channel_monitor_raw[0], 16) rx_los_list.append(rx_los_data & 0x01 != 0) rx_los_list.append(rx_los_data & 0x02 != 0) rx_los_list.append(rx_los_data & 0x04 != 0) @@ -1072,6 +1094,7 @@ def get_tx_fault(self): A Boolean, True if SFP has TX fault, False if not Note : TX fault status is lached until a call to get_tx_fault or a reset. """ + self.reinit() if not self.dom_supported: return None @@ -1104,6 +1127,7 @@ def get_tx_disable(self): for SFP, the TX Disable State and Soft TX Disable Select is ORed as the tx_disable status returned These two bits are bit 7 & 6 in byte 110 page a2 respectively """ + self.reinit() if not self.dom_supported: return None @@ -1174,6 +1198,7 @@ def get_temperature(self): Returns: An integer number of current temperature in Celsius """ + self.reinit() if not self.dom_supported: return None #QSFP @@ -1218,6 +1243,7 @@ def get_voltage(self): Returns: An integer number of supply voltage in mV """ + self.reinit() if not self.dom_supported: return None @@ -1263,6 +1289,7 @@ def get_tx_bias(self): for channel 0 to channel 4. Ex. ['110.09', '111.12', '108.21', '112.09'] """ + self.reinit() tx_bias_list = [] #QSFP @@ -1289,7 +1316,7 @@ def get_tx_bias(self): if sfpd_obj is None: return None - if dom_tx_bias_power_supported: + if self.dom_tx_bias_power_supported: dom_tx_bias_raw = self._read_eeprom_specific_bytes(QSFP_DD_TX_BIAS['offset'], QSFP_DD_TX_BIAS['width'], QSFP_DD_TX_BIAS['page']) if dom_tx_bias_raw is not None: dom_tx_bias_data = sfpd_obj.parse_dom_tx_bias(dom_tx_bias_raw, 0) @@ -1313,6 +1340,7 @@ def get_rx_power(self): power in mW for channel 0 to channel 4. Ex. ['1.77', '1.71', '1.68', '1.70'] """ + self.reinit() rx_power_list = [] #QSFP @@ -1368,6 +1396,7 @@ def get_tx_power(self): for channel 0 to channel 4. Ex. ['1.86', '1.86', '1.86', '1.86'] """ + self.reinit() tx_power_list = [] #QSFP @@ -1513,3 +1542,40 @@ def get_serial(self): transceiver_dom_info_dict = self.get_transceiver_info() return transceiver_dom_info_dict.get("serial", "N/A") + def get_status(self): + """ + Retrieves the operational status of the device + Returns: + A boolean value, True if device is operating properly, False if not + """ + return self.get_presence() and not self.get_reset_status() + + def get_position_in_parent(self): + """ + Returns: + Temp return 0 + """ + return 0 + + def is_replaceable(self): + """ + Retrieves if replaceable + Returns: + A boolean value, True if replaceable + """ + return True + + def get_error_description(self): + """ + Get error description + + Args: + error_code: The error code returned by _get_error_code + + Returns: + The error description + """ + if self.get_presence(): + return self.SFP_STATUS_OK + else: + return self.SFP_STATUS_UNPLUGGED diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/thermal.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/thermal.py index f45d930e87f5..730f5b1c6c21 100644 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/thermal.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/sonic_platform/thermal.py @@ -9,6 +9,7 @@ import os import os.path +import subprocess try: from sonic_platform_base.thermal_base import ThermalBase @@ -28,8 +29,14 @@ class Thermal(ThermalBase): "/sys/bus/i2c/devices/0-004d/", "/sys/bus/i2c/devices/0-004e/"] + IPMI_SENSOR_NR = ["0x30", "0x31", "0x32", "0x33", "0x34", "0x35", "0x36"] + def __init__(self, thermal_index): self.index = thermal_index + self.lnc = None + self.lcr = None + self.unc = None + self.ucr = None # Add thermal name self.THERMAL_NAME_LIST.append("Top-Rear") @@ -40,6 +47,20 @@ def __init__(self, thermal_index): self.THERMAL_NAME_LIST.append("Bottom-Front") self.THERMAL_NAME_LIST.append("Bottom-Rear") ThermalBase.__init__(self) + self.minimum_thermal = self.get_temperature() + self.maximum_thermal = self.get_temperature() + self.__initialize_threshold() + + def __initialize_threshold(self): + cmd = ["ipmitool", "raw", "0x4", "0x27"] + if self.lnc is None: + cmd.append(self.IPMI_SENSOR_NR[self.index]) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE) + out, err = p.communicate() + self.unc = float(int(out.split()[4],16)) + self.ucr = float(int(out.split()[5],16)) + self.lnc = float(int(out.split()[1],16) if int(out.split()[1],16) != 0 else 2) + self.lcr = float(int(out.split()[2],16)) def __read_txt_file(self, file_path): try: @@ -57,7 +78,7 @@ def __get_temp(self, temp_file): return "{:.3f}".format(temp) def __set_threshold(self, file_name, temperature): - temp_file_path = os.path.join(self.hwmon_path, file_name) + temp_file_path = os.path.join(self.SYSFS_THERMAL_DIR[self.index], file_name) try: with open(temp_file_path, 'w') as fd: fd.write(str(temperature)) @@ -81,7 +102,8 @@ def get_low_threshold(self): :return: A float number, the low threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - return int(9) + + return self.lnc def get_low_critical_threshold(self): """ @@ -89,7 +111,8 @@ def get_low_critical_threshold(self): :return: A float number, the low critical threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - return int(7) + + return self.lcr def get_high_threshold(self): """ @@ -98,20 +121,8 @@ def get_high_threshold(self): A float number, the high threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - if self.index==0: - return int(56) - elif self.index==1: - return int(74) - elif self.index==2: - return int(55) - elif self.index==3: - return int(74) - elif self.index==4: - return int(55) - elif self.index==5: - return int(74) - else: - return int(56) + + return self.unc def get_high_critical_threshold(self): """ @@ -119,20 +130,8 @@ def get_high_critical_threshold(self): :return: A float number, the high critical threshold temperature of thermal in Celsius up to nearest thousandth of one degree Celsius, e.g. 30.125 """ - if self.index==0: - return int(58) - elif self.index==1: - return int(76) - elif self.index==2: - return int(57) - elif self.index==3: - return int(76) - elif self.index==4: - return int(57) - elif self.index==5: - return int(76) - else: - return int(58) + + return self.ucr def get_name(self): """ @@ -144,12 +143,12 @@ def get_name(self): def get_presence(self): """ - Retrieves the presence of the PSU + Retrieves the presence of the sensor Returns: - bool: True if PSU is present, False if not + bool: True if sensor is present, False if not """ temp_file = "temp1_input" - temp_file_path = os.path.join(self.hwmon_path, temp_file) + temp_file_path = os.path.join(self.SYSFS_THERMAL_DIR[self.index], temp_file) return os.path.isfile(temp_file_path) def get_status(self): @@ -163,3 +162,63 @@ def get_status(self): return True + def get_model(self): + """ + Retrieves the model number (or part number) of the device + Returns: + string: Model/part number of device + """ + return "None" + + def get_serial(self): + """ + Retrieves the serial number of the device + Returns: + string: Serial number of device + """ + return "None" + + def is_replaceable(self): + """ + Retrieves whether thermal module is replaceable + Returns: + A boolean value, True if replaceable, False if not + """ + return False + + def get_position_in_parent(self): + """ + Retrieves 1-based relative physical position in parent device. + If the agent cannot determine the parent-relative position + for some reason, or if the associated value of + entPhysicalContainedIn is'0', then the value '-1' is returned + Returns: + integer: The 1-based relative physical position in parent device + or -1 if cannot determine the position + """ + return self.index + 1 + + def get_minimum_recorded(self): + """ + Retrieves the minimum recorded temperature of thermal + Returns: + A float number, the minimum recorded temperature of thermal in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + tmp = self.get_temperature() + if tmp < self.minimum_thermal: + self.minimum_thermal = tmp + return self.minimum_thermal + + def get_maximum_recorded(self): + """ + Retrieves the maximum recorded temperature of thermal + Returns: + A float number, the maximum recorded temperature of thermal in Celsius + up to nearest thousandth of one degree Celsius, e.g. 30.125 + """ + tmp = self.get_temperature() + if tmp > self.maximum_thermal: + self.maximum_thermal = tmp + return self.maximum_thermal + diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_firmware_version b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_firmware_version new file mode 100755 index 000000000000..0ce6e8624436 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_firmware_version @@ -0,0 +1,24 @@ +#!/bin/bash +ver_str=$(ipmitool raw 0x30 0x23 2>>/dev/null) +fpga_ver=$(echo $ver_str | awk '{printf $3}') +cpld1_ver=$(echo $ver_str | awk '{printf $4}') +cpld2_ver=$(echo $ver_str | awk '{printf $5}') +fan_cpld_ver=$(echo $ver_str | awk '{printf $6}') + +cpld1_ver=$( printf "%d" 0x$cpld1_ver ) +cpld2_ver=$( printf "%d" 0x$cpld2_ver ) +fan_cpld_ver=$( printf "%d" 0x$fan_cpld_ver ) +fpga_ver=$( printf "%d" 0x$fpga_ver ) + +cpld1_ver_path="/sys/bus/i2c/devices/0-0061/version" +cpld2_ver_path="/sys/bus/i2c/devices/0-0062/version" +fan_cpld_ver_path="/sys/bus/i2c/devices/0-0066/version" +fpga_ver_path="/sys/bus/i2c/devices/0-0060/version" + +echo $cpld1_ver > $cpld1_ver_path +echo $cpld2_ver > $cpld2_ver_path +echo $fpga_ver > $fpga_ver_path +echo $fan_cpld_ver > $fan_cpld_ver_path + +exit 0 + diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_led b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_led old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_pld b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_pld old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_sync b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/platform_sync old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-fanthrml-monitor b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-fanthrml-monitor old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-led-monitor b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-led-monitor old mode 100644 new mode 100755 index ba4f4c8dae99..364ac53b1865 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-led-monitor +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-led-monitor @@ -2,6 +2,7 @@ #0=off, 1=green, 2=amber, 3=blk_green led_state=0 +pre_loc_state=0 #$1=led_no(1=loc, 2=diag, 3=fan, 4=psu1, 5=psu2) bmc_led_read() @@ -128,37 +129,10 @@ bmc_led_read() return 0 } -#$1=led_no(1=loc, 2=diag, 3=fan, 4=psu1, 5=psu2) -#$2=led_val(0=off, 1=green, 2=amber, 3=blk_green) +#$1=led_val(0=off, 1=green, 2=amber, 3=blk_green) bmc_led_write() { - led_val=$2 - val=$(ipmitool raw 0x30 0x97 2>>/dev/null) - loc_val=$(echo $val | awk '{printf $1}') - diag_val=$(echo $val | awk '{printf $2}') - fan_val=$(echo $val | awk '{printf $3}') - psu1_val=$(echo $val | awk '{printf $4}') - psu2_val=$(echo $val | awk '{printf $5}') - - loc_val=$( printf "%d" 0x$loc_val ) - diag_val=$( printf "%d" 0x$diag_val ) - fan_val=$( printf "%d" 0x$fan_val ) - psu1_val=$( printf "%d" 0x$psu1_val ) - psu2_val=$( printf "%d" 0x$psu2_val ) - - if [ $1 -eq 1 ];then - loc_val=$(($loc_val & $led_val)) - elif [ $1 -eq 2 ];then - diag_val=$(($diag_val & $led_val)) - elif [ $1 -eq 3 ];then - fan_val=$(($fan_val & $led_val)) - elif [ $1 -eq 4 ];then - psu1_val=$(($psu1_val & $led_val)) - else - psu2_val=$(($psu2_val & $led_val)) - fi - - ipmitool raw 0x30 0x96 $loc_val $diag_val $fan_val $psu1_val $psu2_val 1>>/dev/null 2>>/dev/null + ipmitool raw 0x30 0x2b 0x2 0xc0 0x0 0x55 0x"$1"0 1>>/dev/null 2>>/dev/null } LED_monitor() @@ -171,7 +145,13 @@ LED_monitor() do if [ -e /sys/bus/i2c/devices/0-0060/sys_led_diag ];then loc_state=$(cat /sys/bus/i2c/devices/0-0060/sys_led_loc | awk '{printf $1}') - bmc_led_write 1 $loc_state + if [ $loc_state -gt 4 ]; then + loc_state=4 + fi + if [ $loc_state != $pre_loc_state ]; then + bmc_led_write $loc_state + pre_loc_state=$loc_state + fi bmc_led_read 2 if [ $? -eq 1 ];then diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-psu-monitor b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-psu-monitor old mode 100644 new mode 100755 index bcb3502e4a7c..d5cfd719344b --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-psu-monitor +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-psu-monitor @@ -85,61 +85,73 @@ get_PSU_information() #PSU1 Vin add_byte 1 2 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_v_in fi #PSU2 Vin add_byte 3 4 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_v_in fi #PSU 1 Vout add_byte 5 6 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_v_out fi #PSU 2 Vout add_byte 7 8 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_v_out fi #PSU 1 Iin add_byte 9 10 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_i_in fi #PSU 2 Iin add_byte 11 12 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_i_in fi #PSU 1 Iout add_byte 13 14 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_i_out fi #PSU 2 Iout add_byte 15 16 if [ $? -eq 1 ];then + Value=$((Value * 10)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_i_out fi #PSU 1 Pin add_byte 17 18 if [ $? -eq 1 ];then + Value=$((Value * 1000000)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_p_in fi #PSU 2 Pin add_byte 19 20 if [ $? -eq 1 ];then + Value=$((Value * 1000000)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_p_in fi #PSU 1 Pout add_byte 21 22 if [ $? -eq 1 ];then + Value=$((Value * 1000000)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_p_out fi #PSU 2 Pout add_byte 23 24 if [ $? -eq 1 ];then + Value=$((Value * 1000000)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_p_out fi #PSU 1 Fan speed @@ -156,9 +168,11 @@ get_PSU_information() #----------------93->/58/59----psu_fan1_fault psu_temp1_input psu_fan1_duty_cycle #PSU 1 Temp1 byte_read 25 + Value=$((Value * 1000)) echo $Value > /sys/bus/i2c/devices/0-005a/psu_temp1_input #PSU 2 Temp1 byte_read 26 + Value=$((Value * 1000)) echo $Value > /sys/bus/i2c/devices/0-0059/psu_temp1_input if [ $debug_flag -eq 0 ];then #PSU 1 Fan command @@ -314,8 +328,8 @@ PSU_monitor() { while true - do - + do + get_PSU_information if [ $debug_flag -eq 1 ];then bmc_fan_speed_ctrl diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-qsfp-monitor b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sonic-qsfp-monitor old mode 100644 new mode 100755 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sw_to3200k_watchdog.sh b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sw_to3200k_watchdog.sh new file mode 100755 index 000000000000..082c3497cdc8 --- /dev/null +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/sw_to3200k_watchdog.sh @@ -0,0 +1,5 @@ +#! /bin/bash + +#we don't have watchdog design in SW3200K so always return OK to skip + +exit 0 diff --git a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/wistron_sw_to3200k_util.py b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/wistron_sw_to3200k_util.py old mode 100644 new mode 100755 index 46121e6e7eed..c7b65e16e2c4 --- a/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/wistron_sw_to3200k_util.py +++ b/platform/innovium/sonic-platform-modules-wistron/sw-to3200k/utils/wistron_sw_to3200k_util.py @@ -229,6 +229,18 @@ def device_install(): print(output) if FORCE == 0: return status + + status, output = log_os_system("cp /usr/share/sonic/device/x86_64-wistron_sw_to3200k-r0/smartd.conf /etc/;systemctl restart smartd.service", 1) + if status: + print(output) + if FORCE == 0: + return status + + status, output = log_os_system("cp /usr/share/sonic/device/x86_64-wistron_sw_to3200k-r0/watchdog-control.service /usr/lib/systemd/system/", 1) + if status: + print(output) + if FORCE == 0: + return status return def device_uninstall(): @@ -284,12 +296,6 @@ def do_install(): else: print(PROJECT_NAME.upper()+" devices detected....") - status, output = log_os_system( - "/bin/sh /usr/local/bin/platform_api_mgnt.sh init", 1) - if status: - print(output) - if FORCE == 0: - return status return def do_uninstall(): diff --git a/platform/mellanox/fw.dep b/platform/mellanox/fw.dep index f57bad8eb9b0..228f6dc87e36 100644 --- a/platform/mellanox/fw.dep +++ b/platform/mellanox/fw.dep @@ -14,7 +14,3 @@ $(MLNX_SPC2_FW_FILE)_DEP_FILES := $(DEP_FILES) $(MLNX_SPC3_FW_FILE)_CACHE_MODE := GIT_CONTENT_SHA $(MLNX_SPC3_FW_FILE)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) $(MLNX_SPC3_FW_FILE)_DEP_FILES := $(DEP_FILES) - -$(MLNX_SPC4_FW_FILE)_CACHE_MODE := GIT_CONTENT_SHA -$(MLNX_SPC4_FW_FILE)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST) -$(MLNX_SPC4_FW_FILE)_DEP_FILES := $(DEP_FILES) diff --git a/platform/mellanox/fw.mk b/platform/mellanox/fw.mk index 6ce3c8faabca..6dff408031b7 100644 --- a/platform/mellanox/fw.mk +++ b/platform/mellanox/fw.mk @@ -23,10 +23,13 @@ MLNX_FW_BASE_URL = SIMX_VERSION = 5.1-1065 -ifneq ($(MLNX_FW_BASE_URL), ) FW_FROM_URL = y -else -FW_FROM_URL = n + +MLNX_FW_ASSETS_RELEASE_TAG = fw-2010.4150 +MLNX_FW_ASSETS_URL = $(MLNX_ASSETS_GITHUB_URL)/releases/download/$(MLNX_FW_ASSETS_RELEASE_TAG) + +ifeq ($(MLNX_FW_BASE_URL), ) +MLNX_FW_BASE_URL = $(MLNX_FW_ASSETS_URL) endif MLNX_SPC_FW_VERSION = 13.2010.4150 @@ -44,12 +47,7 @@ MLNX_SPC3_FW_FILE = fw-SPC3-rel-$(subst .,_,$(MLNX_SPC3_FW_VERSION))-EVB.mfa $(MLNX_SPC3_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) $(MLNX_SPC3_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC3_FW_FILE) -MLNX_SPC4_FW_VERSION = 34.2010.4150 -MLNX_SPC4_FW_FILE = fw-SPC4-rel-$(subst .,_,$(MLNX_SPC4_FW_VERSION))-EVB.mfa -$(MLNX_SPC4_FW_FILE)_PATH = $(MLNX_FW_BASE_PATH) -$(MLNX_SPC4_FW_FILE)_URL = $(MLNX_FW_BASE_URL)/$(MLNX_SPC4_FW_FILE) - -MLNX_FW_FILES = $(MLNX_SPC_FW_FILE) $(MLNX_SPC2_FW_FILE) $(MLNX_SPC3_FW_FILE) $(MLNX_SPC4_FW_FILE) +MLNX_FW_FILES = $(MLNX_SPC_FW_FILE) $(MLNX_SPC2_FW_FILE) $(MLNX_SPC3_FW_FILE) ifeq ($(FW_FROM_URL),n) SONIC_COPY_FILES += $(MLNX_FW_FILES) @@ -62,4 +60,3 @@ MLNX_FILES += $(MLNX_FW_FILES) export MLNX_SPC_FW_FILE export MLNX_SPC2_FW_FILE export MLNX_SPC3_FW_FILE -export MLNX_SPC4_FW_FILE diff --git a/platform/mellanox/mlnx-fw-upgrade.j2 b/platform/mellanox/mlnx-fw-upgrade.j2 index 86fd32e6a89a..676d07cf3e49 100755 --- a/platform/mellanox/mlnx-fw-upgrade.j2 +++ b/platform/mellanox/mlnx-fw-upgrade.j2 @@ -28,15 +28,13 @@ declare -r LIST_CONTENT_FILE="/tmp/mlxfwmanager-list-content.log" declare -r SPC1_ASIC="spc1" declare -r SPC2_ASIC="spc2" declare -r SPC3_ASIC="spc3" -declare -r SPC4_ASIC="spc4" declare -r UNKN_ASIC="unknown" declare -r UNKN_MST="unknown" declare -rA FW_FILE_MAP=( \ - [$SPC1_ASIC]="/etc/mlnx/fw-SPC.mfa" \ - [$SPC2_ASIC]="/etc/mlnx/fw-SPC2.mfa" \ - [$SPC3_ASIC]="/etc/mlnx/fw-SPC3.mfa" \ - [$SPC4_ASIC]="/etc/mlnx/fw-SPC4.mfa" \ + [$SPC1_ASIC]="fw-SPC.mfa" \ + [$SPC2_ASIC]="fw-SPC2.mfa" \ + [$SPC3_ASIC]="fw-SPC3.mfa" \ ) IMAGE_UPGRADE="${NO_PARAM}" @@ -162,7 +160,6 @@ function GetAsicType() { local -r SPC1_PRODUCT_ID="cb84" local -r SPC2_PRODUCT_ID="cf6c" local -r SPC3_PRODUCT_ID="cf70" - local -r SPC4_PRODUCT_ID="cf80" if lspci -n | grep "${VENDOR_ID}:${SPC1_PRODUCT_ID}" &>/dev/null; then echo "${SPC1_ASIC}" @@ -173,9 +170,6 @@ function GetAsicType() { elif lspci -n | grep "${VENDOR_ID}:${SPC3_PRODUCT_ID}" &>/dev/null; then echo "${SPC3_ASIC}" exit "${EXIT_SUCCESS}" - elif lspci -n | grep "${VENDOR_ID}:${SPC4_PRODUCT_ID}" &>/dev/null; then - echo "${SPC4_ASIC}" - exit "${EXIT_SUCCESS}" fi echo "${UNKN_ASIC}" @@ -227,17 +221,17 @@ function RunFwUpdateCmd() { } function UpgradeFW() { - local -r _FS_MOUNTPOINT="$1" + local -r _FW_BIN_PATH="$1" local -r _ASIC_TYPE="$(GetAsicType)" if [[ "${_ASIC_TYPE}" = "${UNKN_ASIC}" ]]; then ExitFailure "failed to detect ASIC type" fi - if [ ! -z "${_FS_MOUNTPOINT}" ]; then - local -r _FW_FILE="${_FS_MOUNTPOINT}/${FW_FILE_MAP[$_ASIC_TYPE]}" + if [ ! -z "${_FW_BIN_PATH}" ]; then + local -r _FW_FILE="${_FW_BIN_PATH}/${FW_FILE_MAP[$_ASIC_TYPE]}" else - local -r _FW_FILE="${FW_FILE_MAP[$_ASIC_TYPE]}" + local -r _FW_FILE="/etc/mlnx/${FW_FILE_MAP[$_ASIC_TYPE]}" fi if [ ! -f "${_FW_FILE}" ]; then @@ -280,16 +274,29 @@ function UpgradeFWFromImage() { local -r _NEXT_SONIC_IMAGE="$(sonic-installer list | grep "Next: " | cut -f2 -d' ')" local -r _CURRENT_SONIC_IMAGE="$(sonic-installer list | grep "Current: " | cut -f2 -d' ')" - local -r _FS_PATH="/host/image-${_NEXT_SONIC_IMAGE#SONiC-OS-}/fs.squashfs" - local -r _FS_MOUNTPOINT="/tmp/image-${_NEXT_SONIC_IMAGE#SONiC-OS-}-fs" - if [[ "${_CURRENT_SONIC_IMAGE}" == "${_NEXT_SONIC_IMAGE}" ]]; then ExitSuccess "firmware is up to date" + fi + + # /host/image-/platform/fw/asic is now the new location for FW binaries. + # Prefere this path and if it does not exist use squashfs as a fallback. + local -r _PLATFORM_FW_BIN_PATH="/host/image-${_NEXT_SONIC_IMAGE#SONiC-OS-}/platform/fw/asic/" + + if [[ -d "${_PLATFORM_FW_BIN_PATH}" ]]; then + LogInfo "Using FW binaries from ${_PLATFORM_FW_BIN_PATH}" + + UpgradeFW "${_PLATFORM_FW_BIN_PATH}" else + local -r _FS_PATH="/host/image-${_NEXT_SONIC_IMAGE#SONiC-OS-}/fs.squashfs" + local -r _FS_MOUNTPOINT="/tmp/image-${_NEXT_SONIC_IMAGE#SONiC-OS-}-fs" + local -r _FW_BIN_PATH="${_FS_MOUNTPOINT}/etc/mlnx/" + + LogInfo "Using FW binaries from ${_FW_BIN_PATH}" + mkdir -p "${_FS_MOUNTPOINT}" mount -t squashfs "${_FS_PATH}" "${_FS_MOUNTPOINT}" - UpgradeFW "${_FS_MOUNTPOINT}" + UpgradeFW "${_FW_BIN_PATH}" umount -rf "${_FS_MOUNTPOINT}" rm -rf "${_FS_MOUNTPOINT}" diff --git a/platform/mellanox/sdk-src/sx-kernel/Makefile b/platform/mellanox/sdk-src/sx-kernel/Makefile index 26ccbd02516a..12256fd4b725 100644 --- a/platform/mellanox/sdk-src/sx-kernel/Makefile +++ b/platform/mellanox/sdk-src/sx-kernel/Makefile @@ -5,6 +5,8 @@ MAIN_TARGET = sx-kernel_1.mlnx.$(MLNX_SDK_DEB_VERSION)_$(CONFIGURED_ARCH).deb DERIVED_TARGETS = sx-kernel-dev_1.mlnx.$(MLNX_SDK_DEB_VERSION)_$(CONFIGURED_ARCH).deb PACKAGE_NAME = sx_kernel +MLNX_SX_KERNEL_GITHUB_URL_BASE = https://github.com/Mellanox/Spectrum-SDK-Drivers/archive/refs/heads + $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : # get sources @@ -13,9 +15,15 @@ $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : wget -c $(MLNX_SDK_SOURCE_BASE_URL)/$(PACKAGE_NAME)-$(MLNX_SDK_VERSION)-$(MLNX_SDK_ISSU_VERSION).tar.gz -O - | tar -xz pushd sx_kernel-$(MLNX_SDK_VERSION)-$(MLNX_SDK_ISSU_VERSION) else - pushd Switch-SDK-drivers - git reset --hard - git clean -xfd + rm -rf Spectrum-SDK-Drivers-$(MLNX_SDK_VERSION) + wget -c $(MLNX_SX_KERNEL_GITHUB_URL_BASE)/$(MLNX_SDK_VERSION).zip + unzip $(MLNX_SDK_VERSION).zip + rm -rf $(MLNX_SDK_VERSION).zip + + pushd Spectrum-SDK-Drivers-$(MLNX_SDK_VERSION) + ln -s ./sx_scripts/Makefile ./Makefile + ln -s ./sx_scripts/makefile ./makefile + ln -s ./sx_scripts/configure ./configure fi # build diff --git a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers b/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers deleted file mode 160000 index c66b48a7aa60..000000000000 --- a/platform/mellanox/sdk-src/sx-kernel/Switch-SDK-drivers +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c66b48a7aa609b4e4a927c5f3fa9039d1a9bde28 diff --git a/platform/mellanox/sdk.mk b/platform/mellanox/sdk.mk index 8d2b43171fdd..5e1df75e9f07 100644 --- a/platform/mellanox/sdk.mk +++ b/platform/mellanox/sdk.mk @@ -14,11 +14,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # -MLNX_SDK_BASE_PATH = $(PLATFORM_PATH)/sdk-src/sx-kernel/Switch-SDK-drivers/bin/ -MLNX_SDK_PKG_BASE_PATH = $(MLNX_SDK_BASE_PATH)/$(BLDENV)/$(CONFIGURED_ARCH)/ MLNX_SDK_VERSION = 4.5.4150 MLNX_SDK_ISSU_VERSION = 101 +MLNX_ASSETS_GITHUB_URL = https://github.com/Mellanox/Spectrum-SDK-Drivers-SONiC-Bins +MLNX_SDK_ASSETS_RELEASE_TAG = sdk-$(MLNX_SDK_VERSION)-$(BLDENV)-$(CONFIGURED_ARCH) +MLNX_SDK_ASSETS_URL = $(MLNX_ASSETS_GITHUB_URL)/releases/download/$(MLNX_SDK_ASSETS_RELEASE_TAG) MLNX_SDK_DEB_VERSION = $(subst -,.,$(subst _,.,$(MLNX_SDK_VERSION))) # Place here URL where SDK sources exist @@ -30,7 +31,7 @@ else SDK_FROM_SRC = n endif -export MLNX_SDK_SOURCE_BASE_URL MLNX_SDK_VERSION MLNX_SDK_ISSU_VERSION MLNX_SDK_DEB_VERSION +export MLNX_SDK_SOURCE_BASE_URL MLNX_SDK_VERSION MLNX_SDK_ISSU_VERSION MLNX_SDK_DEB_VERSION MLNX_ASSETS_GITHUB_URL MLNX_SDK_RDEBS += $(APPLIBS) $(IPROUTE2_MLNX) $(SX_COMPLIB) $(SX_EXAMPLES) \ $(SX_GEN_UTILS) $(SX_SCEW) $(SXD_LIBS) $(WJH_LIBS) $(SX_ACL_HELPER) \ @@ -163,21 +164,19 @@ $(SX_KERNEL)_SRC_PATH = $(PLATFORM_PATH)/sdk-src/sx-kernel SX_KERNEL_DEV = sx-kernel-dev_1.mlnx.$(MLNX_SDK_DEB_VERSION)_$(CONFIGURED_ARCH).deb $(eval $(call add_derived_package,$(SX_KERNEL),$(SX_KERNEL_DEV))) -define make_path - $(1)_PATH = $(MLNX_SDK_PKG_BASE_PATH) +define make_url + $(1)_URL = $(MLNX_SDK_ASSETS_URL)/$(1) endef -$(eval $(foreach deb,$(MLNX_SDK_DEBS),$(call make_path,$(deb)))) -$(eval $(foreach deb,$(MLNX_SDK_RDEBS),$(call make_path,$(deb)))) -$(eval $(foreach deb,$(PYTHON_SDK_API) $(SX_KERNEL) $(SX_KERNEL_DEV),$(call make_path,$(deb)))) +$(eval $(foreach deb,$(MLNX_SDK_DEBS) $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API),$(call make_url,$(deb)))) SONIC_MAKE_DEBS += $(SX_KERNEL) ifeq ($(SDK_FROM_SRC), y) SONIC_MAKE_DEBS += $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API) else -SONIC_COPY_DEBS += $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API) +SONIC_ONLINE_DEBS += $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API) endif mlnx-sdk-packages: $(addprefix $(DEBS_PATH)/, $(MLNX_SDK_RDEBS) $(PYTHON_SDK_API) $(SX_KERNEL)) diff --git a/rules/config b/rules/config index 0cf5c00dc070..ec659631e222 100644 --- a/rules/config +++ b/rules/config @@ -39,6 +39,9 @@ DEFAULT_BUILD_LOG_TIMESTAMP = none # Comment next line to disable: # SONIC_CONFIG_ENABLE_COLORS = y +# CHANGE_DEFAULT_PASSWORD - enforce default user/users to change password on 1st login +CHANGE_DEFAULT_PASSWORD ?= n + # DEFAULT_USERNAME - default username for installer build DEFAULT_USERNAME = admin diff --git a/scripts/populate_file_web_server.py b/scripts/populate_file_web_server.py new file mode 100644 index 000000000000..955ad9c8a7f9 --- /dev/null +++ b/scripts/populate_file_web_server.py @@ -0,0 +1,295 @@ +#!/usr/bin/env python3 + +import sys +import os +import time +import argparse +from http import HTTPStatus +try: + import requests +except ImportError: + print("requests module is not installed. script will fail to execute") + +#debug print level +PRINT_LEVEL_ERROR = "err" +PRINT_LEVEL_WARN = "warn" +PRINT_LEVEL_INFO = "info" +PRINT_LEVEL_VERBOSE = "verbose" + +PRINT_LEVEL_LUT = {PRINT_LEVEL_ERROR : 1, + PRINT_LEVEL_WARN : 2, + PRINT_LEVEL_INFO : 3, + PRINT_LEVEL_VERBOSE : 4 } + +#return code +RET_CODE_SUCCESS = 0 +RET_CODE_CANNOT_CREATE_FILE = -1 +RET_CODE_CANNOT_OPEN_FILE = -2 +RET_CODE_HTTP_SERVER_ERROR = -3 +RET_CODE_CANNOT_WRITE_FILE = -4 + +#constants +RESOURCES_FILE_NAME = 'versions-web' +EXCLUDE_DIRECTORES = ['fsroot', 'target'] +HASH_SEPARATOR = '-' +DEFAULT_INVALID_INPUT = 'none' + +# global variables +g_current_print_level = PRINT_LEVEL_INFO + +#Script debug features (disabled by default) +g_delete_resources_in_cache = True + + +# global Classes +class Resource: + def __init__(self, line, file): + self.file = file + temp=line.split("==") + assert(2==len(temp)) + self.url=temp[0].strip() + self.hash=temp[1].strip() + temp=self.url.split("/") + assert(len(temp)>0) + self.name=temp[len(temp)-1] + #handle special scenarios + if 0 != self.name.count('?') == True: + temp = self.name.split("?") + self.name = temp[0] + + def get_unique_name(self): + return self.name + HASH_SEPARATOR + self.hash + + def get_url(self): + return self.url + + def __str__(self): + ret_val = "Resource name: " + self.name + "\n" + ret_val += "File: " + self.file + "\n" + ret_val += "Hash: " + self.hash + "\n" + ret_val += "Full URL: " + self.url + return ret_val + +# Helper functions + +def print_msg(print_level, msg, print_in_place=False): + if PRINT_LEVEL_LUT[g_current_print_level] >= PRINT_LEVEL_LUT[print_level]: + if True == print_in_place: + print(msg, end='\r') + else: + print(msg) + +def create_dir_if_not_exist(dir): + if not os.path.exists(dir): + try: + os.makedirs(dir) + except: + print_msg(PRINT_LEVEL_WARN, "Cannot create directory " + dir) + +def delete_file_if_exist(file): + if os.path.exists(file): + try: + os.remove(file) + except: + print_msg(PRINT_LEVEL_WARN, "Cannot delete " + file) + +# Logic functions + +def generate_output_file(resources, dest_url_valid, dest_url, output_file_name): + try: + with open(output_file_name, 'w') as f: + for unique_name in resources.keys(): + resource = resources[unique_name] + if True == dest_url_valid: + line = dest_url + else: + line = resource.get_url() + if line[-1] != '/': + line += '/' + line += resource.name + "==" + resource.hash + f.write(line + '\n') + except: + print_msg(PRINT_LEVEL_WARN, output_file_name + " cannot be created") + return RET_CODE_CANNOT_CREATE_FILE + + return RET_CODE_SUCCESS + +def upload_resource_to_server(resource_path, resource_name, user, key, server_url): + url_full_path = server_url + "/" + resource_name + + try: + f = open(resource_path, 'rb') + except: + err_print("Cannot open " + resource_path) + return RET_CODE_CANNOT_OPEN_FILE + + headers = {'Content-type': 'application', 'Slug': resource_name} + response = requests.put(url_full_path, data=f, + headers=headers, auth=(user, key)) + + f.close() + + if response.status_code != HTTPStatus.CREATED.value: + err_print(f"HTTP request returned status code {response.status_code}, expected {HTTPStatus.CREATED.value}") + return RET_CODE_HTTP_SERVER_ERROR + + # JSON response empty only when status code is 204 + reported_md5 = response.json().get('checksums', {}).get('md5') + file_md5 = resource_name.split(HASH_SEPARATOR)[-1] + + # Check if server reports checksum, if so compare reported sum and the one + # specified in filename + if reported_md5 != None and reported_md5 != file_md5: + print_msg(PRINT_LEVEL_WARN, f"Server reported file's chsum {reported_md5}, expected {file_md5}") + + + return RET_CODE_SUCCESS + +def download_external_resouce(resource, cache_path): + resource_path_in_cache = cache_path + os.sep + resource.get_unique_name() + + r = requests.get(resource.get_url(), allow_redirects=True) + + try: + f = open(resource_path_in_cache, 'wb') + f.write(r.content) + f.close() + except: + print_msg(PRINT_LEVEL_ERROR, "Cannot write " + resource_path_in_cache + " to cache") + resource_path_in_cache = "" #report error + + return resource_path_in_cache + +def get_resources_list(resource_files_list): + resource_list = list() + + for file_name in resource_files_list: + try: + with open(file_name, 'r') as f: + for line in f: + resource_list.append(Resource(line, file_name)) + except: + print_msg(PRINT_LEVEL_WARN, file_name + " cannot be opened") + + return resource_list + +def filter_out_dir(subdir): + ret_val = False + + for exclude in EXCLUDE_DIRECTORES: + if exclude in subdir.split(os.sep): + ret_val = True + break + + return ret_val + +def get_resource_files_list(serach_path): + resource_files_list = list() + + for subdir, dirs, files in os.walk(serach_path): + for file in files: + if False == filter_out_dir(subdir) and RESOURCES_FILE_NAME == file: + file_full_path = os.path.join(subdir, file) + print_msg(PRINT_LEVEL_VERBOSE, "Found resource file :" + file_full_path) + resource_files_list.append(file_full_path) + + return resource_files_list + +def parse_args(): + parser = argparse.ArgumentParser(description='Various pre-steps for build compilation') + + parser.add_argument('-s', '--source', default=".", + help='Search path for ' + RESOURCES_FILE_NAME + ' files') + + parser.add_argument('-c', '--cache', default="." + os.sep + "tmp", + help='Path to cache for storing content before uploading to server') + + parser.add_argument('-p', '--print', default=PRINT_LEVEL_INFO, + choices=[PRINT_LEVEL_ERROR, PRINT_LEVEL_WARN, PRINT_LEVEL_INFO, PRINT_LEVEL_VERBOSE], + help='Print level verbosity') + + parser.add_argument('-o', '--output', default=DEFAULT_INVALID_INPUT, + help='Output file name to hold the list of packages') + + parser.add_argument('-u', '--user', default=DEFAULT_INVALID_INPUT, + help='User for server authentication') + + parser.add_argument('-k', '--key', default=DEFAULT_INVALID_INPUT, + help='API key server authentication') + + parser.add_argument('-d', '--dest', default=DEFAULT_INVALID_INPUT, + help='URL for destination web file server') + + return parser.parse_args() + +def main(): + global g_current_print_level + ret_val = RET_CODE_SUCCESS + resource_counter = 0.0 + resource_dict = dict() + + args = parse_args() + + g_current_print_level = args.print + + resource_files_list = get_resource_files_list(args.source) + + resource_list = get_resources_list(resource_files_list) + + #remove duplications + for resource in resource_list: + unique_name = resource.get_unique_name() + if not unique_name in resource_dict.keys(): + resource_dict[unique_name] = resource + + print_msg(PRINT_LEVEL_INFO, "Found " + str(len(resource_files_list)) + " version files and " + str(len(resource_dict.keys())) + " unique resources") + + if args.dest != DEFAULT_INVALID_INPUT: + upload_files_to_server = True + print_msg(PRINT_LEVEL_INFO, "Upload files to URL - " + args.dest) + else: + upload_files_to_server = False + print_msg(PRINT_LEVEL_INFO, "Skipping files upload to server") + + #create cache directory if not exist + create_dir_if_not_exist(args.cache) + + #download content to cache and then upload to web server + for unique_name in resource_dict.keys(): + + resource = resource_dict[unique_name] + + print_msg(PRINT_LEVEL_VERBOSE, resource) + + resource_counter += 1.0 + + #download content to cache + file_in_cache = download_external_resouce(resource, args.cache) + + if "" == file_in_cache: + return RET_CODE_CANNOT_WRITE_FILE + + if True == upload_files_to_server: + #upload content to web server + ret_val = upload_resource_to_server(file_in_cache, unique_name, args.user, args.key, args.dest) + if ret_val != RET_CODE_SUCCESS: + return ret_val + + if True == g_delete_resources_in_cache: + delete_file_if_exist(file_in_cache) + + print_msg(PRINT_LEVEL_INFO, "Downloading Data. Progress " + str(int(100.0*resource_counter/len(resource_dict.keys()))) + "%", True) #print progress bar + + # generate version output file as needed + if args.output != DEFAULT_INVALID_INPUT: + ret_val = generate_output_file(resource_dict, upload_files_to_server, args.dest, args.output) + print_msg(PRINT_LEVEL_INFO, "Generate output file " + args.output) + + return ret_val + +# Entry function +if __name__ == '__main__': + + ret_val = main() + + sys.exit(ret_val) diff --git a/slave.mk b/slave.mk index dc926087f35a..5789287f1d43 100644 --- a/slave.mk +++ b/slave.mk @@ -376,6 +376,7 @@ $(info "USE_NATIVE_DOCKERD_FOR_BUILD" : "$(SONIC_CONFIG_USE_NATIVE_DOCKERD_FO $(info "SONIC_USE_DOCKER_BUILDKIT" : "$(SONIC_USE_DOCKER_BUILDKIT)") $(info "USERNAME" : "$(USERNAME)") $(info "PASSWORD" : "$(PASSWORD)") +$(info "CHANGE_DEFAULT_PASSWORD" : "$(CHANGE_DEFAULT_PASSWORD)") $(info "ENABLE_DHCP_GRAPH_SERVICE" : "$(ENABLE_DHCP_GRAPH_SERVICE)") $(info "SHUTDOWN_BGP_ON_START" : "$(SHUTDOWN_BGP_ON_START)") $(info "ENABLE_PFCWD_ON_START" : "$(ENABLE_PFCWD_ON_START)") @@ -1430,6 +1431,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : \ DEBUG_SRC_ARCHIVE_FILE="$(DBG_SRC_ARCHIVE_FILE)" \ USERNAME="$(USERNAME)" \ PASSWORD="$(PASSWORD)" \ + CHANGE_DEFAULT_PASSWORD="$(CHANGE_DEFAULT_PASSWORD)" \ TARGET_MACHINE=$(dep_machine) \ IMAGE_TYPE=$($*_IMAGE_TYPE) \ TARGET_PATH=$(TARGET_PATH) \ diff --git a/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_all.conf b/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_all.conf index 1ec1cffed952..cf5020ee49f8 100644 --- a/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_all.conf +++ b/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_all.conf @@ -16,8 +16,8 @@ neighbor VOQ_CHASSIS_V6_PEER activate neighbor VOQ_CHASSIS_V6_PEER addpath-tx-all-paths neighbor VOQ_CHASSIS_V6_PEER soft-reconfiguration inbound - neighbor VOQ_CHASSIS_V4_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in - neighbor VOQ_CHASSIS_V4_PEER route-map TO_VOQ_CHASSIS_V6_PEER out + neighbor VOQ_CHASSIS_V6_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in + neighbor VOQ_CHASSIS_V6_PEER route-map TO_VOQ_CHASSIS_V6_PEER out exit-address-family ! ! end of template: bgpd/templates/voq_chassis/peer-group.conf.j2 diff --git a/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_base.conf b/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_base.conf index a8f7a0eea528..61813254acc2 100644 --- a/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_base.conf +++ b/src/sonic-bgpcfgd/tests/data/voq_chassis/peer-group.conf/result_base.conf @@ -14,8 +14,8 @@ neighbor VOQ_CHASSIS_V6_PEER activate neighbor VOQ_CHASSIS_V6_PEER addpath-tx-all-paths neighbor VOQ_CHASSIS_V6_PEER soft-reconfiguration inbound - neighbor VOQ_CHASSIS_V4_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in - neighbor VOQ_CHASSIS_V4_PEER route-map TO_VOQ_CHASSIS_V6_PEER out + neighbor VOQ_CHASSIS_V6_PEER route-map FROM_VOQ_CHASSIS_V6_PEER in + neighbor VOQ_CHASSIS_V6_PEER route-map TO_VOQ_CHASSIS_V6_PEER out exit-address-family ! ! end of template: bgpd/templates/voq_chassis/peer-group.conf.j2 diff --git a/src/sonic-build-hooks/scripts/buildinfo_base.sh b/src/sonic-build-hooks/scripts/buildinfo_base.sh index e10a32303423..da1bc54226f5 100755 --- a/src/sonic-build-hooks/scripts/buildinfo_base.sh +++ b/src/sonic-build-hooks/scripts/buildinfo_base.sh @@ -28,8 +28,7 @@ else PKG_CACHE_PATH=/sonic/target/vcache/${IMAGENAME} fi PKG_CACHE_FILE_NAME=${PKG_CACHE_PATH}/cache.tgz -$SUDO mkdir -p ${PKG_CACHE_PATH} -$SUDO chown $USER $PKG_CACHE_PATH +mkdir -p ${PKG_CACHE_PATH} . ${BUILDINFO_PATH}/scripts/utils.sh @@ -249,6 +248,11 @@ run_pip_command() $REAL_COMMAND "${parameters[@]}" local result=$? + if [ "$result" != 0 ]; then + echo "Failed to run the command with constraint, try to install with the original command" 1>&2 + $REAL_COMMAND "$@" + result=$? + fi rm $tmp_version_file return $result } diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index 094d62bf2674..68f20b4677a8 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -532,9 +532,9 @@ def parse_dpg(dpg, hname): intfs_inpc.append(pcmbr_list[i]) pc_members[(pcintfname, pcmbr_list[i])] = {} if pcintf.find(str(QName(ns, "Fallback"))) != None: - pcs[pcintfname] = {'members': pcmbr_list, 'fallback': pcintf.find(str(QName(ns, "Fallback"))).text, 'min_links': str(int(math.ceil(len() * 0.75))), 'lacp_key': 'auto'} + pcs[pcintfname] = {'fallback': pcintf.find(str(QName(ns, "Fallback"))).text, 'min_links': str(int(math.ceil(len() * 0.75))), 'lacp_key': 'auto'} else: - pcs[pcintfname] = {'members': pcmbr_list, 'min_links': str(int(math.ceil(len(pcmbr_list) * 0.75))), 'lacp_key': 'auto' } + pcs[pcintfname] = {'min_links': str(int(math.ceil(len(pcmbr_list) * 0.75))), 'lacp_key': 'auto' } port_nhipv4_map = {} port_nhipv6_map = {} nhg_int = "" @@ -1244,7 +1244,7 @@ def filter_acl_table_for_backend(acls, vlan_members): } return filter_acls -def filter_acl_table_bindings(acls, neighbors, port_channels, sub_role, device_type, is_storage_device, vlan_members): +def filter_acl_table_bindings(acls, neighbors, port_channels, pc_members, sub_role, device_type, is_storage_device, vlan_members): if device_type == 'BackEndToRRouter' and is_storage_device: return filter_acl_table_for_backend(acls, vlan_members) @@ -1263,8 +1263,8 @@ def filter_acl_table_bindings(acls, neighbors, port_channels, sub_role, device_t # Get the front panel port channel. for port_channel_intf in port_channels: - backend_port_channel = any(lag_member in backplane_port_list \ - for lag_member in port_channels[port_channel_intf]['members']) + backend_port_channel = any(lag_member[1] in backplane_port_list \ + for lag_member in list(pc_members.keys()) if lag_member[0] == port_channel_intf) if not backend_port_channel: front_port_channel_intf.append(port_channel_intf) @@ -1666,6 +1666,20 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw if port_name in mgmt_alias_reverse_mapping.keys(): continue + port_default_speed = port_speeds_default.get(port_name, None) + port_png_speed = port_speed_png[port_name] + + if switch_type == 'voq': + # when the port speed is changes from 400g to 100g + # update the port lanes, use the first 4 lanes of the 400G port to support 100G port + if port_default_speed == '400000' and port_png_speed == '100000': + port_lanes = ports[port_name].get('lanes', '').split(',') + # check if the 400g port has only 8 lanes + if len(port_lanes) != 8: + continue + updated_lanes = ",".join(port_lanes[:4]) + ports[port_name]['lanes'] = updated_lanes + ports.setdefault(port_name, {})['speed'] = port_speed_png[port_name] for port_name, port in list(ports.items()): @@ -1763,12 +1777,15 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw if port_config_file: port_set = set(ports.keys()) - for (pc_name, mbr_map) in list(pcs.items()): + for (pc_name, pc_member) in list(pc_members.keys()): # remove portchannels that contain ports not existing in port_config.ini # when port_config.ini exists - if not set(mbr_map['members']).issubset(port_set): - print("Warning: ignore '%s' as part of its member interfaces is not in the port_config.ini" % pc_name, file=sys.stderr) + if (pc_name, pc_member) in pc_members and pc_member not in port_set: + print("Warning: ignore '%s' as at least one of its member interfaces ('%s') is not in the port_config.ini" % (pc_name, pc_member), file=sys.stderr) del pcs[pc_name] + pc_mbr_del_keys = [f for f in list(pc_members.keys()) if f[0] == pc_name] + for pc_mbr_del_key in pc_mbr_del_keys: + del pc_members[pc_mbr_del_key] # set default port channel MTU as 9100 and admin status up and default TPID 0x8100 for pc in pcs.values(): @@ -1872,7 +1889,7 @@ def parse_xml(filename, platform=None, port_config_file=None, asic_name=None, hw results['DHCP_RELAY'] = dhcp_relay_table results['NTP_SERVER'] = dict((item, {}) for item in ntp_servers) results['TACPLUS_SERVER'] = dict((item, {'priority': '1', 'tcp_port': '49'}) for item in tacacs_servers) - results['ACL_TABLE'] = filter_acl_table_bindings(acls, neighbors, pcs, sub_role, current_device['type'], is_storage_device, vlan_members) + results['ACL_TABLE'] = filter_acl_table_bindings(acls, neighbors, pcs, pc_members, sub_role, current_device['type'], is_storage_device, vlan_members) results['FEATURE'] = { 'telemetry': { 'state': 'enabled' diff --git a/src/sonic-config-engine/setup.py b/src/sonic-config-engine/setup.py index 3f2b2a240a95..924a39a89ff4 100644 --- a/src/sonic-config-engine/setup.py +++ b/src/sonic-config-engine/setup.py @@ -1,7 +1,13 @@ +from __future__ import print_function import glob import sys from setuptools import setup +import pkg_resources +from packaging import version + +# sonic_dependencies, version requirement only supports '>=' +sonic_dependencies = ['sonic-py-common'] # Common dependencies for Python 2 and 3 dependencies = [ @@ -10,7 +16,6 @@ 'lxml==4.9.1', 'netaddr==0.8.0', 'pyyaml==5.4.1', - 'sonic-py-common', ] if sys.version_info.major == 3: @@ -21,6 +26,8 @@ # dependencies section of setuptools followed by uninstall of enum43 # 'pyangbind==0.8.1', 'Jinja2>=2.10', + ] + sonic_dependencies += [ 'sonic-yang-mgmt>=1.0', 'sonic-yang-models>=1.0' ] @@ -50,6 +57,20 @@ 'sonic_yang_cfg_generator' ] +dependencies += sonic_dependencies +for package in sonic_dependencies: + try: + package_dist = pkg_resources.get_distribution(package.split(">=")[0]) + except pkg_resources.DistributionNotFound: + print(package + " is not found!", file=sys.stderr) + print("Please build and install SONiC python wheels dependencies from sonic-buildimage", file=sys.stderr) + exit(1) + if ">=" in package: + if version.parse(package_dist.version) >= version.parse(package.split(">=")[1]): + continue + print(package + " version not match!", file=sys.stderr) + exit(1) + setup( name = 'sonic-config-engine', version = '1.0', diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index 9b1d0b721983..fe2b3e17a8b9 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -39,6 +39,8 @@ def setUp(self): self.packet_chassis_port_ini = os.path.join(self.test_dir, 'sample-chassis-packet-lc-port-config.ini') self.macsec_profile = os.path.join(self.test_dir, 'macsec_profile.json') self.sample_backend_graph = os.path.join(self.test_dir, 'sample-graph-storage-backend.xml') + self.voq_port_config_400g = os.path.join(self.test_dir, 'voq-sample-400g-port-config.ini') + self.voq_sample_masic_graph = os.path.join(self.test_dir, 'voq-sample-masic-graph.xml') # To ensure that mock config_db data is used for unit-test cases os.environ["CFGGEN_UNIT_TESTING"] = "2" @@ -328,7 +330,7 @@ def test_minigraph_portchannels(self, **kwargs): output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), - utils.to_dict("{'PortChannel1': {'admin_status': 'up', 'min_links': '1', 'members': ['Ethernet4'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}") + utils.to_dict("{'PortChannel1': {'admin_status': 'up', 'min_links': '1', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}") ) def test_minigraph_portchannel_with_more_member(self): @@ -336,7 +338,7 @@ def test_minigraph_portchannel_with_more_member(self): output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), - utils.to_dict("{'PortChannel01': {'admin_status': 'up', 'min_links': '3', 'members': ['Ethernet112', 'Ethernet116', 'Ethernet120', 'Ethernet124'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}")) + utils.to_dict("{'PortChannel01': {'admin_status': 'up', 'min_links': '3', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}")) def test_minigraph_portchannel_members(self): argument = ['-m', self.sample_graph_pc_test, '-p', self.port_config, '-v', "PORTCHANNEL_MEMBER.keys()|list"] @@ -1022,3 +1024,33 @@ def test_minigraph_packet_chassis_400g_zr_port_config(self): output_dict = utils.to_dict(output.strip()) self.assertEqual(output_dict['tx_power'], '7.5') self.assertEqual(output_dict['laser_freq'], 131000) + + def test_minigraph_400g_to_100G_speed(self): + argument = ["-j", self.macsec_profile, "-m", self.voq_sample_masic_graph, "-p", self.voq_port_config_400g, "-n", "asic0", "-v", "PORT"] + output = self.run_script(argument) + self.assertEqual( + utils.to_dict(output.strip()), + utils.to_dict( + "{'Ethernet0': {'lanes': '72,73,74,75', 'alias': 'Ethernet1/1', 'index': '1', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth0-ASIC0', 'fec': 'rs', 'description': 'ARISTA01T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet8': {'lanes': '80,81,82,83', 'alias': 'Ethernet2/1', 'index': '2', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth8-ASIC0', 'fec': 'rs', 'description': 'ARISTA01T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet16': {'lanes': '88,89,90,91', 'alias': 'Ethernet3/1', 'index': '3', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth16-ASIC0', 'fec': 'rs', 'description': 'ARISTA03T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet24': {'lanes': '96,97,98,99,100,101,102,103', 'alias': 'Ethernet4/1', 'index': '4', 'role': 'Ext', 'speed': '400000', 'asic_port_name': 'Eth24-ASIC0', 'description': 'ARISTA03T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet32': {'lanes': '104,105,106,107,108,109,110,111', 'alias': 'Ethernet5/1', 'index': '5', 'role': 'Ext', 'speed': '400000', 'asic_port_name': 'Eth32-ASIC0', 'description': 'ARISTA05T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet40': {'lanes': '112,113,114,115,116,117,118,119', 'alias': 'Ethernet6/1', 'index': '6', 'role': 'Ext', 'speed': '400000', 'asic_port_name': 'Eth40-ASIC0', 'description': 'ARISTA05T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet48': {'lanes': '120,121,122,123,124,125,126,127', 'alias': 'Ethernet7/1', 'index': '7', 'role': 'Ext', 'speed': '400000', 'asic_port_name': 'Eth48-ASIC0', 'description': 'ARISTA07T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet56': {'lanes': '128,129,130,131', 'alias': 'Ethernet8/1', 'index': '8', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth56-ASIC0', 'fec': 'rs', 'description': 'ARISTA07T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet64': {'lanes': '136,137,138,139', 'alias': 'Ethernet9/1', 'index': '9', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth64-ASIC0', 'fec': 'rs', 'description': 'ARISTA09T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet72': {'lanes': '64,65,66,67', 'alias': 'Ethernet10/1', 'index': '10', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth72-ASIC0', 'fec': 'rs', 'description': 'ARISTA09T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet80': {'lanes': '56,57,58,59', 'alias': 'Ethernet11/1', 'index': '11', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth80-ASIC0', 'fec': 'rs', 'description': 'ARISTA11T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet88': {'lanes': '48,49,50,51', 'alias': 'Ethernet12/1', 'index': '12', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth88-ASIC0', 'fec': 'rs', 'description': 'ARISTA11T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet96': {'lanes': '40,41,42,43', 'alias': 'Ethernet13/1', 'index': '13', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth96-ASIC0', 'fec': 'rs', 'description': 'ARISTA13T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet104': {'lanes': '32,33,34,35', 'alias': 'Ethernet14/1', 'index': '14', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth104-ASIC0', 'fec': 'rs', 'description': 'ARISTA15T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet112': {'lanes': '24,25,26,27', 'alias': 'Ethernet15/1', 'index': '15', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth112-ASIC0', 'fec': 'rs', 'description': 'ARISTA15T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet120': {'lanes': '16,17,18,19', 'alias': 'Ethernet16/1', 'index': '16', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth120-ASIC0', 'fec': 'rs', 'description': 'ARISTA17T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet128': {'lanes': '8,9,10,11', 'alias': 'Ethernet17/1', 'index': '17', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth128-ASIC0', 'fec': 'rs', 'description': 'ARISTA18T3:Ethernet1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet136': {'lanes': '0,1,2,3', 'alias': 'Ethernet18/1', 'index': '18', 'role': 'Ext', 'speed': '100000', 'asic_port_name': 'Eth136-ASIC0', 'fec': 'rs', 'description': 'ARISTA18T3:Ethernet2', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}, " + "'Ethernet-Rec0': {'lanes': '221', 'alias': 'Recirc0/0', 'index': '37', 'role': 'Rec', 'speed': '400000', 'asic_port_name': 'Rcy0-ASIC0', 'description': 'Recirc0/0', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}," + "'Ethernet-IB0': {'lanes': '222', 'alias': 'Recirc0/1', 'index': '38', 'role': 'Inb', 'speed': '400000', 'asic_port_name': 'Rcy1-ASIC0', 'description': 'Recirc0/1', 'mtu': '9100', 'tpid': '0x8100', 'pfc_asym': 'off', 'admin_status': 'up'}}" + ) + ) + diff --git a/src/sonic-config-engine/tests/test_minigraph_case.py b/src/sonic-config-engine/tests/test_minigraph_case.py index 86bd92ebe362..7f0319fa3413 100644 --- a/src/sonic-config-engine/tests/test_minigraph_case.py +++ b/src/sonic-config-engine/tests/test_minigraph_case.py @@ -158,7 +158,7 @@ def test_minigraph_portchannels(self): output = self.run_script(argument) self.assertEqual( utils.to_dict(output.strip()), - utils.to_dict("{'PortChannel01': {'admin_status': 'up', 'min_links': '1', 'members': ['Ethernet4'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}") + utils.to_dict("{'PortChannel01': {'admin_status': 'up', 'min_links': '1', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}") ) def test_minigraph_console_mgmt_feature(self): diff --git a/src/sonic-config-engine/tests/test_multinpu_cfggen.py b/src/sonic-config-engine/tests/test_multinpu_cfggen.py index be1f677e178e..6eb2c8674abd 100644 --- a/src/sonic-config-engine/tests/test_multinpu_cfggen.py +++ b/src/sonic-config-engine/tests/test_multinpu_cfggen.py @@ -161,16 +161,16 @@ def test_frontend_asic_portchannels(self): argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "--var-json", "PORTCHANNEL"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ - {'PortChannel0002': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet0', 'Ethernet4'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, - 'PortChannel4001': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP0', 'Ethernet-BP4'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, - 'PortChannel4002': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP8', 'Ethernet-BP12'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}) + {'PortChannel0002': {'admin_status': 'up', 'min_links': '2', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, + 'PortChannel4001': {'admin_status': 'up', 'min_links': '2', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, + 'PortChannel4002': {'admin_status': 'up', 'min_links': '2', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}) def test_backend_asic_portchannels(self): argument = ["-m", self.sample_graph, "-p", self.port_config[3], "-n", "asic3", "--var-json", "PORTCHANNEL"] output = json.loads(self.run_script(argument)) self.assertDictEqual(output, \ - {'PortChannel4013': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP384', 'Ethernet-BP388'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, - 'PortChannel4014': {'admin_status': 'up', 'min_links': '2', 'members': ['Ethernet-BP392', 'Ethernet-BP396'], 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}) + {'PortChannel4013': {'admin_status': 'up', 'min_links': '2', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}, + 'PortChannel4014': {'admin_status': 'up', 'min_links': '2', 'mtu': '9100', 'tpid': '0x8100', 'lacp_key': 'auto'}}) def test_frontend_asic_portchannel_mem(self): argument = ["-m", self.sample_graph, "-p", self.port_config[0], "-n", "asic0", "-v", "PORTCHANNEL_MEMBER.keys()|list"] diff --git a/src/sonic-config-engine/tests/voq-sample-400g-port-config.ini b/src/sonic-config-engine/tests/voq-sample-400g-port-config.ini new file mode 100644 index 000000000000..f86cdb335ed8 --- /dev/null +++ b/src/sonic-config-engine/tests/voq-sample-400g-port-config.ini @@ -0,0 +1,21 @@ +# name lanes alias index role speed asic_port_name +Ethernet0 72,73,74,75,76,77,78,79 Ethernet1/1 1 Ext 400000 Eth0-ASIC0 +Ethernet8 80,81,82,83,84,85,86,87 Ethernet2/1 2 Ext 400000 Eth8-ASIC0 +Ethernet16 88,89,90,91,92,93,94,95 Ethernet3/1 3 Ext 400000 Eth16-ASIC0 +Ethernet24 96,97,98,99,100,101,102,103 Ethernet4/1 4 Ext 400000 Eth24-ASIC0 +Ethernet32 104,105,106,107,108,109,110,111 Ethernet5/1 5 Ext 400000 Eth32-ASIC0 +Ethernet40 112,113,114,115,116,117,118,119 Ethernet6/1 6 Ext 400000 Eth40-ASIC0 +Ethernet48 120,121,122,123,124,125,126,127 Ethernet7/1 7 Ext 400000 Eth48-ASIC0 +Ethernet56 128,129,130,131,132,133,134,135 Ethernet8/1 8 Ext 400000 Eth56-ASIC0 +Ethernet64 136,137,138,139,140,141,142,143 Ethernet9/1 9 Ext 400000 Eth64-ASIC0 +Ethernet72 64,65,66,67,68,69,70,71 Ethernet10/1 10 Ext 400000 Eth72-ASIC0 +Ethernet80 56,57,58,59,60,61,62,63 Ethernet11/1 11 Ext 400000 Eth80-ASIC0 +Ethernet88 48,49,50,51,52,53,54,55 Ethernet12/1 12 Ext 400000 Eth88-ASIC0 +Ethernet96 40,41,42,43,44,45,46,47 Ethernet13/1 13 Ext 400000 Eth96-ASIC0 +Ethernet104 32,33,34,35,36,37,38,39 Ethernet14/1 14 Ext 400000 Eth104-ASIC0 +Ethernet112 24,25,26,27,28,29,30,31 Ethernet15/1 15 Ext 400000 Eth112-ASIC0 +Ethernet120 16,17,18,19,20,21,22,23 Ethernet16/1 16 Ext 400000 Eth120-ASIC0 +Ethernet128 8,9,10,11,12,13,14,15 Ethernet17/1 17 Ext 400000 Eth128-ASIC0 +Ethernet136 0,1,2,3,4,5,6,7 Ethernet18/1 18 Ext 400000 Eth136-ASIC0 +Ethernet-Rec0 221 Recirc0/0 37 Rec 400000 Rcy0-ASIC0 +Ethernet-IB0 222 Recirc0/1 38 Inb 400000 Rcy1-ASIC0 diff --git a/src/sonic-config-engine/tests/voq-sample-masic-graph.xml b/src/sonic-config-engine/tests/voq-sample-masic-graph.xml new file mode 100644 index 000000000000..cda6c1a6a3bf --- /dev/null +++ b/src/sonic-config-engine/tests/voq-sample-masic-graph.xml @@ -0,0 +1,3903 @@ + + + + + + false + str2-sonic-lc5-1 + 10.0.0.0 + ARISTA01T3 + 10.0.0.1 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.0 + ARISTA01T3 + 10.0.0.1 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::1 + ARISTA01T3 + FC00::2 + 1 + 10 + 3 + + + ASIC0 + FC00::1 + ARISTA01T3 + FC00::2 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.4 + ARISTA03T3 + 10.0.0.5 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.4 + ARISTA03T3 + 10.0.0.5 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::9 + ARISTA03T3 + FC00::A + 1 + 10 + 3 + + + ASIC0 + FC00::9 + ARISTA03T3 + FC00::A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.8 + ARISTA05T3 + 10.0.0.9 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.8 + ARISTA05T3 + 10.0.0.9 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::11 + ARISTA05T3 + FC00::12 + 1 + 10 + 3 + + + ASIC0 + FC00::11 + ARISTA05T3 + FC00::12 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.12 + ARISTA07T3 + 10.0.0.13 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.12 + ARISTA07T3 + 10.0.0.13 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::19 + ARISTA07T3 + FC00::1A + 1 + 10 + 3 + + + ASIC0 + FC00::19 + ARISTA07T3 + FC00::1A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.16 + ARISTA09T3 + 10.0.0.17 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.16 + ARISTA09T3 + 10.0.0.17 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::21 + ARISTA09T3 + FC00::22 + 1 + 10 + 3 + + + ASIC0 + FC00::21 + ARISTA09T3 + FC00::22 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.20 + ARISTA11T3 + 10.0.0.21 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.20 + ARISTA11T3 + 10.0.0.21 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::29 + ARISTA11T3 + FC00::2A + 1 + 10 + 3 + + + ASIC0 + FC00::29 + ARISTA11T3 + FC00::2A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.32 + ARISTA13T3 + 10.0.0.33 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.32 + ARISTA13T3 + 10.0.0.33 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::41 + ARISTA13T3 + FC00::42 + 1 + 10 + 3 + + + ASIC0 + FC00::41 + ARISTA13T3 + FC00::42 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.28 + ARISTA15T3 + 10.0.0.29 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.28 + ARISTA15T3 + 10.0.0.29 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::39 + ARISTA15T3 + FC00::3A + 1 + 10 + 3 + + + ASIC0 + FC00::39 + ARISTA15T3 + FC00::3A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.34 + ARISTA17T3 + 10.0.0.35 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.34 + ARISTA17T3 + 10.0.0.35 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::45 + ARISTA17T3 + FC00::46 + 1 + 10 + 3 + + + ASIC0 + FC00::45 + ARISTA17T3 + FC00::46 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.24 + ARISTA18T3 + 10.0.0.25 + 1 + 10 + 3 + + + false + ASIC0 + 10.0.0.24 + ARISTA18T3 + 10.0.0.25 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::31 + ARISTA18T3 + FC00::32 + 1 + 10 + 3 + + + ASIC0 + FC00::31 + ARISTA18T3 + FC00::32 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.36 + ARISTA19T3 + 10.0.0.37 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.36 + ARISTA19T3 + 10.0.0.37 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::49 + ARISTA19T3 + FC00::4A + 1 + 10 + 3 + + + ASIC1 + FC00::49 + ARISTA19T3 + FC00::4A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.38 + ARISTA20T3 + 10.0.0.39 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.38 + ARISTA20T3 + 10.0.0.39 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::4D + ARISTA20T3 + FC00::4E + 1 + 10 + 3 + + + ASIC1 + FC00::4D + ARISTA20T3 + FC00::4E + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.40 + ARISTA21T3 + 10.0.0.41 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.40 + ARISTA21T3 + 10.0.0.41 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::51 + ARISTA21T3 + FC00::52 + 1 + 10 + 3 + + + ASIC1 + FC00::51 + ARISTA21T3 + FC00::52 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.42 + ARISTA22T3 + 10.0.0.43 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.42 + ARISTA22T3 + 10.0.0.43 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::55 + ARISTA22T3 + FC00::56 + 1 + 10 + 3 + + + ASIC1 + FC00::55 + ARISTA22T3 + FC00::56 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.44 + ARISTA23T3 + 10.0.0.45 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.44 + ARISTA23T3 + 10.0.0.45 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::59 + ARISTA23T3 + FC00::5A + 1 + 10 + 3 + + + ASIC1 + FC00::59 + ARISTA23T3 + FC00::5A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.46 + ARISTA24T3 + 10.0.0.47 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.46 + ARISTA24T3 + 10.0.0.47 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::5D + ARISTA24T3 + FC00::5E + 1 + 10 + 3 + + + ASIC1 + FC00::5D + ARISTA24T3 + FC00::5E + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.48 + ARISTA25T3 + 10.0.0.49 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.48 + ARISTA25T3 + 10.0.0.49 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::61 + ARISTA25T3 + FC00::62 + 1 + 10 + 3 + + + ASIC1 + FC00::61 + ARISTA25T3 + FC00::62 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.50 + ARISTA26T3 + 10.0.0.51 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.50 + ARISTA26T3 + 10.0.0.51 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::65 + ARISTA26T3 + FC00::66 + 1 + 10 + 3 + + + ASIC1 + FC00::65 + ARISTA26T3 + FC00::66 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.52 + ARISTA27T3 + 10.0.0.53 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.52 + ARISTA27T3 + 10.0.0.53 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::69 + ARISTA27T3 + FC00::6A + 1 + 10 + 3 + + + ASIC1 + FC00::69 + ARISTA27T3 + FC00::6A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.54 + ARISTA28T3 + 10.0.0.55 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.54 + ARISTA28T3 + 10.0.0.55 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::6D + ARISTA28T3 + FC00::6E + 1 + 10 + 3 + + + ASIC1 + FC00::6D + ARISTA28T3 + FC00::6E + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.56 + ARISTA29T3 + 10.0.0.57 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.56 + ARISTA29T3 + 10.0.0.57 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::71 + ARISTA29T3 + FC00::72 + 1 + 10 + 3 + + + ASIC1 + FC00::71 + ARISTA29T3 + FC00::72 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.58 + ARISTA30T3 + 10.0.0.59 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.58 + ARISTA30T3 + 10.0.0.59 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::75 + ARISTA30T3 + FC00::76 + 1 + 10 + 3 + + + ASIC1 + FC00::75 + ARISTA30T3 + FC00::76 + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.60 + ARISTA31T3 + 10.0.0.61 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.60 + ARISTA31T3 + 10.0.0.61 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::79 + ARISTA31T3 + FC00::7A + 1 + 10 + 3 + + + ASIC1 + FC00::79 + ARISTA31T3 + FC00::7A + 1 + 10 + 3 + + + false + str2-sonic-lc5-1 + 10.0.0.62 + ARISTA32T3 + 10.0.0.63 + 1 + 10 + 3 + + + false + ASIC1 + 10.0.0.62 + ARISTA32T3 + 10.0.0.63 + 1 + 10 + 3 + + + str2-sonic-lc5-1 + FC00::7D + ARISTA32T3 + FC00::7E + 1 + 10 + 3 + + + ASIC1 + FC00::7D + ARISTA32T3 + FC00::7E + 1 + 10 + 3 + + + + + ASIC0 + ASIC1 + 3.3.3.2 + 3.3.3.3 + 1 + 0 + 0 + voq + + + ASIC0 + ASIC1 + 3333::3:2 + 3333::3:3 + 1 + 0 + 0 + voq + + + ASIC0 + str2-sonic-lc3-1 + 3.3.3.2 + 3.3.3.1 + 1 + 0 + 0 + voq + + + ASIC0 + str2-sonic-lc3-1 + 3333::3:2 + 3333::3:1 + 1 + 0 + 0 + voq + + + ASIC0 + str2-sonic-lc7-1 + 3.3.3.2 + 3.3.3.5 + 1 + 0 + 0 + voq + + + ASIC0 + str2-sonic-lc7-1 + 3333::3:2 + 3333::3:5 + 1 + 0 + 0 + voq + + + ASIC1 + ASIC0 + 3.3.3.3 + 3.3.3.2 + 1 + 0 + 0 + voq + + + ASIC1 + ASIC0 + 3333::3:3 + 3333::3:2 + 1 + 0 + 0 + voq + + + ASIC1 + str2-sonic-lc3-1 + 3.3.3.3 + 3.3.3.1 + 1 + 0 + 0 + voq + + + ASIC1 + str2-sonic-lc3-1 + 3333::3:3 + 3333::3:1 + 1 + 0 + 0 + voq + + + ASIC1 + str2-sonic-lc7-1 + 3.3.3.3 + 3.3.3.5 + 1 + 0 + 0 + voq + + + ASIC1 + str2-sonic-lc7-1 + 3333::3:3 + 3333::3:5 + 1 + 0 + 0 + voq + + + + + 65100 + str2-sonic-lc5-1 + + +
10.0.0.1
+ + + +
+ +
10.0.0.5
+ + + +
+ +
10.0.0.9
+ + + +
+ +
10.0.0.13
+ + + +
+ +
10.0.0.17
+ + + +
+ +
10.0.0.21
+ + + +
+ +
10.0.0.33
+ + + +
+ +
10.0.0.29
+ + + +
+ +
10.0.0.35
+ + + +
+ +
10.0.0.25
+ + + +
+ +
10.0.0.37
+ + + +
+ +
10.0.0.39
+ + + +
+ +
10.0.0.41
+ + + +
+ +
10.0.0.43
+ + + +
+ +
10.0.0.45
+ + + +
+ +
10.0.0.47
+ + + +
+ +
10.0.0.49
+ + + +
+ +
10.0.0.51
+ + + +
+ +
10.0.0.53
+ + + +
+ +
10.0.0.55
+ + + +
+ +
10.0.0.57
+ + + +
+ +
10.0.0.59
+ + + +
+ +
10.0.0.61
+ + + +
+ +
10.0.0.63
+ + + +
+
+ +
+ + 65200 + ARISTA01T3 + + + + 65200 + ARISTA03T3 + + + + 65200 + ARISTA05T3 + + + + 65200 + ARISTA07T3 + + + + 65200 + ARISTA09T3 + + + + 65200 + ARISTA11T3 + + + + 65200 + ARISTA13T3 + + + + 65200 + ARISTA15T3 + + + + 65200 + ARISTA17T3 + + + + 65200 + ARISTA18T3 + + + + 65200 + ARISTA19T3 + + + + 65200 + ARISTA20T3 + + + + 65200 + ARISTA21T3 + + + + 65200 + ARISTA22T3 + + + + 65200 + ARISTA23T3 + + + + 65200 + ARISTA24T3 + + + + 65200 + ARISTA25T3 + + + + 65200 + ARISTA26T3 + + + + 65200 + ARISTA27T3 + + + + 65200 + ARISTA28T3 + + + + 65200 + ARISTA29T3 + + + + 65200 + ARISTA30T3 + + + + 65200 + ARISTA31T3 + + + + 65200 + ARISTA32T3 + + + + 65100 + ASIC1 + + +
10.0.0.37
+ + + +
+ +
10.0.0.39
+ + + +
+ +
10.0.0.41
+ + + +
+ +
10.0.0.43
+ + + +
+ +
10.0.0.45
+ + + +
+ +
10.0.0.47
+ + + +
+ +
10.0.0.49
+ + + +
+ +
10.0.0.51
+ + + +
+ +
10.0.0.53
+ + + +
+ +
10.0.0.55
+ + + +
+ +
10.0.0.57
+ + + +
+ +
10.0.0.59
+ + + +
+ +
10.0.0.61
+ + + +
+ +
10.0.0.63
+ + + +
+ +
3.3.3.2/32
+ + + +
+ +
3.3.3.1/32
+ + + +
+ +
3.3.3.5/32
+ + + +
+
+ +
+ + 65100 + ASIC0 + + +
10.0.0.1
+ + + +
+ +
10.0.0.5
+ + + +
+ +
10.0.0.9
+ + + +
+ +
10.0.0.13
+ + + +
+ +
10.0.0.17
+ + + +
+ +
10.0.0.21
+ + + +
+ +
10.0.0.33
+ + + +
+ +
10.0.0.29
+ + + +
+ +
10.0.0.35
+ + + +
+ +
10.0.0.25
+ + + +
+ +
3.3.3.3/32
+ + + +
+ +
3.3.3.1/32
+ + + +
+ +
3.3.3.5/32
+ + + +
+
+ +
+ + 65100 + str2-sonic-lc3-1 + + + + 65100 + str2-sonic-lc7-1 + + +
+
+ + + + + + HostIP + Loopback0 + + 10.1.0.1/32 + + 10.1.0.1/32 + + + HostIP1 + Loopback0 + + FC00:10::1/128 + + FC00:10::1/128 + + + + + HostIP + eth0 + + 10.3.147.27/23 + + 10.3.147.27/23 + + + V6HostIP + eth0 + + FC00:2::32/64 + + FC00:2::32/64 + + + + + + + str2-sonic-lc5-1 + + + PortChannel102 + Ethernet1/1;Ethernet2/1 + + + + PortChannel104 + Ethernet3/1;Ethernet4/1 + + + + PortChannel106 + Ethernet5/1;Ethernet6/1 + + + + PortChannel108 + Ethernet7/1;Ethernet8/1 + + + + PortChannel1010 + Ethernet9/1;Ethernet10/1 + + + + PortChannel1012 + Ethernet11/1;Ethernet12/1 + + + + PortChannel1016 + Ethernet14/1;Ethernet15/1 + + + + PortChannel1020 + Ethernet17/1;Ethernet18/1 + + + + + + + + + PortChannel102 + 10.0.0.0/31 + + + + PortChannel102 + FC00::1/126 + + + + PortChannel104 + 10.0.0.4/31 + + + + PortChannel104 + FC00::9/126 + + + + PortChannel106 + 10.0.0.8/31 + + + + PortChannel106 + FC00::11/126 + + + + PortChannel108 + 10.0.0.12/31 + + + + PortChannel108 + FC00::19/126 + + + + PortChannel1010 + 10.0.0.16/31 + + + + PortChannel1010 + FC00::21/126 + + + + PortChannel1012 + 10.0.0.20/31 + + + + PortChannel1012 + FC00::29/126 + + + + Ethernet13/1 + 10.0.0.32/31 + + + + Ethernet13/1 + FC00::41/126 + + + + PortChannel1016 + 10.0.0.28/31 + + + + PortChannel1016 + FC00::39/126 + + + + Ethernet16/1 + 10.0.0.34/31 + + + + Ethernet16/1 + FC00::45/126 + + + + PortChannel1020 + 10.0.0.24/31 + + + + PortChannel1020 + FC00::31/126 + + + + Ethernet19/1 + 10.0.0.36/31 + + + + Ethernet19/1 + FC00::49/126 + + + + Ethernet20/1 + 10.0.0.38/31 + + + + Ethernet20/1 + FC00::4D/126 + + + + Ethernet21/1 + 10.0.0.40/31 + + + + Ethernet21/1 + FC00::51/126 + + + + Ethernet22/1 + 10.0.0.42/31 + + + + Ethernet22/1 + FC00::55/126 + + + + Ethernet23/1 + 10.0.0.44/31 + + + + Ethernet23/1 + FC00::59/126 + + + + Ethernet24/1 + 10.0.0.46/31 + + + + Ethernet24/1 + FC00::5D/126 + + + + Ethernet25/1 + 10.0.0.48/31 + + + + Ethernet25/1 + FC00::61/126 + + + + Ethernet26/1 + 10.0.0.50/31 + + + + Ethernet26/1 + FC00::65/126 + + + + Ethernet27/1 + 10.0.0.52/31 + + + + Ethernet27/1 + FC00::69/126 + + + + Ethernet28/1 + 10.0.0.54/31 + + + + Ethernet28/1 + FC00::6D/126 + + + + Ethernet29/1 + 10.0.0.56/31 + + + + Ethernet29/1 + FC00::71/126 + + + + Ethernet30/1 + 10.0.0.58/31 + + + + Ethernet30/1 + FC00::75/126 + + + + Ethernet31/1 + 10.0.0.60/31 + + + + Ethernet31/1 + FC00::79/126 + + + + Ethernet32/1 + 10.0.0.62/31 + + + + Ethernet32/1 + FC00::7D/126 + + + + + + NTP_ACL + NTP + NTP + + + SNMP_ACL + SNMP + SNMP + + + ERSPAN + Everflow + Everflow + + + ERSPANV6 + EverflowV6 + EverflowV6 + + + VTY_LINE + ssh-only + SSH + + + PortChannel102;PortChannel104;PortChannel106;PortChannel108;PortChannel1010;PortChannel1012;PortChannel1016;PortChannel1020;Ethernet13/1;Ethernet16/1;Ethernet19/1;Ethernet20/1;Ethernet21/1;Ethernet22/1;Ethernet23/1;Ethernet24/1;Ethernet25/1;Ethernet26/1;Ethernet27/1;Ethernet28/1;Ethernet29/1;Ethernet30/1;Ethernet31/1;Ethernet32/1 + DataAcl + DataPlane + + + + + + + + + + HostIP + Loopback0 + + 10.1.0.1/32 + + 10.1.0.1/32 + + + HostIP1 + Loopback0 + + FC00:10::1/128 + + FC00:10::1/128 + + + HostIP1 + Loopback4096 + + 192.0.0.3/32 + + 192.0.0.3/32 + + + HostIP1 + Loopback4096 + + 2603:10e2:400::3/128 + + 2603:10e2:400::3/128 + + + + + HostIP + eth0 + + 10.3.147.27/23 + + 10.3.147.27/23 + + + V6HostIP + eth0 + + FC00:2::32/64 + + FC00:2::32/64 + + + + + + Ethernet-IB1 + port + 3.3.3.3/32 + + + Ethernet-IB1 + port + 3333::3:3/128 + + + + + + ASIC1 + + + + + + + Eth0-ASIC1 + 10.0.0.36/31 + + + + Eth0-ASIC1 + FC00::49/126 + + + + Eth8-ASIC1 + 10.0.0.38/31 + + + + Eth8-ASIC1 + FC00::4D/126 + + + + Eth16-ASIC1 + 10.0.0.40/31 + + + + Eth16-ASIC1 + FC00::51/126 + + + + Eth24-ASIC1 + 10.0.0.42/31 + + + + Eth24-ASIC1 + FC00::55/126 + + + + Eth32-ASIC1 + 10.0.0.44/31 + + + + Eth32-ASIC1 + FC00::59/126 + + + + Eth40-ASIC1 + 10.0.0.46/31 + + + + Eth40-ASIC1 + FC00::5D/126 + + + + Eth48-ASIC1 + 10.0.0.48/31 + + + + Eth48-ASIC1 + FC00::61/126 + + + + Eth56-ASIC1 + 10.0.0.50/31 + + + + Eth56-ASIC1 + FC00::65/126 + + + + Eth64-ASIC1 + 10.0.0.52/31 + + + + Eth64-ASIC1 + FC00::69/126 + + + + Eth72-ASIC1 + 10.0.0.54/31 + + + + Eth72-ASIC1 + FC00::6D/126 + + + + Eth80-ASIC1 + 10.0.0.56/31 + + + + Eth80-ASIC1 + FC00::71/126 + + + + Eth88-ASIC1 + 10.0.0.58/31 + + + + Eth88-ASIC1 + FC00::75/126 + + + + Eth96-ASIC1 + 10.0.0.60/31 + + + + Eth96-ASIC1 + FC00::79/126 + + + + Eth104-ASIC1 + 10.0.0.62/31 + + + + Eth104-ASIC1 + FC00::7D/126 + + + + + + SNMP_ACL + SNMP + SNMP + + + ERSPAN + Everflow + Everflow + + + ERSPANV6 + EverflowV6 + EverflowV6 + + + VTY_LINE + ssh-only + SSH + + + Eth0-ASIC1;Eth8-ASIC1;Eth16-ASIC1;Eth24-ASIC1;Eth32-ASIC1;Eth40-ASIC1;Eth48-ASIC1;Eth56-ASIC1;Eth64-ASIC1;Eth72-ASIC1;Eth80-ASIC1;Eth88-ASIC1;Eth96-ASIC1;Eth104-ASIC1 + DataAcl + DataPlane + + + + + + + + + + HostIP + Loopback0 + + 10.1.0.1/32 + + 10.1.0.1/32 + + + HostIP1 + Loopback0 + + FC00:10::1/128 + + FC00:10::1/128 + + + HostIP1 + Loopback4096 + + 192.0.0.2/32 + + 192.0.0.2/32 + + + HostIP1 + Loopback4096 + + 2603:10e2:400::2/128 + + 2603:10e2:400::2/128 + + + + + HostIP + eth0 + + 10.3.147.27/23 + + 10.3.147.27/23 + + + V6HostIP + eth0 + + FC00:2::32/64 + + FC00:2::32/64 + + + + + + Ethernet-IB0 + port + 3.3.3.2/32 + + + Ethernet-IB0 + port + 3333::3:2/128 + + + + + + ASIC0 + + + PortChannel102 + Eth0-ASIC0;Eth8-ASIC0 + + + + PortChannel104 + Eth16-ASIC0;Eth24-ASIC0 + + + + PortChannel106 + Eth32-ASIC0;Eth40-ASIC0 + + + + PortChannel108 + Eth48-ASIC0;Eth56-ASIC0 + + + + PortChannel1010 + Eth64-ASIC0;Eth72-ASIC0 + + + + PortChannel1012 + Eth80-ASIC0;Eth88-ASIC0 + + + + PortChannel1016 + Eth104-ASIC0;Eth112-ASIC0 + + + + PortChannel1020 + Eth128-ASIC0;Eth136-ASIC0 + + + + + + + + PortChannel102 + 10.0.0.0/31 + + + + PortChannel102 + FC00::1/126 + + + + PortChannel104 + 10.0.0.4/31 + + + + PortChannel104 + FC00::9/126 + + + + PortChannel106 + 10.0.0.8/31 + + + + PortChannel106 + FC00::11/126 + + + + PortChannel108 + 10.0.0.12/31 + + + + PortChannel108 + FC00::19/126 + + + + PortChannel1010 + 10.0.0.16/31 + + + + PortChannel1010 + FC00::21/126 + + + + PortChannel1012 + 10.0.0.20/31 + + + + PortChannel1012 + FC00::29/126 + + + + Eth96-ASIC0 + 10.0.0.32/31 + + + + Eth96-ASIC0 + FC00::41/126 + + + + PortChannel1016 + 10.0.0.28/31 + + + + PortChannel1016 + FC00::39/126 + + + + Eth120-ASIC0 + 10.0.0.34/31 + + + + Eth120-ASIC0 + FC00::45/126 + + + + PortChannel1020 + 10.0.0.24/31 + + + + PortChannel1020 + FC00::31/126 + + + + + + SNMP_ACL + SNMP + SNMP + + + ERSPAN + Everflow + Everflow + + + ERSPANV6 + EverflowV6 + EverflowV6 + + + VTY_LINE + ssh-only + SSH + + + PortChannel102;PortChannel104;PortChannel106;PortChannel108;PortChannel1010;PortChannel1012;PortChannel1016;PortChannel1020;Eth0-ASIC0;Eth16-ASIC0;Eth32-ASIC0;Eth48-ASIC0;Eth64-ASIC0;Eth80-ASIC0;Eth96-ASIC0;Eth104-ASIC0;Eth120-ASIC0;Eth128-ASIC0 + DataAcl + DataPlane + + + + + + + + + + DeviceInterfaceLink + ARISTA01T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet1/1 + 100000 + + + DeviceInterfaceLink + ARISTA01T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet2/1 + 100000 + + + DeviceInterfaceLink + ARISTA03T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet3/1 + 100000 + + + DeviceInterfaceLink + ARISTA03T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet4/1 + 400000 + + + DeviceInterfaceLink + ARISTA05T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet5/1 + 400000 + + + DeviceInterfaceLink + ARISTA05T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet6/1 + 400000 + + + DeviceInterfaceLink + ARISTA07T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet7/1 + 400000 + + + DeviceInterfaceLink + ARISTA07T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet8/1 + 100000 + + + DeviceInterfaceLink + ARISTA09T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet9/1 + 100000 + + + DeviceInterfaceLink + ARISTA09T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet10/1 + 100000 + + + DeviceInterfaceLink + ARISTA11T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet11/1 + 100000 + + + DeviceInterfaceLink + ARISTA11T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet12/1 + 100000 + + + DeviceInterfaceLink + ARISTA13T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet13/1 + 100000 + + + DeviceInterfaceLink + ARISTA15T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet14/1 + 100000 + + + DeviceInterfaceLink + ARISTA15T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet15/1 + 100000 + + + DeviceInterfaceLink + ARISTA17T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet16/1 + 100000 + + + DeviceInterfaceLink + ARISTA18T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet17/1 + 100000 + + + DeviceInterfaceLink + ARISTA18T3 + Ethernet2 + str2-sonic-lc5-1 + Ethernet18/1 + 100000 + + + DeviceInterfaceLink + ARISTA19T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet19/1 + 100000 + + + DeviceInterfaceLink + ARISTA20T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet20/1 + 100000 + + + DeviceInterfaceLink + ARISTA21T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet21/1 + 100000 + + + DeviceInterfaceLink + ARISTA22T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet22/1 + 100000 + + + DeviceInterfaceLink + ARISTA23T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet23/1 + 100000 + + + DeviceInterfaceLink + ARISTA24T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet24/1 + 100000 + + + DeviceInterfaceLink + ARISTA25T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet25/1 + 100000 + + + DeviceInterfaceLink + ARISTA26T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet26/1 + 100000 + + + DeviceInterfaceLink + ARISTA27T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet27/1 + 100000 + + + DeviceInterfaceLink + ARISTA28T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet28/1 + 100000 + + + DeviceInterfaceLink + ARISTA29T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet29/1 + 100000 + + + DeviceInterfaceLink + ARISTA30T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet30/1 + 100000 + + + DeviceInterfaceLink + ARISTA31T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet31/1 + 100000 + + + DeviceInterfaceLink + ARISTA32T3 + Ethernet1 + str2-sonic-lc5-1 + Ethernet32/1 + 100000 + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth0-ASIC0 + true + str2-sonic-lc5-1 + Ethernet1/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth8-ASIC0 + true + str2-sonic-lc5-1 + Ethernet2/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth16-ASIC0 + true + str2-sonic-lc5-1 + Ethernet3/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth24-ASIC0 + true + str2-sonic-lc5-1 + Ethernet4/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth32-ASIC0 + true + str2-sonic-lc5-1 + Ethernet5/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth40-ASIC0 + true + str2-sonic-lc5-1 + Ethernet6/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth48-ASIC0 + true + str2-sonic-lc5-1 + Ethernet7/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth56-ASIC0 + true + str2-sonic-lc5-1 + Ethernet8/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth64-ASIC0 + true + str2-sonic-lc5-1 + Ethernet9/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth72-ASIC0 + true + str2-sonic-lc5-1 + Ethernet10/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth80-ASIC0 + true + str2-sonic-lc5-1 + Ethernet11/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth88-ASIC0 + true + str2-sonic-lc5-1 + Ethernet12/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth96-ASIC0 + true + str2-sonic-lc5-1 + Ethernet13/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth104-ASIC0 + true + str2-sonic-lc5-1 + Ethernet14/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth112-ASIC0 + true + str2-sonic-lc5-1 + Ethernet15/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth120-ASIC0 + true + str2-sonic-lc5-1 + Ethernet16/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth128-ASIC0 + true + str2-sonic-lc5-1 + Ethernet17/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC0 + Eth136-ASIC0 + true + str2-sonic-lc5-1 + Ethernet18/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth0-ASIC1 + true + str2-sonic-lc5-1 + Ethernet19/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth8-ASIC1 + true + str2-sonic-lc5-1 + Ethernet20/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth16-ASIC1 + true + str2-sonic-lc5-1 + Ethernet21/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth24-ASIC1 + true + str2-sonic-lc5-1 + Ethernet22/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth32-ASIC1 + true + str2-sonic-lc5-1 + Ethernet23/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth40-ASIC1 + true + str2-sonic-lc5-1 + Ethernet24/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth48-ASIC1 + true + str2-sonic-lc5-1 + Ethernet25/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth56-ASIC1 + true + str2-sonic-lc5-1 + Ethernet26/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth64-ASIC1 + true + str2-sonic-lc5-1 + Ethernet27/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth72-ASIC1 + true + str2-sonic-lc5-1 + Ethernet28/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth80-ASIC1 + true + str2-sonic-lc5-1 + Ethernet29/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth88-ASIC1 + true + str2-sonic-lc5-1 + Ethernet30/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth96-ASIC1 + true + str2-sonic-lc5-1 + Ethernet31/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth104-ASIC1 + true + str2-sonic-lc5-1 + Ethernet32/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth112-ASIC1 + true + str2-sonic-lc5-1 + Ethernet33/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth120-ASIC1 + true + str2-sonic-lc5-1 + Ethernet34/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth128-ASIC1 + true + str2-sonic-lc5-1 + Ethernet35/1 + true + + + DeviceInterfaceLink + 400000 + true + ASIC1 + Eth136-ASIC1 + true + str2-sonic-lc5-1 + Ethernet36/1 + true + + + + + str2-sonic-lc5-1 + Sonic-linecard-masic-hwsku + + 10.3.147.27 + + + + ARISTA05T3 + + 172.16.145.34 + + Arista-VM + + + ARISTA11T3 + + 172.16.145.37 + + Arista-VM + + + ARISTA17T3 + + 172.16.145.40 + + Arista-VM + + + ARISTA21T3 + + 172.16.145.44 + + Arista-VM + + + ARISTA19T3 + + 172.16.145.42 + + Arista-VM + + + ARISTA09T3 + + 172.16.145.36 + + Arista-VM + + + ARISTA20T3 + + 172.16.145.43 + + Arista-VM + + + ARISTA03T3 + + 172.16.145.33 + + Arista-VM + + + ARISTA07T3 + + 172.16.145.35 + + Arista-VM + + + ARISTA01T3 + + 172.16.145.32 + + Arista-VM + + + ARISTA27T3 + + 172.16.145.50 + + Arista-VM + + + ARISTA26T3 + + 172.16.145.49 + + Arista-VM + + + ARISTA32T3 + + 172.16.145.55 + + Arista-VM + + + ARISTA23T3 + + 172.16.145.46 + + Arista-VM + + + ARISTA25T3 + + 172.16.145.48 + + Arista-VM + + + ARISTA24T3 + + 172.16.145.47 + + Arista-VM + + + ARISTA22T3 + + 172.16.145.45 + + Arista-VM + + + ARISTA28T3 + + 172.16.145.51 + + Arista-VM + + + ARISTA30T3 + + 172.16.145.53 + + Arista-VM + + + ARISTA18T3 + + 172.16.145.41 + + Arista-VM + + + ARISTA29T3 + + 172.16.145.52 + + Arista-VM + + + ARISTA15T3 + + 172.16.145.39 + + Arista-VM + + + ARISTA13T3 + + 172.16.145.38 + + Arista-VM + + + ARISTA31T3 + + 172.16.145.54 + + Arista-VM + + + Asic +
+ 0.0.0.0/0 +
+ + ::/0 + + + + + + + + + + 0.0.0.0/0 + + + ::/0 + + + ASIC0 + Broadcom-Trident2 +
+ + Asic +
+ 0.0.0.0/0 +
+ + ::/0 + + + + + + + + + + 0.0.0.0/0 + + + ::/0 + + + ASIC1 + Broadcom-Trident2 +
+
+
+ + + true + + + DeviceInterface + + true + true + 1 + Ethernet1/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet2/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet3/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet4/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet5/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet6/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet7/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet8/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet9/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet10/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet11/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet12/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet13/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet14/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet15/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet16/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet17/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet18/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet19/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet20/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet21/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet22/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet23/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet24/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet25/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet26/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet27/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet28/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet29/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet30/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet31/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet32/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet33/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet34/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet35/1 + + false + 0 + 0 + 400000 + + + DeviceInterface + + true + true + 1 + Ethernet36/1 + + false + 0 + 0 + 400000 + + + true + 0 + Sonic-linecard-masic-hwsku + + + + + + + str2-sonic-lc5-1 + + + DeploymentId + + 1 + + + QosProfile + + Profile0 + + + DhcpResources + + 192.0.0.1;192.0.0.2;192.0.0.3;192.0.0.4;192.0.0.5;192.0.0.6;192.0.0.7;192.0.0.8;192.0.0.9;192.0.0.10;192.0.0.11;192.0.0.12;192.0.0.13;192.0.0.14;192.0.0.15;192.0.0.16;192.0.0.17;192.0.0.18;192.0.0.19;192.0.0.20;192.0.0.21;192.0.0.22;192.0.0.23;192.0.0.24;192.0.0.25;192.0.0.26;192.0.0.27;192.0.0.28;192.0.0.29;192.0.0.30;192.0.0.31;192.0.0.32;192.0.0.33;192.0.0.34;192.0.0.35;192.0.0.36;192.0.0.37;192.0.0.38;192.0.0.39;192.0.0.40;192.0.0.41;192.0.0.42;192.0.0.43;192.0.0.44;192.0.0.45;192.0.0.46;192.0.0.47;192.0.0.48 + + + NtpResources + + 10.20.8.129;10.20.8.130 + + + SnmpResources + + 10.3.145.98 + + + SyslogResources + + 10.64.246.95 + + + TacacsGroup + + Starlab + + + TacacsServer + + 100.127.20.21 + + + ForcedMgmtRoutes + + 10.3.145.98/31;10.3.145.8;100.127.20.16/28;10.3.149.170/31;40.122.216.24;13.91.48.226;10.3.145.14;10.64.246.0/24;10.3.146.0/23;10.64.5.5;10.201.148.32/28 + + + ErspanDestinationIpv4 + + 10.20.6.16 + + + SwitchType + + voq + + + MaxCores + + 16 + + + + + ASIC0 + + + SubRole + + FrontEnd + + + SwitchType + + voq + + + SwitchId + + 2 + + + MaxCores + + 16 + + + + + ASIC1 + + + SubRole + + FrontEnd + + + SwitchType + + voq + + + SwitchId + + 4 + + + MaxCores + + 16 + + + + + ASIC1 + + + DeploymentId + + 1 + + + SubRole + + FrontEnd + + + SwitchType + + voq + + + + + ASIC0 + + + DeploymentId + + 1 + + + SubRole + + FrontEnd + + + SwitchType + + voq + + + + + + + str2-sonic-lc5-1 + Sonic-linecard-masic-hwsku +
diff --git a/src/sonic-device-data/tests/permitted_list b/src/sonic-device-data/tests/permitted_list index 565f7796afa7..2ce2cbdfafc0 100644 --- a/src/sonic-device-data/tests/permitted_list +++ b/src/sonic-device-data/tests/permitted_list @@ -332,3 +332,4 @@ sai_mdio_access_clause22 cmic_dma_abort_in_cold_boot hybrid_pfc_deadlock_enable sai_pfc_dlr_init_capability +appl_param_nof_ports_per_modid diff --git a/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py b/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py index bb6d7730f141..6bee64a6d4ba 100755 --- a/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py +++ b/src/sonic-frr-mgmt-framework/frrcfgd/frrcfgd.py @@ -1445,6 +1445,7 @@ class ExtConfigDBConnector(ConfigDBConnector): def __init__(self, ns_attrs = None): super(ExtConfigDBConnector, self).__init__() self.nosort_attrs = ns_attrs if ns_attrs is not None else {} + self.__listen_thread_running = False def raw_to_typed(self, raw_data, table = ''): if len(raw_data) == 0: raw_data = None @@ -1469,12 +1470,28 @@ def sub_msg_handler(self, msg_item): except Exception as e: syslog.syslog(syslog.LOG_ERR, '[bgp cfgd] Failed handling config DB update with exception:' + str(e)) logging.exception(e) + + def listen_thread(self, timeout): + self.__listen_thread_running = True + sub_key_space = "__keyspace@{}__:*".format(self.get_dbid(self.db_name)) + self.pubsub.psubscribe(sub_key_space) + while self.__listen_thread_running: + msg = self.pubsub.get_message(timeout, True) + if msg: + self.sub_msg_handler(msg) + + self.pubsub.punsubscribe(sub_key_space) + def listen(self): """Start listen Redis keyspace events and will trigger corresponding handlers when content of a table changes. """ self.pubsub = self.get_redis_client(self.db_name).pubsub() - self.pubsub.psubscribe(**{"__keyspace@{}__:*".format(self.get_dbid(self.db_name)): self.sub_msg_handler}) - self.sub_thread = self.pubsub.run_in_thread(sleep_time = 0.01) + self.sub_thread = threading.Thread(target=self.listen_thread, args=(0.01,)) + self.sub_thread.start() + + def stop_listen(self): + self.__listen_thread_running = False + @staticmethod def get_table_key(table, key): return table + '&&' + key @@ -3774,7 +3791,7 @@ def start(self): self.subscribe_all() self.config_db.listen() def stop(self): - self.config_db.sub_thread.stop() + self.config_db.stop_listen() if self.config_db.sub_thread.is_alive(): self.config_db.sub_thread.join() diff --git a/src/sonic-frr-mgmt-framework/tests/test_config.py b/src/sonic-frr-mgmt-framework/tests/test_config.py index 02c5181c2ce5..02dbf391e99d 100644 --- a/src/sonic-frr-mgmt-framework/tests/test_config.py +++ b/src/sonic-frr-mgmt-framework/tests/test_config.py @@ -14,10 +14,10 @@ def test_contructor(): for table, hdlr in daemon.table_handler_list: daemon.config_db.subscribe.assert_any_call(table, hdlr) daemon.config_db.pubsub.psubscribe.assert_called_once() + assert(daemon.config_db.sub_thread.is_alive() == True) daemon.stop() - daemon.config_db.sub_thread.stop.assert_called() - daemon.config_db.sub_thread.is_alive.assert_called_once() - daemon.config_db.sub_thread.join.assert_called_once() + daemon.config_db.pubsub.punsubscribe.assert_called_once() + assert(daemon.config_db.sub_thread.is_alive() == False) class CmdMapTestInfo: data_buf = {} diff --git a/src/sonic-linux-kernel b/src/sonic-linux-kernel index 464d2cdbb9d6..4c2d4572cebc 160000 --- a/src/sonic-linux-kernel +++ b/src/sonic-linux-kernel @@ -1 +1 @@ -Subproject commit 464d2cdbb9d6283124babcbb4b0df3aca0b53d68 +Subproject commit 4c2d4572cebc05222da515b1dcf08510197d9ae8 diff --git a/src/sonic-platform-common b/src/sonic-platform-common index 01ef800ca959..85c20cdee265 160000 --- a/src/sonic-platform-common +++ b/src/sonic-platform-common @@ -1 +1 @@ -Subproject commit 01ef800ca9590349e2c9299bcdd339831aa0a79d +Subproject commit 85c20cdee2650f89351bf3a78053ebf58ccd9846 diff --git a/src/sonic-platform-daemons b/src/sonic-platform-daemons index 906d198dea3c..05dd3bd3e6b3 160000 --- a/src/sonic-platform-daemons +++ b/src/sonic-platform-daemons @@ -1 +1 @@ -Subproject commit 906d198dea3cddc2d9b864a89028b590bd5c1ff8 +Subproject commit 05dd3bd3e6b3c94cf64e36302f735a101a60ea53 diff --git a/src/sonic-swss b/src/sonic-swss index 44ea6a08659a..309df59701ff 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit 44ea6a08659a11723173c5272b0400882cf11347 +Subproject commit 309df59701ff77cd3be22917bd581207506c15c9 diff --git a/src/sonic-utilities b/src/sonic-utilities index 33e85d37f6ab..b81734289b7c 160000 --- a/src/sonic-utilities +++ b/src/sonic-utilities @@ -1 +1 @@ -Subproject commit 33e85d37f6abd4e7707d4c2436c9014239ce8d06 +Subproject commit b81734289b7ca361b365cbf1c845d31b0a81657e diff --git a/src/sonic-yang-mgmt/tests/test_cfghelp.py b/src/sonic-yang-mgmt/tests/test_cfghelp.py index 5867c78e5282..2eebebe7be3b 100644 --- a/src/sonic-yang-mgmt/tests/test_cfghelp.py +++ b/src/sonic-yang-mgmt/tests/test_cfghelp.py @@ -71,17 +71,17 @@ """ -portchannel_table_field_output="""\ +vlan_table_field_output="""\ -PORTCHANNEL -Description: PORTCHANNEL part of config_db.json +VLAN +Description: VLAN part of config_db.json key - name -+---------+-------------------------------------------+-------------+-----------+-------------+ -| Field | Description | Mandatory | Default | Reference | -+=========+===========================================+=============+===========+=============+ -| members | The field contains list of unique members | | | PORT:name | -+---------+-------------------------------------------+-------------+-----------+-------------+ ++--------------+------------------------------------------------------------------------+-------------+-----------+-------------+ +| Field | Description | Mandatory | Default | Reference | ++==============+========================================================================+=============+===========+=============+ +| dhcp_servers | The field contains list of unique membersConfigure the dhcp v4 servers | | | | ++--------------+------------------------------------------------------------------------+-------------+-----------+-------------+ """ @@ -153,9 +153,9 @@ def test_single_field(self): self.assertEqual(output, techsupport_table_field_output) def test_leaf_list(self): - argument = ['-t', 'PORTCHANNEL', '-f', 'members'] + argument = ['-t', 'VLAN', '-f', 'dhcp_servers'] output = self.run_script(argument) - self.assertEqual(output, portchannel_table_field_output) + self.assertEqual(output, vlan_table_field_output) def test_leaf_list_map(self): argument = ['-t', 'DSCP_TO_TC_MAP'] diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index 69635053245b..7c9bce01de4f 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -18,6 +18,7 @@ Table of Contents * [Buffer port ingress profile list](#buffer-port-ingress-profile-list) * [Buffer port egress profile list](#buffer-port-egress-profile-list) * [Cable length](#cable-length) + * [Chassis module](#chassis-module) * [COPP_TABLE](#copp_table) * [Console](#console) * [CRM](#crm) @@ -26,6 +27,9 @@ Table of Contents * [Device Metadata](#device-metadata) * [Device neighbor metada](#device-neighbor-metada) * [DSCP_TO_TC_MAP](#dscp_to_tc_map) + * [FG_NHG](#fg_nhg) + * [FG_NHG_MEMBER](#fg_nhg_member) + * [FG_NHG_PREFIX](#fg_nhg_prefix) * [FLEX_COUNTER_TABLE](#flex_counter_table) * [Hash](#hash) * [KDUMP](#kdump) @@ -645,6 +649,25 @@ This kind of profiles will be handled by buffer manager and won't be applied to ``` +### Chassis Module + +CHASSIS_MODULE table holds the list and configuration of linecard and fabric modules in a SONiC chassis. +It currently allows user to administratively bring down a line-card or fabric-card + +``` +{ + "CHASSIS_MODULE": { + "LINE-CARD0": { + "admin_status": "down" + }, + "FABRIC-CARD1": { + "admin_status": "down" + } + } +} + +``` + ### COPP_TABLE ``` @@ -892,6 +915,57 @@ instance is supported in SONiC. ``` +### FG_NHG + +The FG_NHG table provides information on Next Hop Groups, including a specified Hash Bucket Size (bucket_size) and match mode for each group. + +``` +"FG_NHG": { + "fgnhg_v4": { + "bucket_size": "120", + "match_mode": "nexthop-based" + }, + "fgnhg_v6": { + "bucket_size": "120", + "match_mode": "nexthop-based" + } +} +``` + +### FG_NHG_MEMBER + +The FG_NHG_MEMBER table provides information about the members of a next hop group, including the group name (FG_NHG), the index at which redistribution is performed (bank), and the link associated with the next-hop-ip (link). + +``` +"FG_NHG_MEMBER": { + "200.200.200.4": { + "FG_NHG": "fgnhg_v4", + "bank": "0", + "link": "Ethernet8" + }, + "200.200.200.5": { + "FG_NHG": "fgnhg_v4", + "bank": "1", + "link": "Ethernet12" + } +} +``` + +### FG_NHG_PREFIX + +The FG_NHG_PREFIX table provides the FG_NHG_PREFIX for which FG behavior is desired, and Fine Grained next-hop group name. + +``` +"FG_NHG_PREFIX": { + "100.50.25.12/32": { + "FG_NHG": "fgnhg_v4" + }, + "fc:05::/128": { + "FG_NHG": "fgnhg_v6" + } +} +``` + ### MPLS_TC_TO_TC_MAP ``` @@ -1422,7 +1496,9 @@ name as object key and member list as attribute. "members": [ "Ethernet56" ], - "mtu": "9100" + "mtu": "9100", + "fallback": "false", + "fast_rate": "true" } } } @@ -1883,6 +1959,7 @@ table allow to change properties of a virtual router. Attributes: packets with IP options - 'l3_mc_action' contains packet action. Defines the action for unknown L3 multicast packets +- 'vni' contains L3 VNI value. VNI associated Virtual router instance. The packet action could be: @@ -1904,7 +1981,8 @@ The packet action could be: 'src_mac': '02:04:05:06:07:08', 'ttl_action': 'copy', 'ip_opt_action': 'deny', - 'l3_mc_action': 'drop' + 'l3_mc_action': 'drop', + 'vni': '100' } ``` diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py index 2736465ead3e..96899c055bda 100644 --- a/src/sonic-yang-models/setup.py +++ b/src/sonic-yang-models/setup.py @@ -97,6 +97,7 @@ def run(self): './yang-models/sonic-buffer-profile.yang', './yang-models/sonic-buffer-queue.yang', './yang-models/sonic-cable-length.yang', + './yang-models/sonic-chassis-module.yang', './yang-models/sonic-copp.yang', './yang-models/sonic-console.yang', './yang-models/sonic-crm.yang', @@ -116,6 +117,7 @@ def run(self): './yang-models/sonic-events-syncd.yang', './yang-models/sonic-extension.yang', './yang-models/sonic-flex_counter.yang', + './yang-models/sonic-fine-grained-ecmp.yang', './yang-models/sonic-feature.yang', './yang-models/sonic-hash.yang', './yang-models/sonic-system-defaults.yang', @@ -203,6 +205,7 @@ def run(self): './cvlyang-models/sonic-extension.yang', './cvlyang-models/sonic-flex_counter.yang', './cvlyang-models/sonic-feature.yang', + './cvlyang-models/sonic-fine-grained-ecmp.yang', './cvlyang-models/sonic-hash.yang', './cvlyang-models/sonic-system-defaults.yang', './cvlyang-models/sonic-interface.yang', diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json index 1d0d04b3f9b5..d6f35897285e 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -2,6 +2,7 @@ "SAMPLE_CONFIG_DB_JSON": { "VRF": { "Vrf_blue": { + "vni" : "100" } }, "DHCP_SERVER": { @@ -85,9 +86,6 @@ "PortChannel0003": { "admin_status": "up", "min_links": "1", - "members": [ - "Ethernet1" - ], "tpid": "0x8100", "mtu": "9100", "lacp_key": "auto" @@ -95,9 +93,6 @@ "PortChannel0004": { "admin_status": "up", "min_links": "1", - "members": [ - "Ethernet2" - ], "tpid": "0x9200", "mtu": "9100", "lacp_key": "auto" @@ -105,22 +100,17 @@ "PortChannel2": { "admin_status": "up", "min_links": "1", - "members": [ - "Ethernet12" - ], "tpid": "0x9200", "mtu": "9100", "lacp_key": "auto" }, "PortChannel42": { "admin_status": "up", - "members": [ - "Ethernet-BP0", - "Ethernet-BP4" - ], "min_links": "2", "mtu": "9100", - "tpid": "0x8100" + "tpid": "0x8100", + "fast_rate": "false", + "fallback" : "true" } }, "PORTCHANNEL_INTERFACE": { @@ -1641,6 +1631,14 @@ "prefix1|1|10.0.0.0/8|8..16": { } }, + "CHASSIS_MODULE": { + "LINE-CARD0": { + "admin_status": "down" + }, + "FABRIC-CARD1": { + "admin_status": "down" + } + }, "COPP_GROUP": { "queue1_group1": { "queue": "1", @@ -2227,6 +2225,10 @@ "SYSTEM_DEFAULTS": { "tunnel_qos_remap": { "status": "enabled" + }, + "mux_tunnel_egress_acl": + { + "status": "enabled" } }, "LOSSLESS_TRAFFIC_PATTERN": { @@ -2281,6 +2283,46 @@ "vni": "10", "guid":"guid-vnet1" } + }, + "FG_NHG": { + "nhg1": { + "bucket_size": "16", + "match_mode": "nexthop-based" + }, + "nhg2": { + "bucket_size": "32", + "match_mode": "route-based" + } + }, + "FG_NHG_PREFIX": { + "10.0.0.0/24": { + "FG_NHG": "nhg1" + }, + "192.168.0.0/16": { + "FG_NHG": "nhg2" + } + }, + "FG_NHG_MEMBER": { + "192.168.1.1": { + "FG_NHG": "nhg1", + "bank": "0", + "link": "Ethernet1" + }, + "192.168.1.2": { + "FG_NHG": "nhg1", + "bank": "0", + "link": "Ethernet2" + }, + "10.0.0.1": { + "FG_NHG": "nhg2", + "bank": "1", + "link": "PortChannel42" + }, + "10.0.0.2": { + "FG_NHG": "nhg2", + "bank": "1", + "link": "PortChannel2" + } } }, "SAMPLE_CONFIG_DB_UNKNOWN": { diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/chassis_module.json b/src/sonic-yang-models/tests/yang_model_tests/tests/chassis_module.json new file mode 100644 index 000000000000..cfdaa3733e84 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/chassis_module.json @@ -0,0 +1,13 @@ +{ + "CHASSIS_MODULE_WITH_DEFAULT_VALUES": { + "desc": "Load chassis module table with fields set to default values" + }, + "CHASSIS_MODULE_WITH_LINECARD_ADMIN_DOWN": { + "desc": "Load chassis module table with admin_status set to down" + }, + "CHASSIS_MODULE_WITH_LINECARD_ADMIN_INVALID_VALUE": { + "desc": "Load chassis module table with admin_status set to invalid value", + "eStrKey": "InvalidValue", + "eStr": ["admin_status"] + } +} diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/fine-grained-ecmp.json b/src/sonic-yang-models/tests/yang_model_tests/tests/fine-grained-ecmp.json new file mode 100644 index 000000000000..2eed9fb8f34f --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/fine-grained-ecmp.json @@ -0,0 +1,59 @@ +{ + "FG_NHG_TEST": { + "desc": "Fine-grained ECMP next-hop group configuration in FG_NHG_LIST table." + }, + "FG_NHG_PREFIX_TEST": { + "desc": "Fine-grained ECMP prefix configuration in FG_NHG_PREFIX_LIST table." + }, + "FG_NHG_MEMBER_TEST": { + "desc": "Fine-grained ECMP next-hop member configuration in FG_NHG_MEMBER_LIST table." + }, + "FG_NHG_MEMBER_MULTI_LINK_TEST": { + "desc": "Fine-grained ECMP next-hop member configuration with multiple links in FG_NHG_MEMBER_LIST table." + }, + "FG_NHG_TEST_DUPLICATE_NAME": { + "desc": "Fine-grained ECMP next-hop group configuration with duplicate name in FG_NHG_LIST table.", + "eStr": "Duplicated instance of \"FG_NHG_LIST\" list." + }, + "FG_NHG_MEMBER_TEST_INVALID_IP": { + "desc": "Fine-grained ECMP next-hop member configuration with invalid IP value in FG_NHG_MEMBER_LIST table.", + "eStrKey": "InvalidValue", + "eStr": [ + "next_hop_ip" + ] + }, + "FG_NHG_PREFIX_TEST_INVALID_PREFIX": { + "desc": "Fine-grained ECMP prefix configuration with invalid prefix value in FG_NHG_PREFIX_LIST table.", + "eStrKey": "InvalidValue", + "eStr": [ + "ip_prefix" + ] + }, + "FG_NHG_MEMBER_TEST_INVALID_LINK": { + "desc": "Fine-grained ECMP next-hop member configuration with invalid link value in FG_NHG_MEMBER_LIST table.", + "eStrKey": "InvalidValue", + "eStr": [ + "link" + ] + }, + "FG_NHG_MEMBER_TEST_MISSING_FG_NHG_REF": { + "desc": "Fine-grained ECMP next-hop member configuration with missing FG_NHG reference in FG_NHG_MEMBER_LIST table.", + "eStr": "Missing required element \"FG_NHG\" in \"FG_NHG_MEMBER_LIST\". " + }, + "FG_NHG_PREFIX_TEST_MISSING_FG_NHG_REF": { + "desc": "Fine-grained ECMP prefix configuration with missing FG_NHG reference in FG_NHG_PREFIX_LIST table.", + "eStr": "Missing required element \"FG_NHG\" in \"FG_NHG_PREFIX_LIST\". " + }, + "FG_NHG_MEMBER_TEST_MISSING_BANK": { + "desc": "Fine-grained ECMP next-hop member configuration with missing bank in FG_NHG_MEMBER_LIST table.", + "eStr": "Missing required element \"bank\"" + }, + "FG_NHG_PREFIX_TEST_DUPLICATE_ENTRY": { + "desc": "Fine-grained ECMP prefix configuration with duplicate entry in FG_NHG_PREFIX_LIST table.", + "eStr": "Duplicated instance of \"FG_NHG_PREFIX_LIST\" list." + }, + "FG_NHG_MEMBER_TEST_DUPLICATE_MEMBER": { + "desc": "Fine-grained ECMP next-hop member configuration with duplicate member in FG_NHG_MEMBER_LIST table.", + "eStr": "Duplicated instance of \"FG_NHG_MEMBER_LIST\" list." + } +} \ No newline at end of file diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json b/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json index e69074bdfbf6..ae7a7dffd928 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/portchannel.json @@ -19,6 +19,16 @@ "eStrKey" : "Pattern", "eStr": ["0x8100|0x9100|0x9200|0x88a8|0x88A8"] }, + "PORT_CHANNEL_INVALID_FALLBACK": { + "desc": "INCORRECT PORTCHANNEL FALLBACK IN PORT_CHANNEL TABLE.", + "eStrKey" : "Pattern", + "eStr": ["false|true|False|True"] + }, + "PORT_CHANNEL_INVALID_FAST_RATE": { + "desc": "INCORRECT PORTCHANNEL FAST_RATE IN PORT_CHANNEL TABLE.", + "eStrKey" : "Pattern", + "eStr": ["false|true|False|True"] + }, "PORTCHANNEL_INTERFACE_IP_ADDR_TEST": { "desc": "Configure IP address on PORTCHANNEL_INTERFACE table." }, diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/vrf.json b/src/sonic-yang-models/tests/yang_model_tests/tests/vrf.json index a9d9bb0f9d9c..73e31ee109cc 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests/vrf.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/vrf.json @@ -8,5 +8,12 @@ }, "VRF_TEST_WITH_FALLBACK": { "desc": "Configure VRF with fallback in VRF table." + }, + "VRF_TEST_WITH_VNI": { + "desc": "Configure VRF with VNI in VRF table." + }, + "VRF_TEST_WITH_VNI_OOR": { + "desc": "Configure VRF with out of range VNI in VRF table.", + "eStrKey": "Range" } } diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/chassis_module.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/chassis_module.json new file mode 100644 index 000000000000..35c76c7c4d4e --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/chassis_module.json @@ -0,0 +1,54 @@ +{ + "CHASSIS_MODULE_WITH_DEFAULT_VALUES": { + "sonic-chassis-module:sonic-chassis-module": { + "sonic-chassis-module:CHASSIS_MODULE": { + "CHASSIS_MODULE_LIST": [ + { + "name": "LINE-CARD0", + "admin_status": "up" + }, + { + "name": "LINE-CARD1", + "admin_status": "up" + }, + { + "name": "FABRIC-CARD0", + "admin_status": "up" + }, + { + "name": "FABRIC-CARD1", + "admin_status": "up" + } + ] + } + } + }, + "CHASSIS_MODULE_WITH_LINECARD_ADMIN_DOWN": { + "sonic-chassis-module:sonic-chassis-module": { + "sonic-chassis-module:CHASSIS_MODULE": { + "CHASSIS_MODULE_LIST": [ + { + "name": "LINE-CARD0", + "admin_status": "down" + }, + { + "name": "FABRIC-CARD1", + "admin_status": "down" + } + ] + } + } + }, + "CHASSIS_MODULE_WITH_LINECARD_ADMIN_INVALID_VALUE": { + "sonic-chassis-module:sonic-chassis-module": { + "sonic-chassis-module:CHASSIS_MODULE": { + "CHASSIS_MODULE_LIST": [ + { + "name": "LINE-CARD0", + "admin_status": "false" + } + ] + } + } + } +} diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/fine_grained_ecmp.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/fine_grained_ecmp.json new file mode 100644 index 000000000000..2bfbbb6239c0 --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/fine_grained_ecmp.json @@ -0,0 +1,395 @@ +{ + "FG_NHG_TEST": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + }, + { + "name": "group2", + "bucket_size": 20, + "match_mode": "route-based" + } + ] + } + } + }, + "FG_NHG_PREFIX_TEST": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + }, + { + "name": "group2", + "bucket_size": 20, + "match_mode": "route-based" + } + ] + }, + "sonic-fine-grained-ecmp:FG_NHG_PREFIX": { + "FG_NHG_PREFIX_LIST": [ + { + "ip_prefix": "10.0.0.0/24", + "FG_NHG": "group1" + }, + { + "ip_prefix": "10.1.0.0/24", + "FG_NHG": "group2" + }, + { + "ip_prefix": "fe80::/64", + "FG_NHG": "group1" + }, + { + "ip_prefix": "::/0", + "FG_NHG": "group2" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet1", + "tpid": "0x8100", + "speed": "25000" + } + ] + } + }, + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + }, + { + "name": "group2", + "bucket_size": 20, + "match_mode": "route-based" + } + ] + }, + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "bank": 1, + "link": "Ethernet1" + }, + { + "next_hop_ip": "10.0.0.2", + "FG_NHG": "group1", + "bank": 2, + "link": "Ethernet1" + }, + { + "next_hop_ip": "10.1.0.1", + "FG_NHG": "group2", + "bank": 3, + "link": "Ethernet1" + }, + { + "next_hop_ip": "2001:0db8:85a3:0000:0000:8a2e:0370:7334", + "FG_NHG": "group1", + "bank": 4, + "link": "Ethernet1" + }, + { + "next_hop_ip": "2001:db8::1", + "FG_NHG": "group2", + "bank": 5, + "link": "Ethernet1" + } + ] + } + } + }, + "FG_NHG_MEMBER_MULTI_LINK_TEST": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet1", + "tpid": "0x8100", + "speed": "25000" + }, + { + "admin_status": "up", + "alias": "eth1", + "description": "Ethernet1", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet2", + "tpid": "0x8100", + "speed": "25000" + } + ] + } + }, + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + }, + { + "name": "group2", + "bucket_size": 20, + "match_mode": "route-based" + } + ] + }, + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "bank": 1, + "link": "Ethernet1" + }, + { + "next_hop_ip": "10.0.0.2", + "FG_NHG": "group1", + "bank": 2, + "link": "Ethernet2" + }, + { + "next_hop_ip": "10.1.0.1", + "FG_NHG": "group2", + "bank": 3, + "link": "Ethernet1" + } + ] + } + } + }, + "FG_NHG_TEST_DUPLICATE_NAME": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + }, + { + "name": "group1", + "bucket_size": 20, + "match_mode": "route-based" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST_INVALID_IP": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "invalid_ip", + "FG_NHG": "group1", + "bank": 1, + "link": "Ethernet1" + } + ] + } + } + }, + "FG_NHG_PREFIX_TEST_INVALID_PREFIX": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_PREFIX": { + "FG_NHG_PREFIX_LIST": [ + { + "ip_prefix": "invalid_prefix", + "FG_NHG": "group1" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST_INVALID_LINK": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet1", + "tpid": "0x8100", + "speed": "25000" + } + ] + } + }, + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + } + ] + }, + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "bank": 1, + "link": "invalidLink" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST_MISSING_FG_NHG_REF": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet1", + "tpid": "0x8100", + "speed": "25000" + } + ] + } + }, + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "bank": 1, + "link": "Ethernet1" + } + ] + } + } + }, + "FG_NHG_PREFIX_TEST_MISSING_FG_NHG_REF": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_PREFIX": { + "FG_NHG_PREFIX_LIST": [ + { + "ip_prefix": "10.0.0.0/24" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST_MISSING_BANK": { + "sonic-port:sonic-port": { + "sonic-port:PORT": { + "PORT_LIST": [ + { + "admin_status": "up", + "alias": "eth0", + "description": "Ethernet0", + "lanes": "65", + "mtu": "9000", + "name": "Ethernet1", + "tpid": "0x8100", + "speed": "25000" + } + ] + } + }, + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG": { + "FG_NHG_LIST": [ + { + "name": "group1", + "bucket_size": 10, + "match_mode": "nexthop-based" + } + ] + }, + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "link": "Ethernet1" + } + ] + } + } + }, + "FG_NHG_PREFIX_TEST_DUPLICATE_ENTRY": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_PREFIX": { + "FG_NHG_PREFIX_LIST": [ + { + "ip_prefix": "10.0.0.0/24", + "FG_NHG": "group1" + }, + { + "ip_prefix": "10.0.0.0/24", + "FG_NHG": "group2" + } + ] + } + } + }, + "FG_NHG_MEMBER_TEST_DUPLICATE_MEMBER": { + "sonic-fine-grained-ecmp:sonic-fine-grained-ecmp": { + "sonic-fine-grained-ecmp:FG_NHG_MEMBER": { + "FG_NHG_MEMBER_LIST": [ + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "bank": 1, + "link": "Ethernet1" + }, + { + "next_hop_ip": "10.0.0.2", + "FG_NHG": "group1", + "bank": 2, + "link": "Ethernet1" + }, + { + "next_hop_ip": "10.0.0.1", + "FG_NHG": "group1", + "bank": 3, + "link": "Ethernet1" + } + ] + } + } + } +} \ No newline at end of file diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/mclag.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/mclag.json index fdb2661a973a..3d2ca3c92be6 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/mclag.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/mclag.json @@ -29,9 +29,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "lacp_key": "auto", @@ -39,9 +36,6 @@ }, { "admin_status": "up", - "members": [ - "Ethernet10" - ], "min_links": "1", "mtu": "9100", "lacp_key": "auto", @@ -151,9 +145,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "lacp_key": "auto", diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json index 6c26e9ce83e6..36f2484fa3bf 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/portchannel.json @@ -21,14 +21,13 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "tpid": "0x8100", "lacp_key": "auto", - "name": "PortChannel0001" + "name": "PortChannel0001", + "fast_rate": "false", + "fallback" : "false" } ] } @@ -55,9 +54,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1024", "mtu": "9100", "name": "PortChannel0001" @@ -87,9 +83,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1025", "mtu": "9100", "name": "PortChannel0001" @@ -125,6 +118,36 @@ } } }, + "PORT_CHANNEL_INVALID_FALLBACK": { + "sonic-portchannel:sonic-portchannel": { + "sonic-portchannel:PORTCHANNEL": { + "PORTCHANNEL_LIST": [ + { + "admin_status": "up", + "mtu": "9100", + "tpid": "0x9100", + "name": "PortChannel0001", + "fallback": "enabled" + } + ] + } + } + }, + "PORT_CHANNEL_INVALID_FAST_RATE": { + "sonic-portchannel:sonic-portchannel": { + "sonic-portchannel:PORTCHANNEL": { + "PORTCHANNEL_LIST": [ + { + "admin_status": "up", + "mtu": "9100", + "tpid": "0x9100", + "name": "PortChannel0001", + "fast_rate": "TRUE" + } + ] + } + } + }, "PORTCHANNEL_INTERFACE_IP_ADDR_TEST": { "sonic-portchannel:sonic-portchannel": { "sonic-portchannel:PORTCHANNEL": { @@ -303,9 +326,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "name": "PortChannel0001" @@ -350,9 +370,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "name": "PortChannel0001" @@ -396,9 +413,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "name": "PortChannel0001" diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/system_defaults.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/system_defaults.json index a8ccc13c099d..da9a3e752bf7 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/system_defaults.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/system_defaults.json @@ -6,6 +6,10 @@ { "name": "tunnel_qos_remap", "status": "enabled" + }, + { + "name": "mux_tunnel_egress_acl", + "status": "enabled" } ] } @@ -18,6 +22,10 @@ { "name": "tunnel_qos_remap", "status": "invalid_status" + }, + { + "name": "mux_tunnel_egress_acl", + "status": "invalid_status" } ] } diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vlan_sub_interface.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vlan_sub_interface.json index b249510f4370..6f200ef4b7ea 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vlan_sub_interface.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vlan_sub_interface.json @@ -196,9 +196,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "tpid": "0x8100", @@ -246,9 +243,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "tpid": "0x8100", @@ -296,9 +290,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "tpid": "0x8100", @@ -346,9 +337,6 @@ "PORTCHANNEL_LIST": [ { "admin_status": "up", - "members": [ - "Ethernet0" - ], "min_links": "1", "mtu": "9100", "tpid": "0x8100", diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vrf.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vrf.json index f34d3fbdd52d..082ec022f81b 100644 --- a/src/sonic-yang-models/tests/yang_model_tests/tests_config/vrf.json +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/vrf.json @@ -28,5 +28,27 @@ }] } } + }, + + "VRF_TEST_WITH_VNI": { + "sonic-vrf:sonic-vrf": { + "sonic-vrf:VRF": { + "VRF_LIST": [{ + "name": "Vrf_blue", + "vni": "100" + }] + } + } + }, + + "VRF_TEST_WITH_VNI_OOR": { + "sonic-vrf:sonic-vrf": { + "sonic-vrf:VRF": { + "VRF_LIST": [{ + "name": "Vrf_blue", + "vni": "16777216" + }] + } + } } } diff --git a/src/sonic-yang-models/yang-models/sonic-chassis-module.yang b/src/sonic-yang-models/yang-models/sonic-chassis-module.yang new file mode 100644 index 000000000000..e31c252d8a9d --- /dev/null +++ b/src/sonic-yang-models/yang-models/sonic-chassis-module.yang @@ -0,0 +1,36 @@ +module sonic-chassis-module { + + yang-version 1.1; + + namespace "http://github.com/sonic-net/sonic-chassis-module"; + prefix chassis_mod; + import sonic-types { + prefix stypes; + } + description "CHASSIS_MODULE YANG to administratively set SONIC modules state"; + + revision 2023-02-24 { + description "Initial version"; + } + + container sonic-chassis-module { + container CHASSIS_MODULE { + description "List of modules in the chassis"; + list CHASSIS_MODULE_LIST { + key "name"; + leaf name { + type string { + pattern "LINE-CARD[0-9]+|FABRIC-CARD[0-9]+"; + } + description "Line-card or fabric-card module name"; + } + + leaf admin_status { + type stypes:admin_status; + default up; + description "Administrative state of chassis module"; + } + } + } + } +} diff --git a/src/sonic-yang-models/yang-models/sonic-fine-grained-ecmp.yang b/src/sonic-yang-models/yang-models/sonic-fine-grained-ecmp.yang new file mode 100644 index 000000000000..b5811f06f0c3 --- /dev/null +++ b/src/sonic-yang-models/yang-models/sonic-fine-grained-ecmp.yang @@ -0,0 +1,171 @@ +module sonic-fine-grained-ecmp { + + yang-version 1.1; + + namespace "http://github.com/sonic-net/sonic-fine-grained-ecmp"; + prefix sfgecmp; + + import ietf-inet-types { + prefix inet; + } + + import sonic-portchannel { + prefix lag; + } + + import sonic-port { + prefix port; + } + + import sonic-types { + prefix stypes; + } + + organization + "SONiC"; + + contact + "SONiC"; + + description + "SONIC Fine Grained ECMP"; + + revision 2023-01-19 { + description "Initial revision."; + } + + typedef match-mode-name { + + type enumeration { + + enum route-based { + description + "Fine grained ecmp is used when the route prefix matches the FG_NHG_PREFIX prefix"; + } + + enum nexthop-based { + description + "Fine grained ecmp is used when the nexthop IPs match the FG_NHG_MEMBER IPs"; + } + + } + + description + "This enumeration type defines the method used to determine whether fine grained ecmp should be applied."; + } + + container sonic-fine-grained-ecmp { + + container FG_NHG { + + description "FG_NHG part of config_db.json"; + + list FG_NHG_LIST{ + + key "name"; + + leaf name{ + type string; + description "FG_NHG group name"; + } + + leaf bucket_size{ + type uint16; + mandatory true; + description "total hash bucket size desired, + recommended value of Lowest Common Multiple + of 1..{max # of next-hops}"; + } + + leaf match_mode{ + type match-mode-name; + mandatory true; + description " The filtering method used to identify + when to use Fine Grained vs regular route handling. + nexthop-based looks to next-hop IP to filter routes + and uses fine grained ecmp when nexthop IPs matches + FG_NHG_MEMBER IPs. route-based looks to prefix to + filter routes, and uses fine grained ecmp when the + route prefix matches the FG_NHG_PREFIX prefix."; + } + } + /* end of list FG_NHG_LIST */ + } + /* end of container FG_NHG */ + + container FG_NHG_PREFIX{ + + description "FG_NHG_PREFIX part of config_db.json"; + + list FG_NHG_PREFIX_LIST{ + + key "ip_prefix"; + + leaf ip_prefix{ + type stypes:sonic-ip-prefix; + description "FG_NHG_PREFIX for which FG behavior is + desired"; + } + + leaf FG_NHG{ + type leafref { + path "/sfgecmp:sonic-fine-grained-ecmp/sfgecmp:FG_NHG/sfgecmp:FG_NHG_LIST/sfgecmp:name"; + } + mandatory true; + description "Fine Grained next-hop group name"; + } + } + /* end of list FG_NHG_PREFIX_LIST */ + } + /* end of container FG_NHG_PREFIX */ + + container FG_NHG_MEMBER{ + + description "FG_NHG_MEMBER part of config_db.json"; + + list FG_NHG_MEMBER_LIST{ + + key "next_hop_ip"; + + leaf next_hop_ip{ + type inet:ip-address; + description "FG_NHG next-hop-ip member associated + with prefix"; + } + + leaf FG_NHG{ + type leafref { + path "/sfgecmp:sonic-fine-grained-ecmp/sfgecmp:FG_NHG/sfgecmp:FG_NHG_LIST/sfgecmp:name"; + } + mandatory true; + description "Fine Grained next-hop group name"; + } + + leaf bank{ + type uint16; + mandatory true; + description "An index which specifies a bank/group + in which the redistribution is performed"; + } + + leaf link{ + type union { + type leafref { + path "/port:sonic-port/port:PORT/port:PORT_LIST/port:name"; + } + type leafref { + path "/lag:sonic-portchannel/lag:PORTCHANNEL/lag:PORTCHANNEL_LIST/lag:name"; + } + } + description "Link associated with next-hop-ip, if + configured, enables next-hop withdrawal/addition + per link's operational state changes"; + } + } + /* end of list FG_NHG_MEMBER_LIST */ + } + /* end of container FG_NHG_MEMBER */ + } + /* end of container sonic-fine-grained-ecmp */ +} +/* end of module sonic-fine-grained-ecmp */ \ No newline at end of file diff --git a/src/sonic-yang-models/yang-models/sonic-portchannel.yang b/src/sonic-yang-models/yang-models/sonic-portchannel.yang index 31235a0d2277..717e3924c420 100644 --- a/src/sonic-yang-models/yang-models/sonic-portchannel.yang +++ b/src/sonic-yang-models/yang-models/sonic-portchannel.yang @@ -58,23 +58,6 @@ module sonic-portchannel { } } - leaf-list members { - /* leaf-list members are unique by default */ - type union { - type leafref { - path /port:sonic-port/port:PORT/port:PORT_LIST/port:name; - } - type string { - pattern ""; - } - } - /* Today in SONiC, we do not delete the list once - * created, instead we set to empty list. Due to that - * below default values are needed. - */ - default ""; - } - leaf min_links { type uint16 { range 1..1024; @@ -119,6 +102,15 @@ module sonic-portchannel { type stypes:tpid_type; } + leaf fallback { + description "Enable LACP fallback feature"; + type stypes:boolean_type; + } + leaf fast_rate { + description "Enable LACP fast rate"; + type stypes:boolean_type; + } + } /* end of list PORTCHANNEL_LIST */ } /* end of container PORTCHANNEL */ diff --git a/src/sonic-yang-models/yang-models/sonic-vrf.yang b/src/sonic-yang-models/yang-models/sonic-vrf.yang index ff9fc5b5a4cc..5387aad2cc80 100644 --- a/src/sonic-yang-models/yang-models/sonic-vrf.yang +++ b/src/sonic-yang-models/yang-models/sonic-vrf.yang @@ -43,6 +43,14 @@ module sonic-vrf { "Enable/disable fallback feature which is useful for specified VRF user to access internet through global/main route."; } + leaf vni { + type uint32 { + range "0..16777215"; + } + default 0; + description + "VNI mapped to VRF"; + } } /* end of list VRF_LISt */ } /* end of container VRf */ } /* end of container sonic-vrf */ diff --git a/src/system-health/setup.py b/src/system-health/setup.py index 62b02252e8c0..84944a6e72bc 100644 --- a/src/system-health/setup.py +++ b/src/system-health/setup.py @@ -1,11 +1,31 @@ +from __future__ import print_function from setuptools import setup +import sys +import pkg_resources +from packaging import version + +# sonic_dependencies, version requirement only supports '>=' +sonic_dependencies = ['sonic-py-common'] dependencies = [ 'natsort', - 'sonic_py_common', 'docker' ] +dependencies += sonic_dependencies +for package in sonic_dependencies: + try: + package_dist = pkg_resources.get_distribution(package.split(">=")[0]) + except pkg_resources.DistributionNotFound: + print(package + " is not found!", file=sys.stderr) + print("Please build and install SONiC python wheels dependencies from sonic-buildimage", file=sys.stderr) + exit(1) + if ">=" in package: + if version.parse(package_dist.version) >= version.parse(package.split(">=")[1]): + continue + print(package + " version not match!", file=sys.stderr) + exit(1) + setup( name='system-health', version='1.0',