#!/bin/sh # # Copyright (c) 2013-2015, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # * Neither the name of The Linux Foundation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. export MODULE_BASE=/lib/modules/`uname -r` export RETRY_LIMIT=3 HELP="Usage $0 {start | stop | restart} " DUMP_TO_KMSG=/dev/kmsg do_ctrl_cld_ll () { case "$1" in start) echo "Starting WLAN... $@" > $DUMP_TO_KMSG shift start_ap1=0 if [ "$1" == "ap,ap" ] || [ "$1" == "sta,ap" ]; then start_ap1=1 shift elif [ "$1" == "ap" ]; then shift elif [ "$1" == "ap,sta" ]; then return 1 fi set -e insmod $MODULE_BASE/extra/wlan.ko mmcclock=50000000 $@ set +e c=1 ifconfig wlan0 up 2> /dev/null rc=$? while [ $rc -ne 0 -a $c -le $RETRY_LIMIT ]; do sleep 1 ifconfig wlan0 up 2> /dev/null rc=$? c=`expr $c + 1` done if [ $c -gt $RETRY_LIMIT ]; then echo "WLAN bring-up failed!" > $DUMP_TO_KMSG exit 1 fi if [ $start_ap1 -eq 1 ]; then echo "Adding second AP interface(wlan1)" > $DUMP_TO_KMSG iw dev wlan0 interface add wlan1 type __ap ifconfig wlan1 up 2> /dev/null fi ;; start_ftm) do_ctrl_cld_ll start con_mode=5 ;; stop) echo "Stopping WLAN..." > $DUMP_TO_KMSG rmmod wlan ;; restart) do_ctrl_cld_ll stop shift do_ctrl_cld_ll start $@ return $? ;; *) return 1 ;; esac return 0 } do_ctrl_cld_ll $@ if [ $? -ne 0 ]; then echo $HELP >&2 exit 1 fi exit 0