Add some useful scripts
Change-Id: Ic7ae9b43020ab4d26214bfab71b19ee259771c52 Signed-off-by: Damjan Marion <damarion@cisco.com>
This commit is contained in:
20
build-root/scripts/lsnet
Executable file
20
build-root/scripts/lsnet
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "PCI Address MAC address Device Name Driver State Speed Port Type"
|
||||
echo "============ ================= ============== ========== ======== ========== ===================="
|
||||
|
||||
for f in /sys/class/net/*; do
|
||||
dev=$(basename ${f})
|
||||
if [ -e $f/device ] ; then
|
||||
dev=$(basename ${f})
|
||||
pci_addr=$(basename $(readlink $f/device))
|
||||
mac=$(cat $f/address)
|
||||
driver=$(basename $(readlink $f/device/driver))
|
||||
oper=$(cat $f/operstate)
|
||||
speed=$(sudo ethtool $dev | grep Speed | cut -d" " -f2)
|
||||
port=$(ethtool $dev 2> /dev/null | sed -ne 's/.*Port: \(.*\)/\1/p')
|
||||
printf "%-12s %-14s %-14s %-10s %-8s %-10s %-20s\n" $pci_addr $mac $dev $driver $oper $speed "$port"
|
||||
# ethtool $dev | grep Port:
|
||||
fi
|
||||
done
|
||||
|
94
build-root/scripts/pci-nic-bind
Executable file
94
build-root/scripts/pci-nic-bind
Executable file
@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
|
||||
uio_drivers="igb_uio uio_pci_generic vfio-pci"
|
||||
tmpfile=$(mktemp)
|
||||
|
||||
|
||||
function bind_drv() {
|
||||
addr=$1
|
||||
modalias=$(cat $selection/modalias)
|
||||
native_drv=$(modprobe -R $modalias)
|
||||
array=()
|
||||
|
||||
for drv in $native_drv $uio_drivers; do
|
||||
if [ -e /sys/bus/pci/drivers/$drv ]; then
|
||||
echo driver $drv
|
||||
drv_desc=$(modinfo $drv | grep description: | sed -e 's/.*:[[:space:]]\+//' )
|
||||
array+=("${drv}")
|
||||
array+=("${drv_desc}")
|
||||
fi
|
||||
done
|
||||
dialog --backtitle "PCI NIC Bind Utility" \
|
||||
--clear \
|
||||
--menu "Select kernel driver" 18 100 12 \
|
||||
"${array[@]}" 2> $tmpfile
|
||||
retval=$?
|
||||
selection=$(cat $tmpfile)
|
||||
rm $tmpfile
|
||||
if [ $retval -ne 0 ]; then
|
||||
return
|
||||
fi
|
||||
vd=$(cat /sys/bus/pci/devices/${addr}/vendor /sys/bus/pci/devices/${addr}/device)
|
||||
echo $addr | tee /sys/bus/pci/devices/${addr}/driver/unbind > /dev/null 2> /dev/null
|
||||
echo $vd | tee /sys/bus/pci/drivers/${selection}/new_id > /dev/null 2> /dev/null
|
||||
echo $addr | tee /sys/bus/pci/drivers/${selection}/bind > /dev/null 2> /dev/null
|
||||
}
|
||||
|
||||
function find_pci_slot() {
|
||||
addr=$1
|
||||
[ ! "$(ls -A /sys/bus/pci/slots )" ] && echo "No PCI slot data" && return
|
||||
for slot in $(find /sys/bus/pci/slots/* -maxdepth 0 -exec basename {} \;); do
|
||||
slot_addr=$(cat /sys/bus/pci/slots/$slot/address)
|
||||
if [[ "${addr}" == *"${slot_addr}"* ]]; then
|
||||
echo "PCI slot: ${slot}"
|
||||
return
|
||||
fi
|
||||
done
|
||||
echo "Unknown PCI slot"
|
||||
}
|
||||
|
||||
! type -ap dialog > /dev/null && echo "Please install dialog (apt-get install dialog)" && exit
|
||||
if [ $USER != "root" ] ; then
|
||||
echo "Restarting script with sudo..."
|
||||
sudo $0 ${*}
|
||||
exit
|
||||
fi
|
||||
|
||||
cd /sys/bus/pci/devices
|
||||
|
||||
while true; do
|
||||
array=()
|
||||
for addr in *; do
|
||||
class=$(cat ${addr}/class)
|
||||
if [ "$class" = "0x020000" ]; then
|
||||
name=$(lspci -s $addr | sed -e 's/.*: //')
|
||||
if [ -e "/sys/bus/pci/devices/$addr/driver" ]; then
|
||||
drv=$(basename $(readlink -f /sys/bus/pci/devices/$addr/driver))
|
||||
else
|
||||
drv=" "
|
||||
fi
|
||||
slot=$(find_pci_slot ${addr})
|
||||
array+=("${addr}")
|
||||
array+=("${drv}|${name}")
|
||||
array+=("${slot}")
|
||||
fi
|
||||
done
|
||||
|
||||
dialog --backtitle "PCI NIC Bind Utility" \
|
||||
--item-help \
|
||||
--clear \
|
||||
--column-separator '|' \
|
||||
--menu "Select NIC" 18 100 12 \
|
||||
"${array[@]}" 2> $tmpfile
|
||||
|
||||
retval=$?
|
||||
selection=$(cat $tmpfile)
|
||||
rm $tmpfile
|
||||
if [ $retval -ne 0 ]; then
|
||||
exit
|
||||
fi
|
||||
bind_drv $selection
|
||||
done
|
||||
|
||||
|
||||
|
19
build-root/scripts/pci-nic-bind-to-kernel
Executable file
19
build-root/scripts/pci-nic-bind-to-kernel
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Bind all unused PCI devices bound to uio drivers
|
||||
# back to default kernel driver
|
||||
|
||||
if [ $USER != "root" ] ; then
|
||||
echo "Restarting script with sudo..."
|
||||
sudo $0 ${*}
|
||||
exit
|
||||
fi
|
||||
|
||||
for f in /sys/bus/pci/drivers/{igb_uio,uio_pci_generic,vfio-pci}/*; do
|
||||
[ -e ${f}/config ] || continue
|
||||
fuser -s ${f}/config && continue
|
||||
echo 1 > ${f}/remove
|
||||
removed=y
|
||||
done
|
||||
|
||||
[ -n ${removed} ] && echo 1 > /sys/bus/pci/rescan
|
Reference in New Issue
Block a user