From d5bdeb9503612011610f61782d487843affe6b89 Mon Sep 17 00:00:00 2001 From: Daryl Ronningen Date: Thu, 12 Oct 2023 16:37:43 -0700 Subject: [PATCH] bump driver version --- Kconfig | 3 + Makefile | 126 +- Makefile.in | 3 + build_ahtool.sh | 5 + changelog.txt | 77 +- doc/泰芯Linux_WiFi_FMAC驱动开发指南.pdf | Bin 0 -> 1121383 bytes fmac.sh | 83 -- hgic.h | 600 +++++--- hgic_def.h | 218 +-- hgic_fmac/Kconfig | 2 + hgic_fmac/Makefile | 34 +- hgic_fmac/cfg.c | 1178 ---------------- hgic_fmac/cfg.h | 13 - hgic_fmac/core.c | 835 ++++++----- hgic_fmac/ctrl.c | 41 +- hgic_fmac/ctrl.h | 10 +- hgic_fmac/event.c | 178 +-- hgic_fmac/event.h | 2 +- hgic_fmac/hgicf.h | 83 +- hgic_fmac/procfs.c | 1181 ++-------------- hgic_fmac/procfs.h | 28 +- hgtest | 2 - how_to_build_with_kernel.txt | 14 + iwpriv | 2 - readme.txt | 34 - tools/ah_tool/build.sh | 38 + tools/test_app/Makefile | 36 + {hgota => tools/test_app}/fwinfo.c | 0 {hgota => tools/test_app}/fwinfo.h | 0 tools/test_app/hgic.h | 541 ++++++++ tools/test_app/hgicf.c | 199 +++ {hgota => tools/test_app}/hgota.c | 0 tools/test_app/hgpriv.c | 84 ++ tools/test_app/iwpriv.c | 1399 +++++++++++++++++++ tools/test_app/libnetat.c | 254 ++++ {hgota => tools/test_app}/libota.c | 0 {hgota => tools/test_app}/libota.h | 0 utils/Kconfig | 11 + utils/Makefile | 5 - utils/bluetooth.c | 107 ++ utils/fwctrl.c | 1242 +++++++++-------- utils/fwctrl.h | 331 +++-- utils/fwdl.c | 56 +- utils/fwdl.h | 1 - utils/hgic_fmac.c | 1141 --------------- utils/if_sdio.c | 268 +++- utils/if_usb.c | 188 ++- utils/iwpriv.c | 1684 +++++++++++++++++++++++ utils/iwpriv.h | 11 + utils/ota.c | 28 +- utils/utils.c | 67 +- utils/utils.h | 4 +- version.h | 2 +- 53 files changed, 6970 insertions(+), 5479 deletions(-) create mode 100644 Kconfig create mode 100644 Makefile.in create mode 100644 build_ahtool.sh create mode 100644 doc/泰芯Linux_WiFi_FMAC驱动开发指南.pdf delete mode 100755 fmac.sh create mode 100644 hgic_fmac/Kconfig delete mode 100644 hgic_fmac/cfg.c delete mode 100644 hgic_fmac/cfg.h delete mode 100755 hgtest create mode 100644 how_to_build_with_kernel.txt delete mode 100755 iwpriv delete mode 100644 readme.txt create mode 100644 tools/ah_tool/build.sh create mode 100644 tools/test_app/Makefile rename {hgota => tools/test_app}/fwinfo.c (100%) rename {hgota => tools/test_app}/fwinfo.h (100%) create mode 100644 tools/test_app/hgic.h create mode 100644 tools/test_app/hgicf.c rename {hgota => tools/test_app}/hgota.c (100%) create mode 100644 tools/test_app/hgpriv.c create mode 100644 tools/test_app/iwpriv.c create mode 100644 tools/test_app/libnetat.c rename {hgota => tools/test_app}/libota.c (100%) rename {hgota => tools/test_app}/libota.h (100%) create mode 100644 utils/Kconfig delete mode 100644 utils/Makefile create mode 100644 utils/bluetooth.c delete mode 100644 utils/hgic_fmac.c create mode 100644 utils/iwpriv.c create mode 100644 utils/iwpriv.h diff --git a/Kconfig b/Kconfig new file mode 100644 index 0000000..c90d003 --- /dev/null +++ b/Kconfig @@ -0,0 +1,3 @@ +source "drivers/net/wireless/hugeic/hgic_smac/Kconfig" +source "drivers/net/wireless/hugeic/hgic_fmac/Kconfig" +source "drivers/net/wireless/hugeic/utils/Kconfig" diff --git a/Makefile b/Makefile index 39dc0b2..4bc31c1 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,8 @@ CURRENT_PATH := $(shell pwd) #FH8852 #ARCH := arm #COMPILER := arm-fullhan-linux-uclibcgnueabi- -#LINUX_KERNEL_PATH := /home/matt/FH8852/FH8856_IPC_V1.1.0_20190125/board_support/kernel/linux-3.0.8 +#LINUX_KERNEL_PATH := $(CURRENT_PATH)/../linux-3.0.8 +#CFLAGS += -DFH8852 -DCONFIG_USB_ZERO_PACKET #Hi3536d #ARCH := arm @@ -29,101 +30,78 @@ CURRENT_PATH := $(shell pwd) #MTK SDK ARCH := mips COMPILER := /opt/buildroot-gcc463/usr/bin/mipsel-linux- -LINUX_KERNEL_PATH := /home/dongyun/work/disk4/AH6001/RT288x_AHv1.2/source/linux-3.10.14.x +LINUX_KERNEL_PATH := $(CURRENT_PATH)/../source/linux-3.10.14.x #Raspberry Pi #ARCH := arm #LINUX_KERNEL := $(shell uname -r) #LINUX_KERNEL_PATH := /usr/src/linux-headers-$(LINUX_KERNEL) +################################################################################################# +#CFLAGS += -DCONFIG_HGIC_AH +#export CONFIG_HGIC_AH = y -CFLAGS += -DCONFIG_HGIC_AH -#CFLAGS += -DCONFIG_HGIC_2G +CFLAGS += -DCONFIG_HGIC_2G +export CONFIG_HGIC_2G = y -export CONFIG_HGIC_AH = y -#export CONFIG_HGIC_2G = y +#CFLAGS += -DCONFIG_HGIC_STABR +#export CONFIG_HGIC_STABR = y + +CFLAGS += -DCONFIG_SDIO_REINIT help: - @echo "-------------------------------------------------------------------------------------------------------------------" + @echo "--------------------------------------------------------------------------------------" @echo "usage:" - @echo " make smac : compile SMAC driver. generate 3 ko files : hgics.ko, hgic_sdio.ko hgic_usb.ko." - @echo " make smac_usb : compile SMAC driver. generate 1 ko file : hgics_usb.ko (combined hgics.ko and hgic_usb.ko)." - @echo " make smac_sdio: compile SMAC driver. generate 1 ko file : hgics_sdio.ko (combined hgics.ko and hgic_sdio.ko)." + @echo " make smac : compile SMAC driver. support sdio/usb interface. generate hgics.ko" + @echo " make smac_usb : compile SMAC driver. only support usb interface. generate hgics.ko" + @echo " make smac_sdio: compile SMAC driver. only support sdio interface. generate hgics.ko" @echo "" - @echo " make fmac : compile FMAC driver. generate 3 ko files : hgicf.ko, hgic_sdio.ko hgic_usb.ko." - @echo " make fmac_usb : compile FMAC driver. generate 1 ko file : hgicf_usb.ko (combined hgicf.ko and hgic_usb.ko)." - @echo " make fmac_sdio: compile FMAC driver. generate 1 ko file : hgicf_sdio.ko (combined hgicf.ko and hgic_sdio.ko)." + @echo " make fmac : compile FMAC driver. support sdio/usb interface. generate hgicf.ko" + @echo " make fmac_usb : compile FMAC driver. only support usb interface. generate hgicf.ko" + @echo " make fmac_sdio: compile FMAC driver. only support sdio interface. generate hgicf.ko" @echo "" @echo " make clean" - @echo "-------------------------------------------------------------------------------------------------------------------" - -smac: prepare _smac _driver_smac - -fmac: prepare _fmac _driver_fmac - -smac_usb: prepare _smac_usb - -smac_sdio: prepare _smac_sdio - -fmac_usb: prepare _fmac_usb - -fmac_sdio: prepare _fmac_sdio + @echo "--------------------------------------------------------------------------------------" prepare: mkdir -p ko -_fmac: - $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_fmac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICF=hgicf EXTRA_CFLAGS=$(CFLAGS) modules - cp -f hgic_fmac/hgicf.ko ko/hgicf.ko - $(COMPILER)strip -g ko/hgicf.ko - -_smac: - $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_smac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICS=hgics EXTRA_CFLAGS=$(CFLAGS) modules +smac: prepare + $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_smac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICS=m CONFIG_HGIC_USB=y CONFIG_HGIC_SDIO=y EXTRA_CFLAGS="$(CFLAGS) -DCONFIG_HGIC_SDIO -DCONFIG_HGIC_USB" modules cp -f hgic_smac/hgics.ko ko/hgics.ko $(COMPILER)strip -g ko/hgics.ko -_fmac_sdio: - $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_fmac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICF=hgicf_sdio EXTRA_CFLAGS="$(CFLAGS) -DCONFIG_HGIC_SDIOIN" modules - cp -f hgic_fmac/hgicf_sdio.ko ko/hgicf_sdio.ko - $(COMPILER)strip -g ko/hgicf_sdio.ko - -_fmac_usb: - $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_fmac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICF=hgicf_usb EXTRA_CFLAGS="$(CFLAGS) -DCONFIG_HGIC_USBIN" modules - cp -f hgic_fmac/hgicf_usb.ko ko/hgicf_usb.ko - $(COMPILER)strip -g ko/hgicf_usb.ko - -_smac_sdio: - $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_smac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICS=hgics_sdio EXTRA_CFLAGS="$(CFLAGS) -DCONFIG_HGIC_SDIOIN" modules - cp -f hgic_smac/hgics_sdio.ko ko/hgics_sdio.ko - $(COMPILER)strip -g ko/hgics_sdio.ko - -_smac_usb: - $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_smac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICS=hgics_usb EXTRA_CFLAGS="$(CFLAGS) -DCONFIG_HGIC_USBIN" modules - cp -f hgic_smac/hgics_usb.ko ko/hgics_usb.ko - $(COMPILER)strip -g ko/hgics_usb.ko +smac_usb: prepare + $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_smac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICS=m CONFIG_HGIC_USB=y EXTRA_CFLAGS="$(CFLAGS) -DCONFIG_HGIC_USB" modules + cp -f hgic_smac/hgics.ko ko/hgics.ko + $(COMPILER)strip -g ko/hgics.ko -_driver_fmac: - cp -f hgic_fmac/Module.symvers utils/Module.symvers - $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/utils ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) EXTRA_CFLAGS=$(CFLAGS) modules - cp -f utils/hgic_usb.ko ko/hgic_usb.ko - cp -f utils/hgic_sdio.ko ko/hgic_sdio.ko - $(COMPILER)strip -g ko/hgic_usb.ko - $(COMPILER)strip -g ko/hgic_sdio.ko +smac_sdio: prepare + $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_smac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICS=m CONFIG_HGIC_SDIO=y EXTRA_CFLAGS="$(CFLAGS) -DCONFIG_HGIC_SDIO" modules + cp -f hgic_smac/hgics.ko ko/hgics.ko + $(COMPILER)strip -g ko/hgics.ko -_driver_smac: - cp -f hgic_smac/Module.symvers utils/Module.symvers - $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/utils ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) EXTRA_CFLAGS=$(CFLAGS) modules - cp -f utils/hgic_usb.ko ko/hgic_usb.ko - cp -f utils/hgic_sdio.ko ko/hgic_sdio.ko - $(COMPILER)strip -g ko/hgic_usb.ko - $(COMPILER)strip -g ko/hgic_sdio.ko +fmac: prepare + $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_fmac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICF=m CONFIG_HGIC_USB=y CONFIG_HGIC_SDIO=y EXTRA_CFLAGS="$(CFLAGS) -DCONFIG_HGIC_SDIO -DCONFIG_HGIC_USB" modules + cp -f hgic_fmac/hgicf.ko ko/hgicf.ko + $(COMPILER)strip -g ko/hgicf.ko + +fmac_usb: prepare + $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_fmac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICF=m CONFIG_HGIC_USB=y EXTRA_CFLAGS="$(CFLAGS) -DCONFIG_HGIC_USB" modules + cp -f hgic_fmac/hgicf.ko ko/hgicf.ko + $(COMPILER)strip -g ko/hgicf.ko + +fmac_sdio: prepare + $(MAKE) -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH)/hgic_fmac ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) CONFIG_HGICF=m CONFIG_HGIC_SDIO=y EXTRA_CFLAGS="$(CFLAGS) -DCONFIG_HGIC_SDIO" modules + cp -f hgic_fmac/hgicf.ko ko/hgicf.ko + $(COMPILER)strip -g ko/hgicf.ko clean: - rm -fr Module.symvers ; rm -fr Module.markers ; rm -fr modules.order - cd hgic_fmac ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko Module.symvers modules.order - cd hgic_smac ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko Module.symvers modules.order - cd hgic_smac/umac ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko - cd hgic_smac/umac/cfg80211 ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko - cd hgic_smac/umac/mac80211 ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko - cd utils ; rm -fr *.mod.c *.mod *.o .*.cmd *.ko Module.symvers modules.order - rm -rf ko + @find ./ -name "*.o" | xargs rm -fv + @find ./ -name "*.ko" | xargs rm -fv + @find ./ -name "*.cmd" | xargs rm -fv + @find ./ -name "*.symvers" | xargs rm -fv + @find ./ -name "*.markers" | xargs rm -fv + @find ./ -name "*.order" | xargs rm -fv + @find ./ -name "*.mod.c" | xargs rm -fv + @rm -rf ko diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..adeb20f --- /dev/null +++ b/Makefile.in @@ -0,0 +1,3 @@ +#this makefile is used to build driver with kernel +obj-$(CONFIG_HGICS) += hgic_smac/ +obj-$(CONFIG_HGICF) += hgic_fmac/ diff --git a/build_ahtool.sh b/build_ahtool.sh new file mode 100644 index 0000000..9051977 --- /dev/null +++ b/build_ahtool.sh @@ -0,0 +1,5 @@ +#! /bin/sh + +rm -rf bin; mkdir bin +cd tools/ah_tool/;./build.sh;cd - +cp -fv tools/ah_tool/bin/* bin diff --git a/changelog.txt b/changelog.txt index c4b9248..d74a2cb 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,50 +1,53 @@ -2022/01/12 - 修改bug:sdio remove过程中,执行hgic_core_remove时可能会rx data,此时会出现死机现象。 - ------------------------------------------------------ -2022/01/10 - 固件下载功能优化:在固件下载阶段,屏蔽其它数据和cmd的发送, 避免干扰固件下载过程。 - ------------------------------------------------------ -2021/12/22 - fmac: 新增event:HGIC_EVENT_UNPAIR_STA, 解除配对时,固件产生此event。 - 新增:tx maxcnt 命令,用于设置最大帧重传次数。 +2023/08/04 + 1. 支持接口聚合收发功能,此功能默认关闭,1.x版本固件不支持聚合功能。 + 2. sleep流程调整:sleep命令发送完成后立即设置sleep标识,拦截后续所有的数据;sleep命令的resp失败时再清除sleep标识。 + 3. 修复sdio remove流程低概率异常出错问题。 + 4. 修复detect_work功能异常,造成驱动不执行reload流程。 + 5. 调整tx window最小值,多预留1个window,保证驱动命令可以发送。 ------------------------------------------------------ -2021/11/19 - fmac: 添加AP隐藏功能, iwpriv hg0 set ap_hide 1 +2023/06/08 + 添加 hgic_iwpriv_send_custmgmt 和 hgic_iwpriv_send_custmgmt2 API。支持发送自定义管理帧。 + +2023/05/31 + set agg_cnt/get agg_cnt 修改,支持设置 tx agg 和 rx agg。 + 修复get signal错误 + 添加漫游参数,支持设置 漫游rssi切换差值 和 rssi 检测周期。 + 新增漫游成功事件: HGIC_EVENT_ROAM_CONECTED + 添加 hgpriv hg0 open/close 命令 + hgics_rx_sigfrm: reserve hgic_frm_hdr。 + +2023/05/06 + fix bug: detect_work 被 tx_complete触发执行时,hg->bus->reinit 可能为NULL,造成驱动出错。 ------------------------------------------------------ -2021/11/08 - 解决驱动卸载死机问题。 +2023/04/26 + fmac: 添加 hgic_iwpriv_get_sta_info 接口。 ------------------------------------------------------ -2021/11/01 - fmac: 添加漫游功能设置接口。 +2023/04/21 + 添加 hgic_iwpriv_set_max_tx_delay 接口,设置最大tx busy delay时间,超过就强行发送。 + +2023/04/14 + tx fail 时触发 detect_work,用于快速检测到模块复位。 + fmac: needed_headroom 多预留4byte。 +2023/4/11 + test_app/iwpriv.c:使用 blenc_mode 全局变量代替宏定义 BLE_ADVCFG, 支持动态切换BLE配网模式。 + + +2023/4/7 + iwpriv.c: get bssid 同时返回AID信息。 + +2022/12/24 + 数据接收调整:if_sdio/if_usb 使用预分配的buffer接收数据,根据实际长度再copy到skb。 + 避免部分主控出现alloc skb fail。 + +2021/10/28 ----------------------------------------------------- -2021/09/28 - smac: - 1. 修改bug: remove 时 先 确保 alive_timer/alive_work/delay_init 已经停止运行 - 2. hgic_frm_hdr.tx_info : 清零 - 3. ETH_P_PAE 类型数据使用最高优先级 - fmac: - 1. 修改bug: remove 时 先 确保 alive_timer/alive_work/delay_init 已经停止运行 + 驱动代码整理,解决大小端模式问题。 ----------------------------------------------------- 2021/09/27 添加 macfilter/atcmd 命令接口。 ------------------------------------------------------ -2021/09/23 - 1. 优化固件下载功能,减少对 memory 的需求。 - 2. 模块监测功能修改:接口只要支持reinit,就默认开启该功能,用于监测是否需要重新下载固件。 - ------------------------------------------------------ -2021/09/13 - get module_type 修改,定义了 struct hgic_module_hwinfo 结构体。 - 使用方法参考: hgic_fmac.c - ----------------------------------------------------- 2021/08/26 添加 HGIC_HDR_TYPE_CMD2 和 HGIC_HDR_TYPE_EVENT2,扩展 cmd id 和 event id 到 uint16. diff --git a/doc/泰芯Linux_WiFi_FMAC驱动开发指南.pdf b/doc/泰芯Linux_WiFi_FMAC驱动开发指南.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0693959c9a42d70ce5d224bb8995ddf159ed7abb GIT binary patch literal 1121383 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

kTv(?{U=5^N7RQK4H!v*Dlq?V^ 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

l*ZLI-x3wU!rFXNLF!;B>b*^)~lzm_wqmj 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

o*jjbKvbtIf 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 MA3m%e?yj%?2Wn#iHvj+t literal 0 HcmV?d00001 diff --git a/fmac.sh b/fmac.sh deleted file mode 100755 index 6f1e18e..0000000 --- a/fmac.sh +++ /dev/null @@ -1,83 +0,0 @@ -#! /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 接口 -########################################################### diff --git a/hgic.h b/hgic.h index f963318..212aad2 100644 --- a/hgic.h +++ b/hgic.h @@ -10,6 +10,10 @@ extern "C" { #define HGIC_CMD_START 0 #endif +#ifndef __packed +#define __packed __attribute__((packed)) +#endif + typedef void (*hgic_init_cb)(void *args); typedef void (*hgic_event_cb)(char *ifname, int event, int param1, int param2); @@ -17,7 +21,7 @@ struct hgic_bss_info { unsigned char bssid[6]; unsigned char ssid[32]; unsigned char encrypt; - char signal; + signed char signal; unsigned short freq; }; @@ -27,14 +31,19 @@ struct hgic_fw_info { unsigned short chip_id; unsigned short cpu_id; unsigned char mac[6]; + unsigned char resv[2]; + unsigned int app_version; + unsigned int smt_dat; }; struct hgic_sta_info { - unsigned char aid; - unsigned char ps:1; - unsigned char addr[6]; - char rssi; - char evm; + unsigned char aid; + unsigned char ps:1; + unsigned char addr[6]; + signed char rssi; + signed char evm; + signed char tx_snr; + signed char rx_snr; }; struct hgic_freqinfo { @@ -53,163 +62,440 @@ struct hgic_module_hwinfo{ }; }; +struct hgic_txq_param { + unsigned short txop; + unsigned short cw_min; + unsigned short cw_max; + unsigned char aifs; + unsigned char acm; +}; + +struct hgic_mcast_txparam { + unsigned char dupcnt; + unsigned char tx_bw; + unsigned char tx_mcs; + unsigned char clearch; +}; + +struct hgic_rx_info { + unsigned char band; + unsigned char mcs: 4, bw: 4; + char evm; + char signal; + unsigned short freq; + short freq_off; + unsigned char rx_flags; + unsigned char antenna; + unsigned char nss : 4, s1g_nss : 4; + unsigned char vht_flag : 3, s1g_flag : 5; +}; + +struct hgic_tx_info { + unsigned char band; + unsigned char tx_bw; + unsigned char tx_mcs; + unsigned char antenna; + unsigned int tx_flags; + unsigned int tx_flags2; +}; + +struct bt_rx_info { + unsigned char channel; //current channel + unsigned char con_handle; //hci handle + signed char rssi; + unsigned char frm_type; + unsigned int rev; +}; + + +/*data packet header*/ +struct hgic_hdr { + unsigned short magic; + unsigned char type; + unsigned char ifidx: 4, flags: 4; + unsigned short length; + unsigned short cookie; +} __packed; + +struct hgic_frm_hdr { + struct hgic_hdr hdr; + union { + struct hgic_rx_info rx_info; + struct hgic_tx_info tx_info; + unsigned char rev[24]; + }; +} __packed; + +struct hgic_frm_hdr2 { + struct hgic_hdr hdr; +} __packed; + + +/*contro pakcet header*/ +struct hgic_ctrl_hdr { + struct hgic_hdr hdr; + union { + struct { + unsigned char cmd_id; + short status; + } cmd; + struct { + unsigned short cmd_id; + short status; + } cmd2; + struct { + unsigned char event_id; + short value; + } event; + struct { + unsigned short event_id; + short value; + } event2; + struct { + unsigned char type; + } hci; + unsigned char info[4]; + }; +} __packed; + +struct hgic_key_conf { + unsigned int cipher; + unsigned int flags; + unsigned char keyidx; + unsigned char keylen; + unsigned char key[0]; +}; + +struct hgic_cca_ctl { + char start_th; + char mid_th; + char ed_th; + /* CCA auto adjustment. + * When the cca automatic adjustment takes effect, the + * above three parameters are invalid. + */ + char auto_en : 1; +}; + +struct hgic_acs_result{ + unsigned int freq;//KHz + unsigned char sync_cnt; + signed char min; + signed char max; + signed char avg; +}; + +struct hgic_fallback_mcs { + unsigned char original_type; + unsigned char original_mcs; + unsigned char fallback_type; + unsigned char fallback_mcs; +}; + +#define HDR_CMDID(ctl) ((ctl)->hdr.type==HGIC_HDR_TYPE_CMD2? le16_to_cpu((ctl)->cmd2.cmd_id):(ctl)->cmd.cmd_id) +#define HDR_EVTID(ctl) ((ctl)->hdr.type==HGIC_HDR_TYPE_EVENT2?le16_to_cpu((ctl)->event2.event_id):(ctl)->event.event_id) +#define HDR_CMDID_SET(ctl, id) if(id>255){\ + (ctl)->hdr.type =HGIC_HDR_TYPE_CMD2;\ + (ctl)->cmd2.cmd_id = cpu_to_le16(id);\ + }else{\ + (ctl)->hdr.type =HGIC_HDR_TYPE_CMD;\ + (ctl)->cmd.cmd_id = id;\ + } +#define HDR_EVTID_SET(ctl, id) if(id>255){\ + (ctl)->hdr.type =HGIC_HDR_TYPE_EVENT2;\ + (ctl)->event2.event_id = cpu_to_le16(id);\ + }else{\ + (ctl)->hdr.type =HGIC_HDR_TYPE_EVENT;\ + (ctl)->event.event_id = id;\ + } + +enum hgic_hdr_type { + HGIC_HDR_TYPE_ACK = 1, + HGIC_HDR_TYPE_FRM = 2, + HGIC_HDR_TYPE_CMD = 3, + HGIC_HDR_TYPE_EVENT = 4, + HGIC_HDR_TYPE_FIRMWARE = 5, + HGIC_HDR_TYPE_NLMSG = 6, + HGIC_HDR_TYPE_BOOTDL = 7, + HGIC_HDR_TYPE_TEST = 8, + HGIC_HDR_TYPE_FRM2 = 9, + HGIC_HDR_TYPE_TEST2 = 10, + HGIC_HDR_TYPE_SOFTFC = 11, + HGIC_HDR_TYPE_OTA = 12, + HGIC_HDR_TYPE_CMD2 = 13, + HGIC_HDR_TYPE_EVENT2 = 14, + HGIC_HDR_TYPE_BOOTDL_DATA = 15, + HGIC_HDR_TYPE_IFBR = 16, + HGIC_HDR_TYPE_BEACON = 17, + HGIC_HDR_TYPE_AGGFRM = 18, + HGIC_HDR_TYPE_BLUETOOTH = 19, + + HGIC_HDR_TYPE_MAX, +}; + enum hgic_cmd { - HGIC_CMD_DEV_OPEN = HGIC_CMD_START + 0x01, // 1 - HGIC_CMD_DEV_CLOSE, // 2 - HGIC_CMD_SET_MAC, // 3 - HGIC_CMD_SET_SSID, // 4 - HGIC_CMD_SET_BSSID, // 5 - HGIC_CMD_SET_COUNTERY, // 6 - HGIC_CMD_SET_CHANNEL, // 7 - HGIC_CMD_SET_CENTER_FREQ, // 8 - HGIC_CMD_SET_RTS_THRESHOLD, // 9 - HGIC_CMD_SET_FRG_THRESHOLD, // 10 - HGIC_CMD_SET_KEY_MGMT, // 11 - HGIC_CMD_SET_WPA_PSK, // 12 - HGIC_CMD_SET_KEY, // 13 - HGIC_CMD_SCAN, // 14 - HGIC_CMD_GET_SCAN_LIST, // 15 - HGIC_CMD_SET_BSSID_FILTER, // 16 - HGIC_CMD_DISCONNECT, // 17 - HGIC_CMD_GET_BSSID, // 18 - HGIC_CMD_SET_WBNAT, // 19 - HGIC_CMD_GET_STATUS, // 20 - HGIC_CMD_SET_LISTEN_INTERVAL, // 21 - HGIC_CMD_SET_TX_POWER, // 22 - HGIC_CMD_GET_TX_POWER, // 23 - HGIC_CMD_SET_TX_LCOUNT, // 24 - HGIC_CMD_SET_TX_SCOUNT, // 25 - HGIC_CMD_ADD_STA, // 26 - HGIC_CMD_REMOVE_STA, // 27 - HGIC_CMD_SET_TX_BW, // 28 - HGIC_CMD_SET_TX_MCS, // 29 - HGIC_CMD_SET_FREQ_RANGE, // 30 - HGIC_CMD_ACS_ENABLE, // 31 - HGIC_CMD_SET_PRIMARY_CHAN, // 32 - HGIC_CMD_SET_BG_RSSI, // 33 - HGIC_CMD_SET_BSS_BW, // 34 - HGIC_CMD_TESTMODE_CMD, // 35 - HGIC_CMD_SET_AID, // 36 - HGIC_CMD_GET_FW_STATE, // 37 - HGIC_CMD_SET_TXQ_PARAM, // 38 - HGIC_CMD_SET_CHAN_LIST, // 39 - HGIC_CMD_GET_CONN_STATE, // 40 - HGIC_CMD_SET_WORK_MODE, // 41 - HGIC_CMD_SET_PAIRED_STATIONS, // 42 - HGIC_CMD_GET_FW_INFO, // 43 - HGIC_CMD_PAIRING, // 44 - HGIC_CMD_GET_TEMPERATURE, // 45 - HGIC_CMD_ENTER_SLEEP, // 46 - HGIC_CMD_OTA, // 47 - HGIC_CMD_GET_SSID, // 48 - HGIC_CMD_GET_WPA_PSK, // 49 - HGIC_CMD_GET_SIGNAL, // 50 - HGIC_CMD_GET_TX_BITRATE, // 51 - HGIC_CMD_SET_BEACON_INT, // 52 - HGIC_CMD_GET_STA_LIST, // 53 - HGIC_CMD_SAVE_CFG, // 54 - HGIC_CMD_JOIN_GROUP, // 55 - HGIC_CMD_SET_ETHER_TYPE, // 56 - HGIC_CMD_GET_STA_COUNT, // 57 - HGIC_CMD_SET_HEARTBEAT_INT, // 58 - HGIC_CMD_SET_MCAST_KEY, // 59 - HGIC_CMD_SET_AGG_CNT, // 60 - HGIC_CMD_GET_AGG_CNT, // 61 - HGIC_CMD_GET_BSS_BW , // 62 - HGIC_CMD_GET_FREQ_RANGE, // 63 - HGIC_CMD_GET_CHAN_LIST, // 64 - HGIC_CMD_RADIO_ONOFF, // 65 - HGIC_CMD_SET_PS_HEARTBEAT, // 66 - HGIC_CMD_SET_WAKEUP_STA, // 67 - HGIC_CMD_SET_PS_HEARTBEAT_RESP, // 68 - HGIC_CMD_SET_PS_WAKEUP_DATA, // 69 - HGIC_CMD_SET_PS_CONNECT, // 70 - HGIC_CMD_SET_BSS_MAX_IDLE, // 71 - HGIC_CMD_SET_WKIO_MODE, // 72 - HGIC_CMD_SET_DTIM_PERIOD, // 73 - HGIC_CMD_SET_PS_MODE, // 74 - HGIC_CMD_LOAD_DEF, // 75 - HGIC_CMD_DISASSOC_STA, // 76 - HGIC_CMD_SET_APLOST_TIME, // 77 - HGIC_CMD_GET_WAKEUP_REASON, // 78 - HGIC_CMD_UNPAIR, // 79 - HGIC_CMD_SET_AUTO_CHAN_SWITCH, // 80 - HGIC_CMD_SET_REASSOC_WKHOST, // 81 - HGIC_CMD_SET_WAKEUP_IO, // 82 - HGIC_CMD_DBGINFO_OUTPUT, // 83 - HGIC_CMD_SET_SYSDBG, // 84 - HGIC_CMD_SET_AUTO_SLEEP_TIME, // 85 - HGIC_CMD_GET_KEY_MGMT, // 86 - HGIC_CMD_SET_PAIR_AUTOSTOP, // 87 - HGIC_CMD_SET_SUPPER_PWR, // 88 - HGIC_CMD_SET_REPEATER_SSID, // 89 - HGIC_CMD_SET_REPEATER_PSK, // 90 - HGIC_CMD_CFG_AUTO_SAVE, // 91 - HGIC_CMD_SEND_CUST_MGMT, // 92 - HGIC_CMD_GET_BATTERY_LEVEL, // 93 - HGIC_CMD_SET_DCDC13, // 94 - HGIC_CMD_SET_ACKTMO, // 95 - HGIC_CMD_GET_MODULETYPE, // 96 - HGIC_CMD_PA_PWRCTRL_DIS, // 97 - HGIC_CMD_SET_DHCPC, // 98 - HGIC_CMD_GET_DHCPC_RESULT, // 99 - HGIC_CMD_SET_WKUPDATA_MASK, // 100 - HGIC_CMD_GET_WKDATA_BUFF, // 101 - HGIC_CMD_GET_DISASSOC_REASON, // 102 - HGIC_CMD_SET_WKUPDATA_SAVEEN, // 103 - HGIC_CMD_SET_CUST_DRIVER_DATA, // 104 - HGIC_CMD_SET_MCAST_TXPARAM, // 105 - HGIC_CMD_SET_STA_FREQINFO, // 106 - HGIC_CMD_SET_RESET_STA, // 107 - HGIC_CMD_SET_UART_FIXLEN, // 108 - HGIC_CMD_GET_UART_FIXLEN, // 109 - HGIC_CMD_SET_ANT_AUTO, // 110 - HGIC_CMD_SET_ANT_SEL, // 111 - HGIC_CMD_GET_ANT_SEL, // 112 - HGIC_CMD_SET_WKUP_HOST_REASON, // 113 - HGIC_CMD_SET_MAC_FILTER_EN, // 114 - HGIC_CMD_SET_ATCMD, // 115 - HGIC_CMD_SET_ROAMING, // 116 - HGIC_CMD_SET_AP_HIDE, // 117 - HGIC_CMD_SET_DUAL_ANT, // 118 - HGIC_CMD_SET_MAX_TCNT, // 119 - HGIC_CMD_SET_ASSERT_HOLDUP, // 120 - HGIC_CMD_SET_AP_PSMODE_EN, // 121 - HGIC_CMD_SET_DUPFILTER_EN, // 122 - HGIC_CMD_SET_DIS_1V1_M2U, // 123 + HGIC_CMD_DEV_OPEN = 1, /* fmac/smac */ + HGIC_CMD_DEV_CLOSE = 2, /* fmac/smac */ + HGIC_CMD_SET_MAC = 3, /* fmac/smac */ + HGIC_CMD_SET_SSID = 4, /* fmac */ + HGIC_CMD_SET_BSSID = 5, /* fmac */ + HGIC_CMD_SET_COUNTERY = 6, /* fmac */ + HGIC_CMD_SET_CHANNEL = 7, /* fmac */ + HGIC_CMD_SET_CENTER_FREQ = 8, /* smac */ + HGIC_CMD_SET_RTS_THRESHOLD = 9, /* smac */ + HGIC_CMD_SET_FRG_THRESHOLD = 10, /* smac */ + HGIC_CMD_SET_KEY_MGMT = 11, /* fmac */ + HGIC_CMD_SET_WPA_PSK = 12, /* fmac */ + HGIC_CMD_SET_KEY = 13, /* smac */ + HGIC_CMD_SCAN = 14, /* fmac */ + HGIC_CMD_GET_SCAN_LIST = 15, /* fmac */ + HGIC_CMD_SET_BSSID_FILTER = 16, /* fmac */ + HGIC_CMD_DISCONNECT = 17, /* fmac */ + HGIC_CMD_GET_BSSID = 18, /* fmac */ + HGIC_CMD_SET_WBNAT = 19, /* unused */ + HGIC_CMD_GET_STATUS = 20, /* fmac */ + HGIC_CMD_SET_LISTEN_INTERVAL = 21, /* smac */ + HGIC_CMD_SET_TX_POWER = 22, /* fmac/smac */ + HGIC_CMD_GET_TX_POWER = 23, /* fmac/smac */ + HGIC_CMD_SET_TX_LCOUNT = 24, /* unused */ + HGIC_CMD_SET_TX_SCOUNT = 25, /* unused */ + HGIC_CMD_ADD_STA = 26, /* smac */ + HGIC_CMD_REMOVE_STA = 27, /* smac */ + HGIC_CMD_SET_TX_BW = 28, /* fmac */ + HGIC_CMD_SET_TX_MCS = 29, /* fmac/smac */ + HGIC_CMD_SET_FREQ_RANGE = 30, /* fmac */ + HGIC_CMD_ACS_ENABLE = 31, /* fmac */ + HGIC_CMD_SET_PRIMARY_CHAN = 32, /* fmac */ + HGIC_CMD_SET_BG_RSSI = 33, /* fmac */ + HGIC_CMD_SET_BSS_BW = 34, /* fmac/smac */ + HGIC_CMD_TESTMODE_CMD = 35, /* fmac/smac */ + HGIC_CMD_SET_AID = 36, /* smac */ + HGIC_CMD_GET_FW_STATE = 37, /* unused */ + HGIC_CMD_SET_TXQ_PARAM = 38, /* smac */ + HGIC_CMD_SET_CHAN_LIST = 39, /* fmac */ + HGIC_CMD_GET_CONN_STATE = 40, /* fmac */ + HGIC_CMD_SET_WORK_MODE = 41, /* fmac */ + HGIC_CMD_SET_PAIRED_STATIONS = 42, /* fmac */ + HGIC_CMD_GET_FW_INFO = 43, /* fmac/smac */ + HGIC_CMD_PAIRING = 44, /* fmac */ + HGIC_CMD_GET_TEMPERATURE = 45, /* fmac/smac */ + HGIC_CMD_ENTER_SLEEP = 46, /* fmac */ + HGIC_CMD_OTA = 47, /* fmac */ + HGIC_CMD_GET_SSID = 48, /* fmac */ + HGIC_CMD_GET_WPA_PSK = 49, /* fmac */ + HGIC_CMD_GET_SIGNAL = 50, /* fmac */ + HGIC_CMD_GET_TX_BITRATE = 51, /* fmac */ + HGIC_CMD_SET_BEACON_INT = 52, /* fmac */ + HGIC_CMD_GET_STA_LIST = 53, /* fmac */ + HGIC_CMD_SAVE_CFG = 54, /* fmac */ + HGIC_CMD_JOIN_GROUP = 55, /* unused */ + HGIC_CMD_SET_ETHER_TYPE = 56, /* unused */ + HGIC_CMD_GET_STA_COUNT = 57, /* fmac */ + HGIC_CMD_SET_HEARTBEAT_INT = 58, /* fmac */ + HGIC_CMD_SET_MCAST_KEY = 59, /* unused */ + HGIC_CMD_SET_AGG_CNT = 60, /* fmac/smac */ + HGIC_CMD_GET_AGG_CNT = 61, /* fmac/smac */ + HGIC_CMD_GET_BSS_BW = 62, /* fmac/smac */ + HGIC_CMD_GET_FREQ_RANGE = 63, /* fmac */ + HGIC_CMD_GET_CHAN_LIST = 64, /* fmac */ + HGIC_CMD_RADIO_ONOFF = 65, /* fmac/smac */ + HGIC_CMD_SET_PS_HEARTBEAT = 66, /* fmac */ + HGIC_CMD_SET_WAKEUP_STA = 67, /* fmac */ + HGIC_CMD_SET_PS_HEARTBEAT_RESP = 68, /* fmac */ + HGIC_CMD_SET_PS_WAKEUP_DATA = 69, /* fmac */ + HGIC_CMD_SET_PS_CONNECT = 70, /* fmac */ + HGIC_CMD_SET_BSS_MAX_IDLE = 71, /* fmac */ + HGIC_CMD_SET_WKIO_MODE = 72, /* fmac */ + HGIC_CMD_SET_DTIM_PERIOD = 73, /* fmac */ + HGIC_CMD_SET_PS_MODE = 74, /* fmac */ + HGIC_CMD_LOAD_DEF = 75, /* fmac */ + HGIC_CMD_DISASSOC_STA = 76, /* fmac */ + HGIC_CMD_SET_APLOST_TIME = 77, /* fmac */ + HGIC_CMD_GET_WAKEUP_REASON = 78, /* fmac */ + HGIC_CMD_UNPAIR = 79, /* fmac */ + HGIC_CMD_SET_AUTO_CHAN_SWITCH = 80, /* fmac */ + HGIC_CMD_SET_REASSOC_WKHOST = 81, /* fmac */ + HGIC_CMD_SET_WAKEUP_IO = 82, /* fmac */ + HGIC_CMD_DBGINFO_OUTPUT = 83, /* fmac/smac */ + HGIC_CMD_SET_SYSDBG = 84, /* fmac/smac */ + HGIC_CMD_SET_AUTO_SLEEP_TIME = 85, /* fmac */ + HGIC_CMD_GET_KEY_MGMT = 86, /* fmac */ + HGIC_CMD_SET_PAIR_AUTOSTOP = 87, /* fmac */ + HGIC_CMD_SET_SUPER_PWR = 88, /* fmac */ + HGIC_CMD_SET_REPEATER_SSID = 89, /* fmac */ + HGIC_CMD_SET_REPEATER_PSK = 90, /* fmac */ + HGIC_CMD_CFG_AUTO_SAVE = 91, /* fmac */ + HGIC_CMD_SEND_CUST_MGMT = 92, /* fmac */ + HGIC_CMD_GET_BATTERY_LEVEL = 93, /* unused */ + HGIC_CMD_SET_DCDC13 = 94, /* fmac */ + HGIC_CMD_SET_ACKTMO = 95, /* fmac/smac */ + HGIC_CMD_GET_MODULETYPE = 96, /* fmac/smac */ + HGIC_CMD_PA_PWRCTRL_DIS = 97, /* fmac */ + HGIC_CMD_SET_DHCPC = 98, /* fmac */ + HGIC_CMD_GET_DHCPC_RESULT = 99, /* fmac */ + HGIC_CMD_SET_WKUPDATA_MASK = 100, /* fmac */ + HGIC_CMD_GET_WKDATA_BUFF = 101, /* fmac */ + HGIC_CMD_GET_DISASSOC_REASON = 102, /* fmac */ + HGIC_CMD_SET_WKUPDATA_SAVEEN = 103, /* fmac */ + HGIC_CMD_SET_CUST_DRIVER_DATA = 104, /* fmac */ + HGIC_CMD_SET_MCAST_TXPARAM = 105, /* unused */ + HGIC_CMD_SET_STA_FREQINFO = 106, /* fmac */ + HGIC_CMD_SET_RESET_STA = 107, /* fmac */ + HGIC_CMD_SET_UART_FIXLEN = 108, /* unused */ + HGIC_CMD_GET_UART_FIXLEN = 109, /* unused */ + HGIC_CMD_SET_ANT_AUTO = 110, /* fmac */ + HGIC_CMD_SET_ANT_SEL = 111, /* fmac */ + HGIC_CMD_GET_ANT_SEL = 112, /* fmac */ + HGIC_CMD_SET_WKUP_HOST_REASON = 113, /* fmac */ + HGIC_CMD_SET_MAC_FILTER_EN = 114, /* unused */ + HGIC_CMD_SET_ATCMD = 115, /* fmac/smac */ + HGIC_CMD_SET_ROAMING = 116, /* fmac */ + HGIC_CMD_SET_AP_HIDE = 117, /* fmac */ + HGIC_CMD_SET_DUAL_ANT = 118, /* fmac */ + HGIC_CMD_SET_MAX_TCNT = 119, /* fmac/smac */ + HGIC_CMD_SET_ASSERT_HOLDUP = 120, /* fmac/smac */ + HGIC_CMD_SET_AP_PSMODE_EN = 121, /* fmac */ + HGIC_CMD_SET_DUPFILTER_EN = 122, /* fmac */ + HGIC_CMD_SET_DIS_1V1_M2U = 123, /* fmac */ + HGIC_CMD_SET_DIS_PSCONNECT = 124, /* fmac */ + HGIC_CMD_SET_RTC = 125, /* fmac */ + HGIC_CMD_GET_RTC = 126, /* fmac */ + HGIC_CMD_SET_KICK_ASSOC = 127, /* fmac */ + HGIC_CMD_START_ASSOC = 128, /* fmac */ + HGIC_CMD_SET_AUTOSLEEP = 129, /* fmac */ + HGIC_CMD_SEND_BLENC_DATA = 130, /* smac */ + HGIC_CMD_SET_BLENC_EN = 131, /* smac */ + HGIC_CMD_RESET = 132, /* fmac/smac */ + HGIC_CMD_SET_HWSCAN = 133, /* smac */ + HGIC_CMD_GET_TXQ_PARAM = 134, /* smac */ + HGIC_CMD_SET_PROMISC = 135, /* smac */ + HGIC_CMD_SET_USER_EDCA = 136, /* fmac */ + HGIC_CMD_SET_FIX_TXRATE = 137, /* smac */ + HGIC_CMD_SET_NAV_MAX = 138, /* smac */ + HGIC_CMD_CLEAR_NAV = 139, /* smac */ + HGIC_CMD_SET_CCA_PARAM = 140, /* smac */ + HGIC_CMD_SET_TX_MODGAIN = 141, /* smac */ + HGIC_CMD_GET_NAV = 142, /* smac */ + HGIC_CMD_SET_BEACON_START = 143, /* smac */ + HGIC_CMD_SET_BLE_OPEN = 144, /* smac */ + HGIC_CMD_GET_MODE = 145, /* fmac */ + HGIC_CMD_GET_BGRSSI = 146, /* fmac */ + HGIC_CMD_SEND_BLENC_ADVDATA = 147, /* smac */ + HGIC_CMD_SEND_BLENC_SCANRESP = 148, /* smac */ + HGIC_CMD_SEND_BLENC_DEVADDR = 149, /* smac */ + HGIC_CMD_SEND_BLENC_ADVINTERVAL = 150, /* smac */ + HGIC_CMD_SEND_BLENC_STARTADV = 151, /* smac */ + HGIC_CMD_SET_RTS_DURATION = 152, /* smac */ + HGIC_CMD_STANDBY_CFG = 153, /* fmac */ + HGIC_CMD_SET_CONNECT_PAIRONLY = 154, /* fmac */ + HGIC_CMD_SET_DIFFCUST_CONN = 155, /* fmac */ + HGIC_CMD_GET_CENTER_FREQ = 156, /* smac */ + HGIC_CMD_SET_WAIT_PSMODE = 157, /* fmac */ + HGIC_CMD_SET_AP_CHAN_SWITCH = 158, /* fmac */ + HGIC_CMD_SET_CCA_FOR_CE = 159, /* fmac */ + HGIC_CMD_SET_DISABLE_PRINT = 160, /* fmac/smac */ + HGIC_CMD_SET_APEP_PADDING = 161, /* smac */ + HGIC_CMD_GET_ACS_RESULT = 162, /* fmac/smac */ + HGIC_CMD_GET_WIFI_STATUS_CODE = 163, /* fmac */ + HGIC_CMD_GET_WIFI_REASON_CODE = 164, /* fmac */ + HGIC_CMD_SET_WATCHDOG = 165, /* fmac/smac */ + HGIC_CMD_SET_RETRY_FALLBACK_CNT = 166, /* smac */ + HGIC_CMD_SET_FALLBACK_MCS = 167, /* smac */ + HGIC_CMD_GET_XOSC_VALUE = 168, /* smac */ + HGIC_CMD_SET_XOSC_VALUE = 169, /* smac */ + HGIC_CMD_GET_FREQ_OFFSET = 170, /* smac */ + HGIC_CMD_SET_CALI_PERIOD = 171, /* smac */ + HGIC_CMD_SET_BLENC_ADVFILTER = 172, /* smac */ + HGIC_CMD_SET_MAX_TX_DELAY = 173, /* smac */ + HGIC_CMD_GET_STA_INFO = 174, /* fmac */ + HGIC_CMD_SEND_MGMTFRAME = 175, /* fmac */ + }; enum hgic_event { - HGIC_EVENT_STATE_CHG = 0x1, // 1 - HGIC_EVENT_CH_SWICH, // 2 - HGIC_EVENT_DISCONNECT_REASON, // 3 - HGIC_EVENT_ASSOC_STATUS, // 4 - HGIC_EVENT_SCANNING, // 5 - HGIC_EVENT_SCAN_DONE, // 6 - HGIC_EVENT_TX_BITRATE, // 7 - HGIC_EVENT_PAIR_START, // 8 - HGIC_EVENT_PAIR_SUCCESS, // 9 - HGIC_EVENT_PAIR_DONE, // 10 - HGIC_EVENT_CONECT_START, // 11 - HGIC_EVENT_CONECTED, // 12 - HGIC_EVENT_DISCONECTED, // 13 - HGIC_EVENT_SIGNAL, // 14 - HGIC_EVENT_DISCONNET_LOG, // 15 - HGIC_EVENT_REQUEST_PARAM, // 16 - HGIC_EVENT_TESTMODE_STATE, // 17 - HGIC_EVENT_FWDBG_INFO, // 18 - HGIC_EVENT_CUSTOMER_MGMT, // 19 - HGIC_EVENT_SLEEP_FAIL, // 20 - HGIC_EVENT_DHCPC_DONE, // 21 - HGIC_EVENT_CONNECT_FAIL, // 22 - HGIC_EVENT_CUST_DRIVER_DATA, // 23 - HGIC_EVENT_UNPAIR_STA, // 24 + HGIC_EVENT_STATE_CHG = 1, + HGIC_EVENT_CH_SWICH = 2, + HGIC_EVENT_DISCONNECT_REASON = 3, + HGIC_EVENT_ASSOC_STATUS = 4, + HGIC_EVENT_SCANNING = 5, + HGIC_EVENT_SCAN_DONE = 6, + HGIC_EVENT_TX_BITRATE = 7, + HGIC_EVENT_PAIR_START = 8, + HGIC_EVENT_PAIR_SUCCESS = 9, + HGIC_EVENT_PAIR_DONE = 10, + HGIC_EVENT_CONECT_START = 11, + HGIC_EVENT_CONECTED = 12, + HGIC_EVENT_DISCONECTED = 13, + HGIC_EVENT_SIGNAL = 14, + HGIC_EVENT_DISCONNET_LOG = 15, + HGIC_EVENT_REQUEST_PARAM = 16, + HGIC_EVENT_TESTMODE_STATE = 17, + HGIC_EVENT_FWDBG_INFO = 18, + HGIC_EVENT_CUSTOMER_MGMT = 19, + HGIC_EVENT_SLEEP_FAIL = 20, + HGIC_EVENT_DHCPC_DONE = 21, + HGIC_EVENT_CONNECT_FAIL = 22, + HGIC_EVENT_CUST_DRIVER_DATA = 23, + HGIC_EVENT_UNPAIR_STA = 24, + HGIC_EVENT_BLENC_DATA = 25, + HGIC_EVENT_HWSCAN_RESULT = 26, + HGIC_EVENT_EXCEPTION_INFO = 27, + HGIC_EVENT_DSLEEP_WAKEUP = 28, + HGIC_EVENT_STA_MIC_ERROR = 29, + HGIC_EVENT_ACS_DONE = 30, + HGIC_EVENT_FW_INIT_DONE = 31, + HGIC_EVENT_ROAM_CONECTED = 32, + HGIC_EVENT_MGMT_FRAME = 33, }; -extern int hgic_sdio_init(void); -extern void hgic_sdio_exit(void); -extern int hgic_usb_init(void); -extern void hgic_usb_exit(void); +enum hgicf_hw_state { + HGICF_HW_DISCONNECTED = 0, + HGICF_HW_DISABLED = 1, + HGICF_HW_INACTIVE = 2, + HGICF_HW_SCANNING = 3, + HGICF_HW_AUTHENTICATING = 4, + HGICF_HW_ASSOCIATING = 5, + HGICF_HW_ASSOCIATED = 6, + HGICF_HW_4WAY_HANDSHAKE = 7, + HGICF_HW_GROUP_HANDSHAKE = 8, + HGICF_HW_CONNECTED = 9, +}; + +enum HGIC_EXCEPTION_NUM{ + HGIC_EXCEPTION_CPU_USED_OVERTOP = 1, + HGIC_EXCEPTION_HEAP_USED_OVERTOP = 2, + HGIC_EXCEPTION_WIFI_BUFFER_USED_OVERTOP = 3, + HGIC_EXCEPTION_TX_BLOCKED = 4, + HGIC_EXCEPTION_TXDELAY_TOOLONG = 5, + HGIC_EXCEPTION_STRONG_BGRSSI = 6, + HGIC_EXCEPTION_TEMPERATURE_OVERTOP = 7, + HGIC_EXCEPTION_WRONG_PASSWORD = 8, +}; + +struct hgic_exception_info { + int num; + union { + struct { + int max, avg, min; + } txdelay; + struct { + int max, avg, min; + } bgrssi; + struct { + int total, used; + } buffer_usage; + struct { + int total, used; + } heap_usage; + struct { + int temp; + } temperature; + } info; +}; + +struct hgic_dhcp_result { + unsigned int ipaddr, netmask, svrip, router, dns1, dns2; +}; #ifdef __RTOS__ struct firmware { diff --git a/hgic_def.h b/hgic_def.h index d432ecc..8e30231 100644 --- a/hgic_def.h +++ b/hgic_def.h @@ -3,7 +3,7 @@ #include "hgic.h" #include "version.h" -#define HGIC_VERSION "v1.3.0" +#define HGIC_VERSION "v2.2.1" #ifndef SVN_VERSION #error "SVN_VERSION undefined" @@ -13,17 +13,18 @@ printk("** HUGE-IC WLAN Card Driver("name") "HGIC_VERSION"-"SVN_VERSION"\r\n");\ }while(0) -#define HGIC_WDEV_ID_AP 0 +#define HGIC_WDEV_ID_AP 2 #define HGIC_WDEV_ID_STA 1 #define HGIC_SCAN_MAX_NUM 32 #define HGIC_HDR_TX_MAGIC 0x1A2B #define HGIC_HDR_RX_MAGIC 0x2B1A -#define HGIC_VENDOR_ID (0xA012) -#define HGIC_WLAN_AH_4001 (0x4001) -#define HGIC_WLAN_AH_4002 (0x4002) -#define HGIC_WLAN_AH_4102 (0x4102) +#define HGIC_VENDOR_ID (0xA012) +#define HGIC_WLAN_4002 (0x4002) +#define HGIC_WLAN_4104 (0x4104) +#define HGIC_WLAN_8400 (0x8400) + #define HGIC_CTRL_TIMEOUT 100 #define HGIC_CMD_PRIORITY 0 @@ -37,9 +38,13 @@ #define hgic_enter() printk("enter %s\r\n", __FUNCTION__) #define hgic_leave() printk("leave %s\r\n", __FUNCTION__) +#ifndef ARRAYSIZE +#define ARRAYSIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +#endif + #define HGIC_CMD_TIMEOUT 500 #define HGIC_TX_TIMEOUT 10 -#define HGIC_ALIVE_TIMER 5000 +#define HGIC_DETECT_TIMER 5000 enum hgic_bus_type { HGIC_BUS_SDIO = 0x1, @@ -49,28 +54,6 @@ enum hgic_bus_type { HGIC_BUS_SDSPI, }; - -enum hgic_hdr_type { - HGIC_HDR_TYPE_ACK = 0x1, - HGIC_HDR_TYPE_FRM, - HGIC_HDR_TYPE_CMD, - HGIC_HDR_TYPE_EVENT, - HGIC_HDR_TYPE_FIRMWARE, - HGIC_HDR_TYPE_NLMSG, - HGIC_HDR_TYPE_BOOTDL, - HGIC_HDR_TYPE_TEST, - HGIC_HDR_TYPE_FRM2, - HGIC_HDR_TYPE_TEST2, - HGIC_HDR_TYPE_SOFTFC, - HGIC_HDR_TYPE_OTA, - HGIC_HDR_TYPE_CMD2, - HGIC_HDR_TYPE_EVENT2, - HGIC_HDR_TYPE_BOOTDL_DATA, - - HGIC_HDR_TYPE_MAX, -}; - - enum hgic_hdr_flags2 { HGIC_HDR_FLAGS2_AFT_BEACON = BIT(0), }; @@ -80,118 +63,21 @@ enum hgic_bus_flag { HGIC_BUS_FLAGS_SLEEP, HGIC_BUS_FLAGS_INBOOT, HGIC_BUS_FLAGS_NOPOLL, + HGIC_BUS_FLAGS_SOFTFC, + HGIC_BUS_FLAGS_ERROR, }; -struct hgic_txq_param { - unsigned short txop; - unsigned short cw_min; - unsigned short cw_max; - unsigned char aifs; - unsigned char acm; -}; +#define hgic_pick_values(pick_type, str, array, size) do{\ + char *__ptr = NULL;\ + memset(array, 0, size*sizeof(pick_type));\ + if((str) && strlen((str)) > 0){\ + while ((__ptr = strsep((char **)&(str), ",")) != NULL) {\ + if (argcnt >= size) break;\ + array[argcnt++] = (pick_type)simple_strtol(__ptr, 0, 0);\ + }\ + }\ + }while(0) -struct hgic_mcast_txparam { - unsigned char dupcnt; - unsigned char tx_bw; - unsigned char tx_mcs; - unsigned char clearch; -}; - -/*data packet header*/ -struct hgic_hdr { - unsigned short magic; - unsigned char type; - unsigned char ifidx: 4, flags: 4; - unsigned short length; - unsigned short cookie; -} __packed; - -struct hgic_rx_info { - unsigned char band; - unsigned char mcs: 4, bw: 4; - char evm; - char signal; - unsigned short freq; - s16 freq_off; - unsigned char rx_flags; - unsigned char antenna; - unsigned char nss : 4, s1g_nss : 4; - unsigned char vht_flag : 3, s1g_flag : 5; -}; - -struct hgic_tx_info { - unsigned char band; - unsigned char tx_bw; - unsigned char tx_mcs; - unsigned char antenna; - unsigned int tx_flags; - unsigned int tx_flags2; -}; - -struct hgic_key_info { - unsigned int cipher; - unsigned char icv_len; - unsigned char iv_len; - unsigned char hw_key_idx; - unsigned char flags; - char keyidx; - unsigned char keylen; - unsigned char key[0]; -}; - -struct hgic_frm_hdr { - struct hgic_hdr hdr; - union { - struct hgic_rx_info rx_info; - struct hgic_tx_info tx_info; - unsigned char rev[24]; - }; -} __packed; - -struct hgic_frm_hdr2 { - struct hgic_hdr hdr; -} __packed; - -#define HDR_CMDID(ctl) ((ctl)->hdr.type==HGIC_HDR_TYPE_CMD2?(ctl)->cmd2.cmd_id:(ctl)->cmd.cmd_id) -#define HDR_EVTID(ctl) ((ctl)->hdr.type==HGIC_HDR_TYPE_EVENT2?(ctl)->event2.event_id:(ctl)->event.event_id) -#define HDR_CMDID_SET(ctl, id) if(id>255){\ - (ctl)->hdr.type =HGIC_HDR_TYPE_CMD2;\ - (ctl)->cmd2.cmd_id = id;\ - }else{\ - (ctl)->hdr.type =HGIC_HDR_TYPE_CMD;\ - (ctl)->cmd.cmd_id = id;\ - } -#define HDR_EVTID_SET(ctl, id) if(id>255){\ - (ctl)->hdr.type =HGIC_HDR_TYPE_EVENT2;\ - (ctl)->event2.event_id = id;\ - }else{\ - (ctl)->hdr.type =HGIC_HDR_TYPE_EVENT;\ - (ctl)->event.event_id = id;\ - } - -/*contro pakcet header*/ -struct hgic_ctrl_hdr { - struct hgic_hdr hdr; - union { - struct { - unsigned char cmd_id; - short status; - } cmd; - struct { - unsigned short cmd_id; - short status; - } cmd2; - struct { - unsigned char event_id; - short value; - } event; - struct { - unsigned short event_id; - short value; - } event2; - unsigned char info[4]; - }; -} __packed; //ack packet struct hgic_dack_hdr { @@ -273,7 +159,7 @@ struct hgic_fw_status { struct hgic_sta_status sta[0]; }; -enum HGIC_BUS_BOOTDL_CKSUM{ +enum HGIC_BUS_BOOTDL_CKSUM { HGIC_BUS_BOOTDL_CHECK_SUM = 0, HGIC_BUS_BOOTDL_CHECK_CRC8, HGIC_BUS_BOOTDL_CHECK_0XFD, @@ -289,18 +175,17 @@ struct hgic_bus { int bootdl_pktlen; int bootdl_cksum; int blk_size; + int (*probe)(void *dev, struct hgic_bus *bus); int (*tx_packet)(void *bus, struct sk_buff *skb); void (*tx_complete)(void *hg, struct sk_buff *skb, int success); - int (*rx_packet)(void *hg, struct sk_buff *skb, int len); + int (*rx_packet)(void *hg, u8 *data, int len); int (*reinit)(void *bus); + void (*probe_post)(void *priv); + void (*remove)(void *priv); + int (*suspend)(void *priv); + int (*resume)(void *priv); }; -extern int hgic_core_probe(void *dev, struct hgic_bus *bus); -extern void hgic_core_probe_post(void *priv); -extern int hgic_core_remove(void *arg); -extern int hgic_core_suspend(void *hgobj); -extern int hgic_core_resume(void *hgobj); - #ifdef __RTOS__ #define ALLOC_ORDERED_WORKQUEUE alloc_ordered_workqueue #define ALLOC_NETDEV_MQS alloc_netdev_mqs @@ -322,39 +207,51 @@ extern int hgic_core_resume(void *hgobj); #define ALLOC_NETDEV_MQS(size,name,setup,txqs,rxqs) alloc_netdev_mqs(size,name,setup,txqs,rxqs) #endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,1) -#define _KERNEL_READ(fp, buff, size, off) kernel_read(fp, buff, size, off) -#define _KERNEL_WRITE(fp, buff, size, off) kernel_write(fp, buff, size, off) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,19,42) +#define _KERNEL_READ(fp, buff, size) ({ \ + ssize_t __ret__ = 0; \ + unsigned long long offset = 0;\ + __ret__ = kernel_read(fp, buff, size, &offset); \ + __ret__;\ + }) #else -#define _KERNEL_READ(fp, buff, size, off) kernel_read(fp, 0, buff, size) -#define _KERNEL_WRITE(fp, buff, size, off) kernel_write(fp, buff, size, off) +#define _KERNEL_READ(fp, buff, size) kernel_read(fp, 0, buff, size) #endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) #define setup_timer(a, b, c) timer_setup(a, b, 0) #define init_timer(...) #endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5,0,0) #define ACCESS_OK(type, addr, size) access_ok(addr, size) -#define DEV_OPEN(x) dev_open(x, NULL) +#define DEV_OPEN(x) do { rtnl_lock(); dev_open(x, NULL); rtnl_unlock(); } while(0) +#define DEV_CLOSE(x) do { rtnl_lock(); dev_close(x); rtnl_unlock(); } while(0) #else #define ACCESS_OK(type, addr, size) access_ok(type, addr, size) -#define DEV_OPEN(x) dev_open(x) +#define DEV_OPEN(x) do { rtnl_lock(); dev_open(x); rtnl_unlock(); } while(0) +#define DEV_CLOSE(x) do { rtnl_lock(); dev_close(x); rtnl_unlock(); } while(0) #endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0) && defined CONFIG_HGIC_2G #define IEEE80211_NUM_BANDS NUM_NL80211_BANDS #define IEEE80211_BAND_2GHZ NL80211_BAND_2GHZ #define IEEE80211_BAND_5GHZ NL80211_BAND_5GHZ #endif + #ifndef IEEE80211_NUM_ACS #define IEEE80211_NUM_ACS 4 #endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0) && defined CONFIG_HGIC_2G #define vht_nss nss #endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0) && defined CONFIG_HGIC_2G #define IEEE80211_CHAN_NO_IBSS IEEE80211_CHAN_NO_IR #define IEEE80211_CHAN_PASSIVE_SCAN IEEE80211_CHAN_NO_IR #endif + #if LINUX_VERSION_CODE < KERNEL_VERSION(5,5,0) #define proc_ops file_operations #define proc_open open @@ -363,15 +260,18 @@ extern int hgic_core_resume(void *hgobj); #define proc_write write #define proc_release release #endif + #if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) #define ieee80211_free_txskb(hw, skb) dev_kfree_skb_any(skb) #endif + #if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0) #define RX_FLAG_MACTIME_START RX_FLAG_MACTIME_MPDU #define IEEE80211_ITERATE_ACTIVE_INTERFACES_ATOMIC(hw, flags, iterator, vif) ieee80211_iterate_active_interfaces_atomic(hw, iterator, vif) #else #define IEEE80211_ITERATE_ACTIVE_INTERFACES_ATOMIC(hw, flags, iterator, vif) ieee80211_iterate_active_interfaces_atomic(hw, flags, iterator, vif) #endif + #if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) static inline void *__PDE_DATA(const struct inode *inode) { @@ -383,4 +283,16 @@ static inline void *PDE_DATA(const struct inode *inode) } #endif #endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) +#define tasklet_hrtimer hrtimer +#define tasklet_hrtimer_cancel hrtimer_cancel +#define tasklet_hrtimer_start hrtimer_start +#endif + +typedef int (*hgic_probe)(void *dev, struct hgic_bus *bus); +extern int hgic_sdio_init(hgic_probe probe, u32 max_pkt); +extern void hgic_sdio_exit(void); +extern int hgic_usb_init(hgic_probe probe, u32 max_pkt); +extern void hgic_usb_exit(void); #endif diff --git a/hgic_fmac/Kconfig b/hgic_fmac/Kconfig new file mode 100644 index 0000000..f0f4608 --- /dev/null +++ b/hgic_fmac/Kconfig @@ -0,0 +1,2 @@ +config HGICF + tristate " HUGE-IC FullMac WLAN Driver" diff --git a/hgic_fmac/Makefile b/hgic_fmac/Makefile index b2d5b13..646e4d5 100644 --- a/hgic_fmac/Makefile +++ b/hgic_fmac/Makefile @@ -1,23 +1,15 @@ -$(CONFIG_HGICF)-objs += cfg.o -$(CONFIG_HGICF)-objs += ctrl.o -$(CONFIG_HGICF)-objs += core.o -$(CONFIG_HGICF)-objs += event.o -$(CONFIG_HGICF)-objs += procfs.o -$(CONFIG_HGICF)-objs += ../utils/fwdl.o -$(CONFIG_HGICF)-objs += ../utils/utils.o -$(CONFIG_HGICF)-objs += ../utils/fwctrl.o -$(CONFIG_HGICF)-objs += ../utils/ota.o -$(CONFIG_HGICF)-objs += ../utils/fwinfo.o - -ifeq ($(CONFIG_HGICF), hgicf_sdio) -$(CONFIG_HGICF)-objs += ../utils/if_sdio.o -obj-m += hgicf_sdio.o -else ifeq ($(CONFIG_HGICF), hgicf_usb) -$(CONFIG_HGICF)-objs += ../utils/if_usb.o -obj-m += hgicf_usb.o -else -obj-m += hgicf.o -endif - +hgicf-objs += ctrl.o +hgicf-objs += core.o +hgicf-objs += event.o +hgicf-objs += procfs.o +hgicf-objs += ../utils/fwdl.o +hgicf-objs += ../utils/utils.o +hgicf-objs += ../utils/fwctrl.o +hgicf-objs += ../utils/ota.o +hgicf-objs += ../utils/fwinfo.o +hgicf-objs += ../utils/iwpriv.o +hgicf-$(CONFIG_HGIC_SDIO) += ../utils/if_sdio.o +hgicf-$(CONFIG_HGIC_USB) += ../utils/if_usb.o +obj-$(CONFIG_HGICF) += hgicf.o diff --git a/hgic_fmac/cfg.c b/hgic_fmac/cfg.c deleted file mode 100644 index 09c5f1f..0000000 --- a/hgic_fmac/cfg.c +++ /dev/null @@ -1,1178 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#include "hgicf.h" -#include "cfg.h" - -struct hgpriv_set { - char *name; - int (*set)(struct net_device *dev, char *args); -}; -struct hgpriv_get { - char *name; - int (*get)(struct net_device *dev, struct iwreq *wrqin); -}; - -#define hgicf_pick_values(pick_type, str, array, size) do{\ - char *ptr = NULL;\ - if(str && strlen(str) > 0){\ - while ((ptr = strsep((char **)&str, ",")) != NULL) {\ - if (count >= size) break;\ - array[count++] = (pick_type)simple_strtol(ptr, 0, 10);\ - }\ - }\ - }while(0) - -static int hgicf_copyfrom_iwreq(struct iwreq *wrqin, char *buf, int len) -{ - int ret = 0; - if (len > 0) { - memset(buf, 0, len); - if (ACCESS_OK(VERIFY_READ, wrqin->u.data.pointer, wrqin->u.data.length)) { - ret = copy_from_user(buf, wrqin->u.data.pointer, wrqin->u.data.length); - } else { - memcpy(buf, wrqin->u.data.pointer, wrqin->u.data.length); - } - } - return ret; -} - -static void hgicf_copyto_iwreq(struct iwreq *wrqin, char *buf, int len) -{ - if (len > 0) { - if (ACCESS_OK(VERIFY_WRITE, wrqin->u.data.pointer, len)) { - if (!__copy_to_user(wrqin->u.data.pointer, buf, len)){ - wrqin->u.data.length = (u16)len; - } - } else { - memset(wrqin->u.data.pointer, 0, len + 1); - memcpy(wrqin->u.data.pointer, buf, len); - } - } -} - -static int hgicf_ioctl_set_countryregion(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - if (args == NULL) { - return -EINVAL; - } - return hgic_fwctrl_set_countryregion(&(vif->hg->ctrl), args); -} - -static int hgicf_ioctl_set_ssid(struct net_device *dev, char *args) -{ - int ret = -1; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - ret = hgic_fwctrl_set_ssid(&(vif->hg->ctrl), args); - if (!ret) { - strcpy(vif->hw_ssid, args); - } - return ret; -} - -static int hgicf_ioctl_set_bssid(struct net_device *dev, char *args) -{ - int ret = -1; - u8 bssid[6]; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL || vif->fwifidx != HGIC_WDEV_ID_STA) { - return -EINVAL; - } - hgic_pick_macaddr(args, bssid); - ret = hgic_fwctrl_set_bssid(&(vif->hg->ctrl), bssid); - if (!ret) { - memcpy(vif->hw_bssid, args, ETH_ALEN); - } - return ret; -} - -static int hgicf_ioctl_set_channel(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - if (args == NULL) { - return -EINVAL; - } - return hgic_fwctrl_set_channel(&(vif->hg->ctrl), simple_strtol(args, 0, 10)); -} - -static int hgicf_ioctl_set_bssid_filter(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - return hgic_fwctrl_set_bssid_filter(&(vif->hg->ctrl), args); -} - -static int hgicf_ioctl_set_rts_threshold(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - if (args == NULL) { - return -EINVAL; - } - return hgic_fwctrl_set_rts_threshold(&(vif->hg->ctrl), simple_strtol(args, 0, 10)); -} - -static int hgicf_ioctl_set_frag_threshold(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - if (args == NULL) { - return -EINVAL; - } - return hgic_fwctrl_set_frag_threshold(&(vif->hg->ctrl), simple_strtol(args, 0, 10)); -} - -static int hgicf_ioctl_set_key_mgmt(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - return hgic_fwctrl_set_key_mgmt(&(vif->hg->ctrl), args); -} - -static int hgicf_ioctl_set_wpa_psk(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - return hgic_fwctrl_set_wpa_psk(&(vif->hg->ctrl), args); -} - -static int hgicf_ioctl_reset_counter(struct net_device *dev, char *args) -{ - //struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - hgic_dbg("%s\r\n", args); - return 0; -} - -static int hgicf_ioctl_set_freq_range(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - u32 vals[3] = {0, 0, 0}; - int count = 0; - - if (args == NULL || strlen(args) == 0) { - return -EINVAL; - } - hgicf_pick_values(u32, args, vals, 3); - if ((vals[0] < 7200 || vals[0] > 9300) || - (vals[1] < vals[0] || vals[1] > 9300) || - (vals[2] < 1 || vals[2] > 8)) { - return -EINVAL; - } - return hgic_fwctrl_set_freq_range(&(vif->hg->ctrl), vals[0], vals[1], vals[2]); -} - -static int hgicf_ioctl_set_bss_bw(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - u8 bss_bw = (u8)simple_strtol(args, 0, 10); - if (bss_bw != 1 && bss_bw != 2 && bss_bw != 4 && bss_bw != 8) { - bss_bw = 8; - } - return hgic_fwctrl_set_bss_bw(&(vif->hg->ctrl), bss_bw); -} - -static int hgicf_ioctl_set_tx_bw(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - u8 tx_bw = (u8)simple_strtol(args, 0, 10); - if (tx_bw != 1 && tx_bw != 2 && tx_bw != 4 && tx_bw != 8) { - tx_bw = 0; - } - return hgic_fwctrl_set_tx_bw(&(vif->hg->ctrl), tx_bw); -} - -static int hgicf_ioctl_set_tx_mcs(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - u8 tx_mcs = (u8)simple_strtol(args, 0, 10); - return hgic_fwctrl_set_tx_mcs(&(vif->hg->ctrl), tx_mcs); -} - -static int hgicf_ioctl_set_acs(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - u16 vals[2] = {0, 0}; - int count = 0; - - if (args == NULL || strlen(args) == 0) { - return -EINVAL; - } - hgicf_pick_values(u16, args, vals, 2); - return hgic_fwctrl_set_acs(&(vif->hg->ctrl), vals[0], vals[1]); -} - -static int hgicf_ioctl_set_bgrssi(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - u8 rssi = (u8)simple_strtol(args, 0, 10); - return hgic_fwctrl_set_bgrssi(&(vif->hg->ctrl), rssi); -} - -static int hgicf_ioctl_set_chan_list(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - u16 vals[32] = {0}; - int count = 0; - - if (args == NULL || strlen(args) == 0) { - return -EINVAL; - } - hgicf_pick_values(u16, args, vals, 32); - return hgic_fwctrl_set_chan_list(&(vif->hg->ctrl), vals, count); -} - -static int hgicf_ioctl_set_mode(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - if (args == NULL) { - return -EINVAL; - } - return hgic_fwctrl_set_mode(&(vif->hg->ctrl), args); -} - -static int hgicf_ioctl_set_paired_stas(struct net_device *dev, char *args) -{ - u8 *buf = NULL; - int len = 0; - int ret = 0, i = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL || strlen(args) == 0) { - return -EINVAL; - } - len = ALIGN(strlen(args), 17); - buf = kzalloc(len, GFP_KERNEL); - if (buf == NULL) { - return -ENOMEM; - } - while ((i + 1) * 17 <= len) { - if (hgic_pick_macaddr(args + i * 17, buf + i * 6)) { - i++; - } else { - break; - } - } - //hgic_dbg("set paired stas:%s\r\n", args); - ret = hgic_fwctrl_set_paired_stas(&(vif->hg->ctrl), buf, i * 6); - kfree(buf); - return ret; -} - -static int hgicf_ioctl_set_pairing(struct net_device *dev, char *args) -{ - u8 enable = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - enable = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_pairing(&(vif->hg->ctrl), enable); -} - -static int hgicf_ioctl_set_beacon_int(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - u8 beacon_int = (u8)simple_strtol(args, 0, 10); - return hgic_fwctrl_set_beacon_int(&(vif->hg->ctrl), beacon_int); -} - -static int hgicf_ioctl_set_radio_off(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - vif->hg->radio_off = (u8)simple_strtol(args, 0, 10); - return hgic_fwctrl_radio_onoff(&(vif->hg->ctrl), !vif->hg->radio_off); -} - -static int hgicf_ioctl_join_group(struct net_device *dev, char *args) -{ - u8 addr[6]; - u32 aid = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - hgic_pick_macaddr(args, addr); - aid = simple_strtol(args + 18, 0, 10); - return hgic_fwctrl_join_group(&(vif->hg->ctrl), addr, aid); -} - -static int hgicf_ioctl_set_ethertype(struct net_device *dev, char *args) -{ - u16 type = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - type = simple_strtol(args, 0, 16); - return hgic_fwctrl_set_ethertype(&(vif->hg->ctrl), type); -} - -static int hgicf_ioctl_set_txpower(struct net_device *dev, char *args) -{ - u16 type = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - type = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_txpower(&(vif->hg->ctrl), type); -} - -static int hgicf_ioctl_set_aggcnt(struct net_device *dev, char *args) -{ - u8 aggcnt = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - aggcnt = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_agg_cnt(&(vif->hg->ctrl), aggcnt); -} -static int hgicf_ioctl_set_ps_connect(struct net_device *dev, char *args) -{ - int count = 0; - u8 vals[2]; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - hgicf_pick_values(u8, args, vals, 2); - return hgic_fwctrl_set_ps_connect(&(vif->hg->ctrl), vals[0], vals[1]); -} - -static int hgicf_ioctl_set_bss_max_idle(struct net_device *dev, char *args) -{ - u32 max_idle = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - max_idle = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_bss_max_idle(&(vif->hg->ctrl), max_idle); -} - -static int hgicf_ioctl_set_dtim_period(struct net_device *dev, char *args) -{ - u32 period = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - period = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_dtim_period(&(vif->hg->ctrl), period); -} - -static int hgicf_ioctl_set_wkio_mode(struct net_device *dev, char *args) -{ - u32 mode = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - mode = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_wkio_mode(&(vif->hg->ctrl), mode); -} - -static int hgicf_ioctl_set_load_def(struct net_device *dev, char *args) -{ - u32 rst = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - if (args == NULL) { - return -EINVAL; - } - rst = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_load_def(&(vif->hg->ctrl), rst); -} - -static int hgicf_ioctl_set_disassoc_sta(struct net_device *dev, char *args) -{ - u8 addr[6]; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - hgic_pick_macaddr(args, addr); - return hgic_fwctrl_disassoc_sta(&(vif->hg->ctrl), addr); -} - -static int hgicf_ioctl_set_ps_mode(struct net_device *dev, char *args) -{ - u32 mode = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - mode = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_ps_mode(&(vif->hg->ctrl), mode); -} - -static int hgicf_ioctl_set_aplost_time(struct net_device *dev, char *args) -{ - u32 time = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - time = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_aplost_time(&(vif->hg->ctrl), time); -} - -static int hgicf_ioctl_set_unpair(struct net_device *dev, char *args) -{ - u8 addr[6]; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - hgic_pick_macaddr(args, addr); - return hgic_fwctrl_unpair(&(vif->hg->ctrl), addr); -} - -static int hgicf_ioctl_set_auto_chswitch(struct net_device *dev, char *args) -{ - u32 enable = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - enable = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_auto_chswitch(&(vif->hg->ctrl), enable == 1); -} - -static int hgicf_ioctl_set_mcast_key(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - if (args == NULL) { - return -EINVAL; - } - return hgic_fwctrl_set_mcast_key(&(vif->hg->ctrl), args); -} - -static int hgicf_ioctl_set_reassoc_wkhost(struct net_device *dev, char *args) -{ - u32 enable = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - enable = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_reassoc_wkhost(&(vif->hg->ctrl), enable == 1); -} - -static int hgicf_ioctl_set_wakeup_io(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - u8 vals[2] = {0, 0}; - int count = 0; - - hgicf_pick_values(u8, args, vals, 2); - return hgic_fwctrl_set_wakeup_io(&(vif->hg->ctrl), vals[0], vals[1]); -} - -static int hgicf_ioctl_set_dbginfo_output(struct net_device *dev, char *args) -{ - u32 enable = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args) { - enable = simple_strtol(args, 0, 10); - } - return hgic_fwctrl_set_dbginfo_output(&(vif->hg->ctrl), enable == 1); -} - -static int hgicf_ioctl_set_sysdbg(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - if (args == NULL) { - return -EINVAL; - } - return hgic_fwctrl_set_sysdbg(&(vif->hg->ctrl), args); -} - -static int hgicf_ioctl_set_primary_chan(struct net_device *dev, char *args) -{ - u32 chan = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - chan = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_primary_chan(&(vif->hg->ctrl), chan); -} - -static int hgicf_ioctl_set_autosleep_time(struct net_device *dev, char *args) -{ - u32 time = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - time = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_autosleep_time(&(vif->hg->ctrl), time); -} - -static int hgicf_ioctl_set_supper_pwr(struct net_device *dev, char *args) -{ - u32 enable = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - enable = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_supper_pwr(&(vif->hg->ctrl), enable); -} - -static int hgicf_ioctl_set_repeater_ssid(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - return hgic_fwctrl_set_repeater_ssid(&(vif->hg->ctrl), args); -} - -static int hgicf_ioctl_set_repeater_psk(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - return hgic_fwctrl_set_repeater_psk(&(vif->hg->ctrl), args); -} - -static int hgicf_ioctl_set_auto_save(struct net_device *dev, char *args) -{ - u32 enable = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - enable = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_auto_save(&(vif->hg->ctrl), enable); -} -static int hgicf_ioctl_set_pair_autostop(struct net_device *dev, char *args) -{ - u32 enable = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - enable = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_pair_autostop(&(vif->hg->ctrl), enable); -} -static int hgicf_ioctl_set_dcdc13v(struct net_device *dev, char *args) -{ - u32 enable = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - enable = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_dcdc13v(&(vif->hg->ctrl), enable); -} -static int hgicf_ioctl_set_acktmo(struct net_device *dev, char *args) -{ - u32 tmo = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - tmo = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_acktmo(&(vif->hg->ctrl), tmo); -} -static int hgicf_ioctl_set_pa_pwrctl_dis(struct net_device *dev, char *args) -{ - u32 dis = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - dis = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_pa_pwrctl_dis(&(vif->hg->ctrl), dis); -} -static int hgicf_ioctl_set_dhcpc(struct net_device *dev, char *args) -{ - u32 en = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - en = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_dhcpc(&(vif->hg->ctrl), en); -} -static int hgicf_ioctl_set_wkdata_save(struct net_device *dev, char *args) -{ - u32 en = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - en = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_wkdata_save(&(vif->hg->ctrl), en); -} -static int hgicf_ioctl_set_mcast_txparam(struct net_device *dev, char *args) -{ - struct hgic_mcast_txparam txparam; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - u8 *vals = (u8 *)&txparam; - int count = 0; - - if (args == NULL) { - return -EINVAL; - } - hgicf_pick_values(u8, args, vals, 4); - return hgic_fwctrl_set_mcast_txparam(&(vif->hg->ctrl), &txparam); -} - -static int hgicf_ioctl_set_resetsta(struct net_device *dev, char *args) -{ - u8 addr[6]; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL || vif->fwifidx != HGIC_WDEV_ID_STA) { - return -EINVAL; - } - hgic_pick_macaddr(args, addr); - return hgic_fwctrl_reset_sta(&(vif->hg->ctrl), addr); -} - -static int hgicf_ioctl_set_ant_auto(struct net_device *dev, char *args) -{ - u32 en = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - en = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_ant_auto(&(vif->hg->ctrl), en); -} -static int hgicf_ioctl_select_ant(struct net_device *dev, char *args) -{ - u32 ant = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - ant = simple_strtol(args, 0, 10); - return hgic_fwctrl_select_ant(&(vif->hg->ctrl), ant); -} -static int hgicf_ioctl_set_wkhost_reasons(struct net_device *dev, char *args) -{ - int count = 0; - u8 reasons[33]; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - memset(reasons, 0, sizeof(reasons)); - hgicf_pick_values(u8, args, reasons, 32); - return hgic_fwctrl_set_wkhost_reasons(&(vif->hg->ctrl), reasons, count + 1); -} - -static int hgicf_ioctl_set_mac_filter(struct net_device *dev, char *args) -{ - u32 en = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - en = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_mac_filter(&(vif->hg->ctrl), en); -} - -static int hgicf_ioctl_set_atcmd(struct net_device *dev, char *args) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - return hgic_fwctrl_set_atcmd(&(vif->hg->ctrl), args); -} - -static int hgicf_ioctl_set_roaming(struct net_device *dev, char *args) -{ - int count = 0; - u8 vals[2]; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - hgicf_pick_values(u8, args, vals, 2); - return hgic_fwctrl_set_roaming(&(vif->hg->ctrl), vals[0], vals[2]); -} - -static int hgicf_ioctl_set_ap_hide(struct net_device *dev, char *args) -{ - u32 hide = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - hide = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_ap_hide(&(vif->hg->ctrl), hide); -} - -static int hgicf_ioctl_set_max_txcnt(struct net_device *dev, char *args) -{ - u32 txcnt = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - txcnt = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_frm_tx_maxcnt(&(vif->hg->ctrl), txcnt); -} -static int hgicf_ioctl_set_assert_holdup(struct net_device *dev, char *args) -{ - u32 holdup = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (args == NULL) { - return -EINVAL; - } - holdup = simple_strtol(args, 0, 10); - return hgic_fwctrl_set_assert_holdup(&(vif->hg->ctrl), holdup); -} - -static struct hgpriv_set hgpriv_sets[] = { - {"country_region", hgicf_ioctl_set_countryregion}, - {"ssid", hgicf_ioctl_set_ssid}, - {"bssid", hgicf_ioctl_set_bssid}, - {"channel", hgicf_ioctl_set_channel}, - {"rts_threshold", hgicf_ioctl_set_rts_threshold}, - {"frag_threshold", hgicf_ioctl_set_frag_threshold}, - {"key_mgmt", hgicf_ioctl_set_key_mgmt}, - {"wpa_psk", hgicf_ioctl_set_wpa_psk}, - {"reset_counter", hgicf_ioctl_reset_counter}, - {"bssid_filter", hgicf_ioctl_set_bssid_filter}, - {"freq_range", hgicf_ioctl_set_freq_range}, - {"bss_bw", hgicf_ioctl_set_bss_bw}, - {"tx_bw", hgicf_ioctl_set_tx_bw}, - {"tx_mcs", hgicf_ioctl_set_tx_mcs}, - {"acs", hgicf_ioctl_set_acs}, - {"bgrssi", hgicf_ioctl_set_bgrssi}, - {"chan_list", hgicf_ioctl_set_chan_list}, - {"mode", hgicf_ioctl_set_mode}, - {"paired_stas", hgicf_ioctl_set_paired_stas}, - {"pairing", hgicf_ioctl_set_pairing}, - {"beacon_int", hgicf_ioctl_set_beacon_int}, - {"radio_off", hgicf_ioctl_set_radio_off}, - {"join_group", hgicf_ioctl_join_group}, - {"ether_type", hgicf_ioctl_set_ethertype}, - {"txpower", hgicf_ioctl_set_txpower}, - {"agg_cnt", hgicf_ioctl_set_aggcnt}, - {"ps_connect", hgicf_ioctl_set_ps_connect}, - {"bss_max_idle", hgicf_ioctl_set_bss_max_idle}, - {"wkio_mode", hgicf_ioctl_set_wkio_mode}, - {"loaddef", hgicf_ioctl_set_load_def}, - {"disassoc_sta", hgicf_ioctl_set_disassoc_sta}, - {"dtim_period", hgicf_ioctl_set_dtim_period}, - {"ps_mode", hgicf_ioctl_set_ps_mode}, - {"aplost_time", hgicf_ioctl_set_aplost_time}, - {"unpair", hgicf_ioctl_set_unpair}, - {"auto_chswitch", hgicf_ioctl_set_auto_chswitch}, - {"mcast_key", hgicf_ioctl_set_mcast_key}, - {"reassoc_wkhost", hgicf_ioctl_set_reassoc_wkhost}, - {"wakeup_io", hgicf_ioctl_set_wakeup_io}, - {"dbginfo", hgicf_ioctl_set_dbginfo_output}, - {"sysdbg", hgicf_ioctl_set_sysdbg}, - {"primary_chan", hgicf_ioctl_set_primary_chan}, - {"autosleep_time", hgicf_ioctl_set_autosleep_time}, - {"supper_pwr", hgicf_ioctl_set_supper_pwr}, - {"r_ssid", hgicf_ioctl_set_repeater_ssid}, - {"r_psk", hgicf_ioctl_set_repeater_psk}, - {"auto_save", hgicf_ioctl_set_auto_save}, - {"pair_autostop", hgicf_ioctl_set_pair_autostop}, - {"dcdc13", hgicf_ioctl_set_dcdc13v}, - {"acktmo", hgicf_ioctl_set_acktmo}, - {"pa_pwrctl_dis", hgicf_ioctl_set_pa_pwrctl_dis}, - {"dhcpc", hgicf_ioctl_set_dhcpc}, - {"wkdata_save", hgicf_ioctl_set_wkdata_save}, - {"mcast_txparam", hgicf_ioctl_set_mcast_txparam}, - {"reset_sta", hgicf_ioctl_set_resetsta}, - {"ant_auto", hgicf_ioctl_set_ant_auto}, - {"ant_sel", hgicf_ioctl_select_ant}, - {"wkhost_reason", hgicf_ioctl_set_wkhost_reasons}, - {"macfilter", hgicf_ioctl_set_mac_filter}, - {"atcmd", hgicf_ioctl_set_atcmd}, - {"roaming", hgicf_ioctl_set_roaming}, - {"ap_hide", hgicf_ioctl_set_ap_hide}, - {"max_txcnt", hgicf_ioctl_set_max_txcnt}, - {"assert_holdup", hgicf_ioctl_set_assert_holdup}, - {NULL,} -}; - -int hgicf_ioctl_set_proc(struct net_device *dev, struct iwreq *wrqin) -{ - int ret = 0; - char *field, *val; - struct hgpriv_set *set = NULL; - u8 *cmd = kmalloc(wrqin->u.data.length + 1, GFP_KERNEL); - - if (cmd == NULL){ - return -ENOMEM; - } - - ret = hgicf_copyfrom_iwreq(wrqin, cmd, wrqin->u.data.length + 1); - //hgic_dbg("%s\r\n", cmd); - while (!ret && (field = strsep((char **)&cmd, ";")) != NULL) { - if (!*field) { - continue; - } - - if ((val = strchr(field, '=')) != NULL) { - *val++ = 0; - } - - for (set = hgpriv_sets; val && set->name; set++) { - if (strcmp(field, set->name) == 0) { - //printk("set [%s=%s]\r\n", set->name, val); - ret = set->set(dev, val); - break; - } - } - - if (set->name == NULL) { - hgic_dbg("not support:%s=%s\r\n", field, val); - ret = -1; - break; - } - } - - kfree(cmd); - return ret; -} - -static int hgicf_ioctl_get_scan_list(struct net_device *dev, struct iwreq *wrqin) -{ - int ret = 0; - int i = 0; - int count = 0; - int len = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - struct hgic_bss_info *bss = NULL; - char *buf = kzalloc(1024, GFP_ATOMIC); - char *print_buf = kzalloc(4096, GFP_ATOMIC); - - if (buf == NULL || print_buf == NULL) { - if (buf) { kfree(buf); } - if (print_buf) { kfree(print_buf); } - return -ENOMEM; - } - - ret = hgic_fwctrl_get_scan_list(&(vif->hg->ctrl), buf, 1024); - if (ret > 0) { - bss = (struct hgic_bss_info *)buf; - count = ret / sizeof(struct hgic_bss_info); - len += sprintf(print_buf + len, "\r\nBSSID \tSSID \tEncryption\tFrequence\tSignal\r\n"); - for (i = 0; i < count; i++) { - len += sprintf(print_buf + len, "%pM\t%s\t%10s\t%10d\t%d\r\n", - bss[i].bssid, bss[i].ssid, - bss[i].encrypt ? (bss[i].encrypt == 1 ? "WPA" : "WPA2") : "NONE", - bss[i].freq, bss[i].signal); - } - wrqin->u.data.length = (u16)len; - } else { - len = 2; - } - hgicf_copyto_iwreq(wrqin, print_buf, len); - kfree(buf); - kfree(print_buf); - return (0); -} - -static int hgicf_ioctl_get_sta_list(struct net_device *dev, struct iwreq *wrqin) -{ - //int i = 0; - int count = 0; - int len = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - char *buf = kzalloc(1024, GFP_ATOMIC); - char *print_buf = kzalloc(4096, GFP_ATOMIC); - //char *ptr = buf; - struct hgic_sta_info *sta = (struct hgic_sta_info *)buf; - - if (buf == NULL || print_buf == NULL) { - if (buf) { kfree(buf); } - if (print_buf) { kfree(print_buf); } - return -ENOMEM; - } - - count = hgic_fwctrl_get_sta_list(&(vif->hg->ctrl), (struct hgic_sta_info *)buf, (1024 / sizeof(struct hgic_sta_info))); - if (count > 0) { - len += sprintf(print_buf, "%d sta:\r\n", count); - while (count-- > 0) { - len += sprintf(print_buf + len, "aid:%d, %pM, ps:%d, rssi:%d, evm:%d\r\n", sta->aid, sta->addr, sta->ps, (s8)sta->rssi, (s8)sta->evm); - sta++; - } - wrqin->u.data.length = (u16)len; - } else { - len = 2; - } - hgicf_copyto_iwreq(wrqin, print_buf, len); - kfree(buf); - kfree(print_buf); - return (0); -} - -static int hgicf_ioctl_get_ssid(struct net_device *dev, struct iwreq *wrqin) -{ - int len = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - char *buf = kzalloc(40, GFP_ATOMIC); - - if (buf == NULL) { - return -ENOMEM; - } - len = hgic_fwctrl_get_ssid(&(vif->hg->ctrl), buf, 32); - hgicf_copyto_iwreq(wrqin, buf, len); - kfree(buf); - return (0); -} - -static int hgicf_ioctl_get_bssid(struct net_device *dev, struct iwreq *wrqin) -{ - int len = 0; - char buf[24] = {0}; - char bssid[6]; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - len = hgic_fwctrl_get_bssid(&(vif->hg->ctrl), bssid); - if (len == 6) { sprintf(buf, "%pM", bssid); } - len = strlen(buf); - hgicf_copyto_iwreq(wrqin, buf, len); - return (0); -} - -static int hgicf_ioctl_get_wpa_psk(struct net_device *dev, struct iwreq *wrqin) -{ - int len = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - char *buf = kzalloc(80, GFP_ATOMIC); - - if (buf == NULL) { - return -ENOMEM; - } - len = hgic_fwctrl_get_wpapsk(&(vif->hg->ctrl), buf, 64); - hgicf_copyto_iwreq(wrqin, buf, len); - kfree(buf); - return (0); -} - -static int hgicf_ioctl_get_txpower(struct net_device *dev, struct iwreq *wrqin) -{ - char str[4]; - int txpower = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - txpower = hgic_fwctrl_get_txpower(&(vif->hg->ctrl)); - sprintf(str, "%d", txpower); - hgicf_copyto_iwreq(wrqin, str, strlen(str)); - return (0); -} - -static int hgicf_ioctl_get_bss_bw(struct net_device *dev, struct iwreq *wrqin) -{ - char str[4]; - int bss_bw = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - bss_bw = hgic_fwctrl_get_bss_bw(&(vif->hg->ctrl)); - sprintf(str, "%d", bss_bw); - hgicf_copyto_iwreq(wrqin, str, strlen(str)); - return (0); -} - -static int hgicf_ioctl_get_aggcnt(struct net_device *dev, struct iwreq *wrqin) -{ - char str[4]; - int aggcnt = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - aggcnt = hgic_fwctrl_get_agg_cnt(&(vif->hg->ctrl)); - sprintf(str, "%d", aggcnt); - hgicf_copyto_iwreq(wrqin, str, strlen(str)); - return (0); -} - -static int hgicf_ioctl_get_chan_list(struct net_device *dev, struct iwreq *wrqin) -{ - int cnt = 0, i = 0; - int len = 0; - u16 chan_list[16]; - char *buf = kzalloc(128, GFP_KERNEL); - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - if (buf) { - cnt = hgic_fwctrl_get_chan_list(&(vif->hg->ctrl), chan_list, 16); - for (i = 0; i < cnt; i++) { - len += sprintf(buf + len, "%d,", chan_list[i]); - } - if (len > 0) { - len--; - buf[len] = 0; - hgicf_copyto_iwreq(wrqin, buf, len); - } - kfree(buf); - } - return (0); -} - -static int hgicf_ioctl_get_freq_range(struct net_device *dev, struct iwreq *wrqin) -{ - char str[32] = {0}; - int ret; - u32 vals[3]; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - ret = hgic_fwctrl_get_freq_range(&(vif->hg->ctrl), &vals[0], &vals[1], &vals[2]); - if (ret) { - sprintf(str, "%d,%d,%d", vals[0], vals[1], vals[2]); - } - hgicf_copyto_iwreq(wrqin, str, strlen(str)); - return (0); -} - -static int hgicf_ioctl_get_key_mgmt(struct net_device *dev, struct iwreq *wrqin) -{ - int len = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - char *buf = kzalloc(40, GFP_ATOMIC); - - if (buf == NULL) { - return -ENOMEM; - } - len = hgic_fwctrl_get_key_mgmt(&(vif->hg->ctrl), buf, 32); - hgicf_copyto_iwreq(wrqin, buf, len); - kfree(buf); - return (0); -} - -static int hgicf_ioctl_get_battery_level(struct net_device *dev, struct iwreq *wrqin) -{ - char str[4]; - int val = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - val = hgic_fwctrl_get_battery_level(&(vif->hg->ctrl)); - sprintf(str, "%d", val); - hgicf_copyto_iwreq(wrqin, str, strlen(str)); - return (0); -} - -static int hgicf_ioctl_get_module_type(struct net_device *dev, struct iwreq *wrqin) -{ - u16 type = 0; - char str[12]; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - type = (u16)hgic_fwctrl_get_module_type(&(vif->hg->ctrl)); - if (type) { - sprintf(str, "%d", type); - hgicf_copyto_iwreq(wrqin, str, strlen(str)); - } - return (0); -} - -static int hgicf_ioctl_get_disassoc_reason(struct net_device *dev, struct iwreq *wrqin) -{ - char str[12]; - int reason = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - reason = hgic_fwctrl_get_disassoc_reason(&(vif->hg->ctrl)); - sprintf(str, "%d", reason); - hgicf_copyto_iwreq(wrqin, str, strlen(str)); - return (0); -} - -static int hgicf_ioctl_get_ant_sel(struct net_device *dev, struct iwreq *wrqin) -{ - char str[12]; - int ant = 0; - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - - ant = hgic_fwctrl_get_ant_sel(&(vif->hg->ctrl)); - sprintf(str, "%d", ant); - hgicf_copyto_iwreq(wrqin, str, strlen(str)); - return (0); -} - -static struct hgpriv_get hgpriv_gets[] = { - {"sta_list", hgicf_ioctl_get_sta_list}, - {"scan_list", hgicf_ioctl_get_scan_list}, - {"ssid", hgicf_ioctl_get_ssid}, - {"bssid", hgicf_ioctl_get_bssid}, - {"wpa_psk", hgicf_ioctl_get_wpa_psk}, - {"txpower", hgicf_ioctl_get_txpower}, - {"agg_cnt", hgicf_ioctl_get_aggcnt}, - {"bss_bw", hgicf_ioctl_get_bss_bw}, - {"chan_list", hgicf_ioctl_get_chan_list}, - {"freq_range", hgicf_ioctl_get_freq_range}, - {"key_mgmt", hgicf_ioctl_get_key_mgmt}, - {"battery_level", hgicf_ioctl_get_battery_level}, - {"module_type", hgicf_ioctl_get_module_type}, - {"disassoc_reason", hgicf_ioctl_get_disassoc_reason}, - {"ant_sel", hgicf_ioctl_get_ant_sel}, - {NULL,} -}; - -int hgicf_ioctl_get_proc(struct net_device *dev, struct iwreq *wrqin) -{ - int ret = 0; - char field[64]; - struct hgpriv_get *get = NULL; - - ret = hgicf_copyfrom_iwreq(wrqin, field, 64); - for (get = hgpriv_gets; !ret && get->name; get++) { - if (strcmp(field, get->name) == 0) { - return get->get(dev, wrqin); - } - } - hgic_dbg("not support:%s\r\n", field); - return -ENOTSUPP; -} - -int hgicf_ioctl_stat(struct net_device *dev, struct iwreq *wrqin) -{ - //struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - return 0; -} - -int hgicf_ioctl_e2p(struct net_device *dev, struct iwreq *wrqin) -{ - //struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - return 0; -} - -int hgicf_ioctl_savecfg(struct net_device *dev, struct iwreq *wrqin) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - return hgic_fwctrl_save_cfg(&(vif->hg->ctrl)); -} - -int hgicf_ioctl_scan(struct net_device *dev, struct iwreq *wrqin) -{ - struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); - return hgic_fwctrl_scan(&(vif->hg->ctrl)); -} - diff --git a/hgic_fmac/cfg.h b/hgic_fmac/cfg.h deleted file mode 100644 index 091e002..0000000 --- a/hgic_fmac/cfg.h +++ /dev/null @@ -1,13 +0,0 @@ - -#ifndef _HGICF_CFG_H_ -#define _HGICF_CFG_H_ -#ifndef __RTOS__ -int hgicf_ioctl_set_proc(struct net_device *dev, struct iwreq *wrqin); -int hgicf_ioctl_get_proc(struct net_device *dev, struct iwreq *wrqin); -int hgicf_ioctl_stat(struct net_device *dev, struct iwreq *wrqin); -int hgicf_ioctl_e2p(struct net_device *dev, struct iwreq *wrqin); -int hgicf_ioctl_scan(struct net_device *dev, struct iwreq *wrqin); -int hgicf_ioctl_savecfg(struct net_device *dev, struct iwreq *wrqin); -#endif -#endif - diff --git a/hgic_fmac/core.c b/hgic_fmac/core.c index 91d387b..a47d026 100644 --- a/hgic_fmac/core.c +++ b/hgic_fmac/core.c @@ -30,28 +30,30 @@ #include "hgicf.h" #include "ctrl.h" -#include "cfg.h" #include "event.h" static int txq_size = 1024; -static char *conf_file = "/etc/hgicf.conf"; -static char *fw_file = "hgicf.bin"; -static int if_test = 0; -static int soft_fc = 1; +static int if_test = 0; static int no_bootdl = 0; static int qc_mode = 0; static char *ifname = "hg%d"; -static hgic_init_cb init_cb = NULL; +static int if_agg = 0; +static char *conf_file = "/etc/hgicf.conf"; +static int proc_dev = 0; +static char *fw_file = "hgicf.bin"; #ifdef __RTOS__ +static hgic_init_cb init_cb = NULL; static hgic_event_cb event_cb = NULL; #endif -#define TXWND_INIT_VAL (2) -#define MATCH_NDEV(fwidx,hg) ((fwidx) == HGIC_WDEV_ID_STA ? (hg->sta ? hg->sta->ndev : NULL) : \ - (hg->ap ? hg->ap->ndev : NULL)) +static const u16 hgic_fmac_devid[] = { + HGIC_WLAN_4002, + HGIC_WLAN_8400, +}; + +#define TXWND_INIT_VAL (3) #ifdef __RTOS__ -static int iface_cnt = 1; void dev_queue_xmit(struct sk_buff *skb) { struct net_device *ndev = skb->dev; @@ -63,7 +65,18 @@ void dev_queue_xmit(struct sk_buff *skb) } #endif -u16 hgicf_data_cookie(struct hgicf_wdev *hg) +static u8 hgicf_match_devid(u16 dev_id) +{ + int i = 0; + for (i = 0; i < ARRAYSIZE(hgic_fmac_devid); i++) { + if (dev_id == hgic_fmac_devid[i]) { + return 1; + } + } + return 0; +} + +static u16 hgicf_data_cookie(struct hgicf_wdev *hg) { unsigned long flags; uint16_t cookie = 0; @@ -74,39 +87,38 @@ u16 hgicf_data_cookie(struct hgicf_wdev *hg) return cookie; } -void hgicf_load_config(struct hgicf_wdev *hg) +static void hgicf_load_config(struct hgicf_wdev *hg) { #ifndef __RTOS__ struct file *fp = NULL; struct iwreq wrqin; - struct net_device *ndev = NULL; + struct net_device *ndev = hg->vif->ndev; ssize_t ret = 0; - unsigned long long __maybe_unused offset = 0 ; char *conf = kzalloc(2048, GFP_KERNEL); char *ptr, *str; + char path[64]; - if (hg->sta) {ndev = hg->sta->ndev; } - else if (hg->ap) {ndev = hg->ap->ndev; } - else { - hgic_err("No netdev!! \r\n"); - goto __out; + if (strstr(conf_file, ".conf")) { + strcpy(path, conf_file); + } else { + sprintf(path, "%s/%s.conf", conf_file, ndev->name); } - fp = filp_open(conf_file, O_RDONLY, 0); + fp = filp_open(path, O_RDONLY, 0); if (!IS_ERR(fp) && conf) { - ret = _KERNEL_READ(fp, conf, 2048, &offset); + hgic_err("load conf file: %s\r\n", path); + ret = _KERNEL_READ(fp, conf, 2048); str = conf; - hgic_fwctrl_close_dev(&(hg->ctrl)); while (str) { - ptr = strstr(str, "\r\n"); + ptr = strchr(str, '\n'); if (ptr) { - *ptr = 0; - ptr += 2; - } else { - ptr = strstr(str, "\n"); - if (ptr) { *ptr++ = 0;} + if (*(ptr - 1) == '\r') { + *(ptr - 1) = 0; + } + *ptr++ = 0; } + wrqin.u.data.length = strlen(str); if (wrqin.u.data.length > 0) { hgic_dbg("param: [%s]\r\n", str); @@ -118,12 +130,16 @@ void hgicf_load_config(struct hgicf_wdev *hg) } str = ptr; } - hgic_fwctrl_open_dev(&(hg->ctrl)); + } else { + hgic_err("can not open %s\r\n", path); } -__out: - if (!IS_ERR(fp)) { filp_close(fp, NULL); } - if (conf) { kfree(conf); } + if (!IS_ERR(fp)) { + filp_close(fp, NULL); + } + if (conf) { + kfree(conf); + } #endif } @@ -133,8 +149,8 @@ static int hgicf_netif_open(struct net_device *dev) if (!test_bit(HGICF_DEV_FLAGS_RUNNING, &vif->hg->flags)) { return 0; } - vif->hg->radio_off = 0; - return hgic_fwctrl_open_dev(&(vif->hg->ctrl)); + vif->opened = 1; + return hgic_fwctrl_open_dev(&(vif->hg->ctrl), vif->fwifidx); } static int hgicf_netif_stop(struct net_device *dev) @@ -143,8 +159,8 @@ static int hgicf_netif_stop(struct net_device *dev) if (!test_bit(HGICF_DEV_FLAGS_RUNNING, &vif->hg->flags)) { return 0; } - vif->hg->radio_off = 1; - return hgic_fwctrl_close_dev(&(vif->hg->ctrl)); + vif->opened = 0; + return hgic_fwctrl_close_dev(&(vif->hg->ctrl), vif->fwifidx); } static void hgicf_netif_uninit(struct net_device *dev) @@ -159,12 +175,12 @@ static netdev_tx_t hgicf_netif_xmit(struct sk_buff *skb, struct net_device *dev) { struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); struct hgic_frm_hdr2 *hdr = NULL; - u8 pad = ((ulong)skb->data & 0x3) ? (4 - ((ulong)skb->data & 0x3)) : 0; + u8 pad = ((ulong)skb->data & 0x3); //push offset | <--|data .....| - if (!test_bit(HGICF_DEV_FLAGS_RUNNING, &vif->hg->flags) || - (vif->hg->tx_dataq.qlen > txq_size) || + if (!test_bit(HGICF_DEV_FLAGS_RUNNING, &vif->hg->flags) || (vif->hg->tx_dataq.qlen > txq_size) || test_bit(HGIC_BUS_FLAGS_SLEEP, &vif->hg->bus->flags)) { dev_kfree_skb(skb); + vif->stats.tx_dropped += skb->len; return NETDEV_TX_OK; } @@ -177,19 +193,19 @@ static netdev_tx_t hgicf_netif_xmit(struct sk_buff *skb, struct net_device *dev) return NETDEV_TX_OK; } skb = nskb; - pad = ((ulong)skb->data & 0x3) ? (4 - ((ulong)skb->data & 0x3)) : 0; + pad = ((ulong)skb->data & 0x3); } #endif hdr = (struct hgic_frm_hdr2 *)skb_push(skb, sizeof(struct hgic_frm_hdr2) + pad); hdr->hdr.ifidx = vif->fwifidx; - hdr->hdr.length = skb->len; - hdr->hdr.magic = HGIC_HDR_TX_MAGIC; + hdr->hdr.length = cpu_to_le16(skb->len); + hdr->hdr.magic = cpu_to_le16(HGIC_HDR_TX_MAGIC); hdr->hdr.type = HGIC_HDR_TYPE_FRM2; hdr->hdr.flags = pad; - hdr->hdr.cookie = hgicf_data_cookie(vif->hg); skb_queue_tail(&vif->hg->tx_dataq, skb); queue_work(vif->hg->tx_wq, &vif->hg->tx_work); + vif->stats.tx_bytes += skb->len; return NETDEV_TX_OK; } @@ -205,7 +221,7 @@ static int hgicf_netif_change_mac(struct net_device *dev, void *addr) if (!test_bit(HGICF_DEV_FLAGS_RUNNING, &vif->hg->flags)) { return 0; } - ret = hgic_fwctrl_set_mac(&(vif->hg->ctrl), sa->sa_data); + ret = hgic_fwctrl_set_mac(&(vif->hg->ctrl), vif->fwifidx, sa->sa_data); if (!ret) { ret = eth_mac_addr(dev, addr); } @@ -245,6 +261,12 @@ static int hgicf_netif_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) } #endif +static struct net_device_stats *hgicf_netdev_get_stats(struct net_device *ndev) +{ + struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(ndev); + return &vif->stats; +} + static const struct net_device_ops hgicf_netif_ops = { .ndo_open = hgicf_netif_open, .ndo_stop = hgicf_netif_stop, @@ -253,6 +275,7 @@ static const struct net_device_ops hgicf_netif_ops = { .ndo_set_rx_mode = hgicf_netif_set_multicast_list, .ndo_set_mac_address = hgicf_netif_change_mac, .ndo_do_ioctl = hgicf_netif_ioctl, + .ndo_get_stats = hgicf_netdev_get_stats, }; static void hgicf_netif_setup(struct net_device *dev) @@ -275,54 +298,74 @@ static int hgicf_request_txwnd(struct hgic_bus *bus) struct hgic_hdr *hdr = NULL; struct sk_buff *skb = dev_alloc_skb(sizeof(struct hgic_hdr) + 2); - if (skb == NULL) { return -ENOMEM; } + if (skb == NULL) { + return -ENOMEM; + } + hdr = (struct hgic_hdr *)skb->data; - hdr->magic = HGIC_HDR_TX_MAGIC; - hdr->type = HGIC_HDR_TYPE_SOFTFC; - hdr->length = sizeof(struct hgic_hdr) + 2; - hdr->ifidx = 0; - hdr->flags = 0; + hdr->magic = cpu_to_le16(HGIC_HDR_TX_MAGIC); + hdr->length = cpu_to_le16(sizeof(struct hgic_hdr) + 2); hdr->cookie = 0; + hdr->type = HGIC_HDR_TYPE_SOFTFC; + hdr->ifidx = 1; + hdr->flags = 0; skb_put(skb, sizeof(struct hgic_hdr) + 2); return bus->tx_packet(bus, skb); } -static int hgicf_check_txwnd(struct hgicf_wdev *hg) +static int hgicf_check_txwnd(struct hgicf_wdev *hg, u8 min_wnd) { - int err = 0; - if (!hg->soft_fc || test_bit(HGIC_BUS_FLAGS_INBOOT, &hg->bus->flags)) { return 0; } - - while (hg->soft_fc && atomic_read(&hg->txwnd) < TXWND_INIT_VAL && - test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags) && - !test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags) && - !test_bit(HGICF_DEV_FLAGS_SUSPEND, &hg->flags) && - !test_bit(HGIC_BUS_FLAGS_INBOOT, &hg->bus->flags)) { - - err = hgicf_request_txwnd(hg->bus); - if (!err) { - wait_for_completion_timeout(&hg->txwnd_cp, msecs_to_jiffies(100)); - } - - if(atomic_read(&hg->txwnd) < TXWND_INIT_VAL) - msleep(10); + + if(test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags) || + test_bit(HGICF_DEV_FLAGS_SUSPEND, &hg->flags) || + !test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags)){ + return -1; } - if (!hg->soft_fc || test_bit(HGIC_BUS_FLAGS_INBOOT, &hg->bus->flags)) { - return 0; + if(atomic_read(&hg->txwnd) < min_wnd){ + hgicf_request_txwnd(hg->bus); } - if (atomic_read(&hg->txwnd) < TXWND_INIT_VAL) { + if (atomic_read(&hg->txwnd) < min_wnd) { return -1; } else { atomic_dec(&hg->txwnd); } - return 0; } +static void hgicf_tx_complete(void *hgobj, struct sk_buff *skb, int success) +{ + struct hgic_ctrl_hdr *hdr = (struct hgic_ctrl_hdr *)skb->data; + struct hgicf_wdev *hg = (struct hgicf_wdev *)hgobj; + + if (hg->if_test) { + hg->test_tx_len += skb->len; + } + + if (success) { + clear_bit(HGIC_BUS_FLAGS_ERROR, &hg->bus->flags); + } else { + hgic_err("tx failed\r\n"); + + if (hdr->hdr.magic == cpu_to_le16(HGIC_HDR_TX_MAGIC)) { + if ((hdr->hdr.type == HGIC_HDR_TYPE_CMD || hdr->hdr.type == HGIC_HDR_TYPE_CMD2) && HDR_CMDID(hdr) == HGIC_CMD_ENTER_SLEEP) { + clear_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags); + } + } + + hg->status.tx_fail++; + set_bit(HGIC_BUS_FLAGS_ERROR, &hg->bus->flags); + if (test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags)) { + schedule_work(&hg->detect_work); + } + } + dev_kfree_skb_any(skb); +} + static void hgicf_test_work(struct work_struct *work) { int ret = 0; @@ -354,16 +397,21 @@ static void hgicf_test_work(struct work_struct *work) if (skb) { skb_reserve(skb, hg->bus->drv_tx_headroom); frmhdr = (struct hgic_frm_hdr *)skb->data; - frmhdr->hdr.magic = HGIC_HDR_TX_MAGIC; + frmhdr->hdr.magic = cpu_to_le16(HGIC_HDR_TX_MAGIC); + frmhdr->hdr.length = cpu_to_le16(1500); + frmhdr->hdr.cookie = cpu_to_le16(hgicf_data_cookie(hg)); frmhdr->hdr.type = (hg->if_test == 1 ? HGIC_HDR_TYPE_TEST : HGIC_HDR_TYPE_TEST2); - frmhdr->hdr.length = 1500; frmhdr->hdr.ifidx = 0; - frmhdr->hdr.cookie = hgicf_data_cookie(hg); - if(hg->if_test == 3) memset(skb->data+8, 0xAA, 1500-8); + + if (hg->if_test == 3) { + memset(skb->data + 8, 0xAA, 1500 - 8); + } + skb_put(skb, 1500); - while (test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags) && hgicf_check_txwnd(hg)) { + while (test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags) && hgicf_check_txwnd(hg, TXWND_INIT_VAL)) { msleep(10); } + ret = hg->bus->tx_packet(hg->bus, skb); if (ret) { msleep(10); @@ -372,69 +420,144 @@ static void hgicf_test_work(struct work_struct *work) msleep(10); } } - printk("if test stop!\r\n"); + hgic_dbg("if test stop!\r\n"); +} + +static void hgicf_tx_single_frm(struct hgicf_wdev *hg, struct sk_buff *skb) +{ + struct hgic_frm_hdr2 *hdr = NULL; + hg->status.tx_data++; + hdr = (struct hgic_frm_hdr2 *)skb->data; + hdr->hdr.cookie = cpu_to_le16(hgicf_data_cookie(hg)); + hg->bus->tx_packet(hg->bus, skb); +} + +static void hgicf_tx_agg_frm(struct hgicf_wdev *hg, struct sk_buff *skb) +{ + struct sk_buff *agg_skb; + struct hgic_frm_hdr2 *hdr = NULL; + struct hgic_hdr *agghdr = NULL; + int cpylen = 0; + + agg_skb = dev_alloc_skb(hg->bus->drv_tx_headroom + if_agg); + if (agg_skb) { + agghdr = (struct hgic_hdr *)agg_skb->data; + memset(agghdr, 0, sizeof(struct hgic_hdr)); + agghdr->magic = cpu_to_le16(HGIC_HDR_TX_MAGIC); + agghdr->type = HGIC_HDR_TYPE_AGGFRM; + agghdr->length = sizeof(struct hgic_hdr); + agghdr->cookie = cpu_to_le16(hgicf_data_cookie(hg)); + + do { + hdr = (struct hgic_frm_hdr2 *)skb->data; + cpylen = hdr->hdr.length; + if (agghdr->length + ALIGN(cpylen, 4) > if_agg) { + skb_queue_head(&hg->tx_dataq, skb); + break; + } + + hdr->hdr.length = ALIGN(cpylen, 4); + + hdr->hdr.cookie = cpu_to_le16(hgicf_data_cookie(hg)); + memcpy(agg_skb->data + agghdr->length, skb->data, cpylen); + agghdr->length += hdr->hdr.length; + hgicf_tx_complete(hg, skb, 1); + + skb = skb_dequeue(&hg->tx_dataq); + } while (skb); + + if (agghdr->length > sizeof(struct hgic_hdr)) { + hg->status.tx_data++; + skb_put(agg_skb, agghdr->length); + hg->bus->tx_packet(hg->bus, agg_skb); + } else { + hgic_err("invalid agg frm, cookie:%d\r\n", agghdr->cookie); + dev_kfree_skb(agg_skb); + } + } else { + hgicf_tx_single_frm(hg, skb); + } +} + +static void hgicf_tx_ctrl_frm(struct hgicf_wdev *hg) +{ + int err = 0; + struct hgic_ctrl_hdr *hdr = NULL; + struct sk_buff *skb = skb_dequeue(&hg->ctrl.txq); + if (skb) { + hdr = (struct hgic_ctrl_hdr *)skb->data; + switch (hdr->hdr.type) { + case HGIC_HDR_TYPE_BOOTDL: + break; + case HGIC_HDR_TYPE_BOOTDL_DATA: + skb_pull(skb, sizeof(struct hgic_bootdl_cmd_hdr)); + break; + default: + if (test_bit(HGIC_BUS_FLAGS_INBOOT, &hg->bus->flags)) { + kfree_skb(skb); + skb = NULL; + } + break; + } + } + + if (skb) { + hg->status.tx_ctrl++; + err = hg->bus->tx_packet(hg->bus, skb); + if (!err && (hdr->hdr.type == HGIC_HDR_TYPE_CMD || hdr->hdr.type == HGIC_HDR_TYPE_CMD2)) { + if (HDR_CMDID(hdr) == HGIC_CMD_ENTER_SLEEP) { + set_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags); + } + } + } } static void hgicf_tx_work(struct work_struct *work) { - struct sk_buff *skb = NULL; + struct sk_buff *skb; struct hgicf_wdev *hg = container_of(work, struct hgicf_wdev, tx_work); - struct hgic_hdr *hdr = NULL; //hgic_dbg("Enter\n"); _CTRLQ_TX: while (!skb_queue_empty(&hg->ctrl.txq)) { if (test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags) || - !test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags)) { + !test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags)) { hgic_clear_queue(&hg->ctrl.txq); goto _CTRLQ_TX; } - - if (hgicf_check_txwnd(hg)) { +#if 0 + if (hgicf_check_txwnd(hg, 1)) { msleep(10); continue; } - - skb = skb_dequeue(&hg->ctrl.txq); - if(skb){ - hdr = (struct hgic_hdr *)skb->data; - switch(hdr->type){ - case HGIC_HDR_TYPE_BOOTDL: - break; - case HGIC_HDR_TYPE_BOOTDL_DATA: - skb_pull(skb, sizeof(struct hgic_bootdl_cmd_hdr)); - break; - default: - if(test_bit(HGIC_BUS_FLAGS_INBOOT, &hg->bus->flags)){ - kfree_skb(skb); - skb = NULL; - } - break; - } - } - - if(skb){ - hg->bus->tx_packet(hg->bus, skb); - } +#endif + hgicf_tx_ctrl_frm(hg); } - while (!skb_queue_empty(&hg->tx_dataq) && - test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags) && + while (!skb_queue_empty(&hg->tx_dataq) && hg->fw_state == STATE_FW && + test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags) && !test_bit(HGICF_DEV_FLAGS_SUSPEND, &hg->flags)) { - - if (test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags) || + + if (test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags) || test_bit(HGIC_BUS_FLAGS_INBOOT, &hg->bus->flags)) { hgic_clear_queue(&hg->tx_dataq); goto _CTRLQ_TX; } - if (hgicf_check_txwnd(hg)) { + if (hgicf_check_txwnd(hg, TXWND_INIT_VAL)) { msleep(10); goto _CTRLQ_TX; } skb = skb_dequeue(&hg->tx_dataq); - hg->bus->tx_packet(hg->bus, skb); + if (skb) { + if (!skb_queue_empty(&hg->tx_dataq) && if_agg) { + hgicf_tx_agg_frm(hg, skb); + } else { + hgicf_tx_single_frm(hg, skb); + } + } + if (!skb_queue_empty(&hg->ctrl.txq)) { goto _CTRLQ_TX; } @@ -454,65 +577,114 @@ static struct hgicf_vif *hgicf_create_iface(struct hgicf_wdev *hg) hgic_err("%s: alloc_netdev_mqs failed\n", __func__); return NULL; } + vif = (struct hgicf_vif *)netdev_priv(ndev); vif->ndev = ndev; vif->hg = hg; - vif->state = 0; - ndev->needed_headroom += (hg->bus->drv_tx_headroom + sizeof(struct hgic_frm_hdr2)); - -#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)) + vif->opened = 0; + ndev->needed_headroom += (hg->bus->drv_tx_headroom + sizeof(struct hgic_frm_hdr2) + 4); memcpy(ndev->dev_addr, hg->fwinfo.mac, ETH_ALEN); -#else - eth_hw_addr_set(ndev, hg->fwinfo.mac); -#endif + ret = register_netdev(ndev); if (ret) { free_netdev(ndev); return NULL; } -#ifndef __RTOS__ - rtnl_lock(); - DEV_OPEN(ndev); - rtnl_unlock(); -#endif return vif; } -static int hgicf_rx_data(void *hgobj, struct sk_buff *skb, int len) +static void hgicf_rx_single_frm(struct hgicf_wdev *hg, u8 *data, int len) +{ + struct sk_buff *skb; + struct hgic_hdr *hdr = (struct hgic_hdr *)data; + + if (hg->vif && len > sizeof(struct hgic_frm_hdr2)) { + hg->rx_cookie = hdr->cookie; + hg->vif->stats.rx_bytes += len; + data += sizeof(struct hgic_frm_hdr2); + len -= (sizeof(struct hgic_frm_hdr2) + hdr->flags); + skb = dev_alloc_skb(len + hg->vif->ndev->needed_headroom + hg->vif->ndev->needed_tailroom); + if (skb) { + skb_reserve(skb, hg->vif->ndev->needed_headroom); + memcpy(skb->data, data, len); + skb_put(skb, len); + skb->dev = hg->vif->ndev; + skb->protocol = eth_type_trans(skb, skb->dev); + if (in_interrupt()) { + netif_rx(skb); + } else { + netif_rx_ni(skb); + } + } else { + hg->vif->stats.rx_dropped += len; + hgic_err("alloc skb fail, len=%d\r\n", len); + } + } +} + +static void hgicf_rx_agg_frm(struct hgicf_wdev *hg, u8 *data, int len) +{ + struct hgic_hdr *hdr = (struct hgic_hdr *)data; + + if ((u16)(hg->rx_cookie + 1) != hdr->cookie) { + hgic_err("cookie:%d-%d\r\n", hg->rx_cookie, hdr->cookie); + } + hg->rx_cookie = hdr->cookie; + + data += sizeof(struct hgic_hdr); + len -= sizeof(struct hgic_hdr); + while (len > sizeof(struct hgic_frm_hdr2)) { + hdr = (struct hgic_hdr *)data; + hdr->magic = le16_to_cpu(hdr->magic); + hdr->length = le16_to_cpu(hdr->length); + hdr->cookie = le16_to_cpu(hdr->cookie); + if (hdr->magic == HGIC_HDR_RX_MAGIC && hdr->type == HGIC_HDR_TYPE_FRM2 && len >= hdr->length) { + hgicf_rx_single_frm(hg, data, hdr->length); + data += hdr->length; + len -= hdr->length; + } else { + break; + } + } +} + +static int hgicf_rx_data(void *hgobj, u8 *data, int len) { int i = 0; struct hgic_frm_hdr2 *hdr = NULL; struct hgicf_wdev *hg = hgobj; - hgic_skip_padding(skb); - hdr = (struct hgic_frm_hdr2 *) skb->data; - skb->dev = MATCH_NDEV(hdr->hdr.ifidx, hg); + i = hgic_skip_padding(data); + data += i; len -= i; + hdr = (struct hgic_frm_hdr2 *)data; + hdr->hdr.magic = le16_to_cpu(hdr->hdr.magic); + hdr->hdr.length = le16_to_cpu(hdr->hdr.length); + hdr->hdr.cookie = le16_to_cpu(hdr->hdr.cookie); + if (hdr->hdr.magic != HGIC_HDR_RX_MAGIC) { hgic_err("invalid magic unmber:%x\r\n", hdr->hdr.magic); - hgic_print_hex(skb->data, 16); - dev_kfree_skb_any(skb); + hgic_print_hex(data, 16); return -1; } - if (hdr->hdr.type != HGIC_HDR_TYPE_BOOTDL) { - if (len < hdr->hdr.length) { - hgic_err("invalid data length: %x/%x,cookie:%d\r\n", len, hdr->hdr.length, hdr->hdr.cookie); - dev_kfree_skb_any(skb); - return -1; - } + if (len < hdr->hdr.length && hdr->hdr.type != HGIC_HDR_TYPE_BOOTDL) { + hgic_err("invalid data length: %x/%x,cookie:%d\r\n", len, hdr->hdr.length, hdr->hdr.cookie); + return -1; } - skb_put(skb, len > hdr->hdr.length ? hdr->hdr.length : len); + len = (len < hdr->hdr.length ? len : hdr->hdr.length); switch (hdr->hdr.type) { case HGIC_HDR_TYPE_FRM2: + case HGIC_HDR_TYPE_AGGFRM: hg->last_rx = jiffies; - if (skb->dev == NULL || hg->if_test) { - dev_kfree_skb_any(skb); + if (hg->vif == NULL || hg->if_test) { break; } - skb_pull(skb, sizeof(struct hgic_frm_hdr2)); - skb->protocol = eth_type_trans(skb, skb->dev); - netif_rx(skb); + if (hdr->hdr.type == HGIC_HDR_TYPE_AGGFRM) { + hgicf_rx_agg_frm(hg, data, len); + } else { + hgicf_rx_single_frm(hg, data, len); + } break; case HGIC_HDR_TYPE_CMD: case HGIC_HDR_TYPE_CMD2: @@ -521,51 +693,34 @@ static int hgicf_rx_data(void *hgobj, struct sk_buff *skb, int len) case HGIC_HDR_TYPE_OTA: case HGIC_HDR_TYPE_BOOTDL: if (hg->if_test) { - dev_kfree_skb_any(skb); break; } - hgic_fwctrl_rx(&hg->ctrl, skb); + hgic_fwctrl_rx(&hg->ctrl, data, len); break; case HGIC_HDR_TYPE_TEST2: hg->last_rx = jiffies; hg->test_rx_len += len; if (hg->if_test == 3) { for (i = 8; i < 1500; i++) { - if (skb->data[i] != 0xAA) { - printk("data verify fail\r\n"); + if (data[i] != 0xAA) { + hgic_err("data verify fail\r\n"); break; } } } - dev_kfree_skb(skb); break; case HGIC_HDR_TYPE_SOFTFC: hg->last_rx = jiffies; atomic_set(&hg->txwnd, hdr->hdr.cookie); complete(&hg->txwnd_cp); - dev_kfree_skb_any(skb); break; default: hgic_err("invalid data:%d\r\n", hdr->hdr.type); - dev_kfree_skb_any(skb); break; } return 0; } -static void hgicf_tx_complete(void *hgobj, struct sk_buff *skb, int success) -{ - struct hgicf_wdev *hg = hgobj; - - if (hg->if_test) { - hg->test_tx_len += skb->len; - } - dev_kfree_skb_any(skb); - if (!success) { - hgic_err("tx failed\r\n"); - } -} - static int hgicf_download_fw(struct hgicf_wdev *hg) { int err = -1; @@ -573,7 +728,9 @@ static int hgicf_download_fw(struct hgicf_wdev *hg) int status = -1; hgic_dbg("Enter\n"); - if (no_bootdl || qc_mode) { status = STATE_FW; } + if (no_bootdl || qc_mode) { + status = STATE_FW; + } set_bit(HGIC_BUS_FLAGS_INBOOT, &hg->bus->flags); while (status != STATE_FW && retry-- > 0 && err) { @@ -581,6 +738,9 @@ static int hgicf_download_fw(struct hgicf_wdev *hg) if (status == STATE_BOOT) { err = hgic_bootdl_download(&hg->bootdl, fw_file); } + if (status < 0 || err) { + msleep(10); + } } clear_bit(HGIC_BUS_FLAGS_INBOOT, &hg->bus->flags); @@ -597,128 +757,160 @@ static int hgicf_download_fw(struct hgicf_wdev *hg) } } - if(!no_bootdl && hg->bus->reinit){ - mod_timer(&hg->alive_tmr, jiffies + msecs_to_jiffies(HGIC_ALIVE_TIMER*4)); + if (!no_bootdl && hg->bus->reinit && test_bit(HGIC_BUS_FLAGS_NOPOLL, &hg->bus->flags)) { + mod_timer(&hg->detect_tmr, jiffies + msecs_to_jiffies(HGIC_DETECT_TIMER * 4)); } + hg->fw_state = status; return (status == STATE_FW); } static void hgicf_delay_init(struct work_struct *work) { int ret = 0; - u8 retry = 0; - int conn_stat = 0; - struct hgicf_wdev *hg = container_of(work, struct hgicf_wdev, delay_init); + struct hgicf_wdev *hg = container_of(work, struct hgicf_wdev, delay_init); - hgic_dbg("Enter\n"); - while(!test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags) && test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags)){ - if((retry & 0xf) == 0){ - ret = hgicf_download_fw(hg); - if(ret) break; - } - msleep(10); - retry++; - } + ret = hgicf_download_fw(hg); + clear_bit(HGICF_DEV_FLAGS_SUSPEND, &hg->flags); if (ret) { - clear_bit(HGICF_DEV_FLAGS_SUSPEND, &hg->flags); hg->last_rx = jiffies; - hg->soft_fc = soft_fc; - conn_stat = hgic_fwctrl_get_conn_state(&hg->ctrl); -#ifndef __RTOS__ - hgic_fwctrl_get_dhcpc_result(&hg->ctrl, (u8 *)&hg->dhcpc, sizeof(hg->dhcpc)); -#endif - hgic_fwctrl_get_fwinfo(&hg->ctrl, &hg->fwinfo); - printk("hgic fw info:%d.%d.%d.%d, svn version:%d, %pM, conn_state:%d\r\n", + hgic_fwctrl_get_fwinfo(&hg->ctrl, HGIC_WDEV_ID_STA, &hg->fwinfo); + printk("hgic fw info:%d.%d.%d.%d, svn version:%d, %pM, smt_dat:%u\r\n", (hg->fwinfo.version >> 24) & 0xff, (hg->fwinfo.version >> 16) & 0xff, (hg->fwinfo.version >> 8) & 0xff, (hg->fwinfo.version & 0xff), - hg->fwinfo.svn_version, hg->fwinfo.mac, conn_stat); + hg->fwinfo.svn_version, hg->fwinfo.mac, hg->fwinfo.smt_dat); + + hg->soft_fc = (hg->fwinfo.version < 0x2000000); + hg->ctrl.fwinfo = &hg->fwinfo; + if (hg->soft_fc) { + set_bit(HGIC_BUS_FLAGS_SOFTFC, &hg->bus->flags); + } else { + clear_bit(HGIC_BUS_FLAGS_SOFTFC, &hg->bus->flags); + } if (!test_bit(HGICF_DEV_FLAGS_INITED, &hg->flags)) { - hg->sta = hgicf_create_iface(hg); - if (!hg->sta) { + hg->vif = hgicf_create_iface(hg); + if (!hg->vif) { hgic_err("create iface fail, ret:%d\r\n", ret); return; } - hg->sta->fwifidx = HGIC_WDEV_ID_STA; - hg->sta->hw_state = conn_stat; + + hg->vif->fwifidx = HGIC_WDEV_ID_STA; hgicf_create_procfs(hg); + +#ifdef __RTOS__ if (init_cb) { init_cb(0); } +#endif + if (if_test) { hg->if_test = if_test; queue_work(hg->tx_wq, &hg->test_work); } set_bit(HGICF_DEV_FLAGS_INITED, &hg->flags); } - if ((test_bit(HGICF_DEV_FLAGS_BOOTDL, &hg->flags) || conn_stat != HGICF_HW_CONNECTED) && !qc_mode) { + + if (!qc_mode) { hgicf_load_config(hg); } } - hgic_dbg("Leave, ret=%d\n", ret); + hgic_dbg("Leave, ret=%d, soft_fc=%d\n", ret, hg->soft_fc); } -static void hgicf_alive_work(struct work_struct *work) +static void hgicf_detect_work(struct work_struct *work) { int retry = 4; int status = -1; - struct hgicf_wdev *hg = container_of(work, struct hgicf_wdev, alive_work); - - //hgic_dbg("SLEEP:%d\r\n", test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags)); - if(!test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags)){ - if(time_after(jiffies, hg->last_rx + msecs_to_jiffies(HGIC_ALIVE_TIMER))){ - //hgic_dbg("detect device status ...\r\n"); - while(retry-- > 0 && status != STATE_FW){ + struct hgicf_wdev *hg = container_of(work, struct hgicf_wdev, detect_work); + + hg->status.detect_tmr++; + if (!test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags) && test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags)) { + if (test_bit(HGICF_DEV_FLAGS_SUSPEND, &hg->flags) || + test_bit(HGIC_BUS_FLAGS_ERROR, &hg->bus->flags) || + time_after(jiffies, hg->last_rx + msecs_to_jiffies(HGIC_DETECT_TIMER))) { + while (retry-- > 0 && status != STATE_FW) { status = hgic_bootdl_cmd_enter(&hg->bootdl); } - if (status != STATE_FW) { + + if (status != STATE_FW || hg->fw_state != STATE_FW) { hgic_dbg("need reload firmware ...\r\n"); - hg->soft_fc = 0; - set_bit(HGICF_DEV_FLAGS_SUSPEND, &hg->flags); hgic_clear_queue(&hg->ctrl.txq); hgic_clear_queue(&hg->tx_dataq); - hg->bus->reinit(hg->bus); - schedule_work(&hg->delay_init); + if (hg->bus->reinit) { + hg->bus->reinit(hg->bus); + } + if (test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags)) { + hg->soft_fc = 0; + hg->fw_state = -1; + set_bit(HGICF_DEV_FLAGS_SUSPEND, &hg->flags); + schedule_work(&hg->delay_init); + } } } } - //hgic_dbg("next detect after %d sec.\r\n", HGIC_ALIVE_TIMER); - mod_timer(&hg->alive_tmr, jiffies + msecs_to_jiffies(HGIC_ALIVE_TIMER)); + if (test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags)) { + mod_timer(&hg->detect_tmr, jiffies + msecs_to_jiffies(HGIC_DETECT_TIMER)); + } } -#ifdef __RTOS__ -static void hgicf_alive_timer(unsigned long arg) +#if !defined(__RTOS__) && LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) +static void hgicf_detect_timer(struct timer_list *t) { - struct hgicf_wdev *hg = (struct hgicf_wdev *) arg; - schedule_work(&hg->alive_work); + struct hgicf_wdev *hg = from_timer(hg, t, detect_tmr); + if (test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags)) { + schedule_work(&hg->detect_work); + } } #else -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) -static void hgicf_alive_timer(struct timer_list *t) -{ - struct hgicf_wdev *hg = from_timer(hg, t, alive_tmr); - schedule_work(&hg->alive_work); -} -#else -static void hgicf_alive_timer(unsigned long arg) +static void hgicf_detect_timer(unsigned long arg) { struct hgicf_wdev *hg = (struct hgicf_wdev *) arg; - schedule_work(&hg->alive_work); + if (test_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags)) { + schedule_work(&hg->detect_work); + } } #endif -#endif -void hgic_schedule(struct hgic_fwctrl *ctrl) +static void hgicf_schedule(struct hgic_fwctrl *ctrl) { struct hgicf_wdev *hg = container_of(ctrl, struct hgicf_wdev, ctrl); queue_work(hg->tx_wq, &hg->tx_work); } -void hgic_rx_fw_event(struct hgic_fwctrl *ctrl, struct sk_buff *skb) +static void hgicf_probe_post(void *priv) { - struct hgicf_wdev *hg = container_of(ctrl, struct hgicf_wdev, ctrl); - hgicf_rx_fw_event(hg, skb); + struct hgicf_wdev *hg = (struct hgicf_wdev *)priv; + schedule_work(&hg->delay_init); } -int hgic_core_remove(void *hgobj) +#ifdef CONFIG_PM +static int hgicf_core_suspend(void *hgobj) +{ + int err = 0; + struct hgicf_wdev *hg = (struct hgicf_wdev *)hgobj; + if (!test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags)) { + err = hgic_fwctrl_enter_sleep(&hg->ctrl, HGIC_WDEV_ID_STA, 1, 0xffffffff); + } + return err; +} + +static int hgicf_core_resume(void *hgobj) +{ + int err = 0; + struct hgicf_wdev *hg = (struct hgicf_wdev *)hgobj; + + clear_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags); + if (hg->bus->reinit) { + hg->bus->reinit(hg->bus); + } + + err = hgic_fwctrl_enter_sleep(&hg->ctrl, HGIC_WDEV_ID_STA, 0, 0); + if (err) { + hgic_err("exit sleep fail, ret=%d\r\n", err); + } + return err; +} +#endif + +static void hgicf_core_remove(void *hgobj) { struct hgicf_wdev *hg = hgobj; @@ -726,69 +918,65 @@ int hgic_core_remove(void *hgobj) hgic_dbg("Enter\n"); clear_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags); - del_timer_sync(&hg->alive_tmr); - cancel_work_sync(&hg->alive_work); - cancel_work_sync(&hg->delay_init); hgic_dbg(" trace ...\r\n"); - if (hg->ap) { - netif_stop_queue(hg->ap->ndev); - } - if (hg->sta) { - netif_stop_queue(hg->sta->ndev); + cancel_work_sync(&hg->detect_work); + hgic_dbg(" trace ...\r\n"); + del_timer_sync(&hg->detect_tmr); + hgic_dbg(" trace ...\r\n"); + cancel_work_sync(&hg->detect_work); + hgic_dbg(" trace ...\r\n"); + cancel_work_sync(&hg->delay_init); + if (hg->vif) { + netif_stop_queue(hg->vif->ndev); } + hgic_dbg(" trace ...\r\n"); + //while (!test_bit(HGICF_DEV_FLAGS_STOP, &hg->flags)); + cancel_work_sync(&hg->tx_work); + hgic_dbg(" trace ...\r\n"); + cancel_work_sync(&hg->test_work); + hgic_dbg(" trace ...\r\n"); hgicf_delete_procfs(hg); + hgic_dbg(" trace ...\r\n"); hgic_fwctrl_release(&hg->ctrl); hgic_dbg(" trace ...\r\n"); hgic_ota_release(&hg->ota); hgic_dbg(" trace ...\r\n"); hgic_bootdl_release(&hg->bootdl, 0); - hgic_dbg(" trace ...\r\n"); - //while (!test_bit(HGICF_DEV_FLAGS_STOP, &hg->flags)); - cancel_work_sync(&hg->tx_work); - hgic_dbg(" trace ...\r\n"); - cancel_work_sync(&hg->test_work); - hgic_dbg(" trace ... %p\r\n", hg->ap); - if (hg->ap) { - unregister_netdev(hg->ap->ndev); - } - hgic_dbg(" trace ... %p\r\n", hg->sta); - if (hg->sta) { - unregister_netdev(hg->sta->ndev); - } - hgic_dbg(" trace ...\r\n"); - hgic_clear_queue(&hg->tx_dataq); - hgic_dbg(" trace ...\r\n"); -#ifdef __RTOS__ - skb_queue_head_deinit(&hg->tx_dataq); -#else - hgic_clear_queue(&hg->custmgmt_q); - hgic_clear_queue(&hg->dbginfo_q); - hgic_clear_queue(&hg->cust_driverdata_q); -#endif hgic_dbg(" trace ...\r\n"); if (hg->tx_wq) { flush_workqueue(hg->tx_wq); destroy_workqueue(hg->tx_wq); } + hgic_dbg(" trace ... %p\r\n", hg->vif); + if (hg->vif) { + unregister_netdev(hg->vif->ndev); + } + hgic_dbg(" trace ...\r\n"); + + hgic_clear_queue(&hg->tx_dataq); hgic_dbg(" trace ...\r\n"); #ifdef __RTOS__ + skb_queue_head_deinit(&hg->tx_dataq); deinit_completion(&hg->txwnd_cp); spin_lock_deinit(&hg->lock); +#else + hgic_clear_queue(&hg->evt_list); #endif - if(hg->paired_stas) - kfree(hg->paired_stas); kfree(hg); hgic_dbg("Leave\n"); } - return 0; } -EXPORT_SYMBOL(hgic_core_remove); -int hgic_core_probe(void *dev, struct hgic_bus *bus) +static int hgicf_core_probe(void *dev, struct hgic_bus *bus) { struct hgicf_wdev *hg = NULL; - hgic_dbg("Enter,qc_mode=%d, no_bootdl=%d\n", qc_mode, no_bootdl); + if (!hgicf_match_devid(bus->dev_id)) { + hgic_err("FMAC driver not support device %x\n", bus->dev_id); + return -1; + } + + hgic_dbg("qc_mode=%d, no_bootdl=%d, if_agg=%d, txq_size=%d\n", qc_mode, no_bootdl, if_agg, txq_size); hg = kzalloc(sizeof(struct hgicf_wdev), GFP_KERNEL); if (hg) { memset(hg, 0, sizeof(struct hgicf_wdev)); @@ -796,82 +984,52 @@ int hgic_core_probe(void *dev, struct hgic_bus *bus) hg->bus = bus; hg->dev = dev; hg->dev_id = bus->dev_id; - hgic_fwctrl_init(&hg->ctrl, dev); + hg->proc_dev = proc_dev; + hg->fw_state = -1; + hgic_fwctrl_init(&hg->ctrl, dev, bus); + hg->ctrl.schedule = hgicf_schedule; + hg->ctrl.rx_event = hgicf_rx_fw_event; hgic_ota_init(&hg->ota, &hg->ctrl, &hg->fwinfo); spin_lock_init(&hg->lock); INIT_WORK(&hg->tx_work, hgicf_tx_work); INIT_WORK(&hg->delay_init, hgicf_delay_init); - INIT_WORK(&hg->alive_work, hgicf_alive_work); + INIT_WORK(&hg->detect_work, hgicf_detect_work); INIT_WORK(&hg->test_work, hgicf_test_work); - init_timer(&hg->alive_tmr); - setup_timer(&hg->alive_tmr, hgicf_alive_timer, (unsigned long)hg); + init_timer(&hg->detect_tmr); + setup_timer(&hg->detect_tmr, hgicf_detect_timer, (unsigned long)hg); skb_queue_head_init(&hg->tx_dataq); init_completion(&hg->txwnd_cp); hgic_bootdl_init(&hg->bootdl, hg->bus, &hg->ctrl); #ifndef __RTOS__ - skb_queue_head_init(&hg->custmgmt_q); - skb_queue_head_init(&hg->dbginfo_q); - skb_queue_head_init(&hg->cust_driverdata_q); - sema_init(&hg->evtq.sema, 0); + skb_queue_head_init(&hg->evt_list); + sema_init(&hg->evt_sema, 0); #endif + atomic_set(&hg->txwnd, TXWND_INIT_VAL); - bus->rx_packet = hgicf_rx_data; - bus->tx_complete = hgicf_tx_complete; - bus->bus_priv = hg; hg->tx_wq = ALLOC_ORDERED_WORKQUEUE("hgicf_tx", 4096); if (!hg->tx_wq) { goto __failed; } + set_bit(HGICF_DEV_FLAGS_RUNNING, &hg->flags); + bus->tx_complete = hgicf_tx_complete; + bus->rx_packet = hgicf_rx_data; + bus->probe_post = hgicf_probe_post; + bus->remove = hgicf_core_remove; +#ifdef CONFIG_PM + bus->suspend = hgicf_core_suspend; + bus->resume = hgicf_core_resume; +#endif + bus->bus_priv = hg; hgic_dbg("ok\n"); return 0; } __failed: - bus->rx_packet = NULL; - bus->tx_complete = NULL; - bus->bus_priv = NULL; - hgic_core_remove(hg); + hgicf_core_remove(hg); hgic_dbg("fail\n"); return -1; } -EXPORT_SYMBOL(hgic_core_probe); - -#ifdef CONFIG_PM -int hgic_core_suspend(void *hgobj) -{ - int err = 0; - struct hgicf_wdev *hg = (struct hgicf_wdev *)hgobj; - err = hgic_fwctrl_enter_sleep(&hg->ctrl, 1); - set_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags); - return err; -} -EXPORT_SYMBOL(hgic_core_suspend); - -int hgic_core_resume(void *hgobj) -{ - int err = 0; - struct hgicf_wdev *hg = (struct hgicf_wdev *)hgobj; - clear_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags); - if (hg->bus->reinit) { - hg->bus->reinit(hg->bus); - } - err = hgic_fwctrl_enter_sleep(&hg->ctrl, 0); - if(err) { - hgic_err("exit sleep fail, ret=%d\r\n", err); - } - schedule_work(&hg->alive_work); - return err; -} -EXPORT_SYMBOL(hgic_core_resume); -#endif - -void hgic_core_probe_post(void *priv) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)priv; - schedule_work(&hg->delay_init); -} -EXPORT_SYMBOL(hgic_core_probe_post); #ifdef __RTOS__ int hgic_ifbus_reinit(const char *ifname) @@ -901,59 +1059,58 @@ struct hgic_ota *hgic_devota(struct net_device *dev) int __init hgicf_init(void) { VERSOIN_SHOW("fmac"); + #ifdef __RTOS__ rcu_init(); tasklet_core_init(); net_device_init(); -#else -#ifdef CONFIG_HGIC_USBIN - hgic_usb_init(); #endif -#ifdef CONFIG_HGIC_SDIOIN - hgic_sdio_init(); + +#ifdef CONFIG_HGIC_USB + hgic_usb_init(hgicf_core_probe, if_agg); #endif +#ifdef CONFIG_HGIC_SDIO + hgic_sdio_init(hgicf_core_probe, if_agg); #endif + hgic_leave(); return 0; } void __exit hgicf_exit(void) { -#ifndef __RTOS__ -#ifdef CONFIG_HGIC_USBIN +#ifdef CONFIG_HGIC_USB hgic_usb_exit(); #endif -#ifdef CONFIG_HGIC_SDIOIN +#ifdef CONFIG_HGIC_SDIO hgic_sdio_exit(); #endif -#endif - #ifdef __RTOS__ net_device_exit(); tasklet_core_exit(); #endif } +#ifdef __RTOS__ const char *hgic_param_ifname(const char *name) { - if (name) ifname = (char *)name; + if (name) { + ifname = (char *)name; + } return ifname; } -#ifdef __RTOS__ + void hgic_param_iftest(int iftest) { if_test = iftest; } char *hgic_param_fwfile(const char *fw) { - if (fw) fw_file = fw; + if (fw) { + fw_file = fw; + } return fw_file; } -int hgic_param_ifcount(int count) -{ - if (count) iface_cnt = count; - return iface_cnt; -} void hgic_param_initcb(hgic_init_cb cb) { init_cb = cb; @@ -966,29 +1123,27 @@ void hgic_param_bootdl(int enable) { no_bootdl = !enable; } -#endif void hgicf_event(struct hgicf_wdev *hg, char *name, int event, int param1, int param2) { -#ifdef __RTOS__ - if(event_cb) + if (event_cb) { event_cb(name, event, param1, param2); -#else - FWEVTQ_SET(&hg->evtq, event); - up(&hg->evtq.sema); -#endif + } } +#endif module_init(hgicf_init); module_exit(hgicf_exit); module_param(txq_size, int, 0); module_param(fw_file, charp, 0644); module_param(if_test, int, 0); -module_param(soft_fc, int, 0); module_param(ifname, charp, 0644); -module_param(conf_file, charp, 0644); module_param(no_bootdl, int, 0); module_param(qc_mode, int, 0); +module_param(if_agg, int, 0); +module_param(conf_file, charp, 0644); +module_param(proc_dev, int, 0); + MODULE_DESCRIPTION("HUGE-IC FullMAC Wireless Card Driver"); MODULE_AUTHOR("Dongyun"); MODULE_LICENSE("GPL"); diff --git a/hgic_fmac/ctrl.c b/hgic_fmac/ctrl.c index 5fcd57a..6ba0897 100644 --- a/hgic_fmac/ctrl.c +++ b/hgic_fmac/ctrl.c @@ -8,7 +8,6 @@ #include "hgicf.h" #include "ctrl.h" -#include "cfg.h" #include "event.h" /* cmd id, Odd : get (world access), even : set (root access) */ @@ -20,14 +19,48 @@ #define HG_PRIV_IOCTL_SAVE (SIOCIWFIRSTPRIV + 0x06) struct iw_priv_args hgicf_privtab[] = { - {HG_PRIV_IOCTL_SET , IW_PRIV_TYPE_CHAR | 1536, 0, "set"}, - {HG_PRIV_IOCTL_GET , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, "get"}, + {HG_PRIV_IOCTL_SET, IW_PRIV_TYPE_CHAR | 1536, 0, "set"}, + {HG_PRIV_IOCTL_GET, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, "get"}, {HG_PRIV_IOCTL_SCAN, IW_PRIV_TYPE_CHAR | 1536, 0, "scan"}, - {HG_PRIV_IOCTL_E2P , IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, "e2p"}, + {HG_PRIV_IOCTL_E2P, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024, "e2p"}, {HG_PRIV_IOCTL_STAT, 0, IW_PRIV_TYPE_CHAR | 1024, "stat"}, {HG_PRIV_IOCTL_SAVE, IW_PRIV_TYPE_CHAR | 1024, 0, "save"}, }; +int hgicf_ioctl_set_proc(struct net_device *dev, struct iwreq *wrqin) +{ + struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); + return hgic_iwpriv_set_proc(&(vif->hg->ctrl), vif->fwifidx, wrqin); +} + +int hgicf_ioctl_get_proc(struct net_device *dev, struct iwreq *wrqin) +{ + struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); + return hgic_iwpriv_get_proc(&(vif->hg->ctrl), vif->fwifidx, wrqin); +} + +int hgicf_ioctl_stat(struct net_device *dev, struct iwreq *wrqin) +{ + return 0; +} + +int hgicf_ioctl_e2p(struct net_device *dev, struct iwreq *wrqin) +{ + return 0; +} + +int hgicf_ioctl_savecfg(struct net_device *dev, struct iwreq *wrqin) +{ + struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); + return hgic_fwctrl_save_cfg(&(vif->hg->ctrl), vif->fwifidx); +} + +int hgicf_ioctl_scan(struct net_device *dev, struct iwreq *wrqin) +{ + struct hgicf_vif *vif = (struct hgicf_vif *)netdev_priv(dev); + return hgic_fwctrl_scan(&(vif->hg->ctrl), vif->fwifidx); +} + int hgicf_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) { int ret = 0; diff --git a/hgic_fmac/ctrl.h b/hgic_fmac/ctrl.h index 593cfe5..3b7b006 100644 --- a/hgic_fmac/ctrl.h +++ b/hgic_fmac/ctrl.h @@ -6,6 +6,14 @@ int hgicf_ioctl(struct net_device *dev, u32 cmd, u32 param1, u32 param2); #else int hgicf_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); -#endif +int hgicf_ioctl_set_proc(struct net_device *dev, struct iwreq *wrqin); +int hgicf_ioctl_get_proc(struct net_device *dev, struct iwreq *wrqin); +int hgicf_ioctl_stat(struct net_device *dev, struct iwreq *wrqin); +int hgicf_ioctl_e2p(struct net_device *dev, struct iwreq *wrqin); +int hgicf_ioctl_savecfg(struct net_device *dev, struct iwreq *wrqin); +int hgicf_ioctl_scan(struct net_device *dev, struct iwreq *wrqin); +#endif + + #endif diff --git a/hgic_fmac/event.c b/hgic_fmac/event.c index 63ba73d..9181c89 100644 --- a/hgic_fmac/event.c +++ b/hgic_fmac/event.c @@ -21,176 +21,54 @@ #endif #include "hgicf.h" -#include "../utils/fwctrl.h" -#include "cfg.h" #include "event.h" -char *hgicf_hw_state(int state) -{ - switch (state) { - case HGICF_HW_DISCONNECTED: - return "Disconnect"; - case HGICF_HW_DISABLED: - return "DISABLED"; - case HGICF_HW_INACTIVE: - return "INACTIVE"; - case HGICF_HW_SCANNING: - return "SCANNING"; - case HGICF_HW_AUTHENTICATING: - return "AUTHENTICATING"; - case HGICF_HW_ASSOCIATING: - return "ASSOCIATING"; - case HGICF_HW_ASSOCIATED: - return "ASSOCIATED"; - case HGICF_HW_4WAY_HANDSHAKE: - return "4WAY_HANDSHAKE"; - case HGICF_HW_GROUP_HANDSHAKE: - return "GROUP_HANDSHAKE"; - case HGICF_HW_CONNECTED: - return "CONNECTED"; - default: - return "Unknown"; - } -} +#define HGIC_EVENT_MAX (16) -int hgicf_rx_fw_event(struct hgicf_wdev *hg, struct sk_buff *skb) +void hgicf_rx_fw_event(struct hgic_fwctrl *ctrl, struct sk_buff *skb) { - char drop = 1; + char drop = 0; char *data = NULL; + u32 data_len; u32 evt_id = 0; struct hgic_ctrl_hdr *evt = NULL; - struct hgicf_vif *vif = NULL; + struct hgicf_wdev *hg = container_of(ctrl, struct hgicf_wdev, ctrl); - if (skb == NULL || skb->dev == NULL || skb->len < sizeof(struct hgic_ctrl_hdr)) { + if (skb == NULL || skb->len < sizeof(struct hgic_ctrl_hdr)) { dev_kfree_skb(skb); - return -1; + return; } - vif = (struct hgicf_vif *)netdev_priv(skb->dev); evt = (struct hgic_ctrl_hdr *)skb->data; - skb_pull(skb, sizeof(struct hgic_ctrl_hdr)); - data = skb->data; + data = (char *)(evt + 1); + data_len = skb->len - sizeof(struct hgic_ctrl_hdr); evt_id = HDR_EVTID(evt); //hgic_dbg("event id:%d\r\n", evt->event.event_id); switch (evt_id) { - case HGIC_EVENT_STATE_CHG: - vif->hw_state = data[0]; - switch (vif->hw_state) { - case HGICF_HW_CONNECTED: - memcpy(vif->hw_bssid, data + 1, ETH_ALEN); - break; - default: - break; - } - break; - case HGIC_EVENT_DISCONNECT_REASON: - memcpy(&vif->disconnect_reason, data, sizeof(int)); - break; - case HGIC_EVENT_ASSOC_STATUS: - memcpy(&vif->assoc_status_code, data, sizeof(int)); - break; - case HGIC_EVENT_SCANNING: - hgicf_event(hg, skb->dev->name, HGIC_EVENT_SCANNING, 0, 0); - break; - case HGIC_EVENT_SCAN_DONE: - hgicf_event(hg, skb->dev->name, HGIC_EVENT_SCAN_DONE, 0, 0); - break; - case HGIC_EVENT_TX_BITRATE: - hg->status.tx_bitrate = get_unaligned_le32((u8 *)(evt + 1)); - hgicf_event(hg, skb->dev->name, HGIC_EVENT_TX_BITRATE, hg->status.tx_bitrate, 0); - break; - case HGIC_EVENT_PAIR_START: - hg->status.pair_state = 0; - memset(hg->pairing_sta, 0, 6); - hgicf_event(hg, skb->dev->name, HGIC_EVENT_PAIR_START, 0, 0); - break; - case HGIC_EVENT_PAIR_SUCCESS: - hg->status.pair_state = 1; - if(skb->len >= 6) memcpy(hg->pairing_sta, data, 6); - hgicf_event(hg, skb->dev->name, HGIC_EVENT_PAIR_SUCCESS, (long)hg->pairing_sta, 0); - break; - case HGIC_EVENT_PAIR_DONE: - hg->paired_stas_cnt = (evt->hdr.length - sizeof(struct hgic_ctrl_hdr)) / 6; - if (hg->paired_stas) { - kfree(hg->paired_stas); - } - hg->paired_stas = kzalloc(evt->hdr.length, GFP_KERNEL); - if (hg->paired_stas) { - memcpy(hg->paired_stas, data, hg->paired_stas_cnt * 6); - } - hgicf_event(hg, skb->dev->name, HGIC_EVENT_PAIR_DONE, (long)hg->paired_stas, (long)hg->paired_stas_cnt); - break; - case HGIC_EVENT_CONECT_START: - vif->hw_state = HGICF_HW_ASSOCIATING; - hgicf_event(hg, skb->dev->name, HGIC_EVENT_CONECT_START, 0, 0); - break; - case HGIC_EVENT_CONECTED: - vif->hw_state = HGICF_HW_CONNECTED; - hgicf_event(hg, skb->dev->name, HGIC_EVENT_CONECTED, (long)skb->data, skb->len); - break; - case HGIC_EVENT_DISCONECTED: - vif->hw_state = HGICF_HW_DISCONNECTED; - hgicf_event(hg, skb->dev->name, HGIC_EVENT_DISCONECTED, (long)skb->data, skb->len); - break; - case HGIC_EVENT_SIGNAL: - hg->status.signal = (s8)data[0]; - hg->status.evm = (s8)data[1]; - hgicf_event(hg, skb->dev->name, HGIC_EVENT_SIGNAL, hg->status.signal, hg->status.evm); - break; case HGIC_EVENT_FWDBG_INFO: - hgicf_event(hg, skb->dev->name, HGIC_EVENT_FWDBG_INFO, (long)skb->data, skb->len); -#ifndef __RTOS__ - printk("%s", skb->data); - if (skb_queue_len(&hg->dbginfo_q) > 4) { - kfree_skb(skb_dequeue(&hg->dbginfo_q)); - } - skb_queue_tail(&hg->dbginfo_q, skb); - drop = 0; -#endif - break; - case HGIC_EVENT_REQUEST_PARAM: - schedule_work(&hg->ctrl.flush_work); - break; - case HGIC_EVENT_CUSTOMER_MGMT: - hgic_dbg("rx mgmt from %pM, %d bytes\r\n", data, skb->len - 6); - hgicf_event(hg, skb->dev->name, HGIC_EVENT_CUSTOMER_MGMT, (long)skb->data, skb->len); -#ifndef __RTOS__ - if (skb_queue_len(&hg->custmgmt_q) > 16) { - kfree_skb(skb_dequeue(&hg->custmgmt_q)); - } - skb_queue_tail(&hg->custmgmt_q, skb); - drop = 0; -#endif - break; - case HGIC_EVENT_CUST_DRIVER_DATA: - hgicf_event(hg, skb->dev->name, HGIC_EVENT_CUST_DRIVER_DATA, (long)skb->data, skb->len); -#ifndef __RTOS__ - if (skb_queue_len(&hg->cust_driverdata_q) > 16) { - kfree_skb(skb_dequeue(&hg->cust_driverdata_q)); - } - skb_queue_tail(&hg->cust_driverdata_q, skb); - drop = 0; -#endif - break; - case HGIC_EVENT_DHCPC_DONE: -#ifndef __RTOS__ - memcpy(&hg->dhcpc, skb->data, sizeof(hg->dhcpc)); -#endif - hgicf_event(hg, skb->dev->name, HGIC_EVENT_DHCPC_DONE, (long)skb->data, skb->len); - break; - case HGIC_EVENT_CONNECT_FAIL: - hg->status.conntect_fail = data[0]; - hgicf_event(hg, skb->dev->name, HGIC_EVENT_CONNECT_FAIL, data[0], 0); - break; - case HGIC_EVENT_UNPAIR_STA: - hgic_dbg("unpair sta: %pM\r\n", data); - hgicf_event(hg, skb->dev->name, HGIC_EVENT_UNPAIR_STA, data, 0); + drop = 1; + printk(data); break; default: break; } - if (drop) { dev_kfree_skb(skb); } - return 0; + +#ifdef __RTOS__ + hgicf_event(hg, hg->vif->ndev->name, evt_id, data, data_len); + dev_kfree_skb(skb); +#else + if (!drop) { + if (skb_queue_len(&hg->evt_list) > HGIC_EVENT_MAX) { + kfree_skb(skb_dequeue(&hg->evt_list)); + hgic_err("event list is full (max %d), drop old event\r\n", HGIC_EVENT_MAX); + } + skb_queue_tail(&hg->evt_list, skb); + up(&hg->evt_sema); + } else { + dev_kfree_skb(skb); + } +#endif + } diff --git a/hgic_fmac/event.h b/hgic_fmac/event.h index 48e6f9c..9005668 100644 --- a/hgic_fmac/event.h +++ b/hgic_fmac/event.h @@ -2,7 +2,7 @@ #ifndef _HGICF_EVENT_H_ #define _HGICF_EVENT_H_ -int hgicf_rx_fw_event(struct hgicf_wdev *hg, struct sk_buff *skb); +void hgicf_rx_fw_event(struct hgic_fwctrl *ctrl, struct sk_buff *skb); void hgicf_event(struct hgicf_wdev *hg, char *name, int event, int param1, int param2); #endif diff --git a/hgic_fmac/hgicf.h b/hgic_fmac/hgicf.h index 8e23784..24cdfe0 100644 --- a/hgic_fmac/hgicf.h +++ b/hgic_fmac/hgicf.h @@ -12,8 +12,9 @@ #include "../utils/utils.h" #include "../utils/fwdl.h" #include "../utils/fwctrl.h" -#include "procfs.h" +#include "../utils/iwpriv.h" #include "../utils/ota.h" +#include "procfs.h" #define FWEVNTQ_SIZE (128) enum hgicf_dev_flags { @@ -32,31 +33,14 @@ enum hgicf_state { HGICF_STATE_QUEUE_STOPPED, }; -enum hgicf_hw_state { - HGICF_HW_DISCONNECTED, - HGICF_HW_DISABLED, - HGICF_HW_INACTIVE, - HGICF_HW_SCANNING, - HGICF_HW_AUTHENTICATING, - HGICF_HW_ASSOCIATING, - HGICF_HW_ASSOCIATED, - HGICF_HW_4WAY_HANDSHAKE, - HGICF_HW_GROUP_HANDSHAKE, - HGICF_HW_CONNECTED, -}; - struct hgicf_wdev; struct hgicf_vif { u8 fwifidx; - unsigned long state; + u32 opened; struct net_device *ndev; struct hgicf_wdev *hg; - int hw_state; - char hw_ssid[32]; - char hw_bssid[ETH_ALEN]; - int disconnect_reason; - int assoc_status_code; + struct net_device_stats stats; }; struct hgicf_status { @@ -65,6 +49,10 @@ struct hgicf_status { s8 evm; s8 pair_state; u8 conntect_fail; + u32 detect_tmr; + u32 tx_ctrl; + u32 tx_data; + u32 tx_fail; }; struct hgicf_wdev { @@ -74,22 +62,22 @@ struct hgicf_wdev { u16 data_cookie; u16 ctrl_cookie; u16 rx_cookie; + u8 fw_state; spinlock_t lock; + char *conf_file; struct hgic_fw_info fwinfo; struct hgic_bus *bus; - struct hgicf_vif *ap; - struct hgicf_vif *sta; + struct hgicf_vif *vif; struct sk_buff_head tx_dataq; struct work_struct tx_work; struct work_struct delay_init; /*delay init work*/ - struct work_struct alive_work; + struct work_struct detect_work; struct workqueue_struct *tx_wq; - struct delayed_work status_work; /*status print work*/ struct hgic_fwctrl ctrl; struct hgic_bootdl bootdl; struct hgicf_procfs proc; struct hgicf_status status; - struct timer_list alive_tmr; + struct timer_list detect_tmr; unsigned long last_rx; /*if test*/ struct work_struct test_work; @@ -97,27 +85,15 @@ struct hgicf_wdev { u32 test_jiff, if_test; /*soft fc*/ int soft_fc; + int proc_dev; atomic_t txwnd; struct completion txwnd_cp; -#ifndef __RTOS__ - struct sk_buff_head custmgmt_q; - struct sk_buff_head dbginfo_q; - struct sk_buff_head cust_driverdata_q; -#endif struct hgic_ota ota; - u8 pairing_sta[6]; - u8 *paired_stas; - u32 paired_stas_cnt; u8 radio_off; + #ifndef __RTOS__ - struct { - u8 buf[FWEVNTQ_SIZE]; - u8 wpos, rpos; - struct semaphore sema; - }evtq; - struct { - u32 ipaddr, netmask, svrip, router, dns1, dns2; - }dhcpc; + struct sk_buff_head evt_list; + struct semaphore evt_sema; #endif }; @@ -127,30 +103,5 @@ struct hgicf_hw_status { } __packed; extern void hgic_print_hex(char *buf, int len); -extern char *hgicf_hw_state(int state); -u16 hgicf_data_cookie(struct hgicf_wdev *hg); -#ifndef __RTOS__ -#define FWEVTQ_NPOS(evtq,pos) ((((evtq)->pos)+1 >= FWEVNTQ_SIZE) ? (0) : (((evtq)->pos)+1)) -#define FWEVTQ_EMPTY(evtq) ((evtq)->wpos == (evtq)->rpos) -#define FWEVTQ_FULL(evtq) (FWEVTQ_NPOS(evtq, wpos) == (evtq)->rpos) -#define FWEVTQ_COUNT(evtq) (((evtq)->rpos <= (evtq)->wpos)?\ - ((evtq)->wpos - (evtq)->rpos):\ - (FWEVNTQ_SIZE-(evtq)->rpos + (evtq)->wpos)) - -#define FWEVTQ_GET(evtq, val) do{\ - if(!FWEVTQ_EMPTY(evtq)){\ - val = (evtq)->buf[(evtq)->rpos];\ - (evtq)->rpos = FWEVTQ_NPOS((evtq), rpos);\ - }\ - } while(0) - -#define FWEVTQ_SET(evtq, val) do{\ - if(FWEVTQ_FULL(evtq)){\ - (evtq)->rpos = FWEVTQ_NPOS((evtq), rpos);\ - }\ - (evtq)->buf[(evtq)->wpos] = val;\ - (evtq)->wpos = FWEVTQ_NPOS((evtq), wpos);\ - } while (0) -#endif #endif diff --git a/hgic_fmac/procfs.c b/hgic_fmac/procfs.c index a4bd22c..9e37301 100644 --- a/hgic_fmac/procfs.c +++ b/hgic_fmac/procfs.c @@ -3,129 +3,43 @@ #include #include #include +#include #include "hgicf.h" -#include "cfg.h" +#include "ctrl.h" -#if LINUX_VERSION_CODE > KERNEL_VERSION(5, 16, 0) -#define PDE_DATA(inode) pde_data(inode) -#endif - -static int hgicf_signal_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "%d\r\n", hg->status.signal); - return 0; -} -static int hgicf_signal_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_signal_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_signal = { - .proc_open = hgicf_signal_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// - -static int hgicf_evm_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "%d\r\n", hg->status.evm); - return 0; -} -static int hgicf_evm_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_evm_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_evm = { - .proc_open = hgicf_evm_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_conn_state_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - if (hg->sta) { - hg->sta->hw_state = hgic_fwctrl_get_conn_state(&hg->ctrl); - seq_printf(seq, "%s\r\n", hgicf_hw_state(hg->sta->hw_state)); - } else { - seq_printf(seq, "CONNECTED\r\n"); - } - return 0; -} -static int hgicf_conn_state_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_conn_state_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_conn_state = { - .proc_open = hgicf_conn_state_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// - - -static int hgicf_txrate_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "%d\r\n", hg->status.tx_bitrate); - return 0; -} -static int hgicf_txrate_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_txrate_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_txrate = { - .proc_open = hgicf_txrate_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_testmode_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "%s\r\n", hg->proc.testmode_buf); - return 0; -} -static int hgicf_testmode_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_testmode_show, PDE_DATA(inode)); -} -static ssize_t hgicf_testmode_send_cmd(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - - memset(hg->proc.testmode_buf, 0, HGIC_TESTMODE_BUFF_SIZE); - ret = copy_from_user(hg->proc.testmode_buf, buffer, count); - hgic_fwctrl_testmode_cmd(&hg->ctrl, hg->proc.testmode_buf, HGIC_TESTMODE_BUFF_SIZE); - return ret ? -EINVAL : count; -} -static const struct proc_ops hgicf_pops_testmode = { - .proc_open = hgicf_testmode_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_testmode_send_cmd, - .proc_release = single_release, -}; -//////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////////// static int hgicf_status_show(struct seq_file *seq, void *v) { struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "fw info:%d.%d.%d.%d, svn version:%d, bootdl:%d\r\n", + + seq_printf(seq, "fw info:%d.%d.%d.%d, svn version:%d\r\n", (hg->fwinfo.version >> 24) & 0xff, (hg->fwinfo.version >> 16) & 0xff, (hg->fwinfo.version >> 8) & 0xff, (hg->fwinfo.version & 0xff), - hg->fwinfo.svn_version, test_bit(HGICF_DEV_FLAGS_BOOTDL, &hg->flags)); + hg->fwinfo.svn_version); + seq_printf(seq, "hgicf status:\r\n"); + seq_printf(seq, " RADIO:%d, FW_STATE:%d, SOFT_FC:%d, TXWND:%d\r\n", hg->ctrl.radio_onoff, hg->fw_state, hg->soft_fc, atomic_read(&hg->txwnd)); + seq_printf(seq, " FLAGS:%lx, BUS FLAGS:%lx, ALIVE_TMR:%d, TX_CTRL:%d, TX_DATA:%d, TX_FAIL:%d\r\n", + hg->flags, hg->bus->flags, hg->status.detect_tmr, hg->status.tx_ctrl, hg->status.tx_data, hg->status.tx_fail); + if (hg->ctrl.rxq.qlen) { + seq_printf(seq, " ctrl_rxq: %d\r\n", hg->ctrl.rxq.qlen); + } + if (hg->ctrl.txq.qlen) { + seq_printf(seq, " ctrl_txq: %d\r\n", hg->ctrl.txq.qlen); + } + if (hg->tx_dataq.qlen) { + seq_printf(seq, " tx_dataq : %d\r\n", hg->tx_dataq.qlen); + } + if (hg->evt_list.qlen) { + seq_printf(seq, " evt_list : %d\r\n", hg->evt_list.qlen); + } + if (hg->vif) { + seq_printf(seq, " tx_bytes: %lu, rx_bytes: %lu, tx_dropped: %lu\r\n", + hg->vif->stats.tx_bytes, hg->vif->stats.rx_bytes, hg->vif->stats.tx_dropped); + } return 0; } + static int hgicf_status_open(struct inode *inode, struct file *file) { return single_open(file, hgicf_status_show, PDE_DATA(inode)); @@ -136,16 +50,10 @@ static const struct proc_ops hgicf_pops_status = { .proc_lseek = seq_lseek, .proc_release = single_release, }; -/////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_ota_show(struct seq_file *seq, void *v) -{ - seq_printf(seq, "Enter OTA,SDK Version:20200402\r\n"); - return 0; -} static int hgicf_ota_open(struct inode *inode, struct file *file) { - return single_open(file, hgicf_ota_show, PDE_DATA(inode)); + return single_open(file, NULL, PDE_DATA(inode)); } static ssize_t hgicf_ota_send_data(struct file *file, const char __user *buffer, @@ -153,7 +61,6 @@ static ssize_t hgicf_ota_send_data(struct file *file, const char __user *buffer, { ssize_t ret = -1; char *fw_path = NULL; - char *ptr = NULL; struct seq_file *seq = (struct seq_file *)file->private_data; struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; @@ -174,99 +81,27 @@ static ssize_t hgicf_ota_send_data(struct file *file, const char __user *buffer, return -EFAULT; } - ptr = &fw_path[count - 1]; - while (*ptr == '\r' || *ptr == '\n') { *ptr-- = 0; } - + hgic_strip_tail(fw_path, count); hgic_dbg("ota firmware: %s\r\n", fw_path); ret = hgic_ota_send_fw(&hg->ota, fw_path, HG_OTA_WRITE_MEM_TMO); kfree(fw_path); return (ret ? -EIO : count); } static const struct proc_ops hgicf_pops_ota = { - .proc_open = hgicf_ota_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_ota_send_data, + .proc_open = hgicf_ota_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_write = hgicf_ota_send_data, .proc_release = single_release, }; -/////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_temperature_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - int temp = hgic_fwctrl_get_temperature(&hg->ctrl); - if (temp < 0) { temp = 0; } - seq_printf(seq, "%d\r\n", temp); - return 0; -} -static int hgicf_temperature_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_temperature_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_temperature = { - .proc_open = hgicf_temperature_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_sleep_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "%d\r\n", test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags)); - return 0; -} -static int hgicf_sleep_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_sleep_show, PDE_DATA(inode)); -} - -static ssize_t hgicf_enter_sleep(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int err = 0; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - u8 str[2] = {0, 0}; - int sleep = 0; - - err = copy_from_user(str, buffer, 1); - sleep = simple_strtol(str, 0, 10); - hgic_dbg("enter sleep :%d ...\r\n", sleep); - if (sleep) { - if(!test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags)){ - err = hgic_fwctrl_enter_sleep(&hg->ctrl, 1); - if (!err) { - set_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags); - }else{ - hgic_err("sleep fail, ret=%d\r\n", err); - } - } - } else { - if(test_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags)){ - clear_bit(HGIC_BUS_FLAGS_SLEEP, &hg->bus->flags); - if (hg->bus->reinit) { - hg->bus->reinit(hg->bus); - } - err = hgic_fwctrl_enter_sleep(&hg->ctrl, 0); - if(err) hgic_err("exit sleep fail, ret=%d\r\n", err); - } - } - return count; -} -static const struct proc_ops hgicf_pops_sleep = { - .proc_open = hgicf_sleep_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_enter_sleep, - .proc_release = single_release, -}; /////////////////////////////////////////////////////////////////////////////////////////// static int hgicf_iwpriv_show(struct seq_file *seq, void *v) { struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "%s\r\n", hg->proc.iwpriv_buf); - memset(hg->proc.iwpriv_buf, 0, sizeof(hg->proc.iwpriv_buf)); + if (hg->proc.iwpriv_result > 0) { + seq_write(seq, hg->proc.iwpriv_buf, hg->proc.iwpriv_result); + } return 0; } @@ -279,800 +114,182 @@ static ssize_t hgicf_iwpriv_write(struct file *file, const char __user *buffer, size_t count, loff_t *data) { int ret = 0; - int i = 0; + struct iwreq wrqin; + char *buf, *ifname, *cmd, *args; struct seq_file *seq = (struct seq_file *)file->private_data; struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - char *cmd_buf = kzalloc(count + 1, GFP_KERNEL); - char *ifname, *cmd, *args; - struct iwreq wrqin; - struct net_device *ndev = NULL; + struct hgicf_vif *vif = hg->vif; - if (count <= 0) { return -1; } - memset(hg->proc.iwpriv_buf, 0, sizeof(hg->proc.iwpriv_buf)); - if (cmd_buf) { - i = count - 1; - ret = copy_from_user(cmd_buf, buffer, count); - while (i >= 0 && (cmd_buf[i] == '\r' || cmd_buf[i] == '\n')) { - cmd_buf[i--] = 0; + if (count <= 0) { + return -1; + } + + buf = kzalloc(count + 32, GFP_KERNEL); + if (buf) { + ret = copy_from_user(buf, buffer, count); + if (ret) { + hgic_err("copy_from_user err: %d\r\n", ret); + kfree(buf); + return -EINVAL; } - ifname = cmd_buf; + ifname = buf; cmd = strchr(ifname, ' '); if (cmd == NULL) { - sprintf(hg->proc.iwpriv_buf, "invalid paramters:%s", cmd_buf); - goto __out; + wrqin.u.data.pointer = buf; + wrqin.u.data.length = count; + ret = hgic_iwpriv_dump(&hg->ctrl, &wrqin); + if (ret) { + if (copy_to_user((void *)(buffer + 4), (const void *)buf, ret <= count ? ret : count)) { + kfree(buf); + hgic_err("copy_to_user fail\r\n"); + return -EINVAL; + } + } + + if (copy_to_user((void *)buffer, (const void *)&ret, 4)) { + kfree(buf); + hgic_err("copy_to_user fail\r\n"); + return -EINVAL; + } + + hgic_err("**Empty CMD**\r\n"); + kfree(buf); + return count; } + *cmd++ = 0; args = strchr(cmd, ' '); - if (args) { *args++ = 0; } - - //hgic_dbg("ifname:%s, cmd:%s, args:%s\r\n", ifname, cmd, args); - if (hg->sta && strcmp(hg->sta->ndev->name, ifname) == 0) { - ndev = hg->sta->ndev; - } else if (hg->ap && strcmp(hg->ap->ndev->name, ifname) == 0) { - ndev = hg->ap->ndev; - } else { - strcpy(hg->proc.iwpriv_buf, "no such device"); - goto __out; + if (args) { + *args++ = 0; } + memset(&wrqin, 0, sizeof(wrqin)); + wrqin.u.data.pointer = args; + wrqin.u.data.length = args ? count - (args - buf) : 0; if (strcasecmp(cmd, "set") == 0) { - wrqin.u.data.pointer = args; - wrqin.u.data.length = args ? strlen(args) : 0; - ret = hgicf_ioctl_set_proc(ndev, &wrqin); - if (ret) { - sprintf(hg->proc.iwpriv_buf, "%s error:%d", args, ret); - } else { - sprintf(hg->proc.iwpriv_buf, "%s OK", args); + ret = hgic_iwpriv_set_proc(&hg->ctrl, vif->fwifidx, &wrqin); + } else if (strcasecmp(cmd, "get") == 0) { + ret = hgic_iwpriv_get_proc(&hg->ctrl, vif->fwifidx, &wrqin); + if (ret == 0 && wrqin.u.data.length) { + ret = wrqin.u.data.length; + if (copy_to_user((void *)(buffer + 4), (const void *)args, ret <= count ? ret : count)) { + kfree(buf); + hgic_err("copy_to_user fail\r\n"); + return -EINVAL; + } } - } else if (strcasecmp(cmd, "get") == 0 && args) { - wrqin.u.data.pointer = hg->proc.iwpriv_buf; - wrqin.u.data.length = strlen(args); - strcpy(hg->proc.iwpriv_buf, args); - ret = hgicf_ioctl_get_proc(ndev, &wrqin); } else if (strcasecmp(cmd, "scan") == 0) { - wrqin.u.data.pointer = hg->proc.iwpriv_buf; - ret = hgicf_ioctl_scan(ndev, &wrqin); - strcpy(hg->proc.iwpriv_buf, ret ? "Fail" : "OK"); + ret = hgic_fwctrl_scan(&hg->ctrl, vif->fwifidx); } else if (strcasecmp(cmd, "save") == 0) { - ret = hgicf_ioctl_savecfg(ndev, &wrqin); - strcpy(hg->proc.iwpriv_buf, ret ? "Fail" : "OK"); - } else if (strcasecmp(cmd, "stat") == 0) { - wrqin.u.data.pointer = hg->proc.iwpriv_buf; - ret = hgicf_ioctl_stat(ndev, &wrqin); - } else if (strcasecmp(cmd, "e2p") == 0) { - strcpy(hg->proc.iwpriv_buf, "not support now"); + ret = hgic_fwctrl_save_cfg(&hg->ctrl, vif->fwifidx); +#if 0 + } else if (strcasecmp(cmd, "open") == 0) { + if(vif->opened == 0){ + ret = vif->ndev->netdev_ops->ndo_open(vif->ndev); + DEV_OPEN(vif->ndev); + }else{ + ret = 0; + } + } else if (strcasecmp(cmd, "close") == 0) { + if(vif->opened == 1){ + ret = vif->ndev->netdev_ops->ndo_stop(vif->ndev); + DEV_CLOSE(vif->ndev); + }else{ + ret = 0; + } +#endif } else { - strcpy(hg->proc.iwpriv_buf, "invalid parameters"); + kfree(buf); + hgic_err("invalid cmd: [%s]\r\n", cmd); + return -EINVAL; } - } else { - strcpy(hg->proc.iwpriv_buf, "no memory"); - } -__out: - if (cmd_buf) { - kfree(cmd_buf); - } - return ret ? -EINVAL : count; -} -static const struct proc_ops hgicf_pops_iwpriv = { - .proc_open = hgicf_iwpriv_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_iwpriv_write, - .proc_release = single_release, -}; -/////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_paired_stas_show(struct seq_file *seq, void *v) -{ - int i = 0; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - if (hg->paired_stas && hg->paired_stas_cnt) { - for (i = 0; i < hg->paired_stas_cnt; i++) { - seq_printf(seq, "%pM", hg->paired_stas + i * 6); + if (copy_to_user((void *)buffer, &ret, 4)) { + kfree(buf); + hgic_err("copy_to_user fail\r\n"); + return -EINVAL; } - } - return 0; -} -static int hgicf_paired_stas_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_paired_stas_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_paired_stas = { - .proc_open = hgicf_paired_stas_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_radio_off_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "Radio %s\r\n", hg->radio_off ? "OFF" : "ON"); - return 0; -} -static int hgicf_radio_off_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_radio_off_show, PDE_DATA(inode)); -} -static ssize_t hgicf_radio_off_config(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - u8 str[2] = {0, 0}; - ret = copy_from_user(str, buffer, 1); - if(ret) - return -EINVAL; - - hg->radio_off = simple_strtol(str, 0, 10); - hgic_dbg("radio %s \r\n", hg->radio_off ? "OFF" : "ON"); - if (hg->radio_off) { - hgic_fwctrl_close_dev(&hg->ctrl); - } else { - hgic_fwctrl_open_dev(&hg->ctrl); - } - return count; -} -static const struct proc_ops hgicf_pops_radio_off = { - .proc_open = hgicf_radio_off_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_radio_off_config, - .proc_release = single_release, -}; -/////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_sta_count_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "%d\r\n", hgic_fwctrl_get_sta_count(&hg->ctrl)); - return 0; -} -static int hgicf_sta_count_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_sta_count_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_sta_count = { - .proc_open = hgicf_sta_count_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_ps_heartbeat_open(struct inode *inode, struct file *file) -{ - return single_open(file, NULL, PDE_DATA(inode)); -} -static ssize_t hgicf_ps_heartbeat_set(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - u8 str[32]; - u32 ip[4] = {0}; - u32 port = 0; - u32 ipaddr = 0; - u32 period = 0; - u32 hb_tmo = 300; - - memset(str, 0, sizeof(str)); - ret = copy_from_user(str, buffer, count > 32 ? 32 : count); - if(ret) - return -EINVAL; - - sscanf(str, "%d.%d.%d.%d,%d,%d,%d", &ip[0], &ip[1], &ip[2], &ip[3], &port, &period, &hb_tmo); - ipaddr = ((ip[0] & 0xff) << 24) | ((ip[1] & 0xff) << 16) | (((ip[2] & 0xff) << 8)) | (ip[3] & 0xff); - hgic_fwctrl_set_ps_heartbeat(&hg->ctrl, ipaddr, port, period, hb_tmo); - return count; -} -static const struct proc_ops hgicf_pops_ps_heartbeat = { - .proc_open = hgicf_ps_heartbeat_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_ps_heartbeat_set, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_ps_heartbeat_resp_open(struct inode *inode, struct file *file) -{ - return single_open(file, NULL, PDE_DATA(inode)); -} -static ssize_t hgicf_ps_heartbeat_resp_set(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - u8 *ptr = kzalloc(count, GFP_KERNEL); - if (ptr) { - ret = copy_from_user(ptr, buffer, count); - if(!ret) - ret = hgic_fwctrl_set_ps_heartbeat_resp(&hg->ctrl, ptr, count); - kfree(ptr); - } - return ret ? -EINVAL: count; -} -static const struct proc_ops hgicf_pops_ps_heartbeat_resp = { - .proc_open = hgicf_ps_heartbeat_resp_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_ps_heartbeat_resp_set, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_ps_wakeup_data_open(struct inode *inode, struct file *file) -{ - return single_open(file, NULL, PDE_DATA(inode)); -} -static ssize_t hgicf_ps_wakeup_data_set(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - u8 *ptr = kzalloc(count, GFP_KERNEL); - if (ptr) { - ret = copy_from_user(ptr, buffer, count); - if(!ret){ - ret = hgic_fwctrl_set_ps_wakeup_data(&hg->ctrl, ptr, count); - } - kfree(ptr); - } - return ret ? -EINVAL: count; -} -static const struct proc_ops hgicf_pops_ps_wakeup_data = { - .proc_open = hgicf_ps_wakeup_data_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_ps_wakeup_data_set, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_wakeup_open(struct inode *inode, struct file *file) -{ - return single_open(file, NULL, PDE_DATA(inode)); -} -static ssize_t hgicf_wakeup_sta(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - u8 addr[6]; - u8 addr_str[32]; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - - ret = copy_from_user(addr_str, buffer, count > 32 ? 32 : count); - if(ret) return -EINVAL; - if (!hgic_pick_macaddr(addr_str, addr)) { - memset(addr, 0, 6); - } - ret = hgic_fwctrl_wakeup_sta(&hg->ctrl, addr); - return ret ? -EINVAL : count; -} -static const struct proc_ops hgicf_pops_wakeup = { - .proc_open = hgicf_wakeup_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_wakeup_sta, - .proc_release = single_release, -}; -/////////////////////////////////////////////////////////////////////////////////////////// - -static int hgicf_pair_state_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "%d\r\n", hg->status.pair_state); - return 0; -} -static int hgicf_pair_state_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_pair_state_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_pair_state = { - .proc_open = hgicf_pair_state_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -/////////////////////////////////////////////////////////////////////////////////////////// - -static int hgicf_fw_ver_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "%d.%d.%d.%d-%d\r\n", - (hg->fwinfo.version >> 24) & 0xff, (hg->fwinfo.version >> 16) & 0xff, - (hg->fwinfo.version >> 8) & 0xff, (hg->fwinfo.version & 0xff), - hg->fwinfo.svn_version); - return 0; -} -static int hgicf_fw_ver_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_fw_ver_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_fw_ver = { - .proc_open = hgicf_fw_ver_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -/////////////////////////////////////////////////////////////////////////////////////////// - -static int hgicf_wkreason_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - int reason = hgic_fwctrl_get_wkreason(&hg->ctrl); - seq_printf(seq, "%d\r\n", reason); - return 0; -} -static int hgicf_wkreason_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_wkreason_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_wkreason = { - .proc_open = hgicf_wkreason_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -/////////////////////////////////////////////////////////////////////////////////////////// - -static int hgicf_fwevent_show(struct seq_file *seq, void *v) -{ - u8 event = 0; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - - if(down_timeout(&hg->evtq.sema, msecs_to_jiffies(100))) - return 0; - FWEVTQ_GET(&hg->evtq, event); - seq_printf(seq, "%d\r\n", event); - return 0; -} -static int hgicf_fwevent_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_fwevent_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_fwevent = { - .proc_open = hgicf_fwevent_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_mgmt_open(struct inode *inode, struct file *file) -{ - return single_open(file, NULL, PDE_DATA(inode)); -} -static ssize_t hgicf_send_mgmt(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - u8 *buff; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - - buff = kzalloc(count+1, GFP_KERNEL); - if(buff == NULL) - return -ENOMEM; - ret = copy_from_user(buff, buffer, count); - if(!ret) - ret = hgic_fwctrl_send_cust_mgmt(&hg->ctrl, buff, count); - kfree(buff); - return ret ? -EINVAL : count; -} -static ssize_t hgicf_mgmt_read(struct file *file, char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - struct sk_buff *skb = NULL; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - - if(!skb_queue_empty(&hg->custmgmt_q)){ - skb = skb_dequeue(&hg->custmgmt_q); - if(skb){ - ret = copy_to_user(buffer, skb->data, skb->len); - kfree(skb); - } - } - return ret; -} - -static const struct proc_ops hgicf_pops_mgmt = { - .proc_open = hgicf_mgmt_open, - .proc_read = hgicf_mgmt_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_send_mgmt, - .proc_release = single_release, -}; -/////////////////////////////////////////////////////////////////////////////////////////// - -static int hgicf_battery_level_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - int soc = hgic_fwctrl_get_battery_level(&hg->ctrl); - seq_printf(seq, "%d\r\n", soc); - return 0; -} -static int hgicf_battery_level_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_battery_level_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_battery_level = { - .proc_open = hgicf_battery_level_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -/////////////////////////////////////////////////////////////////////////////////////////// - -static int hgicf_fwdbginfo_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - struct sk_buff *skb = skb_dequeue(&hg->dbginfo_q); - if(skb){ - seq_printf(seq, "%s", skb->data); - } - return 0; -} -static int hgicf_fwdbginfo_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_fwdbginfo_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_fwdbginfo = { - .proc_open = hgicf_fwdbginfo_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; -///////////////////////////////////////////////////////////////////////////////////////////////// - -static int hgicf_pairing_sta_show(struct seq_file *seq, void *v) -{ - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - seq_printf(seq, "%pM", hg->pairing_sta); - return 0; -} -static int hgicf_pairing_sta_open(struct inode *inode, struct file *file) -{ - return single_open(file, hgicf_pairing_sta_show, PDE_DATA(inode)); -} -static const struct proc_ops hgicf_pops_pairing_sta = { - .proc_open = hgicf_pairing_sta_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; - -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_dhcpc_open(struct inode *inode, struct file *file) -{ - return single_open(file, NULL, PDE_DATA(inode)); -} -static ssize_t hgicf_dhcpc_read(struct file *file, char __user *buffer, - size_t count, loff_t *data) -{ - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - return copy_to_user(buffer, &hg->dhcpc, sizeof(hg->dhcpc)); -} -static const struct proc_ops hgicf_pops_dhcpc = { - .proc_open = hgicf_dhcpc_open, - .proc_read = hgicf_dhcpc_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; - -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_wkdata_buff_open(struct inode *inode, struct file *file) -{ - return single_open(file, NULL, PDE_DATA(inode)); -} -static ssize_t hgicf_wkdata_buff_read(struct file *file, char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - u8 *buff = (u8 *)kzalloc(1600, GFP_KERNEL); - - if(buff){ - ret = hgic_fwctrl_get_wkdata_buff(&hg->ctrl, buff, 1600); - if(ret > 0){ - ret = copy_to_user(buffer, buff, ret); - //printk("wkdata buff:%d\r\n", ret); - } - kfree(buff); - return ret; + kfree(buf); + return count; } return -ENOMEM; } -static const struct proc_ops hgicf_pops_wkdata_buff = { - .proc_open = hgicf_wkdata_buff_open, - .proc_read = hgicf_wkdata_buff_read, - .proc_lseek = seq_lseek, +static const struct proc_ops hgicf_pops_iwpriv = { + .proc_open = hgicf_iwpriv_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_write = hgicf_iwpriv_write, .proc_release = single_release, }; -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_ps_wkdata_mask_open(struct inode *inode, struct file *file) +/////////////////////////////////////////////////////////////////////////////////////////// + +static int hgicf_fwevent_open(struct inode *inode, struct file *file) { return single_open(file, NULL, PDE_DATA(inode)); } -static ssize_t hgicf_ps_wkdata_mask_write(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - u16 buff[64]; - u8 len = count>128 ? 128 : count; - ret = copy_from_user((u8 *)buff, buffer, len); - if(!ret){ - ret = hgic_fwctrl_set_wkdata_mask(&hg->ctrl, buff[0], (u8 *)(buff+1), len - 2); - } - return ret ? -EINVAL : count; -} -static const struct proc_ops hgicf_pops_wkdata_mask = { - .proc_open = hgicf_ps_wkdata_mask_open, - .proc_write = hgicf_ps_wkdata_mask_write, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; - -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_cust_driverdata_open(struct inode *inode, struct file *file) -{ - return single_open(file, NULL, PDE_DATA(inode)); -} -static ssize_t hgicf_cust_driverdata_write(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - u8 *buff; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - - if(count > 1500) count = 1500; - buff = kzalloc(count+1, GFP_KERNEL); - if(buff == NULL) - return -ENOMEM; - ret = copy_from_user(buff, buffer, count); - if(!ret) - ret = hgic_fwctrl_set_cust_driver_data(&hg->ctrl, buff, count); - kfree(buff); - return ret ? -EINVAL : count; -} -static ssize_t hgicf_cust_driverdata_read(struct file *file, char __user *buffer, - size_t count, loff_t *data) +static ssize_t hgicf_fwevent_read(struct file *file, char __user *buffer, + size_t count, loff_t *data) { int ret = 0; struct sk_buff *skb = NULL; struct seq_file *seq = (struct seq_file *)file->private_data; struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - if(!skb_queue_empty(&hg->cust_driverdata_q)){ - skb = skb_dequeue(&hg->cust_driverdata_q); - if(skb){ - ret = copy_to_user(buffer, skb->data, skb->len); - kfree(skb); + if (down_timeout(&hg->evt_sema, msecs_to_jiffies(100))) { + return 0; + } + + if (!skb_queue_empty(&hg->evt_list)) { + skb = skb_dequeue(&hg->evt_list); + if (skb) { + if (!copy_to_user(buffer, skb->data, skb->len)) { + ret = skb->len; + } + kfree_skb(skb); } } return ret; } - -static const struct proc_ops hgicf_pops_cust_driverdata = { - .proc_open = hgicf_cust_driverdata_open, - .proc_read = hgicf_cust_driverdata_read, - .proc_lseek = seq_lseek, - .proc_write = hgicf_cust_driverdata_write, +static const struct proc_ops hgicf_pops_fwevent = { + .proc_open = hgicf_fwevent_open, + .proc_read = hgicf_fwevent_read, + .proc_lseek = seq_lseek, .proc_release = single_release, }; -/////////////////////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////////////////////////// -static int hgicf_freqinfo_open(struct inode *inode, struct file *file) -{ - return single_open(file, NULL, PDE_DATA(inode)); -} -static ssize_t hgicf_freqinfo_write(struct file *file, const char __user *buffer, - size_t count, loff_t *data) -{ - int ret = 0; - u8 *buff; - struct seq_file *seq = (struct seq_file *)file->private_data; - struct hgicf_wdev *hg = (struct hgicf_wdev *)seq->private; - - buff = kzalloc(count+1, GFP_KERNEL); - if(buff == NULL) - return -ENOMEM; - ret = copy_from_user(buff, buffer, count); - if(!ret) - ret = hgic_fwctrl_set_freqinfo(&hg->ctrl, buff, count); - kfree(buff); - return ret ? -EINVAL : count; -} - -static const struct proc_ops hgicf_pops_freqinfo = { - .proc_open = hgicf_freqinfo_open, - .proc_lseek = seq_lseek, - .proc_write = hgicf_freqinfo_write, - .proc_release = single_release, -}; -/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////// void hgicf_create_procfs(struct hgicf_wdev *hg) { hgic_dbg("enter\r\n"); - hg->proc.rootdir = proc_mkdir("hgic", NULL); + hg->proc.rootdir = proc_mkdir(hg->proc_dev ? hg->vif->ndev->name : "hgicf", NULL); if (hg->proc.rootdir == NULL) { hgic_err("create proc dir: hgic failed\r\n"); return; } - hg->proc.tx_bitrate = proc_create_data("tx_bitrate", 0x0444, - hg->proc.rootdir, &hgicf_pops_txrate, hg); - if (hg->proc.tx_bitrate == NULL) { - hgic_err("create proc file: tx_bitrate failed\r\n"); - } - - hg->proc.testmode = proc_create_data("testmode", 0x0666, - hg->proc.rootdir, &hgicf_pops_testmode, hg); - if (hg->proc.testmode == NULL) { - hgic_err("create proc file: testmode failed\r\n"); - } - hg->proc.status = proc_create_data("status", 0x0444, hg->proc.rootdir, &hgicf_pops_status, hg); if (hg->proc.status == NULL) { hgic_err("create proc file: status failed\r\n"); } - - hg->proc.signal = proc_create_data("signal", 0x0444, - hg->proc.rootdir, &hgicf_pops_signal, hg); - if (hg->proc.signal == NULL) { - hgic_err("create proc file: signal failed\r\n"); - } - - hg->proc.evm = proc_create_data("evm", 0x0444, - hg->proc.rootdir, &hgicf_pops_evm, hg); - if (hg->proc.evm == NULL) { - hgic_err("create proc file: evm failed\r\n"); - } - - hg->proc.conn_state = proc_create_data("conn_state", 0x0444, - hg->proc.rootdir, &hgicf_pops_conn_state, hg); - if (hg->proc.conn_state == NULL) { - hgic_err("create proc file: conn_state failed\r\n"); - } - - hg->proc.ota = proc_create_data("ota", 0x0666, - hg->proc.rootdir, &hgicf_pops_ota, hg); + hg->proc.ota = proc_create_data("ota", 0x0666, hg->proc.rootdir, &hgicf_pops_ota, hg); if (hg->proc.ota == NULL) { hgic_err("create proc file: testmode failed\r\n"); } - hg->proc.temp = proc_create_data("temperature", 0x0444, - hg->proc.rootdir, &hgicf_pops_temperature, hg); - if (hg->proc.temp == NULL) { - hgic_err("create proc file: temperature failed\r\n"); - } - - hg->proc.sleep = proc_create_data("sleep", 0x0666, - hg->proc.rootdir, &hgicf_pops_sleep, hg); - if (hg->proc.sleep == NULL) { - hgic_err("create proc file: sleep failed\r\n"); - } - - hg->proc.iwpriv = proc_create_data("iwpriv", 0x0666, - hg->proc.rootdir, &hgicf_pops_iwpriv, hg); + hg->proc.iwpriv = proc_create_data("iwpriv", 0x0666, hg->proc.rootdir, &hgicf_pops_iwpriv, hg); if (hg->proc.iwpriv == NULL) { hgic_err("create proc file: iwpriv failed\r\n"); } - hg->proc.paired_stas = proc_create_data("paired_stas", 0x0444, - hg->proc.rootdir, &hgicf_pops_paired_stas, hg); - if (hg->proc.paired_stas == NULL) { - hgic_err("create proc file: paired_stas failed\r\n"); - } - hg->proc.radio_off = proc_create_data("radio_off", 0x0666, - hg->proc.rootdir, &hgicf_pops_radio_off, hg); - if (hg->proc.radio_off == NULL) { - hgic_err("create proc file: radio_off failed\r\n"); - } - hg->proc.sta_count = proc_create_data("sta_count", 0x0444, - hg->proc.rootdir, &hgicf_pops_sta_count, hg); - if (hg->proc.sta_count == NULL) { - hgic_err("create proc file: sta_count failed\r\n"); - } - hg->proc.heartbeat = proc_create_data("heartbeat", 0x0666, - hg->proc.rootdir, &hgicf_pops_ps_heartbeat, hg); - if (hg->proc.heartbeat == NULL) { - hgic_err("create proc file: wakeup failed\r\n"); - } - hg->proc.heartbeat_resp = proc_create_data("heartbeat_resp", 0x0666, - hg->proc.rootdir, &hgicf_pops_ps_heartbeat_resp, hg); - if (hg->proc.heartbeat_resp == NULL) { - hgic_err("create proc file: wakeup failed\r\n"); - } - hg->proc.wakeup_data = proc_create_data("wakeup_data", 0x0666, - hg->proc.rootdir, &hgicf_pops_ps_wakeup_data, hg); - if (hg->proc.wakeup_data == NULL) { - hgic_err("create proc file: wakeup failed\r\n"); - } - hg->proc.wakeup = proc_create_data("wakeup", 0x0666, - hg->proc.rootdir, &hgicf_pops_wakeup, hg); - if (hg->proc.wakeup == NULL) { - hgic_err("create proc file: wakeup failed\r\n"); - } - hg->proc.pair_state = proc_create_data("pair_state", 0x0444, - hg->proc.rootdir, &hgicf_pops_pair_state, hg); - if (hg->proc.pair_state == NULL) { - hgic_err("create proc file: pair_state failed\r\n"); - } - hg->proc.fw_ver = proc_create_data("fw_ver", 0x0444, - hg->proc.rootdir, &hgicf_pops_fw_ver, hg); - if (hg->proc.fw_ver == NULL) { - hgic_err("create proc file: fw_ver failed\r\n"); - } - hg->proc.wkreason = proc_create_data("wkreason", 0x0444, - hg->proc.rootdir, &hgicf_pops_wkreason, hg); - if (hg->proc.wkreason == NULL) { - hgic_err("create proc file: wkreason failed\r\n"); - } - hg->proc.fwevent = proc_create_data("event", 0x0444, - hg->proc.rootdir, &hgicf_pops_fwevent, hg); + hg->proc.fwevent = proc_create_data("fwevnt", 0x0444, hg->proc.rootdir, &hgicf_pops_fwevent, hg); if (hg->proc.fwevent == NULL) { hgic_err("create proc file: event failed\r\n"); } - hg->proc.mgmt = proc_create_data("mgmt", 0x0666, - hg->proc.rootdir, &hgicf_pops_mgmt, hg); - if (hg->proc.mgmt == NULL) { - hgic_err("create proc file: mgmt failed\r\n"); - } - hg->proc.battery_level = proc_create_data("battery_level", 0x0444, - hg->proc.rootdir, &hgicf_pops_battery_level, hg); - if (hg->proc.battery_level == NULL) { - hgic_err("create proc file: battery_soc failed\r\n"); - } - hg->proc.fwdbginfo = proc_create_data("fwdbginfo", 0x0444, - hg->proc.rootdir, &hgicf_pops_fwdbginfo, hg); - if (hg->proc.fwdbginfo == NULL) { - hgic_err("create proc file: fwdbginfo failed\r\n"); - } - hg->proc.pairing_sta = proc_create_data("pairing_sta", 0x0444, - hg->proc.rootdir, &hgicf_pops_pairing_sta, hg); - if (hg->proc.pairing_sta == NULL) { - hgic_err("create proc file: pairing_sta failed\r\n"); - } - hg->proc.dhcpc = proc_create_data("dhcpc", 0x0444, - hg->proc.rootdir, &hgicf_pops_dhcpc, hg); - if (hg->proc.dhcpc == NULL) { - hgic_err("create proc file: dhcpc failed\r\n"); - } - hg->proc.wkdata_buff = proc_create_data("wkdata_buff", 0x0444, - hg->proc.rootdir, &hgicf_pops_wkdata_buff, hg); - if (hg->proc.wkdata_buff == NULL) { - hgic_err("create proc file: wkdata_buff failed\r\n"); - } - hg->proc.wkdata_mask = proc_create_data("wkdata_mask", 0x0666, - hg->proc.rootdir, &hgicf_pops_wkdata_mask, hg); - if (hg->proc.wkdata_mask == NULL) { - hgic_err("create proc file: wkdata_mask failed\r\n"); - } - hg->proc.cust_driverdata = proc_create_data("cust_driverdata", 0x0666, - hg->proc.rootdir, &hgicf_pops_cust_driverdata, hg); - if (hg->proc.cust_driverdata == NULL) { - hgic_err("create proc file: cust_driverdata failed\r\n"); - } - hg->proc.freqinfo = proc_create_data("freqinfo", 0x0444, - hg->proc.rootdir, &hgicf_pops_freqinfo, hg); - if (hg->proc.freqinfo == NULL) { - hgic_err("create proc file: freqinfo failed\r\n"); - } + hgic_dbg("leave\r\n"); } @@ -1080,128 +297,26 @@ void hgicf_delete_procfs(struct hgicf_wdev *hg) { hgic_dbg("enter\r\n"); if (hg->proc.rootdir) { - if (hg->proc.tx_bitrate) { - remove_proc_entry("tx_bitrate", hg->proc.rootdir); - hg->proc.tx_bitrate = NULL; - } - if (hg->proc.testmode) { - remove_proc_entry("testmode", hg->proc.rootdir); - hg->proc.testmode = NULL; - } if (hg->proc.status) { remove_proc_entry("status", hg->proc.rootdir); hg->proc.status = NULL; } - if (hg->proc.signal) { - remove_proc_entry("signal", hg->proc.rootdir); - hg->proc.signal = NULL; - } - if (hg->proc.evm) { - remove_proc_entry("evm", hg->proc.rootdir); - hg->proc.evm = NULL; - } - if (hg->proc.conn_state) { - remove_proc_entry("conn_state", hg->proc.rootdir); - hg->proc.conn_state = NULL; - } if (hg->proc.ota) { remove_proc_entry("ota", hg->proc.rootdir); hg->proc.ota = NULL; } - if (hg->proc.temp) { - remove_proc_entry("temperature", hg->proc.rootdir); - hg->proc.temp = NULL; - } - if (hg->proc.sleep) { - remove_proc_entry("sleep", hg->proc.rootdir); - hg->proc.sleep = NULL; - } if (hg->proc.iwpriv) { remove_proc_entry("iwpriv", hg->proc.rootdir); hg->proc.iwpriv = NULL; } - if (hg->proc.paired_stas) { - remove_proc_entry("paired_stas", hg->proc.rootdir); - hg->proc.paired_stas = NULL; - } - if (hg->proc.radio_off) { - remove_proc_entry("radio_off", hg->proc.rootdir); - hg->proc.radio_off = NULL; - } - if (hg->proc.sta_count) { - remove_proc_entry("sta_count", hg->proc.rootdir); - hg->proc.sta_count = NULL; - } - if (hg->proc.heartbeat) { - remove_proc_entry("heartbeat", hg->proc.rootdir); - hg->proc.heartbeat = NULL; - } - if (hg->proc.heartbeat_resp) { - remove_proc_entry("heartbeat_resp", hg->proc.rootdir); - hg->proc.heartbeat_resp = NULL; - } - if (hg->proc.wakeup_data) { - remove_proc_entry("wakeup_data", hg->proc.rootdir); - hg->proc.wakeup_data = NULL; - } - if (hg->proc.wakeup) { - remove_proc_entry("wakeup", hg->proc.rootdir); - hg->proc.wakeup = NULL; - } - if (hg->proc.pair_state) { - remove_proc_entry("pair_state", hg->proc.rootdir); - hg->proc.pair_state = NULL; - } - if (hg->proc.fw_ver) { - remove_proc_entry("fw_ver", hg->proc.rootdir); - hg->proc.fw_ver = NULL; - } - if (hg->proc.wkreason) { - remove_proc_entry("wkreason", hg->proc.rootdir); - hg->proc.wkreason = NULL; - } if (hg->proc.fwevent) { - remove_proc_entry("event", hg->proc.rootdir); + remove_proc_entry("fwevnt", hg->proc.rootdir); hg->proc.fwevent = NULL; } - if (hg->proc.mgmt) { - remove_proc_entry("mgmt", hg->proc.rootdir); - hg->proc.mgmt = NULL; - } - if (hg->proc.battery_level) { - remove_proc_entry("battery_level", hg->proc.rootdir); - hg->proc.battery_level = NULL; - } - if (hg->proc.fwdbginfo) { - remove_proc_entry("fwdbginfo", hg->proc.rootdir); - hg->proc.fwdbginfo = NULL; - } - if (hg->proc.pairing_sta) { - remove_proc_entry("pairing_sta", hg->proc.rootdir); - hg->proc.pairing_sta = NULL; - } - if (hg->proc.dhcpc) { - remove_proc_entry("dhcpc", hg->proc.rootdir); - hg->proc.dhcpc = NULL; - } - if (hg->proc.wkdata_buff) { - remove_proc_entry("wkdata_buff", hg->proc.rootdir); - hg->proc.wkdata_buff = NULL; - } - if (hg->proc.wkdata_mask) { - remove_proc_entry("wkdata_mask", hg->proc.rootdir); - hg->proc.wkdata_mask = NULL; - } - if (hg->proc.cust_driverdata) { - remove_proc_entry("cust_driverdata", hg->proc.rootdir); - hg->proc.cust_driverdata = NULL; - } - if (hg->proc.freqinfo) { - remove_proc_entry("freqinfo", hg->proc.rootdir); - hg->proc.freqinfo = NULL; - } - remove_proc_entry("hgic", NULL); + remove_proc_entry(hg->proc_dev ? hg->vif->ndev->name : "hgicf", NULL); hg->proc.rootdir = NULL; + } else { + hgic_err("hg->proc.rootdir is NULL\r\n"); } hgic_dbg("leave\r\n"); } diff --git a/hgic_fmac/procfs.h b/hgic_fmac/procfs.h index 544f060..5289eea 100644 --- a/hgic_fmac/procfs.h +++ b/hgic_fmac/procfs.h @@ -17,38 +17,12 @@ struct hgicf_wdev; #define HGIC_TESTMODE_BUFF_SIZE (4096) struct hgicf_procfs { struct proc_dir_entry *rootdir; - struct proc_dir_entry *tx_bitrate; - struct proc_dir_entry *testmode; struct proc_dir_entry *status; - struct proc_dir_entry *signal; - struct proc_dir_entry *evm; - struct proc_dir_entry *conn_state; - u8 testmode_buf[HGIC_TESTMODE_BUFF_SIZE]; struct proc_dir_entry *ota; - struct proc_dir_entry *temp; - struct proc_dir_entry *sleep; struct proc_dir_entry *iwpriv; u8 iwpriv_buf[4096]; - struct proc_dir_entry *paired_stas; - struct proc_dir_entry *radio_off; - struct proc_dir_entry *sta_count; - struct proc_dir_entry *wakeup; - struct proc_dir_entry *wakeup_data; - struct proc_dir_entry *heartbeat; - struct proc_dir_entry *heartbeat_resp; - struct proc_dir_entry *pair_state; - struct proc_dir_entry *fw_ver; - struct proc_dir_entry *wkreason; + u32 iwpriv_result; struct proc_dir_entry *fwevent; - struct proc_dir_entry *mgmt; - struct proc_dir_entry *battery_level; - struct proc_dir_entry *fwdbginfo; - struct proc_dir_entry *pairing_sta; - struct proc_dir_entry *dhcpc; - struct proc_dir_entry *wkdata_buff; - struct proc_dir_entry *wkdata_mask; - struct proc_dir_entry *cust_driverdata; - struct proc_dir_entry *freqinfo; }; void hgicf_create_procfs(struct hgicf_wdev *hg); diff --git a/hgtest b/hgtest deleted file mode 100755 index c579ff2..0000000 --- a/hgtest +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo $1 > /proc/hgic/testmode;cat /proc/hgic/testmode \ No newline at end of file diff --git a/how_to_build_with_kernel.txt b/how_to_build_with_kernel.txt new file mode 100644 index 0000000..b4fc109 --- /dev/null +++ b/how_to_build_with_kernel.txt @@ -0,0 +1,14 @@ +1. copy driver files to drivers/net/wireless/hugeic. + +2. cd drivers/net/wireless/hugeic + cp Makefile.in Makefile + +3. modify drivers/net/wireless/Kconfig, add new line: + source "drivers/net/wireless/hugeic/Kconfig" + +4. modify drivers/net/wireless/Makefile, add new line: + obj-$(CONFIG_HGICS) += hugeic/ + or + obj-$(CONFIG_HGICF) += hugeic/ + +5. run make menuconfig and select hugeic wifi driver. diff --git a/iwpriv b/iwpriv deleted file mode 100755 index 8554366..0000000 --- a/iwpriv +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo $* > /proc/hgic/iwpriv;cat /proc/hgic/iwpriv \ No newline at end of file diff --git a/readme.txt b/readme.txt deleted file mode 100644 index 7978640..0000000 --- a/readme.txt +++ /dev/null @@ -1,34 +0,0 @@ - -//////////////////////////////////////////////////////////////////////////////////////////////////// -fmac - 1.޸Makefile: ޸ıá - mtk 뻷£ - #MTK SDK - ARCH := mips - COMPILER := /opt/buildroot-gcc463/usr/bin/mipsel-linux- - LINUX_KERNEL_PATH := /home/dongyun/work/disk4/RT288x_AHv1.2/source/linux-3.10.14.x - - 2. ִ: make fmac - - - : - 1. error implicit declaration of function 'PDE_DATA' - ñLinux kernel汾죬proc fs ȱʧ PDE_DATA С - error hgic_fmac/procfs.f ļ鿴δ룬 LINUX_VERSION_CODE ޸һversion codeж - #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,36) - static inline struct proc_dir_entry *PDE(const struct inode *inode) - { - return PROC_I(inode)->pde; - } - static inline void *PDE_DATA(const struct inode *inode) - { - return PDE(inode)->data; - } - #endif - - - -hgicf.conf : fmacļapģʽ -fmac.sh : fmacű -hgtest : ģʽtoolڷͲģʽ -iwpriv : ̩оרõiwprivߡԭϵͳûiwprivʹô˹ߡ diff --git a/tools/ah_tool/build.sh b/tools/ah_tool/build.sh new file mode 100644 index 0000000..c784093 --- /dev/null +++ b/tools/ah_tool/build.sh @@ -0,0 +1,38 @@ +#! /bin/sh + +########################################################################### +export PATH=$PATH:/opt/buildroot-gcc463/usr/bin +ARCH=mipsel-linux +COMPILER=/opt/buildroot-gcc463/usr/bin/mipsel-linux + +########################################################################### + +# +rm -rf bin +mkdir lib bin + +# if [ ! -d libnl-3.2.25 ]; then + # tar xfz ../libnl-3.2.25.tar.gz + # cd libnl-3.2.25 + # ./configure CFLAGS="-ffunction-sections -fdata-sections" --host=${ARCH} --prefix=$(pwd)/lib --enable-shared --enable-static CC=${COMPILER}-gcc + # make clean;make;cd - +# fi +# cp -fv libnl-3.2.25/lib/.libs/libnl-3.a lib/libnl-3.a +# cp -fv libnl-3.2.25/lib/.libs/libnl-genl-3.a lib/libnl-genl-3.a + +# +cd ../test_app;make clean;make CC=${COMPILER}-gcc all;cd - +mv -fv ../test_app/bin/* bin/ + +# +# cd hostapd-2.6/hostapd +# make clean; make CC=${COMPILER}-gcc STRIP=${COMPILER}-strip; cd - +# cp -fv hostapd-2.6/hostapd/hostapd bin/hostapd +# cp -fv hostapd-2.6/hostapd/hostapd_cli bin/hostapd_cli + +# +# cd wpa_supplicant-2.6/wpa_supplicant +# make clean; make CC=${COMPILER}-gcc STRIP=${COMPILER}-strip; cd - +# cp -fv wpa_supplicant-2.6/wpa_supplicant/wpa_supplicant bin/wpa_supplicant +# cp -fv wpa_supplicant-2.6/wpa_supplicant/wpa_passphrase bin/wpa_passphrase +# cp -fv wpa_supplicant-2.6/wpa_supplicant/wpa_cli bin/wpa_cli diff --git a/tools/test_app/Makefile b/tools/test_app/Makefile new file mode 100644 index 0000000..5a1beb4 --- /dev/null +++ b/tools/test_app/Makefile @@ -0,0 +1,36 @@ +EXEC = hgota libnetat hgics hgicf hgpriv + +CFLAGS += -D__linux__ +LDFLAGS += -lm + +all: $(EXEC) + $(shell rm -rf bin; mkdir bin) + for i in $(EXEC) ; do mv -fv $$i bin/$$i ; done + +tcp_test: tcp_test.c + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.c $(LDLIBS) + +dsleep_test: dsleep_test.c + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.c $(LDLIBS) + +hgota: libota.o hgota.o fwinfo.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ libota.o hgota.o fwinfo.o $(LDLIBS) + +hguevent: hguevent.c + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.c $(LDLIBS) + +libnetat: libnetat.c + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.c $(LDLIBS) + +hgics: hgics.o blenc.o hgics_blenc.o hgics_relay.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ hgics.o hgics_blenc.o hgics_relay.o blenc.o $(LDLIBS) + +hgicf: hgicf.c + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.c $(LDLIBS) + +hgpriv: hgpriv.c + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $@.c $(LDLIBS) + +clean: + -rm -f $(EXEC) *.elf *.gdb *.o + diff --git a/hgota/fwinfo.c b/tools/test_app/fwinfo.c similarity index 100% rename from hgota/fwinfo.c rename to tools/test_app/fwinfo.c diff --git a/hgota/fwinfo.h b/tools/test_app/fwinfo.h similarity index 100% rename from hgota/fwinfo.h rename to tools/test_app/fwinfo.h diff --git a/tools/test_app/hgic.h b/tools/test_app/hgic.h new file mode 100644 index 0000000..212aad2 --- /dev/null +++ b/tools/test_app/hgic.h @@ -0,0 +1,541 @@ +#ifndef _HUGE_IC_H_ +#define _HUGE_IC_H_ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __RTOS__ +#define HGIC_CMD_START 100 +#else +#define HGIC_CMD_START 0 +#endif + +#ifndef __packed +#define __packed __attribute__((packed)) +#endif + +typedef void (*hgic_init_cb)(void *args); +typedef void (*hgic_event_cb)(char *ifname, int event, int param1, int param2); + +struct hgic_bss_info { + unsigned char bssid[6]; + unsigned char ssid[32]; + unsigned char encrypt; + signed char signal; + unsigned short freq; +}; + +struct hgic_fw_info { + unsigned int version; + unsigned int svn_version; + unsigned short chip_id; + unsigned short cpu_id; + unsigned char mac[6]; + unsigned char resv[2]; + unsigned int app_version; + unsigned int smt_dat; +}; + +struct hgic_sta_info { + unsigned char aid; + unsigned char ps:1; + unsigned char addr[6]; + signed char rssi; + signed char evm; + signed char tx_snr; + signed char rx_snr; +}; + +struct hgic_freqinfo { + unsigned char bss_bw, chan_cnt; + unsigned short freq_start, freq_end; + unsigned short chan_list[16]; +}; + +struct hgic_module_hwinfo{ + union{ + struct{ + unsigned char type; + unsigned char saw:1, rev:7; + }; + unsigned short v; + }; +}; + +struct hgic_txq_param { + unsigned short txop; + unsigned short cw_min; + unsigned short cw_max; + unsigned char aifs; + unsigned char acm; +}; + +struct hgic_mcast_txparam { + unsigned char dupcnt; + unsigned char tx_bw; + unsigned char tx_mcs; + unsigned char clearch; +}; + +struct hgic_rx_info { + unsigned char band; + unsigned char mcs: 4, bw: 4; + char evm; + char signal; + unsigned short freq; + short freq_off; + unsigned char rx_flags; + unsigned char antenna; + unsigned char nss : 4, s1g_nss : 4; + unsigned char vht_flag : 3, s1g_flag : 5; +}; + +struct hgic_tx_info { + unsigned char band; + unsigned char tx_bw; + unsigned char tx_mcs; + unsigned char antenna; + unsigned int tx_flags; + unsigned int tx_flags2; +}; + +struct bt_rx_info { + unsigned char channel; //current channel + unsigned char con_handle; //hci handle + signed char rssi; + unsigned char frm_type; + unsigned int rev; +}; + + +/*data packet header*/ +struct hgic_hdr { + unsigned short magic; + unsigned char type; + unsigned char ifidx: 4, flags: 4; + unsigned short length; + unsigned short cookie; +} __packed; + +struct hgic_frm_hdr { + struct hgic_hdr hdr; + union { + struct hgic_rx_info rx_info; + struct hgic_tx_info tx_info; + unsigned char rev[24]; + }; +} __packed; + +struct hgic_frm_hdr2 { + struct hgic_hdr hdr; +} __packed; + + +/*contro pakcet header*/ +struct hgic_ctrl_hdr { + struct hgic_hdr hdr; + union { + struct { + unsigned char cmd_id; + short status; + } cmd; + struct { + unsigned short cmd_id; + short status; + } cmd2; + struct { + unsigned char event_id; + short value; + } event; + struct { + unsigned short event_id; + short value; + } event2; + struct { + unsigned char type; + } hci; + unsigned char info[4]; + }; +} __packed; + +struct hgic_key_conf { + unsigned int cipher; + unsigned int flags; + unsigned char keyidx; + unsigned char keylen; + unsigned char key[0]; +}; + +struct hgic_cca_ctl { + char start_th; + char mid_th; + char ed_th; + /* CCA auto adjustment. + * When the cca automatic adjustment takes effect, the + * above three parameters are invalid. + */ + char auto_en : 1; +}; + +struct hgic_acs_result{ + unsigned int freq;//KHz + unsigned char sync_cnt; + signed char min; + signed char max; + signed char avg; +}; + +struct hgic_fallback_mcs { + unsigned char original_type; + unsigned char original_mcs; + unsigned char fallback_type; + unsigned char fallback_mcs; +}; + +#define HDR_CMDID(ctl) ((ctl)->hdr.type==HGIC_HDR_TYPE_CMD2? le16_to_cpu((ctl)->cmd2.cmd_id):(ctl)->cmd.cmd_id) +#define HDR_EVTID(ctl) ((ctl)->hdr.type==HGIC_HDR_TYPE_EVENT2?le16_to_cpu((ctl)->event2.event_id):(ctl)->event.event_id) +#define HDR_CMDID_SET(ctl, id) if(id>255){\ + (ctl)->hdr.type =HGIC_HDR_TYPE_CMD2;\ + (ctl)->cmd2.cmd_id = cpu_to_le16(id);\ + }else{\ + (ctl)->hdr.type =HGIC_HDR_TYPE_CMD;\ + (ctl)->cmd.cmd_id = id;\ + } +#define HDR_EVTID_SET(ctl, id) if(id>255){\ + (ctl)->hdr.type =HGIC_HDR_TYPE_EVENT2;\ + (ctl)->event2.event_id = cpu_to_le16(id);\ + }else{\ + (ctl)->hdr.type =HGIC_HDR_TYPE_EVENT;\ + (ctl)->event.event_id = id;\ + } + +enum hgic_hdr_type { + HGIC_HDR_TYPE_ACK = 1, + HGIC_HDR_TYPE_FRM = 2, + HGIC_HDR_TYPE_CMD = 3, + HGIC_HDR_TYPE_EVENT = 4, + HGIC_HDR_TYPE_FIRMWARE = 5, + HGIC_HDR_TYPE_NLMSG = 6, + HGIC_HDR_TYPE_BOOTDL = 7, + HGIC_HDR_TYPE_TEST = 8, + HGIC_HDR_TYPE_FRM2 = 9, + HGIC_HDR_TYPE_TEST2 = 10, + HGIC_HDR_TYPE_SOFTFC = 11, + HGIC_HDR_TYPE_OTA = 12, + HGIC_HDR_TYPE_CMD2 = 13, + HGIC_HDR_TYPE_EVENT2 = 14, + HGIC_HDR_TYPE_BOOTDL_DATA = 15, + HGIC_HDR_TYPE_IFBR = 16, + HGIC_HDR_TYPE_BEACON = 17, + HGIC_HDR_TYPE_AGGFRM = 18, + HGIC_HDR_TYPE_BLUETOOTH = 19, + + HGIC_HDR_TYPE_MAX, +}; + +enum hgic_cmd { + HGIC_CMD_DEV_OPEN = 1, /* fmac/smac */ + HGIC_CMD_DEV_CLOSE = 2, /* fmac/smac */ + HGIC_CMD_SET_MAC = 3, /* fmac/smac */ + HGIC_CMD_SET_SSID = 4, /* fmac */ + HGIC_CMD_SET_BSSID = 5, /* fmac */ + HGIC_CMD_SET_COUNTERY = 6, /* fmac */ + HGIC_CMD_SET_CHANNEL = 7, /* fmac */ + HGIC_CMD_SET_CENTER_FREQ = 8, /* smac */ + HGIC_CMD_SET_RTS_THRESHOLD = 9, /* smac */ + HGIC_CMD_SET_FRG_THRESHOLD = 10, /* smac */ + HGIC_CMD_SET_KEY_MGMT = 11, /* fmac */ + HGIC_CMD_SET_WPA_PSK = 12, /* fmac */ + HGIC_CMD_SET_KEY = 13, /* smac */ + HGIC_CMD_SCAN = 14, /* fmac */ + HGIC_CMD_GET_SCAN_LIST = 15, /* fmac */ + HGIC_CMD_SET_BSSID_FILTER = 16, /* fmac */ + HGIC_CMD_DISCONNECT = 17, /* fmac */ + HGIC_CMD_GET_BSSID = 18, /* fmac */ + HGIC_CMD_SET_WBNAT = 19, /* unused */ + HGIC_CMD_GET_STATUS = 20, /* fmac */ + HGIC_CMD_SET_LISTEN_INTERVAL = 21, /* smac */ + HGIC_CMD_SET_TX_POWER = 22, /* fmac/smac */ + HGIC_CMD_GET_TX_POWER = 23, /* fmac/smac */ + HGIC_CMD_SET_TX_LCOUNT = 24, /* unused */ + HGIC_CMD_SET_TX_SCOUNT = 25, /* unused */ + HGIC_CMD_ADD_STA = 26, /* smac */ + HGIC_CMD_REMOVE_STA = 27, /* smac */ + HGIC_CMD_SET_TX_BW = 28, /* fmac */ + HGIC_CMD_SET_TX_MCS = 29, /* fmac/smac */ + HGIC_CMD_SET_FREQ_RANGE = 30, /* fmac */ + HGIC_CMD_ACS_ENABLE = 31, /* fmac */ + HGIC_CMD_SET_PRIMARY_CHAN = 32, /* fmac */ + HGIC_CMD_SET_BG_RSSI = 33, /* fmac */ + HGIC_CMD_SET_BSS_BW = 34, /* fmac/smac */ + HGIC_CMD_TESTMODE_CMD = 35, /* fmac/smac */ + HGIC_CMD_SET_AID = 36, /* smac */ + HGIC_CMD_GET_FW_STATE = 37, /* unused */ + HGIC_CMD_SET_TXQ_PARAM = 38, /* smac */ + HGIC_CMD_SET_CHAN_LIST = 39, /* fmac */ + HGIC_CMD_GET_CONN_STATE = 40, /* fmac */ + HGIC_CMD_SET_WORK_MODE = 41, /* fmac */ + HGIC_CMD_SET_PAIRED_STATIONS = 42, /* fmac */ + HGIC_CMD_GET_FW_INFO = 43, /* fmac/smac */ + HGIC_CMD_PAIRING = 44, /* fmac */ + HGIC_CMD_GET_TEMPERATURE = 45, /* fmac/smac */ + HGIC_CMD_ENTER_SLEEP = 46, /* fmac */ + HGIC_CMD_OTA = 47, /* fmac */ + HGIC_CMD_GET_SSID = 48, /* fmac */ + HGIC_CMD_GET_WPA_PSK = 49, /* fmac */ + HGIC_CMD_GET_SIGNAL = 50, /* fmac */ + HGIC_CMD_GET_TX_BITRATE = 51, /* fmac */ + HGIC_CMD_SET_BEACON_INT = 52, /* fmac */ + HGIC_CMD_GET_STA_LIST = 53, /* fmac */ + HGIC_CMD_SAVE_CFG = 54, /* fmac */ + HGIC_CMD_JOIN_GROUP = 55, /* unused */ + HGIC_CMD_SET_ETHER_TYPE = 56, /* unused */ + HGIC_CMD_GET_STA_COUNT = 57, /* fmac */ + HGIC_CMD_SET_HEARTBEAT_INT = 58, /* fmac */ + HGIC_CMD_SET_MCAST_KEY = 59, /* unused */ + HGIC_CMD_SET_AGG_CNT = 60, /* fmac/smac */ + HGIC_CMD_GET_AGG_CNT = 61, /* fmac/smac */ + HGIC_CMD_GET_BSS_BW = 62, /* fmac/smac */ + HGIC_CMD_GET_FREQ_RANGE = 63, /* fmac */ + HGIC_CMD_GET_CHAN_LIST = 64, /* fmac */ + HGIC_CMD_RADIO_ONOFF = 65, /* fmac/smac */ + HGIC_CMD_SET_PS_HEARTBEAT = 66, /* fmac */ + HGIC_CMD_SET_WAKEUP_STA = 67, /* fmac */ + HGIC_CMD_SET_PS_HEARTBEAT_RESP = 68, /* fmac */ + HGIC_CMD_SET_PS_WAKEUP_DATA = 69, /* fmac */ + HGIC_CMD_SET_PS_CONNECT = 70, /* fmac */ + HGIC_CMD_SET_BSS_MAX_IDLE = 71, /* fmac */ + HGIC_CMD_SET_WKIO_MODE = 72, /* fmac */ + HGIC_CMD_SET_DTIM_PERIOD = 73, /* fmac */ + HGIC_CMD_SET_PS_MODE = 74, /* fmac */ + HGIC_CMD_LOAD_DEF = 75, /* fmac */ + HGIC_CMD_DISASSOC_STA = 76, /* fmac */ + HGIC_CMD_SET_APLOST_TIME = 77, /* fmac */ + HGIC_CMD_GET_WAKEUP_REASON = 78, /* fmac */ + HGIC_CMD_UNPAIR = 79, /* fmac */ + HGIC_CMD_SET_AUTO_CHAN_SWITCH = 80, /* fmac */ + HGIC_CMD_SET_REASSOC_WKHOST = 81, /* fmac */ + HGIC_CMD_SET_WAKEUP_IO = 82, /* fmac */ + HGIC_CMD_DBGINFO_OUTPUT = 83, /* fmac/smac */ + HGIC_CMD_SET_SYSDBG = 84, /* fmac/smac */ + HGIC_CMD_SET_AUTO_SLEEP_TIME = 85, /* fmac */ + HGIC_CMD_GET_KEY_MGMT = 86, /* fmac */ + HGIC_CMD_SET_PAIR_AUTOSTOP = 87, /* fmac */ + HGIC_CMD_SET_SUPER_PWR = 88, /* fmac */ + HGIC_CMD_SET_REPEATER_SSID = 89, /* fmac */ + HGIC_CMD_SET_REPEATER_PSK = 90, /* fmac */ + HGIC_CMD_CFG_AUTO_SAVE = 91, /* fmac */ + HGIC_CMD_SEND_CUST_MGMT = 92, /* fmac */ + HGIC_CMD_GET_BATTERY_LEVEL = 93, /* unused */ + HGIC_CMD_SET_DCDC13 = 94, /* fmac */ + HGIC_CMD_SET_ACKTMO = 95, /* fmac/smac */ + HGIC_CMD_GET_MODULETYPE = 96, /* fmac/smac */ + HGIC_CMD_PA_PWRCTRL_DIS = 97, /* fmac */ + HGIC_CMD_SET_DHCPC = 98, /* fmac */ + HGIC_CMD_GET_DHCPC_RESULT = 99, /* fmac */ + HGIC_CMD_SET_WKUPDATA_MASK = 100, /* fmac */ + HGIC_CMD_GET_WKDATA_BUFF = 101, /* fmac */ + HGIC_CMD_GET_DISASSOC_REASON = 102, /* fmac */ + HGIC_CMD_SET_WKUPDATA_SAVEEN = 103, /* fmac */ + HGIC_CMD_SET_CUST_DRIVER_DATA = 104, /* fmac */ + HGIC_CMD_SET_MCAST_TXPARAM = 105, /* unused */ + HGIC_CMD_SET_STA_FREQINFO = 106, /* fmac */ + HGIC_CMD_SET_RESET_STA = 107, /* fmac */ + HGIC_CMD_SET_UART_FIXLEN = 108, /* unused */ + HGIC_CMD_GET_UART_FIXLEN = 109, /* unused */ + HGIC_CMD_SET_ANT_AUTO = 110, /* fmac */ + HGIC_CMD_SET_ANT_SEL = 111, /* fmac */ + HGIC_CMD_GET_ANT_SEL = 112, /* fmac */ + HGIC_CMD_SET_WKUP_HOST_REASON = 113, /* fmac */ + HGIC_CMD_SET_MAC_FILTER_EN = 114, /* unused */ + HGIC_CMD_SET_ATCMD = 115, /* fmac/smac */ + HGIC_CMD_SET_ROAMING = 116, /* fmac */ + HGIC_CMD_SET_AP_HIDE = 117, /* fmac */ + HGIC_CMD_SET_DUAL_ANT = 118, /* fmac */ + HGIC_CMD_SET_MAX_TCNT = 119, /* fmac/smac */ + HGIC_CMD_SET_ASSERT_HOLDUP = 120, /* fmac/smac */ + HGIC_CMD_SET_AP_PSMODE_EN = 121, /* fmac */ + HGIC_CMD_SET_DUPFILTER_EN = 122, /* fmac */ + HGIC_CMD_SET_DIS_1V1_M2U = 123, /* fmac */ + HGIC_CMD_SET_DIS_PSCONNECT = 124, /* fmac */ + HGIC_CMD_SET_RTC = 125, /* fmac */ + HGIC_CMD_GET_RTC = 126, /* fmac */ + HGIC_CMD_SET_KICK_ASSOC = 127, /* fmac */ + HGIC_CMD_START_ASSOC = 128, /* fmac */ + HGIC_CMD_SET_AUTOSLEEP = 129, /* fmac */ + HGIC_CMD_SEND_BLENC_DATA = 130, /* smac */ + HGIC_CMD_SET_BLENC_EN = 131, /* smac */ + HGIC_CMD_RESET = 132, /* fmac/smac */ + HGIC_CMD_SET_HWSCAN = 133, /* smac */ + HGIC_CMD_GET_TXQ_PARAM = 134, /* smac */ + HGIC_CMD_SET_PROMISC = 135, /* smac */ + HGIC_CMD_SET_USER_EDCA = 136, /* fmac */ + HGIC_CMD_SET_FIX_TXRATE = 137, /* smac */ + HGIC_CMD_SET_NAV_MAX = 138, /* smac */ + HGIC_CMD_CLEAR_NAV = 139, /* smac */ + HGIC_CMD_SET_CCA_PARAM = 140, /* smac */ + HGIC_CMD_SET_TX_MODGAIN = 141, /* smac */ + HGIC_CMD_GET_NAV = 142, /* smac */ + HGIC_CMD_SET_BEACON_START = 143, /* smac */ + HGIC_CMD_SET_BLE_OPEN = 144, /* smac */ + HGIC_CMD_GET_MODE = 145, /* fmac */ + HGIC_CMD_GET_BGRSSI = 146, /* fmac */ + HGIC_CMD_SEND_BLENC_ADVDATA = 147, /* smac */ + HGIC_CMD_SEND_BLENC_SCANRESP = 148, /* smac */ + HGIC_CMD_SEND_BLENC_DEVADDR = 149, /* smac */ + HGIC_CMD_SEND_BLENC_ADVINTERVAL = 150, /* smac */ + HGIC_CMD_SEND_BLENC_STARTADV = 151, /* smac */ + HGIC_CMD_SET_RTS_DURATION = 152, /* smac */ + HGIC_CMD_STANDBY_CFG = 153, /* fmac */ + HGIC_CMD_SET_CONNECT_PAIRONLY = 154, /* fmac */ + HGIC_CMD_SET_DIFFCUST_CONN = 155, /* fmac */ + HGIC_CMD_GET_CENTER_FREQ = 156, /* smac */ + HGIC_CMD_SET_WAIT_PSMODE = 157, /* fmac */ + HGIC_CMD_SET_AP_CHAN_SWITCH = 158, /* fmac */ + HGIC_CMD_SET_CCA_FOR_CE = 159, /* fmac */ + HGIC_CMD_SET_DISABLE_PRINT = 160, /* fmac/smac */ + HGIC_CMD_SET_APEP_PADDING = 161, /* smac */ + HGIC_CMD_GET_ACS_RESULT = 162, /* fmac/smac */ + HGIC_CMD_GET_WIFI_STATUS_CODE = 163, /* fmac */ + HGIC_CMD_GET_WIFI_REASON_CODE = 164, /* fmac */ + HGIC_CMD_SET_WATCHDOG = 165, /* fmac/smac */ + HGIC_CMD_SET_RETRY_FALLBACK_CNT = 166, /* smac */ + HGIC_CMD_SET_FALLBACK_MCS = 167, /* smac */ + HGIC_CMD_GET_XOSC_VALUE = 168, /* smac */ + HGIC_CMD_SET_XOSC_VALUE = 169, /* smac */ + HGIC_CMD_GET_FREQ_OFFSET = 170, /* smac */ + HGIC_CMD_SET_CALI_PERIOD = 171, /* smac */ + HGIC_CMD_SET_BLENC_ADVFILTER = 172, /* smac */ + HGIC_CMD_SET_MAX_TX_DELAY = 173, /* smac */ + HGIC_CMD_GET_STA_INFO = 174, /* fmac */ + HGIC_CMD_SEND_MGMTFRAME = 175, /* fmac */ + +}; + +enum hgic_event { + HGIC_EVENT_STATE_CHG = 1, + HGIC_EVENT_CH_SWICH = 2, + HGIC_EVENT_DISCONNECT_REASON = 3, + HGIC_EVENT_ASSOC_STATUS = 4, + HGIC_EVENT_SCANNING = 5, + HGIC_EVENT_SCAN_DONE = 6, + HGIC_EVENT_TX_BITRATE = 7, + HGIC_EVENT_PAIR_START = 8, + HGIC_EVENT_PAIR_SUCCESS = 9, + HGIC_EVENT_PAIR_DONE = 10, + HGIC_EVENT_CONECT_START = 11, + HGIC_EVENT_CONECTED = 12, + HGIC_EVENT_DISCONECTED = 13, + HGIC_EVENT_SIGNAL = 14, + HGIC_EVENT_DISCONNET_LOG = 15, + HGIC_EVENT_REQUEST_PARAM = 16, + HGIC_EVENT_TESTMODE_STATE = 17, + HGIC_EVENT_FWDBG_INFO = 18, + HGIC_EVENT_CUSTOMER_MGMT = 19, + HGIC_EVENT_SLEEP_FAIL = 20, + HGIC_EVENT_DHCPC_DONE = 21, + HGIC_EVENT_CONNECT_FAIL = 22, + HGIC_EVENT_CUST_DRIVER_DATA = 23, + HGIC_EVENT_UNPAIR_STA = 24, + HGIC_EVENT_BLENC_DATA = 25, + HGIC_EVENT_HWSCAN_RESULT = 26, + HGIC_EVENT_EXCEPTION_INFO = 27, + HGIC_EVENT_DSLEEP_WAKEUP = 28, + HGIC_EVENT_STA_MIC_ERROR = 29, + HGIC_EVENT_ACS_DONE = 30, + HGIC_EVENT_FW_INIT_DONE = 31, + HGIC_EVENT_ROAM_CONECTED = 32, + HGIC_EVENT_MGMT_FRAME = 33, +}; + +enum hgicf_hw_state { + HGICF_HW_DISCONNECTED = 0, + HGICF_HW_DISABLED = 1, + HGICF_HW_INACTIVE = 2, + HGICF_HW_SCANNING = 3, + HGICF_HW_AUTHENTICATING = 4, + HGICF_HW_ASSOCIATING = 5, + HGICF_HW_ASSOCIATED = 6, + HGICF_HW_4WAY_HANDSHAKE = 7, + HGICF_HW_GROUP_HANDSHAKE = 8, + HGICF_HW_CONNECTED = 9, +}; + +enum HGIC_EXCEPTION_NUM{ + HGIC_EXCEPTION_CPU_USED_OVERTOP = 1, + HGIC_EXCEPTION_HEAP_USED_OVERTOP = 2, + HGIC_EXCEPTION_WIFI_BUFFER_USED_OVERTOP = 3, + HGIC_EXCEPTION_TX_BLOCKED = 4, + HGIC_EXCEPTION_TXDELAY_TOOLONG = 5, + HGIC_EXCEPTION_STRONG_BGRSSI = 6, + HGIC_EXCEPTION_TEMPERATURE_OVERTOP = 7, + HGIC_EXCEPTION_WRONG_PASSWORD = 8, +}; + +struct hgic_exception_info { + int num; + union { + struct { + int max, avg, min; + } txdelay; + struct { + int max, avg, min; + } bgrssi; + struct { + int total, used; + } buffer_usage; + struct { + int total, used; + } heap_usage; + struct { + int temp; + } temperature; + } info; +}; + +struct hgic_dhcp_result { + unsigned int ipaddr, netmask, svrip, router, dns1, dns2; +}; + +#ifdef __RTOS__ +struct firmware { + unsigned char *data; + unsigned int size; +}; +int request_firmware(const struct firmware **fw, const char *name, void *dev); +void release_firmware(struct firmware *fw); + +extern int hgicf_init(void); +extern int hgicf_cmd(char *ifname, unsigned int cmd, unsigned int param1, unsigned int param2); +extern int hgics_init(void); +extern void hgics_exit(void); +extern int wpas_init(void); +extern int wpas_start(char *ifname); +extern int wpas_stop(char *ifname); +extern int wpas_cli(char *ifname, char *cmd, char *reply_buff, int reply_len); +extern int wpas_passphrase(char *ssid, char *passphrase, char psk[32]); +extern int hapd_init(void); +extern int hapd_start(char *ifname); +extern int hapd_stop(char *ifname); +extern int hapd_cli(char *ifname, char *cmd, char *reply_buff, int reply_len); +extern void hgic_param_iftest(int iftest); +extern const char *hgic_param_ifname(const char *name); +extern char *hgic_param_fwfile(const char *fw); +extern int hgic_param_ifcount(int count); +extern void hgic_param_initcb(hgic_init_cb cb); +extern void hgic_param_eventcb(hgic_event_cb cb); +extern int hgic_ota_start(char *ifname, char *fw_name); + +void hgic_raw_init(void); +int hgic_raw_send(char *dest, char *data, int len); +int hgic_raw_rcev(char *buf, int size, char *src); + +#ifdef HGIC_SMAC +#include "umac_config.h" +#endif +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/tools/test_app/hgicf.c b/tools/test_app/hgicf.c new file mode 100644 index 0000000..059451c --- /dev/null +++ b/tools/test_app/hgicf.c @@ -0,0 +1,199 @@ +/** + ****************************************************************************** + * @file hgicf.c + * @author HUGE-IC Application Team + * @version V1.0.0 + * @date 2021-06-23 + * @brief hgic fmac driver daemon. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2022 HUGE-IC

+ * + ****************************************************************************** + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "hgic.h" + +#include "iwpriv.c" + +/////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////////// +#define IFNAME "hg0" + + +static void hgic_test_read_wakeupdata() +{ + int i = 0; + char *buff = malloc(4096); + do { + i = hgic_iwpriv_read_wkdata_buff(IFNAME, buff, 4096); + if (i > 0) { + buff[i] = 0; + printf("get wkdata, len:%d, %s\r\n", i, buff + 42); + } + } while (i > 0); + free(buff); +} + +int hgicf_fwevent_parse(u8 *event_data, u32 event_len) +{ + int i = 0; + u32 data_len = 0; + u32 evt_id = 0; + char *data = NULL; + char *buff; + struct hgic_exception_info *exp; + struct hgic_dhcp_result *dhcpc; + struct hgic_ctrl_hdr *evt = (struct hgic_ctrl_hdr *)event_data; + + data = (char *)(evt + 1); + data_len = event_len - sizeof(struct hgic_ctrl_hdr); + evt_id = HDR_EVTID(evt); + + printf("recv firmware event %d\r\n", evt_id); + buff = malloc(4096); + if (buff == NULL) { + return -1; + } + + switch (evt_id) { + case HGIC_EVENT_SCANNING: + printf("start scan ...\r\n"); + break; + case HGIC_EVENT_SCAN_DONE: + printf("scan done!\r\n"); + hgic_iwpriv_get_scan_list(IFNAME, buff, 4096); + printf("%s\r\n", buff); + break; + case HGIC_EVENT_TX_BITRATE: + printf("estimate tx bitrate:%dKbps\r\n", *(unsigned int *)data); + break; + case HGIC_EVENT_PAIR_START: + printf("start pairing ...\r\n"); + break; + case HGIC_EVENT_PAIR_SUCCESS: + printf("pairing success! ["MACSTR"]\r\n", MACARG(data)); + hgic_iwpriv_set_pairing(IFNAME, 0); //stop pair + break; + case HGIC_EVENT_PAIR_DONE: + printf("pairing done!\r\n"); + for(i=0; i*6 < data_len;i++){ + printf(" sta%d:"MACSTR"\r\n", i, MACARG(data+6*i)); + } + break; + case HGIC_EVENT_CONECT_START: + printf("start connecting ...\r\n"); + break; + case HGIC_EVENT_CONECTED: + printf("new sta "MACSTR" connected!\r\n", MACARG(data)); + hgic_test_read_wakeupdata(); + break; + case HGIC_EVENT_ROAM_CONECTED: + printf("roam success to "MACSTR"!\r\n", MACARG(data)); + break; + case HGIC_EVENT_DISCONECTED: + printf("sta "MACSTR" disconnected, reason_code=%d\r\n", MACARG(data), get_unaligned_le16(data+6)); + break; + case HGIC_EVENT_SIGNAL: + printf("signal changed: rssi:%d, evm:%d\r\n", (signed char)data[0], (signed char)data[1]); + break; + case HGIC_EVENT_CUSTOMER_MGMT: + printf("rx customer mgmt frame from "MACSTR", %d bytes \r\n", MACARG(data), data_len-6); + break; + case HGIC_EVENT_DHCPC_DONE: + dhcpc = (struct hgic_dhcp_result *)data; + printf("fw dhcpc result: ipaddr:"IPSTR", netmask:"IPSTR", svrip:"IPSTR", router:"IPSTR", dns:"IPSTR"/"IPSTR"\r\n", + IPARG(dhcpc->ipaddr), IPARG(dhcpc->netmask), IPARG(dhcpc->svrip), + IPARG(dhcpc->router), IPARG(dhcpc->dns1), IPARG(dhcpc->dns2)); + break; + case HGIC_EVENT_CONNECT_FAIL: + printf("connect fail, status_code=%d\r\n", get_unaligned_le16(data)); + break; + case HGIC_EVENT_CUST_DRIVER_DATA: + printf("rx customer driver data %d bytes\r\n", data_len); + break; + case HGIC_EVENT_UNPAIR_STA: + printf("unpair sta:"MACSTR"\r\n", MACARG(data)); + break; + case HGIC_EVENT_EXCEPTION_INFO: + exp = (struct hgic_exception_info *)data; + switch(exp->num){ + case HGIC_EXCEPTION_TX_BLOCKED: + printf("*wireless tx blocked, maybe need reset wifi module*\r\n"); + break; + case HGIC_EXCEPTION_TXDELAY_TOOLONG: + printf("*wireless txdelay too loog, %d:%d:%d *\r\n", + exp->info.txdelay.max, exp->info.txdelay.min, exp->info.txdelay.avg); + break; + case HGIC_EXCEPTION_STRONG_BGRSSI: + printf("*detect strong backgroud noise. %d:%d:%d *\r\n", + exp->info.bgrssi.max, exp->info.bgrssi.min, exp->info.bgrssi.avg); + break; + case HGIC_EXCEPTION_TEMPERATURE_OVERTOP: + printf("*chip temperature too overtop: %d *\r\n", exp->info.temperature.temp); + break; + case HGIC_EXCEPTION_WRONG_PASSWORD: + printf("*password maybe is wrong *\r\n"); + break; + } + break; + } + + free(buff); +} + +int main(int argc, char *argv[]) +{ + int ret = 0; + int fd = -1; + u8 *buff = malloc(4096); + + HGIC = "hgicf"; + if (buff == NULL) { + printf("malloc fail\r\n"); + return -1; + } + +__open: + fd = open("/proc/hgicf/fwevnt", O_RDONLY); + if (fd == -1) { + //printf("open /proc/hgicf/fwevnt fail\r\n"); + sleep(1); + goto __open; + } + + while (1) { + ret = read(fd, buff, 4096); + if (ret > 0) { + hgicf_fwevent_parse(buff, ret); + }else if(ret < 0){ + close(fd); + goto __open; + } + } + + close(fd); + free(buff); + return 0; +} + diff --git a/hgota/hgota.c b/tools/test_app/hgota.c similarity index 100% rename from hgota/hgota.c rename to tools/test_app/hgota.c diff --git a/tools/test_app/hgpriv.c b/tools/test_app/hgpriv.c new file mode 100644 index 0000000..e608c46 --- /dev/null +++ b/tools/test_app/hgpriv.c @@ -0,0 +1,84 @@ +/** + ****************************************************************************** + * @file hgics.c + * @author HUGE-IC Application Team + * @version V1.0.0 + * @date 2022-05-18 + * @brief hgic smac driver daemon. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2022 HUGE-IC

+ * + ****************************************************************************** + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "hgic.h" + +#include "iwpriv.c" + +int main(int argc, char *argv[]) +{ + int fd = -1; + int i = 0; + int len = 0; + char cmd[512]; + char *buff; + int ret = 0; + + if (argc < 2) { + return -1; + } + + buff = malloc(4096); + if (buff == NULL) { + printf("no mem\r\n"); + return -1; + } + + fd = open("/proc/hgics/iwpriv", O_RDONLY); + if (fd != -1) { + HGIC = "hgics"; + } else { + fd = open("/proc/hgicf/iwpriv", O_RDONLY); + if (fd != -1) { + HGIC = "hgicf"; + } else { + printf("open iwpriv file fail\r\n"); + free(buff); + return -1; + } + } + close(fd); + + for (i = 1; i < argc; i++) { + len += sprintf(cmd + len, "%s ", argv[i]); + } + cmd[len - 1] = 0; + + memset(buff, 0, 4096); + ret = hgic_iwpriv_do(cmd, 0, 0, buff, 4096); + printf("RESP:%d\r\n%s\r\n", ret, buff); + free(buff); + return 0; +} + diff --git a/tools/test_app/iwpriv.c b/tools/test_app/iwpriv.c new file mode 100644 index 0000000..29cf005 --- /dev/null +++ b/tools/test_app/iwpriv.c @@ -0,0 +1,1399 @@ +/** + ****************************************************************************** + * @file iwpriv.c + * @author HUGE-IC Application Team + * @version V1.0.0 + * @date 2022-06-23 + * @brief app library for hgic wifi driver. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT 2022 HUGE-IC

+ * + ****************************************************************************** + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "hgic.h" + +#define iwpriv_dbg(fmt, ...) printf("%s:%d::"fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__) + +#define __packed __attribute__((packed)) +#define le16_to_cpu(p) (p) + +#define HCI_OPCODE(ogf, ocf) ((ocf) | ((ogf) << 10)) + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; + +#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x" +#define MACARG(a) (a)[0]&0xff, (a)[1]&0xff, (a)[2]&0xff, (a)[3]&0xff, (a)[4]&0xff, (a)[5]&0xff +#define IPSTR "%d.%d.%d.%d" +#define IPARG(a) ((a)>>24)&0xff, ((a)>>16)&0xff, ((a)>>8)&0xff, (a)&0xff +#define MAC2STR(mac, str) (sprintf((str), MACSTR, MACARG(mac))) +#define STR_EQ(s1,s2) (strcmp(s1,s2)==0) +#define MAC_EQ(a1,a2) (memcmp(a1,a2,6)==0) +#define MAX(a,b) ((a)>(b)?(a):(b)) + +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned int uint32; + +#define WLAN_FC_TODS 0x0100 +#define WLAN_FC_FROMDS 0x0200 +struct ieee80211_hdr { + uint16 frame_control; + uint16 duration_id; + uint8 addr1[6]; + uint8 addr2[6]; + uint8 addr3[6]; + uint16 seq_ctrl; +}; + +enum FMAC_CONNECT_REASON { + FMAC_ASSOC_SUCCESS = 0, + FMAC_ASSOC_REFUSED = 1, + FMAC_ASSOC_DENIED_NO_MORE_STAS = 17, + FMAC_ASSOC_DENIED_INSUFFICIENT_BANDWIDTH = 33, + FMAC_ASSOC_REFUSED_AP_OUT_OF_MEMORY = 93, + FMAC_ASSOC_NO_AP = 0xff +}; + +enum HGIC_MODULE_TYPE { + HGIC_MODULE_TYPE_700M = 1, + HGIC_MODULE_TYPE_900M = 2, + HGIC_MODULE_TYPE_860M = 3, + HGIC_MODULE_TYPE_810M = 5, +}; + +char *HGIC = "hgics"; +int blenc_mode = 0; + +void hgics_dump_hex(char *str, char *data, int len, int newline) +{ + int i = 0; + if (data && len) { + if (str) { + printf("%s", str); + } + + for (i = 0; i < len; i++) { + if (i > 0 && newline) { + if ((i & 0x7) == 0) printf(" "); + if ((i & 0xf) == 0) printf("\r\n"); + } + printf("%02x ", data[i] & 0xFF); + } + + printf("\r\n"); + } +} + +static inline void put_unaligned_le16(unsigned short val, unsigned char *p) +{ + *p++ = val; + *p++ = val >> 8; +} +static inline unsigned short get_unaligned_le16(const unsigned char *p) +{ + return p[0] | p[1] << 8; +} + +char *hgic_hw_state(int state) +{ + switch (state) { + case HGICF_HW_DISCONNECTED: + return "Disconnect"; + case HGICF_HW_DISABLED: + return "DISABLED"; + case HGICF_HW_INACTIVE: + return "INACTIVE"; + case HGICF_HW_SCANNING: + return "SCANNING"; + case HGICF_HW_AUTHENTICATING: + return "AUTHENTICATING"; + case HGICF_HW_ASSOCIATING: + return "ASSOCIATING"; + case HGICF_HW_ASSOCIATED: + return "ASSOCIATED"; + case HGICF_HW_4WAY_HANDSHAKE: + return "4WAY_HANDSHAKE"; + case HGICF_HW_GROUP_HANDSHAKE: + return "GROUP_HANDSHAKE"; + case HGICF_HW_CONNECTED: + return "CONNECTED"; + default: + return "Unknown"; + } +} + +int hgic_str2mac(char *mac_str, unsigned char *mac) +{ + int tmp[6]; + if (mac_str && mac) { + memset(tmp, 0, sizeof(tmp)); + memset(mac, 0, 6); + if (6 == sscanf(mac_str, MACSTR, &tmp[0], &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5])) { + mac[0] = (unsigned char)tmp[0]; + mac[1] = (unsigned char)tmp[1]; + mac[2] = (unsigned char)tmp[2]; + mac[3] = (unsigned char)tmp[3]; + mac[4] = (unsigned char)tmp[4]; + mac[5] = (unsigned char)tmp[5]; + return 1; + } + } + return 0; +} + +int hgic_get_if_mac(char *ifname, char *mac) +{ + int sock; + struct ifreq ifr; + + memset(mac, 0, 6); + sock = socket(AF_INET, SOCK_DGRAM, 0); + if (sock == -1) { + perror("socket"); + return -1; + } + + strcpy(ifr.ifr_name, ifname); + if (ioctl(sock, SIOCGIFHWADDR, &ifr) < 0) { + close(sock); + perror("ioctl"); + return -1; + } + + close(sock); + memcpy(mac, ifr.ifr_hwaddr.sa_data, 6); + return 0; +} + +int hgic_iwpriv_write(char *buff, int len) +{ + int ret = 0; + int fd = -1; + char file[32]; + + if (buff == NULL || len <= 0) { + return 0; + } + memset(file, 0, sizeof(file)); + sprintf(file, "/proc/%s/iwpriv", HGIC); + fd = open(file, O_WRONLY); + if (fd != -1) { + ret = write(fd, buff, len); + close(fd); + } else { + printf("open %s fail\r\n", file); + } + return ret; +} + +int hgic_iwpriv_do(char *cmd, char *in, int in_len, char *out, int out_len) +{ + int ret = strlen(cmd); + int len = ret + MAX(in_len, out_len); + char *ptr = NULL; + char *buff = NULL; + int set = (strstr(cmd, " set ") != NULL); + + buff = malloc(len); + if (buff == NULL) { + printf("no mem, alloc %d\r\n", (ret + in_len + out_len)); + return -1; + } + + memset(buff, 0, len); + strcpy(buff, cmd); + if (in && in_len) { + memcpy(buff + ret, in, in_len); + } + + ret = hgic_iwpriv_write(buff, len); + if (ret > 0) { + ret = *(int *)buff; + if (ret > 0 && out && out_len) { + memcpy(out, buff + 4, ret <= out_len ? ret : out_len); + } + } + + free(buff); + if (ret < 0) { + printf("hgic_iwpriv_write fail, ret=%d\r\n", ret); + } + return ret; +} + +int hgic_iwpriv_set_int(char *ifname, char *name, int val) +{ + char cmd[64]; + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s set %s=%d", ifname, name, val); + return hgic_iwpriv_do(cmd, 0, 0, 0, 0); +} + +int hgic_iwpriv_set_mac(char *ifname, char *name, char *mac) +{ + char cmd[64]; + memset(cmd, 0, sizeof(cmd)); + if (strlen(mac) == 17 && mac[2] == ':' && mac[5] == ':' && mac[8] == ':' && mac[11] == ':' && mac[14] == ':') { + sprintf(cmd, "%s set %s=%s", ifname, name, mac); + } else { + sprintf(cmd, "%s set %s="MACSTR, ifname, name, MACARG(mac)); + } + return hgic_iwpriv_do(cmd, 0, 0, 0, 0); +} + +int hgic_iwpriv_set_ints(char *ifname, char *name, int cnt, ...) +{ + int i = 0; + int val = 0; + char cmd[256]; + char *ptr = cmd; + va_list argptr; + + memset(cmd, 0, sizeof(cmd)); + sprintf(ptr, "%s set %s=", ifname, name); + ptr += strlen(ptr); + + va_start(argptr, cnt); + for (i = 0; i < cnt; i++) { + val = va_arg(argptr, int); + sprintf(ptr, (i == 0 ? "%d" : ",%d"), val); + ptr += strlen(ptr); + } + va_end(argptr); + return hgic_iwpriv_do(cmd, 0, 0, 0, 0); +} + +int hgic_iwpriv_set_intarray(char *ifname, char *name, int *vals, int cnt) +{ + int i = 0; + char cmd[512]; + char *ptr = cmd; + + memset(cmd, 0, sizeof(cmd)); + sprintf(ptr, "%s set %s=", ifname, name); + ptr += strlen(ptr); + + for (i = 0; i < cnt; i++) { + sprintf(ptr, (i == 0 ? "%d" : ",%d"), vals[i]); + ptr += strlen(ptr); + } + return hgic_iwpriv_do(cmd, 0, 0, 0, 0); +} + +int hgic_iwpriv_set_bytes(char *ifname, char *name, char *data, int len) +{ + char cmd[128]; + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s set %s=", ifname, name); + return hgic_iwpriv_do(cmd, data, len, 0, 0); +} + +int hgic_iwpriv_get_int(char *ifname, char *name) +{ + char cmd[128]; + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s get %s", ifname, name); + hgic_iwpriv_do(cmd, 0, 0, cmd, sizeof(cmd)); + return atoi(cmd); +} + +int hgic_iwpriv_get_bytes(char *ifname, char *name, char *buff, int count) +{ + char cmd[128]; + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s get %s", ifname, name); + return hgic_iwpriv_do(cmd, 0, 0, buff, count); +} + +int hgic_iwpriv_get_mac(char *ifname, char *name, char *mac) +{ + int ret = 0; + char cmd[128]; + + memset(mac, 0, 6); + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s get %s", ifname, name); + ret = hgic_iwpriv_do(cmd, 0, 0, cmd, sizeof(cmd)); + if (ret > 0) { + hgic_str2mac(cmd, mac); + } + return ret; +} + +/* proc fs api */ +int hgic_proc_read_bytes(char *name, char *buff, int len) +{ + char file[32]; + int ret = 0; + int fd = -1; + + if (buff == NULL || len <= 0) { + return 0; + } + + memset(buff, 0, len); + memset(file, 0, sizeof(file)); + sprintf(file, "/proc/%s/%s", HGIC, name); + fd = open(file, O_RDONLY); + if (fd != -1) { + ret = read(fd, buff, len); + close(fd); + } + return ret; +} + +int hgic_proc_write_bytes(char *name, char *buff, int len) +{ + int ret = 0; + char file[32]; + int fd = -1; + + if (buff == NULL || len == 0) { + return 0; + } + + memset(file, 0, sizeof(file)); + sprintf(file, "/proc/%s/%s", HGIC, name); + fd = open(file, O_WRONLY); + if (fd != -1) { + ret = write(fd, buff, len); + close(fd); + if (ret < 0) { + perror("error"); + } + } + return ret > 0; +} + +int hgic_proc_read_int(char *name) +{ + char buff[32]; + hgic_proc_read_bytes(name, buff, 32); + return atoi(buff); +} + +int hgic_proc_read_mac(char *name, char *mac) +{ + char buff[32]; + memset(mac, 0, 6); + hgic_proc_read_bytes(name, buff, 32); + return hgic_str2mac(buff, mac); +} + +int hgic_proc_write_int(char *name, int val) +{ + char buff[12]; + memset(buff, 0, sizeof(buff)); + sprintf(buff, "%d", val); + return hgic_proc_write_bytes(name, buff, strlen(buff)); +} + +int hgic_proc_write_mac(char *name, char *mac) +{ + char str[18]; + memset(str, 0, sizeof(str)); + if (strlen(mac) == 17 && mac[2] == ':' && mac[5] == ':' && mac[8] == ':' && mac[11] == ':' && mac[14] == ':') { + strncpy(str, mac, 17); + } else { + MAC2STR(mac, str); + } + return hgic_proc_write_bytes(name, str, strlen(str)); +} + +int hgic_proc_write_ints(char *name, int cnt, ...) +{ + int i = 0; + int val = 0; + char buff[512]; + char *ptr = buff; + va_list argptr; + + memset(buff, 0, sizeof(buff)); + va_start(argptr, cnt); + for (i = 0; i < cnt; i++) { + val = va_arg(argptr, int); + sprintf(ptr, (i == 0 ? "%d" : ",%d"), val); + ptr += strlen(ptr); + } + va_end(argptr); + return hgic_proc_write_bytes(name, buff, strlen(buff)); +} + +int hgic_proc_write_intarray(char *name, int *values, int cnt) +{ + int i = 0; + char buff[512]; + char *ptr = buff; + + memset(buff, 0, sizeof(buff)); + for (i = 0; i < cnt; i++) { + sprintf(ptr, (i == 0 ? "%d" : ",%d"), values[i]); + ptr += strlen(ptr); + } + return hgic_proc_write_bytes(name, buff, strlen(buff)); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// +int hgic_iwpriv_open_dev(char *ifname) +{ + char cmd[32]; + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s open", ifname); + return hgic_iwpriv_do(cmd, NULL, 0, NULL, 0); +} +int hgic_iwpriv_close_dev(char *ifname) +{ + char cmd[32]; + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s close", ifname); + return hgic_iwpriv_do(cmd, NULL, 0, NULL, 0); +} +int hgic_iwpriv_set_ssid(char *ifname, char *ssid) +{ + return hgic_iwpriv_set_bytes(ifname, "ssid", ssid, strlen(ssid)); +} +int hgic_iwpriv_set_bssid(char *ifname, char *bssid) +{ + return hgic_iwpriv_set_mac(ifname, "bssid", bssid); +} +int hgic_iwpriv_set_channel(char *ifname, int channel) +{ + return hgic_iwpriv_set_int(ifname, "channel", channel); +} +int hgic_iwpriv_set_keymgmt(char *ifname, char *key_mgmt) +{ + return hgic_iwpriv_set_bytes(ifname, "key_mgmt", key_mgmt, strlen(key_mgmt)); +} +int hgic_iwpriv_set_wpapsk(char *ifname, char *wpa_psk) +{ + return hgic_iwpriv_set_bytes(ifname, "wpa_psk", wpa_psk, strlen(wpa_psk)); +} +int hgic_iwpriv_set_freqrange(char *ifname, int freq_start, int freq_end, int bw) +{ + return hgic_iwpriv_set_ints(ifname, "freq_range", 3, freq_start, freq_end, bw); +} +int hgic_iwpriv_set_bss_bw(char *ifname, int bss_bw) +{ + return hgic_iwpriv_set_int(ifname, "bss_bw", bss_bw); +} +int hgic_iwpriv_set_tx_bw(char *ifname, int tx_bw) +{ + return hgic_iwpriv_set_int(ifname, "tx_bw", tx_bw); +} +int hgic_iwpriv_set_tx_mcs(char *ifname, int tx_mcs) +{ + return hgic_iwpriv_set_int(ifname, "tx_mcs", tx_mcs); +} +int hgic_iwpriv_set_max_txcnt(char *ifname, int max_txcnt) +{ + return hgic_iwpriv_set_int(ifname, "max_txcnt", max_txcnt); +} +int hgic_iwpriv_set_acs(char *ifname, int start, int tmo) +{ + return hgic_iwpriv_set_ints(ifname, "acs", 2, start, tmo); +} +int hgic_iwpriv_set_chan_list(char *ifname, int *chan_list, int chan_count) +{ + return hgic_iwpriv_set_intarray(ifname, "chan_list", chan_list, chan_count); +} +int hgic_iwpriv_set_mode(char *ifname, char *mode) +{ + return hgic_iwpriv_set_bytes(ifname, "mode", mode, strlen(mode)); +} +int hgic_iwpriv_set_paired_stas(char *ifname, char *paired_stas) +{ + return hgic_iwpriv_set_bytes(ifname, "paired_stas", paired_stas, strlen(paired_stas)); +} +int hgic_iwpriv_set_pairing(char *ifname, int pair_number) +{ + return hgic_iwpriv_set_int(ifname, "pairing", pair_number); +} +int hgic_iwpriv_set_beacon_int(char *ifname, int beacon_int) +{ + return hgic_iwpriv_set_int(ifname, "beacon_int", beacon_int); +} +int hgic_iwpriv_set_radio_onoff(char *ifname, int off) +{ + return hgic_iwpriv_set_int(ifname, "radio_onoff", off); +} +int hgic_iwpriv_set_join_group(char *ifname, char *mcast_addr, int aid) +{ + char cmd[64]; + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s set join_group="MACSTR",%d", ifname, MACARG(mcast_addr), aid); + return hgic_iwpriv_do(cmd, 0, 0, 0, 0); +} +int hgic_iwpriv_set_txpower(char *ifname, int txpower) +{ + return hgic_iwpriv_set_int(ifname, "txpower", txpower); +} +int hgic_iwpriv_set_ps_connect(char *ifname, int period, int roundup) +{ + return hgic_iwpriv_set_ints(ifname, "ps_connect", 2, period, roundup); +} +int hgic_iwpriv_set_bss_max_idle(char *ifname, int bss_max_idle) +{ + return hgic_iwpriv_set_int(ifname, "bss_max_idle", bss_max_idle); +} +int hgic_iwpriv_set_wkio_mode(char *ifname, int wkio_mode) +{ + return hgic_iwpriv_set_int(ifname, "wkio_mode", wkio_mode); +} +int hgic_iwpriv_set_dtim_period(char *ifname, int dtim_period) +{ + return hgic_iwpriv_set_int(ifname, "dtim_period", dtim_period); +} +int hgic_iwpriv_set_ps_mode(char *ifname, int ps_mode) +{ + return hgic_iwpriv_set_int(ifname, "ps_mode", ps_mode); +} +int hgic_iwpriv_set_aplost_time(char *ifname, int aplost_time) +{ + return hgic_iwpriv_set_int(ifname, "aplost_time", aplost_time); +} +int hgic_iwpriv_unpair(char *ifname, char *mac) +{ + return hgic_iwpriv_set_mac(ifname, "unpair", mac); +} +int hgic_iwpriv_scan(char *ifname) +{ + char cmd[32]; + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s scan", ifname); + return hgic_iwpriv_do(cmd, 0, 0, 0, 0); +} +int hgic_iwpriv_save(char *ifname) +{ + char cmd[32]; + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s save", ifname); + return hgic_iwpriv_do(cmd, 0, 0, 0, 0); +} +int hgic_iwpriv_set_auto_chswitch(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "auto_chswitch", enable); +} +int hgic_iwpriv_set_mcast_key(char *ifname, char *mcast_key) +{ + return hgic_iwpriv_set_bytes(ifname, "mcast_key", mcast_key, strlen(mcast_key)); +} +int hgic_iwpriv_set_reassoc_wkhost(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "reassoc_wkhost", enable); +} +int hgic_iwpriv_set_wakeup_io(char *ifname, int wakeup_io) +{ + return hgic_iwpriv_set_int(ifname, "wakeup_io", wakeup_io); +} +int hgic_iwpriv_set_dbginfo(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "dbginfo", enable); +} +int hgic_iwpriv_set_sysdbg(char *ifname, char *sysdbg) +{ + return hgic_iwpriv_set_bytes(ifname, "sysdbg", sysdbg, strlen(sysdbg)); +} +int hgic_iwpriv_set_primary_chan(char *ifname, int primary_chan) +{ + return hgic_iwpriv_set_int(ifname, "primary_chan", primary_chan); +} +int hgic_iwpriv_set_autosleep_time(char *ifname, int autosleep_time) +{ + return hgic_iwpriv_set_int(ifname, "autosleep_time", autosleep_time); +} +int hgic_iwpriv_set_super_pwr(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "super_pwr", enable); +} +int hgic_iwpriv_set_repeater_ssid(char *ifname, char *r_ssid) +{ + return hgic_iwpriv_set_bytes(ifname, "r_ssid", r_ssid, strlen(r_ssid)); +} +int hgic_iwpriv_set_repeater_psk(char *ifname, char *r_psk) +{ + return hgic_iwpriv_set_bytes(ifname, "r_psk", r_psk, strlen(r_psk)); +} +int hgic_iwpriv_set_auto_save(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "auto_save", enable); +} +int hgic_iwpriv_set_pair_autostop(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "pair_autostop", enable); +} +int hgic_iwpriv_set_dcdc13(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "dcdc13", enable); +} +int hgic_iwpriv_set_acktmo(char *ifname, int acktmo) +{ + return hgic_iwpriv_set_int(ifname, "acktmo", acktmo); +} +int hgic_iwpriv_get_sta_list(char *ifname, char *buff, int size) +{ + return hgic_iwpriv_get_bytes(ifname, "sta_list=1", buff, size);//output binary structure +} +int hgic_iwpriv_get_scan_list(char *ifname, char *buff, int size) +{ + return hgic_iwpriv_get_bytes(ifname, "scan_list", buff, size); +} +int hgic_iwpriv_get_ssid(char *ifname, char *buff, int size) +{ + return hgic_iwpriv_get_bytes(ifname, "ssid", buff, size); +} +int hgic_iwpriv_get_bssid(char *ifname, char *mac) +{ + char buf[32]; + int tmp[7]; + if(hgic_iwpriv_get_bytes(ifname, "bssid", buf, sizeof(buf)) > 0){ + if (6 == sscanf(buf, MACSTR",%d", &tmp[0], &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5], &tmp[6])) { + mac[0] = (unsigned char)tmp[0]; + mac[1] = (unsigned char)tmp[1]; + mac[2] = (unsigned char)tmp[2]; + mac[3] = (unsigned char)tmp[3]; + mac[4] = (unsigned char)tmp[4]; + mac[5] = (unsigned char)tmp[5]; + return tmp[6]; + } + } + return -1; +} +int hgic_iwpriv_get_wpa_psk(char *ifname, char *buff, int size) +{ + return hgic_iwpriv_get_bytes(ifname, "wpa_psk", buff, size); +} +int hgic_iwpriv_get_txpower(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "txpower"); +} +int hgic_iwpriv_get_aggcnt(char *ifname, int *tx_agg, int *rx_agg) +{ + char buff[32]; + if(hgic_iwpriv_get_bytes(ifname, "agg_cnt", buff, 32) > 0){ + sscanf(buff, "tx:%d,rx:%d", tx_agg, rx_agg); + return 0; + } + return -1; +} +int hgic_iwpriv_set_aggcnt(char *ifname, int tx_agg, int rx_agg) +{ + return hgic_iwpriv_set_ints(ifname, "agg_cnt", 2, tx_agg, rx_agg); +} +int hgic_iwpriv_set_load_def(char *ifname, int reboot) +{ + return hgic_iwpriv_set_int(ifname, "loaddef", reboot); +} +int hgic_iwpriv_set_dbginfo_output(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "dbginfo", enable); +} +int hgic_iwpriv_set_unpair(char *ifname, char *sta_mac) +{ + return hgic_iwpriv_set_mac(ifname, "unpair", sta_mac); +} +int hgic_iwpriv_get_bss_bw(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "bss_bw"); +} +int hgic_iwpriv_get_chan_list(char *ifname, char *buff, int size) +{ + return hgic_iwpriv_get_bytes(ifname, "chan_list", buff, size); +} +int hgic_iwpriv_get_freq_range(char *ifname, char *buff, int size) +{ + return hgic_iwpriv_get_bytes(ifname, "freq_range", buff, size); +} +int hgic_iwpriv_get_txq_param(char *ifname, char *buff, int size) +{ + return hgic_iwpriv_get_bytes(ifname, "txq_param", buff, size); +} +int hgic_iwpriv_get_key_mgmt(char *ifname, char *buff, int size) +{ + return hgic_iwpriv_get_bytes(ifname, "key_mgmt", buff, size); +} +int hgic_iwpriv_get_battery_level(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "battery_level"); +} +int hgic_iwpriv_get_module_type(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "module_type"); +} +int hgic_iwpriv_set_pa_pwrctrl_dis(char *ifname, int disable) +{ + return hgic_iwpriv_set_int(ifname, "pa_pwrctl_dis", disable); +} +int hgic_iwpriv_set_dhcpc(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "dhcpc", enable); +} +int hgic_iwpriv_get_disassoc_reason(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "disassoc_reason"); +} +int hgic_iwpriv_set_wkdata_save(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "wkdata_save", enable); +} +int hgic_iwpriv_set_mcast_txparam(char *ifname, int dupcnt, int tx_bw, int tx_mcs, int clearch) +{ + return hgic_iwpriv_set_ints(ifname, "mcast_txparam", 4, dupcnt, tx_bw, tx_mcs, clearch); +} +int hgic_iwpriv_reset_sta(char *ifname, char *mac_addr) +{ + return hgic_iwpriv_set_mac(ifname, "reset_sta", mac_addr); +} +int hgic_iwpriv_ant_auto(char *ifname, int en) +{ + return hgic_iwpriv_set_int(ifname, "ant_auto", en); +} +int hgic_iwpriv_set_ant_sel(char *ifname, int ant) +{ + return hgic_iwpriv_set_int(ifname, "ant_sel", ant); +} +int hgic_iwpriv_get_ant_sel(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "ant_sel"); +} +int hgic_iwpriv_set_macfilter(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "macfilter", enable); +} +int hgic_iwpriv_send_atcmd(char *ifname, char *atcmd) +{ + return hgic_iwpriv_set_bytes(ifname, "atcmd", atcmd, strlen(atcmd)); +} +int hgic_iwpriv_set_roaming(char *ifname, int enable, int same_freq, int threshold, int rssi_diff, int rssi_interval) +{ + return hgic_iwpriv_set_ints(ifname, "roaming", 5, enable, same_freq, threshold, rssi_diff, rssi_interval); +} +int hgic_iwpriv_get_conn_state(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "conn_state"); +} + +int hgic_iwpriv_get_wkreason(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "wkreason"); +} + +int hgic_iwpriv_set_rts_threshold(char *ifname, int rts_threshold) +{ + return hgic_iwpriv_set_int(ifname, "rts_threshold", rts_threshold); +} + +int hgic_iwpriv_set_frag_threshold(char *ifname, int frag_threshold) +{ + return hgic_iwpriv_set_int(ifname, "frag_threshold", frag_threshold); +} + +int hgic_iwpriv_set_heartbeat(char *ifname, int ipaddr, int port, int period, int timeout) +{ + char str[64]; + struct in_addr in = { .s_addr = (in_addr_t)ipaddr }; + sprintf(str, "%s,%d,%d,%d", inet_ntoa(in), port, period, timeout); + return hgic_iwpriv_set_bytes(ifname, "heartbeat", str, strlen(str)); +} +int hgic_iwpriv_set_heartbeat_resp_data(char *ifname, char *resp_data, int len) +{ + return hgic_iwpriv_set_bytes(ifname, "heartbeat_resp", resp_data, len); +} +int hgic_iwpriv_set_wakeup_data(char *ifname, char *wakeup_data, int len) +{ + return hgic_iwpriv_set_bytes(ifname, "wakeup_data", wakeup_data, len); +} +int hgic_iwpriv_wakeup_sta(char *ifname, char *addr) +{ + return hgic_iwpriv_set_mac(ifname, "wakeup", addr); +} +int hgic_iwpriv_sleep(char *ifname, int sleep_type, unsigned int sleep_ms) +{ + return hgic_iwpriv_set_ints(ifname, "sleep", 2, sleep_type, sleep_ms); +} +int hgic_iwpriv_send_custmgmt(char *ifname, char *dest, struct hgic_tx_info *txinfo, char *data, int len) +{ /* "data" is just payload data, the firmware will build WiFi management frame. */ + int ret = -1; + char *buf = malloc(len+sizeof(struct hgic_tx_info)+6); + if(buf){ + memcpy(buf, dest, 6); + memcpy(buf+6, txinfo, sizeof(struct hgic_tx_info)); + memcpy(buf+6+sizeof(struct hgic_tx_info), data, len); + ret = hgic_iwpriv_set_bytes(ifname, "custmgmt", buf, len+6+sizeof(struct hgic_tx_info)); + free(buf); + } + return ret; +} +int hgic_iwpriv_send_mgmtframe(char *ifname, struct hgic_tx_info *txinfo, char *mgmt, int len) +{ /* "mgmt" should be a whole WiFi management frame. */ + int ret = -1; + char *buf = malloc(len + sizeof(struct hgic_tx_info)); + if(buf){ + memcpy(buf, txinfo, sizeof(struct hgic_tx_info)); + memcpy(buf + sizeof(struct hgic_tx_info), mgmt, len); + ret = hgic_iwpriv_set_bytes(ifname, "mgmtframe", buf, len + sizeof(struct hgic_tx_info)); + free(buf); + } + return ret; +} +int hgic_iwpriv_read_wkdata_buff(char *ifname, char *buff, int len) +{ + return hgic_iwpriv_get_bytes(ifname, "wkdata_buff", buff, len); +} +int hgic_proc_set_wkdata_mask(char *ifname, unsigned short offset, char *mask, int mask_len) +{ + char buff[128]; + if(mask_len > 16) mask_len = 16; + memcpy(buff, &offset, 2); + memcpy(buff+2, mask, mask_len); + return hgic_iwpriv_set_bytes(ifname, "wkdata_mask", buff, mask_len + 2); +} +int hgic_iwpriv_set_cust_driverdata(char *ifname, char *buff, int len) +{ + if(len > 1500){ + printf("data len:%d too big\r\n", len); + return -1; + } + return hgic_iwpriv_set_bytes(ifname, "driverdata", buff, len); +} +int hgic_iwpriv_set_stafreqinfo(char *ifname, char *sta_addr, struct hgic_freqinfo *freqinfo) +{ + int ret = -1; + char *buff = malloc(6+sizeof(struct hgic_freqinfo)); + if(buff){ + memset(buff, 0, 6+sizeof(struct hgic_freqinfo)); + if(sta_addr) memcpy(buff, sta_addr, 6); + memcpy(buff+6, freqinfo, sizeof(struct hgic_freqinfo)); + ret = hgic_iwpriv_set_bytes(ifname, "freqinfo", buff, 6+sizeof(struct hgic_freqinfo)); + free(buff); + } + return ret; +} +int hgic_iwpriv_blenc_start(char *ifname, int start, int channel) +{ + char str[8]; + sprintf(str, "EN:%d,%d", start, channel); + return hgic_iwpriv_set_bytes(ifname, "blenc", str, strlen(str)); +} +int hgic_iwpriv_send_blenc_data(char *ifname, char *data, int len) +{ + int ret = -1; + char *buff = malloc(5 + len); + if (buff) { + strcpy(buff, "DATA:"); + memcpy(buff + 5, data, len); + ret = hgic_iwpriv_set_bytes(ifname, "blenc", buff, 5 + len); + free(buff); + } + return ret; +} +int hgic_iwpriv_blenc_send_hcidata(char *ifname, int type, char *data, int len) +{ + int ret = -1; + char *buff = malloc(10 + len); + if (buff) { + strcpy(buff, "HCI_DATA:"); + buff[9] = (unsigned char)type; + memcpy(buff + 10, data, len); + ret = hgic_iwpriv_set_bytes(ifname, "blenc", buff, 10 + len); + free(buff); + } + return ret; +} + +int hgic_iwpriv_blenc_set_advdata(char *ifname, char *adv_data, int len) +{ + if(blenc_mode == 3){ + int ret = -ENOMEM; + int cmd_len = 3 + len; + char *cmd = malloc(cmd_len); + if(cmd){ + put_unaligned_le16(HCI_OPCODE(0x08, 0x08), cmd); + cmd[2] = len; + memcpy(cmd + 3, adv_data, len); + ret = hgic_iwpriv_blenc_send_hcidata(ifname, 0x01, cmd, cmd_len); + free(cmd); + } + return ret; + }else{ + int ret = -1; + char *buff = malloc(9 + len); + if (buff) { + strcpy(buff, "ADV_DATA:"); + memcpy(buff + 9, adv_data, len); + ret = hgic_iwpriv_set_bytes(ifname, "blenc", buff, 9 + len); + free(buff); + } + return ret; + } +} + +int hgic_iwpriv_blenc_set_scanresp(char *ifname, char *scan_resp, int len) +{ + if(blenc_mode == 3){ + int ret = -ENOMEM; + int cmd_len = 3 + len; + char *cmd = malloc(cmd_len); + if(cmd){ + put_unaligned_le16(HCI_OPCODE(0x08, 0x09), cmd); + cmd[2] = len; + memcpy(cmd + 3, scan_resp, len); + ret = hgic_iwpriv_blenc_send_hcidata(ifname, 0x01, cmd, cmd_len); + free(cmd); + } + return ret; + }else{ + int ret = -1; + char *buff = malloc(10 + len); + if (buff) { + strcpy(buff, "SCAN_RESP:"); + memcpy(buff + 10, scan_resp, len); + ret = hgic_iwpriv_set_bytes(ifname, "blenc", buff, 10 + len); + free(buff); + } + return ret; + } +} + +int hgic_iwpriv_blenc_set_devaddr(char *ifname, char *addr) +{ + if(blenc_mode == 3){ + int ret = -ENOMEM; + int cmd_len = 3 + 6; + char *cmd = malloc(cmd_len); + if(cmd){ + put_unaligned_le16(HCI_OPCODE(0x08, 0x05), cmd); + cmd[2] = 6; + memcpy(cmd + 3, addr, 6); + ret = hgic_iwpriv_blenc_send_hcidata(ifname, 0x01, cmd, cmd_len); + free(cmd); + } + return ret; + }else{ + char str[16]; + strcpy(str, "DEV_ADDR:"); + memcpy(str + 9, addr, 6); + return hgic_iwpriv_set_bytes(ifname, "blenc", str, 15); + } +} + +int hgic_iwpriv_blenc_set_adv_interval(char *ifname, int interval) +{ + if(blenc_mode == 3){ + return 0; + }else{ + char str[16]; + sprintf(str, "ADV_INT:%d", interval); + return hgic_iwpriv_set_bytes(ifname, "blenc", str, strlen(str)); + } +} + +int hgic_iwpriv_blenc_set_adv_filter(char *ifname, int filter) +{ + if(blenc_mode == 3){ + return 0; + }else{ + char str[16]; + sprintf(str, "ADV_FILTER:%d", filter); + return hgic_iwpriv_set_bytes(ifname, "blenc", str, strlen(str)); + } +} + +int hgic_iwpriv_blenc_start_adv(char *ifname, int start) +{ + if(blenc_mode == 3){ + int ret = -ENOMEM; + int cmd_len = 3 + 1; + char *cmd = malloc(cmd_len); + if(cmd){ + put_unaligned_le16(HCI_OPCODE(0x08, 0x0A), cmd); + cmd[2] = 1; + cmd[3] = start; + ret = hgic_iwpriv_blenc_send_hcidata(ifname, 0x01, cmd, cmd_len); + free(cmd); + } + return ret; + }else{ + char str[16]; + sprintf(str, "ADV_EN:%d", start); + return hgic_iwpriv_set_bytes(ifname, "blenc", str, strlen(str)); + + } +} + +int hgic_iwpriv_blenc_send_gatt_data(char *ifname, char *att_data, int len) +{ + int ret = -ENOMEM; + char *data = malloc(8 + len); + if(data){ + hgics_dump_hex("SEND:\r\n", att_data, len, 1); + // 0 - Connection handle : PB=pb : BC=00 + put_unaligned_le16(0x1, data); + // 2 - ACL length + put_unaligned_le16(len + 4u, data+2); + // 4 - L2CAP packet length + put_unaligned_le16(len + 0u, data+4); + // 6 - L2CAP CID + put_unaligned_le16(0x04, data+6); + memcpy(data+8, att_data, len); + ret = hgic_iwpriv_blenc_send_hcidata(ifname, 0x02, data, 8 + len); + free(data); + } + return ret; +} + +int hgic_iwpriv_set_hwscan(char *ifname, int period, int chan_tmo, int chan_bitmap, int max_cnt) +{ + return hgic_iwpriv_set_ints(ifname, "hwscan", 4, period, chan_tmo, chan_bitmap, max_cnt); +} +int hgic_proc_ota(char *fw_file) +{ + return hgic_proc_write_bytes("ota", fw_file, strlen(fw_file)); +} +int hgic_iwpriv_set_user_edca(char *ifname, int ac, struct hgic_txq_param *txq) +{ + char buf[32]; + buf[0] = ac; + memcpy(buf+1, txq, sizeof(struct hgic_txq_param)); + return hgic_iwpriv_set_bytes(ifname, "user_edca", buf, 1+sizeof(struct hgic_txq_param)); +} +int hgic_iwpriv_set_fix_txrate(char *ifname, unsigned int txrate) +{ + return hgic_iwpriv_set_int(ifname, "fix_txrate", txrate); +} +int hgic_iwpriv_set_nav_max(char *ifname, unsigned int nav_max) +{ + return hgic_iwpriv_set_int(ifname, "nav_max", nav_max); +} +int hgic_iwpriv_clear_nav(char *ifname) +{ + return hgic_iwpriv_set_int(ifname, "clr_nav", 0); +} +int hgic_iwpriv_set_cca_param(char *ifname, struct hgic_cca_ctl *cca) +{ + return hgic_iwpriv_set_bytes(ifname, "cca_param", (char *)cca, sizeof(struct hgic_cca_ctl)); +} +int hgic_iwpriv_set_tx_modulation_gain(char *ifname, char *gain_table, int size) +{ + return hgic_iwpriv_set_bytes(ifname, "tx_modgain", gain_table, size); +} + +int hgic_iwpriv_get_nav(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "nav"); +} + +int hgic_iwpriv_get_bgrssi(char *ifname, int channel, int bgrssi[3]) +{ + int ret = 0; + char cmd[32]; + + memset(cmd, 0, sizeof(cmd)); + sprintf(cmd, "%s get bgrssi=%d", ifname, channel); + hgic_iwpriv_do(cmd, 0, 0, cmd, sizeof(cmd)); + if(3 == sscanf(cmd, "%d,%d,%d", bgrssi, bgrssi+1, bgrssi+2)){ + return 0; + } + return -1; +} + +int hgic_iwpriv_reset(char *ifname) +{ + return hgic_iwpriv_set_int(ifname, "reset", 0); +} + +int hgic_iwpriv_set_rts_duration(char *ifname, unsigned int duration_us) +{ + return hgic_iwpriv_set_int(ifname, "rts_duration", duration_us); +} + +int hgic_iwpriv_set_disable_print(char *ifname, int disable) +{ + return hgic_iwpriv_set_int(ifname, "disable_print", disable); +} + +int hgic_iwpriv_set_conn_paironly(char *ifname, int en) +{ + return hgic_iwpriv_set_int(ifname, "conn_paironly", en); +} + +int hgic_iwpriv_get_center_freq(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "center_freq"); +} + +int hgic_iwpriv_set_wait_psmode(char *ifname, int mode) +{ + return hgic_iwpriv_set_int(ifname, "wait_psmode", mode); +} + +int hgic_iwpriv_set_diffcust_conn(char *ifname, int en) +{ + return hgic_iwpriv_set_int(ifname, "diffcust_conn", en); +} + +int hgic_iwpriv_set_standby(char *ifname, int channel, int sleep_period) +{ + return hgic_iwpriv_set_ints(ifname, "standby", 2, channel, sleep_period); +} + +int hgic_iwpriv_set_ap_chan_switch(char *ifname, int channel, int counter) +{ + return hgic_iwpriv_set_ints(ifname, "ap_chansw", 2, channel, counter); +} + +int hgic_iwpriv_set_cca_for_ce(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "cca_ce", enable); +} + +int hgic_iwpriv_set_rtc(char *ifname, int rtc) +{ + return hgic_iwpriv_set_int(ifname, "rtc", rtc); +} + +int hgic_iwpriv_get_rtc(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "rtc"); +} + +int hgic_iwpriv_set_apep_padding(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "apep_padding", enable); +} + +int hgic_iwpriv_set_freqinfo(char *ifname, char *sta_addr, struct hgic_freqinfo *freqinfo) +{ + int ret = -1; + char *data = malloc(6 + sizeof(struct hgic_freqinfo)); + if(data){ + memcpy(data, sta_addr, 6); + memcpy(data+6, freqinfo, sizeof(struct hgic_freqinfo)); + ret = hgic_iwpriv_set_bytes(ifname, "freqinfo", data, 6 + sizeof(struct hgic_freqinfo)); + free(data); + } + return ret; +} + +int hgic_iwpriv_get_acs_result(char *ifname, char *buff, int len) +{ + return hgic_iwpriv_get_bytes(ifname, "acs_result", buff, len); +} + +int hgic_iwpriv_get_reason_code(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "reason_code"); +} + +int hgic_iwpriv_get_status_code(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "status_code"); +} + +int hgic_iwpriv_set_watchdog(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "watchdog", enable); +} + +int hgic_iwpriv_set_retry_fallback_cnt(char *ifname, int count) +{ + return hgic_iwpriv_set_int(ifname, "retry_fallback_cnt", count); +} + +int hgic_iwpriv_set_fallback_mcs(char *ifname, int original_type, int original_mcs, int fallback_type, int fallback_mcs) +{ + return hgic_iwpriv_set_ints(ifname, "fallback_mcs", 4, original_type, original_mcs, fallback_type, fallback_mcs); +} + +int hgic_iwpriv_get_xosc(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "xosc"); +} + +int hgic_iwpriv_get_freq_offset(char *ifname, char *mac_addr) +{ + char cmd[128]; + memset(cmd, 0, sizeof(cmd)); + + if(mac_addr){ + if (strlen(mac_addr) == 17 && mac_addr[2] == ':' && mac_addr[5] == ':' && mac_addr[8] == ':' && mac_addr[11] == ':' && mac_addr[14] == ':') { + sprintf(cmd, "%s get freq_offset=%s", ifname, mac_addr); + } else { + sprintf(cmd, "%s get freq_offset="MACSTR, ifname, MACARG(mac_addr)); + } + }else{ + sprintf(cmd, "%s get freq_offset=00:00:00:00:00:00", ifname); + } + hgic_iwpriv_do(cmd, 0, 0, cmd, sizeof(cmd)); + return atoi(cmd); +} + +int hgic_iwpriv_set_xosc(char *ifname, int xosc) +{ + return hgic_iwpriv_set_int(ifname, "xosc", xosc); +} + +int hgic_iwpriv_set_freq_cali_period(char *ifname, int period) +{ + return hgic_iwpriv_set_int(ifname, "freq_cali_period", period); +} + +int hgic_iwpriv_set_customer_dvrdata(char *ifname, unsigned short cmd_id, char *data, int len) +{ + int ret = 0; + char *buff = malloc(2+len); + if(buff){ + put_unaligned_le16(cmd_id, buff); + memcpy(buff+2, data, len); + ret = hgic_iwpriv_set_bytes(ifname, "cust_drvdata", buff, 2+len); + free(buff); + return ret; + } + return -ENOMEM; +} + +int hgic_iwpriv_get_fwinfo(char *ifname, struct hgic_fw_info *fwifno) +{ + return hgic_iwpriv_get_bytes(ifname, "fwinfo", fwifno, sizeof(struct hgic_fw_info)); +} + +int hgic_iwpriv_set_disassoc_sta(char *ifname, char *sta_mac) +{ + return hgic_iwpriv_set_mac(ifname, "disassoc_sta", sta_mac); +} + +int hgic_iwpriv_set_pa_pwrctl_dis(char *ifname, int disable) +{ + return hgic_iwpriv_set_int(ifname, "pa_pwrctl_dis", disable); +} + +int hgic_iwpriv_set_ant_auto(char *ifname, int eanble) +{ + return hgic_iwpriv_set_int(ifname, "ant_auto", eanble); +} + +int hgic_iwpriv_set_select_ant(char *ifname, int ant) +{ + return hgic_iwpriv_set_int(ifname, "ant_sel", ant); +} + +int hgic_iwpriv_set_wkhost_reasons(char *ifname, int* reasons_array, int array_count) +{ + return hgic_iwpriv_set_intarray(ifname, "wkhost_reason", reasons_array, array_count); +} +int hgic_iwpriv_set_atcmd(char *ifname, char* atcmd) +{ + return hgic_iwpriv_set_bytes(ifname, "atcmd", atcmd, strlen(atcmd)); +} +int hgic_iwpriv_set_ap_hide(char *ifname, int hide) +{ + return hgic_iwpriv_set_int(ifname, "ap_hide", hide); +} +int hgic_iwpriv_set_assert_holdup(char *ifname, int hold) +{ + return hgic_iwpriv_set_int(ifname, "assert_holdup", hold); +} +int hgic_iwpriv_set_ap_psmode(char *ifname, int ap_psmode) +{ + return hgic_iwpriv_set_int(ifname, "ap_psmode", ap_psmode); +} +int hgic_iwpriv_set_dupfilter_en(char *ifname, int enable) +{ + return hgic_iwpriv_set_int(ifname, "dupfilter", enable); +} +int hgic_iwpriv_set_dis_1v1m2u(char *ifname, int disable) +{ + return hgic_iwpriv_set_int(ifname, "dis_1v1m2u", disable); +} +int hgic_iwpriv_set_dis_psconnect(char *ifname, int disable) +{ + return hgic_iwpriv_set_int(ifname, "dis_psconnect", disable); +} +int hgic_iwpriv_set_wkdata_mask(char *ifname, int offset/*from IP hdr*/, char *mask, int mask_len) +{ + char buff[64]; + if(mask_len > 32) mask_len = 32; + buff[0] = offset; + memcpy(buff + 1, mask, mask_len); + return hgic_iwpriv_set_bytes(ifname, "wkdata_mask", buff, mask_len + 1); +} +int hgic_iwpriv_get_mode(char *ifname, char *mode) +{ + return hgic_iwpriv_get_bytes(ifname, "mode", mode, 8); +} +int hgic_iwpriv_get_wkdata_buff(char *ifname, char *buff, int buff_size) +{ + return hgic_iwpriv_get_bytes(ifname, "wkdata_buff", buff, buff_size); +} +int hgic_iwpriv_get_temperature(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "temperature"); +} +int hgic_iwpriv_get_sta_count(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "sta_count"); +} +int hgic_iwpriv_get_dhcpc_result(char *ifname, struct hgic_dhcp_result *result) +{ + return hgic_iwpriv_get_bytes(ifname, "dhcpc_result", result, sizeof(struct hgic_dhcp_result)); +} + +int hgic_iwpriv_set_max_tx_delay(char *ifname, int tmo) +{ + return hgic_iwpriv_set_int(ifname, "max_txdelay", tmo); +} + +int hgic_iwpriv_set_heartbeat_int(char *ifname, int interval_ms) +{ + return hgic_iwpriv_set_int(ifname, "heartbeat_int", interval_ms); +} + +int hgic_iwpriv_get_sta_info(char *ifname, char *mac_addr, struct hgic_sta_info *stainfo) +{ + char cmd[128]; + memset(cmd, 0, sizeof(cmd)); + + if(mac_addr == NULL || stainfo == NULL){ + printf("get sta_info: invalid mac address\r\n"); + return -1; + } + + if (strlen(mac_addr) == 17 && mac_addr[2] == ':' && mac_addr[5] == ':' && mac_addr[8] == ':' && mac_addr[11] == ':' && mac_addr[14] == ':') { + sprintf(cmd, "%s get stainfo=%s,1", ifname, mac_addr); + } else { + sprintf(cmd, "%s get stainfo="MACSTR",1", ifname, MACARG(mac_addr)); + } + return hgic_iwpriv_do(cmd, 0, 0, stainfo, sizeof(struct hgic_sta_info)); +} + +int hgic_iwpriv_get_signal(char *ifname) +{ + return hgic_iwpriv_get_int(ifname, "signal"); +} + diff --git a/tools/test_app/libnetat.c b/tools/test_app/libnetat.c new file mode 100644 index 0000000..2e792e9 --- /dev/null +++ b/tools/test_app/libnetat.c @@ -0,0 +1,254 @@ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define MAC2STR(a) (a)[0]&0xff, (a)[1]&0xff, (a)[2]&0xff, (a)[3]&0xff, (a)[4]&0xff, (a)[5]&0xff +#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x" + +#define NETAT_BUFF_SIZE (1024) +#define NETAT_PORT (56789) + +enum WNB_NETAT_CMD { + WNB_NETAT_CMD_SCAN_REQ = 1, + WNB_NETAT_CMD_SCAN_RESP, + WNB_NETAT_CMD_AT_REQ, + WNB_NETAT_CMD_AT_RESP, +}; + +struct wnb_netat_cmd { + char cmd; + char len[2]; + char dest[6]; + char src[6]; + char data[0]; +}; + +struct netat_mgr { + int sock; + char dest[6]; + char cookie[6]; + char recvbuf[NETAT_BUFF_SIZE]; +} libnetat; + +static void random_bytes(char *buff, int len) +{ + int i = 0; + srand(time(NULL)); + for (i = 0; i < len; i++) { + buff[i] = (char)(rand() & 0xff); + } +} + +static int sock_send(int sock, char *data, int len) +{ + int addr_len = sizeof(struct sockaddr_in); + struct sockaddr_in dest; + + memset(&dest, 0, sizeof(struct sockaddr_in)); + dest.sin_family = AF_INET; + dest.sin_addr.s_addr = INADDR_BROADCAST; + dest.sin_port = htons(NETAT_PORT); + return sendto(sock, data, len, 0, (struct sockaddr *)&dest, addr_len); +} + +static int sock_recv(int sock, struct sockaddr_in *dest, char *data, int len, int tmo) +{ + int ret = 0; + fd_set rfd; + struct timeval timeout; + int addr_len = sizeof(struct sockaddr_in); + + FD_ZERO(&rfd); + FD_SET(sock, &rfd); + timeout.tv_sec = 0; + timeout.tv_usec = tmo * 1000; + + ret = select(sock + 1, &rfd, NULL, NULL, &timeout); + if (ret > 0 && FD_ISSET(sock, &rfd)) { + ret = recvfrom(sock, data, len, 0, (struct sockaddr *)dest, &addr_len); + } + + //printf("sock_recv, len=%d\r\n", ret); + return ret; +} + +static void netat_scan(void) +{ + struct wnb_netat_cmd scan; + + random_bytes(libnetat.cookie, 6); + memset(&scan, 0, sizeof(scan)); + scan.cmd = WNB_NETAT_CMD_SCAN_REQ; + memset(scan.dest, 0xff, 6); + memcpy(scan.src, libnetat.cookie, 6); + sock_send(libnetat.sock, (char *)&scan, sizeof(scan)); +} + +static void netat_send(char *atcmd) +{ + unsigned short len = strlen(atcmd); + struct wnb_netat_cmd *cmd = (struct wnb_netat_cmd *)malloc(strlen(atcmd) + sizeof(struct wnb_netat_cmd)); + + if (cmd) { + random_bytes(libnetat.cookie, 6); + len = htons(len); + memset(cmd, 0, sizeof(struct wnb_netat_cmd)); + cmd->cmd = WNB_NETAT_CMD_AT_REQ; + memcpy(cmd->len, &len, 2); + memcpy(cmd->dest, libnetat.dest, 6); + memcpy(cmd->src, libnetat.cookie, 6); + memcpy(cmd->data, atcmd, strlen(atcmd)); + sock_send(libnetat.sock, (char *)cmd, strlen(atcmd) + sizeof(struct wnb_netat_cmd)); + free(cmd); + //printf("send atcmd: %s\r\n", atcmd); + } +} + +static int netat_recv(char *buff, int len, int tmo) +{ + int ret; + int off = 0; + struct sockaddr_in from; + struct wnb_netat_cmd *cmd; + + do { + memset(libnetat.recvbuf, 0, NETAT_BUFF_SIZE); + ret = sock_recv(libnetat.sock, &from, libnetat.recvbuf, NETAT_BUFF_SIZE, tmo); + if (ret >= sizeof(struct wnb_netat_cmd)) { + cmd = (struct wnb_netat_cmd *)libnetat.recvbuf; + //printf("recv type=%d\r\n", cmd->cmd); + if (memcmp(cmd->dest, libnetat.cookie, 6) == 0) { + switch (cmd->cmd) { + case WNB_NETAT_CMD_SCAN_RESP: + memcpy(libnetat.dest, cmd->src, 6); + break; + case WNB_NETAT_CMD_AT_RESP: + if (buff) { + strncpy(buff + off, cmd->data, ret - sizeof(struct wnb_netat_cmd)); + off += (ret - sizeof(struct wnb_netat_cmd)); + } else { + printf("%s\r\n", cmd->data); + } + break; + default: + break; + } + } + } + } while (ret > 0); + if (buff) { buff[off] = 0; } +} + +int libnetat_init(char *ifname) +{ + int on = 1; + struct sockaddr_in local_addr; + struct ifreq req; + + memset(libnetat.dest, 0xff, 6); + libnetat.sock = socket(AF_INET, SOCK_DGRAM, 0); + if (libnetat.sock < 0) { + printf("create udp socket error:[%d:%s]\n", errno, strerror(errno)); + return -1; + } + + memset(&local_addr, 0, sizeof(struct sockaddr_in)); + local_addr.sin_family = AF_INET; + local_addr.sin_addr.s_addr = htonl(INADDR_ANY); + local_addr.sin_port = htons(NETAT_PORT); + + if (setsockopt(libnetat.sock, SOL_SOCKET, SO_BROADCAST, (const char *)&on, sizeof(on)) < 0) { + close(libnetat.sock); + libnetat.sock = 0; + return -1; + } + + strcpy(req.ifr_name, ifname); + if (setsockopt(libnetat.sock, SOL_SOCKET, SO_BINDTODEVICE, (const char *)&req, sizeof(req)) < 0) { + close(libnetat.sock); + libnetat.sock = 0; + return -1; + } + + if (bind(libnetat.sock, (struct sockaddr *)&local_addr, sizeof(struct sockaddr_in)) < 0) { + printf("udp bind error:[%d:%s]\n", errno, strerror(errno)); + close(libnetat.sock); + return -1; + } + + netat_scan(); + netat_recv(NULL, 0, 1); + return 0; +} + +int libnetat_send(char *atcmd, char *resp_buff, int buf_size) +{ + if (libnetat.sock == 0) { + printf("libnetat is not inited!\r\n"); + return -1; + } + + if (libnetat.dest[0] & 0x1) { + netat_scan(); + netat_recv(NULL, 0, 100); + } + + if (libnetat.dest[0] & 0x1) { + printf("not detect device!\r\r"); + return -1; + } + + netat_send(atcmd); + return netat_recv(resp_buff, buf_size, 10); +} + +#if 1 //sample code +int main(int argc, char *argv[]) +{ + char *ifname = NULL; + char input[256]; + char response[1024]; + + if (argc == 2) { + ifname = argv[1]; + } else { + printf("please input interface name!\n"); + return -1; + } + + if (libnetat_init(ifname)) { + printf("libnetat init fail, inteface:%s\r\n", ifname); + return -1; + } + + while (1) { + memset(input, 0, sizeof(input)); + printf("\r\n>:"); + fflush(stdin); + fgets(input, sizeof(input), stdin); + if (strlen(input) > 0) { + if (strncmp(input, "at", 2) == 0 || strncmp(input, "AT", 2) == 0) { + libnetat_send(input, response, sizeof(response)); + printf("%s", response); + } + } + } +} +#endif diff --git a/hgota/libota.c b/tools/test_app/libota.c similarity index 100% rename from hgota/libota.c rename to tools/test_app/libota.c diff --git a/hgota/libota.h b/tools/test_app/libota.h similarity index 100% rename from hgota/libota.h rename to tools/test_app/libota.h diff --git a/utils/Kconfig b/utils/Kconfig new file mode 100644 index 0000000..12f9b7e --- /dev/null +++ b/utils/Kconfig @@ -0,0 +1,11 @@ +config HGIC_USB + bool " Support USB interface" + depends on USB && (HGICS||HGICF) + +config HGIC_SDIO + bool " Support SDIO interface" + depends on MMC && (HGICS||HGICF) + +config SDIO_REINIT + bool " Support Re-init SDIO interface" + depends on HGIC_SDIO diff --git a/utils/Makefile b/utils/Makefile deleted file mode 100644 index 2e0568d..0000000 --- a/utils/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -obj-m += hgic_usb.o -obj-m += hgic_sdio.o - -hgic_usb-objs += if_usb.o -hgic_sdio-objs += if_sdio.o diff --git a/utils/bluetooth.c b/utils/bluetooth.c new file mode 100644 index 0000000..67d988e --- /dev/null +++ b/utils/bluetooth.c @@ -0,0 +1,107 @@ + +#include + +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_BT +#include +#include + +#include "../hgic_def.h" +#include "fwdl.h" +#include "fwctrl.h" +#include "utils.h" + +static int hgic_hcidev_open(struct hci_dev *hdev) +{ + struct hgic_fwctrl *ctrl = hci_get_drvdata(hdev); + + if (test_and_set_bit(HCI_RUNNING, &hdev->flags)) { + return 0; + } + + hgic_fwctrl_ble_open(ctrl, 1, 1); + return 0; +} + +static int hgic_hcidev_flush(struct hci_dev *hdev) +{ + return 0; +} + +static int hgic_hcidev_close(struct hci_dev *hdev) +{ + struct hgic_fwctrl *ctrl = hci_get_drvdata(hdev); + + if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags)) { + return 0; + } + + hgic_fwctrl_ble_open(ctrl, 1, 0); + return 0; +} + +static int hgic_hcidev_send_frame(struct sk_buff *skb) +{ + struct hci_dev *hdev = (struct hci_dev *) skb->dev; + struct hgic_fwctrl *ctrl; + + hgic_dbg("send bt data, type:%d len %d", bt_cb(skb)->pkt_type, skb->len); + + if (!hdev) { + hgic_err("skb->dev is NULLs\r\n"); + return -ENODEV; + } + + if (!test_bit(HCI_RUNNING, &hdev->flags)) { + hgic_err("bt device is not running\r\n"); + return -EBUSY; + } + + switch (bt_cb(skb)->pkt_type) { + case HCI_COMMAND_PKT: + hdev->stat.cmd_tx++; + break; + case HCI_ACLDATA_PKT: + hdev->stat.acl_tx++; + break; + case HCI_SCODATA_PKT: + hdev->stat.sco_tx++; + break; + }; + + ctrl = hci_get_drvdata(hdev); + hgic_fwctrl_send_hci_data(ctrl, bt_cb(skb)->pkt_type, skb->data, skb->len); + kfree_skb(skb); + return 0; +} + +static int hgic_hcidev_ioctl(struct hci_dev *hdev, unsigned int cmd, unsigned long arg) +{ + return -ENOIOCTLCMD; +} + +int hgic_hcidev_init(struct hgic_fwctrl *ctrl, struct hci_dev *hci) +{ + int ret = -1; + if (hci) { + hci->bus = (ctrl->bus->type == HGIC_BUS_USB) ? HCI_USB : + (ctrl->bus->type == HGIC_BUS_SDIO ? HCI_SDIO : 0); + hci_set_drvdata(hci, ctrl); + SET_HCIDEV_DEV(hci, ctrl->dev); + hci->open = hgic_hcidev_open; + hci->close = hgic_hcidev_close; + hci->flush = hgic_hcidev_flush; + hci->send = hgic_hcidev_send_frame; + hci->ioctl = hgic_hcidev_ioctl; + ret = hci_register_dev(hci); + } + return ret; +} + +#endif diff --git a/utils/fwctrl.c b/utils/fwctrl.c index 93a3893..c1efd3e 100644 --- a/utils/fwctrl.c +++ b/utils/fwctrl.c @@ -19,33 +19,8 @@ #include "fwctrl.h" #include "utils.h" -#define ARG_DUP(arg,len) if(ctrl->param.arg != (void *)arg){ \ - if(ctrl->param.arg) kfree(ctrl->param.arg); \ - ctrl->param.arg = hgic_strdup(arg,len);\ - } - -#define ARG_FREE(arg) do{\ - if(ctrl->param.arg) kfree(ctrl->param.arg);\ - ctrl->param.arg = NULL;\ - } while (0) - #define STR_LEN(s) ((s)?strlen(s):0) -static void *hgic_strdup(void *arg, u32 len) -{ - int s = 0; - u8 *ptr = NULL; - if (arg) { - s = (len > 0) ? (len) : (strlen((char *)arg) + 1); - ptr = kzalloc(s, GFP_KERNEL); - if (ptr) { - if (len > 0) { memcpy(ptr, arg, len); } - else { strcpy(ptr, (char *)arg); } - } - } - return ptr; -} - u16 hgic_ctrl_cookie(struct hgic_fwctrl *ctrl) { unsigned long flags; @@ -58,189 +33,109 @@ u16 hgic_ctrl_cookie(struct hgic_fwctrl *ctrl) return cookie; } -static struct sk_buff *hgic_alloc_ctrl_skb(u32 size) +static struct sk_buff *hgic_alloc_ctrl_skb(struct hgic_fwctrl *ctrl, u32 size) { - struct sk_buff *skb = dev_alloc_skb(sizeof(struct hgic_ctrl_hdr) + size + 4); + struct sk_buff *skb = dev_alloc_skb(ctrl->bus->drv_tx_headroom + sizeof(struct hgic_ctrl_hdr) + size + 4); if (!skb) { return skb; } + skb_reserve(skb, ctrl->bus->drv_tx_headroom); memset(skb->data, 0, sizeof(struct hgic_ctrl_hdr) + size); skb_reserve(skb, sizeof(struct hgic_ctrl_hdr)); skb_put(skb, size); return skb; } -static struct sk_buff *hgic_fwctrl_send_cmd(struct hgic_fwctrl *ctrl, u32 cmd_id, struct sk_buff *skb, bool sync) +static struct sk_buff *hgic_fwctrl_send_cmd(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, struct sk_buff *skb, bool sync) { struct hgic_ctrl_hdr *hdr = NULL; struct hgic_cmd_response resp; u16 id = cmd_id - HGIC_CMD_START; - hdr = (struct hgic_ctrl_hdr *)skb_push(skb, sizeof(struct hgic_ctrl_hdr)); - hdr->hdr.magic = HGIC_HDR_TX_MAGIC; - hdr->hdr.length = skb->len; - hdr->hdr.ifidx = 1; - hdr->hdr.cookie = hgic_ctrl_cookie(ctrl); - if (id > 255) { - hdr->hdr.type = HGIC_HDR_TYPE_CMD2; - hdr->cmd2.cmd_id = id; - hdr->cmd2.status = 0; - } else { - hdr->hdr.type = HGIC_HDR_TYPE_CMD; - hdr->cmd.cmd_id = id; - hdr->cmd.status = 0; - } memset(&resp, 0, sizeof(resp)); - resp.cookie = hdr->hdr.cookie; + resp.cookie = hgic_ctrl_cookie(ctrl); + hdr = (struct hgic_ctrl_hdr *)skb_push(skb, sizeof(struct hgic_ctrl_hdr)); + memset(hdr->info, 0, sizeof(hdr->info)); + hdr->hdr.magic = cpu_to_le16(HGIC_HDR_TX_MAGIC); + hdr->hdr.length = cpu_to_le16(skb->len); + hdr->hdr.cookie = cpu_to_le16(resp.cookie); + hdr->hdr.ifidx = ifidx; + HDR_CMDID_SET(hdr, id); return hgic_fwctrl_send_data(ctrl, skb, &resp, HGIC_CMD_TIMEOUT); } -static int hgic_fwctrl_set_byte(struct hgic_fwctrl *ctrl, u32 cmd_id, u8 val) +int hgic_fwctrl_do_cmd(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, u8 *in, u32 in_len, u8 *out, u32 out_size) { int ret = -1; struct sk_buff *skb = NULL; struct sk_buff *resp = NULL; struct hgic_ctrl_hdr *hdr = NULL; - skb = hgic_alloc_ctrl_skb(1); + if(in_len > 2000){ + hgic_err("data len is too long\r\n"); + return -EINVAL; + } + + skb = hgic_alloc_ctrl_skb(ctrl, in_len); if (skb) { - skb->data[0] = val; - resp = hgic_fwctrl_send_cmd(ctrl, cmd_id, skb, true); + if (in && in_len > 0) { + memcpy(skb->data, in, in_len); + skb->data[in_len] = 0; + } + + resp = hgic_fwctrl_send_cmd(ctrl, ifidx, cmd_id, skb, true); if (resp) { hdr = (struct hgic_ctrl_hdr *)resp->data; - ret = hdr->cmd.status; - dev_kfree_skb_any(resp); - } - } - if (ret) { - hgic_dbg("cmd:%d, ret:%d (%s)\r\n", cmd_id, ret, resp ? "Responsed" : "No Response"); - } - return ret; -} - -static int hgic_fwctrl_set_int_val(struct hgic_fwctrl *ctrl, u32 cmd_id, u32 val) -{ - int ret = -1; - struct sk_buff *skb = NULL; - struct sk_buff *resp = NULL; - struct hgic_ctrl_hdr *hdr = NULL; - - skb = hgic_alloc_ctrl_skb(4); - if (skb) { - put_unaligned_le32(val, skb->data); - resp = hgic_fwctrl_send_cmd(ctrl, cmd_id, skb, true); - if (resp) { - hdr = (struct hgic_ctrl_hdr *)resp->data; - ret = hdr->cmd.status; - dev_kfree_skb_any(resp); - } - } - if (ret) { - hgic_dbg("cmd:%d, ret:%d (%s)\r\n", cmd_id, ret, resp ? "Responsed" : "No Response"); - } - return ret; -} - -static short hgic_fwctrl_get_short_val(struct hgic_fwctrl *ctrl, u32 cmd_id) -{ - short ret = -1; - struct sk_buff *skb = NULL; - struct sk_buff *resp = NULL; - struct hgic_ctrl_hdr *hdr = NULL; - - skb = hgic_alloc_ctrl_skb(0); - if (skb) { - resp = hgic_fwctrl_send_cmd(ctrl, cmd_id, skb, true); - if (resp) { - hdr = (struct hgic_ctrl_hdr *)resp->data; - ret = hdr->cmd.status; - dev_kfree_skb_any(resp); - } - } - return ret; -} - -static int hgic_fwctrl_set_bytes(struct hgic_fwctrl *ctrl, u32 cmd_id, u8 *data, u32 len) -{ - int ret = -1; - struct sk_buff *skb = NULL; - struct sk_buff *resp = NULL; - struct hgic_ctrl_hdr *hdr = NULL; - - skb = hgic_alloc_ctrl_skb(len); - if (skb) { - if (data && len > 0) { - memcpy(skb->data, data, len); - skb->data[len] = 0; - } - resp = hgic_fwctrl_send_cmd(ctrl, cmd_id, skb, true); - if (resp) { - hdr = (struct hgic_ctrl_hdr *)resp->data; - ret = hdr->cmd.status; - dev_kfree_skb_any(resp); - } - if (ret) { - hgic_dbg("cmd:%d, ret:%d (%s)\r\n", cmd_id, ret, resp ? "Responsed" : "No Response"); - } - } - return ret; -} - -static int hgic_fwctrl_get_bytes(struct hgic_fwctrl *ctrl, u32 cmd_id, u8 *buff, u32 len) -{ - int ret = -1; - struct sk_buff *skb = NULL; - struct sk_buff *resp = NULL; - struct hgic_ctrl_hdr *hdr = NULL; - - skb = hgic_alloc_ctrl_skb(0); - if (skb) { - resp = hgic_fwctrl_send_cmd(ctrl, cmd_id, skb, true); - if (resp) { - hdr = (struct hgic_ctrl_hdr *)resp->data; - ret = hdr->cmd.status; - if (ret > 0 && len > 0) { - ret = ret > len ? len : ret; - memcpy(buff, (char *)(hdr + 1), ret); - } - dev_kfree_skb_any(resp); - } - } - if (ret < 0) { - hgic_dbg("get string: cmd:%d, ret:%d (%s)\r\n", cmd_id, ret, resp ? "Responsed" : "No Response"); - } - return ret; -} - -static int hgic_fwctrl_do_cmd(struct hgic_fwctrl *ctrl, u32 cmd_id, u8 *data, u32 len, u8 *buff, u32 size) -{ - int ret = -1; - struct sk_buff *skb = NULL; - struct sk_buff *resp = NULL; - struct hgic_ctrl_hdr *hdr = NULL; - - skb = hgic_alloc_ctrl_skb(len); - if (skb) { - if (data && len > 0) { - memcpy(skb->data, data, len); - skb->data[len] = 0; - } - resp = hgic_fwctrl_send_cmd(ctrl, cmd_id, skb, true); - if (resp) { - hdr = (struct hgic_ctrl_hdr *)resp->data; - ret = hdr->cmd.status; - if (ret > 0 && buff) { - memcpy(buff, (char *)(hdr + 1), ret > size ? size : ret); + ret = (short)le16_to_cpu(hdr->cmd.status); + if (ret > 0 && out) { + memcpy(out, (char *)(hdr + 1), ret > out_size ? out_size : ret); } dev_kfree_skb_any(resp); } if (ret < 0) { - hgic_dbg("cmd:%d, ret:%d (%s)\r\n", cmd_id, ret, resp ? "Responsed" : "No Response"); + printk("FWCTRL: cmd:%d, ret:%d (%s)\r\n", cmd_id, ret, resp ? "Responsed" : "No Response"); } } return ret; } +int hgic_fwctrl_set_byte(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, u8 val) +{ + return hgic_fwctrl_do_cmd(ctrl, ifidx, cmd_id, &val, 1, 0, 0); +} + +int hgic_fwctrl_set_int_val(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, u32 val) +{ + u8 data[4]; + put_unaligned_le32(val, data); + return hgic_fwctrl_do_cmd(ctrl, ifidx, cmd_id, data, 4, 0, 0); +} + +int hgic_fwctrl_get_int_val(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id) +{ + u8 data[4]; + if (hgic_fwctrl_do_cmd(ctrl, ifidx, cmd_id, 0, 0, data, 4) == 4) { + return get_unaligned_le32(data); + } else { + return -1; + } +} + +short hgic_fwctrl_get_short_val(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id) +{ + return hgic_fwctrl_do_cmd(ctrl, ifidx, cmd_id, 0, 0, 0, 0); +} + +int hgic_fwctrl_set_bytes(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, u8 *data, u32 len) +{ + return hgic_fwctrl_do_cmd(ctrl, ifidx, cmd_id, data, len, 0, 0); +} + +int hgic_fwctrl_get_bytes(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, u8 *buff, u32 len) +{ + return hgic_fwctrl_do_cmd(ctrl, ifidx, cmd_id, 0, 0, buff, len); +} + static int hgic_fwctrl_rx_response(struct hgic_fwctrl *ctrl, struct sk_buff *skb) { int find = 0; @@ -295,7 +190,7 @@ static void hgic_fwctrl_work(struct work_struct *work) break; case HGIC_HDR_TYPE_EVENT: case HGIC_HDR_TYPE_EVENT2: - hgic_rx_fw_event(ctrl, skb); + ctrl->rx_event(ctrl, skb); break; default: dev_kfree_skb(skb); @@ -304,12 +199,6 @@ static void hgic_fwctrl_work(struct work_struct *work) } } -static void hgic_fwctrl_flush_work(struct work_struct *work) -{ - struct hgic_fwctrl *ctrl = container_of(work, struct hgic_fwctrl, flush_work); - hgic_fwctrl_flush_param(ctrl); -} - struct sk_buff *hgic_fwctrl_send_data(struct hgic_fwctrl *ctrl, struct sk_buff *skb, struct hgic_cmd_response *resp, u32 timeout) { unsigned long flags; @@ -319,10 +208,17 @@ struct sk_buff *hgic_fwctrl_send_data(struct hgic_fwctrl *ctrl, struct sk_buff * list_add(&resp->list, &ctrl->pd_list); spin_unlock_irqrestore(&ctrl->lock, flags); + if (ctrl->txq.qlen > 4) { + kfree_skb(skb_dequeue(&ctrl->txq)); + //hgic_err("ctrl txq full, drop data (%d)\r\n", ctrl->txq.qlen); + } + skb_queue_tail(&ctrl->txq, skb); - hgic_schedule(ctrl); + ctrl->schedule(ctrl); if (timeout) { - wait_for_completion_timeout(&resp->cmpl, msecs_to_jiffies(timeout)); + if (!wait_for_completion_timeout(&resp->cmpl, msecs_to_jiffies(timeout))) { + hgic_err("timeout, ctrl->rxq:%d\r\n", skb_queue_len(&ctrl->rxq)); + } } spin_lock_irqsave(&ctrl->lock, flags); list_del(&resp->list); @@ -333,29 +229,34 @@ struct sk_buff *hgic_fwctrl_send_data(struct hgic_fwctrl *ctrl, struct sk_buff * return resp->skb; } -void hgic_fwctrl_rx(struct hgic_fwctrl *ctrl, struct sk_buff *skb) +void hgic_fwctrl_rx(struct hgic_fwctrl *ctrl, u8 *data, int len) { - skb_queue_tail(&ctrl->rxq, skb); + struct sk_buff *skb; if (ctrl->wq) { - queue_work(ctrl->wq, &ctrl->work); + skb = dev_alloc_skb(len); + if (skb) { + memcpy(skb->data, data, len); + skb_put(skb, len); + skb_queue_tail(&ctrl->rxq, skb); + queue_work(ctrl->wq, &ctrl->work); + } else { + hgic_err("alloc skb fail\r\n"); + } } else { hgic_err("fwctrl workqueue is NULL\r\n"); } } -void hgic_fwctrl_init(struct hgic_fwctrl *ctrl, void *dev) +void hgic_fwctrl_init(struct hgic_fwctrl *ctrl, void *dev, struct hgic_bus *bus) { memset(ctrl, 0, sizeof(struct hgic_fwctrl)); ctrl->dev = dev; - ctrl->param.acs = 0x3; - ctrl->param.tx_mcs = 0xff; - ctrl->param.ps_mode = 0xff; - ctrl->param.wkio_mode = 0xff; + ctrl->bus = bus; + ctrl->radio_onoff = 1; spin_lock_init(&ctrl->lock); INIT_LIST_HEAD(&ctrl->pd_list); skb_queue_head_init(&ctrl->rxq); skb_queue_head_init(&ctrl->txq); - INIT_WORK(&ctrl->flush_work, hgic_fwctrl_flush_work); INIT_WORK(&ctrl->work, hgic_fwctrl_work); ctrl->wq = ALLOC_ORDERED_WORKQUEUE("fwctrl", 0); } @@ -363,7 +264,6 @@ void hgic_fwctrl_init(struct hgic_fwctrl *ctrl, void *dev) void hgic_fwctrl_release(struct hgic_fwctrl *ctrl) { cancel_work_sync(&ctrl->work); - cancel_work_sync(&ctrl->flush_work); hgic_fwctrl_clear_pdlist(ctrl); hgic_clear_queue(&ctrl->txq); hgic_clear_queue(&ctrl->rxq); @@ -376,121 +276,14 @@ void hgic_fwctrl_release(struct hgic_fwctrl *ctrl) flush_workqueue(ctrl->wq); destroy_workqueue(ctrl->wq); } - ARG_FREE(country_code); - ARG_FREE(ssid); - ARG_FREE(bssid); - ARG_FREE(bssid_filter); - ARG_FREE(key_mgmt); - ARG_FREE(wpa_psk); - ARG_FREE(mode); - ARG_FREE(mac_addr); - ARG_FREE(chan_list); - ARG_FREE(paired_stas); - ARG_FREE(mcast_key); -} - -void hgic_fwctrl_flush_param(struct hgic_fwctrl *ctrl) -{ - //int retry = 0; - - if (ctrl->param.bss_bw) { - hgic_fwctrl_set_bss_bw(ctrl, ctrl->param.bss_bw); - } - if (ctrl->param.chan_list) { - hgic_fwctrl_set_chan_list(ctrl, (u16 *)ctrl->param.chan_list, ctrl->param.chan_cnt); - } - if (ctrl->param.freq_start) { - hgic_fwctrl_set_freq_range(ctrl, ctrl->param.freq_start, ctrl->param.freq_end, ctrl->param.chan_bw); - } - if (ctrl->param.country_code) { - hgic_fwctrl_set_countryregion(ctrl, ctrl->param.country_code); - } - if (ctrl->param.ssid) { - hgic_fwctrl_set_ssid(ctrl, ctrl->param.ssid); - } - if (ctrl->param.bssid) { - hgic_fwctrl_set_bssid(ctrl, ctrl->param.bssid); - } - if (ctrl->param.bssid_filter) { - hgic_fwctrl_set_bssid_filter(ctrl, ctrl->param.bssid_filter); - } - if (ctrl->param.key_mgmt) { - hgic_fwctrl_set_key_mgmt(ctrl, ctrl->param.key_mgmt); - } - if (ctrl->param.wpa_psk) { - hgic_fwctrl_set_wpa_psk(ctrl, ctrl->param.wpa_psk); - } - if (ctrl->param.mcast_key) { - hgic_fwctrl_set_mcast_key(ctrl, ctrl->param.mcast_key); - } - if (ctrl->param.mac_addr) { - hgic_fwctrl_set_mac(ctrl, ctrl->param.mac_addr); - } - if (ctrl->param.channel) { - hgic_fwctrl_set_channel(ctrl, ctrl->param.channel); - } - if (ctrl->param.rts_threshold) { - hgic_fwctrl_set_rts_threshold(ctrl, ctrl->param.rts_threshold); - } - if (ctrl->param.frag_threshold) { - hgic_fwctrl_set_frag_threshold(ctrl, ctrl->param.frag_threshold); - } - if (ctrl->param.listen_interval) { - hgic_fwctrl_set_listen_interval(ctrl, ctrl->param.listen_interval); - } - if (ctrl->param.center_freq) { - hgic_fwctrl_set_center_freq(ctrl, ctrl->param.center_freq); - } - if (ctrl->param.beacon_int) { - hgic_fwctrl_set_beacon_int(ctrl, ctrl->param.beacon_int); - } - if (ctrl->param.ethertype) { - hgic_fwctrl_set_ethertype(ctrl, ctrl->param.ethertype); - } - if (ctrl->param.txpower) { - hgic_fwctrl_set_txpower(ctrl, ctrl->param.txpower); - } - if (ctrl->param.primary_chan) { - hgic_fwctrl_set_primary_chan(ctrl, ctrl->param.primary_chan); - } - if (ctrl->param.mode) { - hgic_fwctrl_set_mode(ctrl, ctrl->param.mode); - } - if (ctrl->param.acs != 0x3) { - hgic_fwctrl_set_acs(ctrl, ctrl->param.acs, ctrl->param.acs_tmo); - } - if (ctrl->param.bss_max_idle) { - hgic_fwctrl_set_bss_max_idle(ctrl, ctrl->param.bss_max_idle); - } - if (ctrl->param.dtim_period) { - hgic_fwctrl_set_dtim_period(ctrl, ctrl->param.dtim_period); - } - if (ctrl->param.ps_connect) { - hgic_fwctrl_set_ps_connect(ctrl, ctrl->param.ps_connect, ctrl->param.ps_connect_roundup); - } - if (ctrl->param.agg_cnt) { - hgic_fwctrl_set_agg_cnt(ctrl, ctrl->param.agg_cnt); - } - if (ctrl->param.wkio_mode != 0xff) { - hgic_fwctrl_set_wkio_mode(ctrl, ctrl->param.wkio_mode); - } - if (ctrl->param.ps_mode != 0xff) { - hgic_fwctrl_set_ps_mode(ctrl, ctrl->param.ps_mode); - } - if (ctrl->param.aplost_time) { - hgic_fwctrl_set_aplost_time(ctrl, ctrl->param.aplost_time); - } - if (ctrl->param.tx_mcs != 0xff) { - hgic_fwctrl_set_tx_mcs(ctrl, ctrl->param.tx_mcs); - } } /////////////////////////////////////////////////////////////////////////////////////////// -int hgic_fwctrl_testmode_cmd(struct hgic_fwctrl *ctrl, u8 *cmd, u32 size) +int hgic_fwctrl_testmode_cmd(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *cmd, u32 size) { int ret = 0; - ret = hgic_fwctrl_do_cmd(ctrl, HGIC_CMD_TESTMODE_CMD, cmd, STR_LEN(cmd), cmd, size); + ret = hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_TESTMODE_CMD, cmd, STR_LEN(cmd), cmd, size); if (ret < 0) { strcpy(cmd, "failed"); } else { @@ -499,372 +292,377 @@ int hgic_fwctrl_testmode_cmd(struct hgic_fwctrl *ctrl, u8 *cmd, u32 size) return ret; } -int hgic_fwctrl_get_status(struct hgic_fwctrl *ctrl, u8 *buff, u32 len) +int hgic_fwctrl_get_status(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *buff, u32 len) { - return hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_STATUS, buff, len); + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_STATUS, buff, len); } -int hgic_fwctrl_get_conn_state(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_get_conn_state(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_do_cmd(ctrl, HGIC_CMD_GET_CONN_STATE, NULL, 0, NULL, 0); + return hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_GET_CONN_STATE, NULL, 0, NULL, 0); } -int hgic_fwctrl_get_fwinfo(struct hgic_fwctrl *ctrl, struct hgic_fw_info *info) +int hgic_fwctrl_get_fwinfo(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_fw_info *info) { - return hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_FW_INFO, (u8 *)info, sizeof(struct hgic_fw_info)); + int ret = 0; + struct hgic_fw_info _info; + ret = hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_FW_INFO, (u8 *)&_info, sizeof(struct hgic_fw_info)); + if (ret > 0) { + info->version = le32_to_cpu(_info.version); + info->svn_version = le32_to_cpu(_info.svn_version); + info->chip_id = le16_to_cpu(_info.chip_id); + info->cpu_id = le16_to_cpu(_info.cpu_id); + memcpy(info->mac, _info.mac, 6); + info->smt_dat = le32_to_cpu(_info.smt_dat); + } + return ret; } -int hgic_fwctrl_set_countryregion(struct hgic_fwctrl *ctrl, u8 *country_code) +int hgic_fwctrl_set_countryregion(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *country_code) { - ARG_DUP(country_code, 0); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_COUNTERY, country_code, STR_LEN(country_code)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_COUNTERY, country_code, STR_LEN(country_code)); } -int hgic_fwctrl_set_ssid(struct hgic_fwctrl *ctrl, u8 *ssid) +int hgic_fwctrl_set_ssid(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *ssid) { - ARG_DUP(ssid, 0); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_SSID, ssid, STR_LEN(ssid)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_SSID, ssid, STR_LEN(ssid)); } -int hgic_fwctrl_set_bssid(struct hgic_fwctrl *ctrl, u8 *bssid) +int hgic_fwctrl_set_bssid(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *bssid) { - ARG_DUP(bssid, 6); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_BSSID, bssid, 6); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_BSSID, bssid, 6); } -int hgic_fwctrl_set_channel(struct hgic_fwctrl *ctrl, u32 channel) +int hgic_fwctrl_set_channel(struct hgic_fwctrl *ctrl, u8 ifidx, u32 channel) { - ctrl->param.acs = 0; - ctrl->param.channel = channel; - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_CHANNEL, channel); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_CHANNEL, channel); } -int hgic_fwctrl_set_bssid_filter(struct hgic_fwctrl *ctrl, u8 *bssid_filter) +int hgic_fwctrl_set_bssid_filter(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *bssid_filter) { - ARG_DUP(bssid_filter, 0); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_BSSID_FILTER, bssid_filter, STR_LEN(bssid_filter)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_BSSID_FILTER, bssid_filter, STR_LEN(bssid_filter)); } -int hgic_fwctrl_set_rts_threshold(struct hgic_fwctrl *ctrl, u32 rts_threshold) +int hgic_fwctrl_set_rts_threshold(struct hgic_fwctrl *ctrl, u8 ifidx, u32 rts_threshold) { - ctrl->param.rts_threshold = rts_threshold; - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_RTS_THRESHOLD, rts_threshold); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_RTS_THRESHOLD, rts_threshold); } -int hgic_fwctrl_set_frag_threshold(struct hgic_fwctrl *ctrl, u32 frag_threshold) +int hgic_fwctrl_set_frag_threshold(struct hgic_fwctrl *ctrl, u8 ifidx, u32 frag_threshold) { - ctrl->param.frag_threshold = frag_threshold; - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_FRG_THRESHOLD, frag_threshold); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_FRG_THRESHOLD, frag_threshold); } -int hgic_fwctrl_set_key_mgmt(struct hgic_fwctrl *ctrl, u8 *key_mgmt) +int hgic_fwctrl_set_key_mgmt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *key_mgmt) { - ARG_DUP(key_mgmt, 0); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_KEY_MGMT, key_mgmt, STR_LEN(key_mgmt)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_KEY_MGMT, key_mgmt, STR_LEN(key_mgmt)); } -int hgic_fwctrl_set_wpa_psk(struct hgic_fwctrl *ctrl, u8 *wpa_psk) +int hgic_fwctrl_set_wpa_psk(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *wpa_psk) { - ARG_DUP(wpa_psk, 0); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_WPA_PSK, wpa_psk, STR_LEN(wpa_psk)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_WPA_PSK, wpa_psk, STR_LEN(wpa_psk)); } -int hgic_fwctrl_set_wbnat(struct hgic_fwctrl *ctrl, u32 enable) +int hgic_fwctrl_set_wbnat(struct hgic_fwctrl *ctrl, u8 ifidx, u32 enable) { - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_WBNAT, enable); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_WBNAT, enable); } -int hgic_fwctrl_set_freq_range(struct hgic_fwctrl *ctrl, u32 freq_start, u32 freq_end, u32 bss_bw) +int hgic_fwctrl_set_freq_range(struct hgic_fwctrl *ctrl, u8 ifidx, u32 freq_start, u32 freq_end, u32 bss_bw) { u8 data[12]; put_unaligned_le32(freq_start, data); put_unaligned_le32(freq_end, data + 4); put_unaligned_le32(bss_bw, data + 8); - ctrl->param.freq_start = freq_start; - ctrl->param.freq_end = freq_end; - ctrl->param.chan_bw = bss_bw; - ARG_FREE(chan_list); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_FREQ_RANGE, data, 12); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_FREQ_RANGE, data, 12); } -int hgic_fwctrl_set_bss_bw(struct hgic_fwctrl *ctrl, u8 bss_bw) +int hgic_fwctrl_set_bss_bw(struct hgic_fwctrl *ctrl, u8 ifidx, u8 bss_bw) { - ctrl->param.bss_bw = bss_bw; - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_BSS_BW, bss_bw); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_BSS_BW, bss_bw); } -int hgic_fwctrl_set_tx_bw(struct hgic_fwctrl *ctrl, u8 tx_bw) +int hgic_fwctrl_set_tx_bw(struct hgic_fwctrl *ctrl, u8 ifidx, u8 tx_bw) { - ctrl->param.tx_bw = tx_bw; - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_TX_BW, tx_bw); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_TX_BW, tx_bw); } -int hgic_fwctrl_set_tx_mcs(struct hgic_fwctrl *ctrl, u8 tx_mcs) +int hgic_fwctrl_set_tx_mcs(struct hgic_fwctrl *ctrl, u8 ifidx, u8 tx_mcs) { - ctrl->param.tx_mcs = tx_mcs; - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_TX_MCS, tx_mcs); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_TX_MCS, tx_mcs); } -int hgic_fwctrl_set_acs(struct hgic_fwctrl *ctrl, u8 acs, u8 acs_tmo) +int hgic_fwctrl_set_acs(struct hgic_fwctrl *ctrl, u8 ifidx, u8 acs, u8 acs_tmo) { u8 data[2] = {acs, acs_tmo}; - ctrl->param.acs = acs; - ctrl->param.acs_tmo = acs_tmo; - if (acs) { - ctrl->param.channel = 0; - ctrl->param.center_freq = 0; - } - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_ACS_ENABLE, data, 2); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_ACS_ENABLE, data, 2); } -int hgic_fwctrl_set_bgrssi(struct hgic_fwctrl *ctrl, u8 bgrssi) +int hgic_fwctrl_set_bgrssi(struct hgic_fwctrl *ctrl, u8 ifidx, u8 bgrssi) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_BG_RSSI, bgrssi); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_BG_RSSI, bgrssi); } -int hgic_fwctrl_set_chan_list(struct hgic_fwctrl *ctrl, u16 *chan_list, u32 cnt) +int hgic_fwctrl_set_chan_list(struct hgic_fwctrl *ctrl, u8 ifidx, u16 *chan_list, u32 cnt) { int ret = -1; int i = 0; u8 *buf = kzalloc((1 + cnt) * sizeof(u16), GFP_KERNEL); - ARG_DUP(chan_list, cnt * sizeof(u16)); - ctrl->param.chan_cnt = cnt; - ctrl->param.freq_start = 0; if (buf) { put_unaligned_le16(cnt, buf); for (i = 0; i < cnt; i++) { put_unaligned_le16(chan_list[i], buf + (i + 1) * sizeof(u16)); } - ret = hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_CHAN_LIST, buf, (1 + cnt) * sizeof(u16)); + ret = hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_CHAN_LIST, buf, (1 + cnt) * sizeof(u16)); kfree(buf); } return ret; } -int hgic_fwctrl_set_mode(struct hgic_fwctrl *ctrl, u8 *mode) +int hgic_fwctrl_set_mode(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *mode) { - ARG_DUP(mode, 0); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_WORK_MODE, mode, STR_LEN(mode)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_WORK_MODE, mode, STR_LEN(mode)); } -int hgic_fwctrl_set_paired_stas(struct hgic_fwctrl *ctrl, u8 *paired_stas, u32 len) +int hgic_fwctrl_set_paired_stas(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *paired_stas, u32 len) { - ARG_DUP(paired_stas, len); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_PAIRED_STATIONS, paired_stas, len); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_PAIRED_STATIONS, paired_stas, len); } -int hgic_fwctrl_set_pairing(struct hgic_fwctrl *ctrl, u8 start) +int hgic_fwctrl_set_pairing(struct hgic_fwctrl *ctrl, u8 ifidx, u32 pair_number) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_PAIRING, start); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_PAIRING, pair_number); } -int hgic_fwctrl_open_dev(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_open_dev(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_do_cmd(ctrl, HGIC_CMD_DEV_OPEN, 0, 0, 0, 0); + return hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_DEV_OPEN, 0, 0, 0, 0); } -int hgic_fwctrl_close_dev(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_close_dev(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_do_cmd(ctrl, HGIC_CMD_DEV_CLOSE, 0, 0, 0, 0); + return hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_DEV_CLOSE, 0, 0, 0, 0); } -int hgic_fwctrl_set_txpower(struct hgic_fwctrl *ctrl, u32 tx_power) +int hgic_fwctrl_set_txpower(struct hgic_fwctrl *ctrl, u8 ifidx, u32 tx_power) { - ctrl->param.txpower = tx_power; - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_TX_POWER, tx_power); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_TX_POWER, tx_power); } -int hgic_fwctrl_get_txpower(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_get_txpower(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_get_short_val(ctrl, HGIC_CMD_GET_TX_POWER); + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_TX_POWER); } -int hgic_fwctrl_set_listen_interval(struct hgic_fwctrl *ctrl, u32 listen_interval) +int hgic_fwctrl_set_listen_interval(struct hgic_fwctrl *ctrl, u8 ifidx, u32 listen_interval) { - ctrl->param.listen_interval = listen_interval; - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_LISTEN_INTERVAL, listen_interval); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_LISTEN_INTERVAL, listen_interval); } -int hgic_fwctrl_set_center_freq(struct hgic_fwctrl *ctrl, u32 center_freq) +int hgic_fwctrl_set_center_freq(struct hgic_fwctrl *ctrl, u8 ifidx, u32 center_freq) { - ctrl->param.acs = 0; - ctrl->param.center_freq = center_freq; - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_CENTER_FREQ, center_freq); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_CENTER_FREQ, center_freq); } -int hgic_fwctrl_set_tx_count(struct hgic_fwctrl *ctrl, u32 short_frm_tx_count, u32 long_frm_tx_count) +int hgic_fwctrl_set_tx_count(struct hgic_fwctrl *ctrl, u8 ifidx, u32 short_frm_tx_count, u32 long_frm_tx_count) { u8 data[8]; put_unaligned_le32(short_frm_tx_count, data); put_unaligned_le32(long_frm_tx_count, data + 4); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_TX_LCOUNT, data, 8); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_TX_LCOUNT, data, 8); } -int hgic_fwctrl_set_key(struct hgic_fwctrl *ctrl, u8 cmd, u16 aid, u8 *key, u8 len) +int hgic_fwctrl_set_key(struct hgic_fwctrl *ctrl, u8 ifidx, u8 cmd, u8 *addr, u8 *key, u8 len) { - int ret = -ENOMEM; - u8 *buff = kmalloc(len + 4, GFP_KERNEL); + int ret = -ENOMEM; + u8 *buff = kmalloc(len + 10, GFP_KERNEL); if (buff) { buff[0] = cmd; - put_unaligned_le16(aid, buff + 1); - buff[3] = len; - memcpy(buff + 4, key, len); - ret = hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_KEY, buff, len + 4); + buff[1] = len; + memcpy(buff + 2, addr, 6); + memcpy(buff + 8, key, len); + ret = hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_KEY, buff, len + 8); kfree(buff); } return ret; } -int hgic_fwctrl_add_sta(struct hgic_fwctrl *ctrl, u16 aid, u8 *addr) +int hgic_fwctrl_add_sta(struct hgic_fwctrl *ctrl, u8 ifidx, u16 aid, u8 *addr) { uint8_t sta_info[8]; put_unaligned_le16(aid, sta_info); memcpy(sta_info + 2, addr, 6); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_ADD_STA, sta_info, 8); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_ADD_STA, sta_info, 8); } -int hgic_fwctrl_del_sta(struct hgic_fwctrl *ctrl, u32 aid) +int hgic_fwctrl_del_sta(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr) { - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_REMOVE_STA, aid); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_REMOVE_STA, addr, 6); } -int hgic_fwctrl_set_primary_chan(struct hgic_fwctrl *ctrl, u8 primary_chan) +int hgic_fwctrl_set_primary_chan(struct hgic_fwctrl *ctrl, u8 ifidx, u8 primary_chan) { - ctrl->param.primary_chan = primary_chan; - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_PRIMARY_CHAN, primary_chan); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_PRIMARY_CHAN, primary_chan); } -int hgic_fwctrl_set_aid(struct hgic_fwctrl *ctrl, u32 aid) +int hgic_fwctrl_set_aid(struct hgic_fwctrl *ctrl, u8 ifidx, u32 aid) { - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_AID, aid); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_AID, aid); } -int hgic_fwctrl_set_mac(struct hgic_fwctrl *ctrl, u8 *mac_addr) +int hgic_fwctrl_set_mac(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *mac) { - ARG_DUP(mac_addr, 6); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_MAC, mac_addr, 6); + u8 mac_addr[7]; + memcpy(mac_addr, mac, 6); + mac_addr[6] = ifidx; + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_MAC, mac_addr, 7); } -int hgic_fwctrl_get_scan_list(struct hgic_fwctrl *ctrl, u8 *buff, u32 size) +int hgic_fwctrl_get_scan_list(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *buff, u32 size) { - return hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_SCAN_LIST, buff, size); + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_SCAN_LIST, buff, size); } -int hgic_fwctrl_scan(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_scan(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SCAN, 1); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SCAN, 1); } -int hgic_fwctrl_set_txq_param(struct hgic_fwctrl *ctrl, u8 *txq, u32 size) +int hgic_fwctrl_set_txq_param(struct hgic_fwctrl *ctrl, u8 ifidx, u8 ac, struct hgic_txq_param *param) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_TXQ_PARAM, txq, size); + int ret = -ENOMEM; + u8 *txq = (u8 *)kmalloc(1 + sizeof(struct hgic_txq_param), GFP_KERNEL); + if (txq) { + txq[0] = ac; + memcpy(txq + 1, param, sizeof(struct hgic_txq_param)); + ret = hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_TXQ_PARAM, txq, 1 + sizeof(struct hgic_txq_param)); + kfree(txq); + } + return ret; +} +int hgic_fwctrl_set_user_edca(struct hgic_fwctrl *ctrl, u8 ifidx, u8 ac, struct hgic_txq_param *param) +{ + int ret = -ENOMEM; + u8 *txq = (u8 *)kmalloc(1 + sizeof(struct hgic_txq_param), GFP_KERNEL); + if (txq) { + txq[0] = ac; + memcpy(txq + 1, param, sizeof(struct hgic_txq_param)); + ret = hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_USER_EDCA, txq, 1 + sizeof(struct hgic_txq_param)); + kfree(txq); + } + return ret; } int hgic_fwctrl_get_temperature(struct hgic_fwctrl *ctrl) { - return hgic_fwctrl_get_short_val(ctrl, HGIC_CMD_GET_TEMPERATURE); + return hgic_fwctrl_get_short_val(ctrl, 1, HGIC_CMD_GET_TEMPERATURE); } -int hgic_fwctrl_enter_sleep(struct hgic_fwctrl *ctrl, u8 sleep) +int hgic_fwctrl_enter_sleep(struct hgic_fwctrl *ctrl, u8 ifidx, u16 sleep, u32 sleep_ms) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_ENTER_SLEEP, sleep); + u8 buff[8]; + put_unaligned_le16(sleep, buff); + put_unaligned_le32(sleep_ms, buff + 2); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_ENTER_SLEEP, buff, 6); } -int hgic_fwctrl_get_sta_list(struct hgic_fwctrl *ctrl, struct hgic_sta_info *sta_list, u32 size) +int hgic_fwctrl_get_sta_list(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_sta_info *sta_list, u32 size) { - int ret = hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_STA_LIST, (u8 *)sta_list, size * sizeof(struct hgic_sta_info)); + int ret = hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_STA_LIST, (u8 *)sta_list, size * sizeof(struct hgic_sta_info)); return ret > 0 ? (ret / sizeof(struct hgic_sta_info)) : ret; } -int hgic_fwctrl_set_beacon_int(struct hgic_fwctrl *ctrl, u32 beacon_int) +int hgic_fwctrl_set_beacon_int(struct hgic_fwctrl *ctrl, u8 ifidx, u32 beacon_int) { - ctrl->param.beacon_int = beacon_int; - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_BEACON_INT, beacon_int); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_BEACON_INT, beacon_int); } -int hgic_fwctrl_get_ssid(struct hgic_fwctrl *ctrl, u8 *ssid, u32 size) +int hgic_fwctrl_get_mode(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *mode, u32 size) { - return hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_SSID, ssid, size); + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_MODE, mode, size); } -int hgic_fwctrl_get_bssid(struct hgic_fwctrl *ctrl, u8 *bssid) +int hgic_fwctrl_get_ssid(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *ssid, u32 size) { - return hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_BSSID, bssid, 6); + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_SSID, ssid, size); } -int hgic_fwctrl_get_wpapsk(struct hgic_fwctrl *ctrl, u8 *psk, u32 size) +int hgic_fwctrl_get_bssid(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *bssid, u32 len) { - return hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_WPA_PSK, psk, size); + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_BSSID, bssid, len); } -int hgic_fwctrl_save_cfg(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_get_wpapsk(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *psk, u32 size) { - return hgic_fwctrl_do_cmd(ctrl, HGIC_CMD_SAVE_CFG, 0, 0, 0, 0); + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_WPA_PSK, psk, size); } -int hgic_fwctrl_join_group(struct hgic_fwctrl *ctrl, u8 *addr, u8 aid) +int hgic_fwctrl_save_cfg(struct hgic_fwctrl *ctrl, u8 ifidx) +{ + return hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_SAVE_CFG, 0, 0, 0, 0); +} + +int hgic_fwctrl_join_group(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr, u8 aid) { u8 val[7]; memcpy(val, addr, 6); val[6] = aid; - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_JOIN_GROUP, val, 7); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_JOIN_GROUP, val, 7); } -int hgic_fwctrl_set_ethertype(struct hgic_fwctrl *ctrl, u16 ethertype) +int hgic_fwctrl_set_ethertype(struct hgic_fwctrl *ctrl, u8 ifidx, u16 ethertype) { u8 vals[2]; - ctrl->param.ethertype = ethertype; put_unaligned_le16(ethertype, vals); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_ETHER_TYPE, vals, 2); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_ETHER_TYPE, vals, 2); } -int hgic_fwctrl_get_sta_count(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_get_sta_count(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_do_cmd(ctrl, HGIC_CMD_GET_STA_COUNT, 0, 0, 0, 0); + return hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_GET_STA_COUNT, 0, 0, 0, 0); } -int hgic_fwctrl_get_agg_cnt(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_get_agg_cnt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *agg, u8 size) { - return hgic_fwctrl_get_short_val(ctrl, HGIC_CMD_GET_AGG_CNT); + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_AGG_CNT, agg, size); } -int hgic_fwctrl_set_agg_cnt(struct hgic_fwctrl *ctrl, u8 agg_cnt) +int hgic_fwctrl_set_agg_cnt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 agg[2]) { - ctrl->param.agg_cnt = agg_cnt; - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_AGG_CNT, agg_cnt); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_AGG_CNT, agg ,2); } -int hgic_fwctrl_get_bss_bw(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_get_bss_bw(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_get_short_val(ctrl, HGIC_CMD_GET_BSS_BW); + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_BSS_BW); } -int hgic_fwctrl_get_freq_range(struct hgic_fwctrl *ctrl, u32 *freq_start, u32 *freq_end, u32 *bss_bw) +int hgic_fwctrl_get_freq_range(struct hgic_fwctrl *ctrl, u8 ifidx, u32 *freq_start, u32 *freq_end, u32 *bss_bw) { int ret = 0; u32 vals[3]; - ret = hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_FREQ_RANGE, (u8 *)&vals, sizeof(vals)); + ret = hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_FREQ_RANGE, (u8 *)&vals, sizeof(vals)); if (ret == 12) { - *freq_start = vals[0]; - *freq_end = vals[1]; - *bss_bw = vals[2]; + *freq_start = le32_to_cpu(vals[0]); + *freq_end = le32_to_cpu(vals[1]); + *bss_bw = le32_to_cpu(vals[2]); } return (ret == 12); } -int hgic_fwctrl_get_chan_list(struct hgic_fwctrl *ctrl, u16 *chan_list, u16 count) +int hgic_fwctrl_get_chan_list(struct hgic_fwctrl *ctrl, u8 ifidx, u16 *chan_list, u16 count) { - int ret = hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_CHAN_LIST, (u8 *)chan_list, count * sizeof(u16)); + int ret = hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_CHAN_LIST, (u8 *)chan_list, count * sizeof(u16)); return ret > 0 ? ret / sizeof(u16) : 0; } -int hgic_fwctrl_wakeup_sta(struct hgic_fwctrl *ctrl, u8 *addr) +int hgic_fwctrl_wakeup_sta(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_WAKEUP_STA, addr, 6); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_WAKEUP_STA, addr, 6); } -int hgic_fwctrl_set_ps_heartbeat(struct hgic_fwctrl *ctrl, u32 ipaddr, u32 dport, u32 period, u32 hb_tmo) +int hgic_fwctrl_set_ps_heartbeat(struct hgic_fwctrl *ctrl, u8 ifidx, u32 ipaddr, u32 dport, u32 period, u32 hb_tmo) { u8 val[16]; put_unaligned_le32(ipaddr, val); @@ -872,288 +670,576 @@ int hgic_fwctrl_set_ps_heartbeat(struct hgic_fwctrl *ctrl, u32 ipaddr, u32 dport put_unaligned_le32(period, val + 8); put_unaligned_le32(hb_tmo, val + 12); hgic_dbg("ip:%x, port:%d, period:%d, hb_tmo:%d\r\n", ipaddr, dport, period, hb_tmo); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_PS_HEARTBEAT, val, 16); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_PS_HEARTBEAT, val, 16); } -int hgic_fwctrl_set_ps_heartbeat_resp(struct hgic_fwctrl *ctrl, u8 *data, u32 size) +int hgic_fwctrl_set_ps_heartbeat_resp(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 size) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_PS_HEARTBEAT_RESP, data, size); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_PS_HEARTBEAT_RESP, data, size); } -int hgic_fwctrl_set_ps_wakeup_data(struct hgic_fwctrl *ctrl, u8 *data, u32 size) +int hgic_fwctrl_set_ps_wakeup_data(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 size) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_PS_WAKEUP_DATA, data, size); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_PS_WAKEUP_DATA, data, size); } -int hgic_fwctrl_set_ps_connect(struct hgic_fwctrl *ctrl, u8 period, u8 roundup) +int hgic_fwctrl_set_ps_connect(struct hgic_fwctrl *ctrl, u8 ifidx, u8 period, u8 roundup) { u8 val[2] = {period, roundup}; - ctrl->param.ps_connect = period; - ctrl->param.ps_connect_roundup = roundup; - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_PS_CONNECT, val, 2); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_PS_CONNECT, val, 2); } -int hgic_fwctrl_radio_onoff(struct hgic_fwctrl *ctrl, u8 onoff) +int hgic_fwctrl_radio_onoff(struct hgic_fwctrl *ctrl, u8 ifidx, u8 onoff) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_RADIO_ONOFF, onoff); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_RADIO_ONOFF, onoff); } -int hgic_fwctrl_set_bss_max_idle(struct hgic_fwctrl *ctrl, u32 max_idle) +int hgic_fwctrl_set_bss_max_idle(struct hgic_fwctrl *ctrl, u8 ifidx, u32 max_idle) { - ctrl->param.bss_max_idle = max_idle; - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_BSS_MAX_IDLE, max_idle); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_BSS_MAX_IDLE, max_idle); } -int hgic_fwctrl_set_wkio_mode(struct hgic_fwctrl *ctrl, u8 mode) +int hgic_fwctrl_set_wkio_mode(struct hgic_fwctrl *ctrl, u8 ifidx, u8 mode) { - ctrl->param.wkio_mode = mode; - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_WKIO_MODE, mode); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_WKIO_MODE, mode); } -int hgic_fwctrl_set_dtim_period(struct hgic_fwctrl *ctrl, u32 period) +int hgic_fwctrl_set_dtim_period(struct hgic_fwctrl *ctrl, u8 ifidx, u32 period) { - ctrl->param.dtim_period = period; - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_DTIM_PERIOD, period); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_DTIM_PERIOD, period); } -int hgic_fwctrl_set_ps_mode(struct hgic_fwctrl *ctrl, u8 mode) +int hgic_fwctrl_set_ps_mode(struct hgic_fwctrl *ctrl, u8 ifidx, u8 mode) { - ctrl->param.ps_mode = mode; - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_PS_MODE, mode); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_PS_MODE, mode); } -int hgic_fwctrl_set_load_def(struct hgic_fwctrl *ctrl, u8 rst) +int hgic_fwctrl_set_load_def(struct hgic_fwctrl *ctrl, u8 ifidx, u8 rst) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_LOAD_DEF, rst); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_LOAD_DEF, rst); } -int hgic_fwctrl_disassoc_sta(struct hgic_fwctrl *ctrl, u8 *addr) +int hgic_fwctrl_disassoc_sta(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_DISASSOC_STA, addr, 6); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_DISASSOC_STA, addr, 6); } -int hgic_fwctrl_set_aplost_time(struct hgic_fwctrl *ctrl, u32 aplost_time) +int hgic_fwctrl_set_aplost_time(struct hgic_fwctrl *ctrl, u8 ifidx, u32 aplost_time) { - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_APLOST_TIME, aplost_time); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_APLOST_TIME, aplost_time); } -int hgic_fwctrl_get_wkreason(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_get_wkreason(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_do_cmd(ctrl, HGIC_CMD_GET_WAKEUP_REASON, 0, 0, 0, 0); + return hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_GET_WAKEUP_REASON, 0, 0, 0, 0); } -int hgic_fwctrl_unpair(struct hgic_fwctrl *ctrl, u8 *addr) +int hgic_fwctrl_unpair(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr) { - ARG_FREE(ssid); - ARG_FREE(bssid); - ARG_FREE(bssid_filter); - ARG_FREE(key_mgmt); - ARG_FREE(wpa_psk); - ARG_FREE(paired_stas); - ARG_FREE(mcast_key); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_UNPAIR, addr, 6); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_UNPAIR, addr, 6); } -int hgic_fwctrl_set_auto_chswitch(struct hgic_fwctrl *ctrl, u8 enable) +int hgic_fwctrl_set_auto_chswitch(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_AUTO_CHAN_SWITCH, enable); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_AUTO_CHAN_SWITCH, enable); } -int hgic_fwctrl_set_mcast_key(struct hgic_fwctrl *ctrl, u8 *mcast_key) +int hgic_fwctrl_set_mcast_key(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *mcast_key) { - ARG_DUP(mcast_key, 0); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_MCAST_KEY, mcast_key, STR_LEN(mcast_key)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_MCAST_KEY, mcast_key, STR_LEN(mcast_key)); } -int hgic_fwctrl_set_reassoc_wkhost(struct hgic_fwctrl *ctrl, u8 enable) +int hgic_fwctrl_set_reassoc_wkhost(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_REASSOC_WKHOST, enable); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_REASSOC_WKHOST, enable); } -int hgic_fwctrl_set_wakeup_io(struct hgic_fwctrl *ctrl, u8 io, u8 edge) +int hgic_fwctrl_set_wakeup_io(struct hgic_fwctrl *ctrl, u8 ifidx, u8 io, u8 edge) { u8 val[2] = {io, edge}; - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_WAKEUP_IO, val, 2); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_WAKEUP_IO, val, 2); } -int hgic_fwctrl_set_dbginfo_output(struct hgic_fwctrl *ctrl, u8 enable) +int hgic_fwctrl_set_dbginfo_output(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_DBGINFO_OUTPUT, enable); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_DBGINFO_OUTPUT, enable); } -int hgic_fwctrl_set_sysdbg(struct hgic_fwctrl *ctrl, u8 *cmd) +int hgic_fwctrl_set_sysdbg(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *cmd) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_SYSDBG, cmd, STR_LEN(cmd)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_SYSDBG, cmd, STR_LEN(cmd)); } -int hgic_fwctrl_set_autosleep_time(struct hgic_fwctrl *ctrl, u8 time) +int hgic_fwctrl_set_autosleep_time(struct hgic_fwctrl *ctrl, u8 ifidx, u8 time) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_AUTO_SLEEP_TIME, time); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_AUTO_SLEEP_TIME, time); } -int hgic_fwctrl_get_key_mgmt(struct hgic_fwctrl *ctrl, u8 *ssid, u32 size) +int hgic_fwctrl_get_key_mgmt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *ssid, u32 size) { - return hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_KEY_MGMT, ssid, size); + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_KEY_MGMT, ssid, size); } -int hgic_fwctrl_set_supper_pwr(struct hgic_fwctrl *ctrl, u8 enable) +int hgic_fwctrl_set_super_pwr(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_SUPPER_PWR, enable); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_SUPER_PWR, enable); } -int hgic_fwctrl_set_repeater_ssid(struct hgic_fwctrl *ctrl, u8 *ssid) +int hgic_fwctrl_set_repeater_ssid(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *ssid) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_REPEATER_SSID, ssid, STR_LEN(ssid)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_REPEATER_SSID, ssid, STR_LEN(ssid)); } -int hgic_fwctrl_set_repeater_psk(struct hgic_fwctrl *ctrl, u8 *wpa_psk) +int hgic_fwctrl_set_repeater_psk(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *wpa_psk) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_REPEATER_PSK, wpa_psk, STR_LEN(wpa_psk)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_REPEATER_PSK, wpa_psk, STR_LEN(wpa_psk)); } -int hgic_fwctrl_set_auto_save(struct hgic_fwctrl *ctrl, u8 enable) +int hgic_fwctrl_set_auto_save(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_CFG_AUTO_SAVE, enable); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_CFG_AUTO_SAVE, enable); } -int hgic_fwctrl_set_pair_autostop(struct hgic_fwctrl *ctrl, u8 enable) +int hgic_fwctrl_set_pair_autostop(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_PAIR_AUTOSTOP, enable); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_PAIR_AUTOSTOP, enable); } -int hgic_fwctrl_send_cust_mgmt(struct hgic_fwctrl *ctrl, u8 *data, u32 len) +int hgic_fwctrl_send_cust_mgmt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SEND_CUST_MGMT, data, len); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SEND_CUST_MGMT, data, len); } - -int hgic_fwctrl_get_battery_level(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_send_mgmtframe(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len) { - return hgic_fwctrl_get_short_val(ctrl, HGIC_CMD_GET_BATTERY_LEVEL); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SEND_MGMTFRAME, data, len); } -int hgic_fwctrl_set_dcdc13v(struct hgic_fwctrl *ctrl, u8 enable) +int hgic_fwctrl_get_battery_level(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_DCDC13, enable); + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_BATTERY_LEVEL); } -int hgic_fwctrl_set_acktmo(struct hgic_fwctrl *ctrl, u32 tmo) +int hgic_fwctrl_set_dcdc13v(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable) { - return hgic_fwctrl_set_int_val(ctrl, HGIC_CMD_SET_ACKTMO, tmo); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_DCDC13, enable); } -int hgic_fwctrl_get_module_type(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_set_acktmo(struct hgic_fwctrl *ctrl, u8 ifidx, u32 tmo) { - return hgic_fwctrl_get_short_val(ctrl, HGIC_CMD_GET_MODULETYPE); + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_ACKTMO, tmo); } -int hgic_fwctrl_set_pa_pwrctl_dis(struct hgic_fwctrl *ctrl, u8 dis) +int hgic_fwctrl_get_module_type(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_PA_PWRCTRL_DIS, dis); + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_MODULETYPE); } -int hgic_fwctrl_set_dhcpc(struct hgic_fwctrl *ctrl, u8 en) +int hgic_fwctrl_set_pa_pwrctl_dis(struct hgic_fwctrl *ctrl, u8 ifidx, u8 dis) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_DHCPC, en); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_PA_PWRCTRL_DIS, dis); } -int hgic_fwctrl_get_dhcpc_result(struct hgic_fwctrl *ctrl, u8 *buff, int len) +int hgic_fwctrl_set_dhcpc(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en) { - return hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_DHCPC_RESULT, buff, len); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_DHCPC, en); } -int hgic_fwctrl_set_wkdata_mask(struct hgic_fwctrl *ctrl, u16 offset, u8 *mask, u8 mask_len) +int hgic_fwctrl_get_dhcpc_result(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *buff, int len) +{ + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_DHCPC_RESULT, buff, len); +} + +int hgic_fwctrl_set_wkdata_mask(struct hgic_fwctrl *ctrl, u8 ifidx, u16 offset, u8 *mask, u8 mask_len) { u8 data[128]; - if(mask_len > 16) mask_len = 16; + if (mask_len > 16) mask_len = 16; memset(data, 0, sizeof(data)); put_unaligned_le16(offset, data); memcpy(data + 2, mask, mask_len); - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_WKUPDATA_MASK, data, mask_len + 2); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_WKUPDATA_MASK, data, mask_len + 2); } -int hgic_fwctrl_get_wkdata_buff(struct hgic_fwctrl *ctrl, u8 *buff, int len) +int hgic_fwctrl_get_wkdata_buff(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *buff, int len) { - return hgic_fwctrl_get_bytes(ctrl, HGIC_CMD_GET_WKDATA_BUFF, buff, len); + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_WKDATA_BUFF, buff, len); } -int hgic_fwctrl_get_disassoc_reason(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_get_disassoc_reason(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_get_short_val(ctrl, HGIC_CMD_GET_DISASSOC_REASON); + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_DISASSOC_REASON); } -int hgic_fwctrl_set_wkdata_save(struct hgic_fwctrl *ctrl, u8 save) +int hgic_fwctrl_set_wkdata_save(struct hgic_fwctrl *ctrl, u8 ifidx, u8 save) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_WKUPDATA_SAVEEN, save); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_WKUPDATA_SAVEEN, save); } -int hgic_fwctrl_set_cust_driver_data(struct hgic_fwctrl *ctrl, u8 *data, u32 len) +int hgic_fwctrl_set_cust_driver_data(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_CUST_DRIVER_DATA, data, len); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_CUST_DRIVER_DATA, data, len); } -int hgic_fwctrl_set_mcast_txparam(struct hgic_fwctrl *ctrl, struct hgic_mcast_txparam *param) +int hgic_fwctrl_set_mcast_txparam(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_mcast_txparam *param) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_MCAST_TXPARAM, (u8 *)param, sizeof(struct hgic_mcast_txparam)); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_MCAST_TXPARAM, (u8 *)param, sizeof(struct hgic_mcast_txparam)); } -int hgic_fwctrl_set_freqinfo(struct hgic_fwctrl *ctrl, u8 *data, u32 len) +int hgic_fwctrl_set_freqinfo(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_STA_FREQINFO, data, len); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_STA_FREQINFO, data, len); } -int hgic_fwctrl_reset_sta(struct hgic_fwctrl *ctrl, u8 *addr) +int hgic_fwctrl_reset_sta(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_RESET_STA, addr, 6); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_RESET_STA, addr, 6); } -int hgic_fwctrl_set_ant_auto(struct hgic_fwctrl *ctrl, u8 en) +int hgic_fwctrl_set_ant_auto(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_ANT_AUTO, en); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_ANT_AUTO, en); } -int hgic_fwctrl_select_ant(struct hgic_fwctrl *ctrl, u8 ant) +int hgic_fwctrl_select_ant(struct hgic_fwctrl *ctrl, u8 ifidx, u8 ant) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_ANT_SEL, ant); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_ANT_SEL, ant); } -int hgic_fwctrl_get_ant_sel(struct hgic_fwctrl *ctrl) +int hgic_fwctrl_get_ant_sel(struct hgic_fwctrl *ctrl, u8 ifidx) { - return hgic_fwctrl_get_short_val(ctrl, HGIC_CMD_GET_ANT_SEL); + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_ANT_SEL); } -int hgic_fwctrl_set_wkhost_reasons(struct hgic_fwctrl *ctrl, u8 *reasons, u8 count) +int hgic_fwctrl_set_wkhost_reasons(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *reasons, u8 count) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_WKUP_HOST_REASON, reasons, count); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_WKUP_HOST_REASON, reasons, count); } -int hgic_fwctrl_set_mac_filter(struct hgic_fwctrl *ctrl, u8 en) +int hgic_fwctrl_set_mac_filter(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_MAC_FILTER_EN, en); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_MAC_FILTER_EN, en); } -int hgic_fwctrl_set_atcmd(struct hgic_fwctrl *ctrl, char *atcmd) +int hgic_fwctrl_set_atcmd(struct hgic_fwctrl *ctrl, u8 ifidx, char *atcmd) { - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_ATCMD, atcmd, strlen(atcmd)); + int ret = 0; + if (strncasecmp(atcmd, "at+", 3)) { + char *tmp = kzalloc(strlen(atcmd) + 12, GFP_KERNEL); + if (tmp) { + strcpy(tmp, "at+"); + strcpy(tmp + 3, atcmd); + ret = hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_ATCMD, tmp, strlen(tmp)); + kfree(tmp); + return ret; + } + return -ENOMEM; + } else { + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_ATCMD, atcmd, strlen(atcmd)); + } } -int hgic_fwctrl_set_roaming(struct hgic_fwctrl *ctrl, u8 en, u8 same_freq) +int hgic_fwctrl_set_roaming(struct hgic_fwctrl *ctrl, u8 ifidx, s8 *vals, u8 count) { - u8 vals[2] = {en, same_freq}; - return hgic_fwctrl_set_bytes(ctrl, HGIC_CMD_SET_ROAMING, vals, 2); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_ROAMING, vals, count); } -int hgic_fwctrl_set_ap_hide(struct hgic_fwctrl *ctrl, u8 hide) +int hgic_fwctrl_set_ap_hide(struct hgic_fwctrl *ctrl, u8 ifidx, u8 hide) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_AP_HIDE, hide); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_AP_HIDE, hide); } -int hgic_fwctrl_set_frm_tx_maxcnt(struct hgic_fwctrl *ctrl, u8 txcnt) +int hgic_fwctrl_set_frm_tx_maxcnt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 txcnt) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_MAX_TCNT, txcnt); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_MAX_TCNT, txcnt); } -int hgic_fwctrl_set_assert_holdup(struct hgic_fwctrl *ctrl, u8 holdup) +int hgic_fwctrl_set_assert_holdup(struct hgic_fwctrl *ctrl, u8 ifidx, u8 holdup) { - return hgic_fwctrl_set_byte(ctrl, HGIC_CMD_SET_ASSERT_HOLDUP, holdup); + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_ASSERT_HOLDUP, holdup); +} + +int hgic_fwctrl_set_ap_psmode_en(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_AP_PSMODE_EN, en); +} + +int hgic_fwctrl_set_dupfilter_en(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_DUPFILTER_EN, en); +} + +int hgic_fwctrl_set_1v1_m2u_dis(struct hgic_fwctrl *ctrl, u8 ifidx, u8 dis) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_DIS_1V1_M2U, dis); +} + +int hgic_fwctrl_set_psconnect_dis(struct hgic_fwctrl *ctrl, u8 ifidx, u8 dis) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_DIS_PSCONNECT, dis); +} + +int hgic_fwctrl_set_blenc_en(struct hgic_fwctrl *ctrl, u8 ifidx, u8 data[2]) +{ + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_BLENC_EN, data, 2); +} + +int hgic_fwctrl_blenc_send_data(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len) +{ + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SEND_BLENC_DATA, data, len); +} +int hgic_fwctrl_blenc_set_advdata(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len) +{ + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SEND_BLENC_ADVDATA, data, len); +} +int hgic_fwctrl_blenc_set_scanresp(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len) +{ + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SEND_BLENC_SCANRESP, data, len); +} +int hgic_fwctrl_blenc_set_devaddr(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr) +{ + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SEND_BLENC_DEVADDR, addr, 6); +} +int hgic_fwctrl_blenc_set_advinterval(struct hgic_fwctrl *ctrl, u8 ifidx, u32 interval) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SEND_BLENC_ADVINTERVAL, interval); +} +int hgic_fwctrl_blenc_start_adv(struct hgic_fwctrl *ctrl, u8 ifidx, u32 en) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SEND_BLENC_STARTADV, en); +} + +int hgic_fwctrl_reset(struct hgic_fwctrl *ctrl, u8 ifidx) +{ + return hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_RESET, 0, 0, 0, 0); +} + +int hgic_fwctrl_set_hwscan(struct hgic_fwctrl *ctrl, u8 ifidx, u16 period, u16 interval, u16 chan, u16 max) +{ + u8 val[5]; + val[0] = period; + val[1] = interval; + val[4] = max; + put_unaligned_le16(chan, val + 2); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_HWSCAN, val, 5); +} + +int hgic_fwctrl_get_txq_param(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_txq_param param[4]) +{ + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_TXQ_PARAM, (u8 *)param, 4 * sizeof(struct hgic_txq_param)); +} + +int hgic_fwctrl_set_promisc(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_PROMISC, enable); +} + +int hgic_fwctrl_set_fix_txrate(struct hgic_fwctrl *ctrl, u8 ifidx, u32 txrate) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_FIX_TXRATE, txrate); +} + +int hgic_fwctrl_set_nav_max(struct hgic_fwctrl *ctrl, u8 ifidx, u32 nav_max) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_NAV_MAX, nav_max); +} + +int hgic_fwctrl_clear_nav(struct hgic_fwctrl *ctrl, u8 ifidx) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_NAV_MAX, 0); +} + +int hgic_fwctrl_set_cca_param(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_cca_ctl *cca) +{ + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_CCA_PARAM, (u8 *)cca, sizeof(struct hgic_cca_ctl)); +} + +int hgic_fwctrl_set_tx_modulation_gain(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *gain_table, u32 size) +{ + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_TX_MODGAIN, gain_table, size); +} + +int hgic_fwctrl_get_nav(struct hgic_fwctrl *ctrl, u8 ifidx) +{ + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_NAV); +} + +int hgic_fwctrl_get_bgrssi(struct hgic_fwctrl *ctrl, u8 ifidx, u8 channel, s8 resp[3]) +{ + return hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_GET_BGRSSI, &channel, 1, resp, 3); +} + +int hgic_fwctrl_send_hci_data(struct hgic_fwctrl *ctrl, u8 type, u8 *data, u32 len) +{ + struct hgic_ctrl_hdr *hdr; + struct sk_buff *skb = dev_alloc_skb(ctrl->bus->drv_tx_headroom + sizeof(struct hgic_ctrl_hdr) + len + 4); + if (skb) { + skb_reserve(skb, ctrl->bus->drv_tx_headroom); + hdr = (struct hgic_ctrl_hdr *)skb->data; + memcpy((u8 *)(hdr + 1), data, len); + skb_put(skb, sizeof(struct hgic_ctrl_hdr) + len); + memset(hdr, 0, sizeof(struct hgic_ctrl_hdr)); + hdr->hdr.magic = cpu_to_le16(HGIC_HDR_TX_MAGIC); + hdr->hdr.type = HGIC_HDR_TYPE_BLUETOOTH; + hdr->hdr.ifidx = 1; + hdr->hdr.length = cpu_to_le16(skb->len); + hdr->hci.type = type; + skb_queue_tail(&ctrl->txq, skb); + ctrl->schedule(ctrl); + return 0; + } + return -ENOMEM; +} + +int hgic_fwctrl_set_beacon_start(struct hgic_fwctrl *ctrl, u8 ifidx, u8 start) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_BEACON_START, start); +} + +int hgic_fwctrl_ble_open(struct hgic_fwctrl *ctrl, u8 ifidx, u8 open) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_BLE_OPEN, open); +} + +int hgic_fwctrl_set_rts_duration(struct hgic_fwctrl *ctrl, u8 ifidx, int duration) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_RTS_DURATION, duration); +} + +int hgic_fwctrl_set_disable_print(struct hgic_fwctrl *ctrl, u8 ifidx, int dis) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_DISABLE_PRINT, dis); +} + +int hgic_fwctrl_set_conn_paironly(struct hgic_fwctrl *ctrl, u8 ifidx, int en) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_CONNECT_PAIRONLY, en); +} + +int hgic_fwctrl_get_center_freq(struct hgic_fwctrl *ctrl, u8 ifidx) +{ + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_CENTER_FREQ); +} + +int hgic_fwctrl_set_wait_psmode(struct hgic_fwctrl *ctrl, u8 ifidx, u8 wait_psmode) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_WAIT_PSMODE, wait_psmode); +} + +int hgic_fwctrl_set_diffcust_conn(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_DIFFCUST_CONN, en); +} + +int hgic_fwctrl_set_ap_chan_switch(struct hgic_fwctrl *ctrl, u8 ifidx, u8 chan, u8 counter) +{ + u8 val[2] = {chan, counter}; + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_AP_CHAN_SWITCH, val, 2); +} + +int hgic_fwctrl_set_cca_for_ce(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_CCA_FOR_CE, en); +} + +int hgic_fwctrl_set_standby(struct hgic_fwctrl *ctrl, u8 ifidx, u8 channel, u32 sleep_period) +{ + u8 val[5]; + val[0] = channel; + put_unaligned_le32(sleep_period, val + 1); + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_STANDBY_CFG, val, 5); +} + +int hgic_fwctrl_set_rtc(struct hgic_fwctrl *ctrl, u8 ifidx, u32 rtc) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_RTC, rtc); +} + +int hgic_fwctrl_get_rtc(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *rtc) +{ + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_RTC, rtc, 4); +} + +int hgic_fwctrl_set_apep_padding(struct hgic_fwctrl *ctrl, u8 ifidx, int en) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_APEP_PADDING, en); +} + +int hgic_fwctrl_get_acs_result(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_acs_result *result, u8 size) +{ + return hgic_fwctrl_get_bytes(ctrl, ifidx, HGIC_CMD_GET_WIFI_STATUS_CODE, (u8 *)result, size * sizeof(struct hgic_acs_result)); +} + +int hgic_fwctrl_get_reason_code(struct hgic_fwctrl *ctrl, u8 ifidx) +{ + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_WIFI_REASON_CODE); +} + +int hgic_fwctrl_get_status_code(struct hgic_fwctrl *ctrl, u8 ifidx) +{ + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_WIFI_STATUS_CODE); +} + +int hgic_fwctrl_set_watchdog(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_WATCHDOG, enable); +} + +int hgic_fwctrl_set_retry_fallback_cnt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 cnt) +{ + return hgic_fwctrl_set_byte(ctrl, ifidx, HGIC_CMD_SET_RETRY_FALLBACK_CNT, cnt); +} + +int hgic_fwctrl_set_fallback_mcs(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_fallback_mcs *mcs) +{ + return hgic_fwctrl_set_bytes(ctrl, ifidx, HGIC_CMD_SET_FALLBACK_MCS, (u8 *)mcs, sizeof(struct hgic_fallback_mcs)); +} + +int hgic_fwctrl_get_xosc(struct hgic_fwctrl *ctrl, u8 ifidx) +{ + return hgic_fwctrl_get_int_val(ctrl, ifidx, HGIC_CMD_GET_XOSC_VALUE); +} + +int hgic_fwctrl_set_xosc(struct hgic_fwctrl *ctrl, u8 ifidx, int xosc) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_XOSC_VALUE, xosc); +} + +int hgic_fwctrl_get_freq_offset(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr) +{ + u8 data[4]; + if (hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_GET_FREQ_OFFSET, addr, 6, data, 4) == 4) { + return get_unaligned_le32(data); + } else { + return -1; + } +} + +int hgic_fwctrl_set_freq_cali_period(struct hgic_fwctrl *ctrl, u8 ifidx, u16 cali_period) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_CALI_PERIOD, cali_period); +} + +int hgic_fwctrl_set_blenc_adv_filter(struct hgic_fwctrl *ctrl, u8 ifidx, u32 filter) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_BLENC_ADVFILTER, filter); +} + +int hgic_fwctrl_set_max_tx_delay(struct hgic_fwctrl *ctrl, u8 ifidx, u32 tmo) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_MAX_TX_DELAY, tmo); +} + +int hgic_fwctrl_get_sta_info(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *mac, struct hgic_sta_info *info) +{ + return hgic_fwctrl_do_cmd(ctrl, ifidx, HGIC_CMD_GET_STA_INFO, mac, 6, (u8 *)info, sizeof(struct hgic_sta_info)); +} + +int hgic_fwctrl_get_signal(struct hgic_fwctrl *ctrl, u8 ifidx) +{ + return hgic_fwctrl_get_short_val(ctrl, ifidx, HGIC_CMD_GET_SIGNAL); +} + +int hgic_fwctrl_set_heartbeat_int(struct hgic_fwctrl *ctrl, u8 ifidx, u32 val) +{ + return hgic_fwctrl_set_int_val(ctrl, ifidx, HGIC_CMD_SET_HEARTBEAT_INT, val); } diff --git a/utils/fwctrl.h b/utils/fwctrl.h index c695308..cccb2fd 100644 --- a/utils/fwctrl.h +++ b/utils/fwctrl.h @@ -15,32 +15,6 @@ struct hgic_cmd_response { struct sk_buff *skb; }; -struct hgic_fwctrl_params { - u8 *country_code; - u8 *ssid; - u8 *bssid; - u8 *bssid_filter; - u8 *key_mgmt; - u8 *wpa_psk; - u8 *mcast_key; - u8 *mode; - u8 *mac_addr; - u8 *paired_stas; - u8 *chan_list; - u8 channel, chan_bw, bss_bw, tx_mcs, tx_bw; - u16 rts_threshold, frag_threshold; - u16 freq_start, freq_end; - u16 listen_interval; - u16 center_freq; - u16 beacon_int; - u16 ethertype; - u8 acs: 2, acs_tmo: 6; - u8 chan_cnt, txpower, primary_chan, agg_cnt; - u8 ps_mode, wkio_mode, ps_connect, ps_connect_roundup; - u32 dtim_period, bss_max_idle; - u16 aplost_time; -}; - struct hgic_fwctrl { struct device *dev; u16 cookie; @@ -50,9 +24,12 @@ struct hgic_fwctrl { struct sk_buff_head txq; /*fw ctrl packet tx queue*/ struct work_struct work; /*fw ctrl rx packet process work*/ struct workqueue_struct *wq; - struct hgic_fwctrl_params param; - struct work_struct flush_work; u8 qc_mode; + u8 radio_onoff; + struct hgic_fw_info *fwinfo; + struct hgic_bus *bus; + void (*schedule)(struct hgic_fwctrl *ctrl); + void (*rx_event)(struct hgic_fwctrl *ctrl, struct sk_buff *skb); }; /* @@ -68,129 +45,189 @@ int hgic_fwctrl_set_bytes(struct hgic_fwctrl *ctrl, int cmd_id, char *data, int */ u16 hgic_ctrl_cookie(struct hgic_fwctrl *ctrl); struct sk_buff *hgic_fwctrl_send_data(struct hgic_fwctrl *ctrl, struct sk_buff *skb, struct hgic_cmd_response *resp, u32 timeout); +int hgic_fwctrl_do_cmd(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, u8 *in, u32 in_len, u8 *out, u32 out_size); +int hgic_fwctrl_set_byte(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, u8 val); +int hgic_fwctrl_set_int_val(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, u32 val); +int hgic_fwctrl_get_int_val(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id); +short hgic_fwctrl_get_short_val(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id); +int hgic_fwctrl_set_bytes(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, u8 *data, u32 len); +int hgic_fwctrl_get_bytes(struct hgic_fwctrl *ctrl, u8 ifidx, u32 cmd_id, u8 *buff, u32 len); -void hgic_fwctrl_init(struct hgic_fwctrl *ctrl, void *dev); +void hgic_fwctrl_init(struct hgic_fwctrl *ctrl, void *dev, struct hgic_bus *bus); void hgic_fwctrl_release(struct hgic_fwctrl *ctrl); -void hgic_fwctrl_rx(struct hgic_fwctrl *ctrl, struct sk_buff *skb); -void hgic_rx_fw_event(struct hgic_fwctrl *ctrl, struct sk_buff *skb); -void hgic_schedule(struct hgic_fwctrl *ctrl); +void hgic_fwctrl_rx(struct hgic_fwctrl *ctrl, u8 *data, int len); void hgic_fwctrl_flush_param(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_testmode_cmd(struct hgic_fwctrl *ctrl, u8 *cmd, u32 size); -int hgic_fwctrl_get_status(struct hgic_fwctrl *ctrl, u8 *buff, u32 len); -int hgic_fwctrl_get_conn_state(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_get_fwinfo(struct hgic_fwctrl *ctrl, struct hgic_fw_info *info); -int hgic_fwctrl_set_countryregion(struct hgic_fwctrl *ctrl, u8 *country_code); -int hgic_fwctrl_set_ssid(struct hgic_fwctrl *ctrl, u8 *ssid); -int hgic_fwctrl_set_bssid(struct hgic_fwctrl *ctrl, u8 *bssid); -int hgic_fwctrl_set_channel(struct hgic_fwctrl *ctrl, u32 channel); -int hgic_fwctrl_set_bssid_filter(struct hgic_fwctrl *ctrl, u8 *filter); -int hgic_fwctrl_set_rts_threshold(struct hgic_fwctrl *ctrl, u32 rts_threshold); -int hgic_fwctrl_set_frag_threshold(struct hgic_fwctrl *ctrl, u32 frag_threshold); -int hgic_fwctrl_set_key_mgmt(struct hgic_fwctrl *ctrl, u8 *key_mgmt); -int hgic_fwctrl_set_wpa_psk(struct hgic_fwctrl *ctrl, u8 *psk); -int hgic_fwctrl_set_wbnat(struct hgic_fwctrl *ctrl, u32 enable); -int hgic_fwctrl_set_freq_range(struct hgic_fwctrl *ctrl, u32 freq_start, u32 freq_end, u32 bss_bw); -int hgic_fwctrl_set_bss_bw(struct hgic_fwctrl *ctrl, u8 bss_bw); -int hgic_fwctrl_set_tx_bw(struct hgic_fwctrl *ctrl, u8 tx_bw); -int hgic_fwctrl_set_tx_mcs(struct hgic_fwctrl *ctrl, u8 tx_mcs); -int hgic_fwctrl_set_acs(struct hgic_fwctrl *ctrl, u8 acs, u8 acs_tm); -int hgic_fwctrl_set_bgrssi(struct hgic_fwctrl *ctrl, u8 bgrssi); -int hgic_fwctrl_set_chan_list(struct hgic_fwctrl *ctrl, u16 *chan_list, u32 cnt); -int hgic_fwctrl_set_mode(struct hgic_fwctrl *ctrl, u8 *mode); -int hgic_fwctrl_set_paired_stas(struct hgic_fwctrl *ctrl, u8 *stas, u32 len); -int hgic_fwctrl_set_pairing(struct hgic_fwctrl *ctrl, u8 start); -int hgic_fwctrl_open_dev(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_close_dev(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_set_txpower(struct hgic_fwctrl *ctrl, u32 tx_power); -int hgic_fwctrl_get_txpower(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_set_listen_interval(struct hgic_fwctrl *ctrl, u32 listen_interval); -int hgic_fwctrl_set_center_freq(struct hgic_fwctrl *ctrl, u32 channel); -int hgic_fwctrl_set_tx_count(struct hgic_fwctrl *ctrl, u32 short_frm_tx_count, u32 long_frm_tx_count); -int hgic_fwctrl_set_key(struct hgic_fwctrl *ctrl, u8 cmd, u16 aid, u8 *key, u8 len); -int hgic_fwctrl_add_sta(struct hgic_fwctrl *ctrl, u16 aid, u8 *addr); -int hgic_fwctrl_del_sta(struct hgic_fwctrl *ctrl, u32 aid); -int hgic_fwctrl_set_primary_chan(struct hgic_fwctrl *ctrl, u8 primary_chan); -int hgic_fwctrl_set_aid(struct hgic_fwctrl *ctrl, u32 aid); -int hgic_fwctrl_set_mac(struct hgic_fwctrl *ctrl, u8 *mac); -int hgic_fwctrl_get_scan_list(struct hgic_fwctrl *ctrl, u8 *buff, u32 size); -int hgic_fwctrl_scan(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_set_txq_param(struct hgic_fwctrl *ctrl, u8 *txq, u32 size); +int hgic_fwctrl_testmode_cmd(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *cmd, u32 size); +int hgic_fwctrl_get_status(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *buff, u32 len); +int hgic_fwctrl_get_conn_state(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_get_fwinfo(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_fw_info *info); +int hgic_fwctrl_set_countryregion(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *country_code); +int hgic_fwctrl_set_ssid(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *ssid); +int hgic_fwctrl_set_bssid(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *bssid); +int hgic_fwctrl_set_channel(struct hgic_fwctrl *ctrl, u8 ifidx, u32 channel); +int hgic_fwctrl_set_bssid_filter(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *filter); +int hgic_fwctrl_set_rts_threshold(struct hgic_fwctrl *ctrl, u8 ifidx, u32 rts_threshold); +int hgic_fwctrl_set_frag_threshold(struct hgic_fwctrl *ctrl, u8 ifidx, u32 frag_threshold); +int hgic_fwctrl_set_key_mgmt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *key_mgmt); +int hgic_fwctrl_set_wpa_psk(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *psk); +int hgic_fwctrl_set_wbnat(struct hgic_fwctrl *ctrl, u8 ifidx, u32 enable); +int hgic_fwctrl_set_freq_range(struct hgic_fwctrl *ctrl, u8 ifidx, u32 freq_start, u32 freq_end, u32 bss_bw); +int hgic_fwctrl_set_bss_bw(struct hgic_fwctrl *ctrl, u8 ifidx, u8 bss_bw); +int hgic_fwctrl_set_tx_bw(struct hgic_fwctrl *ctrl, u8 ifidx, u8 tx_bw); +int hgic_fwctrl_set_tx_mcs(struct hgic_fwctrl *ctrl, u8 ifidx, u8 tx_mcs); +int hgic_fwctrl_set_acs(struct hgic_fwctrl *ctrl, u8 ifidx, u8 acs, u8 acs_tm); +int hgic_fwctrl_set_bgrssi(struct hgic_fwctrl *ctrl, u8 ifidx, u8 bgrssi); +int hgic_fwctrl_set_chan_list(struct hgic_fwctrl *ctrl, u8 ifidx, u16 *chan_list, u32 cnt); +int hgic_fwctrl_set_mode(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *mode); +int hgic_fwctrl_set_paired_stas(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *stas, u32 len); +int hgic_fwctrl_set_pairing(struct hgic_fwctrl *ctrl, u8 ifidx, u32 start); +int hgic_fwctrl_open_dev(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_close_dev(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_txpower(struct hgic_fwctrl *ctrl, u8 ifidx, u32 tx_power); +int hgic_fwctrl_get_txpower(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_listen_interval(struct hgic_fwctrl *ctrl, u8 ifidx, u32 listen_interval); +int hgic_fwctrl_set_center_freq(struct hgic_fwctrl *ctrl, u8 ifidx, u32 channel); +int hgic_fwctrl_set_tx_count(struct hgic_fwctrl *ctrl, u8 ifidx, u32 short_frm_tx_count, u32 long_frm_tx_count); +int hgic_fwctrl_set_key(struct hgic_fwctrl *ctrl, u8 ifidx, u8 cmd, u8 *addr, u8 *key, u8 len); +int hgic_fwctrl_add_sta(struct hgic_fwctrl *ctrl, u8 ifidx, u16 aid, u8 *addr); +int hgic_fwctrl_del_sta(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr); +int hgic_fwctrl_set_primary_chan(struct hgic_fwctrl *ctrl, u8 ifidx, u8 primary_chan); +int hgic_fwctrl_set_aid(struct hgic_fwctrl *ctrl, u8 ifidx, u32 aid); +int hgic_fwctrl_set_mac(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *mac_addr); +int hgic_fwctrl_get_scan_list(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *buff, u32 size); +int hgic_fwctrl_scan(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_txq_param(struct hgic_fwctrl *ctrl, u8 ifidx, u8 ac, struct hgic_txq_param *param); +int hgic_fwctrl_set_user_edca(struct hgic_fwctrl *ctrl, u8 ifidx, u8 ac, struct hgic_txq_param *param); int hgic_fwctrl_get_temperature(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_enter_sleep(struct hgic_fwctrl *ctrl, u8 sleep); -int hgic_fwctrl_get_sta_list(struct hgic_fwctrl *ctrl, struct hgic_sta_info *sta_list, u32 size); -int hgic_fwctrl_set_beacon_int(struct hgic_fwctrl *ctrl, u32 beacon_int); -int hgic_fwctrl_get_ssid(struct hgic_fwctrl *ctrl, u8 *ssid, u32 size); -int hgic_fwctrl_get_wpapsk(struct hgic_fwctrl *ctrl, u8 *psk, u32 size); -int hgic_fwctrl_save_cfg(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_join_group(struct hgic_fwctrl *ctrl, u8 *addr, u8 aid); -int hgic_fwctrl_set_ethertype(struct hgic_fwctrl *ctrl, u16 type); -int hgic_fwctrl_get_sta_count(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_get_bss_bw(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_get_freq_range(struct hgic_fwctrl *ctrl, u32 *freq_start, u32 *freq_end, u32 *bss_bw); -int hgic_fwctrl_get_chan_list(struct hgic_fwctrl *ctrl, u16 *chan_list, u16 count); -int hgic_fwctrl_get_agg_cnt(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_set_agg_cnt(struct hgic_fwctrl *ctrl, u8 agg_cnt); -int hgic_fwctrl_set_ps_addr(struct hgic_fwctrl *ctrl, u32 dport); -int hgic_fwctrl_wakeup_sta(struct hgic_fwctrl *ctrl, u8 *addr); -int hgic_fwctrl_set_ps_heartbeat(struct hgic_fwctrl *ctrl, u32 ipaddr, u32 dport, u32 period, u32 hb_tmo); -int hgic_fwctrl_set_ps_heartbeat_resp(struct hgic_fwctrl *ctrl, u8 *data, u32 size); -int hgic_fwctrl_set_ps_wakeup_data(struct hgic_fwctrl *ctrl, u8 *data, u32 size); -int hgic_fwctrl_set_ps_connect(struct hgic_fwctrl *ctrl, u8 period, u8 roundup); -int hgic_fwctrl_set_ps_connect_count(struct hgic_fwctrl *ctrl, u8 try_cnt); -int hgic_fwctrl_set_ps_connect_time(struct hgic_fwctrl *ctrl, u32 time); -int hgic_fwctrl_get_ps_connect(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_get_ps_connect_count(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_get_ps_connect_time(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_radio_onoff(struct hgic_fwctrl *ctrl, u8 onoff); -int hgic_fwctrl_set_bss_max_idle(struct hgic_fwctrl *ctrl, u32 max_idle); -int hgic_fwctrl_set_wkio_mode(struct hgic_fwctrl *ctrl, u8 mode); -int hgic_fwctrl_set_ps_mode(struct hgic_fwctrl *ctrl, u8 mode); -int hgic_fwctrl_set_load_def(struct hgic_fwctrl *ctrl, u8 rst); -int hgic_fwctrl_disassoc_sta(struct hgic_fwctrl *ctrl, u8 *addr); -int hgic_fwctrl_set_dtim_period(struct hgic_fwctrl *ctrl, u32 period); -int hgic_fwctrl_set_aplost_time(struct hgic_fwctrl *ctrl, u32 aplost_time); -int hgic_fwctrl_get_wkreason(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_unpair(struct hgic_fwctrl *ctrl, u8 *addr); -int hgic_fwctrl_set_auto_chswitch(struct hgic_fwctrl *ctrl, u8 enable); -int hgic_fwctrl_set_mcast_key(struct hgic_fwctrl *ctrl, u8 *mcast_key); -int hgic_fwctrl_set_reassoc_wkhost(struct hgic_fwctrl *ctrl, u8 enable); -int hgic_fwctrl_set_wakeup_io(struct hgic_fwctrl *ctrl, u8 io, u8 edge); -int hgic_fwctrl_set_dbginfo_output(struct hgic_fwctrl *ctrl, u8 enable); -int hgic_fwctrl_set_sysdbg(struct hgic_fwctrl *ctrl, u8 *cmd); -int hgic_fwctrl_set_autosleep_time(struct hgic_fwctrl *ctrl, u8 time); -int hgic_fwctrl_get_key_mgmt(struct hgic_fwctrl *ctrl, u8 *ssid, u32 size); -int hgic_fwctrl_get_bssid(struct hgic_fwctrl *ctrl, u8 *bssid); -int hgic_fwctrl_set_supper_pwr(struct hgic_fwctrl *ctrl, u8 enable); -int hgic_fwctrl_set_repeater_ssid(struct hgic_fwctrl *ctrl, u8 *ssid); -int hgic_fwctrl_set_repeater_psk(struct hgic_fwctrl *ctrl, u8 *wpa_psk); -int hgic_fwctrl_set_auto_save(struct hgic_fwctrl *ctrl, u8 enable); -int hgic_fwctrl_set_pair_autostop(struct hgic_fwctrl *ctrl, u8 enable); -int hgic_fwctrl_send_cust_mgmt(struct hgic_fwctrl *ctrl, u8 *data, u32 len); -int hgic_fwctrl_get_battery_level(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_set_dcdc13v(struct hgic_fwctrl *ctrl, u8 enable); -int hgic_fwctrl_set_acktmo(struct hgic_fwctrl *ctrl, u32 tmo); -int hgic_fwctrl_get_module_type(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_set_pa_pwrctl_dis(struct hgic_fwctrl *ctrl, u8 dis); -int hgic_fwctrl_set_dhcpc(struct hgic_fwctrl *ctrl, u8 en); -int hgic_fwctrl_get_dhcpc_result(struct hgic_fwctrl *ctrl, u8* buff, int len); -int hgic_fwctrl_set_wkdata_mask(struct hgic_fwctrl *ctrl, u16 offset, u8 *mask, u8 mask_len); -int hgic_fwctrl_get_wkdata_buff(struct hgic_fwctrl *ctrl, u8* buff, int len); -int hgic_fwctrl_get_disassoc_reason(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_set_wkdata_save(struct hgic_fwctrl *ctrl, u8 save); -int hgic_fwctrl_set_cust_driver_data(struct hgic_fwctrl *ctrl, u8 *data, u32 len); -int hgic_fwctrl_set_mcast_txparam(struct hgic_fwctrl *ctrl, struct hgic_mcast_txparam *param); -int hgic_fwctrl_set_freqinfo(struct hgic_fwctrl *ctrl, u8 *data, u32 len); -int hgic_fwctrl_reset_sta(struct hgic_fwctrl *ctrl, u8 *addr); -int hgic_fwctrl_set_ant_auto(struct hgic_fwctrl *ctrl, u8 en); -int hgic_fwctrl_select_ant(struct hgic_fwctrl *ctrl, u8 ant); -int hgic_fwctrl_get_ant_sel(struct hgic_fwctrl *ctrl); -int hgic_fwctrl_set_wkhost_reasons(struct hgic_fwctrl *ctrl, u8 *reasons, u8 len); -int hgic_fwctrl_set_mac_filter(struct hgic_fwctrl *ctrl, u8 en); -int hgic_fwctrl_set_atcmd(struct hgic_fwctrl *ctrl, char *atcmd); -int hgic_fwctrl_set_roaming(struct hgic_fwctrl *ctrl, u8 en, u8 same_freq); -int hgic_fwctrl_set_ap_hide(struct hgic_fwctrl *ctrl, u8 hide); -int hgic_fwctrl_set_frm_tx_maxcnt(struct hgic_fwctrl *ctrl, u8 txcnt); -int hgic_fwctrl_set_assert_holdup(struct hgic_fwctrl *ctrl, u8 holdup); +int hgic_fwctrl_enter_sleep(struct hgic_fwctrl *ctrl, u8 ifidx, u16 sleep, u32 sleep_ms); +int hgic_fwctrl_get_sta_list(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_sta_info *sta_list, u32 size); +int hgic_fwctrl_set_beacon_int(struct hgic_fwctrl *ctrl, u8 ifidx, u32 beacon_int); +int hgic_fwctrl_get_ssid(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *ssid, u32 size); +int hgic_fwctrl_get_mode(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *mode, u32 size); +int hgic_fwctrl_get_wpapsk(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *psk, u32 size); +int hgic_fwctrl_save_cfg(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_join_group(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr, u8 aid); +int hgic_fwctrl_set_ethertype(struct hgic_fwctrl *ctrl, u8 ifidx, u16 type); +int hgic_fwctrl_get_sta_count(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_get_bss_bw(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_get_freq_range(struct hgic_fwctrl *ctrl, u8 ifidx, u32 *freq_start, u32 *freq_end, u32 *bss_bw); +int hgic_fwctrl_get_chan_list(struct hgic_fwctrl *ctrl, u8 ifidx, u16 *chan_list, u16 count); +int hgic_fwctrl_get_agg_cnt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *agg, u8 size); +int hgic_fwctrl_set_agg_cnt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 agg[2]); +int hgic_fwctrl_set_ps_addr(struct hgic_fwctrl *ctrl, u8 ifidx, u32 dport); +int hgic_fwctrl_wakeup_sta(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr); +int hgic_fwctrl_set_ps_heartbeat(struct hgic_fwctrl *ctrl, u8 ifidx, u32 ipaddr, u32 dport, u32 period, u32 hb_tmo); +int hgic_fwctrl_set_ps_heartbeat_resp(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 size); +int hgic_fwctrl_set_ps_wakeup_data(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 size); +int hgic_fwctrl_set_ps_connect(struct hgic_fwctrl *ctrl, u8 ifidx, u8 period, u8 roundup); +int hgic_fwctrl_set_ps_connect_count(struct hgic_fwctrl *ctrl, u8 ifidx, u8 try_cnt); +int hgic_fwctrl_set_ps_connect_time(struct hgic_fwctrl *ctrl, u8 ifidx, u32 time); +int hgic_fwctrl_get_ps_connect(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_get_ps_connect_count(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_get_ps_connect_time(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_radio_onoff(struct hgic_fwctrl *ctrl, u8 ifidx, u8 onoff); +int hgic_fwctrl_set_bss_max_idle(struct hgic_fwctrl *ctrl, u8 ifidx, u32 max_idle); +int hgic_fwctrl_set_wkio_mode(struct hgic_fwctrl *ctrl, u8 ifidx, u8 mode); +int hgic_fwctrl_set_ps_mode(struct hgic_fwctrl *ctrl, u8 ifidx, u8 mode); +int hgic_fwctrl_set_load_def(struct hgic_fwctrl *ctrl, u8 ifidx, u8 rst); +int hgic_fwctrl_disassoc_sta(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr); +int hgic_fwctrl_set_dtim_period(struct hgic_fwctrl *ctrl, u8 ifidx, u32 period); +int hgic_fwctrl_set_aplost_time(struct hgic_fwctrl *ctrl, u8 ifidx, u32 aplost_time); +int hgic_fwctrl_get_wkreason(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_unpair(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr); +int hgic_fwctrl_set_auto_chswitch(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable); +int hgic_fwctrl_set_mcast_key(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *mcast_key); +int hgic_fwctrl_set_reassoc_wkhost(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable); +int hgic_fwctrl_set_wakeup_io(struct hgic_fwctrl *ctrl, u8 ifidx, u8 io, u8 edge); +int hgic_fwctrl_set_dbginfo_output(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable); +int hgic_fwctrl_set_sysdbg(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *cmd); +int hgic_fwctrl_set_autosleep_time(struct hgic_fwctrl *ctrl, u8 ifidx, u8 time); +int hgic_fwctrl_get_key_mgmt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *ssid, u32 size); +int hgic_fwctrl_get_bssid(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *bssid, u32 len); +int hgic_fwctrl_set_super_pwr(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable); +int hgic_fwctrl_set_repeater_ssid(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *ssid); +int hgic_fwctrl_set_repeater_psk(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *wpa_psk); +int hgic_fwctrl_set_auto_save(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable); +int hgic_fwctrl_set_pair_autostop(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable); +int hgic_fwctrl_send_cust_mgmt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len); +int hgic_fwctrl_send_mgmtframe(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len); +int hgic_fwctrl_get_battery_level(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_dcdc13v(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable); +int hgic_fwctrl_set_acktmo(struct hgic_fwctrl *ctrl, u8 ifidx, u32 tmo); +int hgic_fwctrl_get_module_type(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_pa_pwrctl_dis(struct hgic_fwctrl *ctrl, u8 ifidx, u8 dis); +int hgic_fwctrl_set_dhcpc(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en); +int hgic_fwctrl_get_dhcpc_result(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *buff, int len); +int hgic_fwctrl_set_wkdata_mask(struct hgic_fwctrl *ctrl, u8 ifidx, u16 offset, u8 *mask, u8 mask_len); +int hgic_fwctrl_get_wkdata_buff(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *buff, int len); +int hgic_fwctrl_get_disassoc_reason(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_wkdata_save(struct hgic_fwctrl *ctrl, u8 ifidx, u8 save); +int hgic_fwctrl_set_cust_driver_data(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len); +int hgic_fwctrl_set_mcast_txparam(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_mcast_txparam *param); +int hgic_fwctrl_set_freqinfo(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len); +int hgic_fwctrl_reset_sta(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr); +int hgic_fwctrl_set_ant_auto(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en); +int hgic_fwctrl_select_ant(struct hgic_fwctrl *ctrl, u8 ifidx, u8 ant); +int hgic_fwctrl_get_ant_sel(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_wkhost_reasons(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *reasons, u8 len); +int hgic_fwctrl_set_mac_filter(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en); +int hgic_fwctrl_set_atcmd(struct hgic_fwctrl *ctrl, u8 ifidx, char *atcmd); +int hgic_fwctrl_set_roaming(struct hgic_fwctrl *ctrl, u8 ifidx, s8 *vals, u8 count); +int hgic_fwctrl_set_ap_hide(struct hgic_fwctrl *ctrl, u8 ifidx, u8 hide); +int hgic_fwctrl_set_frm_tx_maxcnt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 txcnt); +int hgic_fwctrl_set_assert_holdup(struct hgic_fwctrl *ctrl, u8 ifidx, u8 holdup); +int hgic_fwctrl_set_ap_psmode_en(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en); +int hgic_fwctrl_set_dupfilter_en(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en); +int hgic_fwctrl_set_1v1_m2u_dis(struct hgic_fwctrl *ctrl, u8 ifidx, u8 dis); +int hgic_fwctrl_set_psconnect_dis(struct hgic_fwctrl *ctrl, u8 ifidx, u8 dis); +int hgic_fwctrl_set_blenc_en(struct hgic_fwctrl *ctrl, u8 ifidx, u8 data[3]); +int hgic_fwctrl_blenc_send_data(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len); +int hgic_fwctrl_reset(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_hwscan(struct hgic_fwctrl *ctrl, u8 ifidx, u16 period, u16 interval, u16 chan, u16 max); +int hgic_fwctrl_get_txq_param(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_txq_param param[4]); +int hgic_fwctrl_set_promisc(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable); +int hgic_fwctrl_set_fix_txrate(struct hgic_fwctrl *ctrl, u8 ifidx, u32 txrate); +int hgic_fwctrl_set_nav_max(struct hgic_fwctrl *ctrl, u8 ifidx, u32 nav_max); +int hgic_fwctrl_clear_nav(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_cca_param(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_cca_ctl *cca); +int hgic_fwctrl_set_tx_modulation_gain(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *gain_table, u32 size); +int hgic_fwctrl_get_nav(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_send_hci_data(struct hgic_fwctrl *ctrl, u8 type, u8 *data, u32 len); +int hgic_fwctrl_set_beacon_start(struct hgic_fwctrl *ctrl, u8 ifidx, u8 start); +int hgic_fwctrl_ble_open(struct hgic_fwctrl *ctrl, u8 ifidx, u8 open); +int hgic_fwctrl_get_bgrssi(struct hgic_fwctrl *ctrl, u8 ifidx, u8 channel, s8 resp[3]); +int hgic_fwctrl_blenc_set_advdata(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len); +int hgic_fwctrl_blenc_set_scanresp(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *data, u32 len); +int hgic_fwctrl_blenc_set_devaddr(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr); +int hgic_fwctrl_blenc_set_advinterval(struct hgic_fwctrl *ctrl, u8 ifidx, u32 interval); +int hgic_fwctrl_blenc_start_adv(struct hgic_fwctrl *ctrl, u8 ifidx, u32 en); +int hgic_fwctrl_set_rts_duration(struct hgic_fwctrl *ctrl, u8 ifidx, int duration); +int hgic_fwctrl_set_disable_print(struct hgic_fwctrl *ctrl, u8 ifidx, int dis); +int hgic_fwctrl_set_conn_paironly(struct hgic_fwctrl *ctrl, u8 ifidx, int en); +int hgic_fwctrl_get_center_freq(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_wait_psmode(struct hgic_fwctrl *ctrl, u8 ifidx, u8 wait_psmode); +int hgic_fwctrl_set_diffcust_conn(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en); +int hgic_fwctrl_set_ap_chan_switch(struct hgic_fwctrl *ctrl, u8 ifidx, u8 chan, u8 counter); +int hgic_fwctrl_set_cca_for_ce(struct hgic_fwctrl *ctrl, u8 ifidx, u8 en); +int hgic_fwctrl_set_standby(struct hgic_fwctrl *ctrl, u8 ifidx, u8 channel, u32 sleep_period); +int hgic_fwctrl_set_rtc(struct hgic_fwctrl *ctrl, u8 ifidx, u32 rtc); +int hgic_fwctrl_get_rtc(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *rtc); +int hgic_fwctrl_set_apep_padding(struct hgic_fwctrl *ctrl, u8 ifidx, int en); +int hgic_fwctrl_get_reason_code(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_get_status_code(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_get_acs_result(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_acs_result *result, u8 size); +int hgic_fwctrl_set_watchdog(struct hgic_fwctrl *ctrl, u8 ifidx, u8 enable); +int hgic_fwctrl_set_retry_fallback_cnt(struct hgic_fwctrl *ctrl, u8 ifidx, u8 cnt); +int hgic_fwctrl_set_fallback_mcs(struct hgic_fwctrl *ctrl, u8 ifidx, struct hgic_fallback_mcs *mcs); +int hgic_fwctrl_get_xosc(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_xosc(struct hgic_fwctrl *ctrl, u8 ifidx, int xosc); +int hgic_fwctrl_get_freq_offset(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *addr); +int hgic_fwctrl_set_freq_cali_period(struct hgic_fwctrl *ctrl, u8 ifidx, u16 cali_period); +int hgic_fwctrl_set_blenc_adv_filter(struct hgic_fwctrl *ctrl, u8 ifidx, u32 filter); +int hgic_fwctrl_set_max_tx_delay(struct hgic_fwctrl *ctrl, u8 ifidx, u32 tmo); +int hgic_fwctrl_get_sta_info(struct hgic_fwctrl *ctrl, u8 ifidx, u8 *mac, struct hgic_sta_info *info); +int hgic_fwctrl_get_signal(struct hgic_fwctrl *ctrl, u8 ifidx); +int hgic_fwctrl_set_heartbeat_int(struct hgic_fwctrl *ctrl, u8 ifidx, u32 val); #endif diff --git a/utils/fwdl.c b/utils/fwdl.c index 0629215..03b315a 100644 --- a/utils/fwdl.c +++ b/utils/fwdl.c @@ -14,9 +14,9 @@ #endif #include "../hgic_def.h" -#include "fwinfo.h" #include "fwctrl.h" #include "fwdl.h" +#include "fwinfo.h" #include "utils.h" #define BOOT_CMD_KEY "@huge-ic" @@ -37,7 +37,7 @@ u32 hgic_bootdl_init(struct hgic_bootdl *hg_fwdl, struct hgic_bus *bus, struct h { if (hg_fwdl == NULL) { printk("%s:%d:Input para error!\n", __FUNCTION__, __LINE__); - return EINVAL; + return -EINVAL; } hgic_dbg("Enter ...\n"); @@ -65,6 +65,7 @@ static struct sk_buff *hgic_bootdl_alloc_cmd_skb(struct hgic_bootdl *hg, u8 cmd_ return skb; } cmd_hdr = (struct hgic_bootdl_cmd_hdr *)skb->data; + memset(cmd_hdr, 0, sizeof(struct hgic_bootdl_cmd_hdr)); cmd_hdr->cmd = cmd_id; cmd_hdr->cmd_len = 12; cmd_hdr->cmd_flag = hg->checksum_mode; @@ -111,15 +112,13 @@ struct sk_buff *hgic_bootdl_send_cmd(struct hgic_bootdl *hg_fwdl, struct sk_buff struct hgic_bootdl_cmd_hdr *hdr = NULL; struct hgic_cmd_response resp; - hdr = (struct hgic_bootdl_cmd_hdr *)skb->data; - hdr->hdr.magic = HGIC_HDR_TX_MAGIC; - hdr->hdr.type = HGIC_HDR_TYPE_BOOTDL; - hdr->hdr.length = skb->len; - hdr->hdr.cookie = hgic_ctrl_cookie(hg_fwdl->ctrl); - - //printk("hg_fwdl->ctrl=%p\r\n", hg_fwdl->ctrl); memset(&resp, 0, sizeof(resp)); - resp.cookie = hdr->hdr.cookie; + resp.cookie = hgic_ctrl_cookie(hg_fwdl->ctrl); + hdr = (struct hgic_bootdl_cmd_hdr *)skb->data; + hdr->hdr.magic = cpu_to_le16(HGIC_HDR_TX_MAGIC); + hdr->hdr.length = cpu_to_le16(skb->len); + hdr->hdr.cookie = cpu_to_le16(resp.cookie); + hdr->hdr.type = HGIC_HDR_TYPE_BOOTDL; hg_fwdl->last_cookie = resp.cookie; return hgic_fwctrl_send_data(hg_fwdl->ctrl, skb, &resp, timeout); } @@ -129,11 +128,12 @@ struct sk_buff *hgic_bootdl_send_data(struct hgic_bootdl *hg_fwdl, struct sk_buf struct hgic_bootdl_cmd_hdr *hdr = NULL; struct hgic_cmd_response resp; - hdr = (struct hgic_bootdl_cmd_hdr *)skb_push(skb, sizeof(struct hgic_bootdl_cmd_hdr)); - hdr->hdr.magic = HGIC_HDR_TX_MAGIC; - hdr->hdr.type = HGIC_HDR_TYPE_BOOTDL_DATA; memset(&resp, 0, sizeof(struct hgic_cmd_response)); resp.cookie = hg_fwdl->last_cookie; + hdr = (struct hgic_bootdl_cmd_hdr *)skb_push(skb, sizeof(struct hgic_bootdl_cmd_hdr)); + memset(hdr, 0, sizeof(struct hgic_bootdl_cmd_hdr)); + hdr->hdr.magic = cpu_to_le16(HGIC_HDR_TX_MAGIC); + hdr->hdr.type = HGIC_HDR_TYPE_BOOTDL_DATA; return hgic_fwctrl_send_data(hg_fwdl->ctrl, skb, &resp, timeout); } @@ -199,7 +199,7 @@ static int hgic_bootdl_send_fw(struct hgic_bootdl *hg, struct sk_buff *skb, u32 if (skb == NULL || hg == NULL) { hgic_dbg("input para error\n"); - return EINVAL; + return -EINVAL; } resp_skb = hgic_bootdl_send_data(hg, skb, tmo); @@ -215,7 +215,7 @@ static int hgic_bootdl_send_fw(struct hgic_bootdl *hg, struct sk_buff *skb, u32 return ret; } else { hgic_dbg("send fw data error, no resp!\n"); - return EFAULT; + return -EFAULT; } } @@ -232,6 +232,7 @@ static int hgic_bootdl_send_cmd_tmo(struct hgic_bootdl *hg, unsigned char cmd = 0; if (hg == NULL || skb == NULL) { + if(skb) kfree_skb(skb); return -EINVAL; } @@ -266,11 +267,11 @@ int hgic_bootdl_cmd_enter(struct hgic_bootdl *hg) skb = hgic_bootdl_alloc_cmd_skb(hg, HG_BOOTDL_CMD_ENTER); if (skb) { cmd_hdr = (struct hgic_bootdl_cmd_hdr *)skb->data; - memcpy((void *)cmd_hdr->addr, (void *)BOOT_CMD_KEY, sizeof(cmd_hdr->addr)); + memcpy((void *)cmd_hdr->addr, (void *)BOOT_CMD_KEY, BOOT_CMD_KEY_SIZE); cmd_hdr->check = hgic_bootdl_cmd_check_val(hg->checksum_mode, (u8 *)&cmd_hdr->cmd, 11); } else { hgic_err("malloc skb failed!\n"); - return ENOMEM; + return -ENOMEM; } ret = hgic_bootdl_send_cmd_tmo(hg, skb, HG_BOOTDL_CMD_NORMAL_TMO, NULL); if (ret == 0 || ret == HG_BOOTDL_RSP_ERR_IN_FW) { @@ -304,7 +305,7 @@ static int hgic_bootdl_cmd_write_memory(struct hgic_bootdl *hg, u32 write_addr, cmd_hdr->check = hgic_bootdl_cmd_check_val(hg->checksum_mode, (u8 *)&cmd_hdr->cmd, 11); } else { hgic_dbg("malloc skb failed!\n"); - return ENOMEM; + return -ENOMEM; } return hgic_bootdl_send_cmd_tmo(hg, skb, HG_BOOTDL_CMD_NORMAL_TMO, NULL); } @@ -335,7 +336,7 @@ static int hgic_bootdl_cmd_run(struct hgic_bootdl *hg) cmd_hdr->check = hgic_bootdl_cmd_check_val(hg->checksum_mode, (u8 *)&cmd_hdr->cmd, 11); } else { hgic_dbg("malloc skb failed!\n"); - return ENOMEM; + return -ENOMEM; } return hgic_bootdl_send_cmd_tmo(hg, skb, HG_BOOTDL_CMD_NORMAL_TMO, NULL); } @@ -343,17 +344,10 @@ static int hgic_bootdl_cmd_run(struct hgic_bootdl *hg) static unsigned int hgic_bootdl_fragment_proc(struct hgic_bootdl *hg, unsigned int copy_len) { unsigned int xfer_len = 0; - unsigned int blk = 0; if (hg->bus->type == HGIC_BUS_SDIO) { if (copy_len < hg->frag_size) { - blk = copy_len / hg->bus->blk_size; - if (blk) { - xfer_len = blk * hg->bus->blk_size; - } else { - //xfer_len = copy_len; - xfer_len = ALIGN(copy_len, 4); - } + xfer_len = ALIGN(copy_len, hg->bus->blk_size); } else { xfer_len = hg->frag_size; } @@ -368,14 +362,14 @@ int hgic_bootdl_download(struct hgic_bootdl *hg, const char *fw_path) int ret = 0; struct sk_buff *skb = NULL; u32 write_addr = 0; - u32 copy_len = 0; + s32 copy_len = 0; u32 xfer_len = 0; u32 addr_offset = 0; char *data = NULL; if (hg == NULL || fw_path == NULL) { printk("%s,%d:input para error!\n", __FUNCTION__, __LINE__); - return EINVAL; + return -EINVAL; } hgic_enter(); @@ -388,7 +382,7 @@ int hgic_bootdl_download(struct hgic_bootdl *hg, const char *fw_path) copy_len = hg->fw_info.fw_len; write_addr = hg->fw_info.write_addr; data = (char *)(hg->fw->data + hg->fw_info.hdr_len); - while (copy_len) { + while (copy_len > 0) { //xfer_len = copy_len > hg->frag_size ? hg->frag_size : copy_len; xfer_len = hgic_bootdl_fragment_proc(hg, copy_len); skb = dev_alloc_skb(xfer_len + sizeof(struct hgic_bootdl_cmd_hdr)); @@ -423,6 +417,8 @@ int hgic_bootdl_download(struct hgic_bootdl *hg, const char *fw_path) ret = hgic_bootdl_cmd_run(hg); if (ret) { printk("%s: Cmd run failed:%d\r\n", __FUNCTION__, ret); + } else { + hgic_dbg("Cmd run success!\n"); } __finish: if (hg->fw) { diff --git a/utils/fwdl.h b/utils/fwdl.h index 445f1b1..2617c76 100644 --- a/utils/fwdl.h +++ b/utils/fwdl.h @@ -75,7 +75,6 @@ struct hgic_bootdl { u8 checksum_mode; u16 last_cookie; u32 frag_size; - //struct sk_buff_head fw_dataq; struct hgic_bus *bus; struct hgic_fwctrl *ctrl; struct firmware *fw; diff --git a/utils/hgic_fmac.c b/utils/hgic_fmac.c deleted file mode 100644 index 2df0dd6..0000000 --- a/utils/hgic_fmac.c +++ /dev/null @@ -1,1141 +0,0 @@ -/** - ****************************************************************************** - * @file hgic_fmac.c - * @author HUGE-IC Application Team - * @version V1.0.0 - * @date 2021-06-23 - * @brief fmac api for application. - ****************************************************************************** - * @attention - * - *

© COPYRIGHT 2021 HUGE-IC

- * - ****************************************************************************** - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define fmac_dbg(fmt, ...) printf("%s:%d::"fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__) - -#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x" -#define MACARG(a) (a)[0]&0xff, (a)[1]&0xff, (a)[2]&0xff, (a)[3]&0xff, (a)[4]&0xff, (a)[5]&0xff -#define IPSTR "%d.%d.%d.%d" -#define IPARG(a) ((a)>>24)&0xff, ((a)>>16)&0xff, ((a)>>8)&0xff, (a)&0xff -#define MAC2STR(mac, str) (sprintf((str), MACSTR, MACARG(mac))) -#define STR_EQ(s1,s2) (strcmp(s1,s2)==0) -#define MAC_EQ(a1,a2) (memcmp(a1,a2,6)==0) - -typedef unsigned char uint8; -typedef unsigned short uint16; -typedef unsigned int uint32; - -enum FMAC_CONNECT_REASON { - FMAC_ASSOC_SUCCESS = 0, - FMAC_ASSOC_REFUSED = 1, - FMAC_ASSOC_DENIED_NO_MORE_STAS = 17, - FMAC_ASSOC_DENIED_INSUFFICIENT_BANDWIDTH = 33, - FMAC_ASSOC_REFUSED_AP_OUT_OF_MEMORY = 93, - FMAC_ASSOC_NO_AP = 0xff -}; - -struct hgic_tx_info { - uint8 band; - uint8 tx_bw; - uint8 tx_mcs; - uint8 freq_idx: 5, antenna: 3; - uint32 tx_flags; - uint16 tx_flags2; - uint8 priority; - uint8 tx_power; -}; - -struct hgic_freqinfo { - unsigned char bss_bw, chan_cnt; - unsigned short freq_start, freq_end; - unsigned short chan_list[16]; -}; - -enum HGIC_MODULE_TYPE{ - HGIC_MODULE_TYPE_700M = 1, - HGIC_MODULE_TYPE_900M = 2, - HGIC_MODULE_TYPE_860M = 3, - HGIC_MODULE_TYPE_810M = 5, -}; - -struct hgic_module_hwinfo{ - union{ - struct{ - unsigned char type; - unsigned char saw:1, rev:7; - }; - unsigned short v; - }; -}; - -int hgic_str2mac(char *mac_str, unsigned char *mac) -{ - int tmp[6]; - if (mac_str && mac) { - memset(tmp, 0, sizeof(tmp)); - memset(mac, 0, 6); - if (6 == sscanf(mac_str, MACSTR, &tmp[0], &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5])) { - mac[0] = (unsigned char)tmp[0]; - mac[1] = (unsigned char)tmp[1]; - mac[2] = (unsigned char)tmp[2]; - mac[3] = (unsigned char)tmp[3]; - mac[4] = (unsigned char)tmp[4]; - mac[5] = (unsigned char)tmp[5]; - return 1; - } - } - return 0; -} - -///////////////////////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////////////////// -/* iwpriv api */ -int hgic_iwpriv_read(char *buff, int len) -{ - int ret = 0; - int fd = -1; - - if (buff == NULL || len <= 0) { - return 0; - } - memset(buff, 0, len); - fd = open("/proc/hgic/iwpriv", O_RDONLY); - if (fd != -1) { - ret = read(fd, buff, len); - close(fd); - } - return ret; -} - -int hgic_iwpriv_write(char *buff, int len) -{ - int ret = 0; - int fd = -1; - - if (buff == NULL || len <= 0) { - return 0; - } - fd = open("/proc/hgic/iwpriv", O_WRONLY); - if (fd != -1) { - ret = write(fd, buff, len); - close(fd); - } - return ret > 0; -} - -int hgic_iwpriv_do(char *ifname, char *cmd, char *args) -{ - int ret = 0; - int fd = -1; - char buff[512]; - char *ptr = NULL; - - memset(buff, 0, sizeof(buff)); - if (args) { - sprintf(buff, "%s %s %s", ifname, cmd, args); - } else { - sprintf(buff, "%s %s", ifname, cmd); - } - if (hgic_iwpriv_write(buff, strlen(buff))) { - if (STR_EQ(cmd, "set") || STR_EQ(cmd, "scan") || STR_EQ(cmd, "save")) { - if (hgic_iwpriv_read(buff, sizeof(buff)) && strstr(buff, "OK")) { - ret = 1; - } else { - ptr = strstr(buff, "error:"); - if (ptr) { - ret = atoi(ptr + 6); - fmac_dbg("error: %s\r\n", strerror(ret)); - } - } - } - } - return ret; -} - -int hgic_iwpriv_set_int(char *ifname, char *name, int value) -{ - char arg[64]; - memset(arg, 0, sizeof(arg)); - sprintf(arg, "%s=%d", name, value); - return hgic_iwpriv_do(ifname, "set", arg); -} - -int hgic_iwpriv_set_mac(char *ifname, char *name, char *mac) -{ - char arg[64]; - memset(arg, 0, sizeof(arg)); - sprintf(arg, "%s="MACSTR, name, MACARG(mac)); - return hgic_iwpriv_do(ifname, "set", arg); -} - -int hgic_iwpriv_set_ints(char *ifname, char *name, int cnt, ...) -{ - int i = 0; - int val = 0; - char arg[512]; - char *ptr = arg; - va_list argptr; - - memset(arg, 0, sizeof(arg)); - sprintf(ptr, "%s=", name); - ptr += strlen(ptr); - - va_start(argptr, cnt); - for (i = 0; i < cnt; i++) { - val = va_arg(argptr, int); - sprintf(ptr, (i == 0 ? "%d" : ",%d"), val); - ptr += strlen(ptr); - } - va_end(argptr); - return hgic_iwpriv_do(ifname, "set", arg); -} - -int hgic_iwpriv_set_intarray(char *ifname, char *name, int *values, int cnt) -{ - int i = 0; - char arg[512]; - char *ptr = arg; - - memset(arg, 0, sizeof(arg)); - sprintf(ptr, "%s=", name); - ptr += strlen(ptr); - - for (i = 0; i < cnt; i++) { - sprintf(ptr, (i == 0 ? "%d" : ",%d"), values[i]); - ptr += strlen(ptr); - } - return hgic_iwpriv_do(ifname, "set", arg); -} - -int hgic_iwpriv_set_bytes(char *ifname, char *name, char *value) -{ - char arg[512]; - memset(arg, 0, sizeof(arg)); - sprintf(arg, "%s=%s", name, value); - return hgic_iwpriv_do(ifname, "set", arg); -} - -int hgic_iwpriv_get_int(char *ifname, char *name) -{ - char buff[8]; - hgic_iwpriv_do(ifname, "get", name); - hgic_iwpriv_read(buff, 8); - return atoi(buff); -} - -int hgic_iwpriv_get_bytes(char *ifname, char *name, char *buff, int count) -{ - hgic_iwpriv_do(ifname, "get", name); - return hgic_iwpriv_read(buff, count); -} - -int hgic_iwpriv_get_mac(char *ifname, char *name, char *mac) -{ - char str[32]; - hgic_iwpriv_do(ifname, "get", name); - hgic_iwpriv_read(str, sizeof(str)); - return hgic_str2mac(str, mac); -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////// -int hgic_iwpriv_set_ssid(char *ifname, char *ssid) -{ - return hgic_iwpriv_set_bytes(ifname, "ssid", ssid); -} -int hgic_iwpriv_set_bssid(char *ifname, char *bssid) -{ - return hgic_iwpriv_set_mac(ifname, "bssid", bssid); -} -int hgic_iwpriv_set_channel(char *ifname, int channel) -{ - return hgic_iwpriv_set_int(ifname, "channel", channel); -} -int hgic_iwpriv_set_keymgmt(char *ifname, char *key_mgmt) -{ - return hgic_iwpriv_set_bytes(ifname, "key_mgmt", key_mgmt); -} -int hgic_iwpriv_set_wpapsk(char *ifname, char *wpa_psk) -{ - return hgic_iwpriv_set_bytes(ifname, "wpa_psk", wpa_psk); -} -int hgic_iwpriv_set_freqrange(char *ifname, int freq_start, int freq_end, int bw) -{ - return hgic_iwpriv_set_ints(ifname, "freq_range", 3, freq_start, freq_end, bw); -} -int hgic_iwpriv_set_bss_bw(char *ifname, int bss_bw) -{ - return hgic_iwpriv_set_int(ifname, "bss_bw", bss_bw); -} -int hgic_iwpriv_set_tx_bw(char *ifname, int tx_bw) -{ - return hgic_iwpriv_set_int(ifname, "tx_bw", tx_bw); -} -int hgic_iwpriv_set_tx_mcs(char *ifname, int tx_mcs) -{ - return hgic_iwpriv_set_int(ifname, "tx_mcs", tx_mcs); -} -int hgic_iwpriv_set_acs(char *ifname, int start, int tmo) -{ - return hgic_iwpriv_set_ints(ifname, "acs", 2, start, tmo); -} -int hgic_iwpriv_set_chan_list(char *ifname, int *chan_list, int chan_count) -{ - return hgic_iwpriv_set_intarray(ifname, "chan_list", chan_list, chan_count); -} -int hgic_iwpriv_set_mode(char *ifname, char *mode) -{ - return hgic_iwpriv_set_bytes(ifname, "mode", mode); -} -int hgic_iwpriv_set_paired_stas(char *ifname, char *paired_stas) -{ - return hgic_iwpriv_set_bytes(ifname, "paired_stas", paired_stas); -} -int hgic_iwpriv_set_pairing(char *ifname, int start) -{ - return hgic_iwpriv_set_int(ifname, "pairing", start); -} -int hgic_iwpriv_set_beacon_int(char *ifname, int beacon_int) -{ - return hgic_iwpriv_set_int(ifname, "beacon_int", beacon_int); -} -int hgic_iwpriv_set_radio_off(char *ifname, int off) -{ - return hgic_iwpriv_set_int(ifname, "radio_off", off); -} -int hgic_iwpriv_set_join_group(char *ifname, char *mcast_addr, int aid) -{ - char arg[64]; - memset(arg, 0, sizeof(arg)); - sprintf(arg, "join_group="MACSTR",%d", MACARG(mcast_addr), aid); - return hgic_iwpriv_do(ifname, "set", arg); -} -int hgic_iwpriv_set_txpower(char *ifname, int txpower) -{ - return hgic_iwpriv_set_int(ifname, "txpower", txpower); -} -int hgic_iwpriv_set_ps_connect(char *ifname, int period, int roundup) -{ - return hgic_iwpriv_set_ints(ifname, "ps_connect", 2, period, roundup); -} -int hgic_iwpriv_set_bss_max_idle(char *ifname, int bss_max_idle) -{ - return hgic_iwpriv_set_int(ifname, "bss_max_idle", bss_max_idle); -} -int hgic_iwpriv_set_wkio_mode(char *ifname, int wkio_mode) -{ - return hgic_iwpriv_set_int(ifname, "wkio_mode", wkio_mode); -} -int hgic_iwpriv_set_dtim_period(char *ifname, int dtim_period) -{ - return hgic_iwpriv_set_int(ifname, "dtim_period", dtim_period); -} -int hgic_iwpriv_set_ps_mode(char *ifname, int ps_mode) -{ - return hgic_iwpriv_set_int(ifname, "ps_mode", ps_mode); -} -int hgic_iwpriv_set_aplost_time(char *ifname, int aplost_time) -{ - return hgic_iwpriv_set_int(ifname, "aplost_time", aplost_time); -} -int hgic_iwpriv_unpair(char *ifname, char *mac) -{ - return hgic_iwpriv_set_mac(ifname, "unpair", mac); -} -int hgic_iwpriv_scan(char *ifname) -{ - return hgic_iwpriv_do(ifname, "scan", NULL); -} -int hgic_iwpriv_save(char *ifname) -{ - return hgic_iwpriv_do(ifname, "save", NULL); -} -int hgic_iwpriv_set_auto_chswitch(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "auto_chswitch", enable); -} -int hgic_iwpriv_set_mcast_key(char *ifname, char *mcast_key) -{ - return hgic_iwpriv_set_bytes(ifname, "mcast_key", mcast_key); -} -int hgic_iwpriv_set_reassoc_wkhost(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "reassoc_wkhost", enable); -} -int hgic_iwpriv_set_wakeup_io(char *ifname, int wakeup_io) -{ - return hgic_iwpriv_set_int(ifname, "wakeup_io", wakeup_io); -} -int hgic_iwpriv_set_dbginfo(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "dbginfo", enable); -} -int hgic_iwpriv_set_sysdbg(char *ifname, char *sysdbg) -{ - return hgic_iwpriv_set_bytes(ifname, "sysdbg", sysdbg); -} -int hgic_iwpriv_set_primary_chan(char *ifname, int primary_chan) -{ - return hgic_iwpriv_set_int(ifname, "primary_chan", primary_chan); -} -int hgic_iwpriv_set_autosleep_time(char *ifname, int autosleep_time) -{ - return hgic_iwpriv_set_int(ifname, "autosleep_time", autosleep_time); -} -int hgic_iwpriv_set_supper_pwr(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "supper_pwr", enable); -} -int hgic_iwpriv_set_r_ssid(char *ifname, char *r_ssid) -{ - return hgic_iwpriv_set_bytes(ifname, "r_ssid", r_ssid); -} -int hgic_iwpriv_set_r_psk(char *ifname, char *r_psk) -{ - return hgic_iwpriv_set_bytes(ifname, "r_psk", r_psk); -} -int hgic_iwpriv_set_auto_save(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "auto_save", enable); -} -int hgic_iwpriv_set_pair_autostop(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "pair_autostop", enable); -} -int hgic_iwpriv_set_dcdc13(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "dcdc13", enable); -} -int hgic_iwpriv_set_acktmo(char *ifname, int acktmo) -{ - return hgic_iwpriv_set_int(ifname, "acktmo", acktmo); -} -int hgic_iwpriv_get_sta_list(char *ifname, char *buff, int size) -{ - return hgic_iwpriv_get_bytes(ifname, "sta_list", buff, size); -} -int hgic_iwpriv_get_scan_list(char *ifname, char *buff, int size) -{ - return hgic_iwpriv_get_bytes(ifname, "scan_list", buff, size); -} -int hgic_iwpriv_get_ssid(char *ifname, char *buff, int size) -{ - return hgic_iwpriv_get_bytes(ifname, "ssid", buff, size); -} -int hgic_iwpriv_get_bssid(char *ifname, char *mac) -{ - return hgic_iwpriv_get_mac(ifname, "bssid", mac); -} -int hgic_iwpriv_get_wpa_psk(char *ifname, char *buff, int size) -{ - return hgic_iwpriv_get_bytes(ifname, "wpa_psk", buff, size); -} -int hgic_iwpriv_get_txpower(char *ifname) -{ - return hgic_iwpriv_get_int(ifname, "txpower"); -} -int hgic_iwpriv_get_aggcnt(char *ifname) -{ - return hgic_iwpriv_get_int(ifname, "agg_cnt"); -} -int hgic_iwpriv_get_bss_bw(char *ifname) -{ - return hgic_iwpriv_get_int(ifname, "bss_bw"); -} -int hgic_iwpriv_get_chan_list(char *ifname, char *buff, int size) -{ - return hgic_iwpriv_get_bytes(ifname, "chan_list", buff, size); -} -int hgic_iwpriv_get_freq_range(char *ifname, char *buff, int size) -{ - return hgic_iwpriv_get_bytes(ifname, "freq_range", buff, size); -} -int hgic_iwpriv_get_key_mgmt(char *ifname, char *buff, int size) -{ - return hgic_iwpriv_get_bytes(ifname, "key_mgmt", buff, size); -} -int hgic_iwpriv_get_battery_level(char *ifname) -{ - return hgic_iwpriv_get_int(ifname, "battery_level"); -} -int hgic_iwpriv_get_module_type(char *ifname) -{ - return hgic_iwpriv_get_int(ifname, "module_type"); -} -int hgic_iwpriv_set_pa_pwrctrl_dis(char *ifname, int disable) -{ - return hgic_iwpriv_set_int(ifname, "pa_pwrctl_dis", disable); -} -int hgic_iwpriv_set_dhcpc(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "dhcpc", enable); -} -int hgic_iwpriv_get_disassoc_reason(char *ifname) -{ - return hgic_iwpriv_get_int(ifname, "disassoc_reason"); -} -int hgic_iwpriv_set_wkdata_save(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "wkdata_save", enable); -} -int hgic_iwpriv_set_mcast_txparam(char *ifname, int dupcnt, int tx_bw, int tx_mcs, int clearch) -{ - return hgic_iwpriv_set_ints(ifname, "mcast_txparam", 4, dupcnt, tx_bw, tx_mcs, clearch); -} -int hgic_iwpriv_reset_sta(char *ifname, char *mac_addr) -{ - return hgic_iwpriv_set_mac(ifname, "reset_sta", mac_addr); -} -int hgic_iwpriv_ant_auto(char *ifname, int en) -{ - return hgic_iwpriv_set_int(ifname, "ant_auto", en); -} -int hgic_iwpriv_set_ant_sel(char *ifname, int ant) -{ - return hgic_iwpriv_set_int(ifname, "ant_sel", ant); -} -int hgic_iwpriv_get_ant_sel(char *ifname) -{ - return hgic_iwpriv_get_int(ifname, "ant_sel"); -} -int hgic_iwpriv_set_macfilter(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "macfilter", enable); -} -int hgic_iwpriv_send_atcmd(char *ifname, char *atcmd) -{ - return hgic_iwpriv_set_bytes(ifname, "atcmd", atcmd); -} -int hgic_iwpriv_set_roaming(char *ifname, int enable) -{ - return hgic_iwpriv_set_int(ifname, "roaming", enable); -} -int hgic_iwpriv_set_max_txcnt(char *ifname, int txcnt) -{ - return hgic_iwpriv_set_int(ifname, "max_txcnt", txcnt); -} - -///////////////////////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////////////////// -/* proc fs api */ -int hgic_proc_read_bytes(char *name, char *buff, int len) -{ - char fname[32]; - int ret = 0; - int fd = -1; - - if (buff == NULL || len <= 0) { - return 0; - } - memset(buff, 0, len); - memset(fname, 0, sizeof(fname)); - sprintf(fname, "/proc/hgic/%s", name); - fd = open(fname, O_RDONLY); - if (fd != -1) { - ret = read(fd, buff, len); - close(fd); - } - return ret; -} - -int hgic_proc_read_int(char *name) -{ - char buff[32]; - hgic_proc_read_bytes(name, buff, 32); - return atoi(buff); -} - -int hgic_proc_read_mac(char *name, char *mac) -{ - char buff[32]; - hgic_proc_read_bytes(name, buff, 32); - return hgic_str2mac(buff, mac); -} - -int hgic_proc_write_bytes(char *name, char *buff, int len) -{ - int ret = 0; - char fname[32]; - int fd = -1; - - if (buff == NULL || len == 0) { - return 0; - } - memset(fname, 0, sizeof(fname)); - sprintf(fname, "/proc/hgic/%s", name); - fd = open(fname, O_WRONLY); - if (fd != -1) { - ret = write(fd, buff, len); - close(fd); - if(ret < 0) perror("error"); - } - return ret > 0; -} - -int hgic_proc_write_int(char *name, int val) -{ - char buff[12]; - memset(buff, 0, sizeof(buff)); - sprintf(buff, "%d", val); - return hgic_proc_write_bytes(name, buff, strlen(buff)); -} - -int hgic_proc_write_mac(char *name, char *mac) -{ - char str[18]; - memset(str, 0, sizeof(str)); - MAC2STR(mac, str); - return hgic_proc_write_bytes(name, str, strlen(str)); -} - -int hgic_proc_write_ints(char *name, int cnt, ...) -{ - int i = 0; - int val = 0; - char buff[512]; - char *ptr = buff; - va_list argptr; - - memset(buff, 0, sizeof(buff)); - va_start(argptr, cnt); - for (i = 0; i < cnt; i++) { - val = va_arg(argptr, int); - sprintf(ptr, (i==0?"%d":",%d"), val); - ptr += strlen(ptr); - } - va_end(argptr); - return hgic_proc_write_bytes(name, buff, strlen(buff)); -} - -int hgic_proc_write_intarray(char *name, int *values, int cnt) -{ - int i = 0; - char buff[512]; - char *ptr = buff; - - memset(buff, 0, sizeof(buff)); - for (i = 0; i < cnt; i++) { - sprintf(ptr, (i==0?"%d":",%d"), values[i]); - ptr += strlen(ptr); - } - return hgic_proc_write_bytes(name, buff, strlen(buff)); -} - -///////////////////////////////////////////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////////////////////////////// -int hgic_proc_read_event(void) -{ - return hgic_proc_read_int("event"); -} -int hgic_proc_read_tx_bitrate(void) -{ - return hgic_proc_read_int("tx_bitrate"); -} -int hgic_proc_read_signal(void) -{ - return hgic_proc_read_int("signal"); -} -int hgic_proc_read_evm(void) -{ - return hgic_proc_read_int("evm"); -} -int hgic_proc_read_conn_state(void) -{ - char state[12]; - hgic_proc_read_bytes("conn_state", state, 12); - return (strstr(state, "CONNECTED") != NULL); -} -int hgic_proc_read_temperature(void) -{ - return hgic_proc_read_int("temperature"); -} -int hgic_proc_read_paired_stas(char *buff, int len) -{ - return hgic_proc_read_bytes("paired_stas", buff, len); -} -int hgic_proc_read_sta_count(void) -{ - return hgic_proc_read_int("sta_count"); -} -int hgic_proc_read_wkreason(void) -{ - return hgic_proc_read_int("wkreason"); -} -int hgic_proc_read_customer_mgmt(char *buff, int len) -{ - return hgic_proc_read_bytes("mgmt", buff, len); -} -int hgic_proc_read_fw_dbgifno(char *buff, int len) -{ - return hgic_proc_read_bytes("fwdbginfo", buff, len); -} -int hgic_proc_read_firmware_ver(char *ver_str, int size) -{ - return hgic_proc_read_bytes("fw_ver", ver_str, size); -} -int hgic_proc_read_battery_level(void) -{ - return hgic_proc_read_int("battery_level"); -} -int hgic_proc_set_heartbeat(int ipaddr, int port, int period, int timeout) -{ - struct in_addr in = { .s_addr = (in_addr_t)ipaddr }; - return hgic_proc_write_ints("heartbeat", 4, inet_ntoa(in), port, period, timeout); -} -int hgic_proc_set_heartbeat_resp_data(char *resp_data, int len) -{ - return hgic_proc_write_bytes("heartbeat_resp", resp_data, len); -} -int hgic_proc_set_wakeup_data(char *wakeup_data, int len) -{ - return hgic_proc_write_bytes("wakeup_data", wakeup_data, len); -} -int hgic_proc_wakeup_sta(char *addr) -{ - return hgic_proc_write_mac("wakeup", addr); -} -int hgic_proc_sleep(int sleep) -{ - return hgic_proc_write_int("sleep", sleep); -} -int hgic_proc_ota(char *fw_file) -{ - return hgic_proc_write_bytes("ota", fw_file, strlen(fw_file)); -} -int hgic_proc_read_pairing_sta(char *sta_mac) -{ - return hgic_proc_read_mac("pairing_sta", sta_mac); -} -int hgic_proc_send_custmgmt(char *dest, struct hgic_tx_info *txinfo, char *mgmt, int len) -{ - int ret = -1; - char *buf = malloc(len+sizeof(struct hgic_tx_info)+6); - if(buf){ - memcpy(buf, dest, 6); - memcpy(buf+6, txinfo, sizeof(struct hgic_tx_info)); - memcpy(buf+6+sizeof(struct hgic_tx_info), mgmt, len); - ret = hgic_proc_write_bytes("mgmt", buf, len+6+sizeof(struct hgic_tx_info)); - free(buf); - } - return ret; -} -int hgic_proc_read_dhcpc_result(char *buff, int len) -{ - return hgic_proc_read_bytes("dhcpc", buff, len); -} -int hgic_proc_read_wkdata_buff(char *buff, int len) -{ - return hgic_proc_read_bytes("wkdata_buff", buff, len); -} -int hgic_proc_set_wkdata_mask(unsigned short offset, char *mask, int mask_len) -{ - char buff[128]; - if(mask_len > 16) mask_len = 16; - memcpy(buff, &offset, 2); - memcpy(buff+2, mask, mask_len); - return hgic_proc_write_bytes("wkdata_mask", buff, mask_len + 2); -} -int hgic_proc_read_cust_driverdata(char *buff, int len) -{ - return hgic_proc_read_bytes("cust_driverdata", buff, len); -} -int hgic_proc_set_cust_driverdata(char *buff, int len) -{ - if(len > 1500){ - printf("data len:%d too big\r\n", len); - return -1; - } - return hgic_proc_write_bytes("cust_driverdata", buff, len); -} -int hgic_proc_set_stafreqinfo(char *sta_addr, struct hgic_freqinfo *freqinfo) -{ - int ret = -1; - char *buff = malloc(6+sizeof(struct hgic_freqinfo)); - if(buff){ - memset(buff, 0, 6+sizeof(struct hgic_freqinfo)); - if(sta_addr) memcpy(buff, sta_addr, 6); - memcpy(buff+6, freqinfo, sizeof(struct hgic_freqinfo)); - ret = hgic_proc_write_bytes("freqinfo", buff, 6+sizeof(struct hgic_freqinfo)); - free(buff); - } - return ret; -} - -/////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////// -#if 1 //sample code -#define IFNAME "hg0" - -#define AH_STA_COUNT (8) -struct hgic_ah_sta { - unsigned char mac[6]; - unsigned char used: 1, ps: 1, paired: 1, connected: 1, update:1; - unsigned char aid; - char rssi, evm; -}; - -struct hgic_ah_sta_mgr { - struct hgic_ah_sta stas[AH_STA_COUNT]; - int count; -}ah_sta_mgr; - -struct hgic_dhcp_result{ - unsigned int ipaddr, netmask, svrip, router, dns1, dns2; -}; - -static int hgic_parse_paired_stas(struct hgic_ah_sta *stas, char *paired_stas) -{ - int i = 0; - int cnt = 0; - char mac[6]; - char *ptr = paired_stas; - - memset(stas, 0, AH_STA_COUNT*sizeof(struct hgic_ah_sta)); - if(paired_stas && stas){ - cnt = strlen(paired_stas)/17; - if(cnt > AH_STA_COUNT) cnt = AH_STA_COUNT; - for(i=0; ipaired = 1; - sta->update = 1; - sta->used = 1; - } - } - } - else { - if(new_stas[i].connected){ - sta = hgic_find_sta(ah_sta_mgr.stas, new_stas[i].mac); - if(sta == NULL){ - sta = hgic_new_sta(new_stas[i].mac); - } - if(sta){ - sta->ps = new_stas[i].ps; - sta->rssi = new_stas[i].rssi; - sta->evm = new_stas[i].evm; - sta->aid = new_stas[i].aid; - sta->connected = 1; - sta->update = 1; - sta->used = 1; - } - } - } - } - - for(i=0; i 0){ - buff[i] = 0; - printf("get wkdata, len:%d, %s\r\n", i, buff+42); - } - }while(i>0); - free(buff); -} - -int hgic_event_proc(int event) -{ - int i = 0; - struct hgic_dhcp_result result; - struct hgic_ah_sta *sta = NULL; - struct hgic_ah_sta tmpstas[AH_STA_COUNT]; - char *buff = malloc(4096); - switch (event) { - case 5: /*HGIC_EVENT_SCANNING*/ - fmac_dbg("start scan ...\r\n"); - break; - case 6: /*HGIC_EVENT_SCAN_DONE*/ - fmac_dbg("scan done!\r\n"); - hgic_iwpriv_get_scan_list(IFNAME, buff, 4096); - if(buff) printf("%s\r\n", buff); - break; - case 7: /*HGIC_EVENT_TX_BITRATE*/ - fmac_dbg("estimate tx bitrate:%dKbps\r\n", hgic_proc_read_tx_bitrate()); - break; - case 8: /*HGIC_EVENT_PAIR_START*/ - fmac_dbg("start pairing ...\r\n"); - break; - case 9: /*HGIC_EVENT_PAIR_SUCCESS*/ - hgic_proc_read_pairing_sta(buff); - fmac_dbg("pairing success! ["MACSTR"]\r\n", MACARG(buff)); - hgic_iwpriv_set_pairing(IFNAME, 0); //stop pair - break; - case 10: /*HGIC_EVENT_PAIR_DONE*/ - fmac_dbg("pairing done!\r\n"); - hgic_proc_read_paired_stas(buff, 4096); - hgic_parse_paired_stas(tmpstas, buff); - for(i=0; ipaired){ - printf("new sta paired! "MACSTR"\r\n", MACARG(tmpstas[i].mac)); - } - } - } - hgic_update_stas(tmpstas, 1); - break; - case 11: /*HGIC_EVENT_CONECT_START*/ - fmac_dbg("start connecting ...\r\n"); - break; - case 12: /*HGIC_EVENT_CONECTED*/ - fmac_dbg("connected!\r\n"); - hgic_iwpriv_get_sta_list(IFNAME, buff, 4096); - hgic_parse_sta_list(tmpstas, buff); - for(i=0; iconnected){ - printf("new sta connected! "MACSTR"\r\n", MACARG(tmpstas[i].mac)); - } - } - } - hgic_update_stas(tmpstas, 0); - hgic_test_read_wakeupdata(); - break; - case 13: /*HGIC_EVENT_DISCONECTED*/ - fmac_dbg("disconnected!\r\n"); - hgic_iwpriv_get_sta_list(IFNAME, buff, 4096); - hgic_parse_sta_list(tmpstas, buff); - for(i=0;iconnected){ - printf("sta disconnected! "MACSTR"\r\n", MACARG(ah_sta_mgr.stas[i].mac)); - } - } - } - hgic_update_stas(tmpstas, 0); - break; - case 14: /*HGIC_EVENT_SIGNAL*/ - fmac_dbg("signal changed: rssi:%d, evm:%d\r\n", hgic_proc_read_signal(), hgic_proc_read_event()); - break; - case 18: /*HGIC_EVENT_FWDBG_INFO*/ - hgic_proc_read_fw_dbgifno(buff, 4096); - if(buff) printf("%s", buff); - break; - case 19: /*HGIC_EVENT_CUSTOMER_MGMT*/ - i = hgic_proc_read_customer_mgmt(buff, 4096); - fmac_dbg("rx customer mgmt frame from "MACSTR", %d bytes \r\n", MACARG(buff+6), i-6); - break; - case 21: /*HGIC_EVENT_DHCPC_DONE*/ - hgic_proc_read_dhcpc_result((char *)&result, sizeof(result)); - fmac_dbg("fw dhcpc result: ipaddr:"IPSTR", netmask:"IPSTR", svrip:"IPSTR", router:"IPSTR", dns:"IPSTR"/"IPSTR"\r\n", - IPARG(result.ipaddr), IPARG(result.netmask), IPARG(result.svrip), - IPARG(result.router), IPARG(result.dns1), IPARG(result.dns2)); - break; - case 22: /*HGIC_EVENT_CONNECT_FAIL*/ - fmac_dbg("connect fail, reason:%d\r\n", hgic_iwpriv_get_disassoc_reason(IFNAME)); - break; - case 23: /*HGIC_EVENT_CUST_DRIVER_DATA*/ - fmac_dbg("rx customer driver data %d bytes\r\n", hgic_proc_read_cust_driverdata(buff, 1024)); - break; - case 24: /*HGIC_EVENT_UNPAIR_STA*/ - fmac_dbg("unpair\r\n"); - break; - } - if (buff) { free(buff); } -} - -int main(int argc, char *argv[]) -{ - int event = 0; - char mask[4] = { 0x3, 0xff, 0x0f, 0xff}; - char dest[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - struct hgic_tx_info txinfo; - struct hgic_module_hwinfo hwinfo; - - struct hgic_freqinfo freqinfo={ - .bss_bw = 8, - .chan_cnt = 3, - .chan_list = {9080, 9160, 9240}, - }; - char *custmgmt = "this is customer mgmt data"; - - hwinfo.v = hgic_iwpriv_get_module_type("hg0"); - printf("Module HW info: type:%d, %s\r\n", hwinfo.type, hwinfo.saw?"SAW":"NO SAW"); - - /*test: send customer mgmt frame.*/ - memset(&txinfo, 0, sizeof(txinfo)); - txinfo.tx_mcs = 0xff; //auto mcs - txinfo.freq_idx = 1; //tx at channel 1 - hgic_proc_send_custmgmt(dest, &txinfo, custmgmt, strlen(custmgmt)); - txinfo.freq_idx = 2; //tx at channel 2 - hgic_proc_send_custmgmt(dest, &txinfo, custmgmt, strlen(custmgmt)); - txinfo.freq_idx = 3; //tx at channel 3 - hgic_proc_send_custmgmt(dest, &txinfo, custmgmt, strlen(custmgmt)); - - /*test: enable dhcp client function in firmware.*/ - hgic_iwpriv_set_dhcpc("hg0", 1); - - /*test: set wakedata match mask*/ - hgic_proc_set_wkdata_mask(42, mask, 4); - - /*test: enable firmware save wakeup data.*/ - hgic_iwpriv_set_wkdata_save("hg0", 1); - - /*test: get current bssid (for sta mode)*/ - hgic_iwpriv_get_bssid("hg0", dest); - printf("current bssid:"MACSTR"\r\n", MACARG(dest)); - - /*test: set remote AP's freqency info.*/ - hgic_proc_set_stafreqinfo(dest, &freqinfo); - - /*test: reset remote AP.*/ - hgic_iwpriv_reset_sta("hg0", dest); - - /*test: read wakeup data from firmware.*/ - hgic_test_read_wakeupdata(); - - /*loop read driver event and proc event.*/ - while (1) { - event = hgic_proc_read_event(); - if(event){ - hgic_event_proc(event); - } - } -} -#endif - diff --git a/utils/if_sdio.c b/utils/if_sdio.c index 2a49997..517a026 100644 --- a/utils/if_sdio.c +++ b/utils/if_sdio.c @@ -41,11 +41,19 @@ #define SDIO_INIT_STATUS_ADDR 0x04 #define SDIO_INIT_STATUS_ADDR2 0x48 #define SDIO_TRANS_COUNT_ADDR2 0x49 -#define SDIO_INIT_STATUS_DATA_READY 0x01 +#define SDIO_BUSY_ADDR2 0x4c +#define HGIC_PKT_MAX_LEN (8*1024) + +#define SDIO_INIT_STATUS_DATA_READY BIT(0) +#define SDIO_INIT_STATUS_BUSY BIT(3) + #define SDIO_STATUS_STOP BIT(0) #define SDIO_STATUS_ERROR BIT(1) #define SDIO_TX_HEADROM (4) +static hgic_probe probe_hdl = NULL; +static u32 max_pkt_len = HGIC_PKT_MAX_LEN; + struct hgic_sdio { struct sdio_func_t *func; u32 status; @@ -53,13 +61,16 @@ struct hgic_sdio { u32 trans_cnt_addr; /*sdio data length register address*/ u32 int_status_addr; /*interrupt status register address*/ struct hgic_bus bus; - u32 rx_retry; + u8 rx_retry; + u8 busypd; + struct completion busy; + u8 *rxbuf; }; const struct sdio_device_id_t hgic_sdio_wdev_ids[] = { - {SDIO_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_AH_4001)}, - {SDIO_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_AH_4002)}, - {SDIO_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_AH_4102)}, + {SDIO_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_4002)}, + {SDIO_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_4104)}, + {SDIO_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_8400)}, { /* end: all zeroes */ }, }; @@ -80,7 +91,7 @@ const struct sdio_device_id_t hgic_sdio_wdev_ids[] = { #define SDIO_CAP_POLL(func) ((func)->card->host->caps & MMC_CAP_NEEDS_POLL) #define HOST_SPI_CRC(func, crc) (func)->card->host->use_spi_crc=crc -#define mmc_card_disable_cd(c) (1) +//#define mmc_card_disable_cd(c) (1) #define hgic_card_disable_cd(func) mmc_card_disable_cd((func)->card) #define hgic_card_set_highspeed(func) mmc_card_set_highspeed((func)->card) #define hgic_host_is_spi(func) mmc_host_is_spi((func)->card->host) @@ -120,6 +131,11 @@ static inline int hgic_mmc_send_cmd(struct sdio_func_t *func, struct mmc_command { return mmc_wait_for_cmd(func->card->host, cmd, retries); } +static inline void hgic_mmc_set_blk_size(struct sdio_func_t *func, unsigned int blk_size) +{ + func->card->host->max_blk_size = blk_size; + func->card->host->ops->set_ios(func->card->host, &func->card->host->ios); +} #endif static int hgic_mmc_io_rw_direct(struct sdio_func_t *func, int write, unsigned fn, @@ -382,14 +398,14 @@ static int hgic_sdio_set_wire_width(struct sdio_func_t *func) return 1; } -static u32 hgic_sdio_select_card(struct sdio_func_t *func) +static u32 hgic_sdio_select_card(struct sdio_func_t *func, u32 rca) { int err; struct mmc_command_t cmd = {0}; cmd.opcode = MMC_SELECT_CARD; if (func) { - cmd.arg = hgic_func_rca(func) << 16; + cmd.arg = rca << 16; cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; } else { cmd.arg = 0; @@ -436,11 +452,12 @@ static int hgic_mmc_spi_set_crc(struct sdio_func_t *func, int use_crc) static int hgic_sdio_reinit_card(struct sdio_func_t *func) { +#ifdef CONFIG_SDIO_REINIT int i = 3; u32 ocr = 0; + u32 rca = 0; int retry = 0; struct hgic_sdio *sdiodev = sdio_get_drvdata(func); - u32 rca = 0; hgic_enter(); __RETRY: @@ -455,12 +472,17 @@ __RETRY: return -1; } - i = 5; + i = 5; ocr = 0; + rca = 0; hgic_mmc_set_clock(func, 400000); hgic_mmc_set_timing(func, MMC_TIMING_LEGACY); hgic_mmc_set_bus_width(func, MMC_BUS_WIDTH_1); + if (!hgic_sdio_get_card_addr(func, (u32 *)&rca)) { + hgic_sdio_select_card(func, rca); + } + hgic_sdio_reset(func); hgic_sdio_go_idle(func); hgic_mmc_send_if_cond(func, ocr); @@ -468,7 +490,8 @@ __RETRY: if (hgic_send_io_op_cond(func, 0, (u32 *)&ocr)) { goto __RETRY; } - if (hgic_send_io_op_cond(func, hgic_card_ocr(func), (u32 *)&ocr)) { + + if (hgic_send_io_op_cond(func, ocr, (u32 *)&ocr)) { goto __RETRY; } @@ -477,11 +500,10 @@ __RETRY: goto __RETRY; } } else { - rca = hgic_func_rca(func); if (hgic_sdio_get_card_addr(func, (u32 *)&rca)) { goto __RETRY; } - if (hgic_sdio_select_card(func)) { + if (hgic_sdio_select_card(func, rca)) { goto __RETRY; } if (hgic_sdio_disable_cd(func) < 0) { @@ -495,6 +517,8 @@ __RETRY: hgic_mmc_set_clock(func, hgic_card_highspeed(func) ? 50000000 : hgic_card_max_clock(func)); hgic_mmc_set_timing(func, MMC_TIMING_SD_HS); + hgic_mmc_set_blk_size(func, SDIO_BLOCK_SIZE); + if (hgic_sdio_set_wire_width(func) < 0) { goto __RETRY; } @@ -507,11 +531,13 @@ __RETRY: if (sdio_enable_func(func)) { goto __RETRY; } - hgic_leave(); + #ifndef __RTOS__ if (func->card->host->sdio_irq_thread) { wake_up_process(func->card->host->sdio_irq_thread); } +#endif + hgic_leave(); #endif return 0; } @@ -532,7 +558,10 @@ static int hgic_sdio_readb(struct sdio_func_t *func, u32 addr, int *err) int retry = 2; val = sdio_readb(func, addr, err); - if (val == 0) { *err = -1; } //if read 0, try again. + //if (val == 0) { + // *err = -1; + //} + while (*err && retry-- > 0) { val = sdio_readb(func, addr, err); } @@ -581,6 +610,7 @@ static int hgic_sdio_abort(struct sdio_func_t *func) hgic_sdio_writeb(&func0, 1, 6, &err_ret); return err_ret; } + static int hgic_sdio_read_cccr(struct sdio_func_t *func, u8 *pending) { int ret = 0; @@ -591,20 +621,44 @@ static int hgic_sdio_read_cccr(struct sdio_func_t *func, u8 *pending) return ret; } -static u32 hgic_sdio_data_len(struct hgic_sdio *sdiodev) +static u32 hgic_sdio_get_datalen(struct hgic_sdio *sdiodev, u8 addr) { int err = 0; u32 len = 0; u8 ret = 0; - u16 addr = test_bit(HGIC_BUS_FLAGS_INBOOT, &sdiodev->bus.flags) ? - sdiodev->trans_cnt_addr : SDIO_TRANS_COUNT_ADDR2; ret = hgic_sdio_readb(sdiodev->func, addr, &err); - if (err) { return 0xffffffff; } + if (err) { + return 0xffffffff; + } + len = ret; ret = hgic_sdio_readb(sdiodev->func, addr + 1, &err); - if (err) { return 0xffffffff; } + if (err) { + return 0xffffffff; + } + len |= ret << 8; + return len; +} + +static u32 hgic_sdio_data_len(struct hgic_sdio *sdiodev) +{ + int ret = 0; + u32 len = 0; + + if (!test_bit(HGIC_BUS_FLAGS_INBOOT, &sdiodev->bus.flags)) { + if(sdiodev->bus.dev_id == HGIC_WLAN_4002){ + len = hgic_sdio_get_datalen(sdiodev, SDIO_TRANS_COUNT_ADDR2); + }else{ + len = sdio_readb(sdiodev->func, SDIO_TRANS_COUNT_ADDR2, &ret); + len = len * SDIO_BLOCK_SIZE; + } + } + + if (len == 0 || len == 0xffffffff) { + len = hgic_sdio_get_datalen(sdiodev, sdiodev->trans_cnt_addr); + } if (len == 0) { if (test_bit(HGIC_BUS_FLAGS_INBOOT, &sdiodev->bus.flags)) { @@ -617,8 +671,7 @@ static u32 hgic_sdio_data_len(struct hgic_sdio *sdiodev) return len; } - -static int hgic_sdio_is_data_ready(struct hgic_sdio *sdiodev, struct sdio_func_t *func) +static u32 hgic_sdio_int_status(struct hgic_sdio *sdiodev, struct sdio_func_t *func) { int ret = 0; u8 pending = 0; @@ -627,9 +680,7 @@ static int hgic_sdio_is_data_ready(struct hgic_sdio *sdiodev, struct sdio_func_t ret = hgic_sdio_read_cccr(func, &pending); if (!ret && (pending & 02)) { - int_status1 = sdio_readb(func, sdiodev->int_status_addr, &ret); - if (ret) { int_status1 = sdio_readb(func, sdiodev->int_status_addr, &ret); } - int_status1 &= SDIO_INIT_STATUS_DATA_READY; + int_status1 = hgic_sdio_readb(func, sdiodev->int_status_addr, &ret); if (!ret && !int_status1 && !test_bit(HGIC_BUS_FLAGS_INBOOT, &sdiodev->bus.flags)) { int_status2 = hgic_sdio_readb(func, SDIO_INIT_STATUS_ADDR2, &ret); if (int_status1 != int_status2) { @@ -637,7 +688,9 @@ static int hgic_sdio_is_data_ready(struct hgic_sdio *sdiodev, struct sdio_func_t int_status1 = int_status2; } } - if (!int_status1) { hgic_sdio_abort(func); } + if (!int_status1) { + hgic_sdio_abort(func); + } } return int_status1; } @@ -647,15 +700,16 @@ static void hgic_sdio_interrupt(struct sdio_func_t *func) int ret = 0; u32 len = 0; int read_more = 0; - struct sk_buff *skb = NULL; + u32 int_status; struct hgic_sdio *sdiodev = sdio_get_drvdata(func); - if (sdiodev == NULL || (sdiodev->status&SDIO_STATUS_STOP) || test_bit(HGIC_BUS_FLAGS_SLEEP, &sdiodev->bus.flags)) { + if (sdiodev == NULL || (sdiodev->status & SDIO_STATUS_STOP)) { return; } read_more = sdiodev->rx_retry; do { - if (hgic_sdio_is_data_ready(sdiodev, func)) { + int_status = hgic_sdio_int_status(sdiodev, func); + if (int_status & SDIO_INIT_STATUS_DATA_READY) { read_more = sdiodev->rx_retry; len = hgic_sdio_data_len(sdiodev); if (len == 0xFFFFFFFF) { @@ -664,65 +718,101 @@ static void hgic_sdio_interrupt(struct sdio_func_t *func) hgic_sdio_reinit_card(func); return; } else if (len > 0) { - skb = dev_alloc_skb(len); - if (skb == NULL) { - hgic_err("no memory\r\n"); + if (len > max_pkt_len){ + hgic_err("len error: %d, max:%d\r\n", len, max_pkt_len); hgic_sdio_abort(func); return; } - ret = hgic_sdio_copy_fromio(sdiodev->func, skb->data, - sdiodev->data_addr, len); + + ret = hgic_sdio_copy_fromio(sdiodev->func, sdiodev->rxbuf, sdiodev->data_addr, len); if (ret) { - dev_kfree_skb(skb); hgic_err("sdio_copy_fromio err!, ret:%d\r\n", ret); return; } - ret = sdiodev->bus.rx_packet(sdiodev->bus.bus_priv, skb, len); + ret = sdiodev->bus.rx_packet(sdiodev->bus.bus_priv, sdiodev->rxbuf, len); if (ret) { hgic_sdio_abort(func); } } else { hgic_sdio_abort(func); } - } else if (read_more > 0) { + } + + if ((int_status & SDIO_INIT_STATUS_BUSY) && sdiodev->busypd) { + //printk("*\r\n"); + complete(&sdiodev->busy); + } + + if (int_status == 0 && read_more > 0) { udelay(20); } } while (!ret && read_more-- > 0); } +static int hgic_sdio_is_busy(struct hgic_sdio *sdiodev) +{ + int err = 0; + u8 val = 0; + val = hgic_sdio_readb(sdiodev->func, SDIO_BUSY_ADDR2, &err); + if(err) hgic_sdio_reinit_card(sdiodev->func); + return (err || (val & 0x01)) ? 1 : 0; +} + static int hgic_sdio_tx_packet(void *bus, struct sk_buff *skb) { int ret = 0; + int busy = 1; + struct list_head *head; struct hgic_sdio *sdiodev = container_of(bus, struct hgic_sdio, bus); int len = skb->len > SDIO_BLOCK_SIZE ? ALIGN(skb->len, SDIO_BLOCK_SIZE) : ALIGN(skb->len, 4); +#ifndef __RTOS__ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,13,0) + head = &sdiodev->func->card->host->wq.head; + #else + head = &sdiodev->func->card->host->wq.task_list; + #endif + if (!list_empty(head) /*|| (!SDIO_CAP_IRQ(sdiodev->func) && time_after(jiffies, sdiodev->last_rxtick + msecs_to_jiffies(100)))*/) { + schedule(); + } +#endif + sdio_claim_host(sdiodev->func); if ((sdiodev->status & SDIO_STATUS_STOP) || test_bit(HGIC_BUS_FLAGS_SLEEP, &sdiodev->bus.flags)) { sdiodev->bus.tx_complete(sdiodev->bus.bus_priv, skb, 0); sdio_release_host(sdiodev->func); return -1; } + + while (busy && !test_bit(HGIC_BUS_FLAGS_SOFTFC, &sdiodev->bus.flags)) { + busy = hgic_sdio_is_busy(sdiodev); + if (busy) { + sdiodev->busypd = 1; + sdio_release_host(sdiodev->func); + wait_for_completion_timeout(&sdiodev->busy, msecs_to_jiffies(10)); + sdio_claim_host(sdiodev->func); + sdiodev->busypd = 0; + if ((sdiodev->status & SDIO_STATUS_STOP) || test_bit(HGIC_BUS_FLAGS_SLEEP, &sdiodev->bus.flags)) { + sdiodev->bus.tx_complete(sdiodev->bus.bus_priv, skb, 0); + sdio_release_host(sdiodev->func); + return -1; + } + } + } + ret = hgic_sdio_copy_toio(sdiodev->func, sdiodev->data_addr, skb->data, len); sdio_release_host(sdiodev->func); sdiodev->bus.tx_complete(sdiodev->bus.bus_priv, skb, !ret); return ret; } -static struct hgic_bus hgic_ifbus_sdio = { - .type = HGIC_BUS_SDIO, - .drv_tx_headroom = SDIO_TX_HEADROM, - .tx_packet = hgic_sdio_tx_packet, - .reinit = hgic_sdio_reinit, - .bootdl_pktlen = 32704, - .bootdl_cksum = HGIC_BUS_BOOTDL_CHECK_0XFD, -}; - static int hgic_sdio_enable(struct sdio_func_t *func) { int ret; hgic_dbg("Enter\n"); sdio_claim_host(func); + hgic_mmc_set_blk_size(func, SDIO_BLOCK_SIZE); ret = sdio_set_block_size(func, SDIO_BLOCK_SIZE); if (ret) { hgic_err("Set sdio block size %d failed: %d)\n", SDIO_BLOCK_SIZE, ret); @@ -735,6 +825,7 @@ static int hgic_sdio_enable(struct sdio_func_t *func) } ret = sdio_enable_func(func); if (ret) { + sdio_release_irq(func); hgic_err("enable sdio function failed: %d)\n", ret); goto out; } @@ -745,7 +836,7 @@ out: return ret; } -int hgic_sdio_probe(struct sdio_func_t *func, const struct sdio_device_id_t *id) +static int hgic_sdio_probe(struct sdio_func_t *func, const struct sdio_device_id_t *id) { int ret = 0; struct hgic_sdio *sdiodev = NULL; @@ -760,24 +851,41 @@ int hgic_sdio_probe(struct sdio_func_t *func, const struct sdio_device_id_t *id) return -ENOMEM; } + sdiodev->rxbuf = kmalloc(max_pkt_len, GFP_KERNEL); + if (sdiodev->rxbuf == NULL) { + hgic_err("alloc rxbuf fail, size:%d\r\n", max_pkt_len); + goto __failed; + } + hgic_dbg("new sdio card: vendor:%x, id:%x\n", id->vendor_id, id->device_id); sdiodev->func = func; sdiodev->data_addr = SDIO_DATA_ADDR; sdiodev->trans_cnt_addr = SDIO_TRANS_COUNT_ADDR; sdiodev->int_status_addr = SDIO_INIT_STATUS_ADDR; - sdiodev->status = SDIO_STATUS_STOP; - sdiodev->bus = hgic_ifbus_sdio; + //sdiodev->status = SDIO_STATUS_STOP; + sdiodev->bus.type = HGIC_BUS_SDIO; + sdiodev->bus.drv_tx_headroom = SDIO_TX_HEADROM; + sdiodev->bus.tx_packet = hgic_sdio_tx_packet; +#ifdef CONFIG_SDIO_REINIT + sdiodev->bus.reinit = hgic_sdio_reinit; +#endif + sdiodev->bus.bootdl_pktlen = 32704; + sdiodev->bus.bootdl_cksum = HGIC_BUS_BOOTDL_CHECK_0XFD; + sdiodev->bus.probe = probe_hdl; sdiodev->bus.dev_id = id->device_id; sdiodev->bus.blk_size = SDIO_BLOCK_SIZE; - sdiodev->rx_retry = SDIO_CAP_IRQ(func) ? 0 : 5; + sdiodev->rx_retry = SDIO_CAP_IRQ(func) ? 0 : 5; + init_completion(&sdiodev->busy); + if (!SDIO_CAP_POLL(func)) { set_bit(HGIC_BUS_FLAGS_NOPOLL, &sdiodev->bus.flags); } + if (hgic_host_is_spi(func)) { sdiodev->bus.bootdl_pktlen = 4096; } - hgic_core_probe(FUNC_DEV(func), &sdiodev->bus); + sdiodev->bus.probe(FUNC_DEV(func), &sdiodev->bus); if (sdiodev->bus.bus_priv == NULL) { hgic_err("err\r\n"); goto __failed; @@ -789,21 +897,28 @@ int hgic_sdio_probe(struct sdio_func_t *func, const struct sdio_device_id_t *id) goto __failed; } - sdiodev->status &= ~SDIO_STATUS_STOP; - hgic_core_probe_post(sdiodev->bus.bus_priv); + //sdiodev->status &= ~SDIO_STATUS_STOP; + if (sdiodev->bus.probe_post) { + sdiodev->bus.probe_post(sdiodev->bus.bus_priv); + } hgic_dbg("ok\n"); return ret; __failed: hgic_dbg("failed\n"); sdio_set_drvdata(func, NULL); - hgic_core_remove(sdiodev->bus.bus_priv); + if (sdiodev->bus.remove) { + sdiodev->bus.remove(sdiodev->bus.bus_priv); + } + if (sdiodev->rxbuf) { + kfree(sdiodev->rxbuf); + } kfree(sdiodev); hgic_dbg("failed 2\n"); return ret; } -void hgic_sdio_remove(struct sdio_func_t *func) +static void hgic_sdio_remove(struct sdio_func_t *func) { struct hgic_sdio *sdiodev = NULL; @@ -817,9 +932,17 @@ void hgic_sdio_remove(struct sdio_func_t *func) sdio_release_irq(func); sdio_release_host(func); hgic_dbg("remove ... 2\n"); - hgic_core_remove(sdiodev->bus.bus_priv); + if (sdiodev->bus.remove) { + sdiodev->bus.remove(sdiodev->bus.bus_priv); + } hgic_dbg("remove ... 3\n"); sdio_claim_host(func); +#ifdef __RTOS__ + deinit_completion(&sdiodev->busy); +#endif + if (sdiodev->rxbuf) { + kfree(sdiodev->rxbuf); + } sdio_set_drvdata(func, NULL); kfree(sdiodev); sdio_release_host(func); @@ -834,10 +957,9 @@ static int hgic_sdio_suspend(struct device *dev) int ret = 0; struct sdio_func_t *func = dev_to_sdio_func(dev); struct hgic_sdio *sdiodev = (struct hgic_sdio *)sdio_get_drvdata(func); - ret = hgic_core_suspend(sdiodev->bus.bus_priv); - sdio_claim_host(func); - ret = sdio_release_irq(func); - sdio_release_host(func); + if (sdiodev->bus.suspend) { + ret = sdiodev->bus.suspend(sdiodev->bus.bus_priv); + } return ret; } static int hgic_sdio_resume(struct device *dev) @@ -845,10 +967,9 @@ static int hgic_sdio_resume(struct device *dev) int ret = 0; struct sdio_func_t *func = dev_to_sdio_func(dev); struct hgic_sdio *sdiodev = (struct hgic_sdio *)sdio_get_drvdata(func); - sdio_claim_host(func); - ret = sdio_claim_irq(func, hgic_sdio_interrupt); - sdio_release_host(func); - ret = hgic_core_resume(sdiodev->bus.bus_priv); + if (sdiodev->bus.resume) { + ret = sdiodev->bus.resume(sdiodev->bus.bus_priv); + } return ret; } static const struct dev_pm_ops hgic_sdio_pm_ops = { @@ -856,6 +977,7 @@ static const struct dev_pm_ops hgic_sdio_pm_ops = { .resume = hgic_sdio_resume, }; #endif + #ifdef SDIO_DRIVER_EXT extern struct sdio_driver_t hgic_sdio_driver; #else @@ -867,16 +989,20 @@ static struct sdio_driver_t hgic_sdio_driver = { #ifdef CONFIG_PM .drv = { .pm = &hgic_sdio_pm_ops, - }, + }, #endif }; #endif -int __init hgic_sdio_init(void) +int __init hgic_sdio_init(hgic_probe probe, u32 max_pkt) { int ret; - hgic_dbg("Enter\n"); + hgic_dbg("Enter, max_pkt_len = %d\n", max_pkt_len); + probe_hdl = probe; + if(max_pkt > HGIC_PKT_MAX_LEN){ + max_pkt_len = max_pkt; + } ret = sdio_register_driver(&hgic_sdio_driver); hgic_dbg("Leave\n"); return ret; @@ -889,11 +1015,3 @@ void __exit hgic_sdio_exit(void) hgic_dbg("Leave\n"); } -#ifndef CONFIG_HGIC_SDIOIN -module_init(hgic_sdio_init); -module_exit(hgic_sdio_exit); -MODULE_DESCRIPTION("HUGE-IC WLAN Driver"); -MODULE_AUTHOR("Dongyun"); -MODULE_LICENSE("GPL"); -#endif - diff --git a/utils/if_usb.c b/utils/if_usb.c index f221eb3..e9bd292 100644 --- a/utils/if_usb.c +++ b/utils/if_usb.c @@ -14,22 +14,24 @@ #include "../hgic_def.h" #include "utils.h" -#define HGIC_PKT_MAX_LEN 2048 -#define HGIC_TX_URB_CNT 64 -#define HGIC_RX_URB_CNT 64 +#define HGIC_PKT_MAX_LEN (2*1024+512) +#define HGIC_TX_URB_CNT 16 +#define HGIC_RX_URB_CNT 32 #define HGIC_USB_STATUS_STOP BIT(0) #define HGIC_USB_STATUS_ERR BIT(1) -#define HGIC_USB_BUF_FLAG_USED 0x00000001 +#define HGIC_USB_BUF_FLAG_USED BIT(0) +#define HGIC_USB_BUF_FLAG_RX BIT(1) + #define USB_TX_HEADROM 4 struct hgic_usb_buf { struct list_head list; - struct hgic_usb *usbdev; + struct hgic_usb *usbdev; struct urb *urb; - struct sk_buff *skb; - int flag; + void *data; + int flag; }; struct hgic_usb { @@ -47,16 +49,30 @@ struct hgic_usb { static int txq_cnt = HGIC_TX_URB_CNT; static int rxq_cnt = HGIC_RX_URB_CNT; +static hgic_probe probe_hdl = NULL; +static u32 max_pkt_len = HGIC_PKT_MAX_LEN; static const struct usb_device_id hgic_usb_wdev_ids[] = { - { USB_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_AH_4001) }, - { USB_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_AH_4002) }, - { USB_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_AH_4102) }, + { USB_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_4002) }, + { USB_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_4104) }, + { USB_DEVICE(HGIC_VENDOR_ID, HGIC_WLAN_8400)}, { /* end: all zeroes */ }, }; MODULE_DEVICE_TABLE(usb, hgic_usb_wdev_ids); static void hgic_usb_receive(struct urb *urb); +static void hgic_usb_cancle(struct hgic_usb *usbdev) +{ + unsigned long flags; + struct hgic_usb_buf *buf, *n; + + spin_lock_irqsave(&usbdev->qlock, flags); + list_for_each_entry_safe(buf, n, &usbdev->used, list) { + usb_unlink_urb(buf->urb); + } + spin_unlock_irqrestore(&usbdev->qlock, flags); +} + static void hgic_usb_free(struct hgic_usb *usbdev) { unsigned long flags; @@ -66,25 +82,32 @@ static void hgic_usb_free(struct hgic_usb *usbdev) list_for_each_entry_safe(buf, n, &usbdev->tx_freeq, list) { list_del(&buf->list); usb_free_urb(buf->urb); + if(buf->data){ + hgic_err("skb is not free??\r\n"); + kfree_skb(buf->data); + buf->data = NULL; + } kfree(buf); - //hgic_dbg("free usb tx buff\r\n"); } list_for_each_entry_safe(buf, n, &usbdev->rx_freeq, list) { list_del(&buf->list); + kfree(buf->data); usb_free_urb(buf->urb); kfree(buf); - //hgic_dbg("free usb rx buff\r\n"); } list_for_each_entry_safe(buf, n, &usbdev->used, list) { usb_kill_urb(buf->urb); list_del(&buf->list); + if (buf->flag & HGIC_USB_BUF_FLAG_RX) { + kfree(buf->data); + } usb_free_urb(buf->urb); kfree(buf); } spin_unlock_irqrestore(&usbdev->qlock, flags); } -static int hgic_usb_qinit(struct hgic_usb *usb, struct list_head *q, int qsize) +static int hgic_usb_qinit(struct hgic_usb *usb, struct list_head *q, int qsize, u8 rx) { int i = 0; struct hgic_usb_buf *buf = NULL; @@ -92,12 +115,22 @@ static int hgic_usb_qinit(struct hgic_usb *usb, struct list_head *q, int qsize) for (i = 0; i < qsize; i++) { buf = kzalloc(sizeof(struct hgic_usb_buf), GFP_ATOMIC); if (buf == NULL) { + hgic_err("alloc fail, i=%d\r\n", i); break; } buf->usbdev = usb; buf->urb = usb_alloc_urb(0, GFP_KERNEL); if (buf->urb) { + if (rx) { + buf->data = kmalloc(max_pkt_len, GFP_KERNEL); + if (buf->data == NULL) { + kfree(buf); + hgic_err("alloc fail, len=%d\r\n", max_pkt_len); + break; + } + buf->flag |= HGIC_USB_BUF_FLAG_RX; + } list_add_tail(&buf->list, q); } else { kfree(buf); @@ -107,7 +140,7 @@ static int hgic_usb_qinit(struct hgic_usb *usb, struct list_head *q, int qsize) return i; } -struct hgic_usb_buf *hgic_usb_deq(struct hgic_usb *usbdev, struct list_head *q) +static struct hgic_usb_buf *hgic_usb_deq(struct hgic_usb *usbdev, struct list_head *q) { struct hgic_usb_buf *buf = NULL; unsigned long flags; @@ -123,12 +156,11 @@ struct hgic_usb_buf *hgic_usb_deq(struct hgic_usb *usbdev, struct list_head *q) return buf; } -void hgic_usb_enq(struct hgic_usb_buf *buf, struct list_head *q) +static void hgic_usb_enq(struct hgic_usb_buf *buf, struct list_head *q) { unsigned long flags; spin_lock_irqsave(&buf->usbdev->qlock, flags); - buf->skb = NULL; buf->flag &= ~HGIC_USB_BUF_FLAG_USED; list_del(&buf->list); list_add_tail(&buf->list, q); @@ -139,21 +171,20 @@ static int hgic_usb_submit_rx_urb(struct hgic_usb_buf *buf) { int ret = -1; - buf->skb = dev_alloc_skb(HGIC_PKT_MAX_LEN); - if (!buf->skb) { - hgic_err("alloc skb failed\r\n"); + if (buf->usbdev->status & (HGIC_USB_STATUS_STOP | HGIC_USB_STATUS_ERR)) { hgic_usb_enq(buf, &buf->usbdev->rx_freeq); return -1; } + usb_fill_bulk_urb(buf->urb, buf->usbdev->udev, usb_rcvbulkpipe(buf->usbdev->udev, buf->usbdev->ep_in), - buf->skb->data, HGIC_PKT_MAX_LEN, hgic_usb_receive, buf); + buf->data, max_pkt_len, hgic_usb_receive, buf); ret = usb_submit_urb(buf->urb, GFP_ATOMIC); if (ret) { - hgic_err("submit rx urb failed: %d\n", ret); - dev_kfree_skb_any(buf->skb); + hgic_err("submit rx urb %p failed: %d\n", buf->urb, ret); hgic_usb_enq(buf, &buf->usbdev->rx_freeq); buf->usbdev->status |= HGIC_USB_STATUS_ERR; + hgic_usb_cancle(buf->usbdev); return -1; } return 0; @@ -177,27 +208,29 @@ static void hgic_usb_receive(struct urb *urb) { struct hgic_usb_buf *buf = (struct hgic_usb_buf *)urb->context; - if (buf->usbdev->status & (HGIC_USB_STATUS_STOP | HGIC_USB_STATUS_ERR)) { - dev_kfree_skb_any(buf->skb); + //hgic_enter(); + if (buf->usbdev->status & HGIC_USB_STATUS_STOP) { hgic_usb_enq(buf, &buf->usbdev->rx_freeq); + hgic_err("STOP, drop data, status=%x\r\n", buf->usbdev->status); return; } if (urb->actual_length > 0) { - buf->usbdev->bus.rx_packet(buf->usbdev->bus.bus_priv, buf->skb, urb->actual_length); - } else { - dev_kfree_skb_any(buf->skb); + buf->usbdev->bus.rx_packet(buf->usbdev->bus.bus_priv, buf->data, urb->actual_length); } hgic_usb_submit_rx_urb(buf); + //hgic_leave(); } static void hgic_usb_tx_complete(struct urb *urb) { struct hgic_usb_buf *buf = (struct hgic_usb_buf *)urb->context; - //hgic_skip_padding(buf->skb); - buf->usbdev->bus.tx_complete(buf->usbdev->bus.bus_priv, buf->skb, !urb->status); - hgic_usb_enq(buf, &buf->usbdev->tx_freeq); - up(&buf->usbdev->tx_sema); + struct hgic_usb *usbdev = buf->usbdev; + + usbdev->bus.tx_complete(usbdev->bus.bus_priv, (struct sk_buff *)buf->data, !urb->status); + buf->data = NULL; + hgic_usb_enq(buf, &usbdev->tx_freeq); + up(&usbdev->tx_sema); } static int hgic_usb_tx_packet(void *bus, struct sk_buff *skb) @@ -207,30 +240,34 @@ static int hgic_usb_tx_packet(void *bus, struct sk_buff *skb) struct hgic_usb_buf *buf = NULL; struct hgic_usb *usbdev = container_of(bus, struct hgic_usb, bus); - if ((len & (usbdev->ep_out_size - 1)) == 0) { - len += 4; - } +#ifdef CONFIG_USB_ZERO_PACKET + if (IS_ALIGNED(len, usbdev->ep_out_size)) len += 4; +#endif + if (usbdev->status & (HGIC_USB_STATUS_STOP | HGIC_USB_STATUS_ERR)) { ret = -EIO; goto __fail; } ret = down_timeout(&usbdev->tx_sema, 1000); - if(ret){ + if (ret) { ret = -EIO; - goto __fail; + goto __fail; } - + + if (usbdev->status & (HGIC_USB_STATUS_STOP | HGIC_USB_STATUS_ERR)) { + ret = -EIO; + goto __fail; + } + buf = hgic_usb_deq(usbdev, &usbdev->tx_freeq); if (buf == NULL) { ret = -ENOMEM; goto __fail; } - buf->skb = skb; - usb_fill_bulk_urb(buf->urb, usbdev->udev, - usb_sndbulkpipe(usbdev->udev, usbdev->ep_out), - skb->data, len, /*ALIGN(skb->len, 4)*/ - hgic_usb_tx_complete, buf); + buf->data = skb; + usb_fill_bulk_urb(buf->urb, usbdev->udev, usb_sndbulkpipe(usbdev->udev, usbdev->ep_out), + skb->data, len, hgic_usb_tx_complete, buf); buf->urb->transfer_flags |= URB_ZERO_PACKET; ret = usb_submit_urb(buf->urb, GFP_ATOMIC); if (ret) { @@ -242,20 +279,13 @@ static int hgic_usb_tx_packet(void *bus, struct sk_buff *skb) __fail: if (buf) { + buf->data = NULL; hgic_usb_enq(buf, &usbdev->tx_freeq); } usbdev->bus.tx_complete(usbdev->bus.bus_priv, skb, 0); return ret; } -static struct hgic_bus hgic_bus_usb = { - .type = HGIC_BUS_USB, - .drv_tx_headroom = USB_TX_HEADROM, - .tx_packet = hgic_usb_tx_packet, - .bootdl_pktlen = 2048, - .bootdl_cksum = HGIC_BUS_BOOTDL_CHECK_0XFD, -}; - static int hgic_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) { int i = 0; @@ -273,11 +303,16 @@ static int hgic_usb_probe(struct usb_interface *intf, const struct usb_device_id return -ENOMEM; } - memset(usbdev, 0, sizeof(struct hgic_usb)); usbdev->udev = udev; - usbdev->bus = hgic_bus_usb; + usbdev->bus.type = HGIC_BUS_USB; usbdev->bus.dev_id = id->idProduct; - usbdev->status = HGIC_USB_STATUS_STOP; + usbdev->bus.drv_tx_headroom = USB_TX_HEADROM; + usbdev->bus.tx_packet = hgic_usb_tx_packet; + usbdev->bus.bootdl_pktlen = 2048; + usbdev->bus.bootdl_cksum = HGIC_BUS_BOOTDL_CHECK_0XFD; + usbdev->bus.probe = probe_hdl; + + //usbdev->status = HGIC_USB_STATUS_STOP; for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) { endpoint = &iface_desc->endpoint[i].desc; @@ -292,35 +327,41 @@ static int hgic_usb_probe(struct usb_interface *intf, const struct usb_device_id } } usbdev->bus.blk_size = usbdev->ep_out_size; - + spin_lock_init(&usbdev->qlock); INIT_LIST_HEAD(&usbdev->tx_freeq); INIT_LIST_HEAD(&usbdev->rx_freeq); INIT_LIST_HEAD(&usbdev->used); - ret = hgic_usb_qinit(usbdev, &usbdev->tx_freeq, txq_cnt); + ret = hgic_usb_qinit(usbdev, &usbdev->tx_freeq, txq_cnt, 0); sema_init(&usbdev->tx_sema, ret); hgic_dbg("usb txq:%d\r\n", ret); - ret = hgic_usb_qinit(usbdev, &usbdev->rx_freeq, rxq_cnt); + ret = hgic_usb_qinit(usbdev, &usbdev->rx_freeq, rxq_cnt, 1); hgic_dbg("usb rxq:%d\r\n", ret); - hgic_core_probe(&udev->dev, &usbdev->bus); + usbdev->bus.probe(&udev->dev, &usbdev->bus); if (!usbdev->bus.bus_priv) { ret = -ENOMEM; goto __failed; } + usb_get_dev(udev); + usb_set_intfdata(intf, usbdev); + //usbdev->status &= ~HGIC_USB_STATUS_STOP; + ret = hgic_usb_submit_rx_urbs(usbdev); if (ret) { goto __failed; } - usb_get_dev(udev); - usb_set_intfdata(intf, usbdev); - usbdev->status &= ~HGIC_USB_STATUS_STOP; - hgic_core_probe_post(usbdev->bus.bus_priv); + + if (usbdev->bus.probe_post) { + usbdev->bus.probe_post(usbdev->bus.bus_priv); + } return ret; __failed: - hgic_core_remove(usbdev->bus.bus_priv); + if (usbdev->bus.remove) { + usbdev->bus.remove(usbdev->bus.bus_priv); + } hgic_usb_free(usbdev); kfree(usbdev); return -1; @@ -329,14 +370,18 @@ __failed: static void hgic_usb_disconnect(struct usb_interface *intf) { struct hgic_usb *usbdev = usb_get_intfdata(intf); - hgic_dbg("hgic_usb_disconnect>>>>\r\n"); + hgic_dbg("Enter\n"); if (usbdev) { usbdev->status |= HGIC_USB_STATUS_STOP; - hgic_core_remove(usbdev->bus.bus_priv); + up(&usbdev->tx_sema); + if (usbdev->bus.remove) { + usbdev->bus.remove(usbdev->bus.bus_priv); + } hgic_usb_free(usbdev); kfree(usbdev); usb_set_intfdata(intf, NULL); } + hgic_dbg("Leave\n"); } static struct usb_driver hgic_usb_driver = { @@ -349,11 +394,15 @@ static struct usb_driver hgic_usb_driver = { .supports_autosuspend = 1, }; -int __init hgic_usb_init(void) +int __init hgic_usb_init(hgic_probe probe, u32 max_pkt) { int ret = 0; - hgic_dbg("Enter\n"); + hgic_dbg("Enter, max_pkt_len = %d\n", max_pkt_len); + probe_hdl = probe; + if(max_pkt > HGIC_PKT_MAX_LEN){ + max_pkt_len = max_pkt; + } ret = usb_register(&hgic_usb_driver); if (ret) { hgic_err("driver register failed: %d\n", ret); @@ -368,11 +417,4 @@ void __exit hgic_usb_exit(void) usb_deregister(&hgic_usb_driver); hgic_dbg("Leave\n"); } -#ifndef CONFIG_HGIC_USBIN -module_init(hgic_usb_init); -module_exit(hgic_usb_exit); -MODULE_DESCRIPTION("HUGE-IC WLAN Driver"); -MODULE_AUTHOR("Dongyun"); -MODULE_LICENSE("GPL"); -#endif diff --git a/utils/iwpriv.c b/utils/iwpriv.c new file mode 100644 index 0000000..6db0962 --- /dev/null +++ b/utils/iwpriv.c @@ -0,0 +1,1684 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "../hgic_def.h" +#include "utils.h" +#include "fwctrl.h" + +struct fwctrl_cfgset { + char *name; + int (*set)(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count); +}; +struct fwctrl_cfgget { + char *name; + int (*get)(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin); +}; + +static int hgic_copyfrom_iwreq(struct iwreq *wrqin, char *buf, int len) +{ + int ret = 0; + if (len > 0) { + memset(buf, 0, len); + len = (len <= wrqin->u.data.length ? len : wrqin->u.data.length); + if (ACCESS_OK(VERIFY_READ, wrqin->u.data.pointer, wrqin->u.data.length)) { + ret = copy_from_user(buf, wrqin->u.data.pointer, len); + } else { + memcpy(buf, wrqin->u.data.pointer, len); + } + } + return ret; +} + +static void hgic_copyto_iwreq(struct iwreq *wrqin, char *buf, int len) +{ + if (ACCESS_OK(VERIFY_WRITE, wrqin->u.data.pointer, len)) { + len = (len <= wrqin->u.data.length ? len : wrqin->u.data.length); + if (len > 0 && !__copy_to_user(wrqin->u.data.pointer, buf, len)) { + wrqin->u.data.length = (u16)len; + } else { + wrqin->u.data.length = 0; + } + } else { + if (len > 0) { + memcpy(wrqin->u.data.pointer, buf, len); + wrqin->u.data.length = (u16)len; + } else { + wrqin->u.data.length = 0; + } + } +} + +static int hgic_iwpriv_set_countryregion(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + if (data == NULL) { + return -EINVAL; + } + return hgic_fwctrl_set_countryregion(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_ssid(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_ssid(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_bssid(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 bssid[6]; + if (data == NULL || ifidx != HGIC_WDEV_ID_STA) { + return -EINVAL; + } + hgic_pick_macaddr(data, bssid); + return hgic_fwctrl_set_bssid(ctrl, ifidx, bssid); +} + +static int hgic_iwpriv_set_channel(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + if (data == NULL) { + return -EINVAL; + } + return hgic_fwctrl_set_channel(ctrl, ifidx, simple_strtol(data, 0, 10)); +} + +static int hgic_iwpriv_set_bssid_filter(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_bssid_filter(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_rts_threshold(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + if (data == NULL) { + return -EINVAL; + } + return hgic_fwctrl_set_rts_threshold(ctrl, ifidx, simple_strtol(data, 0, 10)); +} + +static int hgic_iwpriv_set_frag_threshold(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + if (data == NULL) { + return -EINVAL; + } + return hgic_fwctrl_set_frag_threshold(ctrl, ifidx, simple_strtol(data, 0, 10)); +} + +static int hgic_iwpriv_set_key_mgmt(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_key_mgmt(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_wpa_psk(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_wpa_psk(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_freq_range(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 vals[3] = {0, 0, 0}; + u32 argcnt = 0; + + if (data == NULL || strlen(data) == 0) { + return -EINVAL; + } + hgic_pick_values(u32, data, vals, 3); + return hgic_fwctrl_set_freq_range(ctrl, ifidx, vals[0], vals[1], vals[2]); +} + +static int hgic_iwpriv_set_bss_bw(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 bss_bw = (u8)simple_strtol(data, 0, 10); + return hgic_fwctrl_set_bss_bw(ctrl, ifidx, bss_bw); +} + +static int hgic_iwpriv_set_tx_bw(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 tx_bw = (u8)simple_strtol(data, 0, 10); + return hgic_fwctrl_set_tx_bw(ctrl, ifidx, tx_bw); +} + +static int hgic_iwpriv_set_tx_mcs(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 tx_mcs = (u8)simple_strtol(data, 0, 10); + return hgic_fwctrl_set_tx_mcs(ctrl, ifidx, tx_mcs); +} + +static int hgic_iwpriv_set_acs(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u16 vals[2] = {0, 0}; + u32 argcnt = 0; + + if (data == NULL || strlen(data) == 0) { + return -EINVAL; + } + hgic_pick_values(u16, data, vals, 2); + return hgic_fwctrl_set_acs(ctrl, ifidx, vals[0], vals[1]); +} + +static int hgic_iwpriv_set_bgrssi(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 rssi = (u8)simple_strtol(data, 0, 10); + return hgic_fwctrl_set_bgrssi(ctrl, ifidx, rssi); +} + +static int hgic_iwpriv_set_chan_list(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u16 vals[32] = {0}; + u32 argcnt = 0; + + if (data == NULL || strlen(data) == 0) { + return -EINVAL; + } + hgic_pick_values(u16, data, vals, 32); + return hgic_fwctrl_set_chan_list(ctrl, ifidx, vals, argcnt); +} + +static int hgic_iwpriv_set_mode(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + if (data == NULL) { + return -EINVAL; + } + return hgic_fwctrl_set_mode(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_paired_stas(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 *mac = NULL; + int len = 0; + int ret = 0, i = 0; + char *ptr = data; + char *p = data; + + if (data == NULL || strlen(data) == 0) { + return -EINVAL; + } + + len = strlen(data); + mac = kzalloc(len, GFP_KERNEL); + if (mac == NULL) { + return -ENOMEM; + } + + hgic_dbg("set paired stas: %s\r\n", data); + while (p && *ptr) { + p = strchr(ptr, ','); + if(p) *p++ = 0; + if (hgic_pick_macaddr(ptr, mac + i * 6)) { + i++; + } else { + break; + } + ptr = p; + } + hgic_dbg("%d paired stas\r\n", i); + + ret = hgic_fwctrl_set_paired_stas(ctrl, ifidx, mac, i * 6); + kfree(mac); + return ret; +} + +static int hgic_iwpriv_set_pairing(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 number = 0; + + if (data == NULL) { + return -EINVAL; + } + number = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_pairing(ctrl, ifidx, number); +} + +static int hgic_iwpriv_set_beacon_int(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 beacon_int = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_beacon_int(ctrl, ifidx, beacon_int); +} + +static int hgic_iwpriv_set_radio_onoff(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + ctrl->radio_onoff = (u8)simple_strtol(data, 0, 10); + return hgic_fwctrl_radio_onoff(ctrl, ifidx, ctrl->radio_onoff); +} + +static int hgic_iwpriv_join_group(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 addr[6]; + u32 aid = 0; + + if (data == NULL) { + return -EINVAL; + } + hgic_pick_macaddr(data, addr); + aid = simple_strtol(data + 18, 0, 10); + return hgic_fwctrl_join_group(ctrl, ifidx, addr, aid); +} + +static int hgic_iwpriv_set_ethertype(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u16 type = 0; + + if (data == NULL) { + return -EINVAL; + } + type = simple_strtol(data, 0, 16); + return hgic_fwctrl_set_ethertype(ctrl, ifidx, type); +} + +static int hgic_iwpriv_set_txpower(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u16 type = 0; + + if (data == NULL) { + return -EINVAL; + } + type = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_txpower(ctrl, ifidx, type); +} + +static int hgic_iwpriv_set_aggcnt(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 agg[2]; //tx agg, rx agg + u32 argcnt = 0; + + if (data == NULL) { + return -EINVAL; + } + + hgic_pick_values(u8, data, agg, 2); + return hgic_fwctrl_set_agg_cnt(ctrl, ifidx, agg); +} +static int hgic_iwpriv_set_ps_connect(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 vals[2]; + u32 argcnt = 0; + + if (data == NULL) { + return -EINVAL; + } + hgic_pick_values(u8, data, vals, 2); + return hgic_fwctrl_set_ps_connect(ctrl, ifidx, vals[0], vals[1]); +} + +static int hgic_iwpriv_set_bss_max_idle(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 max_idle = 0; + + if (data == NULL) { + return -EINVAL; + } + max_idle = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_bss_max_idle(ctrl, ifidx, max_idle); +} + +static int hgic_iwpriv_set_dtim_period(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 period = 0; + + if (data == NULL) { + return -EINVAL; + } + period = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_dtim_period(ctrl, ifidx, period); +} + +static int hgic_iwpriv_set_wkio_mode(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 mode = 0; + + if (data == NULL) { + return -EINVAL; + } + mode = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_wkio_mode(ctrl, ifidx, mode); +} + +static int hgic_iwpriv_set_load_def(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 rst = 0; + + if (data == NULL) { + return -EINVAL; + } + rst = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_load_def(ctrl, ifidx, rst); +} + +static int hgic_iwpriv_set_disassoc_sta(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 addr[6]; + + if (data == NULL) { + return -EINVAL; + } + hgic_pick_macaddr(data, addr); + return hgic_fwctrl_disassoc_sta(ctrl, ifidx, addr); +} + +static int hgic_iwpriv_set_ps_mode(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 mode = 0; + + if (data == NULL) { + return -EINVAL; + } + mode = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_ps_mode(ctrl, ifidx, mode); +} + +static int hgic_iwpriv_set_aplost_time(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 time = 0; + + if (data == NULL) { + return -EINVAL; + } + time = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_aplost_time(ctrl, ifidx, time); +} + +static int hgic_iwpriv_set_unpair(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 addr[6]; + hgic_pick_macaddr(data, addr); + return hgic_fwctrl_unpair(ctrl, ifidx, addr); +} + +static int hgic_iwpriv_set_auto_chswitch(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 enable = 0; + + if (data == NULL) { + return -EINVAL; + } + enable = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_auto_chswitch(ctrl, ifidx, enable == 1); +} + +static int hgic_iwpriv_set_mcast_key(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + if (data == NULL) { + return -EINVAL; + } + return hgic_fwctrl_set_mcast_key(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_reassoc_wkhost(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 enable = 0; + + if (data == NULL) { + return -EINVAL; + } + enable = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_reassoc_wkhost(ctrl, ifidx, enable == 1); +} + +static int hgic_iwpriv_set_wakeup_io(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 vals[2] = {0, 0}; + u32 argcnt = 0; + + hgic_pick_values(u8, data, vals, 2); + return hgic_fwctrl_set_wakeup_io(ctrl, ifidx, vals[0], vals[1]); +} + +static int hgic_iwpriv_set_dbginfo_output(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 enable = 0; + + if (data) { + enable = simple_strtol(data, 0, 10); + } + return hgic_fwctrl_set_dbginfo_output(ctrl, ifidx, enable == 1); +} + +static int hgic_iwpriv_set_sysdbg(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + if (data == NULL) { + return -EINVAL; + } + return hgic_fwctrl_set_sysdbg(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_primary_chan(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 chan = 0; + + if (data == NULL) { + return -EINVAL; + } + chan = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_primary_chan(ctrl, ifidx, chan); +} + +static int hgic_iwpriv_set_autosleep_time(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 time = 0; + + if (data == NULL) { + return -EINVAL; + } + time = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_autosleep_time(ctrl, ifidx, time); +} + +static int hgic_iwpriv_set_super_pwr(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 enable = 0; + + if (data == NULL) { + return -EINVAL; + } + enable = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_super_pwr(ctrl, ifidx, enable); +} + +static int hgic_iwpriv_set_repeater_ssid(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_repeater_ssid(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_repeater_psk(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_repeater_psk(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_auto_save(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 enable = 0; + + if (data == NULL) { + return -EINVAL; + } + enable = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_auto_save(ctrl, ifidx, enable); +} +static int hgic_iwpriv_set_pair_autostop(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 enable = 0; + + if (data == NULL) { + return -EINVAL; + } + enable = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_pair_autostop(ctrl, ifidx, enable); +} +static int hgic_iwpriv_set_dcdc13v(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 enable = 0; + + if (data == NULL) { + return -EINVAL; + } + enable = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_dcdc13v(ctrl, ifidx, enable); +} +static int hgic_iwpriv_set_acktmo(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 tmo = 0; + + if (data == NULL) { + return -EINVAL; + } + tmo = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_acktmo(ctrl, ifidx, tmo); +} +static int hgic_iwpriv_set_pa_pwrctl_dis(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 dis = 0; + + if (data == NULL) { + return -EINVAL; + } + dis = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_pa_pwrctl_dis(ctrl, ifidx, dis); +} +static int hgic_iwpriv_set_dhcpc(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 en = 0; + + if (data == NULL) { + return -EINVAL; + } + en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_dhcpc(ctrl, ifidx, en); +} +static int hgic_iwpriv_set_wkdata_save(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 en = 0; + + if (data == NULL) { + return -EINVAL; + } + en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_wkdata_save(ctrl, ifidx, en); +} +static int hgic_iwpriv_set_mcast_txparam(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + struct hgic_mcast_txparam txparam; + u8 *vals = (u8 *)&txparam; + u32 argcnt = 0; + + if (data == NULL) { + return -EINVAL; + } + hgic_pick_values(u8, data, vals, 4); + return hgic_fwctrl_set_mcast_txparam(ctrl, ifidx, &txparam); +} + +static int hgic_iwpriv_set_resetsta(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 addr[6]; + + if (data == NULL || ifidx != HGIC_WDEV_ID_STA) { + return -EINVAL; + } + hgic_pick_macaddr(data, addr); + return hgic_fwctrl_reset_sta(ctrl, ifidx, addr); +} + +static int hgic_iwpriv_set_ant_auto(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 en = 0; + + if (data == NULL) { + return -EINVAL; + } + en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_ant_auto(ctrl, ifidx, en); +} +static int hgic_iwpriv_set_select_ant(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 ant = 0; + + if (data == NULL) { + return -EINVAL; + } + ant = simple_strtol(data, 0, 10); + return hgic_fwctrl_select_ant(ctrl, ifidx, ant); +} +static int hgic_iwpriv_set_wkhost_reasons(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 argcnt = 0; + u8 reasons[33]; + + if (data == NULL) { + return -EINVAL; + } + memset(reasons, 0, sizeof(reasons)); + hgic_pick_values(u8, data, reasons, 32); + return hgic_fwctrl_set_wkhost_reasons(ctrl, ifidx, reasons, argcnt + 1); //keep last one is 0. +} + +static int hgic_iwpriv_set_mac_filter(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 en = 0; + + if (data == NULL) { + return -EINVAL; + } + en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_mac_filter(ctrl, ifidx, en); +} + +static int hgic_iwpriv_set_atcmd(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_atcmd(ctrl, ifidx, data); +} + +static int hgic_iwpriv_set_roaming(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + s8 vals[8]; + u32 argcnt = 0; + + if (data == NULL) { + return -EINVAL; + } + hgic_pick_values(s8, data, vals, sizeof(vals)); + return hgic_fwctrl_set_roaming(ctrl, ifidx, vals, argcnt); +} + +static int hgic_iwpriv_set_ap_hide(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 hide = 0; + + if (data == NULL) { + return -EINVAL; + } + hide = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_ap_hide(ctrl, ifidx, hide); +} + +static int hgic_iwpriv_set_max_txcnt(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 txcnt = 0; + + if (data == NULL) { + return -EINVAL; + } + txcnt = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_frm_tx_maxcnt(ctrl, ifidx, txcnt); +} +static int hgic_iwpriv_set_assert_holdup(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 holdup = 0; + + if (data == NULL) { + return -EINVAL; + } + holdup = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_assert_holdup(ctrl, ifidx, holdup); +} +static int hgic_iwpriv_set_ap_psmode(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 en = 0; + + if (data == NULL) { + return -EINVAL; + } + en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_ap_psmode_en(ctrl, ifidx, en); +} +static int hgic_iwpriv_set_dupfilter_en(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 en = 0; + + if (data == NULL) { + return -EINVAL; + } + en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_dupfilter_en(ctrl, ifidx, en); +} +static int hgic_iwpriv_set_dis_1v1m2u(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 en = 0; + + if (data == NULL) { + return -EINVAL; + } + en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_1v1_m2u_dis(ctrl, ifidx, en); +} +static int hgic_iwpriv_set_dis_psconnect(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 en = 0; + + if (data == NULL) { + return -EINVAL; + } + en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_psconnect_dis(ctrl, ifidx, en); +} +static int hgic_iwpriv_reset(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_reset(ctrl, ifidx); +} +static int hgic_iwpriv_set_heartbeat(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 ip[4] = {0}; + u32 port = 0; + u32 ipaddr = 0; + u32 period = 0; + u32 hb_tmo = 300; + + sscanf(data, "%d.%d.%d.%d,%d,%d,%d", &ip[0], &ip[1], &ip[2], &ip[3], &port, &period, &hb_tmo); + ipaddr = ((ip[0] & 0xff) << 24) | ((ip[1] & 0xff) << 16) | (((ip[2] & 0xff) << 8)) | (ip[3] & 0xff); + return hgic_fwctrl_set_ps_heartbeat(ctrl, ifidx, ipaddr, port, period, hb_tmo); +} +static int hgic_iwpriv_set_heartbeat_resp(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_ps_heartbeat_resp(ctrl, ifidx, data, count); +} +static int hgic_iwpriv_set_wakeup_data(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_ps_wakeup_data(ctrl, ifidx, data, count); +} +static int hgic_iwpriv_wakeup_sta(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 mac[6]; + hgic_pick_macaddr(data, mac); + hgic_err("wakeup sta: %pM\r\n", mac); + return hgic_fwctrl_wakeup_sta(ctrl, ifidx, mac); +} +static int hgic_iwpriv_send_custmgmt(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_send_cust_mgmt(ctrl, ifidx, data, count); +} +static int hgic_iwpriv_send_mgmtframe(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_send_mgmtframe(ctrl, ifidx, data, count); +} +static int hgic_iwpriv_set_wkdata_mask(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 len = count > 128 ? 128 : count; + return hgic_fwctrl_set_wkdata_mask(ctrl, ifidx, data[0], (u8 *)(data + 1), len - 1); +} +static int hgic_iwpriv_set_driverdata(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_cust_driver_data(ctrl, ifidx, data, count); +} +static int hgic_iwpriv_set_freqinfo(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_freqinfo(ctrl, ifidx, data, count); +} +static int hgic_iwpriv_set_blenc(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int ret = 0; + u8 vals[2]; + char *args; + u32 argcnt = 0; + + if (memcmp(data, "EN:", 3) == 0) { + args = data + 3; + hgic_pick_values(u8, args, vals, 2); + ret = hgic_fwctrl_set_blenc_en(ctrl, ifidx, vals); + } else if (memcmp(data, "DATA:", 5) == 0) { + ret = hgic_fwctrl_blenc_send_data(ctrl, ifidx, data + 5, count - 5); + } else if (memcmp(data, "DEV_ADDR:", 9) == 0) { + ret = hgic_fwctrl_blenc_set_devaddr(ctrl, ifidx, data + 9); + } else if (memcmp(data, "ADV_DATA:", 9) == 0) { + ret = hgic_fwctrl_blenc_set_advdata(ctrl, ifidx, data + 9, count - 9); + } else if (memcmp(data, "SCAN_RESP:", 10) == 0) { + ret = hgic_fwctrl_blenc_set_scanresp(ctrl, ifidx, data + 10, count - 10); + } else if (memcmp(data, "ADV_INT:", 8) == 0) { + ret = hgic_fwctrl_blenc_set_advinterval(ctrl, ifidx, simple_strtol(data + 8, 0, 10)); + } else if (memcmp(data, "ADV_EN:", 7) == 0) { + ret = hgic_fwctrl_blenc_start_adv(ctrl, ifidx, simple_strtol(data + 7, 0, 10)); + } else if (memcmp(data, "HCI_DATA:", 9) == 0) { + ret = hgic_fwctrl_send_hci_data(ctrl, data[9], data + 10, count - 10); + } else if (memcmp(data, "ADV_FILTER:", 11) == 0) { + ret = hgic_fwctrl_set_blenc_adv_filter(ctrl, ifidx, simple_strtol(data + 11, 0, 10)); + } else { + ret = -1; + } + return ret ? -EINVAL : 0; +} +static int hgic_iwpriv_enter_sleep(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int err = 0; + u32 vals[2] = {1, 0xffffffff}; + u32 argcnt = 0; + + if (data == NULL) { + return -EINVAL; + } + hgic_pick_values(u32, data, vals, 2); + if (vals[0]) { + if (!test_bit(HGIC_BUS_FLAGS_SLEEP, &ctrl->bus->flags)) { + if(ctrl->fwinfo->version < 0x02000000) vals[0] = 0xffff; + hgic_dbg("enter sleep : type:%d, sleep_ms:%d ...\r\n", vals[0], vals[1]); + err = hgic_fwctrl_enter_sleep(ctrl, ifidx, vals[0], vals[1]); + if (err) { + clear_bit(HGIC_BUS_FLAGS_SLEEP, &ctrl->bus->flags); + hgic_err("sleep fail, ret=%d\r\n", err); + } + } + } else { + hgic_dbg("exit sleep, SLEEP=%d\r\n", test_bit(HGIC_BUS_FLAGS_SLEEP, &ctrl->bus->flags)); + if (test_bit(HGIC_BUS_FLAGS_SLEEP, &ctrl->bus->flags)) { + clear_bit(HGIC_BUS_FLAGS_SLEEP, &ctrl->bus->flags); + if (ctrl->bus->reinit) { + ctrl->bus->reinit(ctrl->bus); + } + err = hgic_fwctrl_enter_sleep(ctrl, ifidx, 0, 0); + if (err) { + hgic_err("exit sleep fail, ret=%d\r\n", err); + } + } + } + return err ? -EINVAL : 0; +} +static int hgic_iwpriv_set_hwscan(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 argcnt = 0; + u16 vals[4]; + hgic_pick_values(u16, data, vals, 4); + return hgic_fwctrl_set_hwscan(ctrl, ifidx, vals[0], vals[1], vals[2], vals[3]); +} +static int hgic_iwpriv_set_user_edca(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 ac = data[0]; + struct hgic_txq_param txq; + memcpy(&txq, data + 1, sizeof(txq)); + return hgic_fwctrl_set_user_edca(ctrl, ifidx, ac, &txq); +} +static int hgic_iwpriv_set_fix_txrate(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 txrate = simple_strtoul(data, 0, 10); + return hgic_fwctrl_set_fix_txrate(ctrl, ifidx, txrate); +} +static int hgic_iwpriv_set_nav_max(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 nav = simple_strtoul(data, 0, 10); + return hgic_fwctrl_set_nav_max(ctrl, ifidx, nav); +} +static int hgic_iwpriv_clear_nav(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_clear_nav(ctrl, ifidx); +} +static int hgic_iwpriv_set_cca_param(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_cca_param(ctrl, ifidx, (struct hgic_cca_ctl *)data); +} +static int hgic_iwpriv_set_tx_modulation_gain(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_tx_modulation_gain(ctrl, ifidx, data, count); +} +static int hgic_iwpriv_set_rts_duration(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int duration = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_rts_duration(ctrl, ifidx, duration); +} +static int hgic_iwpriv_set_disable_print(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int dis = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_disable_print(ctrl, ifidx, dis); +} +static int hgic_iwpriv_set_conn_paironly(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int dis = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_conn_paironly(ctrl, ifidx, dis); +} +static int hgic_iwpriv_set_wait_psmode(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int mode = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_wait_psmode(ctrl, ifidx, mode); +} +static int hgic_iwpriv_set_diffcust_conn(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_diffcust_conn(ctrl, ifidx, en); +} +static int hgic_iwpriv_set_standby(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 argcnt = 0; + u32 vals[2]; + + if (data == NULL) { + return -EINVAL; + } + hgic_pick_values(u32, data, vals, 2); + return hgic_fwctrl_set_standby(ctrl, ifidx, (u8)vals[0], vals[1]); +} +static int hgic_iwpriv_set_ap_chan_switch(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u8 argcnt = 0; + u8 vals[2]; + + if (data == NULL) { + return -EINVAL; + } + hgic_pick_values(u8, data, vals, 2); + return hgic_fwctrl_set_ap_chan_switch(ctrl, ifidx, vals[0], vals[1]); +} +static int hgic_iwpriv_set_cca_for_ce(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_cca_for_ce(ctrl, ifidx, en); +} +static int hgic_iwpriv_set_rtc(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 rtc = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_rtc(ctrl, ifidx, rtc); +} +static int hgic_iwpriv_set_apep_padding(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_apep_padding(ctrl, ifidx, en); +} +static int hgic_iwpriv_set_watchdog(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + u32 en = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_watchdog(ctrl, ifidx, en); +} +static int hgic_iwpriv_set_retry_fallback_cnt(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int cnt = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_retry_fallback_cnt(ctrl, ifidx, cnt); +} +static int hgic_iwpriv_set_fallback_mcs(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + struct hgic_fallback_mcs mcs; + u8 argcnt = 0; + u8 vals[4]; + hgic_pick_values(u8, data, vals, 4); + mcs.original_type = vals[0]; + mcs.original_mcs = vals[1]; + mcs.fallback_type = vals[2]; + mcs.fallback_mcs = vals[3]; + return hgic_fwctrl_set_fallback_mcs(ctrl, ifidx, &mcs); +} +static int hgic_iwpriv_set_xosc(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int val = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_xosc(ctrl, ifidx, val); +} +static int hgic_iwpriv_set_freq_cali_period(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int val = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_freq_cali_period(ctrl, ifidx, val); +} +static int hgic_iwpriv_set_customer_dvrdata(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + return hgic_fwctrl_set_bytes(ctrl, ifidx, get_unaligned_le16(data), data + 2, count - 2); +} +static int hgic_iwpriv_set_max_tx_delay(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int val = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_max_tx_delay(ctrl, ifidx, val); +} +static int hgic_iwpriv_set_heartbeat_int(struct hgic_fwctrl *ctrl, u8 ifidx, char *data, u32 count) +{ + int val = simple_strtol(data, 0, 10); + return hgic_fwctrl_set_heartbeat_int(ctrl, ifidx, val); +} + +static struct fwctrl_cfgset hgpriv_sets[] = { + {"country_region", hgic_iwpriv_set_countryregion}, + {"ssid", hgic_iwpriv_set_ssid}, + {"bssid", hgic_iwpriv_set_bssid}, + {"channel", hgic_iwpriv_set_channel}, + {"rts_threshold", hgic_iwpriv_set_rts_threshold}, + {"frag_threshold", hgic_iwpriv_set_frag_threshold}, + {"key_mgmt", hgic_iwpriv_set_key_mgmt}, + {"wpa_psk", hgic_iwpriv_set_wpa_psk}, + {"bssid_filter", hgic_iwpriv_set_bssid_filter}, + {"freq_range", hgic_iwpriv_set_freq_range}, + {"bss_bw", hgic_iwpriv_set_bss_bw}, + {"tx_bw", hgic_iwpriv_set_tx_bw}, + {"tx_mcs", hgic_iwpriv_set_tx_mcs}, + {"acs", hgic_iwpriv_set_acs}, + {"bgrssi", hgic_iwpriv_set_bgrssi}, + {"chan_list", hgic_iwpriv_set_chan_list}, + {"mode", hgic_iwpriv_set_mode}, + {"paired_stas", hgic_iwpriv_set_paired_stas}, + {"pairing", hgic_iwpriv_set_pairing}, + {"beacon_int", hgic_iwpriv_set_beacon_int}, + {"radio_onoff", hgic_iwpriv_set_radio_onoff}, + {"join_group", hgic_iwpriv_join_group}, + {"ether_type", hgic_iwpriv_set_ethertype}, + {"txpower", hgic_iwpriv_set_txpower}, + {"agg_cnt", hgic_iwpriv_set_aggcnt}, + {"ps_connect", hgic_iwpriv_set_ps_connect}, + {"bss_max_idle", hgic_iwpriv_set_bss_max_idle}, + {"wkio_mode", hgic_iwpriv_set_wkio_mode}, + {"loaddef", hgic_iwpriv_set_load_def}, + {"disassoc_sta", hgic_iwpriv_set_disassoc_sta}, + {"dtim_period", hgic_iwpriv_set_dtim_period}, + {"ps_mode", hgic_iwpriv_set_ps_mode}, + {"aplost_time", hgic_iwpriv_set_aplost_time}, + {"unpair", hgic_iwpriv_set_unpair}, + {"auto_chswitch", hgic_iwpriv_set_auto_chswitch}, + {"mcast_key", hgic_iwpriv_set_mcast_key}, + {"reassoc_wkhost", hgic_iwpriv_set_reassoc_wkhost}, + {"wakeup_io", hgic_iwpriv_set_wakeup_io}, + {"dbginfo", hgic_iwpriv_set_dbginfo_output}, + {"sysdbg", hgic_iwpriv_set_sysdbg}, + {"primary_chan", hgic_iwpriv_set_primary_chan}, + {"autosleep_time", hgic_iwpriv_set_autosleep_time}, + {"super_pwr", hgic_iwpriv_set_super_pwr}, + {"r_ssid", hgic_iwpriv_set_repeater_ssid}, + {"r_psk", hgic_iwpriv_set_repeater_psk}, + {"auto_save", hgic_iwpriv_set_auto_save}, + {"pair_autostop", hgic_iwpriv_set_pair_autostop}, + {"dcdc13", hgic_iwpriv_set_dcdc13v}, + {"acktmo", hgic_iwpriv_set_acktmo}, + {"pa_pwrctl_dis", hgic_iwpriv_set_pa_pwrctl_dis}, + {"dhcpc", hgic_iwpriv_set_dhcpc}, + {"wkdata_save", hgic_iwpriv_set_wkdata_save}, + {"mcast_txparam", hgic_iwpriv_set_mcast_txparam}, + {"reset_sta", hgic_iwpriv_set_resetsta}, + {"ant_auto", hgic_iwpriv_set_ant_auto}, + {"ant_sel", hgic_iwpriv_set_select_ant}, + {"wkhost_reason", hgic_iwpriv_set_wkhost_reasons}, + {"macfilter", hgic_iwpriv_set_mac_filter}, + {"atcmd", hgic_iwpriv_set_atcmd}, + {"roaming", hgic_iwpriv_set_roaming}, + {"ap_hide", hgic_iwpriv_set_ap_hide}, + {"max_txcnt", hgic_iwpriv_set_max_txcnt}, + {"assert_holdup", hgic_iwpriv_set_assert_holdup}, + {"ap_psmode", hgic_iwpriv_set_ap_psmode}, + {"dupfilter", hgic_iwpriv_set_dupfilter_en}, + {"dis_1v1m2u", hgic_iwpriv_set_dis_1v1m2u}, + {"dis_psconnect", hgic_iwpriv_set_dis_psconnect}, + {"reset", hgic_iwpriv_reset}, + {"heartbeat", hgic_iwpriv_set_heartbeat}, + {"heartbeat_resp", hgic_iwpriv_set_heartbeat_resp}, + {"wakeup_data", hgic_iwpriv_set_wakeup_data}, + {"wakeup", hgic_iwpriv_wakeup_sta}, + {"custmgmt", hgic_iwpriv_send_custmgmt}, + {"mgmtframe", hgic_iwpriv_send_mgmtframe}, + {"wkdata_mask", hgic_iwpriv_set_wkdata_mask}, + {"driverdata", hgic_iwpriv_set_driverdata}, + {"freqinfo", hgic_iwpriv_set_freqinfo}, + {"blenc", hgic_iwpriv_set_blenc}, + {"sleep", hgic_iwpriv_enter_sleep}, + {"hwscan", hgic_iwpriv_set_hwscan}, + {"user_edca", hgic_iwpriv_set_user_edca}, + {"fix_txrate", hgic_iwpriv_set_fix_txrate}, + {"nav_max", hgic_iwpriv_set_nav_max}, + {"clr_nav", hgic_iwpriv_clear_nav}, + {"cca_param", hgic_iwpriv_set_cca_param}, + {"tx_modgain", hgic_iwpriv_set_tx_modulation_gain}, + {"rts_duration", hgic_iwpriv_set_rts_duration}, + {"disable_print", hgic_iwpriv_set_disable_print}, + {"conn_paironly", hgic_iwpriv_set_conn_paironly}, + {"diffcust_conn", hgic_iwpriv_set_diffcust_conn}, + {"wait_psmode", hgic_iwpriv_set_wait_psmode}, + {"standby", hgic_iwpriv_set_standby}, + {"ap_chansw", hgic_iwpriv_set_ap_chan_switch}, + {"cca_ce", hgic_iwpriv_set_cca_for_ce}, + {"rtc", hgic_iwpriv_set_rtc}, + {"apep_padding", hgic_iwpriv_set_apep_padding}, + {"watchdog", hgic_iwpriv_set_watchdog}, + {"retry_fallback_cnt", hgic_iwpriv_set_retry_fallback_cnt}, + {"fallback_mcs", hgic_iwpriv_set_fallback_mcs}, + {"xosc", hgic_iwpriv_set_xosc}, + {"freq_cali_period", hgic_iwpriv_set_freq_cali_period}, + {"cust_drvdata", hgic_iwpriv_set_customer_dvrdata}, + {"max_txdelay", hgic_iwpriv_set_max_tx_delay}, + {"heartbeat_int", hgic_iwpriv_set_heartbeat_int}, + {NULL,} +}; + +int hgic_iwpriv_set_proc(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int ret = -ENOTSUPP; + char *ptr; + struct fwctrl_cfgset *set = NULL; + char *buff = kmalloc(wrqin->u.data.length + 1, GFP_KERNEL); + + if (buff == NULL) { + hgic_err("kmalloc fail\r\n"); + return -ENOMEM; + } + + if (hgic_copyfrom_iwreq(wrqin, buff, wrqin->u.data.length + 1) == 0) { + ptr = strchr(buff, '='); + if (ptr) { + *ptr++ = 0; + for (set = hgpriv_sets; set->name; set++) { + if (strcmp(buff, set->name) == 0) { + ret = set->set(ctrl, ifidx, ptr, wrqin->u.data.length - (ptr - buff)); + break; + } + } + } else { + hgic_err("invalid set cmd [%s]\r\n", buff); + } + } else { + hgic_err("copy_from_user fail\r\n"); + } + + kfree(buff); + return ret; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// +static int hgic_iwpriv_get_scan_list(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int ret = 0; + int i = 0; + int count = 0; + int len = 0; + struct hgic_bss_info *bss = NULL; + char *buf = kzalloc(1024, GFP_ATOMIC); + char *print_buf = kzalloc(4096, GFP_ATOMIC); + + if (buf == NULL || print_buf == NULL) { + if (buf) { kfree(buf); } + if (print_buf) { kfree(print_buf); } + return -ENOMEM; + } + + ret = hgic_fwctrl_get_scan_list(ctrl, ifidx, buf, 1024); + if (ret > 0) { + bss = (struct hgic_bss_info *)buf; + count = ret / sizeof(struct hgic_bss_info); + len += sprintf(print_buf + len, "\r\nBSSID \tSSID \tEncryption\tFrequence\tSignal\n"); + for (i = 0; i < count; i++) { + len += sprintf(print_buf + len, "%pM\t%s\t%10s\t%10d\t%d\n", + bss[i].bssid, bss[i].ssid, + bss[i].encrypt ? (bss[i].encrypt == 1 ? "WPA" : "WPA2") : "NONE", + bss[i].freq, bss[i].signal); + } + wrqin->u.data.length = (u16)len; + } else { + len = 2; + } + hgic_copyto_iwreq(wrqin, print_buf, len); + kfree(buf); + kfree(print_buf); + return (0); +} + +static int hgic_iwpriv_get_sta_list(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int count = 0; + int len = 0; + int format = 0; + char *ptr; + char *buf = kzalloc(2048, GFP_ATOMIC); + char *print_buf = kzalloc(4096, GFP_ATOMIC); + struct hgic_sta_info *sta = (struct hgic_sta_info *)buf; + + if (buf == NULL || print_buf == NULL) { + if (buf) { kfree(buf); } + if (print_buf) { kfree(print_buf); } + return -ENOMEM; + } + + hgic_copyfrom_iwreq(wrqin, buf, 8); + ptr = strchr(buf, '='); + if (ptr) { + format = simple_strtol(ptr + 1, 0, 10); + } + + count = hgic_fwctrl_get_sta_list(ctrl, ifidx, (struct hgic_sta_info *)buf, (2048 / sizeof(struct hgic_sta_info))); + if (format == 1) { + hgic_copyto_iwreq(wrqin, buf, count * sizeof(struct hgic_sta_info)); + } else { + if (count > 0) { + len += sprintf(print_buf, "%d sta:\r\n", count); + while (count-- > 0) { + len += sprintf(print_buf + len, "aid:%d, %pM, ps:%d, rssi:%d, evm:%d, tx_snr:%d, rx_snr:%d\r\n", + sta->aid, sta->addr, sta->ps, (s8)sta->rssi, (s8)sta->evm, (s8)sta->tx_snr, (s8)sta->rx_snr); + sta++; + } + } + hgic_copyto_iwreq(wrqin, print_buf, len); + } + + kfree(buf); + kfree(print_buf); + return (0); +} +static int hgic_iwpriv_get_mode(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int len = 0; + char mode[13]; + len = hgic_fwctrl_get_mode(ctrl, ifidx, mode, 12); + hgic_copyto_iwreq(wrqin, mode, len); + return (0); +} +static int hgic_iwpriv_get_ssid(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int len = 0; + char ssid[33]; + len = hgic_fwctrl_get_ssid(ctrl, ifidx, ssid, 32); + hgic_copyto_iwreq(wrqin, ssid, len); + return (0); +} +static int hgic_iwpriv_get_bssid(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char buf[24]; + char bssid[7]; + + memset(buf, 0, sizeof(buf)); + memset(bssid, 0, sizeof(bssid)); + if (hgic_fwctrl_get_bssid(ctrl, ifidx, bssid, 7) > 0) { + sprintf(buf, "%pM,%d", bssid, bssid[6]); + } + hgic_copyto_iwreq(wrqin, buf, strlen(buf)); + return (0); +} + +static int hgic_iwpriv_get_wpa_psk(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int len = 0; + char *buf = kzalloc(80, GFP_ATOMIC); + + if (buf == NULL) { + return -ENOMEM; + } + len = hgic_fwctrl_get_wpapsk(ctrl, ifidx, buf, 64); + hgic_copyto_iwreq(wrqin, buf, len); + kfree(buf); + return (0); +} + +static int hgic_iwpriv_get_txpower(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[4]; + int txpower = 0; + txpower = hgic_fwctrl_get_txpower(ctrl, ifidx); + sprintf(str, "%d", txpower); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_bss_bw(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[4]; + int bss_bw = 0; + bss_bw = hgic_fwctrl_get_bss_bw(ctrl, ifidx); + sprintf(str, "%d", bss_bw); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_aggcnt(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[32]; + int ret = 0; + u8 agg[2]; + + memset(agg, 0, sizeof(agg)); + ret = hgic_fwctrl_get_agg_cnt(ctrl, ifidx, agg, 2); + if (ret == 0xff) { + sprintf(str, "tx:%d,rx:%d", agg[0], agg[1]); + } else { + sprintf(str, "tx:%d,rx:0", ret); + } + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_chan_list(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int cnt = 0, i = 0; + int len = 0; + u16 chan_list[16]; + char *buf = kzalloc(128, GFP_KERNEL); + + if (buf) { + cnt = hgic_fwctrl_get_chan_list(ctrl, ifidx, chan_list, 16); + for (i = 0; i < cnt; i++) { + len += sprintf(buf + len, "%d,", chan_list[i]); + } + hgic_copyto_iwreq(wrqin, buf, len - 1); + kfree(buf); + } + return (0); +} + +static int hgic_iwpriv_get_freq_range(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[32] = {0}; + int ret; + u32 vals[3]; + + ret = hgic_fwctrl_get_freq_range(ctrl, ifidx, &vals[0], &vals[1], &vals[2]); + if (ret) { + sprintf(str, "%d,%d,%d", vals[0], vals[1], vals[2]); + } + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_key_mgmt(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int len = 0; + char str[32]; + len = hgic_fwctrl_get_key_mgmt(ctrl, ifidx, str, 32); + hgic_copyto_iwreq(wrqin, str, len); + return (0); +} + +static int hgic_iwpriv_get_battery_level(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[4]; + int val = 0; + + val = hgic_fwctrl_get_battery_level(ctrl, ifidx); + sprintf(str, "%d", val); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_module_type(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + u16 type = 0; + char str[12]; + + type = (u16)hgic_fwctrl_get_module_type(ctrl, ifidx); + if (type) { + sprintf(str, "%d", type); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + } + return (0); +} + +static int hgic_iwpriv_get_disassoc_reason(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int reason = 0; + + reason = hgic_fwctrl_get_disassoc_reason(ctrl, ifidx); + sprintf(str, "%d", reason); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_ant_sel(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int ant = 0; + + ant = hgic_fwctrl_get_ant_sel(ctrl, ifidx); + sprintf(str, "%d", ant); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_wkreason(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int reason = 0; + reason = hgic_fwctrl_get_wkreason(ctrl, ifidx); + sprintf(str, "%d", reason); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_wkdata_buff(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int ret; + char *buff = kmalloc(4096, GFP_KERNEL); + if (buff) { + ret = hgic_fwctrl_get_wkdata_buff(ctrl, ifidx, buff, 4096); + hgic_copyto_iwreq(wrqin, buff, ret); + kfree(buff); + } + return (0); +} + +static int hgic_iwpriv_get_temperature(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int temp = hgic_fwctrl_get_temperature(ctrl); + sprintf(str, "%d", temp); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_conn_state(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int temp = hgic_fwctrl_get_conn_state(ctrl, ifidx); + sprintf(str, "%d", temp); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_sta_count(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int temp = hgic_fwctrl_get_sta_count(ctrl, ifidx); + sprintf(str, "%d", temp); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_txq_param(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int ret = -1; + struct hgic_txq_param param[4]; + ret = hgic_fwctrl_get_txq_param(ctrl, ifidx, param); + if (ret == sizeof(param)) { + //printk("txq0: %d,%d,%d,%d\r\n", param[0].aifs, param[0].cw_min, param[0].cw_max, param[0].txop); + //printk("txq1: %d,%d,%d,%d\r\n", param[1].aifs, param[1].cw_min, param[1].cw_max, param[1].txop); + //printk("txq2: %d,%d,%d,%d\r\n", param[2].aifs, param[2].cw_min, param[2].cw_max, param[2].txop); + //printk("txq3: %d,%d,%d,%d\r\n", param[3].aifs, param[3].cw_min, param[3].cw_max, param[3].txop); + hgic_copyto_iwreq(wrqin, (char *)param, sizeof(param)); + } + return (ret == sizeof(param)) ? 0 : ret; +} + +static int hgic_iwpriv_get_nav(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int temp = hgic_fwctrl_get_nav(ctrl, ifidx); + sprintf(str, "%d", temp); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_rtc(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + u32 rtc = 0; + hgic_fwctrl_get_rtc(ctrl, ifidx, (u8 *)&rtc); + sprintf(str, "%u", rtc); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_bgrssi(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int ret; + char buff[64]; + char *ptr; + s8 resp[3] = { 0, 0, 0}; + + ret = hgic_copyfrom_iwreq(wrqin, buff, 64); + ptr = strchr(buff, '='); + if(ptr == NULL || ret) + return -EINVAL; + + ret = simple_strtoul(ptr + 1, 0, 10); + ret = hgic_fwctrl_get_bgrssi(ctrl, ifidx, ret, resp); + if (ret == 3) { + sprintf(buff, "%d,%d,%d", resp[0], resp[1], resp[2]); + hgic_copyto_iwreq(wrqin, buff, strlen(buff)); + } + return (0); +} + +static int hgic_iwpriv_get_center_freq(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int temp = hgic_fwctrl_get_center_freq(ctrl, ifidx); + sprintf(str, "%d", temp); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_acs_result(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int cnt = 0; + struct hgic_acs_result *result = kzalloc(32 * sizeof(struct hgic_acs_result), GFP_KERNEL); + if (result) { + cnt = hgic_fwctrl_get_acs_result(ctrl, ifidx, result, 32); + hgic_copyto_iwreq(wrqin, (char *)result, cnt); + kfree(result); + } + return (0); +} + +static int hgic_iwpriv_get_reason_code(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int temp = hgic_fwctrl_get_reason_code(ctrl, ifidx); + sprintf(str, "%d", temp); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static int hgic_iwpriv_get_status_code(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int temp = hgic_fwctrl_get_status_code(ctrl, ifidx); + sprintf(str, "%d", temp); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} +static int hgic_iwpriv_get_dhcpc_result(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + u32 result[6]; + int ret = hgic_fwctrl_get_dhcpc_result(ctrl, ifidx, (u8 *)result, sizeof(result)); + if (ret == 24) { + hgic_copyto_iwreq(wrqin, (char *)result, sizeof(result)); + return (0); + } + return ret; +} +static int hgic_iwpriv_get_xosc(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int temp = hgic_fwctrl_get_xosc(ctrl, ifidx); + sprintf(str, "%d", temp); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} +static int hgic_iwpriv_get_freq_offset(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int ret; + char buff[64]; + char *ptr; + char addr[6]; + + ret = hgic_copyfrom_iwreq(wrqin, buff, 64); + ptr = strchr(buff, '='); + if (ptr == NULL || ret) { + return -EINVAL; + } + + hgic_pick_macaddr(ptr + 1, addr); + ret = hgic_fwctrl_get_freq_offset(ctrl, ifidx, addr); + sprintf(buff, "%d", ret); + hgic_copyto_iwreq(wrqin, buff, strlen(buff)); + return (0); +} +static int hgic_iwpriv_get_fwinfo(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + hgic_copyto_iwreq(wrqin, (char *)ctrl->fwinfo, sizeof(struct hgic_fw_info)); + return (0); +} +static int hgic_iwpriv_get_sta_info(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + int ret; + char *ptr; + char buff[64]; + char addr[6]; + char format = 0; + struct hgic_sta_info stainfo; + char *print_buf = kzalloc(512, GFP_ATOMIC); + + if (print_buf == NULL) { + return -ENOMEM; + } + + ret = hgic_copyfrom_iwreq(wrqin, buff, 64); + ptr = strchr(buff, '='); + if (ptr == NULL || ret) { + kfree(print_buf); + return -EINVAL; + } + + hgic_pick_macaddr(ptr + 1, addr); + ptr = strchr(ptr, ','); + if (ptr) { + format = simple_strtol(ptr + 1, 0, 10); + } + + ret = hgic_fwctrl_get_sta_info(ctrl, ifidx, addr, &stainfo); + if (format == 1) { + hgic_copyto_iwreq(wrqin, (char *)&stainfo, ret); + } else { + if (ret > 0) { + ret = sprintf(print_buf, "aid:%d, %pM, ps:%d, rssi:%d, evm:%d, tx_snr:%d, rx_snr:%d\r\n", + stainfo.aid, stainfo.addr, stainfo.ps, (s8)stainfo.rssi, + (s8)stainfo.evm, (s8)stainfo.tx_snr, (s8)stainfo.rx_snr); + } + hgic_copyto_iwreq(wrqin, print_buf, ret); + } + kfree(print_buf); + return (0); +} +static int hgic_iwpriv_get_signal(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + char str[12]; + int signal = hgic_fwctrl_get_signal(ctrl, ifidx); + sprintf(str, "%d", signal); + hgic_copyto_iwreq(wrqin, str, strlen(str)); + return (0); +} + +static struct fwctrl_cfgget hgpriv_gets[] = { + {"mode", hgic_iwpriv_get_mode}, + {"sta_list", hgic_iwpriv_get_sta_list}, + {"scan_list", hgic_iwpriv_get_scan_list}, + {"ssid", hgic_iwpriv_get_ssid}, + {"bssid", hgic_iwpriv_get_bssid}, + {"wpa_psk", hgic_iwpriv_get_wpa_psk}, + {"txpower", hgic_iwpriv_get_txpower}, + {"agg_cnt", hgic_iwpriv_get_aggcnt}, + {"bss_bw", hgic_iwpriv_get_bss_bw}, + {"chan_list", hgic_iwpriv_get_chan_list}, + {"freq_range", hgic_iwpriv_get_freq_range}, + {"key_mgmt", hgic_iwpriv_get_key_mgmt}, + {"battery_level", hgic_iwpriv_get_battery_level}, + {"module_type", hgic_iwpriv_get_module_type}, + {"disassoc_reason", hgic_iwpriv_get_disassoc_reason}, + {"ant_sel", hgic_iwpriv_get_ant_sel}, + {"wkreason", hgic_iwpriv_get_wkreason}, + {"wkdata_buff", hgic_iwpriv_get_wkdata_buff}, + {"temperature", hgic_iwpriv_get_temperature}, + {"conn_state", hgic_iwpriv_get_conn_state}, + {"sta_count", hgic_iwpriv_get_sta_count}, + {"txq_param", hgic_iwpriv_get_txq_param}, + {"nav", hgic_iwpriv_get_nav}, + {"rtc", hgic_iwpriv_get_rtc}, + {"bgrssi", hgic_iwpriv_get_bgrssi}, + {"center_freq", hgic_iwpriv_get_center_freq}, + {"acs_result", hgic_iwpriv_get_acs_result}, + {"reason_code", hgic_iwpriv_get_reason_code}, + {"status_code", hgic_iwpriv_get_status_code}, + {"dhcpc_result", hgic_iwpriv_get_dhcpc_result}, + {"xosc", hgic_iwpriv_get_xosc}, + {"freq_offset", hgic_iwpriv_get_freq_offset}, + {"fwinfo", hgic_iwpriv_get_fwinfo}, + {"stainfo", hgic_iwpriv_get_sta_info}, + {"signal", hgic_iwpriv_get_signal}, + {NULL,} +}; + +int hgic_iwpriv_get_proc(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin) +{ + struct fwctrl_cfgget *get = NULL; + char *ptr; + char field[130]; + + memset(field, 0, sizeof(field)); + if (hgic_copyfrom_iwreq(wrqin, field, 128) == 0) { + ptr = strchr(field, '='); + if(ptr) *ptr = 0; + for (get = hgpriv_gets; get->name; get++) { + if (strcmp(field, get->name) == 0) { + return get->get(ctrl, ifidx, wrqin); + } + } + hgic_err("not support: [%s]\r\n", field); + } else { + hgic_err("copy_from_user fail\r\n"); + } + return -ENOTSUPP; +} + +int hgic_iwpriv_dump(struct hgic_fwctrl *ctrl, struct iwreq *wrqin) +{ + int len = 0; + struct fwctrl_cfgget *get = NULL; + struct fwctrl_cfgset *set = NULL; + + u8 *buf = kmalloc(4096, GFP_KERNEL); + if (buf) { + len += snprintf(buf + len, 4096 - len, "\r\nset:\r\n"); + for (set = hgpriv_sets; set->name; set++) { + len += snprintf(buf + len, 4096 - len, " %s\r\n", set->name); + } + len += snprintf(buf + len, 4096 - len, "get:\r\n"); + for (get = hgpriv_gets; get->name; get++) { + len += snprintf(buf + len, 4096 - len, " %s\r\n", get->name); + } + hgic_copyto_iwreq(wrqin, buf, len); + kfree(buf); + } + return len; +} + diff --git a/utils/iwpriv.h b/utils/iwpriv.h new file mode 100644 index 0000000..432d3a3 --- /dev/null +++ b/utils/iwpriv.h @@ -0,0 +1,11 @@ + +#ifndef _HGICF_CFG_H_ +#define _HGICF_CFG_H_ +#ifndef __RTOS__ +int hgic_iwpriv_set_proc(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin); +int hgic_iwpriv_get_proc(struct hgic_fwctrl *ctrl, u8 ifidx, struct iwreq *wrqin); +int hgic_iwpriv_dump(struct hgic_fwctrl *ctrl, struct iwreq *wrqin); + +#endif +#endif + diff --git a/utils/ota.c b/utils/ota.c index 54e3372..73333e1 100644 --- a/utils/ota.c +++ b/utils/ota.c @@ -42,14 +42,14 @@ static struct sk_buff *hgic_ota_send_packet_tmo(struct hgic_ota *ota, struct sk_ struct hgic_cmd_response resp; struct hgic_hdr *hdr = NULL; + resp.cookie = hgic_ctrl_cookie(ota->ctrl); + memset(&resp, 0, sizeof(resp)); hdr = (struct hgic_hdr *)skb_push(skb, sizeof(struct hgic_hdr)); - hdr->magic = HGIC_HDR_TX_MAGIC; + hdr->magic = cpu_to_le16(HGIC_HDR_TX_MAGIC); + hdr->length = cpu_to_le16(skb->len); + hdr->cookie = cpu_to_le16(resp.cookie); hdr->type = HGIC_HDR_TYPE_OTA; hdr->ifidx = HGIC_WDEV_ID_STA; - hdr->length = skb->len; - hdr->cookie = hgic_ctrl_cookie(ota->ctrl); - memset(&resp, 0, sizeof(resp)); - resp.cookie = hdr->cookie; hgic_fwctrl_send_data(ota->ctrl, skb, &resp, tmo); return resp.skb; } @@ -89,7 +89,7 @@ s32 hgic_ota_init(struct hgic_ota *ota, struct hgic_fwctrl *ctrl, struct hgic_fw static s32 hgic_ota_fill_hdr(struct hgic_ota *ota, struct sk_buff *skb, u32 offset) { struct hgic_ota_hdr *hdr = NULL; - u32 payload_len = 0; + u16 payload_len = 0; if (ota == NULL || skb == NULL || skb->len > ota->frag_size) { hgic_err("Input para error!\r\n"); @@ -103,12 +103,12 @@ static s32 hgic_ota_fill_hdr(struct hgic_ota *ota, struct sk_buff *skb, u32 offs hdr = (struct hgic_ota_hdr *)skb_push(skb, sizeof(struct hgic_ota_hdr)); memset(hdr, 0, sizeof(struct hgic_ota_hdr)); - hdr->chipid = ota->ori_fw_info->chip_id; - hdr->len = payload_len; - hdr->tot_len = ota->fw_len; - hdr->off = offset; - hdr->version = ota->ori_fw_info->version; - hdr->checksum = hgic_ota_check_sum(hdr->data, hdr->len); + hdr->chipid = cpu_to_le16(ota->ori_fw_info->chip_id); + hdr->len = cpu_to_le16(payload_len); + hdr->tot_len = cpu_to_le32(ota->fw_len); + hdr->off = cpu_to_le32(offset); + hdr->version = cpu_to_le32(ota->ori_fw_info->version); + hdr->checksum = cpu_to_le16(hgic_ota_check_sum(hdr->data, hdr->len)); return 0; } @@ -271,8 +271,8 @@ s32 hgic_ota_send_fw(struct hgic_ota *ota, char *fw_name, u32 tmo) skb_pull(resp, sizeof(struct hgic_hdr)); hdr = (struct hgic_ota_hdr *)resp->data; if (hdr->err_code) { - hgic_err("Responce Error:Error code:%d\n", hdr->err_code); - ret = hdr->err_code; + hgic_err("Responce Error:Error code:%d\n", le16_to_cpu(hdr->err_code)); + ret = le16_to_cpu(hdr->err_code); goto __failed; } else { hgic_dbg("OTA write to flash success!\n"); diff --git a/utils/utils.c b/utils/utils.c index e99ddb9..eca6b86 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -21,22 +21,12 @@ #define STATBUF_SIZE (64*1024) #define SAFE_DIV(a, b) (((b) == 0) ? 0 : ((a) / (b))) -int hgic_skip_padding(struct sk_buff *skb) +int hgic_skip_padding(u8* data) { int i = 0; - - for (i = 0; i < 3 && skb->data[i] == 0xFF; i++); - if (i) { - if (skb->len > 0) { - skb_pull(skb, i); - } else { - skb->data += i; - skb->tail += i; - } - } + for (i = 0; i < 3 && data[i] == 0xFF; i++); return i; } -EXPORT_SYMBOL(hgic_skip_padding); #if 0 int hgic_aligned_padding(struct sk_buff *skb) @@ -55,7 +45,6 @@ int hgic_aligned_padding(struct sk_buff *skb) } return count; } -EXPORT_SYMBOL(hgic_aligned_padding); #endif void hgic_print_hex(char *buf, int len) @@ -69,7 +58,6 @@ void hgic_print_hex(char *buf, int len) } printk("\r\n\r\n"); } -EXPORT_SYMBOL(hgic_print_hex); int hgic_config_read_int(char *conf, char *field) { @@ -79,7 +67,6 @@ int hgic_config_read_int(char *conf, char *field) } return 0; } -EXPORT_SYMBOL(hgic_config_read_int); int hgic_config_read_str(char *conf, char *field, char *str, int size) { @@ -94,7 +81,6 @@ int hgic_config_read_str(char *conf, char *field, char *str, int size) } return -1; } -EXPORT_SYMBOL(hgic_config_read_str); int hgic_config_read_u32_array(char *conf, char *field, u32 *arr, int count) { @@ -124,7 +110,6 @@ int hgic_config_read_u32_array(char *conf, char *field, u32 *arr, int count) return cnt; } -EXPORT_SYMBOL(hgic_config_read_u32_array); int hgic_config_read_u16_array(char *conf, char *field, u16 *arr, int count) { @@ -154,10 +139,10 @@ int hgic_config_read_u16_array(char *conf, char *field, u16 *arr, int count) return cnt; } -EXPORT_SYMBOL(hgic_config_read_u16_array); void hgic_clear_queue(struct sk_buff_head *q) { +#if 0 ulong flags = 0; struct sk_buff *skb = NULL; struct sk_buff *tmp = NULL; @@ -170,6 +155,13 @@ void hgic_clear_queue(struct sk_buff_head *q) } } spin_unlock_irqrestore(&q->lock, flags); +#else + struct sk_buff *skb = skb_dequeue(q); + while(skb){ + kfree_skb(skb); + skb = skb_dequeue(q); + } +#endif } int hgic_hex2num(char c) @@ -183,47 +175,48 @@ int hgic_hex2num(char c) if (c >= 'A' && c <= 'F') { return c - 'A' + 10; } - return -1; + return 0; } - int hgic_hex2byte(const char *hex) { int a, b; a = hgic_hex2num(*hex++); - if (a < 0) { - return -1; - } b = hgic_hex2num(*hex++); - if (b < 0) { - return -1; - } return (a << 4) | b; } int hgic_pick_macaddr(char *mac_str, u8 *addr) { - int i = 0; - int val = 0; - const char *ptr = (const char *)mac_str; + int i = 0; + char tmp[20]; + char *ptr = tmp; + char *p = tmp; memset(addr, 0, 6); - while (ptr && i < 6 && strlen(mac_str) >= 17) { - if (i < 5 && ptr[2] != ':') { break; } - val = hgic_hex2byte(ptr); - if (val < 0) { break; } - addr[i++] = (u8)val; - ptr += 3; + memcpy(tmp, mac_str, 17); + while (ptr && *ptr && i < 6) { + p = strchr(ptr, ':'); + if(p) *p++ = 0; + addr[i++] = hgic_hex2byte(ptr); + ptr = p; } return (i == 6); } +void hgic_strip_tail(char *str, u32 len) +{ + u32 i = len - 1; + while (str[i] == '\r' || str[i] == '\n') { + str[i--] = 0; + } +} #if defined(__RTOS__) && defined(HGIC_SMAC) int umac_config_read(const char *name, char *buff, int size) { int ret = 0; - struct umac_config *cfg = sys_get_umaccfg(); + struct hgics_config *cfg = sys_get_umaccfg(); struct net_device *ndev = net_device_get_by_name(name); if (ndev == NULL) { @@ -246,7 +239,7 @@ int umac_config_read(const char *name, char *buff, int size) int umac_config_write(const char *name, char *buff, int size) { int ret = 0; - struct umac_config *cfg = sys_get_umaccfg(); + struct hgics_config *cfg = sys_get_umaccfg(); struct net_device *ndev = net_device_get_by_name(name); PRINTF("write %s:\r\n%s\r\n", name, buff); diff --git a/utils/utils.h b/utils/utils.h index 9714d96..f2490f0 100644 --- a/utils/utils.h +++ b/utils/utils.h @@ -165,7 +165,7 @@ struct hgic_fwstat { }; char *hgic_fwstat_print(u8 *stat_buf); -int hgic_skip_padding(struct sk_buff *skb); +int hgic_skip_padding(u8 *data); int hgic_aligned_padding(struct sk_buff *skb); void hgic_print_hex(char *buf, int len); int hgic_config_read_u32_array(char *conf, char *field, u32 *arr, int count); @@ -174,6 +174,8 @@ int hgic_config_read_str(char *conf, char *field, char *str, int size); int hgic_config_read_int(char *conf, char *field); void hgic_clear_queue(struct sk_buff_head *q); int hgic_hex2num(char c); +void hgic_strip_tail(char *str, u32 len); + int hgic_hex2byte(const char *hex); int hgic_pick_macaddr(char *mac_str, u8 *addr); diff --git a/version.h b/version.h index c8226e5..8c3e3ca 100644 --- a/version.h +++ b/version.h @@ -1 +1 @@ -#define SVN_VERSION "14988" +#define SVN_VERSION "24338"

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 z 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 z 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