Reliable volume for minio server and e2e support
[icn.git] / deploy / kud-plugin-addons / device-plugins / sriov / driver / install_iavf_drivers.sh
1 #!/bin/bash
2
3 function install_iavf_driver {
4     local ifname=$1
5
6     echo "Installing modules..."
7     echo "Installing i40evf blacklist file..."
8     mkdir -p "/etc/modprobe.d/"
9     echo "blacklist i40evf" > "/etc/modprobe.d/iavf-blacklist-i40evf.conf"
10
11     kver=`uname -a | awk '{print $3}'`
12     install_mod_dir=/lib/modules/$kver/updates/drivers/net/ethernet/intel/iavf/
13     echo "Installing driver in $install_mod_dir"
14     mkdir -p $install_mod_dir
15     cp iavf.ko $install_mod_dir
16
17     echo "Installing kernel module i40evf..."
18     depmod -a
19     modprobe i40evf
20     modprobe iavf
21
22     echo "Enabling VF on interface $ifname..."
23     echo "/sys/class/net/$ifname/device/sriov_numvfs"
24     echo '8' > /sys/class/net/$ifname/device/sriov_numvfs
25 }
26
27 function is_used {
28     local ifname=$1
29     route_info=`ip route show | grep $ifname`
30     if [ -z "$route_info" ]; then
31         return 0
32     else
33         return 1
34     fi
35 }
36
37 function get_sriov_ifname {
38     for net_device in /sys/class/net/*/ ; do
39         if [ -e $net_device/device/sriov_numvfs ] ; then
40             ifname=$(basename $net_device)
41             is_used $ifname
42             if [ "$?" = "0" ]; then
43                 echo $ifname
44                 return
45             fi
46         fi
47     done
48     echo ''
49 }
50
51 if [ $# -ne 1 ] ; then
52     ifname=$(get_sriov_ifname)
53     if [ -z "$ifname" ]; then
54         echo "Cannot find Nic with SRIOV support."
55     else
56         install_iavf_driver $ifname
57     fi
58 else
59     ifname=$1
60     if [ ! -e /sys/class/net/$ifname/device/sriov_numvfs ] ; then
61         echo "${ifname} is not a valid sriov interface"
62     else
63         install_iavf_driver $ifname
64     fi
65 fi