69 lines
1.6 KiB
Bash
69 lines
1.6 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
#set -x # for debugging
|
||
|
|
||
|
if [ -z "$NMSRC" ]; then
|
||
|
NMSRC=~/netmap-release
|
||
|
fi
|
||
|
DRIVER="ixgbe"
|
||
|
#IF="eth0" # force an interface
|
||
|
|
||
|
if [ ! -f ${NMSRC}/LINUX/netmap_lin.ko ]; then
|
||
|
echo "LINUX/netmap_lin.ko missing. Please compile netmap."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [ ! -f ${NMSRC}/LINUX/${DRIVER}/${DRIVER}.ko ]; then
|
||
|
echo "LINUX/${DRIVER}/${DRIVER}.ko missing."
|
||
|
echo "Please compile netmap or make sure to have netmap support for ${DRIVER}"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
NMLOADED=$(lsmod | grep netmap_lin | wc -l)
|
||
|
DRVLOADED=$(lsmod | grep "${DRIVER}" | wc -l)
|
||
|
|
||
|
# Unload the driver
|
||
|
if [ $DRVLOADED != "0" ]; then
|
||
|
sudo rmmod "$DRIVER"
|
||
|
fi
|
||
|
|
||
|
# Load netmap
|
||
|
if [ $NMLOADED == "0" ]; then
|
||
|
sudo insmod ${NMSRC}/LINUX/netmap_lin.ko
|
||
|
fi
|
||
|
|
||
|
if [ "$1" == "g" ]; then
|
||
|
# In order to use generic netmap adapter, load the original driver module, that doesn't
|
||
|
# have netmap support
|
||
|
sudo modprobe ${DRIVER}
|
||
|
echo "Generic netmap adapter."
|
||
|
else
|
||
|
# Use the driver modified with netmap support
|
||
|
sudo insmod ${NMSRC}/LINUX/${DRIVER}/${DRIVER}.ko
|
||
|
echo "Native netmap adapter."
|
||
|
fi
|
||
|
|
||
|
# Wait a bit for interface name changing
|
||
|
sleep 2
|
||
|
|
||
|
# Find all interfaces
|
||
|
IFLIST=$(ip link | grep -o "^[0-9]\+: [^:]\+" | awk '{print $2}')
|
||
|
IFLIST=$(echo ${IFLIST})
|
||
|
|
||
|
# Find the interface that match the driver $DRIVER
|
||
|
for i in $IFLIST; do
|
||
|
drv=$(sudo ethtool -i $i 2> /dev/null | grep "driver" | awk '{print $2}')
|
||
|
if [ "$drv" == "$DRIVER" ]; then
|
||
|
IF=$i
|
||
|
echo " Found interface \"${IF}\""
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ "$IF" == "" ]; then
|
||
|
echo "No interface using ${DRIVER} driver was found."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
sudo ip link set ${IF} up
|
||
|
|