#!/bin/sh
#set -x
#dmesg -n 7

. /usr/cisco/bin/ciscosetup.sh

if [ "$MERAKI_BOARD" == "mallorca" -o "$MERAKI_BOARD" == "entr17" ]; then
    modload /lib/modules/proclikefs.ko
    modload /lib/modules/merakiclick.ko threads=3 cpu=-1
    for mod in stile_lm_ft.ko stile_lm_dp.ko elts_meraki.ko ; do
        [ -f /lib/modules/${mod} ] && modload /lib/modules/${mod} && modrm /lib/modules/${mod}
    done
elif [ "$MERAKI_BOARD" == "axel-qca" ]; then
    modload /lib/modules/proclikefs.ko
    modload /lib/modules/merakiclick.ko threads=2 cpu=-1
    for mod in stile_lm_ft.ko stile_lm_dp.ko elts_meraki.ko ; do
        [ -f /lib/modules/${mod} ] && modload /lib/modules/${mod} && modrm /lib/modules/${mod}
    done
elif [ "$MERAKI_BOARD" == "axel-bcm" -o "$MERAKI_BOARD" == "ax-bcm32" ]; then
    for mod in merakiclick.ko stile_lm_ft.ko stile_lm_dp.ko elts_meraki.ko ; do
       [ -f /lib/modules/${mod} ] && modload /lib/modules/${mod} && modrm /lib/modules/${mod}
    done
else
    for mod in proclikefs.ko merakiclick.ko stile_lm_ft.ko stile_lm_dp.ko elts_meraki.ko ; do
        [ -f /lib/modules/${mod} ] && modload /lib/modules/${mod} && modrm /lib/modules/${mod}
    done
fi

if [ "$MERAKI_BOARD" == "corsica" ]; then
    taskset -p 2 `pidof kclick` > /dev/null
elif [ "$MERAKI_BOARD" == "axel-qca" ]; then
    # Assign 2 click threads to Host CPU core 2 & 3
    i=2
    for pid in $(pidof kclick|xargs -n 1|sort|xargs) ; do
        mask=$((1 << $i))
        taskset -p $mask ${pid} > /dev/null
        i=$(($i + 1))
    done
elif [ "$MERAKI_BOARD" == "mallorca" -o "$MERAKI_BOARD" == "entr17" ]; then
    for pid in $(pidof kclick) ; do
        taskset -p 0xe ${pid} > /dev/null
    done
elif [ "$MERAKI_BOARD" == "barbados" -o "$MERAKI_BOARD" == "axel-mvl" ]; then
    taskset -p 2 `pidof kclick` > /dev/null
elif [ "$MERAKI_BOARD" == "axel-bcm" -o "$MERAKI_BOARD" == "ax-bcm32" ]; then
    for pid in $(pidof kclick) ; do
        taskset -p 8 ${pid} > /dev/null
    done
fi

# Platforms like Virtual AP don't run click in kernel
if [ "$MERAKI_BOARD" != "apvirtual" ]; then
    /bin/mount -t click none /click
fi

exit 0
