#!/bin/sh
set -x
# Some non-cloudEOS platforms might not have dpdk-procinfo packaged into SWI
# to reduce the SWI image size. Verify if dpdk-procinfo exists before running.
if [ ! -f "/usr/share/dpdk/tools/dpdk-procinfo" ]; then
   exit
fi
sudo /usr/share/dpdk/tools/dpdk-procinfo -- -m
sudo /usr/share/dpdk/tools/dpdk-procinfo -- --xstats
sudo /usr/share/dpdk/tools/dpdk-procinfo -- --show-mempool
sudo /usr/share/dpdk/tools/dpdk-procinfo -- --show-mempool-brief
# Heap structure is used in the dpdk library to manage free space on a per-socket basis.
# In Arista we only use socket 0, hence we only require heap id 0.
sudo /usr/share/dpdk/tools/dpdk-procinfo -- --show-malloc-stats=0
sudo /usr/share/dpdk/tools/dpdk-procinfo -- --show-ring
# Run dpdk-procinfo -- --show-port only if all the drivers are in the list of allowed drivers
# Current list of allowed drivers is:
# i40e, ena, netvsc, mlx, virtio, vmxnet3, BESS
if python3 -c "import sys, json; allowedDrivers = [ 'i40e', 'ena', 'netvsc', 'mlx', 'virtio', 'vmxnet3', 'BESS' ]; fruDevContents = ''.join( open( '/var/run/sfaFruPluginDevices.json', 'r' ).readlines() ); fruDevices = json.loads( fruDevContents.replace( '\n', '' ) ); drivers = fruDevices[ 'pciDriver' ].values(); sys.exit( not all( any( d.startswith( a ) for a in allowedDrivers ) for d in drivers ) )"; then sudo /usr/share/dpdk/tools/dpdk-procinfo -- --show-port; fi
# Run dpdk-procinfo -- --show-module-eeprom only if all the drivers are in the list of allowed drivers
# Current list of allowed drivers is:
# ixgbe
if python3 -c "import sys, json; allowedDrivers = [ 'ixgbe' ]; fruDevContents = ''.join( open( '/var/run/sfaFruPluginDevices.json', 'r' ).readlines() ); fruDevices = json.loads( fruDevContents.replace( '\n', '' ) ); drivers = fruDevices[ 'pciDriver' ].values(); sys.exit( not all( any( d.startswith( a ) for a in allowedDrivers ) for d in drivers ) )"; then sudo /usr/share/dpdk/tools/dpdk-procinfo -- --show-module-eeprom; fi
