You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
7.9 KiB
Bash
216 lines
7.9 KiB
Bash
#
|
|
# Copyright (c) 2016-2018 Qualcomm Technologies, Inc.
|
|
# All Rights Reserved.
|
|
# Confidential and Proprietary - Qualcomm Technologies, Inc.
|
|
#
|
|
# 2016 Qualcomm Atheros, Inc.
|
|
#
|
|
# All Rights Reserved.
|
|
# Qualcomm Atheros Confidential and Proprietary.
|
|
#
|
|
|
|
. /lib/functions.sh
|
|
|
|
pref_uplink_idx=0
|
|
|
|
iface_mgr_config() {
|
|
local device=$1
|
|
local ifidx=0
|
|
local group0=0
|
|
local group1=1
|
|
local radioidx=${device#wifi}
|
|
local iface_mgr_op_mode=$2
|
|
config_get disabled "$device" disabled 0
|
|
|
|
[ "$disabled" -eq 0 ] || return
|
|
|
|
config_get fast_lane "$device" fast_lane 0
|
|
config_get pref_uplink "$device" pref_uplink 0
|
|
|
|
[ "$iface_mgr_op_mode" -eq 2 ] && [ "$fast_lane" -eq 0 ] && return
|
|
|
|
config_get vifs $device vifs
|
|
|
|
for vif in $vifs; do
|
|
local vifname
|
|
exclude_flag=0
|
|
config_get vifname "$vif" ifname
|
|
|
|
if [ -n $vifname ]; then
|
|
[ $ifidx -gt 0 ] && vifname="ath${radioidx}$ifidx" || vifname="ath${radioidx}"
|
|
fi
|
|
config_get mode "$vif" mode
|
|
|
|
config_get group "$vif" group 0
|
|
config_get exclude "$vif" exclude 0
|
|
config_get wrap "$vif" wrap 0
|
|
config_get extap "$vif" extap 0
|
|
config_get device "$vif" device
|
|
config_get lp_stavap "$vif" lp_stavap 0
|
|
config_get hp_stavap "$vif" hp_stavap 0
|
|
[ "$exclude" -gt 0 ] && exclude_flag=1
|
|
[ "$wrap" -gt 0 ] && exclude_flag=1
|
|
[ "$extap" -gt 0 ] && exclude_flag=1
|
|
[ "$fast_lane" -gt 0 ] && exclude_flag=1
|
|
|
|
case "$mode" in
|
|
ap | wrap | ap_smart_monitor)
|
|
[ $exclude_flag -ne 1 ] && { \
|
|
ap_ifname="$vifname"
|
|
echo "group=$group ap_vap=$ap_ifname" >> /var/run/iface_mgr.conf
|
|
echo "radio=$device" >> /var/run/iface_mgr.conf
|
|
}
|
|
if [ $exclude_flag -eq 1 ] && [ $iface_mgr_op_mode -eq 2 ]; then
|
|
[ $pref_uplink -eq 1 ] && {\
|
|
ap_ifname="$vifname"
|
|
echo "group=$group0 ap_vap=$ap_ifname" >> /var/run/iface_mgr.conf
|
|
}
|
|
[ $pref_uplink -eq 0 ] && { \
|
|
ap_ifname="$vifname"
|
|
echo "group=$group1 ap_vap=$ap_ifname" >> /var/run/iface_mgr.conf
|
|
}
|
|
fi
|
|
;;
|
|
sta)
|
|
[ $exclude_flag -ne 1 ] && { \
|
|
sta_ifname="$vifname"
|
|
priority=0
|
|
[ $hp_stavap -eq 1 ] && {\
|
|
priority=1
|
|
}
|
|
[ $lp_stavap -eq 1 ] && {\
|
|
priority=2
|
|
}
|
|
[ $priority -ne 0 ] && {\
|
|
echo "group=$group sta_vap=$sta_ifname priority=$priority" >> /var/run/iface_mgr.conf
|
|
}
|
|
[ $priority -eq 0 ] && {\
|
|
echo "group=$group sta_vap=$sta_ifname" >> /var/run/iface_mgr.conf
|
|
}
|
|
}
|
|
if [ $exclude_flag -eq 1 ] && [ $iface_mgr_op_mode -eq 2 ]; then
|
|
[ $pref_uplink -eq 1 ] && {\
|
|
sta_ifname="$vifname"
|
|
echo "group=$group1 sta_vap=$sta_ifname" >> /var/run/iface_mgr.conf
|
|
}
|
|
[ $pref_uplink -eq 0 ] && { \
|
|
sta_ifname="$vifname"
|
|
echo "group=$group0 sta_vap=$sta_ifname" >> /var/run/iface_mgr.conf
|
|
}
|
|
fi
|
|
;;
|
|
esac
|
|
ifidx=$(($ifidx + 1))
|
|
done
|
|
}
|
|
|
|
iface_mgr_config_mode1() {
|
|
iface_mgr_config $1 1
|
|
}
|
|
|
|
iface_mgr_config_mode2() {
|
|
iface_mgr_config $1 2
|
|
}
|
|
|
|
iface_mgr_setup() {
|
|
|
|
local iface_mgr_op_mode=0
|
|
local backhaul_cnt=0
|
|
config_load wireless
|
|
|
|
handle_son_wps_op_mode() {
|
|
local device=$1
|
|
config_get vifs $device vifs
|
|
|
|
for vif in $vifs; do
|
|
config_get backhaul "$vif" backhaul 0
|
|
if [ "$backhaul" -eq 1 ]
|
|
then
|
|
let backhaul_cnt++
|
|
fi
|
|
done
|
|
}
|
|
|
|
config_foreach handle_son_wps_op_mode wifi-device
|
|
|
|
if [ "$backhaul_cnt" -gt 0 ] ; then
|
|
iface_mgr_op_mode=3
|
|
else
|
|
rm /var/run/son.conf
|
|
fi
|
|
|
|
config_get global_wds qcawifi global_wds 0
|
|
|
|
[ "$global_wds" -gt 0 ] && iface_mgr_op_mode=1
|
|
|
|
handle_iface_mgr_op_mode() {
|
|
local device=$1
|
|
config_get fast_lane $device fast_lane 0
|
|
config_get pref_uplink "$device" pref_uplink 0
|
|
|
|
[ "$fast_lane" -gt 0 ] && iface_mgr_op_mode=2
|
|
if [ $pref_uplink -eq 1 ] && [ $iface_mgr_op_mode -eq 2 ]; then
|
|
pref_uplink_idx=$(($pref_uplink_idx + 1))
|
|
fi
|
|
}
|
|
|
|
config_foreach handle_iface_mgr_op_mode wifi-device
|
|
|
|
[ "$iface_mgr_op_mode" -gt 0 ] || return
|
|
[ "$iface_mgr_op_mode" -eq 2 ] && [ "$pref_uplink_idx" -ne 1 ] && return
|
|
|
|
config_get discon_time qcawifi discon_time 10
|
|
config_get reconfig_time qcawifi reconfig_time 60
|
|
config_get pref_uplink_time qcawifi pref_uplink_time 60
|
|
config_get hp_sta_scan_time qcawifi hp_sta_scan_time 120
|
|
config_get hp_sta_periodic_time qcawifi hp_sta_periodic_time 600
|
|
|
|
if [ "$iface_mgr_op_mode" -eq 1 ] ; then
|
|
[ "$discon_time" -ge "$reconfig_time" ] && timeout=$discon_time
|
|
[ "$discon_time" -lt "$reconfig_time" ] && timeout=$reconfig_time
|
|
else
|
|
if [ "$iface_mgr_op_mode" -eq 2 ] ; then
|
|
timeout=$pref_uplink_time
|
|
fi
|
|
fi
|
|
|
|
killall iface-mgr
|
|
rm -rf /var/run/iface_mgr.conf
|
|
|
|
echo "#Interface manager configuration file should strictly meet below template" >> /var/run/iface_mgr.conf
|
|
echo "#mode=x">> /var/run/iface_mgr.conf
|
|
echo "#timeout=xx" >> /var/run/iface_mgr.conf
|
|
echo "#group=x ap_vap=athx" >> /var/run/iface_mgr.conf
|
|
echo "#group=x sta_vap=athx" >> /var/run/iface_mgr.conf
|
|
|
|
|
|
echo " " >> /var/run/iface_mgr.conf
|
|
echo "mode=$iface_mgr_op_mode" >> /var/run/iface_mgr.conf
|
|
echo " " >> /var/run/iface_mgr.conf
|
|
echo "timeout=$timeout" >> /var/run/iface_mgr.conf
|
|
echo " " >> /var/run/iface_mgr.conf
|
|
echo "scan_time=$hp_sta_scan_time" >> /var/run/iface_mgr.conf
|
|
echo " " >> /var/run/iface_mgr.conf
|
|
echo "periodic_time=$hp_sta_periodic_time" >> /var/run/iface_mgr.conf
|
|
echo " " >> /var/run/iface_mgr.conf
|
|
|
|
[ "$iface_mgr_op_mode" -eq 1 ] && {
|
|
config_foreach iface_mgr_config_mode1 wifi-device
|
|
}
|
|
|
|
[ "$iface_mgr_op_mode" -eq 2 ] && {
|
|
config_foreach iface_mgr_config_mode2 wifi-device
|
|
}
|
|
|
|
config_load plc
|
|
config_get plc_ifname config PlcIfname
|
|
config_get group config group 0
|
|
|
|
echo " " >> /var/run/iface_mgr.conf
|
|
echo "group=$group plc_iface=$plc_ifname" >> /var/run/iface_mgr.conf
|
|
|
|
iface-mgr > /dev/console 2>&1 &
|
|
|
|
return 1
|
|
}
|