#!/bin/bash

# Configure here the network interfaces to activate
IF[0]=dna0
IF[1]=dna1
IF[2]=dna2
IF[3]=dna3

#service udev start

# Remove old modules (if loaded)
rmmod ixgbe
rmmod pf_ring

# We assume that you have compiled PF_RING
insmod ../../../../kernel/pf_ring.ko

# As many queues as the number of processors
#insmod ./ixgbe.ko RSS=0,0,0,0

# Disable multiqueue
insmod ./ixgbe.ko RSS=1,1,1,1 

# Configure the number of TX and RX slots
#insmod ./ixgbe.ko RSS=1,1,1,1 num_rx_slots=32768 num_tx_slots=4096

# Enable 16 queues
#insmod ./ixgbe.ko MQ=1,1,1,1 RSS=16,16,16,16

# Enable max number of hw filters
#insmod ./ixgbe.ko RSS=1,1,1,1 FdirPballoc=3,3,3,3

# Set a large MTU (jumbo frame)
#insmod ./ixgbe.ko RSS=1,1,1,1 mtu=9000

# Select the CPU of the NUMA node where per-adapter memory will be allocated
#insmod ./ixgbe.ko RSS=1,1,1,1 numa_cpu_affinity=0,0,0,0

sleep 1

killall irqbalance 

for index in 0 1 2 3
do
  if [ -z ${IF[index]} ]; then
    continue
  fi
  printf "Configuring %s\n" "${IF[index]}"
  ifconfig ${IF[index]} up
  sleep 1
  bash ../scripts/set_irq_affinity.sh ${IF[index]}

  # Flow Control automatically disabled by the driver (no need to use the following commands)
  #ethtool -A ${IF[index]} autoneg off
  #ethtool -A ${IF[index]} rx off
  #ethtool -A ${IF[index]} tx off
  #ethtool -s ${IF[index]} speed 10000

  # Enable n-tuple hw filters
  #ethtool -K ${IF[index]} ntuple on
done
