84 lines
2.6 KiB
Bash
84 lines
2.6 KiB
Bash
|
#! /bin/sh
|
|||
|
|
|||
|
#interface name
|
|||
|
IFNAME="hg0"
|
|||
|
|
|||
|
# ko file path
|
|||
|
FMAC_KO_PATH="/lib/modules/3.10.14/kernel/drivers/net/wireless/hugeic/hgic_fmac/hgicf.ko"
|
|||
|
USB_KO_PATH="/lib/modules/3.10.14/kernel/drivers/net/wireless/hugeic/utils/hgic_usb.ko"
|
|||
|
SDIO_KO_PATH="/lib/modules/3.10.14/kernel/drivers/net/wireless/hugeic/utils/hgic_sdio.ko"
|
|||
|
|
|||
|
#read paramters from system.
|
|||
|
AH_MODE=ap
|
|||
|
AH_SSID=ah_test_ssid
|
|||
|
AH_PSK=00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
|
|||
|
AH_KEY_MGMT=NONE
|
|||
|
AH_FREQ_START=7600
|
|||
|
AH_FREQ_END=7680
|
|||
|
AH_BSS_BW=8
|
|||
|
AH_TX_MCS=255
|
|||
|
AH_CHAN_LIST=
|
|||
|
|
|||
|
#set default values
|
|||
|
[ -z "$AH_MODE" ] && AH_MODE="ap"
|
|||
|
[ -z "$AH_FREQ_START" ] && AH_FREQ_START="7800"
|
|||
|
[ -z "$AH_FREQ_END" ] && AH_FREQ_END="8000"
|
|||
|
[ -z "$AH_BSS_BW" ] && AH_BSS_BW="8"
|
|||
|
[ -z "$AH_TX_MCS" ] && AH_TX_MCS="7"
|
|||
|
[ -z "$AH_CHANNEL" ] && AH_CHANNEL="1"
|
|||
|
[ -z "$AH_ACS" ] && AH_ACS="0"
|
|||
|
[ -z "$AH_ACS_TM" ] && AH_ACS_TM="10"
|
|||
|
[ -z "$AH_TX_POWER" ] && AH_TX_POWER="1"
|
|||
|
[ "$AH_MODE" == "sta" ] && AH_ACS="0"
|
|||
|
[ "$AH_ACS" == "1" ] && AH_CHANNEL="1"
|
|||
|
|
|||
|
#insmod driver
|
|||
|
ko_exist=$(lsmod|grep hgicf)
|
|||
|
if [ -z "$ko_exist" ]; then
|
|||
|
[ -n "$FMAC_KO_PATH" ] && insmod $FMAC_KO_PATH $ARG_IF_TEST
|
|||
|
[ -n "$SDIO_KO_PATH" ] && insmod $SDIO_KO_PATH
|
|||
|
[ -n "$USB_KO_PATH" ] && insmod $USB_KO_PATH
|
|||
|
sleep 1
|
|||
|
fi
|
|||
|
|
|||
|
#set param
|
|||
|
CONN_STATE=$(cat /proc/hgic/conn_state|grep CONNECTED)
|
|||
|
if [ -z "$CONN_STATE" ]; then
|
|||
|
ifconfig $IFNAME down
|
|||
|
iwpriv $IFNAME set freq_range=$AH_FREQ_START,$AH_FREQ_END,$AH_BSS_BW
|
|||
|
iwpriv $IFNAME set mode=$AH_MODE
|
|||
|
iwpriv $IFNAME set bss_bw=$AH_BSS_BW
|
|||
|
iwpriv $IFNAME set tx_mcs=$AH_TX_MCS
|
|||
|
iwpriv $IFNAME set tx_power=$AH_TX_POWER
|
|||
|
iwpriv $IFNAME set channel=$AH_CHANNEL
|
|||
|
iwpriv $IFNAME set acs="$AH_ACS,$AH_ACS_TM"
|
|||
|
if [ x"$AH_KEY_MGMT" == "xWPA-PSK" ]; then
|
|||
|
iwpriv $IFNAME set key_mgmt=WPA-PSK
|
|||
|
iwpriv $IFNAME set wpa_psk=$AH_PSK
|
|||
|
else
|
|||
|
iwpriv $IFNAME set key_mgmt=NONE
|
|||
|
fi
|
|||
|
iwpriv $IFNAME set ssid=$AH_SSID
|
|||
|
#save config
|
|||
|
iwpriv $IFNAME save
|
|||
|
[ "$AH_BSS_BW" == "1" ] && ifconfig $IFNAME mtu 380
|
|||
|
fi
|
|||
|
|
|||
|
#up interface
|
|||
|
ifconfig $IFNAME up
|
|||
|
|
|||
|
|
|||
|
############################################################
|
|||
|
# 可以设置驱动参数文件,由驱动自动加载参数,需要如下3个步骤:
|
|||
|
# 1. 生成参数文件:/etc/hgicf.conf,内容如下:
|
|||
|
# freq_range=9000,9240,8
|
|||
|
# mode=ap
|
|||
|
# ssid=ah_test_ssid
|
|||
|
# key_mgmt=WPA-PSK
|
|||
|
# wpa_psk=00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
|
|||
|
# [以上参数是最基本的参数设置,其他参数设置请参考 Linux开发指南]
|
|||
|
#
|
|||
|
# 2. insmod 驱动
|
|||
|
# 3. ifconfig up 接口
|
|||
|
###########################################################
|