#param1: dev name
#param2.3.4..: corenum
params=$@
core_max=`cat /proc/cpuinfo |grep -c processor`
echo "coremask max is $core_max"
argc=(${params// / })
for dir in rxtx TxRx
do
irq_nums=`cat /proc/interrupts | grep -c $1-$dir`
corenum_counts=$[$#-1]
if [ $coremask_counts -lt $irq_nums ]; then
echo "core params($corenum_counts) must >= irq_nums($irq_nums)."
return
fi
for ((i = 1; i <= $irq_nums; i ++))
do
irq_num_tmp=`cat /proc/interrupts | grep $1-$dir | awk -F: '{print $1}' | sed -n $i'p'`
if [ -n "$irq_num_tmp" ]; then
#remove space
irq_num=`echo ${irq_num_tmp// /}`
if [ ${argc[i]} -lt $corenum_max ]; then
echo "echo ${argc[i]} > /proc/irq/$irq_num/smp_affinity_list"
echo ${argc[i]} > /proc/irq/$irq_num/smp_affinity_list
fi
fi
done
done
}
#param2.3.4..: corenum
#examle: set_affinity eth1 0 1 2 3 4
#just support single core ->one irq, not support multi-core -> one irq
set_affinity(){params=$@
core_max=`cat /proc/cpuinfo |grep -c processor`
echo "coremask max is $core_max"
argc=(${params// / })
for dir in rxtx TxRx
do
irq_nums=`cat /proc/interrupts | grep -c $1-$dir`
corenum_counts=$[$#-1]
if [ $coremask_counts -lt $irq_nums ]; then
echo "core params($corenum_counts) must >= irq_nums($irq_nums)."
return
fi
for ((i = 1; i <= $irq_nums; i ++))
do
irq_num_tmp=`cat /proc/interrupts | grep $1-$dir | awk -F: '{print $1}' | sed -n $i'p'`
if [ -n "$irq_num_tmp" ]; then
#remove space
irq_num=`echo ${irq_num_tmp// /}`
if [ ${argc[i]} -lt $corenum_max ]; then
echo "echo ${argc[i]} > /proc/irq/$irq_num/smp_affinity_list"
echo ${argc[i]} > /proc/irq/$irq_num/smp_affinity_list
fi
fi
done
done
}