M7350/mdm-init/wlan_sdio/wlan
2024-09-09 08:57:42 +00:00

108 lines
3.1 KiB
Bash

#!/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} <ap | sta,ap>"
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