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

. /usr/cisco/bin/ciscosetup.sh

# Create file /storage/rxtx_mode if it does not exist.
# This file is not used when CAPWAP=1.
if [ ! -e /storage/rxtx_mode ] ; then
    echo rx >  /storage/rxtx_mode
fi

ap_type=`cat /AP_TYPE_NAME_STR`
#echo "ap_type=$ap_type"
if [ $ap_type == "AP_9115AXI" ] || [ $ap_type == "AP_9115AXE" ] ||
     [ $ap_type == "AP_1900I" ] || [ $ap_type == "AP_1900E" ]; then
    # remove Vancouver power tables not used on SaltSpring to free memory
    rm -f /radio_fw/VI_R2.csv
    rm -f /radio_fw/VI_R5.csv
    rm -f /radio_fw/VI_X5.csv
    rm -f /radio_fw/VE_R2.csv
    rm -f /radio_fw/VE_R5.csv
    rm -f /radio_fw/VE_X5.csv
    rm -f /radio_fw/VP_R2.csv
    rm -f /radio_fw/VP_R5.csv
    rm -f /radio_fw/VP_X5.csv
    rm -f /radio_fw/VI_EVM_2.csv
    rm -f /radio_fw/VI_EVM_5.csv
    rm -f /radio_fw/VI_EVM_X5.csv
    rm -f /radio_fw/VE_EVM_2.csv
    rm -f /radio_fw/VE_EVM_5.csv
    rm -f /radio_fw/VE_EVM_X5.csv
    rm -f /radio_fw/EVM_X5.csv
    rm -f /radio_fw/RHL_R2.csv
    rm -f /radio_fw/RHL_R5.csv
    rm -f /radio_fw/RHL_E2.csv
    rm -f /radio_fw/RHL_E5.csv
    rm -f /radio_fw/RHL_EVM_2.csv
    rm -f /radio_fw/RHL_EVM_5.csv
fi

if [ $ap_type == "AP_9120AXI" ] || [ $ap_type == "AP_9120AXE" ] || [ $ap_type == "AP_9120AXP" ]; then
    # remove SaltSpring power tables not used on Vancouer to free memory
    rm -f /radio_fw/SS_I_R2.csv
    rm -f /radio_fw/SS_I_R5.csv
    rm -f /radio_fw/SS_E_R2.csv
    rm -f /radio_fw/SS_E_R5.csv
    rm -f /radio_fw/SS_I_EVM_2.csv
    rm -f /radio_fw/SS_I_EVM_5.csv
    rm -f /radio_fw/SS_E_EVM_2.csv
    rm -f /radio_fw/SS_E_EVM_5.csv
fi

if [ "$MERAKI_BOARD" == "axel-bcm" ]; then
    wmac=`cat /MERAKI_MAC`
    rmac0=`cat /COOKIE_R0_MAC`

    irq_affinity_num=`grep -E -m1 'apr1v0' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
    [ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity

    irq_affinity_num=`grep -E -m1 'apr0v0' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '`
    [ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity

    ifconfig apr0v0 down
    ifconfig apr0v0 hw ether $rmac0
    wl -i apr0v0 ap 1
    wl -i apr0v0 mpc 0
    wl -i apr0v0 mbss 1
    # enable radar detection if radio0 is XOR
    xor=$(cat /var/platform/radio0)
    if [ "$xor" == "XOR" ]; then
        wl -i apr0v0 radar 1
    fi
    wl -i apr0v0 spect 1
    wl -i apr0v0 amsdu_aggsf 3
    ifconfig apr0v0 up

    ifconfig apr1v0 down
    rmac0=$(echo -n $rmac0 | sed 's/.\{1\}$//')
       temp1=15
    mac_last_char=$( printf "%X" $temp1)
    vap_mac=$(echo $rmac0$mac_last_char)
    ifconfig apr1v0 hw ether $vap_mac
    wl -i apr1v0 ap 1
    wl -i apr1v0 mpc 0
    wl -i apr1v0 mbss 1
    wl -i apr1v0 spect 1
    wl -i apr1v0 radar 1
    wl -i apr1v0 amsdu_aggsf 3
    ifconfig apr1v0 up

    wl -i apr1v0 pspretend_retry_limit 5
    wl -i apr0v0 pspretend_retry_limit 5
    wl -i apr1v0 prslimit 1
    wl -i apr0v0 prslimit 1
    wl -i apr0v0 fcache 0
    wl -i apr1v0 fcache 0
    wl -i apr0v0 ssid apr0v0
    wl -i apr1v0 ssid apr1v0
    wl -i apr0v0 bss 0
    wl -i apr1v0 bss 0
    wl -i apr1v0 msglevel 0
    wl -i apr0v0 msglevel 0
    wl -i apr1v0 scb_timeout 10
    wl -i apr0v0 scb_timeout 10
#    wl -i apr1v0 scan_force_tx 1
#    wl -i apr0v0 scan_force_tx 1
    ethswctl -c hw-switching -o disable
    # This is to make sure keepalive messages are not blocked.
    ethswctl -c dosctrl -v 0

# For CFP - Disabling RX/TX CFP
    wl -i apr1v0 cfp_rcb 0
    wl -i apr0v0 cfp_rcb 0
    wl -i apr1v0 cfp_tcb 0
    wl -i apr0v0 cfp_tcb 0

    for radio_num in  0 1
    do
        constV="v"
        const0="0"
        for vap_num in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
        do
          vap_name=$(echo apr$radio_num$constV$vap_num)
          radio_name=$(echo apr$radio_num$constV$const0)
          temp1=`expr 15 - $vap_num`
          mac_last_char=$( printf "%X" $temp1)
          if [ $radio_num -lt 1 ]; then
               mac_last_char=$( printf "%X" $vap_num)
          fi
          vap_mac=$(echo $rmac0$mac_last_char)
          wl -i $radio_name ssid -C $vap_num $vap_name
          wl -i $vap_name down
          wl -i $vap_name bss 0
          wl -i $vap_name cur_etheraddr $vap_mac
          wl -i $vap_name cur_etheraddr
          wl -i $vap_name pspretend_retry_limit 5
          ifconfig $vap_name down
          ifconfig $vap_name hw ether $vap_mac
          ifconfig $vap_name up
        done
        mon_name=$(echo "mon"$radio_num)
        wl -i $radio_name monitor 1
        ifconfig $mon_name up
    done
fi

# check kernel cmdline for hardware watchdog reset flag
if grep -q wdgtriggered=1 /proc/cmdline; then
    echo 1 > /tmp/hw_watchdog_reboot
fi

exit 0
