From 3800c225acbee2dfb32956ab89754c14b4c35401 Mon Sep 17 00:00:00 2001 From: Shen Mintao Date: Thu, 24 Jul 2025 11:20:36 +0800 Subject: [PATCH] feat: update new aic driver version --- aic.rules | 1 + drivers/aic8800/Makefile | 4 +- drivers/aic8800/aic8800_fdrv/.gitignore | 10 + drivers/aic8800/aic8800_fdrv/Makefile | 30 +- drivers/aic8800/aic8800_fdrv/aic_priv_cmd.c | 580 ++- drivers/aic8800/aic8800_fdrv/aic_priv_cmd.h | 31 + drivers/aic8800/aic8800_fdrv/aic_vendor.c | 11 + .../aic8800_fdrv/aicwf_compat_8800d80.c | 19 +- .../aic8800_fdrv/aicwf_compat_8800d80x2.c | 97 + .../aic8800_fdrv/aicwf_compat_8800d80x2.h | 9 + .../aic8800_fdrv/aicwf_compat_8800dc.c | 591 ++- .../aic8800_fdrv/aicwf_compat_8800dc.h | 16 +- drivers/aic8800/aic8800_fdrv/aicwf_debug.h | 1 + drivers/aic8800/aic8800_fdrv/aicwf_manager.c | 601 +++ drivers/aic8800/aic8800_fdrv/aicwf_manager.h | 146 + drivers/aic8800/aic8800_fdrv/aicwf_sdio.c | 13 +- drivers/aic8800/aic8800_fdrv/aicwf_steering.c | 217 + drivers/aic8800/aic8800_fdrv/aicwf_steering.h | 40 + drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.c | 35 +- drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.h | 19 - drivers/aic8800/aic8800_fdrv/aicwf_txrxif.c | 409 +- drivers/aic8800/aic8800_fdrv/aicwf_txrxif.h | 25 +- drivers/aic8800/aic8800_fdrv/aicwf_usb.c | 441 +- drivers/aic8800/aic8800_fdrv/aicwf_usb.h | 55 +- .../aic8800/aic8800_fdrv/aicwf_wext_linux.c | 21 +- drivers/aic8800/aic8800_fdrv/lmac_mac.h | 1 + drivers/aic8800/aic8800_fdrv/lmac_msg.h | 286 +- drivers/aic8800/aic8800_fdrv/reg_access.h | 2 +- drivers/aic8800/aic8800_fdrv/regdb.c | 4412 +++++++++-------- drivers/aic8800/aic8800_fdrv/rwnx_cmds.c | 71 +- drivers/aic8800/aic8800_fdrv/rwnx_compat.h | 2 + drivers/aic8800/aic8800_fdrv/rwnx_debugfs.c | 242 +- drivers/aic8800/aic8800_fdrv/rwnx_defs.h | 157 +- drivers/aic8800/aic8800_fdrv/rwnx_main.c | 943 +++- drivers/aic8800/aic8800_fdrv/rwnx_main.h | 39 + .../aic8800/aic8800_fdrv/rwnx_mod_params.c | 169 +- .../aic8800/aic8800_fdrv/rwnx_mod_params.h | 6 + drivers/aic8800/aic8800_fdrv/rwnx_msg_rx.c | 216 +- drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c | 1270 ++++- drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.h | 25 +- drivers/aic8800/aic8800_fdrv/rwnx_platform.c | 1374 +++-- drivers/aic8800/aic8800_fdrv/rwnx_platform.h | 38 +- drivers/aic8800/aic8800_fdrv/rwnx_radar.c | 154 +- drivers/aic8800/aic8800_fdrv/rwnx_radar.h | 28 +- drivers/aic8800/aic8800_fdrv/rwnx_rx.c | 1014 +++- drivers/aic8800/aic8800_fdrv/rwnx_rx.h | 10 +- drivers/aic8800/aic8800_fdrv/rwnx_strs.c | 2 + drivers/aic8800/aic8800_fdrv/rwnx_tx.c | 222 +- drivers/aic8800/aic8800_fdrv/rwnx_tx.h | 4 + .../aic8800/aic8800_fdrv/rwnx_version_gen.h | 2 +- drivers/aic8800/aic8800_fdrv/rwnx_wakelock.c | 92 + drivers/aic8800/aic8800_fdrv/rwnx_wakelock.h | 21 + drivers/aic8800/aic_load_fw/.gitignore | 11 + drivers/aic8800/aic_load_fw/Makefile | 8 +- .../aic8800/aic_load_fw/aic_compat_8800d80.c | 263 +- .../aic8800/aic_load_fw/aic_compat_8800d80.h | 2 +- .../aic_load_fw/aic_compat_8800d80x2.c | 767 +++ .../aic_load_fw/aic_compat_8800d80x2.h | 45 + drivers/aic8800/aic_load_fw/aic_txrxif.h | 2 +- drivers/aic8800/aic_load_fw/aicbluetooth.c | 155 +- .../aic8800/aic_load_fw/aicbluetooth_cmds.c | 6 +- .../aic8800/aic_load_fw/aicbluetooth_cmds.h | 7 + drivers/aic8800/aic_load_fw/aicwf_usb.c | 218 +- drivers/aic8800/aic_load_fw/aicwf_usb.h | 28 +- .../aic8800/aic_load_fw/rwnx_version_gen.h | 2 +- fw/aic8800D80/aic_powerlimit_8800d80.txt | 118 + fw/aic8800D80/aic_userconfig_8800d80.txt | 140 +- fw/aic8800D80/aic_userconfig_8800d80_u11.txt | 124 + .../aic_userconfig_8800d80_u11_cus.txt | 124 + .../aic_userconfig_8800d80_u11_pro.txt | 124 + fw/aic8800D80/fmacfw_8800d80_h_u02.bin | Bin 0 -> 351716 bytes fw/aic8800D80/fmacfw_8800d80_h_u02_ipc.bin | Bin 0 -> 346052 bytes fw/aic8800D80/fmacfw_8800d80_u02.bin | Bin 327620 -> 327620 bytes fw/aic8800D80/fmacfw_8800d80_u02_ipc.bin | Bin 326033 -> 345092 bytes fw/aic8800D80/fw_ble_scan_ad_filter.bin | Bin 328508 -> 370640 bytes fw/aic8800D80/fw_patch_8800d80_u02.bin | Bin 25300 -> 31044 bytes fw/aic8800D80/fw_patch_8800d80_u02_ext0.bin | Bin 0 -> 10956 bytes fw/aic8800D80/fw_patch_table_8800d80_u02.bin | Bin 984 -> 1240 bytes fw/aic8800D80/lmacfw_rf_8800d80_u02.bin | Bin 227839 -> 273306 bytes fw/aic8800DC/aic_powerlimit_8800dc.txt | 118 + fw/aic8800DC/aic_powerlimit_8800dw.txt | 118 + fw/aic8800DC/aic_userconfig_8800dc.txt | 62 + fw/aic8800DC/aic_userconfig_8800dw.txt | 62 + fw/aic8800DC/aic_userconfig_8800dw_u2.txt | 62 + fw/aic8800DC/aic_userconfig_8800dw_w311.txt | 62 + fw/aic8800DC/fmacfw_calib_8800dc_h_u02.bin | Bin 0 -> 32684 bytes fw/aic8800DC/fmacfw_calib_8800dc_u02.bin | Bin 0 -> 40428 bytes fw/aic8800DC/fmacfw_patch_8800dc_h_u02.bin | Bin 0 -> 26116 bytes fw/aic8800DC/fmacfw_patch_8800dc_ipc_u02.bin | Bin 0 -> 26984 bytes fw/aic8800DC/fmacfw_patch_8800dc_u02.bin | Bin 0 -> 23356 bytes .../fmacfw_patch_tbl_8800dc_h_u02.bin | Bin 0 -> 744 bytes .../fmacfw_patch_tbl_8800dc_ipc_u02.bin | Bin 0 -> 504 bytes fw/aic8800DC/fmacfw_patch_tbl_8800dc_u02.bin | Bin 0 -> 504 bytes fw/aic8800DC/fw_adid_8800dc_u02.bin | Bin 0 -> 1468 bytes fw/aic8800DC/fw_adid_8800dc_u02h.bin | Bin 0 -> 1476 bytes fw/aic8800DC/fw_patch_8800dc_u02.bin | Bin 0 -> 16592 bytes fw/aic8800DC/fw_patch_8800dc_u02_ext0.bin | Bin 0 -> 2892 bytes fw/aic8800DC/fw_patch_8800dc_u02h.bin | Bin 0 -> 15680 bytes fw/aic8800DC/fw_patch_table_8800dc_u02.bin | Bin 0 -> 960 bytes fw/aic8800DC/fw_patch_table_8800dc_u02h.bin | Bin 0 -> 568 bytes fw/aic8800DC/lmacfw_rf_8800dc.bin | Bin 0 -> 169706 bytes 101 files changed, 12814 insertions(+), 4038 deletions(-) create mode 100644 drivers/aic8800/aic8800_fdrv/.gitignore create mode 100644 drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80x2.c create mode 100644 drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80x2.h create mode 100644 drivers/aic8800/aic8800_fdrv/aicwf_manager.c create mode 100644 drivers/aic8800/aic8800_fdrv/aicwf_manager.h create mode 100644 drivers/aic8800/aic8800_fdrv/aicwf_steering.c create mode 100644 drivers/aic8800/aic8800_fdrv/aicwf_steering.h create mode 100644 drivers/aic8800/aic8800_fdrv/rwnx_wakelock.c create mode 100644 drivers/aic8800/aic8800_fdrv/rwnx_wakelock.h create mode 100644 drivers/aic8800/aic_load_fw/.gitignore create mode 100644 drivers/aic8800/aic_load_fw/aic_compat_8800d80x2.c create mode 100644 drivers/aic8800/aic_load_fw/aic_compat_8800d80x2.h create mode 100644 fw/aic8800D80/aic_powerlimit_8800d80.txt create mode 100644 fw/aic8800D80/aic_userconfig_8800d80_u11.txt create mode 100644 fw/aic8800D80/aic_userconfig_8800d80_u11_cus.txt create mode 100644 fw/aic8800D80/aic_userconfig_8800d80_u11_pro.txt create mode 100644 fw/aic8800D80/fmacfw_8800d80_h_u02.bin create mode 100644 fw/aic8800D80/fmacfw_8800d80_h_u02_ipc.bin create mode 100644 fw/aic8800D80/fw_patch_8800d80_u02_ext0.bin create mode 100644 fw/aic8800DC/aic_powerlimit_8800dc.txt create mode 100644 fw/aic8800DC/aic_powerlimit_8800dw.txt create mode 100644 fw/aic8800DC/aic_userconfig_8800dc.txt create mode 100644 fw/aic8800DC/aic_userconfig_8800dw.txt create mode 100644 fw/aic8800DC/aic_userconfig_8800dw_u2.txt create mode 100644 fw/aic8800DC/aic_userconfig_8800dw_w311.txt create mode 100644 fw/aic8800DC/fmacfw_calib_8800dc_h_u02.bin create mode 100644 fw/aic8800DC/fmacfw_calib_8800dc_u02.bin create mode 100644 fw/aic8800DC/fmacfw_patch_8800dc_h_u02.bin create mode 100644 fw/aic8800DC/fmacfw_patch_8800dc_ipc_u02.bin create mode 100644 fw/aic8800DC/fmacfw_patch_8800dc_u02.bin create mode 100644 fw/aic8800DC/fmacfw_patch_tbl_8800dc_h_u02.bin create mode 100644 fw/aic8800DC/fmacfw_patch_tbl_8800dc_ipc_u02.bin create mode 100644 fw/aic8800DC/fmacfw_patch_tbl_8800dc_u02.bin create mode 100644 fw/aic8800DC/fw_adid_8800dc_u02.bin create mode 100644 fw/aic8800DC/fw_adid_8800dc_u02h.bin create mode 100644 fw/aic8800DC/fw_patch_8800dc_u02.bin create mode 100644 fw/aic8800DC/fw_patch_8800dc_u02_ext0.bin create mode 100644 fw/aic8800DC/fw_patch_8800dc_u02h.bin create mode 100644 fw/aic8800DC/fw_patch_table_8800dc_u02.bin create mode 100644 fw/aic8800DC/fw_patch_table_8800dc_u02h.bin create mode 100644 fw/aic8800DC/lmacfw_rf_8800dc.bin diff --git a/aic.rules b/aic.rules index d6118e3..eefb478 100644 --- a/aic.rules +++ b/aic.rules @@ -1,2 +1,3 @@ KERNEL=="sd*", ATTRS{idVendor}=="a69c", ATTRS{idProduct}=="5721", SYMLINK+="aicudisk", RUN+="/usr/bin/eject /dev/%k" KERNEL=="sd*", ATTRS{idVendor}=="a69c", ATTRS{idProduct}=="5723", SYMLINK+="tendaudisk", RUN+="/usr/bin/eject /dev/%k" +KERNEL=="sd*", ATTRS{idVendor}=="a69c", ATTRS{idProduct}=="5725", SYMLINK+="tendaudiskv2", RUN+="/usr/bin/eject /dev/%k" diff --git a/drivers/aic8800/Makefile b/drivers/aic8800/Makefile index 9209115..71b2fad 100644 --- a/drivers/aic8800/Makefile +++ b/drivers/aic8800/Makefile @@ -6,7 +6,7 @@ obj-$(CONFIG_AIC8800_WLAN_SUPPORT) += aic8800_fdrv/ ########## config option ########## export CONFIG_USE_FW_REQUEST = n -export CONFIG_PREALLOC_RX_SKB = n +export CONFIG_PREALLOC_RX_SKB = y export CONFIG_PREALLOC_TXQ = y ################################### @@ -50,7 +50,7 @@ KDIR = /lib/modules/$(shell uname -r)/build PWD = $(shell pwd) KVER = $(shell uname -r) MODDESTDIR = /lib/modules/$(KVER)/kernel/drivers/net/wireless/aic8800 -SUBARCH = $(shell uname -m | sed -e s/i.86/i386/ -e s/armv.l/arm/ -e s/aarch64/arm64/) +SUBARCH = $(shell uname -m | sed -e s/i.86/i386/ -e s/armv.l/arm/ -e s/aarch64/arm64/ -e s/loongarch64/loongarch/ -e s/loong64/loongarch/) ARCH ?= $(SUBARCH) CROSS_COMPILE ?= endif diff --git a/drivers/aic8800/aic8800_fdrv/.gitignore b/drivers/aic8800/aic8800_fdrv/.gitignore new file mode 100644 index 0000000..c3c2d15 --- /dev/null +++ b/drivers/aic8800/aic8800_fdrv/.gitignore @@ -0,0 +1,10 @@ +*.o +*.ko +*.order +*.symvers +*.o.d +*.o.cmd +*.ko.cmd +*.mod +*.mod.c +*.mod.cmd diff --git a/drivers/aic8800/aic8800_fdrv/Makefile b/drivers/aic8800/aic8800_fdrv/Makefile index 935814f..edce2c6 100644 --- a/drivers/aic8800/aic8800_fdrv/Makefile +++ b/drivers/aic8800/aic8800_fdrv/Makefile @@ -82,6 +82,7 @@ CONFIG_BR_SUPPORT = n CONFIG_USB_MSG_OUT_EP = y CONFIG_USB_MSG_IN_EP = y CONFIG_USB_RX_REASSEMBLE = n +CONFIG_WOWLAN = n #DCDW support tx aggr, D80 support both CONFIG_USB_RX_AGGR = n @@ -109,18 +110,32 @@ CONFIG_PREALLOC_TXQ ?= y CONFIG_USE_WIRELESS_EXT = y CONFIG_DPD = y CONFIG_FORCE_DPD_CALIB = y +CONFIG_LOFT_CALIB = n CONFIG_GKI = n CONFIG_SCHED_SCAN = n CONFIG_TEMP_COMP = n CONFIG_POWER_LIMIT = n +CONFIG_EXT_FEM_8800DCDW = n # CONFIG_MCC = n for sta and p2p concurrent in same channel. CONFIG_MCC = y CONFIG_LOAD_BT_PATCH_IN_FDRV = n +CONFIG_DYNAMIC_PWR = n +CONFIG_DYNAMIC_PERPWR = n +CONFIG_BAND_STEERING = n + +#support D80X2 can write rf result to file +CONFIG_WRITE_FILE_D80X2 = n ifneq ($(CONFIG_WIRELESS_EXT), y) CONFIG_USE_WIRELESS_EXT = n endif +ifeq ($(CONFIG_EXT_FEM_8800DCDW), y) +CONFIG_DPD = n +CONFIG_FORCE_DPD_CALIB = n +CONFIG_LOFT_CALIB = y +endif + # Support of MU-MIMO transmission (need FW support) ifeq ($(CONFIG_RWNX_BFMER), y) CONFIG_RWNX_MUMIMO_TX ?= n @@ -148,6 +163,7 @@ BR_NAME = br0 obj-$(CONFIG_AIC8800_WLAN_SUPPORT) := $(MODULE_NAME).o $(MODULE_NAME)-y := \ + rwnx_wakelock.o \ rwnx_msg_tx.o \ rwnx_msg_rx.o \ rwnx_utils.o \ @@ -172,8 +188,11 @@ $(MODULE_NAME)-y := \ aic_vendor.o \ aic_priv_cmd.o \ aicwf_compat_8800dc.o \ - aicwf_compat_8800d80.o + aicwf_compat_8800d80.o \ + aicwf_compat_8800d80x2.o +$(MODULE_NAME)-$(CONFIG_BAND_STEERING) += aicwf_manager.o \ + aicwf_steering.o $(MODULE_NAME)-$(CONFIG_BR_SUPPORT) += aic_br_ext.o $(MODULE_NAME)-$(CONFIG_RWNX_RADAR) += rwnx_radar.o $(MODULE_NAME)-$(CONFIG_DEBUG_FS) += rwnx_debugfs.o @@ -241,6 +260,10 @@ ccflags-$(CONFIG_RWNX_MUMIMO_TX) += -DCONFIG_RWNX_MUMIMO_TX ccflags-$(CONFIG_RFTEST) += -DCONFIG_RFTEST ccflags-$(CONFIG_MCC) += -DCONFIG_MCC ccflags-$(CONFIG_LOAD_BT_PATCH_IN_FDRV) += -DCONFIG_LOAD_BT_PATCH_IN_FDRV +ccflags-$(CONFIG_DYNAMIC_PWR) += -DCONFIG_DYNAMIC_PWR +ccflags-$(CONFIG_DYNAMIC_PERPWR) += -DCONFIG_DYNAMIC_PERPWR +ccflags-$(CONFIG_BAND_STEERING) += -DCONFIG_BAND_STEERING +ccflags-$(CONFIG_WRITE_FILE_D80X2) += -DRF_WRITE_FILE ifeq ($(CONFIG_SDIO_SUPPORT), y) ccflags-y += -DAICWF_SDIO_SUPPORT @@ -274,7 +297,7 @@ endif ccflags-$(CONFIG_RX_REORDER) += -DAICWF_RX_REORDER ccflags-$(CONFIG_ARP_OFFLOAD) += -DAICWF_ARP_OFFLOAD ccflags-$(CONFIG_USE_5G) += -DUSE_5G -ccflags-$(CONFIG_RADAR_OR_IR_DETECT) += -DRADAR_OR_IR_DETECT +ccflags-$(CONFIG_RADAR_OR_IR_DETECT) += -DCONFIG_RADAR_OR_IR_DETECT ccflags-$(CONFIG_DOWNLOAD_FW) += -DCONFIG_DOWNLOAD_FW ccflags-$(CONFIG_USB_BT) += -DCONFIG_USB_BT ccflags-$(CONFIG_ALIGN_8BYTES) += -DCONFIG_ALIGN_8BYTES @@ -310,11 +333,14 @@ ccflags-$(CONFIG_PREALLOC_TXQ) += -DCONFIG_PREALLOC_TXQ ccflags-$(CONFIG_USE_WIRELESS_EXT) += -DCONFIG_USE_WIRELESS_EXT ccflags-$(CONFIG_DPD) += -DCONFIG_DPD ccflags-$(CONFIG_FORCE_DPD_CALIB) += -DCONFIG_FORCE_DPD_CALIB -DCONFIG_DPD +ccflags-$(CONFIG_LOFT_CALIB) += -DCONFIG_LOFT_CALIB ccflags-$(CONFIG_GKI) += -DCONFIG_GKI ccflags-$(CONFIG_SCHED_SCAN) += -DCONFIG_SCHED_SCAN ccflags-$(CONFIG_FILTER_TCP_ACK) += -DCONFIG_FILTER_TCP_ACK ccflags-$(CONFIG_TEMP_COMP) += -DCONFIG_TEMP_COMP ccflags-$(CONFIG_POWER_LIMIT) += -DCONFIG_POWER_LIMIT +ccflags-$(CONFIG_EXT_FEM_8800DCDW) += -DCONFIG_EXT_FEM_8800DCDW +ccflags-$(CONFIG_WOWLAN) += -DCONFIG_WOWLAN MAKEFLAGS +=-j$(shell nproc) # Platform support list diff --git a/drivers/aic8800/aic8800_fdrv/aic_priv_cmd.c b/drivers/aic8800/aic8800_fdrv/aic_priv_cmd.c index f3d0a78..a09fe79 100644 --- a/drivers/aic8800/aic8800_fdrv/aic_priv_cmd.c +++ b/drivers/aic8800/aic8800_fdrv/aic_priv_cmd.c @@ -11,16 +11,31 @@ */ #include +#include +#include #include #include "rwnx_defs.h" #include "rwnx_msg_tx.h" #include "rwnx_debugfs.h" #include "rwnx_main.h" #include "aic_priv_cmd.h" +#include "aicwf_compat_8800dc.h" +#include "aicwf_compat_8800d80.h" +#include "aicwf_compat_8800d80x2.h" +#include "rwnx_mod_params.h" +#include "rwnx_platform.h" +#define FLASH_BIN_ADDR_8800M80 0x8000000 + extern void set_testmode(int); +extern int get_flash_bin_size(void); +extern u32 get_flash_bin_crc(void); extern int testmode; + +extern int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, + struct station_info *sinfo, u8 *phymode, u32 *tx_phyrate, u32 *rx_phyrate); + static void print_help(const char *cmd); struct dbg_rftest_cmd_cfm cfm = {{0,}}; @@ -69,7 +84,13 @@ enum { RDWR_EFUSE_HE_OFF, SET_USB_OFF, SET_PLL_TEST, - + SET_ANT_MODE, + GET_NOISE, + RDWR_BT_EFUSE_PWROFST, + EXEC_FLASH_OPER, + RDWR_PWRADD2X, + RDWR_EFUSE_PWRADD2X, + CHECK_FLASH=0x108, }; typedef struct { @@ -119,6 +140,14 @@ typedef struct u32_l usrdata[3]; // 3 words totally } cmd_ef_usrdata_t; +typedef struct +{ + u32_l flash_read_addr; + u32_l flash_read_size; +} cmd_check_flash_t; + +extern char country_code[]; + #define CMD_MAXARGS 30 #if 0//#include @@ -247,6 +276,22 @@ int str_starts(const char *str, const char *start) static int aic_priv_cmd_set_tx (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) { cmd_rf_settx_t settx_param; + u8_l set_p = 0; + u8_l lvl_band, lvl_mod, lvl_idx, lvl_pwr = 0; + u8_l buf[10]; +#ifdef CONFIG_POWER_LIMIT + int8_t max_pwr; + uint8_t r_idx; + txpwr_loss_conf_t txpwr_loss_tmp; + txpwr_loss_conf_t *txpwr_loss; + txpwr_loss = &txpwr_loss_tmp; +#endif +#ifdef AICWF_SDIO_SUPPORT + struct aic_sdio_dev *dev = g_rwnx_plat->sdiodev; +#endif +#ifdef AICWF_USB_SUPPORT + struct aic_usb_dev *dev = g_rwnx_plat->usbdev; +#endif if (argc < 6) return -EINVAL; @@ -261,13 +306,69 @@ static int aic_priv_cmd_set_tx (struct rwnx_hw *rwnx_hw, int argc, char *argv[], } else { settx_param.tx_intv_us = 10000; // set default val 10ms } + if (argc > 7) { + if (dev->chipid == PRODUCT_ID_AIC8801){ + AICWFDBG(LOGERROR, "unsupported cmd\n"); + return -EINVAL; + } + lvl_pwr = command_strtoul(argv[7], NULL, 10); + AICWFDBG(LOGINFO, "lvl_pwr: %d\n", lvl_pwr); + + if (settx_param.chan >= 36) + lvl_band = 2; + else + lvl_band = 1; + if (settx_param.mode == 0) + lvl_mod = 0; + else if (settx_param.mode == 2 || settx_param.mode == 4) + lvl_mod = 1; + else if (settx_param.mode == 5) + lvl_mod = 2; + if (settx_param.mode >= 4) + lvl_idx = settx_param.rate & 0xF; + else if (settx_param.mode >= 2) + lvl_idx = settx_param.rate & 0x7; + else + lvl_idx = settx_param.rate; + + buf[0] = lvl_band; + buf[1] = lvl_mod; + buf[2] = lvl_idx; + buf[3] = lvl_pwr; + + set_p = 1; + } settx_param.max_pwr = POWER_LEVEL_INVALID_VAL; AICWFDBG(LOGINFO, "txparam:%d,%d,%d,%d,%d,%d\n", settx_param.chan, settx_param.bw, settx_param.mode, settx_param.rate, settx_param.length, settx_param.tx_intv_us); #ifdef CONFIG_POWER_LIMIT - settx_param.max_pwr = get_powerlimit_by_chnum(settx_param.chan); - AICWFDBG(LOGINFO, "max_pwr:%d\n", settx_param.max_pwr); + r_idx = get_ccode_region(country_code); + txpwr_loss = &txpwr_loss_tmp; + get_userconfig_txpwr_loss(txpwr_loss); + if (txpwr_loss->loss_enable_2g4 == 1) + AICWFDBG(LOGINFO, "%s:loss_value_2g4: %d\r\n", __func__, + txpwr_loss->loss_value_2g4); + if (txpwr_loss->loss_enable_5g == 1) + AICWFDBG(LOGINFO, "%s:loss_value_5g: %d\r\n", __func__, + txpwr_loss->loss_value_5g); + max_pwr = get_powerlimit_by_chnum(settx_param.chan, r_idx, settx_param.bw); + if (settx_param.chan >= 36) { + if (txpwr_loss->loss_enable_5g == 1) + max_pwr -= txpwr_loss->loss_value_5g; + } else { + if (txpwr_loss->loss_enable_2g4 == 1) + max_pwr -= txpwr_loss->loss_value_2g4; + } + if (!set_p || (lvl_pwr == 255)) { + settx_param.max_pwr = max_pwr; + AICWFDBG(LOGINFO, "max_pwr:%d\n", settx_param.max_pwr); + } else + AICWFDBG(LOGINFO, "the specified power is input without power limit\n"); #endif + + if (set_p && (lvl_pwr != 255)) + rwnx_send_rftest_req(rwnx_hw, RDWR_PWRLVL, 4, buf, &cfm); + rwnx_send_rftest_req(rwnx_hw, SET_TX, sizeof(cmd_rf_settx_t), (u8_l *)&settx_param, NULL); return 0; } @@ -389,8 +490,8 @@ static int aic_priv_cmd_set_xtal_cap_fine (struct rwnx_hw *rwnx_hw, int argc, ch return -EINVAL; xtal_cap_fine = command_strtoul(argv[1], NULL, 10); - AICWFDBG(LOGINFO, "xtal_cap =%x\r\n", xtal_cap_fine); - rwnx_send_rftest_req(rwnx_hw, SET_XTAL_CAP, sizeof(xtal_cap_fine), (u8_l *)&xtal_cap_fine, &cfm); + AICWFDBG(LOGINFO, "xtal_cap_fine =%x\r\n", xtal_cap_fine); + rwnx_send_rftest_req(rwnx_hw, SET_XTAL_CAP_FINE, sizeof(xtal_cap_fine), (u8_l *)&xtal_cap_fine, &cfm); memcpy(command, &cfm.rftest_result[0], 4); return 4; } @@ -439,7 +540,7 @@ static int aic_priv_cmd_set_freq_cal_fine (struct rwnx_hw *rwnx_hw, int argc, ch static int aic_priv_cmd_get_freq_cal (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) { - u8_l val; + u32_l val; #ifdef AICWF_SDIO_SUPPORT struct aic_sdio_dev *dev = g_rwnx_plat->sdiodev; #endif @@ -450,7 +551,7 @@ static int aic_priv_cmd_get_freq_cal (struct rwnx_hw *rwnx_hw, int argc, char *a rwnx_send_rftest_req(rwnx_hw, GET_FREQ_CAL, 0, NULL, &cfm); memcpy(command, &cfm.rftest_result[0], 4); val = cfm.rftest_result[0]; - if ((dev->chipid == PRODUCT_ID_AIC8800DC) || (dev->chipid == PRODUCT_ID_AIC8800DW)) { + if (dev->chipid != PRODUCT_ID_AIC8801) { AICWFDBG(LOGINFO, "cap=0x%x (remain:%x), cap_fine=%x (remain:%x)\n", val & 0xff, (val >> 8) & 0xff, (val >> 16) & 0xff, (val >> 24) & 0xff); } else { @@ -696,7 +797,7 @@ static int aic_priv_cmd_rdwr_pwrlvl (struct rwnx_hw *rwnx_hw, int argc, char *ar AICWFDBG(LOGERROR, "wrong func: %x\n", func); return -EINVAL; } - if(dev->chipid == PRODUCT_ID_AIC8800D81){ + if((dev->chipid == PRODUCT_ID_AIC8800D81) || (dev->chipid == PRODUCT_ID_AIC8800D81X2) || (dev->chipid == PRODUCT_ID_AIC8800D89X2)){ memcpy(command, &cfm.rftest_result[0], 6 * 12); return (6 * 12); } else { @@ -721,15 +822,15 @@ static int aic_priv_cmd_rdwr_pwrofst (struct rwnx_hw *rwnx_hw, int argc, char *a } if (func == 0) { // read cur rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFST, 0, NULL, &cfm); - } else if (func <= 2) { // write 2.4g/5g pwr ofst - if ((argc > 4) && (dev->chipid == PRODUCT_ID_AIC8800D81)) { + } else if (func <= 4) { // write 2.4g/5g pwr ofst and ant0/1 + if ((argc > 4) && ((dev->chipid == PRODUCT_ID_AIC8800D81) || (dev->chipid == PRODUCT_ID_AIC8800D81X2) || (dev->chipid == PRODUCT_ID_AIC8800D89X2))) { u8_l type = (u8_l)command_strtoul(argv[2], NULL, 16); u8_l chgrp = (u8_l)command_strtoul(argv[3], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[4], NULL, 10); u8_l buf[4] = {func, type, chgrp, (u8_l)pwrofst}; AICWFDBG(LOGINFO, "set pwrofst_%s:[%x][%x]=%d\r\n", (func == 1) ? "2.4g" : "5g", type, chgrp, pwrofst); rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFST, sizeof(buf), buf, &cfm); - } else if ((argc > 3) && (dev->chipid != PRODUCT_ID_AIC8800D81)) { + } else if ((argc > 3) && ((dev->chipid == PRODUCT_ID_AIC8801) || (dev->chipid == PRODUCT_ID_AIC8800DW) || (dev->chipid == PRODUCT_ID_AIC8800DC))) { u8_l chgrp = (u8_l)command_strtoul(argv[2], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[3], NULL, 10); u8_l buf[3] = {func, chgrp, (u8_l)pwrofst}; @@ -746,6 +847,8 @@ static int aic_priv_cmd_rdwr_pwrofst (struct rwnx_hw *rwnx_hw, int argc, char *a res_len = 3; } else if (dev->chipid == PRODUCT_ID_AIC8800D81) { // 3 * 2 (2.4g) + 3 * 6 (5g) res_len = 3 * 3 + 3 * 6; + } else if ((dev->chipid == PRODUCT_ID_AIC8800D81X2) || (dev->chipid == PRODUCT_ID_AIC8800D89X2)) { // ant0/1 + res_len = ( 3 * 3 + 3 * 6 ) * 2; } else { res_len = 3 + 4; } @@ -826,15 +929,15 @@ static int aic_priv_cmd_rdwr_efuse_pwrofst (struct rwnx_hw *rwnx_hw, int argc, c } if (func == 0) { // read cur rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFST, 0, NULL, &cfm); - } else if (func <= 2) { // write 2.4g/5g pwr ofst - if ((argc > 4) && (dev->chipid == PRODUCT_ID_AIC8800D81)) { + } else if (func <= 4) { // write 2.4g/5g pwr ofst and ant0/1 + if ((argc > 4) && ((dev->chipid == PRODUCT_ID_AIC8800D81) || (dev->chipid == PRODUCT_ID_AIC8800D81X2) || (dev->chipid == PRODUCT_ID_AIC8800D89X2))) { u8_l type = (u8_l)command_strtoul(argv[2], NULL, 16); u8_l chgrp = (u8_l)command_strtoul(argv[3], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[4], NULL, 10); u8_l buf[4] = {func, type, chgrp, (u8_l)pwrofst}; AICWFDBG(LOGINFO, "set efuse pwrofst_%s:[%x][%x]=%d\r\n", (func == 1) ? "2.4g" : "5g", type, chgrp, pwrofst); rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFST, sizeof(buf), buf, &cfm); - } else if ((argc > 3) && (dev->chipid != PRODUCT_ID_AIC8800D81)) { + } else if ((argc > 3) && ((dev->chipid == PRODUCT_ID_AIC8801) || (dev->chipid == PRODUCT_ID_AIC8800DW) || (dev->chipid == PRODUCT_ID_AIC8800DC))) { u8_l chgrp = (u8_l)command_strtoul(argv[2], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[3], NULL, 10); u8_l buf[3] = {func, chgrp, (u8_l)pwrofst}; @@ -851,7 +954,9 @@ static int aic_priv_cmd_rdwr_efuse_pwrofst (struct rwnx_hw *rwnx_hw, int argc, c if ((dev->chipid == PRODUCT_ID_AIC8800DC) || (dev->chipid == PRODUCT_ID_AIC8800DW)) { // 6 = 3 (2.4g) * 2 res_len = 3 * 2; } else if (dev->chipid == PRODUCT_ID_AIC8800D81) { // 3 * 2 (2.4g) + 3 * 6 (5g) - res_len = 3 * 3 + 3 * 6; + res_len = (3 * 3 + 3 * 6) * 2; + } else if((dev->chipid == PRODUCT_ID_AIC8800D81X2) || (dev->chipid == PRODUCT_ID_AIC8800D89X2)) { // 3 * 2 (2.4g) *2 + 3 * 6 (5g) *2 + res_len = (3 * 3 + 3 * 6) * 2 * 2; } else { // 7 = 3(2.4g) + 4(5g) res_len = 3 + 4; } @@ -867,14 +972,14 @@ static int aic_priv_cmd_rdwr_efuse_pwrofstfine (struct rwnx_hw *rwnx_hw, int arg func = (u8_l)command_strtoul(argv[1], NULL, 16); } if (func == 0) { // read cur - rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFSTFINE, 0, NULL, &cfm); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFSTFINE, 0, NULL, &cfm); } else if (func <= 2) { // write 2.4g/5g pwr ofst if (argc > 3) { u8_l chgrp = (u8_l)command_strtoul(argv[2], NULL, 16); s8_l pwrofst = (u8_l)command_strtoul(argv[3], NULL, 10); u8_l buf[3] = {func, chgrp, (u8_l)pwrofst}; AICWFDBG(LOGINFO, "set pwrofstfine:[%x][%x]=%d\r\n", func, chgrp, pwrofst); - rwnx_send_rftest_req(rwnx_hw, RDWR_PWROFSTFINE, sizeof(buf), buf, &cfm); + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWROFSTFINE, sizeof(buf), buf, &cfm); } else { AICWFDBG(LOGERROR, "wrong args\n"); return -EINVAL; @@ -999,7 +1104,7 @@ static int aic_priv_cmd_rdwr_efuse_he_off (struct rwnx_hw *rwnx_hw, int argc, ch func = command_strtoul(argv[1], NULL, 10); AICWFDBG(LOGINFO, "set he off: %d\n", func); - if(func == 1) { + if(func == 1 || func == 0) { rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_HE_OFF, sizeof(func), (u8_l *)&func, &cfm); AICWFDBG(LOGINFO, "he_off cfm: %d\n", cfm.rftest_result[0]); memcpy(command, &cfm.rftest_result[0], 4); @@ -1168,6 +1273,206 @@ static int aic_priv_cmd_set_pll_test (struct rwnx_hw *rwnx_hw, int argc, char *a return 0; } +static int aic_priv_cmd_set_ant_mode (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +{ + u8_l func = 0; + if (argc > 1) { + func = command_strtoul(argv[1], NULL, 10); + AICWFDBG(LOGINFO, "ant %d\r\n", func); + rwnx_send_rftest_req(rwnx_hw, SET_ANT_MODE, sizeof(func), (u8_l *)&func, NULL); + } else { + return -EINVAL; + } + return 0; +} + +static int aic_priv_cmd_rdwr_bt_efuse_pwrofst (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +{ + u8_l func = 0; + if (argc == 1) { + func = 0; + } else if (argc == 2) { + func = 1; + } + if (func == 0) { // read cur + rwnx_send_rftest_req(rwnx_hw, RDWR_BT_EFUSE_PWROFST, 0, NULL, &cfm); + } else if (func == 1) { // write bt tx pwrofst + int8_t bt_txpwrofst = command_strtoul(argv[1], NULL, 10); + AICWFDBG(LOGINFO, "set bt efuse pwrofst %d\r\n",bt_txpwrofst); + if (bt_txpwrofst < -7 || bt_txpwrofst > 7) { + AICWFDBG(LOGERROR, "wrong params %d, pwrofst limit -7 ~ 7\n", bt_txpwrofst); + return -EINVAL; + } else { + rwnx_send_rftest_req(rwnx_hw, RDWR_BT_EFUSE_PWROFST, sizeof(bt_txpwrofst), &bt_txpwrofst, &cfm); + } + } else { + AICWFDBG(LOGERROR, "wrong func: %x\n", func); + return -EINVAL; + } + memcpy(command, &cfm.rftest_result[0], 2); + return 2; +} + +static int aic_priv_cmd_exec_flash_oper(struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +{ + u8_l func = 0; + if (argc > 1) { + func = (s8_l)command_strtoul(argv[1], NULL, 10); + AICWFDBG(LOGINFO, "exec_flash_oper: %d\n", func); + rwnx_send_rftest_req(rwnx_hw, EXEC_FLASH_OPER, sizeof(func), &func, &cfm); + AICWFDBG(LOGINFO, "flash oper %u %u \n",cfm.rftest_result[0],cfm.rftest_result[1]); + } else { + AICWFDBG(LOGERROR, "wrong args\n"); + return -EINVAL; + } + + return 0; +} + +static int aic_priv_cmd_country_set(struct rwnx_hw *rwnx_hw, int argc, + char *argv[], char *command) +{ + int ret = 0; + struct ieee80211_regdomain *regdomain; + + if (argc < 2) { + AICWFDBG(LOGINFO, "%s param err\n", __func__); + return -1; + } + + AICWFDBG(LOGINFO, "cmd country_set: %s\n", argv[1]); + + regdomain = getRegdomainFromRwnxDB(rwnx_hw->wiphy, argv[1]); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) + ret = regulatory_set_wiphy_regd( + rwnx_hw->wiphy, regdomain); +#else + ret = wiphy_apply_custom_regulatory( + rwnx_hw->wiphy, regdomain); +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) */ + +#ifdef CONFIG_RADAR_OR_IR_DETECT + rwnx_radar_set_domain(&rwnx_hw->radar, regdomain->dfs_region); +#endif + +#ifdef CONFIG_POWER_LIMIT + if (!testmode){ + rwnx_send_me_chan_config_req(rwnx_hw, argv[1]); + } +#endif + + return ret; +} + +static int aic_priv_cmd_get_noise(struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +{ + rwnx_send_rftest_req(rwnx_hw, GET_NOISE, 0, NULL, &cfm); + + AICWFDBG(LOGINFO, "noise: %d,%d\n", (char)cfm.rftest_result[0], (char)cfm.rftest_result[1]); + command[0] = (char)cfm.rftest_result[0]; + command[1] = (char)cfm.rftest_result[1]; + + return 2; +} + +static int aic_priv_cmd_rdwr_pwradd2x (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +{ + u8_l func = 0; + int8_t pwradd2x_in = 0; +#ifdef AICWF_SDIO_SUPPORT + struct aic_sdio_dev *dev = g_rwnx_plat->sdiodev; +#endif +#ifdef AICWF_USB_SUPPORT + struct aic_usb_dev *dev = g_rwnx_plat->usbdev; +#endif + + if (dev->chipid != PRODUCT_ID_AIC8800D81) { + AICWFDBG(LOGERROR, "RDWR_PWRADD2X, only D40/80 support\n"); + return -EINVAL; + } + + if (argc > 1) { + func = (u8_l)command_strtoul(argv[1], NULL, 10); + } + if ((func > 0) && (argc > 2)) { + pwradd2x_in = (int8_t)command_strtoul(argv[2], NULL, 10); + } + if (func == 0) { // read cur + rwnx_send_rftest_req(rwnx_hw, RDWR_PWRADD2X, 0, NULL, &cfm); + } else if ((func == 1) || (func == 2)) { // write pwradd2x + AICWFDBG(LOGINFO, "set pwradd2x_%s %d\r\n", (func == 1) ? "2g4" : "5g", pwradd2x_in); + if (pwradd2x_in < -15 || pwradd2x_in > 15) { + AICWFDBG(LOGERROR, "wrong params %d, pwradd2x: -15 ~ 15\n", pwradd2x_in); + return -EINVAL; + } else { + u8_l buf[2] = {func, (u8_l)pwradd2x_in}; + rwnx_send_rftest_req(rwnx_hw, RDWR_PWRADD2X, sizeof(buf), buf, &cfm); + } + } else { + AICWFDBG(LOGERROR, "wrong func: %x\n", func); + return -EINVAL; + } + memcpy(command, &cfm.rftest_result[0], 2); + return 2; +} + +static int aic_priv_cmd_rdwr_efuse_pwradd2x (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +{ + u8_l func = 0; + int8_t pwradd2x_in = 0; +#ifdef AICWF_SDIO_SUPPORT + struct aic_sdio_dev *dev = g_rwnx_plat->sdiodev; +#endif +#ifdef AICWF_USB_SUPPORT + struct aic_usb_dev *dev = g_rwnx_plat->usbdev; +#endif + + if (dev->chipid != PRODUCT_ID_AIC8800D81) { + AICWFDBG(LOGERROR, "RDWR_EFUSE_PWRADD2X, only D40/80 support\n"); + return -EINVAL; + } + + if (argc > 1) { + func = (u8_l)command_strtoul(argv[1], NULL, 10); + } + if ((func > 0) && (argc > 2)) { + pwradd2x_in = (int8_t)command_strtoul(argv[2], NULL, 10); + } + if (func == 0) { // read cur + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWRADD2X, 0, NULL, &cfm); + } else if ((func == 1) || (func == 2)) { // write pwradd2x + AICWFDBG(LOGINFO, "set efuse pwradd2x_%s %d\r\n", (func == 1) ? "2g4" : "5g", pwradd2x_in); + if (pwradd2x_in < -15 || pwradd2x_in > 15) { + AICWFDBG(LOGERROR, "wrong params %d, pwradd2x: -15 ~ 15\n", pwradd2x_in); + return -EINVAL; + } else { + u8_l buf[2] = {func, (u8_l)pwradd2x_in}; + rwnx_send_rftest_req(rwnx_hw, RDWR_EFUSE_PWRADD2X, sizeof(buf), buf, &cfm); + } + } else { + AICWFDBG(LOGERROR, "wrong func: %x\n", func); + return -EINVAL; + } + memcpy(command, &cfm.rftest_result[0], 3); + return 3; +} + + + +static int aic_priv_cmd_check_flash(struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) +{ + cmd_check_flash_t cmd_check_flash; + cmd_check_flash.flash_read_addr = FLASH_BIN_ADDR_8800M80; + cmd_check_flash.flash_read_size = get_flash_bin_size(); + rwnx_send_rftest_req(rwnx_hw, CHECK_FLASH, sizeof(cmd_check_flash), (u8_l *)&cmd_check_flash, &cfm); + cfm.rftest_result[1] = get_flash_bin_crc(); + + AICWFDBG(LOGINFO, "flash_crc: %x %x\n", cfm.rftest_result[0], cfm.rftest_result[1]); + memcpy(command, &cfm.rftest_result[0], 8); + + return 8; +} static int aic_priv_cmd_help (struct rwnx_hw *rwnx_hw, int argc, char *argv[], char *command) { @@ -1192,7 +1497,7 @@ static const struct aic_priv_cmd aic_priv_commands[] = { "= display rx fcsok/total pkt num" }, { "set_rxstop", aic_priv_cmd_set_rxstop, "= stop rx " }, - { "set_tx_tone", aic_priv_cmd_set_tx_tone, + { "set_txtone", aic_priv_cmd_set_tx_tone, " val = 0/off" }, { "set_rx_meter", aic_priv_cmd_set_rx_meter, "= set rx meter " }, @@ -1270,6 +1575,20 @@ static const struct aic_priv_cmd aic_priv_commands[] = { "= off usb configure before usb disconnect" }, { "set_pll_test", aic_priv_cmd_set_pll_test, " = use pll test to measure saturation power" }, + { "set_ant", aic_priv_cmd_set_ant_mode, + " = 0/ant0, 1/ant1, 2/both" }, + { "rdwr_bt_efuse_pwrofst", aic_priv_cmd_rdwr_bt_efuse_pwrofst, + " = read/write bt tx power offset into efuse" }, + { "exec_flash_oper",aic_priv_cmd_exec_flash_oper, + " = 0 check, 1 rec, 2 prot 3 rd_wcr0 4 er_wcr0 "}, + {"country_set", aic_priv_cmd_country_set, ""}, + {"get_noise", aic_priv_cmd_get_noise, "get noise"}, + {"rdwr_pwradd2x", aic_priv_cmd_rdwr_pwradd2x, + "a value is added for both 2.4G and 5G to achieve overall power adjustment of the band"}, + {"rdwr_efuse_pwradd2x", aic_priv_cmd_rdwr_efuse_pwradd2x, + "a value is added for both 2.4G and 5G to achieve overall power adjustment of the band, write to efuse"}, + {"check_flash", aic_priv_cmd_check_flash, + "check bin crc in flash" }, //Reserve for new aic_priv_cmd. { "help", aic_priv_cmd_help, @@ -1304,6 +1623,13 @@ int handle_private_cmd(struct net_device *net, char *command, u32 cmd_len) RWNX_DBG(RWNX_FN_ENTRY_STR); +#if 0 + if(!testmode) { + AICWFDBG(LOGERROR, "not in testmode\n"); + return -1; + } +#endif + argc = parse_line(command, argv); if (argc == 0) { return -1; @@ -1312,7 +1638,8 @@ int handle_private_cmd(struct net_device *net, char *command, u32 cmd_len) count = 0; cmd = aic_priv_commands; while (cmd->cmd) { - if (strncasecmp(cmd->cmd, argv[0], strlen(argv[0])) == 0) + if (strncasecmp(cmd->cmd, argv[0], strlen(argv[0])) == 0 && + strncasecmp(cmd->cmd, argv[0], strlen(cmd->cmd)) == 0) { match = cmd; if (strcasecmp(cmd->cmd, argv[0]) == 0) { @@ -1350,11 +1677,13 @@ int handle_private_cmd(struct net_device *net, char *command, u32 cmd_len) } #define RWNX_COUNTRY_CODE_LEN 2 -#define CMD_SET_COUNTRY "COUNTRY" -#define CMD_SET_VENDOR_EX_IE "SET_VENDOR_EX_IE" -#define CMD_SET_AP_WPS_P2P_IE "SET_AP_WPS_P2P_IE" -#define CMD_SET_TESTMODE "SET_TESTMODE" -#define CMD_SET_BLE_WAKE "SET_BLE_WAKE" +#define CMD_SET_COUNTRY "COUNTRY" +#define CMD_SET_VENDOR_EX_IE "SET_VENDOR_EX_IE" +#define CMD_SET_AP_WPS_P2P_IE "SET_AP_WPS_P2P_IE" +#define CMD_SET_TESTMODE "SET_TESTMODE" +#define CMD_SET_BLE_WAKE "SET_BLE_WAKE" +#define CMD_SET_MON_FREQ "SET_MON_FREQ" +#define CMD_GET_CS_INFO "GET_CS_INFO" struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, char *alpha2); @@ -1387,6 +1716,143 @@ void set_vendor_extension_ie(char *command){ } #endif//CONFIG_SET_VENDOR_EXTENSION_IE +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0)) +int rwnx_cfg80211_set_monitor_channel_(struct wiphy *wiphy, struct net_device *dev, + struct cfg80211_chan_def *chandef); +#else +int rwnx_cfg80211_set_monitor_channel_(struct wiphy *wiphy, + struct cfg80211_chan_def *chandef); +#endif +int rwnx_atoi2(char *value, int c_len); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0)) +void set_mon_chan(struct rwnx_vif *vif, struct net_device *dev, char *parameter) +#else +void set_mon_chan(struct rwnx_vif *vif, char *parameter) +#endif +{ + struct cfg80211_chan_def *chandef = NULL; + int freq = 0; + + + chandef = (struct cfg80211_chan_def *)vmalloc(sizeof(struct cfg80211_chan_def)); + memset(chandef, 0, sizeof(struct cfg80211_chan_def)); + chandef->chan = (struct ieee80211_channel *)vmalloc(sizeof(struct ieee80211_channel)); + memset(chandef->chan, 0, sizeof(struct ieee80211_channel)); + + freq = rwnx_atoi2(parameter, 4); + + if(freq <= 2484){ + chandef->chan->band = NL80211_BAND_2GHZ; + }else{ + chandef->chan->band = NL80211_BAND_5GHZ; + } + chandef->chan->center_freq = freq; + chandef->width = NL80211_CHAN_WIDTH_20; + chandef->center_freq1 = chandef->chan->center_freq; + chandef->center_freq2 = 0; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0)) + rwnx_cfg80211_set_monitor_channel_(vif->rwnx_hw->wiphy, dev, chandef); +#else + rwnx_cfg80211_set_monitor_channel_(vif->rwnx_hw->wiphy, chandef); +#endif + + vfree(chandef->chan); + vfree(chandef); + +} + +int get_cs_info(struct rwnx_vif *vif, u8 *mac_addr, u8 *val) +{ + struct rwnx_sta *sta = NULL; + u8 phymode = 0; + u32 tx_phyrate = 0, rx_phyrate = 0; + struct aicwf_cs_info cs_info; + struct station_info sinfo; + struct rwnx_sta_stats *stats; + struct rx_vector_2 *rx_vect2; + struct rwnx_chanctx *ctxt; + + if (RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_MONITOR) + return -EINVAL; + else if ((RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_STATION) || + (RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_P2P_CLIENT)) { + AICWFDBG(LOGINFO, "%s: sta mode\n", __func__); + if (vif->sta.ap) + sta = vif->sta.ap; + } else { + struct rwnx_sta *sta_iter; + AICWFDBG(LOGINFO, "%s: ap mode, mac=%pM\n", __func__, mac_addr); + spin_lock_bh(&vif->rwnx_hw->cb_lock); + list_for_each_entry(sta_iter, &vif->ap.sta_list, list) { + if (sta_iter->valid && ether_addr_equal(sta_iter->mac_addr, mac_addr)) { + sta = sta_iter; + break; + } + } + spin_unlock_bh(&vif->rwnx_hw->cb_lock); + } + + memset(&cs_info, 0, sizeof(struct aicwf_cs_info)); + memcpy(cs_info.countrycode, country_code, 4); + + if((sta == NULL) && (RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_AP)) { + sta = &vif->rwnx_hw->sta_table[vif->ap.bcmc_index]; + ctxt = &vif->rwnx_hw->chanctx_table[vif->ch_index]; + sta->center_freq = ctxt->chan_def.chan->center_freq; + sta->width = ctxt->chan_def.width; + } + + if(sta) { + stats = &sta->stats; + rx_vect2 = &stats->last_rx.rx_vect2; + + AICWFDBG(LOGINFO, "fill: staidx=%d\n", sta->sta_idx); + rwnx_fill_station_info(sta, vif, &sinfo, &phymode, &tx_phyrate, &rx_phyrate); + + cs_info.rssi = sinfo.signal; + //cs_info.bandwidth = sta->width; + if(sta->width < NL80211_CHAN_WIDTH_40) + cs_info.bandwidth = 0; + else if(sta->width < NL80211_CHAN_WIDTH_80) + cs_info.bandwidth = 1; + else + cs_info.bandwidth = 2; + cs_info.freq = sta->center_freq; + + cs_info.phymode = phymode; // 0:b 1:g 2:a 3:n 4:ac 5:ax + //snr (int8_t)rx_vect2->evm1, (int8_t)rx_vect2->evm2 + cs_info.snr = (int8_t)(rx_vect2->evm1) + (int8_t)(rx_vect2->evm2) / 2; + cs_info.noise = cs_info.rssi - cs_info.snr; //rssi - snr + + //chanutil TBD + cs_info.chan_time_ms = stats->last_chan_time; + cs_info.chan_time_busy_ms = stats->last_chan_busy_time; + cs_info.tx_ack_succ_stat = stats->tx_ack_succ_stat; + cs_info.tx_ack_fail_stat = stats->tx_ack_fail_stat; + cs_info.chan_tx_busy_time = stats->last_chan_tx_busy_time; + + cs_info.txpwr = cs_info.freq >5000? userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[0] : userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[0]; + if(sta->sta_idx < NX_REMOTE_STA_MAX) { + cs_info.rxnss = sinfo.rxrate.nss; + cs_info.rxmcs = sinfo.rxrate.mcs; + cs_info.txnss = sinfo.txrate.nss; + cs_info.txmcs = sinfo.txrate.mcs; + } + + cs_info.tx_phyrate = tx_phyrate; + cs_info.rx_phyrate = rx_phyrate; + + memcpy(val, &cs_info, sizeof(struct aicwf_cs_info)); + + AICWFDBG(LOGINFO, "phymode=%d. bw=%d, rssi=%d, tx_phyrate=%d, rx_phyrate=%d\n", cs_info.phymode, cs_info.bandwidth, cs_info.rssi, + tx_phyrate, rx_phyrate); + + return sizeof(struct aicwf_cs_info); + } + + return 0; +} int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) { @@ -1470,7 +1936,8 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) #if 1//Handle Android command - if(!strncasecmp(command, CMD_SET_COUNTRY, strlen(CMD_SET_COUNTRY))) { + if(!strncasecmp(command, CMD_SET_COUNTRY, strlen(CMD_SET_COUNTRY)) && + strncasecmp(command, "country_set", strlen("country_set"))) { skip = strlen(CMD_SET_COUNTRY) + 1; country = command + skip; if (!country || strlen(country) < RWNX_COUNTRY_CODE_LEN) { @@ -1497,10 +1964,24 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) #else wiphy_apply_custom_regulatory(vif->rwnx_hw->wiphy, regdomain); #endif + +#ifdef CONFIG_RADAR_OR_IR_DETECT + rwnx_radar_set_domain(&vif->rwnx_hw->radar, regdomain->dfs_region); +#endif + +#ifdef CONFIG_POWER_LIMIT + if (!testmode){ + rwnx_send_me_chan_config_req(vif->rwnx_hw, country); + } +#endif + ret = 0; + goto exit; } #ifdef CONFIG_SET_VENDOR_EXTENSION_IE else if(!strncasecmp(command, CMD_SET_VENDOR_EX_IE, strlen(CMD_SET_VENDOR_EX_IE))){ set_vendor_extension_ie(command); + ret = 0; + goto exit; } #endif//CONFIG_SET_VENDOR_EXTENSION_IE else if(!strncasecmp(command, CMD_SET_AP_WPS_P2P_IE, strlen(CMD_SET_AP_WPS_P2P_IE))){ @@ -1510,7 +1991,9 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) if(g_rwnx_plat && g_rwnx_plat->usbdev->rwnx_hw){ if (g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8800DW || (g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8800DC) || - (g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8800D81)){ + (g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8800D81) || + (g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8800D81X2) || + (g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8800D89X2)){ set_testmode(!testmode); rwnx_send_reboot(g_rwnx_plat->usbdev->rwnx_hw); } @@ -1525,10 +2008,46 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) ret = 0; goto exit; } +#ifdef CONFIG_RWNX_MON_DATA + else if(!strncasecmp(command, CMD_SET_MON_FREQ, strlen(CMD_SET_MON_FREQ))){ + char *set_parameter; + skip = strlen(CMD_SET_MON_FREQ) + 1; + set_parameter = command + skip; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0)) + set_mon_chan(vif, net, set_parameter); +#else + set_mon_chan(vif, set_parameter); +#endif + ret = 0; + goto exit; + } +#endif + else if(!strncasecmp(command, CMD_GET_CS_INFO, strlen(CMD_GET_CS_INFO))) { + u8 mac_addr[6]; + u8 val[128]; + int i; + u8 *offset; + + AICWFDBG(LOGDEBUG, "CMD_GET_CS_INFO,len=%d\n", priv_cmd.total_len); + offset = command + (strlen(CMD_GET_CS_INFO) + 1); + for(i=0; i<6; i++) { + mac_addr[i] = command_strtoul(offset, NULL, 16); + offset += 3; + } + bytes_written = get_cs_info(vif, mac_addr, val); + AICWFDBG(LOGDEBUG, "bytewritten=%d, addr=%pM\n", bytes_written, mac_addr); + + + memcpy(command, val, bytes_written); + + goto exit; + } + #endif//Handle Android command - bytes_written = handle_private_cmd(net, command, priv_cmd.total_len); + +exit: if (bytes_written >= 0) { if ((bytes_written == 0) && (priv_cmd.total_len > 0)) { command[0] = '\0'; @@ -1541,8 +2060,8 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) bytes_written++; priv_cmd.used_len = bytes_written; if (copy_to_user(priv_cmd.buf, command, bytes_written)) { - AICWFDBG(LOGERROR, "%s: failed to copy data to user buffer\n", __FUNCTION__); - ret = -EFAULT; + AICWFDBG(LOGINFO, "%s: failed to copy data to user buffer\n", __FUNCTION__); + ret = -EFAULT; } } else { @@ -1550,7 +2069,6 @@ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) ret = bytes_written; } -exit: ///todo: add our unlock //net_os_wake_unlock(net); kfree(command); diff --git a/drivers/aic8800/aic8800_fdrv/aic_priv_cmd.h b/drivers/aic8800/aic8800_fdrv/aic_priv_cmd.h index 7449190..50c9783 100644 --- a/drivers/aic8800/aic8800_fdrv/aic_priv_cmd.h +++ b/drivers/aic8800/aic8800_fdrv/aic_priv_cmd.h @@ -19,6 +19,35 @@ typedef struct _android_wifi_priv_cmd { int total_len; } android_wifi_priv_cmd; +struct aicwf_cs_info { + u8_l phymode; + u8_l bandwidth; + u16_l freq; + + s8_l rssi; + s8_l snr; + s8_l noise; + u8_l txpwr; + + //chanutil + u16_l chan_time_ms; + u16_l chan_time_busy_ms; + + char countrycode[4]; + u8_l rxnss; + u8_l rxmcs; + u8_l txnss; + u8_l txmcs; + + u32_l tx_phyrate; + u32_l rx_phyrate; + + u32_l tx_ack_succ_stat; + u32_l tx_ack_fail_stat; + + u16_l chan_tx_busy_time; +}; + #ifdef CONFIG_COMPAT typedef struct _compat_android_wifi_priv_cmd { compat_caddr_t buf; @@ -28,6 +57,8 @@ typedef struct _compat_android_wifi_priv_cmd { #endif /* CONFIG_COMPAT */ int android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd); +int get_cs_info(struct rwnx_vif *vif, u8 *mac_addr, u8 *val); + #endif /* _AIC_PRIV_CMD_H_ */ diff --git a/drivers/aic8800/aic8800_fdrv/aic_vendor.c b/drivers/aic8800/aic8800_fdrv/aic_vendor.c index 105a02e..5394c71 100644 --- a/drivers/aic8800/aic8800_fdrv/aic_vendor.c +++ b/drivers/aic8800/aic8800_fdrv/aic_vendor.c @@ -314,17 +314,28 @@ out_put_fail: return -EMSGSIZE; } +struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, char *alpha2); + static int aicwf_vendor_subcmd_set_country_code(struct wiphy *wiphy, struct wireless_dev *wdev, const void *data, int len) { int ret = 0, rem, type; const struct nlattr *iter; + struct ieee80211_regdomain *regdomain; nla_for_each_attr(iter, data, len, rem) { type = nla_type(iter); switch (type) { case ANDR_WIFI_ATTRIBUTE_COUNTRY: printk("%s(%d), ANDR_WIFI_ATTRIBUTE_COUNTRY: %s\n", __func__, __LINE__, (char *)nla_data(iter)); + regdomain = getRegdomainFromRwnxDB(wiphy, (char *)nla_data(iter)); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) + if((ret = regulatory_set_wiphy_regd(wiphy, regdomain))){ + AICWFDBG(LOGERROR, "regulatory_set_wiphy_regd fail \r\n"); + } +#else + wiphy_apply_custom_regulatory(wiphy, regdomain); +#endif break; default: pr_err("%s(%d), Unknown type: %d\n", __func__, __LINE__, type); diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80.c b/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80.c index 49d3558..9e98284 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80.c @@ -3,6 +3,9 @@ #include "reg_access.h" #define FW_USERCONFIG_NAME_8800D80 "aic_userconfig_8800d80.txt" +#define FW_USERCONFIG_NAME_8800D80_U11 "aic_userconfig_8800d80_u11.txt" +#define FW_USERCONFIG_NAME_8800D80_U11_PRO "aic_userconfig_8800d80_u11_pro.txt" +#define FW_USERCONFIG_NAME_8800D80_U11_CUS "aic_userconfig_8800d80_u11_cus.txt" #define FW_POWERLIMIT_NAME_8800D80 "aic_powerlimit_8800d80.txt" extern char aic_fw_path[200]; @@ -37,6 +40,18 @@ int rwnx_plat_userconfig_load_8800d80(struct rwnx_hw *rwnx_hw){ int size; u32 *dst=NULL; char *filename = FW_USERCONFIG_NAME_8800D80; + if (rwnx_hw->usbdev->pid == USB_PRODUCT_ID_TENDA_U11 + || rwnx_hw->usbdev->pid == USB_PRODUCT_ID_AIC8800M80_CUS1 + || rwnx_hw->usbdev->pid == USB_PRODUCT_ID_AIC8800M80_CUS4) { + filename = FW_USERCONFIG_NAME_8800D80_U11; + } else if (rwnx_hw->usbdev->pid == USB_PRODUCT_ID_TENDA_U11_PRO + || rwnx_hw->usbdev->pid == USB_PRODUCT_ID_AIC8800M80_CUS3 + || rwnx_hw->usbdev->pid == USB_PRODUCT_ID_AIC8800M80_CUS5 + || rwnx_hw->usbdev->pid == USB_PRODUCT_ID_AIC8800M80_CUS6) { + filename = FW_USERCONFIG_NAME_8800D80_U11_PRO; + } else if (rwnx_hw->usbdev->pid == USB_PRODUCT_ID_AIC8800M80_CUS2) { + filename = FW_USERCONFIG_NAME_8800D80_U11_CUS; + } #ifndef ANDROID_PLATFORM sprintf(aic_fw_path, "%s/%s", aic_fw_path, "aic8800D80"); @@ -65,7 +80,7 @@ int rwnx_plat_userconfig_load_8800d80(struct rwnx_hw *rwnx_hw){ } #ifdef CONFIG_POWER_LIMIT -extern char default_ccode[]; +extern char country_code[]; int rwnx_plat_powerlimit_load_8800d80(struct rwnx_hw *rwnx_hw) { int size; @@ -85,7 +100,7 @@ int rwnx_plat_powerlimit_load_8800d80(struct rwnx_hw *rwnx_hw) AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); /* parsing the file */ - rwnx_plat_powerlimit_parsing((char *)dst, size, default_ccode); + rwnx_plat_powerlimit_parsing((char *)dst, size, country_code); rwnx_release_firmware_common(&dst); diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80x2.c b/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80x2.c new file mode 100644 index 0000000..2d6c5e0 --- /dev/null +++ b/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80x2.c @@ -0,0 +1,97 @@ +#include "rwnx_main.h" +#include "rwnx_msg_tx.h" +#include "reg_access.h" + +#define FW_USERCONFIG_NAME_8800D80X2 "aic_userconfig_8800d80x2.txt" +#define FW_POWERLIMIT_NAME_8800D80X2 "aic_powerlimit_8800d80x2.txt" + +extern char aic_fw_path[200]; + +int rwnx_request_firmware_common(struct rwnx_hw *rwnx_hw, + u32** buffer, const char *filename); +void rwnx_plat_userconfig_parsing_8800d80x2(char *buffer, int size); +void rwnx_plat_userconfig_parsing(char *buffer, int size); +void rwnx_release_firmware_common(u32** buffer); + + +int aicwf_set_rf_config_8800d80x2(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm *cfm) +{ + int ret = 0; + + if ((ret = rwnx_send_txpwr_lvl_v4_req(rwnx_hw))) { + return -1; + } + if ((ret = rwnx_send_txpwr_lvl_adj_req(rwnx_hw))) { + return -1; + } + if ((ret = rwnx_send_txpwr_ofst2x_v2_req(rwnx_hw))) { + return -1; + } + if ((ret = rwnx_send_rf_calib_req(rwnx_hw, cfm))) { + return -1; + } + return 0 ; +} + + +int rwnx_plat_userconfig_load_8800d80x2(struct rwnx_hw *rwnx_hw){ + int size; + u32 *dst=NULL; + char *filename = FW_USERCONFIG_NAME_8800D80X2; + +#ifndef ANDROID_PLATFORM + sprintf(aic_fw_path, "%s/%s", aic_fw_path, "aic8800D80X2"); +#endif + + AICWFDBG(LOGINFO, "userconfig file path:%s \r\n", filename); + + /* load file */ + size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of firmware file\n"); + dst = NULL; + return 0; + } + + /* Copy the file on the Embedded side */ + AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); + + rwnx_plat_userconfig_parsing_8800d80x2((char *)dst, size); + + rwnx_release_firmware_common(&dst); + + AICWFDBG(LOGINFO, "userconfig download complete\n\n"); + return 0; + +} + +#ifdef CONFIG_POWER_LIMIT +extern char country_code[]; +int rwnx_plat_powerlimit_load_8800d80x2(struct rwnx_hw *rwnx_hw) +{ + int size; + u32 *dst=NULL; + char *filename = FW_POWERLIMIT_NAME_8800D80X2; + + AICWFDBG(LOGINFO, "powerlimit file path:%s \r\n", filename); + + /* load file */ + size = rwnx_request_firmware_common(rwnx_hw, &dst, filename); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of cfg file\n"); + dst = NULL; + return 0; + } + + AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); + + /* parsing the file */ + rwnx_plat_powerlimit_parsing((char *)dst, size, country_code); + + rwnx_release_firmware_common(&dst); + + AICWFDBG(LOGINFO, "powerlimit download complete\n\n"); + return 0; +} +#endif + diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80x2.h b/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80x2.h new file mode 100644 index 0000000..df6f1dd --- /dev/null +++ b/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800d80x2.h @@ -0,0 +1,9 @@ +#include + +int rwnx_plat_userconfig_load_8800d80x2(struct rwnx_hw *rwnx_hw); +#ifdef CONFIG_POWER_LIMIT +int rwnx_plat_powerlimit_load_8800d80x2(struct rwnx_hw *rwnx_hw); +#endif +int aicwf_set_rf_config_8800d80x2(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm *cfm); + + diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800dc.c b/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800dc.c index ac30601..53dbfcb 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800dc.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800dc.c @@ -45,6 +45,8 @@ #define FW_USERCONFIG_NAME_8800DW "aic_userconfig_8800dw.txt" #define FW_POWERLIMIT_NAME_8800DC "aic_powerlimit_8800dc.txt" #define FW_POWERLIMIT_NAME_8800DW "aic_powerlimit_8800dw.txt" +#define FW_USERCONFIG_NAME_8800DW_W311 "aic_userconfig_8800dw_w311.txt" +#define FW_USERCONFIG_NAME_8800DW_U2 "aic_userconfig_8800dw_u2.txt" #ifdef CONFIG_LOAD_BT_PATCH_IN_FDRV enum aicbt_patch_table_type { @@ -240,6 +242,7 @@ u32 syscfg_tbl_8800dc[][2] = { u32 patch_tbl_wifisetting[][2] = { + {0x0004, 0x00020010}, //wdt_reboot_type, wdt_period_sec #if !defined(CONFIG_FPGA_VERIFICATION) {0x0090, 0x0013FC00}, //rx_ringbuf_start2 #endif @@ -248,6 +251,10 @@ u32 patch_tbl_wifisetting[][2] = {0x0120, 0x140A0100}, //usb agg tx params(total cnt, aggr cnt, out en, global out nak) #endif //CONFIG_USB_TX_AGGR {0x00b0, 0xAD180100}, +#ifdef CONFIG_BAND_STEERING + {0x0138, 0x00010a00}, //apm probe resp offload en +#endif + {0x0084, 0x00000040}, }; u32 jump_tbl[][2] = @@ -1453,6 +1460,7 @@ uint32_t agc_cfg_ram[] = { 0x00000000 }; +#if !defined(CONFIG_EXT_FEM_8800DCDW) uint32_t txgain_map[96] = { #ifdef CONFIG_FPGA_VERIFICATION 0x20c0c971, @@ -1632,9 +1640,9 @@ uint32_t txgain_map[96] = { 0x00ffcd70, 0x00ffcd80, 0x00ffcd90, - 0x00ffce80, - 0x00ffce93, - 0x00ffcf90, + 0x00ffcf68, + 0x00ffcf75, + 0x00ffcf83, 0x00ffc080, 0x00ffc090, 0x00ffc180, @@ -1733,8 +1741,8 @@ const uint32_t txgain_map_h[96] = 0xffcc6b, //15 0xffcc79, //16 0xffcd72, //17 - 0xffce60, //18 - 0xffce72, //19 + 0xffcf5b, //18 + 0xffcf66, //19 0xffcf72, //20 0xffcf80, //21 0xffcf90, //22 @@ -1757,6 +1765,214 @@ const uint32_t txgain_map_h[96] = 0xffc86b, //7 }; +#else /* #ifdef CONFIG_EXT_FEM_8800DCDW */ +const uint32_t txgain_map_femkct[96] = +{ + //11b + 0x00ffd780,//15 + 0x00ffd872,//16 + 0x00ffd880,//17 + 0x00ffd972,//18 + 0x00ffd980,//19 + 0x00ffda72,//20 + 0x00ffda80,//21 + 0x00ffdb72,//22 + 0x00ffdb80,//23 + 0x00ffdc72,//24 + 0x00ffdc80,//25 + 0x00ffdd72,//26 + 0x00ffdd80,//27 + 0x00ffde72,//28 + 0x00ffde80,//29 + 0x00ffdf72,//30 + 0x00ffd072,//-1 + 0x00ffd072,//0 + 0x00ffd080,//1 + 0x00ffd172,//2 + 0x00ffd180,//3 + 0x00ffd272,//4 + 0x00ffd280,//5 + 0x00ffd36d,//6 + 0x00ffd379,//7 + 0x00ffd46d,//8 + 0x00ffd479,//9 + 0x00ffd572,//10 + 0x00ffd580,//11 + 0x00ffd672,//12 + 0x00ffd680,//13 + 0x00ffd772,//14 + //high + 0x00ffc872,//11 + 0x00ffc880,//12 + 0x00ffc972,//13 + 0x00ffc980,//14 + 0x00ffca72,//15 + 0x00ffca80,//16 + 0x00ffcb72,//17 + 0x00ffcb80,//18 + 0x00ffcc72,//19 + 0x00ffcc80,//20 + 0x00ffcd72,//21 + 0x00ffcd80,//22 + 0x00ffce72,//23 + 0x00ffce80,//24 + 0x00ffcf72,//25 + 0x00ffcf80,//26 + 0x00ffc072,//-5 + 0x00ffc080,//-4 + 0x00ffc172,//-3 + 0x00ffc180,//-2 + 0x00ffc272,//-1 + 0x00ffc280,//0 + 0x00ffc372,//1 + 0x00ffc380,//2 + 0x00ffc472,//3 + 0x00ffc480,//4 + 0x00ffc572,//5 + 0x00ffc580,//6 + 0x00ffc672,//7 + 0x00ffc680,//8 + 0x00ffc772,//9 + 0x00ffc780,//10 + //low + 0x00ffc872,//11 + 0x00ffc880,//12 + 0x00ffc972,//13 + 0x00ffc980,//14 + 0x00ffca72,//15 + 0x00ffca80,//16 + 0x00ffcb72,//17 + 0x00ffcb80,//18 + 0x00ffcc72,//19 + 0x00ffcc80,//20 + 0x00ffcd72,//21 + 0x00ffcd80,//22 + 0x00ffce72,//23 + 0x00ffce80,//24 + 0x00ffcf72,//26 + 0x00ffcf80,//27 + 0x00ffc072,//-5 + 0x00ffc080,//-4 + 0x00ffc172,//-3 + 0x00ffc180,//-2 + 0x00ffc272,//-1 + 0x00ffc280,//0 + 0x00ffc372,//1 + 0x00ffc380,//2 + 0x00ffc472,//3 + 0x00ffc480,//4 + 0x00ffc572,//5 + 0x00ffc580,//6 + 0x00ffc672,//7 + 0x00ffc680,//8 + 0x00ffc772,//9 + 0x00ffc780,//10 +}; + +const uint32_t txgain_map_femkct_h[96] = +{ + //11b + 0x00ffd872,//15 + 0x00ffd880,//16 + 0x00ffd972,//17 + 0x00ffd980,//18 + 0x00ffd990,//19 + 0x00ffda72,//20 + 0x00ffda80,//21 + 0x00ffdb72,//22 + 0x00ffdb80,//23 + 0x00ffdc72,//24 + 0x00ffdc80,//25 + 0x00ffdd72,//26 + 0x00ffdd80,//27 + 0x00ffde72,//28 + 0x00ffde80,//29 + 0x00ffdf72,//30 + 0x00ffd072,//-1 + 0x00ffd072,//0 + 0x00ffd080,//1 + 0x00ffd172,//2 + 0x00ffd180,//3 + 0x00ffd272,//4 + 0x00ffd280,//5 + 0x00ffd379,//6 + 0x00ffd46d,//7 + 0x00ffd479,//8 + 0x00ffd572,//9 + 0x00ffd580,//10 + 0x00ffd672,//11 + 0x00ffd680,//12 + 0x00ffd772,//13 + 0x00ffd780,//14 + //high + 0x00ffc880,//11 + 0x00ffc972,//12 + 0x00ffc980,//13 + 0x00ffca72,//14 + 0x00ffca80,//15 + 0x00ffcb72,//16 + 0x00ffcb80,//17 + 0x00ffcc72,//18 + 0x00ffcc80,//19 + 0x00ffcc90,//20 + 0x00ffcd72,//21 + 0x00ffcd80,//22 + 0x00ffce72,//23 + 0x00ffce80,//24 + 0x00ffcf72,//25 + 0x00ffcf80,//26 + 0x00ffc080,//-5 + 0x00ffc172,//-4 + 0x00ffc180,//-3 + 0x00ffc272,//-2 + 0x00ffc280,//-1 + 0x00ffc372,//0 + 0x00ffc380,//1 + 0x00ffc472,//2 + 0x00ffc480,//3 + 0x00ffc572,//4 + 0x00ffc580,//5 + 0x00ffc672,//6 + 0x00ffc680,//7 + 0x00ffc772,//8 + 0x00ffc780,//9 + 0x00ffc872,//10 + //low + 0x00ffc880,//11 + 0x00ffc972,//12 + 0x00ffc980,//13 + 0x00ffca72,//14 + 0x00ffca80,//15 + 0x00ffcb72,//16 + 0x00ffcb80,//17 + 0x00ffcc72,//18 + 0x00ffcc80,//19 + 0x00ffcc90,//20 + 0x00ffcd72,//21 + 0x00ffcd80,//22 + 0x00ffce72,//23 + 0x00ffce80,//24 + 0x00ffcf72,//25 + 0x00ffcf80,//26 + 0x00ffc080,//-5 + 0x00ffc172,//-4 + 0x00ffc180,//-3 + 0x00ffc272,//-2 + 0x00ffc280,//-1 + 0x00ffc372,//0 + 0x00ffc380,//1 + 0x00ffc472,//2 + 0x00ffc480,//3 + 0x00ffc572,//4 + 0x00ffc580,//5 + 0x00ffc672,//6 + 0x00ffc680,//7 + 0x00ffc772,//8 + 0x00ffc780,//9 + 0x00ffc872,//10 +}; +#endif + u32 patch_tbl_func[][2] = { {0x00110054, 0x0018186D}, // same as jump_tbl idx 168 @@ -1770,6 +1986,7 @@ u32 patch_tbl_rf_func[][2] = }; +#if !defined(CONFIG_EXT_FEM_8800DCDW) u32 wifi_txgain_table_24g_8800dcdw[32] = { 0xA4B22189, //index 0 @@ -1914,6 +2131,80 @@ u32 wifi_txgain_table_24g_1_8800dcdw_h[32] = 0x00001825, }; +#else /* #ifdef CONFIG_EXT_FEM_8800DCDW */ +// ofdm +uint32_t wifi_txgain_table_24g_8800dcdw_femkct[32] = { + 0x919221C2, //index 0 + 0x00007825, + 0x899221C3, //index 1 + 0x00007825, + 0x8B9221C3, //index 2 + 0x00007825, + 0x929221C3, //index 3 + 0x00007825, + 0x949221C4, //index 4 + 0x00007825, + 0x969221C4, //index 5 + 0x00007825, + 0x949221C6, //index 6 + 0x00007825, + 0x949221C8, //index 7 + 0x00007825, + 0x9C9221C8, //index 8 + 0x00007825, + 0x9C9221CA, //index 9 + 0x00007825, + 0x9C9221CB, //index 10 + 0x00007825, + 0x939221D5, //index 11 + 0x00007825, + 0x9B9221D7, //index 12 + 0x00007825, + 0xA49221D7, //index 13 + 0x00007825, + 0xA79221D7, //index 14 + 0x00007825, + 0xBD9221D7, //index 15 + 0x00007825, +}; + +// 11b +uint32_t wifi_txgain_table_24g_1_8800dcdw_femkct[32] = { + 0x836E20C2, //index 0 + 0x00003024, + 0x856E20C2, //index 1 + 0x00003024, + 0x826E20C3, //index 2 + 0x00003024, + 0x836E20C3, //index 3 + 0x00003024, + 0x856E20C3, //index 4 + 0x00003024, + 0x876E20C3, //index 5 + 0x00003024, + 0x8B6E20C3, //index 6 + 0x00003024, + 0x926E20C4, //index 7 + 0x00003024, + 0x9A6E20C4, //index 8 + 0x00003024, + 0x936E20C5, //index 9 + 0x00003024, + 0x936E20C7, //index 10 + 0x00003024, + 0xA16E20C8, //index 11 + 0x00003024, + 0xA16E20CA, //index 12 + 0x00003024, + 0xA26E20CB, //index 13 + 0x00003024, + 0xAA6E20CD, //index 14 + 0x00003024, + 0xAC7220CF, //index 15 + 0x00003024, +}; +#endif + u32 wifi_rxgain_table_24g_20m_8800dcdw[64] = { 0x82f282d1,//index 0 0x9591a324, @@ -2277,6 +2568,10 @@ err: rf_misc_ram_lite_t dpd_res; #endif +#ifdef CONFIG_LOFT_CALIB +rf_misc_ram_lite_t loft_res_local; +#endif + int aicwf_patch_table_load(struct rwnx_hw *rwnx_hw, char *filename) { int err = 0; @@ -2513,11 +2808,21 @@ void aicwf_patch_config_8800dc(struct rwnx_hw *rwnx_hw) #if !defined(CONFIG_FPGA_VERIFICATION) if ((IS_CHIP_ID_H())) { + #if defined(CONFIG_EXT_FEM_8800DCDW) + txgain_cfg_size = sizeof(txgain_map_femkct_h); + txgain_cfg_array = (u32 *)txgain_map_femkct_h; + #else txgain_cfg_size = sizeof(txgain_map_h); txgain_cfg_array = (u32 *)txgain_map_h; + #endif } else { + #if defined(CONFIG_EXT_FEM_8800DCDW) + txgain_cfg_size = sizeof(txgain_map_femkct); + txgain_cfg_array = (u32 *)txgain_map_femkct; + #else txgain_cfg_size = sizeof(txgain_map); txgain_cfg_array = (u32 *)txgain_map; + #endif } ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, txgain_cfg_addr, txgain_cfg_size, txgain_cfg_array); if (ret) { @@ -2588,6 +2893,7 @@ int aicwf_set_rf_config_8800dc(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_c if (testmode == FW_NORMAL_MODE) { + #if !defined(CONFIG_EXT_FEM_8800DCDW) if (IS_CHIP_ID_H()) { if ((ret = rwnx_send_rf_config_req(rwnx_hw, 0, 1, (u8_l *)wifi_txgain_table_24g_8800dcdw_h, 128))) return -1; @@ -2599,6 +2905,18 @@ int aicwf_set_rf_config_8800dc(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_c if ((ret = rwnx_send_rf_config_req(rwnx_hw, 16, 1, (u8_l *)wifi_txgain_table_24g_1_8800dcdw, 128))) return -1; } + #else /* #ifdef CONFIG_EXT_FEM_8800DCDW */ + { + ret = rwnx_send_rf_config_req(rwnx_hw, 0, 1, (u8_l *)wifi_txgain_table_24g_8800dcdw_femkct, 128); + if (ret) { + return -1; + } + ret = rwnx_send_rf_config_req(rwnx_hw, 16, 1, (u8_l *)wifi_txgain_table_24g_1_8800dcdw_femkct, 128); + if (ret) { + return -1; + } + } + #endif if ((ret = rwnx_send_rf_config_req(rwnx_hw, 0, 0, (u8_l *)wifi_rxgain_table_24g_20m_8800dcdw, 256))) return -1; @@ -2629,6 +2947,14 @@ int aicwf_set_rf_config_8800dc(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_c return ret; } } + #elif defined(CONFIG_LOFT_CALIB) + if (loft_res_local.bit_mask[1]) { + ret = aicwf_loft_result_apply_8800dc(rwnx_hw, &loft_res_local); + if (ret) { + AICWFDBG(LOGINFO, "apply loft res fail: %d\n", ret); + return ret; + } + } #else { ret = aicwf_misc_ram_init_8800dc(rwnx_hw); @@ -2703,7 +3029,7 @@ int aicwf_plat_rftest_load_8800dc(struct rwnx_hw *rwnx_hw) return ret; } -#ifdef CONFIG_DPD +#if defined(CONFIG_DPD) || defined(CONFIG_LOFT_CALIB) int aicwf_misc_ram_valid_check_8800dc(struct rwnx_hw *rwnx_hw, int *valid_out) { int ret = 0; @@ -2712,61 +3038,81 @@ int aicwf_misc_ram_valid_check_8800dc(struct rwnx_hw *rwnx_hw, int *valid_out) uint32_t misc_ram_addr; uint32_t ram_base_addr, ram_word_cnt; uint32_t bit_mask[4]; + uint32_t dpd_info_read_addr = 0xfe004; + uint32_t boot_argc_read_addr = 0x1220f0; + uint32_t flash_size_mem_addr = 0x40038030; + uint8_t flash_size = 0; int i; if (valid_out) { *valid_out = 0; } - if (testmode == FW_RFTEST_MODE) { - uint32_t vect1 = 0; - uint32_t vect2 = 0; - cfg_base = RAM_LMAC_FW_ADDR + 0x0004; - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "cfg_base:%x vcet1 rd fail: %d\n", cfg_base, ret); - return ret; - } - vect1 = cfm.memdata; - if ((vect1 & 0xFFFF0000) != (RAM_LMAC_FW_ADDR & 0xFFFF0000)) { - AICWFDBG(LOGERROR, "vect1 invalid: %x\n", vect1); - return ret; - } - cfg_base = RAM_LMAC_FW_ADDR + 0x0008; - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base, &cfm); - if (ret) { - AICWFDBG(LOGERROR, "cfg_base:%x vcet2 rd fail: %d\n", cfg_base, ret); - return ret; - } - vect2 = cfm.memdata; - if ((vect2 & 0xFFFF0000) != (RAM_LMAC_FW_ADDR & 0xFFFF0000)) { - AICWFDBG(LOGERROR, "vect2 invalid: %x\n", vect2); - return ret; - } - cfg_base = RAM_LMAC_FW_ADDR + 0x0164; - } - // init misc ram - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x14, &cfm); + + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, boot_argc_read_addr, &cfm); if (ret) { - AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", cfg_base + 0x14, ret); + AICWFDBG(LOGERROR, "boot argc [0x%x] rd fail: %d\n", boot_argc_read_addr, ret); + return ret; + } + printk("boot argc %x\n", cfm.memdata); + if (cfm.memdata & 0x10) { + *valid_out = 1; return ret; } - misc_ram_addr = cfm.memdata; - AICWFDBG(LOGERROR, "misc_ram_addr=%x\n", misc_ram_addr); - // bit_mask - ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); - ram_word_cnt = (MEMBER_SIZE(rf_misc_ram_t, bit_mask) + MEMBER_SIZE(rf_misc_ram_t, reserved)) / 4; - for (i = 0; i < ram_word_cnt; i++) { - ret = rwnx_send_dbg_mem_read_req(rwnx_hw, ram_base_addr + i * 4, &cfm); + if (chip_mcu_id) { + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, flash_size_mem_addr, &cfm); if (ret) { - AICWFDBG(LOGERROR, "bit_mask[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); + AICWFDBG(LOGERROR, "flash size[0x%x] rd fail: %d\n", flash_size_mem_addr, ret); return ret; } - bit_mask[i] = cfm.memdata; - } - AICWFDBG(LOGTRACE, "bit_mask:%x,%x,%x,%x\n",bit_mask[0],bit_mask[1],bit_mask[2],bit_mask[3]); - if ((bit_mask[0] == 0) && ((bit_mask[1] & 0xFFF00000) == 0x80000000) && - (bit_mask[2] == 0) && ((bit_mask[3] & 0xFFFFFF00) == 0x00000000)) { - if (valid_out) { - *valid_out = 1; + flash_size = cfm.memdata & 0xff; + printk("flash size %x\n", flash_size); + if (flash_size == 0x16) { + dpd_info_read_addr += 0x4300000; + } else if (flash_size == 0x15) { + dpd_info_read_addr += 0x4100000; + } else if (flash_size == 0x18) { + dpd_info_read_addr += 0x4700000; + } else { + dpd_info_read_addr += 0x4100000; + } + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, dpd_info_read_addr, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "dpd info [0x%x] rd fail: %d\n", dpd_info_read_addr, ret); + return ret; + } + if (cfm.memdata & (1<<7)) { + if (valid_out) { + *valid_out = 1; + } + } + } else { + if (testmode == FW_RFTEST_MODE) { + cfg_base = RAM_LMAC_FW_ADDR + 0x0164; + } + // init misc ram + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x14, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + AICWFDBG(LOGERROR, "misc_ram_addr=%x\n", misc_ram_addr); + // bit_mask + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); + ram_word_cnt = (MEMBER_SIZE(rf_misc_ram_t, bit_mask) + MEMBER_SIZE(rf_misc_ram_t, reserved)) / 4; + for (i = 0; i < ram_word_cnt; i++) { + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, ram_base_addr + i * 4, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "bit_mask[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); + return ret; + } + bit_mask[i] = cfm.memdata; + } + AICWFDBG(LOGTRACE, "bit_mask:%x,%x,%x,%x\n",bit_mask[0],bit_mask[1],bit_mask[2],bit_mask[3]); + if ((bit_mask[0] == 0) && ((bit_mask[1] & 0xFFF00000) == 0x80000000) && + (bit_mask[2] == 0) && ((bit_mask[3] & 0xFFFFFF00) == 0x00000000)) { + if (valid_out) { + *valid_out = 1; + } } } return ret; @@ -2879,7 +3225,7 @@ int aicwf_dpd_calib_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *dpd_res) for (i = 0; i < ram_word_cnt; i++) { ret = rwnx_send_dbg_mem_read_req(rwnx_hw, ram_base_addr + i * 4, &cfm); if (ret) { - AICWFDBG(LOGERROR, "bit_mask[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); + AICWFDBG(LOGERROR, "dpd_high[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); return ret; } dpd_res->dpd_high[i] = cfm.memdata; @@ -2890,7 +3236,7 @@ int aicwf_dpd_calib_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *dpd_res) for (i = 0; i < ram_word_cnt; i++) { ret = rwnx_send_dbg_mem_read_req(rwnx_hw, ram_base_addr + i * 4, &cfm); if (ret) { - AICWFDBG(LOGERROR, "bit_mask[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); + AICWFDBG(LOGERROR, "loft_res[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); return ret; } dpd_res->loft_res[i] = cfm.memdata; @@ -3023,6 +3369,117 @@ int aicwf_dpd_result_write_8800dc(void *buf, int buf_len) #endif /* !CONFIG_FORCE_DPD_CALIB */ #endif +#ifdef CONFIG_LOFT_CALIB +int aicwf_loft_calib_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *loft_res) +{ + int ret = 0; + uint32_t fw_addr, boot_type; + int valid_flag; + ret = aicwf_misc_ram_valid_check_8800dc(rwnx_hw, &valid_flag); + if (ret) { + AICWFDBG(LOGINFO, "misc ram check fail: %d\n", ret); + return ret; + } + if (valid_flag) { + AICWFDBG(LOGINFO, "misc ram valid, skip calib process\n"); + return ret; + } + ret = aicwf_plat_calib_load_8800dc(rwnx_hw); + if (ret) { + AICWFDBG(LOGINFO, "load calib bin fail: %d\n", ret); + return ret; + } + /* fw start */ + fw_addr = 0x00130009; + boot_type = HOST_START_APP_FNCALL; + AICWFDBG(LOGINFO, "Start app: %08x, %d\n", fw_addr, boot_type); + ret = rwnx_send_dbg_start_app_req(rwnx_hw, fw_addr, boot_type); + if (ret) { + AICWFDBG(LOGINFO, "start app fail: %d\n", ret); + return ret; + } + { // read loft res + const uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t ram_base_addr, ram_word_cnt; + int i; + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x14, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + // bit_mask + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); + ram_word_cnt = (MEMBER_SIZE(rf_misc_ram_t, bit_mask) + MEMBER_SIZE(rf_misc_ram_t, reserved)) / 4; + for (i = 0; i < ram_word_cnt; i++) { + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, ram_base_addr + i * 4, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "bit_mask[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); + return ret; + } + loft_res->bit_mask[i] = cfm.memdata; + } + // loft_res + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); + ram_word_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res) / 4; + for (i = 0; i < ram_word_cnt; i++) { + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, ram_base_addr + i * 4, &cfm); + if (ret) { + AICWFDBG(LOGERROR, "loft_res[0x%x] rd fail: %d\n", ram_base_addr + i * 4, ret); + return ret; + } + loft_res->loft_res[i] = cfm.memdata; + } + } + return ret; +} + +int aicwf_loft_result_apply_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *loft_res) +{ + int ret = 0; + uint32_t cfg_base = 0x10164; + struct dbg_mem_read_cfm cfm; + uint32_t misc_ram_addr; + uint32_t ram_base_addr, ram_byte_cnt; + AICWFDBG(LOGINFO, "bit_mask[1]=%x\n", loft_res->bit_mask[1]); + if (loft_res->bit_mask[1] == 0) { + AICWFDBG(LOGERROR, "void loft_res, bypass it.\n"); + return 0; + } + if (testmode == FW_RFTEST_MODE) { + cfg_base = RAM_LMAC_FW_ADDR + 0x0164; + } + if ((ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cfg_base + 0x14, &cfm))) { + AICWFDBG(LOGERROR, "rf misc ram[0x%x] rd fail: %d\n", cfg_base + 0x14, ret); + return ret; + } + misc_ram_addr = cfm.memdata; + AICWFDBG(LOGINFO, "misc_ram_addr: %x\n", misc_ram_addr); + /* Copy loft_res on the Embedded side */ + // bit_mask + AICWFDBG(LOGINFO, "bit_mask[0]=%x\n", loft_res->bit_mask[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, bit_mask); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, bit_mask) + MEMBER_SIZE(rf_misc_ram_t, reserved); + ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ram_base_addr, ram_byte_cnt, (u32 *)&loft_res->bit_mask[0]); + if (ret) { + AICWFDBG(LOGERROR, "bit_mask wr fail: %x, ret:%d\r\n", ram_base_addr, ret); + return ret; + } + // loft_res + AICWFDBG(LOGINFO, "loft_res[0]=%x\n", loft_res->loft_res[0]); + ram_base_addr = misc_ram_addr + offsetof(rf_misc_ram_t, loft_res); + ram_byte_cnt = MEMBER_SIZE(rf_misc_ram_t, loft_res); + ret = rwnx_send_dbg_mem_block_write_req(rwnx_hw, ram_base_addr, ram_byte_cnt, (u32 *)&loft_res->loft_res[0]); + if (ret) { + AICWFDBG(LOGERROR, "loft_res wr fail: %x, ret:%d\r\n", ram_base_addr, ret); + return ret; + } + return ret; +} +#endif + int rwnx_plat_userconfig_load_8800dc(struct rwnx_hw *rwnx_hw){ int size; u32 *dst=NULL; @@ -3054,6 +3511,14 @@ int rwnx_plat_userconfig_load_8800dw(struct rwnx_hw *rwnx_hw){ int size; u32 *dst=NULL; char *filename = FW_USERCONFIG_NAME_8800DW; + if (rwnx_hw->usbdev->pid == USB_PRODUCT_ID_TENDA) { + filename = FW_USERCONFIG_NAME_8800DW_W311; + } else if (rwnx_hw->usbdev->pid == USB_PRODUCT_ID_TENDA_U2 + || rwnx_hw->usbdev->pid == USB_PRODUCT_ID_AIC8800FC_CUS1 + || rwnx_hw->usbdev->pid == USB_PRODUCT_ID_AIC8800FC_CUS2 + || rwnx_hw->usbdev->pid == USB_PRODUCT_ID_AIC8800FC_CUS3) { + filename = FW_USERCONFIG_NAME_8800DW_U2; + } AICWFDBG(LOGINFO, "userconfig file path:%s \r\n", filename); @@ -3078,7 +3543,7 @@ int rwnx_plat_userconfig_load_8800dw(struct rwnx_hw *rwnx_hw){ } #ifdef CONFIG_POWER_LIMIT -extern char default_ccode[]; +extern char country_code[]; int rwnx_plat_powerlimit_load_8800dcdw(struct rwnx_hw *rwnx_hw, uint16_t chip_id) { @@ -3107,7 +3572,7 @@ int rwnx_plat_powerlimit_load_8800dcdw(struct rwnx_hw *rwnx_hw, uint16_t chip_id /* Copy the file on the Embedded side */ AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); - rwnx_plat_powerlimit_parsing((char *)dst, size, default_ccode); + rwnx_plat_powerlimit_parsing((char *)dst, size, country_code); rwnx_release_firmware_common(&dst); @@ -3162,6 +3627,7 @@ void system_config_8800dc(struct rwnx_hw *rwnx_hw){ array3_tbl_t p_syscfg_msk_tbl; int ret, cnt; const u32 mem_addr = 0x40500000; + const u32 cache_mem_addr = 0x40100020; struct dbg_mem_read_cfm rd_mem_addr_cfm; ret = rwnx_send_dbg_mem_read_req(rwnx_hw, mem_addr, &rd_mem_addr_cfm); @@ -3175,6 +3641,21 @@ void system_config_8800dc(struct rwnx_hw *rwnx_hw){ chip_mcu_id = 1; } + if (chip_mcu_id) { + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, cache_mem_addr, &rd_mem_addr_cfm); + if (ret) { + AICWFDBG(LOGERROR, "%x rd fail: %d\n", mem_addr, ret); + return; + } + rd_mem_addr_cfm.memdata |= 0x01; + ret = rwnx_send_dbg_mem_write_req(rwnx_hw, cache_mem_addr, rd_mem_addr_cfm.memdata); + + if (ret) { + AICWFDBG(LOGERROR, "%x write fail: %d\n", cache_mem_addr, ret); + return; + } + } + ret = rwnx_send_dbg_mem_read_req(rwnx_hw, 0x00000020, &rd_mem_addr_cfm); if (ret) { AICWFDBG(LOGERROR, "[0x00000020] rd fail: %d\n", ret); diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800dc.h b/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800dc.h index a46bd64..c0e53cb 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800dc.h +++ b/drivers/aic8800/aic8800_fdrv/aicwf_compat_8800dc.h @@ -1,6 +1,6 @@ #include -#ifdef CONFIG_DPD +#if defined(CONFIG_DPD) || defined(CONFIG_LOFT_CALIB) typedef struct { uint32_t bit_mask[3]; uint32_t reserved; @@ -22,17 +22,25 @@ typedef struct { #define MEMBER_SIZE(type, member) sizeof(((type *)0)->member) #define DPD_RESULT_SIZE_8800DC sizeof(rf_misc_ram_lite_t) +#endif +#ifdef CONFIG_DPD extern rf_misc_ram_lite_t dpd_res; #endif +#ifdef CONFIG_LOFT_CALIB +extern rf_misc_ram_lite_t loft_res_local; +#endif + int aicwf_patch_table_load(struct rwnx_hw *rwnx_hw, char *filename); void aicwf_patch_config_8800dc(struct rwnx_hw *rwnx_hw); int aicwf_set_rf_config_8800dc(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm *cfm); int aicwf_misc_ram_init_8800dc(struct rwnx_hw *rwnx_hw); -#ifdef CONFIG_DPD +#if defined(CONFIG_DPD) || defined(CONFIG_LOFT_CALIB) int aicwf_misc_ram_valid_check_8800dc(struct rwnx_hw *rwnx_hw, int *valid_out); int aicwf_plat_calib_load_8800dc(struct rwnx_hw *rwnx_hw); +#endif +#ifdef CONFIG_DPD int aicwf_dpd_calib_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *dpd_res); int aicwf_dpd_result_apply_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *dpd_res); #ifndef CONFIG_FORCE_DPD_CALIB @@ -40,6 +48,10 @@ int aicwf_dpd_result_load_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *dp int aicwf_dpd_result_write_8800dc(void *buf, int buf_len); #endif #endif +#ifdef CONFIG_LOFT_CALIB +int aicwf_loft_calib_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *loft_res); +int aicwf_loft_result_apply_8800dc(struct rwnx_hw *rwnx_hw, rf_misc_ram_lite_t *loft_res); +#endif int aicwf_plat_patch_load_8800dc(struct rwnx_hw *rwnx_hw); int aicwf_plat_rftest_load_8800dc(struct rwnx_hw *rwnx_hw); int rwnx_plat_userconfig_load_8800dc(struct rwnx_hw *rwnx_hw); diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_debug.h b/drivers/aic8800/aic8800_fdrv/aicwf_debug.h index 12fdca6..bec2500 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_debug.h +++ b/drivers/aic8800/aic8800_fdrv/aicwf_debug.h @@ -10,6 +10,7 @@ #define LOGTRACE 0x0004 #define LOGDEBUG 0x0008 #define LOGDATA 0x0010 +#define LOGSTEER 0x0020 extern int aicwf_dbg_level; void rwnx_data_dump(char* tag, void* data, unsigned long len); diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_manager.c b/drivers/aic8800/aic8800_fdrv/aicwf_manager.c new file mode 100644 index 0000000..289e108 --- /dev/null +++ b/drivers/aic8800/aic8800_fdrv/aicwf_manager.c @@ -0,0 +1,601 @@ +/** + ****************************************************************************** + * + * Copyright (C) 2020 AIC semiconductor. + * + * @file aicwf_manager.c + * + * @brief netlink msg definitions + * + ****************************************************************************** + */ + +#include +#include +#include +#include "aicwf_manager.h" +#include "lmac_mac.h" +#include "aicwf_debug.h" + +#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" +#define MAC_ARG(x) ((u8_l *)(x))[0], ((u8_l *)(x))[1], ((u8_l *)(x))[2], ((u8_l *)(x))[3], ((u8_l *)(x))[4], ((u8_l *)(x))[5] +#define MANAGER_STR "[MANAGER] USB " + + +static struct sock *nl_sock = NULL; + +static struct rwnx_vif *nl_rwnx_vif[PHY_BAND_MAX][CONFIG_IFACE_NUMBER] = {{NULL}}; +static u8_l nl_hook[PHY_BAND_MAX][CONFIG_IFACE_NUMBER] = {{0}}; + +static u8_l nl_daemon_on = 0; + +#define FREQ_2G_MIN 2412 +#define FREQ_2G_MAX 2484 +#define FREQ_5G_MIN 5170 +#define FREQ_5G_MAX 5825 +#define FREQ_6G_MIN 5925 +#define FREQ_6G_MAX 7125 + +static int freq_to_channel(int freq) +{ + if (freq >= FREQ_2G_MIN && freq <= FREQ_2G_MAX) { + if (freq == 2484) { + return 14; + } else { + return (freq - 2412) / 5 + 1; + } + } else if (freq >= FREQ_5G_MIN && freq <= FREQ_5G_MAX) { + return (freq - 5000) / 5; + } else if (freq >= FREQ_6G_MIN && freq <= FREQ_6G_MAX) { + return (freq - 5950) / 5; + } else { + AICWFDBG(LOGERROR, MANAGER_STR"aic Unsupported frequency: %d MHz\n", freq); + return -1; + } +} + + +void aicwf_nl_recv_msg(struct sk_buff *skb) +{ + struct rwnx_vif *rwnx_vif; + struct rwnx_sta *sta = NULL; + u8_l rwnx_hook = 0; + u8_l band; + u8_l ssid; + struct nlmsghdr *nlh = NULL; + struct b_nl_message *msg = NULL; + struct b_elm_header *hdr = NULL; + struct b_elm_intf *intf = NULL; + struct b_elm_sta_info *sta_info = NULL; + struct b_elm_roam_info *roam_info = NULL; + u32 offset = 0; + + if (skb == NULL) { + AICWFDBG(LOGERROR, MANAGER_STR"skb is null.\n"); + return; + } + + nlh = (struct nlmsghdr *)skb->data; + msg = (struct b_nl_message *)NLMSG_DATA(nlh); + + AICWFDBG(LOGSTEER, MANAGER_STR"%s, %d\n", __func__, msg->type); + + /* message type */ + switch(msg->type) { + case AIC_NL_DAEMON_ON_TYPE: + nl_daemon_on = 1; + AICWFDBG(LOGSTEER, MANAGER_STR"AIC_NL_DAEMON_ON_TYPE\n"); + for (band = 0; band < PHY_BAND_MAX; band++) { + for (ssid = 0; ssid < CONFIG_IFACE_NUMBER; ssid++) { + rwnx_vif = nl_rwnx_vif[band][ssid]; + rwnx_hook = nl_hook[band][ssid]; + + if (!rwnx_hook) { + AICWFDBG(LOGSTEER, MANAGER_STR"%s, !rwnx_hook, %d,%d\n", __func__, band, ssid); + continue; + } + if (rwnx_vif == NULL || rwnx_vif->up == false) { + AICWFDBG(LOGSTEER, MANAGER_STR"%s, !rwnx_vif, %d,%d\n", __func__, band, ssid); + continue; + } + +#ifdef CONFIG_BAND_STEERING + aicwf_band_steering_init(rwnx_vif); +#endif + + spin_lock_bh(&rwnx_vif->rwnx_hw->cb_lock); + list_for_each_entry(sta, &rwnx_vif->ap.sta_list, list){ + if (sta->valid) + aicwf_nl_send_new_sta_msg(rwnx_vif, sta->mac_addr); + } + spin_unlock_bh(&rwnx_vif->rwnx_hw->cb_lock); + } + } + break; + case AIC_NL_DAEMON_OFF_TYPE: + nl_daemon_on = 0; + break; +#ifdef CONFIG_BAND_STEERING + case AIC_NL_B_STEER_BLOCK_ADD_TYPE: + case AIC_NL_B_STEER_BLOCK_DEL_TYPE: + while (offset < msg->len) { + hdr = (struct b_elm_header *)(msg->content + offset); + offset += ELM_HEADER_LEN; + + switch(hdr->id) { + case AIC_ELM_INTF_ID: + intf = (struct b_elm_intf *)(msg->content + offset); + break; + case AIC_ELM_STA_INFO_ID: + sta_info = (struct b_elm_sta_info *)(msg->content + offset); + break; + default: + AICWFDBG(LOGERROR, MANAGER_STR"unknown element id.\n"); + break; + } + offset += hdr->len; + } + + if (intf && sta_info) { + band = intf->band; + ssid = intf->ssid; + AICWFDBG(LOGSTEER, MANAGER_STR"STEER_BLOCK band: %d, ssid: %d\n", band, ssid); + rwnx_vif = nl_rwnx_vif[band][ssid]; + rwnx_hook = nl_hook[band][ssid]; + + if (!rwnx_hook) { + AICWFDBG(LOGSTEER, MANAGER_STR"rwnx_hook is null p1.\n"); + break; + } + if (rwnx_vif == NULL || rwnx_vif->up == false) { + AICWFDBG(LOGSTEER, MANAGER_STR"rwnx_vif is null/down p1.\n"); + break; + } + + if (msg->type == AIC_NL_B_STEER_BLOCK_ADD_TYPE) + aicwf_band_steering_block_entry_add(rwnx_vif, sta_info->mac); + else if (msg->type == AIC_NL_B_STEER_BLOCK_DEL_TYPE) + aicwf_band_steering_block_entry_del(rwnx_vif, sta_info->mac); + } + break; + case AIC_NL_B_STEER_ROAM_TYPE: + while (offset < msg->len) { + hdr = (struct b_elm_header *)(msg->content + offset); + offset += ELM_HEADER_LEN; + + /* element type: should handle wrong length */ + switch(hdr->id) { + case AIC_ELM_INTF_ID: + intf = (struct b_elm_intf *)(msg->content + offset); + break; + case AIC_ELM_ROAM_INFO_ID: + roam_info = (struct b_elm_roam_info *)(msg->content + offset); + break; + default: + AICWFDBG(LOGERROR, MANAGER_STR"unknown element id.\n"); + break; + } + offset += hdr->len; + } + + if (intf && roam_info) { + band = intf->band; + ssid = intf->ssid; + rwnx_vif = nl_rwnx_vif[band][ssid]; + rwnx_hook = nl_hook[band][ssid]; + + if (!rwnx_hook) { + AICWFDBG(LOGERROR, MANAGER_STR"rwnx_hook is null p2.\n"); + break; + } + if (rwnx_vif == NULL || rwnx_vif->up == false) { + AICWFDBG(LOGERROR, MANAGER_STR"rwnx_vif is null/down p2.\n"); + break; + } + + AICWFDBG(LOGSTEER, MANAGER_STR"AIC_NL_B_STEER_ROAM_TYPE (hostapd_cli)!\n"); + AICWFDBG(LOGSTEER, MANAGER_STR"sta_mac="MAC_FMT"\n", MAC_ARG(roam_info->sta_mac)); + AICWFDBG(LOGSTEER, MANAGER_STR"bss_mac="MAC_FMT" bss_ch=%u method=%s\n", + MAC_ARG(roam_info->bss_mac), + roam_info->bss_ch, + roam_info->method == 0 ? "11V" : "Deauth"); + + if (roam_info->method == 1) + aicwf_band_steering_roam_block_entry_add(rwnx_vif, roam_info->sta_mac); + } + break; +#endif + default: + AICWFDBG(LOGERROR, MANAGER_STR"unknown message type.\n"); + break; + } + + return; +} + +void aicwf_nl_send_msg(void *msg, u32 msg_len) +{ + struct nlmsghdr *nlh = NULL; + struct sk_buff *skb = NULL; + u32 skb_len; + s32 err; + + skb_len = NLMSG_SPACE(NL_MAX_MSG_SIZE); + skb = __dev_alloc_skb(skb_len, GFP_ATOMIC); + if (!skb) { + AICWFDBG(LOGERROR, MANAGER_STR"allocate skb failed.\n"); + goto func_return; + } + + nlh = nlmsg_put(skb, 0, 0, 0, NL_MAX_MSG_SIZE, 0); + if (!nlh) { + AICWFDBG(LOGERROR, MANAGER_STR"put netlink header failed.\n"); + kfree_skb(skb); + goto func_return; + } + + NETLINK_CB(skb).portid = 0; + NETLINK_CB(skb).dst_group = 0; + memset(NLMSG_DATA(nlh), 0, msg_len); + memcpy(NLMSG_DATA(nlh), (u8_l *)msg, msg_len); + + if (!nl_sock) { + AICWFDBG(LOGERROR, MANAGER_STR"[%s %u] nl_sock is NULL\n", __FUNCTION__, __LINE__); + goto msg_fail_skb; + } + + err = netlink_unicast(nl_sock, skb, NL_AIC_MANAGER_PID, MSG_DONTWAIT); + + if (err < 0) { + /* netlink_unicast() already kfree_skb */ + AICWFDBG(LOGSTEER, MANAGER_STR"send netlink unicast failed.\n"); + goto func_return; + } + +func_return: + return; + +msg_fail_skb: + kfree_skb(skb); +} + +static void aicwf_netlink_set_msg( + struct b_nl_message *msg, u32 *msg_len, void *elm, u32 elm_len) +{ + memcpy(msg->content + (*msg_len), elm, elm_len); + (*msg_len) += elm_len; + + return; +} + +void aicwf_nl_send_del_sta_msg(struct rwnx_vif *rwnx_vif, u8_l *mac) +{ + u32 msg_len = 0; + struct b_nl_message msg = {0}; + struct b_elm_header hdr = {0}; + struct b_elm_intf intf = {{0}}; + struct b_elm_sta_info sta_info = {{0}}; + + if (!nl_daemon_on) + return; + + AICWFDBG(LOGSTEER, MANAGER_STR"%s, "MAC_FMT"\n", __func__, MAC_ARG(mac)); + + /* element header */ + hdr.id = AIC_ELM_INTF_ID; + hdr.len = ELM_INTF_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_INTF_ID */ + intf.root = 0; /* TBD */ + intf.band = rwnx_vif->ap.band; + intf.ssid = rwnx_vif->rwnx_hw->iface_idx; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&intf, ELM_INTF_LEN); + + /* element header */ + hdr.id = AIC_ELM_STA_INFO_ID; + hdr.len = ELM_STA_INFO_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_STA_INFO_ID */ + memcpy(sta_info.mac, mac, 6); + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&sta_info, ELM_STA_INFO_LEN); + + /* finish message */ + msg.type = AIC_NL_DEL_STA_TYPE; + msg.len = msg_len; + + /* length += (type + len) */ + msg_len += 8; + aicwf_nl_send_msg((void *)&msg, msg_len); + + return; +} + +void aicwf_nl_send_new_sta_msg(struct rwnx_vif *rwnx_vif, u8_l *mac) +{ + u32 msg_len = 0; + struct b_nl_message msg = {0}; + struct b_elm_header hdr = {0}; + struct b_elm_intf intf = {{0}}; + struct b_elm_sta_info sta_info = {{0}}; + + if (!nl_daemon_on) + return; + + AICWFDBG(LOGSTEER, MANAGER_STR"%s, "MAC_FMT"\n", __func__, MAC_ARG(mac)); + + /* element header */ + hdr.id = AIC_ELM_INTF_ID; + hdr.len = ELM_INTF_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_INTF_ID */ + intf.root = 0; /* TBD */ + intf.band = rwnx_vif->ap.band; + intf.ssid = rwnx_vif->rwnx_hw->iface_idx; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&intf, ELM_INTF_LEN); + + /* element header */ + hdr.id = AIC_ELM_STA_INFO_ID; + hdr.len = ELM_STA_INFO_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_STA_INFO_ID */ + memcpy(sta_info.mac, mac, 6); + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&sta_info, ELM_STA_INFO_LEN); + + /* finish message */ + msg.type = AIC_NL_NEW_STA_TYPE; + msg.len = msg_len; + + /* length += (type + len) */ + msg_len += 8; + aicwf_nl_send_msg((void *)&msg, msg_len); + + return; +} + +void aicwf_nl_send_intf_rpt_msg(struct rwnx_vif *rwnx_vif) +{ + u32 msg_len = 0; + struct b_nl_message msg = {0}; + struct b_elm_header hdr = {0}; + struct b_elm_intf intf = {{0}}; + struct b_elm_intf_info intf_info = {0}; + + if (!nl_daemon_on) + return; + + /* element header */ + hdr.id = AIC_ELM_INTF_ID; + hdr.len = ELM_INTF_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_INTF_ID */ + memcpy(intf.mac, rwnx_vif->ndev->dev_addr, 6); + intf.root = 0; /* TBD */ + intf.band = rwnx_vif->ap.band; + intf.ssid = rwnx_vif->rwnx_hw->iface_idx; + memcpy(intf.name, rwnx_vif->ndev->name, 16); + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&intf, ELM_INTF_LEN); + + /* element header */ + hdr.id = AIC_ELM_INTF_INFO_ID; + hdr.len = ELM_INTF_INFO_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_INTF_INFO_ID */ + intf_info.ch = freq_to_channel(rwnx_vif->ap.freq); + intf_info.tx_tp = 0; /* TBD */ + intf_info.rx_tp = 0; /* TBD */ + + intf_info.bss_info = 0; + intf_info.reg_class = (rwnx_vif->ap.band == 0) ? 81 : 128; + intf_info.phy_type = 7; + + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&intf_info, ELM_INTF_INFO_LEN); + + /* finish message */ + msg.type = AIC_NL_INTF_RPT_TYPE; + msg.len = msg_len; + + /* length += (type + len) */ + msg_len += 8; + aicwf_nl_send_msg((void *)&msg, msg_len); + + return; +} + +void aicwf_nl_send_sta_rpt_msg(struct rwnx_vif *rwnx_vif, struct rwnx_sta *sta) +{ + u32 msg_len = 0; + struct b_nl_message msg = {0}; + struct b_elm_header hdr = {0}; + struct b_elm_intf intf = {{0}}; + struct b_elm_sta_info sta_info = {{0}}; + struct b_elm_sta_info_ext sta_info_ext = {{0}}; + + if (!nl_daemon_on) + return; + + /* element header */ + hdr.id = AIC_ELM_INTF_ID; + hdr.len = ELM_INTF_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_INTF_ID */ + memcpy(intf.mac, rwnx_vif->ndev->dev_addr, 6); + intf.root = 0; /* TBD */ + intf.band = rwnx_vif->ap.band; + intf.ssid = rwnx_vif->rwnx_hw->iface_idx; + memcpy(intf.name, rwnx_vif->ndev->name, 16); + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&intf, ELM_INTF_LEN); + + /* element header */ + hdr.id = AIC_ELM_STA_INFO_ID; + hdr.len = ELM_STA_INFO_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_STA_INFO_ID */ + memcpy(sta_info.mac, sta->mac_addr, 6); + sta_info.rssi = sta->rssi; + sta_info.link_time = sta->link_time; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&sta_info, ELM_STA_INFO_LEN); + + /* element header */ + hdr.id = AIC_ELM_STA_INFO_EXT_ID; + hdr.len = ELM_STA_INFO_EXT_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_STA_INFO_EXT_ID */ + memcpy(sta_info_ext.mac, sta->mac_addr, 6); + sta_info_ext.supported_band = sta->support_band; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&sta_info_ext, ELM_STA_INFO_EXT_LEN); + + /* finish message */ + msg.type = AIC_NL_STA_RPT_TYPE; + msg.len = msg_len; + + /* length += (type + len) */ + msg_len += 8; + aicwf_nl_send_msg((void *)&msg, msg_len); + + return; +} + +void aicwf_nl_send_frame_rpt_msg(struct rwnx_vif *rwnx_vif, u16_l frame_type, u8_l *sa, s8_l rssi) +{ + u32 msg_len = 0; + struct b_nl_message msg = {0}; + struct b_elm_header hdr = {0}; + struct b_elm_frame_info frame_info = {0}; + struct b_elm_intf intf = {{0}}; + + if (!nl_daemon_on) + return; + + //AICWFDBG(LOGSTEER, "[NETLINK] %s, sta: "MAC_FMT"\n", __func__, MAC_ARG(sa)); + + /* TBD */ + if (frame_type == WIFI_PROBEREQ && rssi <= LOW_RSSI_IGNORE) { + AICWFDBG(LOGSTEER, MANAGER_STR"WIFI_PROBEREQ <= %d, ignore\n", LOW_RSSI_IGNORE); + return; + } + + /* element header */ + hdr.id = AIC_ELM_INTF_ID; + hdr.len = ELM_INTF_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_INTF_ID */ + intf.root = 0; /* TBD */ + intf.band = rwnx_vif->ap.band; + intf.ssid = rwnx_vif->rwnx_hw->iface_idx; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&intf, ELM_INTF_LEN); + + /* element header */ + hdr.id = AIC_ELM_FRAME_INFO_ID; + hdr.len = ELM_FRAME_INFO_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_FRAME_INFO_ID */ + frame_info.frame_type = frame_type; + memcpy(frame_info.sa, sa, 6); + frame_info.rssi = rssi; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&frame_info, ELM_FRAME_INFO_LEN); + + /* finish message */ + msg.type = AIC_NL_FRAME_RPT_TYPE; + msg.len = msg_len; + + /* length += (type + len) */ + msg_len += 8; + aicwf_nl_send_msg((void *)&msg, msg_len); + + return; +} + +void aicwf_nl_send_time_tick_msg(struct rwnx_vif *rwnx_vif) +{ + u32 msg_len = 0; + struct b_nl_message msg = {0}; + struct b_elm_header hdr = {0}; + struct b_elm_intf intf = {{0}}; + + if (!nl_daemon_on) + return; + + /* element header */ + hdr.id = AIC_ELM_INTF_ID; + hdr.len = ELM_INTF_LEN; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&hdr, ELM_HEADER_LEN); + + /* element: AIC_ELM_INTF_ID */ + intf.root = 0; /* TBD */ + intf.band = rwnx_vif->ap.band; + intf.ssid = rwnx_vif->rwnx_hw->iface_idx; + aicwf_netlink_set_msg(&msg, &msg_len, (void *)&intf, ELM_INTF_LEN); + + /* finish message */ + msg.type = AIC_NL_TIME_TICK_TYPE; + msg.len = msg_len; + + /* length += (type + len) */ + msg_len += 8; + aicwf_nl_send_msg((void *)&msg, msg_len); + + return; +} + +void aicwf_nl_hook(struct rwnx_vif *rwnx_vif, u8_l band, u8_l ssid) +{ + AICWFDBG(LOGSTEER, MANAGER_STR"%s band:%d, ssid:%d\n", __func__, band, ssid); + + nl_hook[band][ssid] = 1; + nl_rwnx_vif[band][ssid] = rwnx_vif; + + return; +} + +void aicwf_nl_hook_deinit(u8_l band, u8_l ssid) +{ + + AICWFDBG(LOGSTEER, MANAGER_STR"%s band:%d, ssid:%d\n", __func__, band, ssid); + + nl_hook[band][ssid] = 0; + nl_rwnx_vif[band][ssid] = NULL; + + return; +} + + +void aicwf_nl_init(void) +{ + if (nl_sock) { + AICWFDBG(LOGSTEER, MANAGER_STR"netlink already init.\n"); + return; + } + struct netlink_kernel_cfg cfg = { + .input = aicwf_nl_recv_msg, + }; + + nl_sock = netlink_kernel_create(&init_net, NL_AIC_PROTOCOL, &cfg); + if (!nl_sock) + AICWFDBG(LOGERROR, MANAGER_STR"create netlink falied.\n"); + + return; +} + +void aicwf_nl_deinit(void) +{ + if(nl_sock) + { + netlink_kernel_release(nl_sock); + nl_sock = NULL; + } + AICWFDBG(LOGSTEER, MANAGER_STR"[aicwf_nl_deinit] delete nl_sock netlink succeed.\n"); + + return; +} + diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_manager.h b/drivers/aic8800/aic8800_fdrv/aicwf_manager.h new file mode 100644 index 0000000..36db12a --- /dev/null +++ b/drivers/aic8800/aic8800_fdrv/aicwf_manager.h @@ -0,0 +1,146 @@ +#ifndef _AICWF_MANAGER_H_ +#define _AICWF_MANAGER_H_ + +#include "lmac_types.h" +#include "rwnx_defs.h" + +#define DRV_WLAN_MANAGER_VER "v1.0" + + +/* TBD */ +#define CONFIG_IFACE_NUMBER 1 + +#define NL_AIC_PROTOCOL_FRT_DRV 28 +#define NL_AIC_PROTOCOL_SEC_DRV 29 +#define NL_AIC_PROTOCOL NL_AIC_PROTOCOL_SEC_DRV + +#define NL_AIC_MANAGER_PID 5185 + +#define NL_MAX_MSG_SIZE 768 + +/* Netlink Message Type List */ +#define AIC_NL_DAEMON_ON_TYPE 1 +#define AIC_NL_DAEMON_OFF_TYPE 2 +#define AIC_NL_DAEMON_ALIVE_TYPE 3 +#define AIC_NL_DEL_STA_TYPE 4 +#define AIC_NL_NEW_STA_TYPE 5 +#define AIC_NL_INTF_RPT_TYPE 6 +#define AIC_NL_STA_RPT_TYPE 7 +#define AIC_NL_FRAME_RPT_TYPE 8 +#define AIC_NL_TIME_TICK_TYPE 9 +#define AIC_NL_PRIV_INFO_CMD_TYPE 10 +#ifdef CONFIG_BAND_STEERING +#define AIC_NL_B_STEER_CMD_TYPE 11 +#define AIC_NL_B_STEER_BLOCK_ADD_TYPE 12 +#define AIC_NL_B_STEER_BLOCK_DEL_TYPE 13 +#define AIC_NL_B_STEER_ROAM_TYPE 14 +#endif + +#define AIC_NL_GENERAL_CMD_TYPE 100 +#define AIC_NL_CUSTOMER_TYPE 101 +#define AIC_NL_CONFIG_UPDATE_TYPE 102 + +/* Element ID */ +#define AIC_ELM_INTF_ID 1 +#define AIC_ELM_INTF_INFO_ID 2 +#define AIC_ELM_FRAME_INFO_ID 3 +#define AIC_ELM_STA_INFO_ID 4 +#define AIC_ELM_ROAM_INFO_ID 5 +#define AIC_ELM_BUFFER_ID 6 +#define AIC_ELM_STA_INFO_EXT_ID 7 + +#define LOW_RSSI_IGNORE (-85) + +struct b_nl_message { + u32_l type; + u32_l len; + u8_l content[NL_MAX_MSG_SIZE]; +}; + +struct b_elm_header { + u8_l id; + u8_l len; +}; + +struct b_elm_intf { + u8_l mac[6]; + u8_l root; + u8_l band; + u8_l ssid; + s8_l name[16]; +}; + +struct b_elm_intf_info { + u16_l ch; + u8_l ch_clm; + u8_l ch_noise; + u32_l tx_tp; + u32_l rx_tp; + u32_l assoc_sta_num; + /* self neighbor report info */ + u32_l bss_info; + u8_l reg_class; + u8_l phy_type; +}; + +struct b_elm_frame_info { + u16_l frame_type; + u8_l sa[6]; + s8_l rssi; +}; + +struct b_elm_sta_info { + u8_l mac[6]; + s8_l rssi; + u32_l link_time; + u32_l tx_tp; /* kbits */ + u32_l rx_tp; /* kbits */ +}; + +struct b_elm_roam_info { + u8_l sta_mac[6]; /* station mac */ + u8_l bss_mac[6]; /* target bss mac */ + u16_l bss_ch; /* target bss channel */ + u8_l method; /* 0: 11V, 1: Deauth */ +}; + +struct b_elm_buffer { + u8_l buf[255]; +}; + +struct b_elm_sta_info_ext { + u8_l mac[6]; + u8_l supported_band; /* bit0:2g bit1:5g */ + u8_l empty[119]; /* for future use */ +}; + + +/* Element Size List */ +#define ELM_HEADER_LEN (sizeof(struct b_elm_header)) +#define ELM_INTF_LEN (sizeof(struct b_elm_intf)) +#define ELM_INTF_INFO_LEN (sizeof(struct b_elm_intf_info)) +#define ELM_FRAME_INFO_LEN (sizeof(struct b_elm_frame_info)) +#define ELM_STA_INFO_LEN (sizeof(struct b_elm_sta_info)) +#define ELM_ROAM_INFO_LEN (sizeof(struct b_elm_roam_info)) +#define ELM_BUFFER_LEN (sizeof(struct b_elm_buffer)) +#define ELM_STA_INFO_EXT_LEN (sizeof(struct b_elm_sta_info_ext)) + + + +void aicwf_nl_send_del_sta_msg(struct rwnx_vif *rwnx_vif, u8_l *mac); +void aicwf_nl_send_new_sta_msg(struct rwnx_vif *rwnx_vif, u8_l *mac); +void aicwf_nl_send_intf_rpt_msg(struct rwnx_vif *rwnx_vif); +void aicwf_nl_send_sta_rpt_msg(struct rwnx_vif *rwnx_vif, struct rwnx_sta *sta); +void aicwf_nl_send_frame_rpt_msg(struct rwnx_vif *rwnx_vif, u16_l frame_type, u8_l *sa, s8_l rssi); +void aicwf_nl_send_time_tick_msg(struct rwnx_vif *rwnx_vif); +void aicwf_nl_hook(struct rwnx_vif *rwnx_vif, u8_l band, u8_l iface_id); +void aicwf_nl_hook_deinit(u8_l band, u8_l ssid); +void aicwf_nl_init(void); +void aicwf_nl_deinit(void); +void aicwf_wlan_manager_recv_msg(struct b_nl_message *msg); +void aicwf_nl_recv_msg(struct sk_buff *skb); +void aicwf_nl_send_msg(void *msg, u32_l msg_len); + + +#endif + diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_sdio.c b/drivers/aic8800/aic8800_fdrv/aicwf_sdio.c index c9f5a76..f8e79cc 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_sdio.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_sdio.c @@ -527,12 +527,7 @@ static void aicwf_sdio_bus_stop(struct device *dev) aicwf_sdio_pwrctl_timer(sdiodev, 0); if(timer_pending(&sdiodev->rwnx_hw->p2p_alive_timer)){ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - ret = timer_delete(&sdiodev->rwnx_hw->p2p_alive_timer); - #else - ret = del_timer(&sdiodev->rwnx_hw->p2p_alive_timer); - #endif - } + ret = del_timer(&sdiodev->rwnx_hw->p2p_alive_timer);} sdio_dbg("%s\n",__func__); if (sdiodev->pwrctl_tsk) { complete(&sdiodev->pwrctrl_trgg); @@ -1085,11 +1080,7 @@ void aicwf_sdio_pwrctl_timer(struct aic_sdio_dev *sdiodev, uint duration) spin_lock_bh(&sdiodev->pwrctl_lock); if (!duration) { if (timer_pending(&sdiodev->timer)) - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - timer_delete_sync(&sdiodev->timer); - #else - del_timer_sync(&sdiodev->timer); - #endif + del_timer_sync(&sdiodev->timer); } else { sdiodev->active_duration = duration; timeout = msecs_to_jiffies(sdiodev->active_duration); diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_steering.c b/drivers/aic8800/aic8800_fdrv/aicwf_steering.c new file mode 100644 index 0000000..d6d20ca --- /dev/null +++ b/drivers/aic8800/aic8800_fdrv/aicwf_steering.c @@ -0,0 +1,217 @@ +/** + ****************************************************************************** + * + * Copyright (C) 2020 AIC semiconductor. + * + * @file aicwf_steering.c + * + * @brief band steering definitions + * + ****************************************************************************** + */ + +#include "aicwf_steering.h" +#include "rwnx_defs.h" + +#define MAC_FMT_B "%02x:%02x:%02x:%02x:%02x:%02x" +#define MAC_ARG_B(x) ((u8_l *)(x))[0], ((u8_l *)(x))[1], ((u8_l *)(x))[2], ((u8_l *)(x))[3], ((u8_l *)(x))[4], ((u8_l *)(x))[5] +#define STEEER_STR "[STEERING] USB " + +#ifdef CONFIG_BAND_STEERING + +static struct b_steer_block_entry *block_entry_lookup(struct rwnx_vif *rwnx_vif, u8_l *mac) +{ + u8_l i; + struct b_steer_block_entry *ent = NULL; + + for (i = 0; i < B_STEER_ENTRY_NUM; i++) { + ent = &(rwnx_vif->bsteerpriv.block_list[i]); + if (ent->used && (memcmp(ent->mac, mac, 6) == 0)) { + AICWFDBG(LOGSTEER, STEEER_STR"%s "MAC_FMT_B"\n", __func__, MAC_ARG_B(mac)); + return ent; + } + } + + return NULL; +} + +void aicwf_band_steering_expire(struct rwnx_vif *rwnx_vif) +{ + u8_l i; + struct b_steer_block_entry *ent = NULL; + + if (rwnx_vif->bsteerpriv.inited == false) { + AICWFDBG(LOGSTEER, STEEER_STR"%s bsteerpriv not inited\n", __func__); + return; + } + + spin_lock_bh(&(rwnx_vif->bsteerpriv.lock)); + + /* block entry */ + for (i = 0; i < B_STEER_ENTRY_NUM; i++) { + ent = &(rwnx_vif->bsteerpriv.block_list[i]); + if (!ent->used) + continue; + + if (ent->entry_expire) { + ent->entry_expire--; + if (ent->entry_expire == 0) + ent->used = 0; + } + } + + spin_unlock_bh(&(rwnx_vif->bsteerpriv.lock)); + + return; +} + +s32_l aicwf_band_steering_block_chk(struct rwnx_vif *rwnx_vif, u8_l *mac) +{ + s32 ret = 0; + struct b_steer_block_entry *ent = NULL; + + if (rwnx_vif->bsteerpriv.inited == false) { + AICWFDBG(LOGSTEER, STEEER_STR"%s bsteerpriv not inited\n", __func__); + return 0; + } + + spin_lock_bh(&(rwnx_vif->bsteerpriv.lock)); + + ent = block_entry_lookup(rwnx_vif, mac); + if (ent) + ret = 1; + + spin_unlock_bh(&(rwnx_vif->bsteerpriv.lock)); + + return ret; +} + +void aicwf_band_steering_block_entry_add(struct rwnx_vif *rwnx_vif, u8_l *mac) +{ + u8_l i; + struct b_steer_block_entry *ent = NULL; + + if (rwnx_vif->bsteerpriv.inited == false) { + AICWFDBG(LOGSTEER, STEEER_STR"%s bsteerpriv not inited\n", __func__); + return; + } + + AICWFDBG(LOGSTEER, STEEER_STR"%s "MAC_FMT_B"\n", __func__, MAC_ARG_B(mac)); + + spin_lock_bh(&(rwnx_vif->bsteerpriv.lock)); + + ent = block_entry_lookup(rwnx_vif, mac); + + /* already exist */ + if (ent) { + AICWFDBG(LOGSTEER, STEEER_STR"%s already exist\n", __func__); + ent->entry_expire = B_STEER_BLOCK_ENTRY_EXPIRE; + goto func_return; + } + + /* find an empty entry */ + for (i = 0; i < B_STEER_ENTRY_NUM; i++) { + if (!rwnx_vif->bsteerpriv.block_list[i].used) { + ent = &(rwnx_vif->bsteerpriv.block_list[i]); + break; + } + } + + /* add the entry */ + if (ent) { + AICWFDBG(LOGSTEER, STEEER_STR"%s "MAC_FMT_B"\n", __func__, MAC_ARG_B(mac)); + ent->used = 1; + memcpy(ent->mac, mac, 6); + ent->entry_expire = B_STEER_BLOCK_ENTRY_EXPIRE; + } + +func_return: + spin_unlock_bh(&(rwnx_vif->bsteerpriv.lock)); + + return; +} + +void aicwf_band_steering_block_entry_del(struct rwnx_vif *rwnx_vif, u8_l *mac) +{ + struct b_steer_block_entry *ent = NULL; + + if (rwnx_vif->bsteerpriv.inited == false) { + AICWFDBG(LOGSTEER, STEEER_STR"%s bsteerpriv not inited\n", __func__); + return; + } + + AICWFDBG(LOGSTEER, STEEER_STR"%s "MAC_FMT_B"\n", __func__, MAC_ARG_B(mac)); + + spin_lock_bh(&(rwnx_vif->bsteerpriv.lock)); + + ent = block_entry_lookup(rwnx_vif, mac); + if (ent) + ent->used = 0; + + spin_unlock_bh(&(rwnx_vif->bsteerpriv.lock)); + + return; +} + +void aicwf_band_steering_roam_block_entry_add(struct rwnx_vif *rwnx_vif, u8_l *mac) +{ + u8_l i; + struct b_steer_block_entry *ent = NULL; + + if (rwnx_vif->bsteerpriv.inited == false) { + AICWFDBG(LOGSTEER, STEEER_STR"%s bsteerpriv not inited\n", __func__); + return; + } + + AICWFDBG(LOGSTEER, STEEER_STR"%s "MAC_FMT_B"\n", __func__, MAC_ARG_B(mac)); + + spin_lock_bh(&rwnx_vif->bsteerpriv.lock); + + ent = block_entry_lookup(rwnx_vif, mac); + + /* already exist */ + if (ent) + goto func_return; + + /* find an empty entry */ + for (i = 0; i < B_STEER_ENTRY_NUM; i++) { + if (!rwnx_vif->bsteerpriv.block_list[i].used) { + ent = &(rwnx_vif->bsteerpriv.block_list[i]); + break; + } + } + + /* add the entry */ + if (ent) { + ent->used = 1; + memcpy(ent->mac, mac, 6); + ent->entry_expire = B_STEER_ROAM_BLOCK_ENTRY_EXPIRE; + } + +func_return: + spin_unlock_bh(&rwnx_vif->bsteerpriv.lock); + + return; +} + +void aicwf_band_steering_init(struct rwnx_vif *rwnx_vif) +{ + u8_l i; + + AICWFDBG(LOGSTEER, STEEER_STR"%s\n", __func__); + spin_lock_init(&rwnx_vif->bsteerpriv.lock); + rwnx_vif->bsteerpriv.inited = true; + + spin_lock_bh(&rwnx_vif->bsteerpriv.lock); + + /* block entry */ + for (i = 0; i < B_STEER_ENTRY_NUM; i++) + memset(&(rwnx_vif->bsteerpriv.block_list[i]), 0, sizeof(struct b_steer_block_entry)); + + spin_unlock_bh(&rwnx_vif->bsteerpriv.lock); + + return; +} + +#endif + diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_steering.h b/drivers/aic8800/aic8800_fdrv/aicwf_steering.h new file mode 100644 index 0000000..b7c59ef --- /dev/null +++ b/drivers/aic8800/aic8800_fdrv/aicwf_steering.h @@ -0,0 +1,40 @@ +#ifndef _AICWF_STEERING_H_ +#define _AICWF_STEERING_H_ + +#include +#include "lmac_types.h" + +#ifdef CONFIG_BAND_STEERING + +#define B_STEER_ENTRY_NUM 64//32 + +#define B_STEER_BLOCK_ENTRY_EXPIRE 60 +#define B_STEER_ROAM_BLOCK_ENTRY_EXPIRE 5 +#define STEER_UPFATE_TIME 2000 + +struct rwnx_vif; + +struct b_steer_block_entry { + u8_l used; + u8_l mac[6]; + u32_l entry_expire; +}; + +struct b_steer_priv { + struct b_steer_block_entry block_list[B_STEER_ENTRY_NUM]; + spinlock_t lock; + bool inited; +}; + + +void aicwf_band_steering_expire(struct rwnx_vif *rwnx_vif); +s32_l aicwf_band_steering_block_chk(struct rwnx_vif *rwnx_vif, u8_l *mac); +void aicwf_band_steering_block_entry_add(struct rwnx_vif *rwnx_vif, u8_l *mac); +void aicwf_band_steering_block_entry_del(struct rwnx_vif *rwnx_vif, u8_l *mac); +void aicwf_band_steering_roam_block_entry_add(struct rwnx_vif *rwnx_vif, u8_l *mac); +void aicwf_band_steering_init(struct rwnx_vif *rwnx_vif); + +#endif + +#endif + diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.c b/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.c index 7b3084d..480fd07 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.c @@ -106,11 +106,7 @@ void tcp_ack_deinit(struct rwnx_hw *priv) drop_msg = NULL; write_seqlock_bh(&ack_m->ack_info[i].seqlock); - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - timer_delete(&ack_m->ack_info[i].timer); - #else - del_timer(&ack_m->ack_info[i].timer); - #endif + del_timer(&ack_m->ack_info[i].timer); drop_msg = ack_m->ack_info[i].msgbuf; ack_m->ack_info[i].msgbuf = NULL; write_sequnlock_bh(&ack_m->ack_info[i].seqlock); @@ -192,7 +188,7 @@ int is_drop_tcp_ack(struct tcphdr *tcphdr, int tcp_tot_len, case TCPOPT_WINDOW: if (*ptr < 15) *win_scale = (1 << (*ptr)); - printk("%d\n",*win_scale); + //printk("%d\n",*win_scale); break; default: drop = 2; @@ -379,11 +375,7 @@ int tcp_ack_handle(struct msg_buf *new_msgbuf, //printk("%lx \n",ack_info->msgbuf); drop_msg = ack_info->msgbuf; ack_info->msgbuf = NULL; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - timer_delete(&ack_info->timer); - #else - del_timer(&ack_info->timer); - #endif + del_timer(&ack_info->timer); }else{ //printk("msgbuf is NULL \n"); } @@ -417,11 +409,7 @@ int tcp_ack_handle(struct msg_buf *new_msgbuf, atomic_read(&ack_m->max_drop_cnt)))) { ack_info->drop_cnt = 0; ack_info->in_send_msg = new_msgbuf; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - timer_delete(&ack_info->timer); - #else - del_timer(&ack_info->timer); - #endif + del_timer(&ack_info->timer); } else { ret = 1; ack_info->msgbuf = new_msgbuf; @@ -454,7 +442,7 @@ int tcp_ack_handle_new(struct msg_buf *new_msgbuf, struct tcp_ack_msg *ack; int ret = 0; struct msg_buf *drop_msg = NULL; - struct msg_buf * send_msg = NULL; + //struct msg_buf * send_msg = NULL; //printk("",); write_seqlock_bh(&ack_info->seqlock); @@ -482,13 +470,9 @@ int tcp_ack_handle_new(struct msg_buf *new_msgbuf, (ack_info->drop_cnt >= atomic_read(&ack_m->max_drop_cnt)))){ ack_info->drop_cnt = 0; - send_msg = new_msgbuf; - ack_info->in_send_msg = send_msg; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - timer_delete(&ack_info->timer); - #else - del_timer(&ack_info->timer); - #endif + //send_msg = new_msgbuf; + ack_info->in_send_msg = new_msgbuf; + del_timer(&ack_info->timer); }else{ ret = 1; ack_info->msgbuf = new_msgbuf; @@ -566,9 +550,6 @@ int filter_send_tcp_ack(struct rwnx_hw *priv, struct tcp_ack_info *ack_info; struct tcp_ack_manage *ack_m = &priv->ack_m; - if (plen > MAX_TCP_ACK) - return 0; - tcp_ack_update(ack_m); drop = tcp_check_ack(buf, &ack_msg, &win_scale); // printk("drop:%d win_scale:%d",drop,win_scale); diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.h b/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.h index d872e63..542023f 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.h +++ b/drivers/aic8800/aic8800_fdrv/aicwf_tcp_ack.h @@ -27,26 +27,7 @@ struct msg_buf { //struct list_head list; struct sk_buff *skb; struct rwnx_vif *rwnx_vif; - /* data just tx cmd use,not include the head */ - /*void *data; - void *tran_data; - unsigned long pcie_addr; - u8 type; - u8 mode; - u16 len; - unsigned long timeout;*/ - - /*unsigned int fifo_id; - struct sprdwl_msg_list *msglist;*/ - - /*unsigned char buffer_type; - struct sprdwl_xmit_msg_list *xmit_msg_list; - unsigned char msg_type; - - unsigned long last_time; - u8 ctxt_id;*/ - }; struct tcp_ack_msg { diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.c b/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.c index 679ee83..b848421 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.c @@ -221,7 +221,7 @@ void aicwf_bus_deinit(struct device *dev) }else{ AICWFDBG(LOGINFO, "%s g_rwnx_plat->enabled is false\r\n", __func__); } - + #endif #ifdef AICWF_SDIO_SUPPORT sdiodev =bus_if->bus_priv.sdio; @@ -257,7 +257,7 @@ void aicwf_bus_deinit(struct device *dev) rwnx_cmd_mgr_deinit(&usb->cmd_mgr); #ifdef CONFIG_TX_TASKLET//AIDEN tasklet - tasklet_kill(&usb->xmit_tasklet); + tasklet_kill(&usb->xmit_tasklet); #endif AICWFDBG(LOGINFO, "%s Exit \n", __func__); @@ -329,7 +329,11 @@ static bool aicwf_another_ptk_1(struct rx_buff *buffer) u8 *read = buffer->read; u16 aggr_len = 0; - if(read == NULL || read >= buffer->end) { + if(read == NULL || read >= (buffer->end - 2)) { + return false; + } + + if(buffer->len < 2) { return false; } @@ -346,7 +350,7 @@ static bool aicwf_another_ptk(struct sk_buff *skb) u8 *data; u16 aggr_len = 0; - if (skb->data == NULL || skb->len == 0) { + if (skb->data == NULL || skb->len < 2) { return false; } data = skb->data; @@ -367,55 +371,55 @@ void rwnx_frame_parser(char* tag, char* data, unsigned long len); #ifdef CONFIG_RX_TASKLET int aicwf_tasklet_rxframes(struct aicwf_rx_priv *rx_priv) { + int ret = 0; + unsigned long flags = 0; + struct sk_buff *skb = NULL; /* Packet for event or data frames */ + u16 pkt_len = 0; + //struct sk_buff *skb_inblock = NULL; + u16 aggr_len = 0, adjust_len = 0; + u8 *data = NULL; + u8_l *msg = NULL; - int ret = 0; - unsigned long flags = 0; - struct sk_buff *skb = NULL; /* Packet for event or data frames */ - u16 pkt_len = 0; - //struct sk_buff *skb_inblock = NULL; - u16 aggr_len = 0, adjust_len = 0; - u8 *data = NULL; - u8_l *msg = NULL; - - while (1) { - //aicwf_usb_rx_submit_all_urb_(rx_priv->usbdev); - spin_lock_irqsave(&rx_priv->rxqlock, flags); - if(aicwf_is_framequeue_empty(&rx_priv->rxq)) { - usb_info("no more rxdata\n"); - spin_unlock_irqrestore(&rx_priv->rxqlock,flags); - break; - } - skb = aicwf_frame_dequeue(&rx_priv->rxq); - spin_unlock_irqrestore(&rx_priv->rxqlock, flags); - if (skb == NULL) { - txrx_err("skb_error\r\n"); - break; - } - data = skb->data; - pkt_len = (*skb->data | (*(skb->data + 1) << 8)); - //printk("p:%d, s:%d , %x\n", pkt_len, skb->len, data[2]); + while (1) { + //aicwf_usb_rx_submit_all_urb_(rx_priv->usbdev); + spin_lock_irqsave(&rx_priv->rxqlock, flags); + if(aicwf_is_framequeue_empty(&rx_priv->rxq)) { + usb_info("no more rxdata\n"); + spin_unlock_irqrestore(&rx_priv->rxqlock,flags); + break; + } + skb = aicwf_frame_dequeue(&rx_priv->rxq); + spin_unlock_irqrestore(&rx_priv->rxqlock, flags); + if (skb == NULL) { + txrx_err("skb_error\r\n"); + break; + } + data = skb->data; + pkt_len = (*skb->data | (*(skb->data + 1) << 8)); + //printk("p:%d, s:%d , %x\n", pkt_len, skb->len, data[2]); #ifndef CONFIG_USB_RX_REASSEMBLE - if (pkt_len > 1600) { - dev_kfree_skb(skb); - atomic_dec(&rx_priv->rx_cnt); - continue; - } + if (pkt_len > skb->len) { + AICWFDBG(LOGERROR, "%s pkt_len:%d skb->len:%d\r\n", __func__, pkt_len, skb->len); + dev_kfree_skb(skb); + atomic_dec(&rx_priv->rx_cnt); + continue; + } #endif - if((skb->data[2] & USB_TYPE_CFG) != USB_TYPE_CFG) { // type : data + if((skb->data[2] & USB_TYPE_CFG) != USB_TYPE_CFG) { // type : data #if 0 aggr_len = pkt_len + RX_HWHRD_LEN; if (aggr_len & (RX_ALIGNMENT - 1)) adjust_len = roundup(aggr_len, RX_ALIGNMENT); else adjust_len = aggr_len; - + skb_inblock = __dev_alloc_skb(aggr_len + CCMP_OR_WEP_INFO, GFP_ATOMIC);//8 is for ccmp mic or wep icv if(skb_inblock == NULL){ txrx_err("no more space! skip!\n"); skb_pull(skb, adjust_len); continue; } - + skb_put(skb_inblock, aggr_len); memcpy(skb_inblock->data, data, aggr_len); #if 0//AIDEN @@ -425,14 +429,14 @@ int aicwf_tasklet_rxframes(struct aicwf_rx_priv *rx_priv) rwnx_rxdataind_aicwf(rx_priv->usbdev->rwnx_hw, skb, (void *)rx_priv); ///TODO: here need to add rx data process //skb_pull(skb, adjust_len); - } - else { // type : config - aggr_len = pkt_len; - if (aggr_len & (RX_ALIGNMENT - 1)) - adjust_len = roundup(aggr_len, RX_ALIGNMENT); - else - adjust_len = aggr_len; - + } + else { // type : config + aggr_len = pkt_len; + if (aggr_len & (RX_ALIGNMENT - 1)) + adjust_len = roundup(aggr_len, RX_ALIGNMENT); + else + adjust_len = aggr_len; + msg = kmalloc(aggr_len+4, GFP_ATOMIC); if(msg == NULL){ txrx_err("no more space for msg!\n"); @@ -442,22 +446,23 @@ int aicwf_tasklet_rxframes(struct aicwf_rx_priv *rx_priv) memcpy(msg, data, aggr_len + 4); if((*(msg + 2) & 0x7f) == USB_TYPE_CFG_CMD_RSP) rwnx_rx_handle_msg(rx_priv->usbdev->rwnx_hw, (struct ipc_e2a_msg *)(msg + 4)); - + if((*(msg + 2) & 0x7f) == USB_TYPE_CFG_DATA_CFM) aicwf_usb_host_tx_cfm_handler(&(rx_priv->usbdev->rwnx_hw->usb_env), (u32 *)(msg + 4)); skb_pull(skb, adjust_len+4); kfree(msg); dev_kfree_skb(skb); - } - - //dev_kfree_skb(skb); - atomic_dec(&rx_priv->rx_cnt); } - - return ret; + + //dev_kfree_skb(skb); + atomic_dec(&rx_priv->rx_cnt); } + + return ret; +} #endif +extern bool rx_urb_sched; int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) { #ifdef AICWF_SDIO_SUPPORT @@ -580,17 +585,17 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) pkt_len = (*data | (*(data + 1) << 8)); //printk("%s cnt:%d pkt_len:%d \r\n", __func__, cnt, pkt_len); #ifndef CONFIG_USB_RX_REASSEMBLE - if (pkt_len > 1600) { - AICWFDBG(LOGERROR, "%s pkt_len > 1600 \r\n", __func__); + if (pkt_len > buffer->len) { + AICWFDBG(LOGERROR, "%s pkt_len:%d buffer->len:%d\r\n", __func__, pkt_len, buffer->len); aicwf_prealloc_rxbuff_free(buffer, &rx_priv->rxbuff_lock); atomic_dec(&rx_priv->rx_cnt); return -EBADE; } #endif - + if((data[2] & USB_TYPE_CFG) != USB_TYPE_CFG) { // type : data - aggr_len = pkt_len + RX_HWHRD_LEN; - + aggr_len = pkt_len + RX_HWHRD_LEN; + skb_inblock = __dev_alloc_skb(aggr_len + CCMP_OR_WEP_INFO, GFP_KERNEL); if (skb_inblock == NULL) { txrx_err("no more space! skip\n"); @@ -598,11 +603,12 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) atomic_dec(&rx_priv->rx_cnt); return -EBADE; } - + skb_put(skb_inblock, aggr_len); memcpy(skb_inblock->data, data, aggr_len); rwnx_rxdataind_aicwf(rx_priv->usbdev->rwnx_hw, skb_inblock, (void *)rx_priv); buffer->read = buffer->read + aggr_len; + buffer->len -= aggr_len; } else { // type : config aggr_len = pkt_len; @@ -618,21 +624,26 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) return -EBADE; } memcpy(msg, data, aggr_len + 4); - + if(((*(msg + 2) & 0x7f) == USB_TYPE_CFG_CMD_RSP) && (rx_priv->usbdev->bus_if->state != (int)USB_DOWN_ST)) rwnx_rx_handle_msg(rx_priv->usbdev->rwnx_hw, (struct ipc_e2a_msg *)(msg + 4)); - + if((*(msg + 2) & 0x7f) == USB_TYPE_CFG_DATA_CFM) aicwf_usb_host_tx_cfm_handler(&(rx_priv->usbdev->rwnx_hw->usb_env), (u32 *)(msg + 4)); - + if ((*(msg + 2) & 0x7f) == USB_TYPE_CFG_PRINT) rwnx_rx_handle_print(rx_priv->usbdev->rwnx_hw, msg + 4, aggr_len); buffer->read = buffer->read + (adjust_len + 4); + buffer->len -= (adjust_len + 4); kfree(msg); } } aicwf_prealloc_rxbuff_free(buffer, &rx_priv->rxbuff_lock); + if (rx_urb_sched) { + schedule_work(&rx_priv->usbdev->rx_urb_work); + rx_urb_sched = false; + } atomic_dec(&rx_priv->rx_cnt); } }else{ @@ -645,7 +656,7 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) } buffer = rxbuff_dequeue(&rx_priv->rxq); spin_unlock_irqrestore(&rx_priv->rxqlock, flags); - + if (buffer == NULL) { txrx_err("skb_error\r\n"); ASSERT_ERR(1); @@ -655,7 +666,8 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) pkt_len = (*data | (*(data + 1) << 8)); //printk("p:%d, s:%d , %x\n", pkt_len, skb->len, data[2]); #ifndef CONFIG_USB_RX_REASSEMBLE - if (pkt_len > 1600) { + if (pkt_len > buffer->len) { + AICWFDBG(LOGERROR, "%s pkt_len:%d buffer->len:%d\r\n", __func__, pkt_len, buffer->len); aicwf_prealloc_rxbuff_free(buffer, &rx_priv->rxbuff_lock); atomic_dec(&rx_priv->rx_cnt); continue; @@ -669,7 +681,7 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) atomic_dec(&rx_priv->rx_cnt); continue; } - + skb_put(skb_inblock, pkt_len + RX_HWHRD_LEN); memcpy(skb_inblock->data, data, pkt_len + RX_HWHRD_LEN); rwnx_rxdataind_aicwf(rx_priv->usbdev->rwnx_hw, skb_inblock, (void *)rx_priv); @@ -680,7 +692,7 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) adjust_len = roundup(aggr_len, RX_ALIGNMENT); else adjust_len = aggr_len; - + msg = kmalloc(aggr_len+4, GFP_KERNEL); if(msg == NULL){ txrx_err("no more space for msg!\n"); @@ -688,169 +700,176 @@ int aicwf_process_rxframes(struct aicwf_rx_priv *rx_priv) return -EBADE; } memcpy(msg, data, aggr_len + 4); - + if(((*(msg + 2) & 0x7f) == USB_TYPE_CFG_CMD_RSP) && (rx_priv->usbdev->bus_if->state != (int)USB_DOWN_ST)) rwnx_rx_handle_msg(rx_priv->usbdev->rwnx_hw, (struct ipc_e2a_msg *)(msg + 4)); - + if((*(msg + 2) & 0x7f) == USB_TYPE_CFG_DATA_CFM) aicwf_usb_host_tx_cfm_handler(&(rx_priv->usbdev->rwnx_hw->usb_env), (u32 *)(msg + 4)); - + if ((*(msg + 2) & 0x7f) == USB_TYPE_CFG_PRINT) rwnx_rx_handle_print(rx_priv->usbdev->rwnx_hw, msg + 4, aggr_len); - + kfree(msg); } - + aicwf_prealloc_rxbuff_free(buffer, &rx_priv->rxbuff_lock); + if (rx_urb_sched) { + schedule_work(&rx_priv->usbdev->rx_urb_work); + rx_urb_sched = false; + } atomic_dec(&rx_priv->rx_cnt); } } #else - if(aicwf_usb_rx_aggr){ - while (1) { - spin_lock_irqsave(&rx_priv->rxqlock, flags); - if(aicwf_is_framequeue_empty(&rx_priv->rxq)) { - usb_info("no more rxdata\n"); - spin_unlock_irqrestore(&rx_priv->rxqlock,flags); - break; - } - skb = aicwf_frame_dequeue(&rx_priv->rxq); - spin_unlock_irqrestore(&rx_priv->rxqlock, flags); + if(aicwf_usb_rx_aggr){ + while (1) { + spin_lock_irqsave(&rx_priv->rxqlock, flags); + if(aicwf_is_framequeue_empty(&rx_priv->rxq)) { + usb_info("no more rxdata\n"); + spin_unlock_irqrestore(&rx_priv->rxqlock,flags); + break; + } + skb = aicwf_frame_dequeue(&rx_priv->rxq); + spin_unlock_irqrestore(&rx_priv->rxqlock, flags); - if (skb == NULL) { - txrx_err("skb_error\r\n"); - ASSERT_ERR(1); - break; - } - while(aicwf_another_ptk(skb)) { - cnt++; - if (cnt > 30) { - //printk("%s err, break %d\n", __func__, cnt); - //break; - } - data = skb->data; - pkt_len = (*skb->data | (*(skb->data + 1) << 8)); - //printk("p:%d, s:%d , %x\n", pkt_len, skb->len, data[2]); + if (skb == NULL) { + txrx_err("skb_error\r\n"); + ASSERT_ERR(1); + break; + } + while(aicwf_another_ptk(skb)) { + cnt++; + if (cnt > 30) { + //printk("%s err, break %d\n", __func__, cnt); + //break; + } + data = skb->data; + pkt_len = (*skb->data | (*(skb->data + 1) << 8)); + //printk("p:%d, s:%d , %x\n", pkt_len, skb->len, data[2]); #ifndef CONFIG_USB_RX_REASSEMBLE - if (pkt_len > 1600) { - dev_kfree_skb(skb); - atomic_dec(&rx_priv->rx_cnt); - continue; - } + if (pkt_len > skb->len) { + AICWFDBG(LOGERROR, "%s pkt_len:%d skb->len:%d\r\n", __func__, pkt_len, skb->len); + //dev_kfree_skb(skb); + //atomic_dec(&rx_priv->rx_cnt); + //continue; + break; + } #endif - if((skb->data[2] & USB_TYPE_CFG) != USB_TYPE_CFG) { // type : data - aggr_len = pkt_len + RX_HWHRD_LEN; - adjust_len = aggr_len; - skb_inblock = __dev_alloc_skb(aggr_len + CCMP_OR_WEP_INFO, GFP_KERNEL);//8 is for ccmp mic or wep icv - if(skb_inblock == NULL){ - txrx_err("no more space! skip!\n"); - skb_pull(skb, adjust_len); - continue; - } + if((skb->data[2] & USB_TYPE_CFG) != USB_TYPE_CFG) { // type : data + aggr_len = pkt_len + RX_HWHRD_LEN; + adjust_len = aggr_len; + skb_inblock = __dev_alloc_skb(aggr_len + CCMP_OR_WEP_INFO, GFP_KERNEL);//8 is for ccmp mic or wep icv + if(skb_inblock == NULL){ + txrx_err("no more space! skip!\n"); + skb_pull(skb, adjust_len); + continue; + } - skb_put(skb_inblock, aggr_len); - memcpy(skb_inblock->data, data, aggr_len); - rwnx_rxdataind_aicwf(rx_priv->usbdev->rwnx_hw, skb_inblock, (void *)rx_priv); + skb_put(skb_inblock, aggr_len); + memcpy(skb_inblock->data, data, aggr_len); + rwnx_rxdataind_aicwf(rx_priv->usbdev->rwnx_hw, skb_inblock, (void *)rx_priv); - ///TODO: here need to add rx data process + ///TODO: here need to add rx data process - skb_pull(skb, adjust_len); + skb_pull(skb, adjust_len); - } - else { // type : config - aggr_len = pkt_len; - if (aggr_len & (RX_ALIGNMENT - 1)) - adjust_len = roundup(aggr_len, RX_ALIGNMENT); - else - adjust_len = aggr_len; + } + else { // type : config + aggr_len = pkt_len; + if (aggr_len & (RX_ALIGNMENT - 1)) + adjust_len = roundup(aggr_len, RX_ALIGNMENT); + else + adjust_len = aggr_len; - msg = kmalloc(aggr_len+4, GFP_KERNEL);//hdr(4)+config(aggrlen) - if(msg == NULL){ - txrx_err("no more space for msg!\n"); - aicwf_dev_skb_free(skb); - return -EBADE; - } - memcpy(msg, data, aggr_len + 4); + msg = kmalloc(aggr_len+4, GFP_KERNEL);//hdr(4)+config(aggrlen) + if(msg == NULL){ + txrx_err("no more space for msg!\n"); + aicwf_dev_skb_free(skb); + return -EBADE; + } + memcpy(msg, data, aggr_len + 4); - if(((*(msg + 2) & 0x7f) == USB_TYPE_CFG_CMD_RSP) && (rx_priv->usbdev->bus_if->state != (int)USB_DOWN_ST)) - rwnx_rx_handle_msg(rx_priv->usbdev->rwnx_hw, (struct ipc_e2a_msg *)(msg + 4)); + if(((*(msg + 2) & 0x7f) == USB_TYPE_CFG_CMD_RSP) && (rx_priv->usbdev->bus_if->state != (int)USB_DOWN_ST)) + rwnx_rx_handle_msg(rx_priv->usbdev->rwnx_hw, (struct ipc_e2a_msg *)(msg + 4)); - if((*(msg + 2) & 0x7f) == USB_TYPE_CFG_DATA_CFM) - aicwf_usb_host_tx_cfm_handler(&(rx_priv->usbdev->rwnx_hw->usb_env), (u32 *)(msg + 4)); + if((*(msg + 2) & 0x7f) == USB_TYPE_CFG_DATA_CFM) + aicwf_usb_host_tx_cfm_handler(&(rx_priv->usbdev->rwnx_hw->usb_env), (u32 *)(msg + 4)); - if ((*(msg + 2) & 0x7f) == USB_TYPE_CFG_PRINT) - rwnx_rx_handle_print(rx_priv->usbdev->rwnx_hw, msg + 4, aggr_len); + if ((*(msg + 2) & 0x7f) == USB_TYPE_CFG_PRINT) + rwnx_rx_handle_print(rx_priv->usbdev->rwnx_hw, msg + 4, aggr_len); - skb_pull(skb, adjust_len+4); - kfree(msg); + skb_pull(skb, adjust_len+4); + kfree(msg); - } - } - dev_kfree_skb(skb); - atomic_dec(&rx_priv->rx_cnt); - } - }else{ - while (1) { - spin_lock_irqsave(&rx_priv->rxqlock, flags); - if(aicwf_is_framequeue_empty(&rx_priv->rxq)) { - usb_info("no more rxdata\n"); - spin_unlock_irqrestore(&rx_priv->rxqlock,flags); - break; - } - skb = aicwf_frame_dequeue(&rx_priv->rxq); - spin_unlock_irqrestore(&rx_priv->rxqlock, flags); + } + } + dev_kfree_skb(skb); + atomic_dec(&rx_priv->rx_cnt); + } + }else{ + while (1) { + spin_lock_irqsave(&rx_priv->rxqlock, flags); + if(aicwf_is_framequeue_empty(&rx_priv->rxq)) { + usb_info("no more rxdata\n"); + spin_unlock_irqrestore(&rx_priv->rxqlock,flags); + break; + } + skb = aicwf_frame_dequeue(&rx_priv->rxq); + spin_unlock_irqrestore(&rx_priv->rxqlock, flags); - if (skb == NULL) { - txrx_err("skb_error\r\n"); - ASSERT_ERR(1); - break; - } - data = skb->data; - pkt_len = (*skb->data | (*(skb->data + 1) << 8)); - //printk("p:%d, s:%d , %x\n", pkt_len, skb->len, data[2]); + if (skb == NULL) { + txrx_err("skb_error\r\n"); + ASSERT_ERR(1); + break; + } + data = skb->data; + pkt_len = (*skb->data | (*(skb->data + 1) << 8)); + //printk("p:%d, s:%d , %x\n", pkt_len, skb->len, data[2]); #ifndef CONFIG_USB_RX_REASSEMBLE - if (pkt_len > 1600) { - dev_kfree_skb(skb); - atomic_dec(&rx_priv->rx_cnt); - continue; - } + if (pkt_len > skb->len) { + AICWFDBG(LOGERROR, "%s pkt_len:%d skb->len:%d\r\n", __func__, pkt_len, skb->len); + dev_kfree_skb(skb); + atomic_dec(&rx_priv->rx_cnt); + continue; + } #endif - if((skb->data[2] & USB_TYPE_CFG) != USB_TYPE_CFG) { // type : data - rwnx_rxdataind_aicwf(rx_priv->usbdev->rwnx_hw, skb, (void *)rx_priv); - } - else { // type : config - aggr_len = pkt_len; - if (aggr_len & (RX_ALIGNMENT - 1)) - adjust_len = roundup(aggr_len, RX_ALIGNMENT); - else - adjust_len = aggr_len; + if((skb->data[2] & USB_TYPE_CFG) != USB_TYPE_CFG) { // type : data + rwnx_rxdataind_aicwf(rx_priv->usbdev->rwnx_hw, skb, (void *)rx_priv); + } + else { // type : config + aggr_len = pkt_len; + if (aggr_len & (RX_ALIGNMENT - 1)) + adjust_len = roundup(aggr_len, RX_ALIGNMENT); + else + adjust_len = aggr_len; - msg = kmalloc(aggr_len+4, GFP_KERNEL); - if(msg == NULL){ - txrx_err("no more space for msg!\n"); - aicwf_dev_skb_free(skb); - return -EBADE; - } - memcpy(msg, data, aggr_len + 4); + msg = kmalloc(aggr_len+4, GFP_KERNEL); + if(msg == NULL){ + txrx_err("no more space for msg!\n"); + aicwf_dev_skb_free(skb); + return -EBADE; + } + memcpy(msg, data, aggr_len + 4); - if(((*(msg + 2) & 0x7f) == USB_TYPE_CFG_CMD_RSP) && (rx_priv->usbdev->bus_if->state != (int)USB_DOWN_ST)) - rwnx_rx_handle_msg(rx_priv->usbdev->rwnx_hw, (struct ipc_e2a_msg *)(msg + 4)); + if(((*(msg + 2) & 0x7f) == USB_TYPE_CFG_CMD_RSP) && (rx_priv->usbdev->bus_if->state != (int)USB_DOWN_ST)) + rwnx_rx_handle_msg(rx_priv->usbdev->rwnx_hw, (struct ipc_e2a_msg *)(msg + 4)); - if((*(msg + 2) & 0x7f) == USB_TYPE_CFG_DATA_CFM) - aicwf_usb_host_tx_cfm_handler(&(rx_priv->usbdev->rwnx_hw->usb_env), (u32 *)(msg + 4)); + if((*(msg + 2) & 0x7f) == USB_TYPE_CFG_DATA_CFM) + aicwf_usb_host_tx_cfm_handler(&(rx_priv->usbdev->rwnx_hw->usb_env), (u32 *)(msg + 4)); - if ((*(msg + 2) & 0x7f) == USB_TYPE_CFG_PRINT) - rwnx_rx_handle_print(rx_priv->usbdev->rwnx_hw, msg + 4, aggr_len); + if ((*(msg + 2) & 0x7f) == USB_TYPE_CFG_PRINT) + rwnx_rx_handle_print(rx_priv->usbdev->rwnx_hw, msg + 4, aggr_len); - skb_pull(skb, adjust_len+4); - kfree(msg); - dev_kfree_skb(skb); - } - atomic_dec(&rx_priv->rx_cnt); - } - } + skb_pull(skb, adjust_len+4); + kfree(msg); + dev_kfree_skb(skb); + } + atomic_dec(&rx_priv->rx_cnt); + } + } #endif return ret; @@ -887,7 +906,7 @@ int aicwf_process_msg_rxframes(struct aicwf_rx_priv *rx_priv) pkt_len = (*skb->data | (*(skb->data + 1) << 8)); //printk("p:%d, s:%d , %x\n", pkt_len, skb->len, data[2]); #if 0 //amsdu > 1600 - if (pkt_len > 1600) { + if (pkt_len > 1600) { dev_kfree_skb(skb); atomic_dec(&rx_priv->rx_cnt); continue; @@ -970,7 +989,7 @@ static struct recv_msdu *aicwf_rxframe_queue_init(struct list_head *q, int qsize for (i = 0; i < qsize; i++) { INIT_LIST_HEAD(&req->rxframe_list); list_add(&req->rxframe_list, q); - req->len = 0; + //req->len = 0; req++; } diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.h b/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.h index 29971f9..71c306b 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.h +++ b/drivers/aic8800/aic8800_fdrv/aicwf_txrxif.h @@ -23,7 +23,7 @@ #define DATA_BUF_MAX 2048 #define TXPKT_BLOCKSIZE 512 #define MAX_AGGR_TXPKT_LEN (1536*64) -#define CMD_TX_TIMEOUT 5000 +#define CMD_TX_TIMEOUT 2000 #define TX_ALIGNMENT 4 #ifdef CONFIG_USB_TX_AGGR @@ -152,6 +152,7 @@ struct aicwf_tx_priv { }; +#define DEFRAG_MAX_WAIT 40 //100 #ifdef AICWF_RX_REORDER #define MAX_REORD_RXFRAME 250 #define REORDER_UPDATE_TIME 500//50 @@ -178,13 +179,21 @@ struct reord_ctrl_info { }; struct recv_msdu { - struct sk_buff *pkt; - u8 tid; - u8 forward; - u16 seq_num; - uint len; - u8 *rx_data; - //for pending rx reorder list + struct sk_buff *pkt; + u8 tid; + u8 forward; + u16 seq_num; + //uint len; + u8 is_amsdu; + u8 is_ap_reord; + u8 ap_fwd_cnt; + u8 ap_resend_cnt; + u8 *rx_data; + struct sk_buff *first_fwd_skb; + struct sk_buff *last_fwd_skb; + struct sk_buff *first_resend_skb; + struct sk_buff *last_resend_skb; + //for pending rx reorder list struct list_head reord_pending_list; //for total frame list, when rxframe from busif, dequeue, when submit frame to net, enqueue struct list_head rxframe_list; diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_usb.c b/drivers/aic8800/aic8800_fdrv/aicwf_usb.c index 45fefac..9b0a739 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_usb.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_usb.c @@ -15,6 +15,7 @@ #include "rwnx_defs.h" #include "usb_host.h" #include "rwnx_platform.h" +#include "rwnx_msg_tx.h" #ifdef CONFIG_GPIO_WAKEUP #ifdef CONFIG_PLATFORM_ROCKCHIP @@ -54,6 +55,8 @@ bool aicwf_usb_rx_aggr = true; bool aicwf_usb_rx_aggr = false; #endif atomic_t rx_urb_cnt; +bool rx_urb_sched = false; +u32 aicwf_usb_max_pkt_size = AICWF_USB_MAX_PKT_SIZE; void aicwf_usb_tx_flowctrl(struct rwnx_hw *rwnx_hw, bool state) { @@ -154,23 +157,23 @@ static void aicwf_usb_msg_rx_buf_put(struct aic_usb_dev *usb_dev, struct aicwf_u void rwnx_stop_sta_all_queues(struct rwnx_sta *sta, struct rwnx_hw *rwnx_hw) { - u8 tid; - struct rwnx_txq *txq; - for(tid=0; tid<8; tid++) { - txq = rwnx_txq_sta_get(sta, tid, rwnx_hw); - netif_stop_subqueue(txq->ndev, txq->ndev_idx); - } - } + u8 tid; + struct rwnx_txq *txq; + for(tid=0; tid<8; tid++) { + txq = rwnx_txq_sta_get(sta, tid, rwnx_hw); + netif_stop_subqueue(txq->ndev, txq->ndev_idx); + } +} void rwnx_wake_sta_all_queues(struct rwnx_sta *sta, struct rwnx_hw *rwnx_hw) { - u8 tid; - struct rwnx_txq *txq; - for(tid=0; tid<8; tid++) { - txq = rwnx_txq_sta_get(sta, tid, rwnx_hw); - netif_wake_subqueue(txq->ndev, txq->ndev_idx); - } - } + u8 tid; + struct rwnx_txq *txq; + for(tid=0; tid<8; tid++) { + txq = rwnx_txq_sta_get(sta, tid, rwnx_hw); + netif_wake_subqueue(txq->ndev, txq->ndev_idx); + } +} static void usb_txc_sta_flowctrl(struct aicwf_usb_buf *usb_buf, struct aic_usb_dev *usb_dev) { @@ -220,6 +223,7 @@ static void aicwf_usb_tx_complete(struct urb *urb) #ifdef CONFIG_USB_ALIGN_DATA if(usb_buf->usb_align_data) { kfree(usb_buf->usb_align_data); + usb_buf->usb_align_data = NULL; } #endif #ifndef CONFIG_USB_TX_AGGR @@ -256,68 +260,68 @@ void aicwf_usb_rx_submit_all_urb_(struct aic_usb_dev *usb_dev); #ifdef CONFIG_PREALLOC_RX_SKB static void aicwf_usb_rx_complete(struct urb *urb) - { - struct aicwf_usb_buf *usb_buf = (struct aicwf_usb_buf *) urb->context; - struct aic_usb_dev *usb_dev = usb_buf->usbdev; - struct aicwf_rx_priv* rx_priv = usb_dev->rx_priv; - struct rx_buff *rx_buff = NULL; - unsigned long flags = 0; - - rx_buff = usb_buf->rx_buff; - usb_buf->rx_buff = NULL; - - atomic_dec(&rx_urb_cnt); - if(atomic_read(&rx_urb_cnt) < 10){ - AICWFDBG(LOGDEBUG, "%s %d \r\n", __func__, atomic_read(&rx_urb_cnt)); - //printk("%s %d \r\n", __func__, atomic_read(&rx_urb_cnt)); - } +{ + struct aicwf_usb_buf *usb_buf = (struct aicwf_usb_buf *) urb->context; + struct aic_usb_dev *usb_dev = usb_buf->usbdev; + struct aicwf_rx_priv* rx_priv = usb_dev->rx_priv; + struct rx_buff *rx_buff = NULL; + unsigned long flags = 0; + + rx_buff = usb_buf->rx_buff; + usb_buf->rx_buff = NULL; + + atomic_dec(&rx_urb_cnt); + if(atomic_read(&rx_urb_cnt) < 10){ + AICWFDBG(LOGDEBUG, "%s %d \r\n", __func__, atomic_read(&rx_urb_cnt)); + //printk("%s %d \r\n", __func__, atomic_read(&rx_urb_cnt)); + } + + if(!usb_dev->rwnx_hw){ + aicwf_prealloc_rxbuff_free(rx_buff, &rx_priv->rxbuff_lock); + aicwf_usb_rx_buf_put(usb_dev, usb_buf); + AICWFDBG(LOGERROR, "usb_dev->rwnx_hw is not ready \r\n"); + return; + } + + if (urb->actual_length > urb->transfer_buffer_length) { + aicwf_prealloc_rxbuff_free(rx_buff, &rx_priv->rxbuff_lock); + aicwf_usb_rx_buf_put(usb_dev, usb_buf); + aicwf_usb_rx_submit_all_urb_(usb_dev); + return; + } + + if (urb->status != 0 || !urb->actual_length) { + aicwf_prealloc_rxbuff_free(rx_buff, &rx_priv->rxbuff_lock); + aicwf_usb_rx_buf_put(usb_dev, usb_buf); + if(urb->status < 0){ + AICWFDBG(LOGDEBUG, "%s urb->status:%d \r\n", __func__, urb->status); + + if(g_rwnx_plat->wait_disconnect_cb == false){ + g_rwnx_plat->wait_disconnect_cb = true; + if(atomic_read(&aicwf_deinit_atomic) > 0){ + atomic_set(&aicwf_deinit_atomic, 0); + down(&aicwf_deinit_sem); + AICWFDBG(LOGINFO, "%s need to wait for disconnect callback \r\n", __func__); + }else{ + g_rwnx_plat->wait_disconnect_cb = false; + } + } - if(!usb_dev->rwnx_hw){ - aicwf_prealloc_rxbuff_free(rx_buff, &rx_priv->rxbuff_lock); - aicwf_usb_rx_buf_put(usb_dev, usb_buf); - AICWFDBG(LOGERROR, "usb_dev->rwnx_hw is not ready \r\n"); return; - } - - if (urb->actual_length > urb->transfer_buffer_length) { - aicwf_prealloc_rxbuff_free(rx_buff, &rx_priv->rxbuff_lock); - aicwf_usb_rx_buf_put(usb_dev, usb_buf); + }else{ + //schedule_work(&usb_dev->rx_urb_work); aicwf_usb_rx_submit_all_urb_(usb_dev); return; } - - if (urb->status != 0 || !urb->actual_length) { - aicwf_prealloc_rxbuff_free(rx_buff, &rx_priv->rxbuff_lock); - aicwf_usb_rx_buf_put(usb_dev, usb_buf); - if(urb->status < 0){ - AICWFDBG(LOGDEBUG, "%s urb->status:%d \r\n", __func__, urb->status); - - if(g_rwnx_plat->wait_disconnect_cb == false){ - g_rwnx_plat->wait_disconnect_cb = true; - if(atomic_read(&aicwf_deinit_atomic) > 0){ - atomic_set(&aicwf_deinit_atomic, 0); - down(&aicwf_deinit_sem); - AICWFDBG(LOGINFO, "%s need to wait for disconnect callback \r\n", __func__); - }else{ - g_rwnx_plat->wait_disconnect_cb = false; - } - } - - return; - }else{ - //schedule_work(&usb_dev->rx_urb_work); - aicwf_usb_rx_submit_all_urb_(usb_dev); - return; - } - } - + } + if (usb_dev->state == USB_UP_ST) { spin_lock_irqsave(&rx_priv->rxqlock, flags); - if (aicwf_usb_rx_aggr) { - rx_buff->len = urb->actual_length; + //if (aicwf_usb_rx_aggr) { + rx_buff->len = urb->actual_length; //printk("%s rx_buff->len:%d \r\n", __func__, rx_buff->len); - } - + //} + if(!aicwf_rxbuff_enqueue(usb_dev->dev, &rx_priv->rxq, rx_buff)){ spin_unlock_irqrestore(&rx_priv->rxqlock, flags); usb_err("rx_priv->rxq is over flow!!!\n"); @@ -328,7 +332,7 @@ static void aicwf_usb_rx_complete(struct urb *urb) } spin_unlock_irqrestore(&rx_priv->rxqlock, flags); atomic_inc(&rx_priv->rx_cnt); - + if(atomic_read(&rx_priv->rx_cnt) == 1){ complete(&rx_priv->usbdev->bus_if->busrx_trgg); } @@ -425,7 +429,7 @@ static void aicwf_usb_rx_complete(struct urb *urb) reassemble_done = true; } } else { - if (frag_len == AICWF_USB_MAX_PKT_SIZE) { + if (frag_len == aicwf_usb_max_pkt_size) { reassemble_valid = true; } } @@ -470,7 +474,7 @@ static void aicwf_usb_rx_complete(struct urb *urb) u32 pkt_len = skb->data[0] | (skb->data[1] << 8); if ((type & USB_TYPE_CFG) != USB_TYPE_CFG) { u32 pkt_total_len = pkt_len + RX_HWHRD_LEN; - if ((pkt_total_len > AICWF_USB_MAX_PKT_SIZE) && (skb->len == AICWF_USB_MAX_PKT_SIZE)) { + if ((pkt_total_len > aicwf_usb_max_pkt_size) && (skb->len == aicwf_usb_max_pkt_size)) { AICWFDBG(LOGINFO, "reassemble pkt, len=%u\n", pkt_total_len); struct sk_buff *reassemble_skb = __dev_alloc_skb(pkt_total_len, GFP_ATOMIC/*GFP_KERNEL*/); if (reassemble_skb) { @@ -479,7 +483,7 @@ static void aicwf_usb_rx_complete(struct urb *urb) rx_priv->rx_reassemble_skb = reassemble_skb; rx_priv->rx_reassemble_total_len = pkt_total_len; rx_priv->rx_reassemble_cur_len = skb->len; - rx_priv->rx_reassemble_total_frags = ALIGN(pkt_total_len, AICWF_USB_MAX_PKT_SIZE) / AICWF_USB_MAX_PKT_SIZE; + rx_priv->rx_reassemble_total_frags = ALIGN(pkt_total_len, aicwf_usb_max_pkt_size) / aicwf_usb_max_pkt_size; rx_priv->rx_reassemble_cur_frags = 1; } else { usb_err("reassemble pkt alloc fail, len=%u\n", pkt_total_len); @@ -495,7 +499,7 @@ static void aicwf_usb_rx_complete(struct urb *urb) } else { if (type == USB_TYPE_CFG_CMD_RSP) { u32 pkt_total_len = ALIGN((pkt_len + 4), 4); - if ((pkt_total_len > AICWF_USB_MAX_PKT_SIZE) && (skb->len == AICWF_USB_MAX_PKT_SIZE)) { + if ((pkt_total_len > aicwf_usb_max_pkt_size) && (skb->len == aicwf_usb_max_pkt_size)) { AICWFDBG(LOGINFO, "reassemble pkt, len=%u\n", pkt_total_len); struct sk_buff *reassemble_skb = __dev_alloc_skb(pkt_total_len, GFP_ATOMIC/*GFP_KERNEL*/); if (reassemble_skb) { @@ -504,7 +508,7 @@ static void aicwf_usb_rx_complete(struct urb *urb) rx_priv->rx_reassemble_skb = reassemble_skb; rx_priv->rx_reassemble_total_len = pkt_total_len; rx_priv->rx_reassemble_cur_len = skb->len; - rx_priv->rx_reassemble_total_frags = ALIGN(pkt_total_len, AICWF_USB_MAX_PKT_SIZE) / AICWF_USB_MAX_PKT_SIZE; + rx_priv->rx_reassemble_total_frags = ALIGN(pkt_total_len, aicwf_usb_max_pkt_size) / aicwf_usb_max_pkt_size; rx_priv->rx_reassemble_cur_frags = 1; } else { usb_err("reassemble pkt alloc fail, len=%u\n", pkt_total_len); @@ -751,9 +755,10 @@ static int aicwf_usb_submit_rx_urb(struct aic_usb_dev *usb_dev, rx_buff = aicwf_prealloc_rxbuff_alloc(&usb_dev->rx_priv->rxbuff_lock); if (rx_buff == NULL) { AICWFDBG(LOGERROR, "failed to alloc rxbuff\r\n"); - aicwf_usb_rx_buf_put(usb_dev, usb_buf); - return -1; - } + aicwf_usb_rx_buf_put(usb_dev, usb_buf); + rx_urb_sched = true; + return -1; + } rx_buff->len = 0; rx_buff->start = rx_buff->data; rx_buff->read = rx_buff->start; @@ -801,9 +806,9 @@ static int aicwf_usb_submit_rx_urb(struct aic_usb_dev *usb_dev, } if(aicwf_usb_rx_aggr){ - skb = __dev_alloc_skb(AICWF_USB_AGGR_MAX_PKT_SIZE, GFP_ATOMIC/*GFP_KERNEL*/); + skb = __dev_alloc_skb(AICWF_USB_AGGR_MAX_PKT_SIZE, GFP_ATOMIC/*GFP_KERNEL*/); } else { - skb = __dev_alloc_skb(AICWF_USB_MAX_PKT_SIZE, GFP_ATOMIC/*GFP_KERNEL*/); + skb = __dev_alloc_skb(aicwf_usb_max_pkt_size, GFP_ATOMIC/*GFP_KERNEL*/); } if (!skb) { aicwf_usb_rx_buf_put(usb_dev, usb_buf); @@ -821,7 +826,7 @@ static int aicwf_usb_submit_rx_urb(struct aic_usb_dev *usb_dev, usb_fill_bulk_urb(usb_buf->urb, usb_dev->udev, usb_dev->bulk_in_pipe, - skb->data, AICWF_USB_MAX_PKT_SIZE, aicwf_usb_rx_complete, usb_buf); + skb->data, aicwf_usb_max_pkt_size, aicwf_usb_rx_complete, usb_buf); } usb_buf->usbdev = usb_dev; @@ -836,10 +841,10 @@ static int aicwf_usb_submit_rx_urb(struct aic_usb_dev *usb_dev, aicwf_usb_rx_buf_put(usb_dev, usb_buf); msleep(100); - return -1; + return -1; }else{ - atomic_inc(&rx_urb_cnt); - } + atomic_inc(&rx_urb_cnt); + } return 0; } #endif @@ -857,7 +862,7 @@ static void aicwf_usb_rx_submit_all_urb(struct aic_usb_dev *usb_dev) while((usb_buf = aicwf_usb_rx_buf_get(usb_dev)) != NULL) { if (aicwf_usb_submit_rx_urb(usb_dev, usb_buf)) { AICWFDBG(LOGERROR, "sub rx fail\n"); - return; + return; #if 0 AICWFDBG(LOGERROR, "usb rx refill fail\n"); if (usb_dev->state != USB_UP_ST) @@ -1330,11 +1335,11 @@ int usb_busrx_thread(void *data) #ifdef CONFIG_TXRX_THREAD_PRIO if (busrx_thread_prio > 0) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)) - sched_set_fifo_low(current); + sched_set_fifo_low(current); #else - struct sched_param param; - param.sched_priority = (busrx_thread_prio < MAX_RT_PRIO)?busrx_thread_prio:(MAX_RT_PRIO-1); - sched_setscheduler(current, SCHED_FIFO, ¶m); + struct sched_param param; + param.sched_priority = (busrx_thread_prio < MAX_RT_PRIO)?busrx_thread_prio:(MAX_RT_PRIO-1); + sched_setscheduler(current, SCHED_FIFO, ¶m); #endif } #endif @@ -1373,19 +1378,19 @@ int usb_msg_busrx_thread(void *data) struct aicwf_bus *bus_if = rx_priv->usbdev->bus_if; #ifdef CONFIG_TXRX_THREAD_PRIO - if (busrx_thread_prio > 0) { + if (busrx_thread_prio > 0) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)) - sched_set_fifo_low(current); + sched_set_fifo_low(current); #else - struct sched_param param; - param.sched_priority = (busrx_thread_prio < MAX_RT_PRIO)?busrx_thread_prio:(MAX_RT_PRIO-1); - sched_setscheduler(current, SCHED_FIFO, ¶m); + struct sched_param param; + param.sched_priority = (busrx_thread_prio < MAX_RT_PRIO)?busrx_thread_prio:(MAX_RT_PRIO-1); + sched_setscheduler(current, SCHED_FIFO, ¶m); #endif - } + } #endif - AICWFDBG(LOGINFO, "%s the policy of current thread is:%d\n", __func__, current->policy); - AICWFDBG(LOGINFO, "%s the rt_priority of current thread is:%d\n", __func__, current->rt_priority); - AICWFDBG(LOGINFO, "%s the current pid is:%d\n", __func__, current->pid); + AICWFDBG(LOGINFO, "%s the policy of current thread is:%d\n", __func__, current->policy); + AICWFDBG(LOGINFO, "%s the rt_priority of current thread is:%d\n", __func__, current->rt_priority); + AICWFDBG(LOGINFO, "%s the current pid is:%d\n", __func__, current->pid); @@ -1504,7 +1509,7 @@ static void aicwf_usb_free_urb(struct list_head *q, spinlock_t *qlock) spin_lock_irqsave(qlock, flags); list_for_each_entry_safe(usb_buf, tmp, q, list) { - spin_unlock_irqrestore(qlock, flags); + spin_unlock_irqrestore(qlock, flags); if (!usb_buf->urb) { usb_err("bad usb_buf\n"); spin_lock_irqsave(qlock, flags); @@ -1605,7 +1610,7 @@ err: static int aicwf_usb_alloc_msg_rx_urb(struct aic_usb_dev *usb_dev) { int i; - + AICWFDBG(LOGINFO, "%s AICWF_USB_MSG_RX_URBS:%d \r\n", __func__, AICWF_USB_MSG_RX_URBS); for (i = 0; i < AICWF_USB_MSG_RX_URBS; i++) { @@ -1728,7 +1733,8 @@ static int aicwf_usb_bus_txdata(struct device *dev, struct sk_buff *skb) u16 index = 0; bool need_cfm = false; #ifdef CONFIG_USB_ALIGN_DATA//AIDEN - int align; + u8 *buf_align; + int align; #endif if (usb_dev->state != USB_UP_ST) { @@ -1823,6 +1829,7 @@ static int aicwf_usb_bus_txdata(struct device *dev, struct sk_buff *skb) #if defined CONFIG_USB_NO_TRANS_DMA_MAP #error "CONFIG_USB_NO_TRANS_DMA_MAP not supported" #endif +#if 0 usb_buf->usb_align_data = (u8*)kmalloc(sizeof(u8) * buf_len + align_param, GFP_ATOMIC); align = ((unsigned long)(usb_buf->usb_align_data)) & (align_param - 1); @@ -1830,6 +1837,21 @@ static int aicwf_usb_bus_txdata(struct device *dev, struct sk_buff *skb) usb_fill_bulk_urb(usb_buf->urb, usb_dev->udev, usb_dev->bulk_out_pipe, usb_buf->usb_align_data + (align_param - align), buf_len, aicwf_usb_tx_complete, usb_buf); +#else + if (!IS_ALIGNED((unsigned long)buf, align_param)) { + usb_buf->usb_align_data = (u8*)kmalloc(sizeof(u8) * buf_len + align_param, GFP_ATOMIC); + if (usb_buf->usb_align_data) { + align = ((unsigned long)(usb_buf->usb_align_data)) & (align_param - 1); + buf_align = usb_buf->usb_align_data + (align_param - align); + memcpy(buf_align, buf, buf_len); + } + } else { + buf_align = buf; + } + + usb_fill_bulk_urb(usb_buf->urb, usb_dev->udev, usb_dev->bulk_out_pipe, + buf_align, buf_len, aicwf_usb_tx_complete, usb_buf); +#endif #else usb_fill_bulk_urb(usb_buf->urb, usb_dev->udev, usb_dev->bulk_out_pipe, buf, buf_len, aicwf_usb_tx_complete, usb_buf); @@ -1878,14 +1900,15 @@ static int aicwf_usb_bus_start(struct device *dev) aicwf_usb_state_change(usb_dev, USB_UP_ST); usb_dev->rx_prepare_ready = false; - aicwf_usb_rx_prepare(usb_dev); aicwf_usb_tx_prepare(usb_dev); #ifdef CONFIG_USB_MSG_IN_EP if(usb_dev->msg_in_pipe){ aicwf_usb_msg_rx_prepare(usb_dev); + } else { + aicwf_usb_rx_prepare(usb_dev); } #endif - if(!usb_dev->rx_prepare_ready){ + if(!usb_dev->msg_in_pipe && !usb_dev->rx_prepare_ready){ AICWFDBG(LOGERROR, "%s rx prepare fail\r\n", __func__); return -1; }else{ @@ -1933,7 +1956,7 @@ static void aicwf_usb_cancel_all_urbs_(struct aic_usb_dev *usb_dev) usb_kill_anchored_urbs(&usb_dev->rx_submitted); #ifdef CONFIG_USB_MSG_IN_EP if(usb_dev->msg_in_pipe){ - usb_kill_anchored_urbs(&usb_dev->msg_rx_submitted); + usb_kill_anchored_urbs(&usb_dev->msg_rx_submitted); } #endif } @@ -1956,8 +1979,8 @@ static void aicwf_usb_bus_stop(struct device *dev) return; if(g_rwnx_plat && g_rwnx_plat->wait_disconnect_cb == true){ - atomic_set(&aicwf_deinit_atomic, 1); - up(&aicwf_deinit_sem); + atomic_set(&aicwf_deinit_atomic, 1); + up(&aicwf_deinit_sem); } aicwf_usb_state_change(usb_dev, USB_DOWN_ST); //aicwf_usb_cancel_all_urbs(usb_dev);//AIDEN @@ -2117,18 +2140,23 @@ static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, struct usb_interface *in /* Check interface number */ #ifdef CONFIG_USB_BT - if (usb->actconfig->desc.bNumInterfaces != 3) { + if (usb->actconfig->desc.bNumInterfaces != 3) #else - if (usb->actconfig->desc.bNumInterfaces != 1) { + if (usb->actconfig->desc.bNumInterfaces != 1) #endif + { AICWFDBG(LOGERROR, "Number of interfaces: %d not supported\n", usb->actconfig->desc.bNumInterfaces); if(usb_dev->chipid == PRODUCT_ID_AIC8800DC){ AICWFDBG(LOGERROR, "AIC8800DC change to AIC8800DW\n"); usb_dev->chipid = PRODUCT_ID_AIC8800DW; - }else if (usb_dev->chipid == PRODUCT_ID_AIC8800D81) { - AICWFDBG(LOGERROR, "AIC8800D80\n"); - } else { + } else if (usb_dev->chipid == PRODUCT_ID_AIC8800D81) { + AICWFDBG(LOGINFO, "AIC8800D80\n"); + } else if(usb_dev->chipid == PRODUCT_ID_AIC8800D81X2 || + usb_dev->chipid == PRODUCT_ID_AIC8800D89X2 || + usb_dev->chipid == PRODUCT_ID_AIC8800D81){ + //TODO + }else{ ret = -ENODEV; goto exit; } @@ -2193,17 +2221,33 @@ static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, struct usb_interface *in } #endif #ifdef CONFIG_USB_MSG_IN_EP - if(usb_dev->chipid != PRODUCT_ID_AIC8801){ - if (usb_dev->msg_in_pipe == 0) { - AICWFDBG(LOGINFO, "No RX Msg (in) Bulk EP found\n"); - } + if(usb_dev->chipid != PRODUCT_ID_AIC8801){ + if (usb_dev->msg_in_pipe == 0) { + AICWFDBG(LOGINFO, "No RX Msg (in) Bulk EP found\n"); } + } #endif - if (usb->speed == USB_SPEED_HIGH){ - AICWFDBG(LOGINFO, "Aic high speed USB device detected\n"); - }else{ - AICWFDBG(LOGINFO, "Aic full speed USB device detected\n"); + switch (usb->speed) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) + case USB_SPEED_SUPER_PLUS: + AICWFDBG(LOGINFO, "Aic super plus speed USB device detected\n"); + break; +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0) + case USB_SPEED_SUPER: + AICWFDBG(LOGINFO, "Aic super speed USB device detected\n"); + break; +#endif + case USB_SPEED_HIGH: + AICWFDBG(LOGINFO, "Aic high speed USB device detected\n"); + break; + case USB_SPEED_FULL: + AICWFDBG(LOGINFO, "Aic full speed USB device detected\n"); + break; + default: + AICWFDBG(LOGINFO, "Aic unknown speed(%d) USB device detected\n", usb->speed); + break; } exit: @@ -2293,7 +2337,9 @@ static int aicwf_usb_chipmatch(struct aic_usb_dev *usb_dev, u16_l vid, u16_l pid usb_dev->chipid = PRODUCT_ID_AIC8801; AICWFDBG(LOGINFO, "%s USE AIC8801\r\n", __func__); return 0; - }else if(pid == USB_PRODUCT_ID_AIC8800DC){ + }else if(pid == USB_PRODUCT_ID_AIC8800DC || pid == USB_PRODUCT_ID_TENDA + || pid == USB_PRODUCT_ID_TENDA_U2 || pid == USB_PRODUCT_ID_AIC8800FC_CUS1 + || pid == USB_PRODUCT_ID_AIC8800FC_CUS2 || pid == USB_PRODUCT_ID_AIC8800FC_CUS3){ usb_dev->chipid = PRODUCT_ID_AIC8800DC; AICWFDBG(LOGINFO, "%s USE AIC8800DC\r\n", __func__); return 0; @@ -2301,11 +2347,42 @@ static int aicwf_usb_chipmatch(struct aic_usb_dev *usb_dev, u16_l vid, u16_l pid usb_dev->chipid = PRODUCT_ID_AIC8800DW; AICWFDBG(LOGINFO, "%s USE AIC8800DW\r\n", __func__); return 0; - }else if(pid == USB_PRODUCT_ID_AIC8800D81 || vid == USB_VENDOR_ID_TP || pid == USB_PRODUCT_ID_AIC8800D83 - || vid == USB_VENDOR_ID_TENDA || pid == USB_PRODUCT_ID_AIC8800D84 || pid == USB_PRODUCT_ID_AIC8800D85){ + }else if(pid == USB_PRODUCT_ID_AIC8800D81 || pid == USB_PRODUCT_ID_AIC8800D41 + || pid == USB_PRODUCT_ID_TENDA_U11 || pid == USB_PRODUCT_ID_TENDA_U11_PRO + || pid == USB_PRODUCT_ID_AIC8800M80_CUS1 || pid == USB_PRODUCT_ID_AIC8800M80_CUS2 + || pid == USB_PRODUCT_ID_AIC8800M80_CUS3 || pid == USB_PRODUCT_ID_AIC8800M80_CUS4 + || pid == USB_PRODUCT_ID_AIC8800M80_CUS5 || pid == USB_PRODUCT_ID_AIC8800M80_CUS6){ usb_dev->chipid = PRODUCT_ID_AIC8800D81; aicwf_usb_rx_aggr = true; - AICWFDBG(LOGINFO, "%s USE AIC8800D81\r\n", __func__); + AICWFDBG(LOGINFO, "%s USE AIC8800D81\r\n", __func__); + return 0; + }else if(pid == USB_PRODUCT_ID_AIC8800D81X2){ + usb_dev->chipid = PRODUCT_ID_AIC8800D81X2; + aicwf_usb_max_pkt_size = AICWF_USB_MAX_AMSDU_PKT_SIZE; + if (usb_dev->udev->speed <= USB_SPEED_HIGH) { + aicwf_usb_rx_aggr = true; + } else { + #ifdef CONFIG_PLATFORM_HI + aicwf_usb_rx_aggr = true; + #else + aicwf_usb_rx_aggr = false; + #endif + } + AICWFDBG(LOGINFO, "%s USE AIC8800D81X2\r\n", __func__); + return 0; + }else if(pid == USB_PRODUCT_ID_AIC8800D89X2){ + usb_dev->chipid = PRODUCT_ID_AIC8800D89X2; + aicwf_usb_max_pkt_size = AICWF_USB_MAX_AMSDU_PKT_SIZE; + if (usb_dev->udev->speed <= USB_SPEED_HIGH) { + aicwf_usb_rx_aggr = true; + } else { + #ifdef CONFIG_PLATFORM_HI + aicwf_usb_rx_aggr = true; + #else + aicwf_usb_rx_aggr = false; + #endif + } + AICWFDBG(LOGINFO, "%s USE AIC8800D89X2\r\n", __func__); return 0; }else{ return -1; @@ -2326,7 +2403,7 @@ static int aicwf_usb_probe(struct usb_interface *intf, const struct usb_device_i #endif usb_dev = kzalloc(sizeof(struct aic_usb_dev), GFP_ATOMIC); - + AICWFDBG(LOGDEBUG, "%s usb_dev:%d usb_tx_buf:%d usb_rx_buf:%d\r\n", __func__, (int)sizeof(struct aic_usb_dev), @@ -2361,7 +2438,7 @@ static int aicwf_usb_probe(struct usb_interface *intf, const struct usb_device_i memset(usb_dev->usb_tx_buf, 0, (int)(sizeof(struct aicwf_usb_buf) * AICWF_USB_TX_URBS)); - + memset(usb_dev->usb_rx_buf, 0, (int)(sizeof(struct aicwf_usb_buf) * AICWF_USB_RX_URBS)); @@ -2370,9 +2447,12 @@ static int aicwf_usb_probe(struct usb_interface *intf, const struct usb_device_i usb_dev->udev = usb; usb_dev->dev = &usb->dev; usb_set_intfdata(intf, usb_dev); - + + usb_dev->vid = id->idVendor; + usb_dev->pid = id->idProduct; + ret = aicwf_usb_chipmatch(usb_dev, id->idVendor, id->idProduct); - + if (ret < 0) { AICWFDBG(LOGERROR, "%s pid:0x%04X vid:0x%04X unsupport\n", __func__, id->idVendor, id->idProduct); @@ -2442,6 +2522,9 @@ static int aicwf_usb_probe(struct usb_interface *intf, const struct usb_device_i AICWFDBG(LOGERROR, "aicwf_rwnx_usb_platform_init err %d\n", ret); goto out_free_bus; } + if(usb_dev->msg_in_pipe){ + aicwf_usb_rx_prepare(usb_dev); + } aicwf_hostif_ready(); #ifdef CONFIG_GPIO_WAKEUP @@ -2468,7 +2551,7 @@ static void aicwf_usb_disconnect(struct usb_interface *intf) { struct aic_usb_dev *usb_dev = (struct aic_usb_dev *) usb_get_intfdata(intf); - AICWFDBG(LOGINFO, "%s Enter\r\n", __func__); + AICWFDBG(LOGINFO, "%s Enter\r\n", __func__); if(g_rwnx_plat->wait_disconnect_cb == false){ atomic_set(&aicwf_deinit_atomic, 0); @@ -2505,59 +2588,53 @@ static void aicwf_usb_disconnect(struct usb_interface *intf) static int aicwf_usb_suspend(struct usb_interface *intf, pm_message_t state) { struct aic_usb_dev *usb_dev = - (struct aic_usb_dev *) usb_get_intfdata(intf); -#ifdef CONFIG_GPIO_WAKEUP - struct rwnx_vif *rwnx_vif, *tmp; - //unsigned long irqflags; -#endif - - printk("%s enter\r\n", __func__); - -#ifdef CONFIG_GPIO_WAKEUP -// spin_lock_irqsave(&irq_lock, irqflags); -// rwnx_enable_hostwake_irq(); -// spin_unlock_irqrestore(&irq_lock, irqflags); - atomic_inc(&irq_count); - - list_for_each_entry_safe(rwnx_vif, tmp, &usb_dev->rwnx_hw->vifs, list) { - if (rwnx_vif->ndev) - netif_device_detach(rwnx_vif->ndev); - } -#endif - - aicwf_usb_state_change(usb_dev, USB_SLEEP_ST); + (struct aic_usb_dev *) usb_get_intfdata(intf); + struct rwnx_vif *rwnx_vif, *tmp; + + AICWFDBG(LOGINFO, "%s enter\r\n", __func__); +#ifdef CONFIG_WOWLAN + rwnx_send_dummy_reboot(usb_dev->rwnx_hw); +#endif + list_for_each_entry_safe(rwnx_vif, tmp, &usb_dev->rwnx_hw->vifs, list) { + if (rwnx_vif->ndev){ + netif_tx_stop_all_queues(rwnx_vif->ndev); + mdelay(1000); + } + } + aicwf_usb_state_change(usb_dev, USB_SLEEP_ST); aicwf_bus_stop(usb_dev->bus_if); + list_for_each_entry_safe(rwnx_vif, tmp, &usb_dev->rwnx_hw->vifs, list) { + if (rwnx_vif->ndev) + netif_device_detach(rwnx_vif->ndev); + } - return 0; +return 0; } static int aicwf_usb_resume(struct usb_interface *intf) { struct aic_usb_dev *usb_dev = - (struct aic_usb_dev *) usb_get_intfdata(intf); -#ifdef CONFIG_GPIO_WAKEUP - struct rwnx_vif *rwnx_vif, *tmp; -// unsigned long irqflags; -#endif - printk("%s enter\r\n", __func__); + (struct aic_usb_dev *) usb_get_intfdata(intf); + struct rwnx_vif *rwnx_vif, *tmp; + AICWFDBG(LOGINFO, "%s enter\r\n", __func__); + list_for_each_entry_safe(rwnx_vif, tmp, &usb_dev->rwnx_hw->vifs, list) { + if (rwnx_vif->ndev) + netif_device_attach(rwnx_vif->ndev); + } -#ifdef CONFIG_GPIO_WAKEUP -// spin_lock_irqsave(&irq_lock, irqflags); -// rwnx_disable_hostwake_irq(); -// spin_unlock_irqrestore(&irq_lock, irqflags); - atomic_dec(&irq_count); + if (usb_dev->state != USB_UP_ST){ + aicwf_bus_start(usb_dev->bus_if); + } - list_for_each_entry_safe(rwnx_vif, tmp, &usb_dev->rwnx_hw->vifs, list) { - if (rwnx_vif->ndev) - netif_device_attach(rwnx_vif->ndev); + list_for_each_entry_safe(rwnx_vif, tmp, &usb_dev->rwnx_hw->vifs, list) { + if (rwnx_vif->ndev){ + netif_tx_wake_all_queues(rwnx_vif->ndev); + } + } + if(usb_dev->msg_in_pipe){ + aicwf_usb_rx_prepare(usb_dev); } -#endif - - if (usb_dev->state == USB_UP_ST) - return 0; - - aicwf_bus_start(usb_dev->bus_if); return 0; } @@ -2575,15 +2652,21 @@ static struct usb_device_id aicwf_usb_id_table[] = { {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_AIC, USB_PRODUCT_ID_AIC8800D41, 0xff, 0xff, 0xff)}, {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_AIC, USB_PRODUCT_ID_AIC8800DC, 0xff, 0xff, 0xff)}, {USB_DEVICE(USB_VENDOR_ID_AIC, USB_PRODUCT_ID_AIC8800DW)}, - {USB_DEVICE(USB_VENDOR_ID_AIC, USB_PRODUCT_ID_AIC8800D83)}, - {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800D81)}, - {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800D83)}, - {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800D84)}, - {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800D85)}, - {USB_DEVICE(USB_VENDOR_ID_TP, USB_PRODUCT_ID_TP)}, - {USB_DEVICE(USB_VENDOR_ID_TP, USB_PRODUCT_ID_MERCURY)}, - {USB_DEVICE(USB_VENDOR_ID_TP, USB_PRODUCT_ID_FAST)}, + {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800D81X2, 0xff, 0xff, 0xff)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800D89X2)}, {USB_DEVICE(USB_VENDOR_ID_TENDA, USB_PRODUCT_ID_TENDA)}, + {USB_DEVICE(USB_VENDOR_ID_TENDA, USB_PRODUCT_ID_TENDA_U2)}, + {USB_DEVICE(USB_VENDOR_ID_TENDA, USB_PRODUCT_ID_TENDA_U11)}, + {USB_DEVICE(USB_VENDOR_ID_TENDA, USB_PRODUCT_ID_TENDA_U11_PRO)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800FC_CUS1)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800FC_CUS2)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800FC_CUS3)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800M80_CUS1)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800M80_CUS2)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800M80_CUS3)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800M80_CUS4)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800M80_CUS5)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_PRODUCT_ID_AIC8800M80_CUS6)}, #endif {} }; @@ -2619,7 +2702,7 @@ void aicwf_usb_exit(void) { int retry = 5; AICWFDBG(LOGINFO, "%s Enter\r\n", __func__); - + AICWFDBG(LOGDEBUG, "%s in_interrupt:%d in_softirq:%d in_atomic:%d\r\n", __func__, (int)in_interrupt(), (int)in_softirq(), (int)in_atomic()); do{ @@ -2631,7 +2714,7 @@ void aicwf_usb_exit(void) break; } }while(atomic_read(&aicwf_deinit_atomic) == 0); - + atomic_set(&aicwf_deinit_atomic, 0); if(down_timeout(&aicwf_deinit_sem, msecs_to_jiffies(SEM_TIMOUT)) != 0){ AICWFDBG(LOGERROR, "%s semaphore waiting timeout\r\n", __func__); diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_usb.h b/drivers/aic8800/aic8800_fdrv/aicwf_usb.h index e8e3191..49f7355 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_usb.h +++ b/drivers/aic8800/aic8800_fdrv/aicwf_usb.h @@ -17,38 +17,46 @@ /* USB Device ID */ #define USB_VENDOR_ID_AIC 0xA69C #define USB_VENDOR_ID_AIC_V2 0x368B -#define USB_VENDOR_ID_TP 0x2357 #define USB_VENDOR_ID_TENDA 0x2604 -#define USB_PRODUCT_ID_TP 0x014e -#define USB_PRODUCT_ID_MERCURY 0x014b -#define USB_PRODUCT_ID_FAST 0x014f - -#define USB_PRODUCT_ID_TENDA 0x001f - #ifndef CONFIG_USB_BT -#define USB_PRODUCT_ID_AIC8800 0x8800 -#define USB_PRODUCT_ID_AIC8801 0x8801 -#define USB_PRODUCT_ID_AIC8800DC 0x88dc -#define USB_PRODUCT_ID_AIC8800DW 0x88dd -#define USB_PRODUCT_ID_AIC8800D81 0x8d81 +#define USB_PRODUCT_ID_AIC8800 0x8800 +#define USB_PRODUCT_ID_AIC8801 0x8801 +#define USB_PRODUCT_ID_AIC8800DC 0x88dc +#define USB_PRODUCT_ID_AIC8800DW 0x88dd +#define USB_PRODUCT_ID_AIC8800D81 0x8d81 +#define USB_PRODUCT_ID_AIC8800D81X2 0x8d91 +#define USB_PRODUCT_ID_AIC8800D89X2 0x8d99 #else -#define USB_PRODUCT_ID_AIC8801 0x8801 -#define USB_PRODUCT_ID_AIC8800DC 0x88dc -#define USB_PRODUCT_ID_AIC8800DW 0x88dd -#define USB_PRODUCT_ID_AIC8800D81 0x8d81 -#define USB_PRODUCT_ID_AIC8800D41 0x8d41 -#define USB_PRODUCT_ID_AIC8800D83 0x8d83 -#define USB_PRODUCT_ID_AIC8800D84 0x8d84 -#define USB_PRODUCT_ID_AIC8800D85 0x8d85 - +#define USB_PRODUCT_ID_AIC8801 0x8801 +#define USB_PRODUCT_ID_AIC8800DC 0x88dc +#define USB_PRODUCT_ID_AIC8800DW 0x88dd +#define USB_PRODUCT_ID_AIC8800D81 0x8d81 +#define USB_PRODUCT_ID_AIC8800D41 0x8d41 +#define USB_PRODUCT_ID_AIC8800D81X2 0x8d91 +#define USB_PRODUCT_ID_AIC8800D89X2 0x8d99 +#define USB_PRODUCT_ID_TENDA 0x0013 +#define USB_PRODUCT_ID_TENDA_U2 0x0014 +#define USB_PRODUCT_ID_TENDA_U11 0x001f +#define USB_PRODUCT_ID_TENDA_U11_PRO 0x0020 +#define USB_PRODUCT_ID_AIC8800FC_CUS1 0x88df +#define USB_PRODUCT_ID_AIC8800FC_CUS2 0x88E0 +#define USB_PRODUCT_ID_AIC8800FC_CUS3 0x88E1 +#define USB_PRODUCT_ID_AIC8800M80_CUS1 0x8D83 +#define USB_PRODUCT_ID_AIC8800M80_CUS2 0x8D85 +#define USB_PRODUCT_ID_AIC8800M80_CUS3 0x8D86 +#define USB_PRODUCT_ID_AIC8800M80_CUS4 0x8D89 +#define USB_PRODUCT_ID_AIC8800M80_CUS5 0x8D8A +#define USB_PRODUCT_ID_AIC8800M80_CUS6 0x8D8C #endif enum AICWF_IC{ PRODUCT_ID_AIC8801 = 0, PRODUCT_ID_AIC8800DC, PRODUCT_ID_AIC8800DW, - PRODUCT_ID_AIC8800D81 + PRODUCT_ID_AIC8800D81, + PRODUCT_ID_AIC8800D81X2, + PRODUCT_ID_AIC8800D89X2 }; @@ -71,6 +79,7 @@ enum AICWF_IC{ #endif #define AICWF_USB_MSG_MAX_PKT_SIZE (2048) #define AICWF_USB_MAX_PKT_SIZE (2048) +#define AICWF_USB_MAX_AMSDU_PKT_SIZE (2048*6) #define AICWF_USB_FC_PERSTA_HIGH_WATER 64 #define AICWF_USB_FC_PERSTA_LOW_WATER 16 @@ -183,6 +192,8 @@ struct aic_usb_dev { #endif u16 chipid; bool tbusy; + u16_l vid; + u16_l pid; }; extern void aicwf_usb_exit(void); diff --git a/drivers/aic8800/aic8800_fdrv/aicwf_wext_linux.c b/drivers/aic8800/aic8800_fdrv/aicwf_wext_linux.c index bc0643d..d97a82f 100644 --- a/drivers/aic8800/aic8800_fdrv/aicwf_wext_linux.c +++ b/drivers/aic8800/aic8800_fdrv/aicwf_wext_linux.c @@ -970,6 +970,26 @@ static int aicwf_set_scan(struct net_device *dev, struct iw_request_info *a, } } +#if WIRELESS_EXT >= 17 + if (wrqu->data.length == sizeof(struct iw_scan_req)) { + struct iw_scan_req *req = (struct iw_scan_req *)extra; + + if (wrqu->data.flags & IW_SCAN_THIS_ESSID) { + int len = min((int)req->essid_len, 32); + request->ssids = kmalloc(sizeof(struct cfg80211_ssid), GFP_KERNEL); + if(!request->ssids){ + AICWFDBG(LOGERROR, "%s Failied to alloc memory for ssids", __func__); + return -ENOMEM; + } + memset(request->ssids, 0, sizeof(struct cfg80211_ssid)); + memcpy(request->ssids[0].ssid, req->essid, len); + request->ssids[0].ssid_len = len; + request->n_ssids = 1; + AICWFDBG(LOGDEBUG,"IW_SCAN_THIS_ESSID, ssid=%s, len=%d\n", req->essid, req->essid_len); + } else if (req->scan_type == IW_SCAN_TYPE_PASSIVE) + AICWFDBG(LOGDEBUG,"aic_set_scan, req->scan_type == IW_SCAN_TYPE_PASSIVE\n"); + } +#endif if ((ret = rwnx_send_scanu_req(rwnx_hw, rwnx_vif, request))){ return ret; } @@ -980,7 +1000,6 @@ static int aicwf_set_scan(struct net_device *dev, struct iw_request_info *a, if (!wait_for_completion_killable_timeout(&rwnx_hw->wext_scan_com, wext_scan_timeout)) { AICWFDBG(LOGERROR, "%s WEXT scan timeout", __func__); } - return 0; } diff --git a/drivers/aic8800/aic8800_fdrv/lmac_mac.h b/drivers/aic8800/aic8800_fdrv/lmac_mac.h index 9851210..1d90007 100644 --- a/drivers/aic8800/aic8800_fdrv/lmac_mac.h +++ b/drivers/aic8800/aic8800_fdrv/lmac_mac.h @@ -472,6 +472,7 @@ enum mac_connection_flags #define IEEE80211_HE_PHY_CAP2_MIDAMBLE_RX_TX_MAX_NSTS 0x01 #define IEEE80211_HE_PHY_CAP2_NDP_4x_LTF_AND_3_2US 0x02 #define IEEE80211_HE_PHY_CAP2_DOPPLER_RX 0x20 +#define IEEE80211_HE_PHY_CAP2_STBC_TX_UNDER_80MHZ 0x04 #define IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ 0x08 #define IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM 0x18 #define IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 0x00 diff --git a/drivers/aic8800/aic8800_fdrv/lmac_msg.h b/drivers/aic8800/aic8800_fdrv/lmac_msg.h index 9dbc1ba..b0b51df 100644 --- a/drivers/aic8800/aic8800_fdrv/lmac_msg.h +++ b/drivers/aic8800/aic8800_fdrv/lmac_msg.h @@ -402,6 +402,17 @@ enum mm_msg_tag MM_SET_TXPWR_LVL_ADJ_REQ, MM_SET_TXPWR_LVL_ADJ_CFM, + MM_RADAR_DETECT_IND, + + MM_SET_APF_PROG_REQ, + MM_SET_APF_PROG_CFM, + + MM_GET_APF_PROG_REQ, + MM_GET_APF_PROG_CFM, + + MM_SET_TXPWR_PER_STA_REQ, + MM_SET_TXPWR_PER_STA_CFM, + /// MAX number of messages MM_MAX, }; @@ -1264,6 +1275,17 @@ struct mm_set_rf_config_req u32_l data[64]; }; +typedef struct +{ + u32_l magic_num; /*“GWCR” or ’SWCR”*/ + u32_l info_flag; + u32_l calib_flag; + u32_l reserved0; + u32_l res_data[536/sizeof(u32_l)]; +}wf_rf_calib_res_drv_t; + +#define DRIVER_GET_WIFI_CALRES_MAGIC_NUM 0x52435747 +#define DRIVER_SET_WIFI_CALRES_MAGIC_NUM 0x52435753 struct mm_set_rf_calib_req { @@ -1277,6 +1299,20 @@ struct mm_set_rf_calib_req }; +struct mm_set_rf_calib_req_v2 +{ + u32_l cal_cfg_24g; + u32_l cal_cfg_5g; + u32_l param_alpha; + u32_l bt_calib_en; + u32_l bt_calib_param; + u8_l xtal_cap; + u8_l xtal_cap_fine; + u8_l reserved0[2]; + wf_rf_calib_res_drv_t cal_res; + +}; + struct mm_set_rf_calib_cfm { u32_l rxgain_24g_addr; @@ -1285,6 +1321,15 @@ struct mm_set_rf_calib_cfm u32_l txgain_5g_addr; }; +struct mm_set_rf_calib_cfm_v2 +{ + u32_l rxgain_24g_addr; + u32_l rxgain_5g_addr; + u32_l txgain_24g_addr; + u32_l txgain_5g_addr; + wf_rf_calib_res_drv_t cal_res; +}; + struct mm_get_mac_addr_req { u32_l get; @@ -1304,7 +1349,13 @@ struct mm_get_sta_info_cfm { u32_l rate_info; u32_l txfailed; - u8 rssi; + u8 rssi; + u8 reserved[3]; + u32_l chan_time; + u32_l chan_busy_time; + u32_l ack_fail_stat; + u32_l ack_succ_stat; + u32_l chan_tx_busy_time; }; typedef struct @@ -1340,6 +1391,20 @@ typedef struct s8_l pwrlvl_11ax_5g[12]; } txpwr_lvl_conf_v3_t; +typedef struct +{ + u8_l enable; + s8_l pwrlvl_11b_11ag_2g4[12]; + s8_l pwrlvl_11n_11ac_2g4[10]; + s8_l pwrlvl_11ax_2g4[12]; + s8_l pwrlvl_11a_5g[8]; + s8_l pwrlvl_11n_11ac_5g[10]; + s8_l pwrlvl_11ax_5g[12]; + s8_l pwrlvl_11a_6g[8]; + s8_l pwrlvl_11n_11ac_6g[10]; + s8_l pwrlvl_11ax_6g[12]; +} txpwr_lvl_conf_v4_t; + typedef struct { u8_l enable; @@ -1353,6 +1418,7 @@ struct mm_set_txpwr_lvl_req txpwr_lvl_conf_t txpwr_lvl; txpwr_lvl_conf_v2_t txpwr_lvl_v2; txpwr_lvl_conf_v3_t txpwr_lvl_v3; + txpwr_lvl_conf_v4_t txpwr_lvl_v4; }; }; @@ -1363,8 +1429,10 @@ struct mm_set_txpwr_lvl_adj_req typedef struct { - u8_l loss_enable; - u8_l loss_value; + u8_l loss_enable_2g4; + s8_l loss_value_2g4; + u8_l loss_enable_5g; + s8_l loss_value_5g; } txpwr_loss_conf_t; typedef struct @@ -1424,16 +1492,58 @@ typedef struct typedef struct { - int8_t enable; - int8_t pwrofst2x_tbl_2g4[3][3]; - int8_t pwrofst2x_tbl_5g[3][6]; + u8_l enable; + s8_l pwrofst2x_tbl_2g4[3][3]; + s8_l pwrofst2x_tbl_5g[3][6]; } txpwr_ofst2x_conf_t; +/* + * pwrofst2x_v2_tbl_2g4_ant0/1[3][3]: + * +---------------+----------+---------------+--------------+ + * | ChGrp\RateTyp | DSSS | OFDM_HIGHRATE | OFDM_LOWRATE | + * +---------------+----------+---------------+--------------+ + * | CH_1_4 | [0][0] | [0][1] | Reserved | + * +---------------+----------+---------------+--------------+ + * | CH_5_9 | [1][0] | [1][1] | Reserved | + * +---------------+----------+---------------+--------------+ + * | CH_10_13 | [2][0] | [2][1] | Reserved | + * +---------------+----------+---------------+--------------+ + * pwrofst2x_v2_tbl_5g_ant0/1[6][3]: + * +-----------------+---------------+--------------+--------------+ + * | ChGrp\RateTyp | OFDM_HIGHRATE | OFDM_LOWRATE | OFDM_MIDRATE | + * +-----------------+---------------+--------------+--------------+ + * | CH_42(36~50) | [0][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + * | CH_58(51~64) | [1][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + * | CH_106(98~114) | [2][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + * | CH_122(115~130) | [3][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + * | CH_138(131~146) | [4][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + * | CH_155(147~166) | [5][0] | Reserved | Reserved | + * +-----------------+---------------+--------------+--------------+ + */ + +typedef struct +{ + u8_l enable; + u8_l pwrofst_flags; + s8_l pwrofst2x_tbl_2g4_ant0[3][3]; + s8_l pwrofst2x_tbl_2g4_ant1[3][3]; + s8_l pwrofst2x_tbl_5g_ant0[6][3]; + s8_l pwrofst2x_tbl_5g_ant1[6][3]; + s8_l pwrofst2x_tbl_6g_ant0[15]; + s8_l pwrofst2x_tbl_6g_ant1[15]; +} txpwr_ofst2x_conf_v2_t; + struct mm_set_txpwr_ofst_req { union { txpwr_ofst_conf_t txpwr_ofst; txpwr_ofst2x_conf_t txpwr_ofst2x; + txpwr_ofst2x_conf_v2_t txpwr_ofst2x_v2; }; }; @@ -1978,8 +2088,26 @@ enum vendor_hwconfig_tag{ AP_PS_LEVEL_SET_REQ, CUSTOMIZED_FREQ_REQ, WAKEUP_INFO_REQ, + KEEPALIVE_PKT_REQ, }; +enum vendor_hwconfig_tag_x2{ + ACS_TXOP_REQ_X2 = 0, + CHANNEL_ACCESS_REQ_X2, + MAC_TIMESCALE_REQ_X2, + CCA_THRESHOLD_REQ_X2, + BWMODE_REQ_X2, + CHIP_TEMP_GET_REQ_X2, + STBC_MCS_SET_REQ_X2, + MAX_AGG_TX_CNT_REQ_X2, + MAX_BW_MCS_THRESH_SET_REQ_X2, + DCM_FORCE_EN_REQ_X2, + AUTO_CCA_EN_REQ_X2, + NSS_1T2R_REQ_X2, + ON_AIR_DUTY_CYCLE_REQ_X2, +}; + + enum { BWMODE20M = 0, BWMODE10M, @@ -2005,7 +2133,8 @@ struct mm_set_channel_access_req u8_l long_nav_en; u8_l cfe_en; u8_l rc_retry_cnt[3]; - s8_l ccademod_th; + s8_l ccademod_th; + u8_l remove_1m2m; }; struct mm_set_mac_timescale_req @@ -2047,6 +2176,58 @@ struct mm_get_chip_temp_cfm s8_l degree; }; +struct mm_get_stbc_msc_req +{ + u32_l hwconfig_id; + u8_l enable; + u8_l mcs_thresh; +}; + +struct mm_set_max_tx_agg_cnt_req +{ + u32_l hwconfig_id; + u8_l enale; + u8_l mcs_thresh; + u8_l max_agg_cnt[AC_MAX]; +}; + +struct mm_set_max_bw_mcs_thresh_req +{ + u32_l hwconfig_id; + u8_l enale; + u8_l max_bw_mcs_thresh; +}; + +struct mm_set_dcm_force_en_req +{ + u32_l hwconfig_id; + u8_l enable; +}; + + +struct mm_set_auto_cca_en_req +{ + u32_l hwconfig_id; + u8_l enable; + int8_t max_cca_thresh; + u8_l default_cca_set; + int8_t default_cca_thresh; +}; + +struct mm_set_nss_1t2r_req +{ + u32_l hwconfig_id; + u8_l enable; +}; + +struct mm_set_on_air_duty_cycle_req +{ + u32_l hwconfig_id; + u8_l enable; + u8_l percent;//10 means 10%, 1-99 +}; + + struct mm_set_vendor_hwconfig_cfm { u32_l hwconfig_id; @@ -2062,6 +2243,15 @@ struct mm_set_customized_freq_req u16_l map_freq[4]; }; +struct mm_set_keepalive_req +{ + u32_l hwconfig_id; + u16_l code; + u16_l length; + u32_l intv; + u8_l payload[]; +}; + struct mm_set_txop_req { u16_l txop_bk; @@ -2100,6 +2290,18 @@ enum vendor_swconfig_tag EXT_FLAGS_MASK_SET_REQ, }; +enum vendor_swconfig_tag_x2 +{ + BCN_CFG_REQ_X2 = 0, + TEMP_COMP_SET_REQ_X2, + TEMP_COMP_GET_REQ_X2, + EXT_FLAGS_SET_REQ_X2, + EXT_FLAGS_GET_REQ_X2, + EXT_FLAGS_MASK_SET_REQ_X2, + TWO_ANT_RSSI_GET_REQ_X2, +}; + + struct mm_set_bcn_cfg_req { /// Ignore or not bcn tim bcmc bit @@ -2184,6 +2386,12 @@ struct mm_set_vendor_swconfig_cfm }; }; +struct mm_set_txpwr_lvl_per_sta_req +{ + u8_l sta_idx; + s8_l tx_pwr_offset; +}; + /// Structure containing the parameters of the @ref ME_RC_STATS_REQ message. struct me_rc_stats_req { @@ -2551,13 +2759,13 @@ struct apm_stop_req struct apm_start_cac_req { /// Control channel on which we have to start the CAC - struct mac_chan_def chan; + struct mac_chan_op chan; /// Center frequency of the first segment - u32_l center_freq1; + //u32_l center_freq1; /// Center frequency of the second segment (only in 80+80 configuration) - u32_l center_freq2; + //u32_l center_freq2; /// Width of channel - u8_l ch_width; + //u8_l ch_width; /// Index of the VIF for which the CAC is started u8_l vif_idx; }; @@ -3007,7 +3215,7 @@ struct dbg_rftest_cmd_req struct dbg_rftest_cmd_cfm { - u32_l rftest_result[18]; + u32_l rftest_result[32]; }; struct dbg_gpio_write_req { @@ -3069,6 +3277,21 @@ struct dbg_mem_block_write_cfm u32_l wstatus; }; +/// Structure containing the parameters of the @ref DBG_MEM_BLOCK_READ_REQ message. +struct dbg_mem_block_read_req +{ + u32_l memaddr; + u32_l memsize; +}; + +/// Structure containing the parameters of the @ref DBG_MEM_BLOCK_READ_CFM message. +struct dbg_mem_block_read_cfm +{ + u32_l memaddr; + u32_l memsize; + u32_l memdata[1024 / sizeof(u32_l)]; +}; + /// Structure containing the parameters of the @ref DBG_START_APP_REQ message. struct dbg_start_app_req { @@ -3233,5 +3456,44 @@ struct tdls_peer_traffic_ind_cfm u8_l status; }; +struct mm_set_wakeup_info_req { + u32_l hwconfig_id; + u16_l code; + u16_l offset; + u16_l length; + u8_l mask_and_pattern[]; + }; + +struct dbg_pwm_init_req +{ + /// PWM_CHANNEL_GPIO + u8 pwm_gpidx; + /// 0 normal 1 breath + u8 mode; + /// 0 config only 1 run after config + u8 run; + u32 tmr_cnt; + u32 dty_cnt; + u32 step_val; + /// 0 disable 1 enable + u8 gpio_en; + /// 0 input 1 output + u8 gpio_dir; + /// 0 low 1 high + u8 gpio_val; +}; + +struct dbg_pwm_deinit_req +{ + /// PWM_CHANNEL_GPIO + u8 pwm_gpidx; + /// 0 disable 1 enable + u8 gpio_en; + /// 0 input 1 output + u8 gpio_dir; + /// 0 low 1 high + u8 gpio_val; +}; + #endif // LMAC_MSG_H_ diff --git a/drivers/aic8800/aic8800_fdrv/reg_access.h b/drivers/aic8800/aic8800_fdrv/reg_access.h index b1d9c01..112ef03 100644 --- a/drivers/aic8800/aic8800_fdrv/reg_access.h +++ b/drivers/aic8800/aic8800_fdrv/reg_access.h @@ -21,7 +21,7 @@ #define ROM_FMAC_FW_ADDR 0x00010000 #define RAM_FMAC_FW_ADDR 0x00120000 #define ROM_FMAC_PATCH_ADDR 0x00180000 -#ifdef CONFIG_DPD +#if defined(CONFIG_DPD) || defined(CONFIG_LOFT_CALIB) #define ROM_FMAC_CALIB_ADDR 0x00130000 #endif diff --git a/drivers/aic8800/aic8800_fdrv/regdb.c b/drivers/aic8800/aic8800_fdrv/regdb.c index 8d29c97..d3ac7ac 100644 --- a/drivers/aic8800/aic8800_fdrv/regdb.c +++ b/drivers/aic8800/aic8800_fdrv/regdb.c @@ -1,2874 +1,2878 @@ -#include -#include -#include +/** + ****************************************************************************** + * + * Copyright (C) 2020 AIC semiconductor. + * + * @file regdb.c + * + * @brief country code Dependent document + * https://mirrors.edge.kernel.org/pub/software/network/wireless-regdb/ + * wireless-regdb-2024.05.08 + * + ****************************************************************************** + */ -//#include "regdb.h" +#include +#include +#include #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) -#define REG_RULE_EXT(start, end, bw, gain, eirp, dfs_cac, reg_flags) \ -{ \ - .freq_range.start_freq_khz = MHZ_TO_KHZ(start), \ - .freq_range.end_freq_khz = MHZ_TO_KHZ(end), \ - .freq_range.max_bandwidth_khz = MHZ_TO_KHZ(bw), \ - .power_rule.max_antenna_gain = DBI_TO_MBI(gain),\ - .power_rule.max_eirp = DBM_TO_MBM(eirp), \ - .flags = reg_flags, \ -} +#define REG_RULE_EXT(start, end, bw, gain, eirp, dfs_cac, reg_flags) \ + { \ + .freq_range.start_freq_khz = MHZ_TO_KHZ(start), \ + .freq_range.end_freq_khz = MHZ_TO_KHZ(end), \ + .freq_range.max_bandwidth_khz = MHZ_TO_KHZ(bw), \ + .power_rule.max_antenna_gain = DBI_TO_MBI(gain), \ + .power_rule.max_eirp = DBM_TO_MBM(eirp), \ + .flags = reg_flags, \ + } #define NL80211_RRF_AUTO_BW 0 #endif + static const struct ieee80211_regdomain regdom_00 = { - .n_reg_rules = 2, .alpha2 = "00", + .n_reg_rules = 2, .reg_rules = { - // 1...14 + // 1 - 14 REG_RULE(2390 - 10, 2510 + 10, 40, 0, 20, 0), - // 36...165 + // 36 - 165 REG_RULE(5150 - 10, 5970 + 10, 80, 0, 20, 0), } }; +#if 0 +static const struct ieee80211_regdomain regdom_00 = { + .n_reg_rules = 8, + .alpha2 = "00", + .reg_rules = { + REG_RULE_EXT(2402, 2472, 40, 0, 20, 0, 0), + // 12 - 13 + REG_RULE_EXT(2457, 2482, 20, 0, 20, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_IR | 0), + // 14 + REG_RULE_EXT(2474, 2494, 20, 0, 20, 0, NL80211_RRF_NO_IR | NL80211_RRF_NO_OFDM | 0), + // 36 - 48 + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_IR | 0), + // 52 - 64 + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_IR | NL80211_RRF_DFS | 0), + // 100 - 144 + REG_RULE_EXT(5490, 5730, 160, 0, 20, 0, NL80211_RRF_NO_IR | NL80211_RRF_DFS | 0), + //149 - 165 + REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, NL80211_RRF_NO_IR | 0), + REG_RULE_EXT(57240, 63720, 2160, 0, 0, 0, 0), + }}; +#endif + static const struct ieee80211_regdomain regdom_AD = { .alpha2 = "AD", - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5490, 5710, 80, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_AE = { .alpha2 = "AE", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - //REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_AF = { .alpha2 = "AF", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_AI = { .alpha2 = "AI", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_AL = { .alpha2 = "AL", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_AM = { .alpha2 = "AM", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 18, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 18, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 20, 0, 18, 0, 0), + REG_RULE_EXT(5250, 5330, 20, 0, 18, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 3}; static const struct ieee80211_regdomain regdom_AN = { .alpha2 = "AN", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_AR = { .alpha2 = "AR", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - //REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - // NL80211_RRF_AUTO_BW | 0), - //REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - // NL80211_RRF_DFS | - // NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5270, 5330, 40, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - //REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - // NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5815, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_AS = { .alpha2 = "AS", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_AT = { .alpha2 = "AT", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_AU = { .alpha2 = "AU", - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 36, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5470, 5600, 80, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5650, 5730, 80, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5730, 5850, 80, 0, 36, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5850, 5875, 20, 0, 14, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5925, 6425, 160, 0, 24, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 71000, 2160, 0, 43, 0, NL80211_RRF_NO_OUTDOOR | 0), + }, + .n_reg_rules = 9}; static const struct ieee80211_regdomain regdom_AW = { .alpha2 = "AW", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_AZ = { .alpha2 = "AZ", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 18, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 18, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 18, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 18, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + }, + .n_reg_rules = 3}; static const struct ieee80211_regdomain regdom_BA = { .alpha2 = "BA", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_BB = { .alpha2 = "BB", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 4}; +//Certified laboratory requirements static const struct ieee80211_regdomain regdom_BD = { .alpha2 = "BD", - .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 2 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_BE = { .alpha2 = "BE", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_BF = { .alpha2 = "BF", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_BG = { .alpha2 = "BG", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_BH = { .alpha2 = "BH", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 20, 0, 20, 0, 0), + REG_RULE_EXT(5250, 5330, 20, 0, 20, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 20, 0, 20, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_BL = { .alpha2 = "BL", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_BM = { .alpha2 = "BM", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_BN = { .alpha2 = "BN", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_BO = { .alpha2 = "BO", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 30, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5250, 5330, 80, 0, 30, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 3}; static const struct ieee80211_regdomain regdom_BR = { .alpha2 = "BR", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 30, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 27, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 27, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 30, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5925, 7125, 320, 0, 12, 0, NL80211_RRF_NO_OUTDOOR | NL80211_RRF_NO_IR | 0), + REG_RULE_EXT(57000, 71000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_BS = { .alpha2 = "BS", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_BT = { .alpha2 = "BT", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_BW = { + .alpha2 = "BW", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_BY = { .alpha2 = "BY", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_BZ = { .alpha2 = "BZ", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 30, 0, 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 2 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 30, 0, 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 2}; static const struct ieee80211_regdomain regdom_CA = { .alpha2 = "CA", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5600, 80, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5650, 5730, 80, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + REG_RULE_EXT(5925, 7125, 320, 0, 12, 0, NL80211_RRF_NO_OUTDOOR | 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_CF = { .alpha2 = "CF", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 40, 0, 17, 0, 0), - REG_RULE_EXT(5250, 5330, 40, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5490, 5730, 40, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 40, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 40, 0, 17, 0, 0), + REG_RULE_EXT(5250, 5330, 40, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5490, 5730, 40, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 40, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_CH = { .alpha2 = "CH", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 71000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_CI = { .alpha2 = "CI", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_CL = { .alpha2 = "CL", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_CN = { .alpha2 = "CN", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - REG_RULE_EXT(57240, 59400, 2160, 0, 28, 0, 0), - REG_RULE_EXT(59400, 63720, 2160, 0, 44, 0, 0), - REG_RULE_EXT(63720, 65880, 2160, 0, 28, 0, 0), - }, - .n_reg_rules = 7 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5350, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 33, 0, 0), + REG_RULE_EXT(57240, 59400, 2160, 0, 28, 0, 0), + REG_RULE_EXT(59400, 63720, 2160, 0, 44, 0, 0), + REG_RULE_EXT(63720, 65880, 2160, 0, 28, 0, 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_CO = { .alpha2 = "CO", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_CR = { .alpha2 = "CR", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5490, 5730, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 20, 0, 17, 0, 0), + REG_RULE_EXT(5250, 5330, 20, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5490, 5730, 20, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 20, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; + +static const struct ieee80211_regdomain regdom_CU = { + .alpha2 = "CU", + .dfs_region = NL80211_DFS_FCC, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 23, 0, 0), + REG_RULE_EXT(5150, 5350, 80, 0, 23, 0, NL80211_RRF_NO_IR | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5470, 5725, 80, 0, 24, 0, NL80211_RRF_NO_IR | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 23, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_CX = { .alpha2 = "CX", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_CY = { .alpha2 = "CY", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_CZ = { .alpha2 = "CZ", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), - REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_DE = { .alpha2 = "DE", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), - REG_RULE_EXT(5150, 5250, 80, 0, 20, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5470, 5695, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - /*REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, - NL80211_RRF_DFS | 0),*/ - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_DK = { .alpha2 = "DK", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_DM = { .alpha2 = "DM", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_DO = { .alpha2 = "DO", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 4}; +//Certified laboratory requirements static const struct ieee80211_regdomain regdom_DZ = { .alpha2 = "DZ", - .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5670, 160, 0, 23, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_EC = { .alpha2 = "EC", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5490, 5730, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 30, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_DFS | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 21, 0, NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 21, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_EE = { .alpha2 = "EE", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_EG = { .alpha2 = "EG", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_ES = { .alpha2 = "ES", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), - REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_ET = { .alpha2 = "ET", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_FI = { .alpha2 = "FI", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_FM = { .alpha2 = "FM", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_FR = { .alpha2 = "FR", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5695, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_GB = { .alpha2 = "GB", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5730, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5925, 6425, 160, 0, 24, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 71000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_GD = { .alpha2 = "GD", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_GE = { .alpha2 = "GE", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 18, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 18, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 18, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 18, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_GF = { .alpha2 = "GF", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; +//Certified laboratory requirements static const struct ieee80211_regdomain regdom_GH = { .alpha2 = "GH", - .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_GI = { + .alpha2 = "GI", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_GL = { .alpha2 = "GL", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5490, 5710, 80, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_GP = { .alpha2 = "GP", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_GR = { .alpha2 = "GR", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_GT = { .alpha2 = "GT", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_GU = { .alpha2 = "GU", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5490, 5730, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 20, 0, 17, 0, 0), + REG_RULE_EXT(5250, 5330, 20, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5490, 5730, 20, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 20, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_GY = { .alpha2 = "GY", - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 30, 0, 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 2 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 23, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_HK = { .alpha2 = "HK", - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 36, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 23, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5470, 5730, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5730, 5850, 80, 0, 36, 0, 0), + REG_RULE_EXT(5925, 6425, 160, 0, 14, 0, 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_HN = { .alpha2 = "HN", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_HR = { .alpha2 = "HR", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 23, 0, NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_HT = { .alpha2 = "HT", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_HU = { .alpha2 = "HU", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_ID = { .alpha2 = "ID", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5735, 5815, 80, 0, 23, 0, 0), - }, - .n_reg_rules = 2 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 27, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5150, 5350, 80, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5725, 5825, 80, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + }, + .n_reg_rules = 3}; static const struct ieee80211_regdomain regdom_IE = { .alpha2 = "IE", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_IL = { .alpha2 = "IL", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5350, 80, 0, 23, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_IN = { .alpha2 = "IN", - .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 30, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 30, 0, 0), + REG_RULE_EXT(5250, 5350, 80, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_IQ = { + .alpha2 = "IQ", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_IR = { .alpha2 = "IR", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 2 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 2}; static const struct ieee80211_regdomain regdom_IS = { .alpha2 = "IS", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_IT = { .alpha2 = "IT", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_JM = { .alpha2 = "JM", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_JO = { .alpha2 = "JO", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, 0), - REG_RULE_EXT(5735, 5835, 80, 0, 23, 0, 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, 0), + REG_RULE_EXT(5735, 5835, 80, 0, 23, 0, 0), + }, + .n_reg_rules = 3}; static const struct ieee80211_regdomain regdom_JP = { .alpha2 = "JP", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(2474, 2494, 20, 0, 20, 0, - NL80211_RRF_NO_OFDM | 0), - REG_RULE_EXT(4910, 4990, 40, 0, 23, 0, 0), - REG_RULE_EXT(5030, 5090, 40, 0, 23, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 23, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 7 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(2474, 2494, 20, 0, 20, 0, NL80211_RRF_NO_OFDM | 0), + REG_RULE_EXT(4910, 4990, 40, 0, 23, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 23, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5925, 6425, 320, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 10, 0, 0), + }, + .n_reg_rules = 8}; static const struct ieee80211_regdomain regdom_KE = { .alpha2 = "KE", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, 0), - REG_RULE_EXT(5490, 5570, 80, 0, 30, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5775, 40, 0, 23, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, 0), + REG_RULE_EXT(5490, 5570, 80, 0, 30, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5775, 40, 0, 23, 0, 0), + }, + .n_reg_rules = 4}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_KG = { + .alpha2 = "KG", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_KH = { .alpha2 = "KH", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_KN = { .alpha2 = "KN", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 30, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5815, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 30, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5815, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_KP = { .alpha2 = "KP", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5630, 80, 0, 30, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5815, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 20, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 20, 0, 20, 0, 0), + REG_RULE_EXT(5250, 5330, 20, 0, 20, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5490, 5630, 20, 0, 30, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5815, 20, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_KR = { .alpha2 = "KR", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 30, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 23, 0, 0), + REG_RULE_EXT(5150, 5230, 40, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5230, 5250, 20, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 20, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 23, 0, 0), + REG_RULE_EXT(5925, 7125, 160, 0, 15, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 43, 0, 0), + }, + .n_reg_rules = 8}; static const struct ieee80211_regdomain regdom_KW = { .alpha2 = "KW", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + }, + .n_reg_rules = 3}; static const struct ieee80211_regdomain regdom_KY = { .alpha2 = "KY", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_KZ = { .alpha2 = "KZ", - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - }, - .n_reg_rules = 1 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 20, 0, NL80211_RRF_DFS | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 20, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_LB = { .alpha2 = "LB", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_LC = { .alpha2 = "LC", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 30, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5815, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 30, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5815, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_LI = { .alpha2 = "LI", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_LK = { .alpha2 = "LK", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5490, 5730, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 20, 0, 17, 0, 0), + REG_RULE_EXT(5250, 5330, 20, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5490, 5730, 20, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 20, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_LS = { .alpha2 = "LS", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_LT = { .alpha2 = "LT", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_LU = { .alpha2 = "LU", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_LV = { .alpha2 = "LV", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_LY = { + .alpha2 = "LY", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_MA = { .alpha2 = "MA", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + }, + .n_reg_rules = 3}; static const struct ieee80211_regdomain regdom_MC = { .alpha2 = "MC", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_MD = { .alpha2 = "MD", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_ME = { .alpha2 = "ME", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_MF = { .alpha2 = "MF", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_MH = { .alpha2 = "MH", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_MK = { .alpha2 = "MK", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_MN = { .alpha2 = "MN", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_MO = { .alpha2 = "MO", - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 40, 0, 23, 0, 0), - REG_RULE_EXT(5250, 5330, 40, 0, 23, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 40, 0, 30, 0, 0), - }, - .n_reg_rules = 4 -}; + .dfs_region = NL80211_DFS_FCC, + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 23, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 30, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_MP = { .alpha2 = "MP", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_MQ = { .alpha2 = "MQ", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_MR = { .alpha2 = "MR", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_MT = { .alpha2 = "MT", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_MU = { .alpha2 = "MU", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; + +static const struct ieee80211_regdomain regdom_MV = { + .alpha2 = "MV", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 20, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_MW = { .alpha2 = "MW", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_MX = { .alpha2 = "MX", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; +//Certified laboratory requirements static const struct ieee80211_regdomain regdom_MY = { .alpha2 = "MY", - .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 4 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_NA = { + .alpha2 = "NA", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; + +static const struct ieee80211_regdomain regdom_NG = { + .alpha2 = "NG", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 3}; static const struct ieee80211_regdomain regdom_NI = { .alpha2 = "NI", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_NL = { .alpha2 = "NL", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_NO_OUTDOOR | - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_NO = { .alpha2 = "NO", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), - REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5470, 5795, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5815, 5850, 35, 0, 33, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(17100, 17300, 200, 0, 20, 0, 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 7 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 71000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_NP = { .alpha2 = "NP", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_NZ = { .alpha2 = "NZ", - .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_OM = { .alpha2 = "OM", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_PA = { .alpha2 = "PA", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 36, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 36, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 30, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 30, 0, 0), + REG_RULE_EXT(5725, 5850, 80, 0, 36, 0, 0), + REG_RULE_EXT(57000, 64000, 2160, 0, 43, 0, 0), + }, + .n_reg_rules = 6}; +//Certified laboratory requirements static const struct ieee80211_regdomain regdom_PE = { .alpha2 = "PE", - .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_PF = { .alpha2 = "PF", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_PG = { .alpha2 = "PG", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; +//Certified laboratory requirements static const struct ieee80211_regdomain regdom_PH = { .alpha2 = "PH", - .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_PK = { .alpha2 = "PK", .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 2 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5270, 80, 0, 23, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5270, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | + NL80211_RRF_DFS | 0), + REG_RULE_EXT(5470, 5610, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | + NL80211_RRF_DFS | 0), + REG_RULE_EXT(5610, 5725, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 30, 0, 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_PL = { .alpha2 = "PL", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_PM = { .alpha2 = "PM", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_PR = { .alpha2 = "PR", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_PT = { .alpha2 = "PT", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_PW = { .alpha2 = "PW", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_PY = { .alpha2 = "PY", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_QA = { .alpha2 = "QA", - .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 2 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | + NL80211_RRF_DFS | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 20, 0, NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, NL80211_RRF_NO_OUTDOOR | 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_RE = { .alpha2 = "RE", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_RO = { .alpha2 = "RO", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_RS = { .alpha2 = "RS", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), - REG_RULE_EXT(5150, 5350, 40, 0, 23, 0, - NL80211_RRF_NO_OUTDOOR | 0), - REG_RULE_EXT(5470, 5725, 20, 0, 30, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | + NL80211_RRF_DFS | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_RU = { .alpha2 = "RU", - .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5650, 5730, 80, 0, 30, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5350, 160, 0, 20, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5650, 5850, 160, 0, 20, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5925, 6425, 160, 0, 20, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, + NL80211_RRF_NO_OUTDOOR | 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_RW = { .alpha2 = "RW", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_SA = { .alpha2 = "SA", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_SE = { .alpha2 = "SE", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_SG = { .alpha2 = "SG", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 23, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5730, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 30, 0, 0), + REG_RULE_EXT(5945, 6425, 320, 0, 24, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_SI = { .alpha2 = "SI", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_SK = { .alpha2 = "SK", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_SM = { + .alpha2 = "SM", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_SN = { .alpha2 = "SN", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_SR = { .alpha2 = "SR", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_SV = { .alpha2 = "SV", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 20, 0, 17, 0, 0), + REG_RULE_EXT(5250, 5330, 20, 0, 23, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 20, 0, 30, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_SY = { .alpha2 = "SY", - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - }, - .n_reg_rules = 1 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + }, + .n_reg_rules = 1}; static const struct ieee80211_regdomain regdom_TC = { .alpha2 = "TC", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_TD = { .alpha2 = "TD", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_TG = { .alpha2 = "TG", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 40, 0, 20, 0, 0), - REG_RULE_EXT(5250, 5330, 40, 0, 20, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5490, 5710, 40, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 40, 0, 20, 0, 0), + REG_RULE_EXT(5250, 5330, 40, 0, 20, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5490, 5710, 40, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; +//Certified laboratory requirements static const struct ieee80211_regdomain regdom_TH = { .alpha2 = "TH", - .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_TJ = { + .alpha2 = "TJ", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_TM = { + .alpha2 = "TM", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_TN = { .alpha2 = "TN", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + }, + .n_reg_rules = 3}; static const struct ieee80211_regdomain regdom_TR = { .alpha2 = "TR", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5495, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_TT = { .alpha2 = "TT", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_TW = { .alpha2 = "TW", - .dfs_region = NL80211_DFS_JP, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5270, 5330, 40, 0, 17, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5490, 5590, 80, 0, 30, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5650, 5710, 40, 0, 30, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .dfs_region = NL80211_DFS_FCC, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 30, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 23, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5730, 160, 0, 23, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 30, 0, 0), + REG_RULE_EXT(5945, 6425, 320, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; + +static const struct ieee80211_regdomain regdom_TZ = { + .alpha2 = "TZ", + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 2}; + static const struct ieee80211_regdomain regdom_UA = { .alpha2 = "UA", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, - NL80211_RRF_NO_OUTDOOR | 0), - REG_RULE_EXT(5150, 5350, 40, 0, 20, 0, - NL80211_RRF_NO_OUTDOOR | 0), - REG_RULE_EXT(5490, 5670, 80, 0, 20, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 20, 0, 0), - REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5150, 5250, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_NO_OUTDOOR | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5725, 5850, 80, 0, 20, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 16, 0, + NL80211_RRF_NO_OUTDOOR | 0), + }, + .n_reg_rules = 6}; static const struct ieee80211_regdomain regdom_UG = { .alpha2 = "UG", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_US = { .alpha2 = "US", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - // 1...13 - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - // 36 40 44 48 - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - // 52 56 60 64 - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - // 100 104 108 112 116 120 124 - REG_RULE_EXT(5490, 5650, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - // 128 132 136 140 - REG_RULE_EXT(5650, 5710, 40, 0, 24, 0, - NL80211_RRF_DFS | 0), - // 149 153 157 161 165 - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - REG_RULE_EXT(57240, 63720, 2160, 0, 40, 0, 0), - }, - .n_reg_rules = 7 -}; + .reg_rules = + { + // 1...11 + REG_RULE_EXT(2400, 2472, 40, 0, 30, 0, 0), + // 36 40 44 48 + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + // 52 56 60 64 + REG_RULE_EXT(5250, 5350, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + // 100 104 108 112 116 120 124 + REG_RULE_EXT(5470, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + // 128 132 136 140 + REG_RULE_EXT(5730, 5850, 80, 0, 30, 0, NL80211_RRF_AUTO_BW | 0), + // 149 153 157 161 165 + REG_RULE_EXT(5850, 5895, 40, 0, 27, 0, + NL80211_RRF_AUTO_BW | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(5925, 7125, 320, 0, 12, 0, + NL80211_RRF_NO_IR | NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57240, 71000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 8}; +//Certified laboratory requirements static const struct ieee80211_regdomain regdom_UY = { .alpha2 = "UY", - .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_UZ = { .alpha2 = "UZ", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - }, - .n_reg_rules = 3 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + }, + .n_reg_rules = 3}; static const struct ieee80211_regdomain regdom_VC = { .alpha2 = "VC", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_VE = { .alpha2 = "VE", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 23, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 23, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_VI = { .alpha2 = "VI", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2472, 40, 0, 30, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 24, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_VN = { .alpha2 = "VN", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5490, 5730, 80, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5490, 5730, 80, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_VU = { .alpha2 = "VU", .dfs_region = NL80211_DFS_FCC, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, - NL80211_RRF_DFS | 0), - REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), - }, - .n_reg_rules = 5 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 17, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 24, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5730, 160, 0, 24, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5735, 5835, 80, 0, 30, 0, 0), + }, + .n_reg_rules = 5}; static const struct ieee80211_regdomain regdom_WF = { .alpha2 = "WF", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; + +static const struct ieee80211_regdomain regdom_WS = { + .alpha2 = "WS", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 40, 0, 20, 0, 0), + REG_RULE_EXT(5250, 5330, 40, 0, 20, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5490, 5710, 40, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_FK = { + .alpha2 = "FK", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_FO = { + .alpha2 = "FO", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_YE = { .alpha2 = "YE", - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - }, - .n_reg_rules = 1 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + }, + .n_reg_rules = 1}; static const struct ieee80211_regdomain regdom_YT = { .alpha2 = "YT", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; static const struct ieee80211_regdomain regdom_ZA = { .alpha2 = "ZA", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5695, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - /*REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0),*/ - }, - .n_reg_rules = 4 -}; + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 30, 0, 0), + }, + .n_reg_rules = 4}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_ZM = { + .alpha2 = "ZM", + .dfs_region = NL80211_DFS_ETSI, + .reg_rules = + { + REG_RULE_EXT(2400, 2483, 40, 0, 20, 0, 0), + REG_RULE_EXT(5150, 5250, 80, 0, 23, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5350, 80, 0, 20, 0, + NL80211_RRF_NO_OUTDOOR | NL80211_RRF_DFS | + NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5470, 5725, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + REG_RULE_EXT(5725, 5875, 80, 0, 14, 0, 0), + REG_RULE_EXT(5945, 6425, 160, 0, 23, 0, NL80211_RRF_NO_OUTDOOR | 0), + REG_RULE_EXT(57000, 66000, 2160, 0, 40, 0, 0), + }, + .n_reg_rules = 7}; static const struct ieee80211_regdomain regdom_ZW = { .alpha2 = "ZW", .dfs_region = NL80211_DFS_ETSI, - .reg_rules = { - REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), - REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, - NL80211_RRF_DFS | - NL80211_RRF_AUTO_BW | 0), - REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, - NL80211_RRF_DFS | 0), - }, - .n_reg_rules = 4 + .reg_rules = + { + REG_RULE_EXT(2402, 2482, 40, 0, 20, 0, 0), + REG_RULE_EXT(5170, 5250, 80, 0, 20, 0, NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5250, 5330, 80, 0, 20, 0, + NL80211_RRF_DFS | NL80211_RRF_AUTO_BW | 0), + REG_RULE_EXT(5490, 5710, 160, 0, 27, 0, NL80211_RRF_DFS | 0), + }, + .n_reg_rules = 4}; + +//kernel undefined +static const struct ieee80211_regdomain regdom_WW = { + .n_reg_rules = 2, + .alpha2 = "WW", + .reg_rules = + { + // 1...14 + REG_RULE(2390 - 10, 2510 + 10, 40, 0, 20, 0), + // 36...165 + REG_RULE(5150 - 10, 5970 + 10, 80, 0, 20, 0), + }, }; +//kernel undefined +static const struct ieee80211_regdomain regdom_XX = { + .n_reg_rules = 1, + .alpha2 = "XX", + .reg_rules = + { + /* IEEE 802.11b/g, channels 1..11 */ + REG_RULE(2412 - 10, 2462 + 10, 40, 0, 20, 0), + }, +}; + +//Keep "XX" at the end when inserting const struct ieee80211_regdomain *reg_regdb[] = { - ®dom_00, - ®dom_AD, - ®dom_AE, - ®dom_AF, - ®dom_AI, - ®dom_AL, - ®dom_AM, - ®dom_AN, - ®dom_AR, - ®dom_AS, - ®dom_AT, - ®dom_AU, - ®dom_AW, - ®dom_AZ, - ®dom_BA, - ®dom_BB, - ®dom_BD, - ®dom_BE, - ®dom_BF, - ®dom_BG, - ®dom_BH, - ®dom_BL, - ®dom_BM, - ®dom_BN, - ®dom_BO, - ®dom_BR, - ®dom_BS, - ®dom_BT, - ®dom_BY, - ®dom_BZ, - ®dom_CA, - ®dom_CF, - ®dom_CH, - ®dom_CI, - ®dom_CL, - ®dom_CN, - ®dom_CO, - ®dom_CR, - ®dom_CX, - ®dom_CY, - ®dom_CZ, - ®dom_DE, - ®dom_DK, - ®dom_DM, - ®dom_DO, - ®dom_DZ, - ®dom_EC, - ®dom_EE, - ®dom_EG, - ®dom_ES, - ®dom_ET, - ®dom_FI, - ®dom_FM, - ®dom_FR, - ®dom_GB, - ®dom_GD, - ®dom_GE, - ®dom_GF, - ®dom_GH, - ®dom_GL, - ®dom_GP, - ®dom_GR, - ®dom_GT, - ®dom_GU, - ®dom_GY, - ®dom_HK, - ®dom_HN, - ®dom_HR, - ®dom_HT, - ®dom_HU, - ®dom_ID, - ®dom_IE, - ®dom_IL, - ®dom_IN, - ®dom_IR, - ®dom_IS, - ®dom_IT, - ®dom_JM, - ®dom_JO, - ®dom_JP, - ®dom_KE, - ®dom_KH, - ®dom_KN, - ®dom_KP, - ®dom_KR, - ®dom_KW, - ®dom_KY, - ®dom_KZ, - ®dom_LB, - ®dom_LC, - ®dom_LI, - ®dom_LK, - ®dom_LS, - ®dom_LT, - ®dom_LU, - ®dom_LV, - ®dom_MA, - ®dom_MC, - ®dom_MD, - ®dom_ME, - ®dom_MF, - ®dom_MH, - ®dom_MK, - ®dom_MN, - ®dom_MO, - ®dom_MP, - ®dom_MQ, - ®dom_MR, - ®dom_MT, - ®dom_MU, - ®dom_MW, - ®dom_MX, - ®dom_MY, - ®dom_NI, - ®dom_NL, - ®dom_NO, - ®dom_NP, - ®dom_NZ, - ®dom_OM, - ®dom_PA, - ®dom_PE, - ®dom_PF, - ®dom_PG, - ®dom_PH, - ®dom_PK, - ®dom_PL, - ®dom_PM, - ®dom_PR, - ®dom_PT, - ®dom_PW, - ®dom_PY, - ®dom_QA, - ®dom_RE, - ®dom_RO, - ®dom_RS, - ®dom_RU, - ®dom_RW, - ®dom_SA, - ®dom_SE, - ®dom_SG, - ®dom_SI, - ®dom_SK, - ®dom_SN, - ®dom_SR, - ®dom_SV, - ®dom_SY, - ®dom_TC, - ®dom_TD, - ®dom_TG, - ®dom_TH, - ®dom_TN, - ®dom_TR, - ®dom_TT, - ®dom_TW, - ®dom_UA, - ®dom_UG, - ®dom_US, - ®dom_UY, - ®dom_UZ, - ®dom_VC, - ®dom_VE, - ®dom_VI, - ®dom_VN, - ®dom_VU, - ®dom_WF, - ®dom_YE, - ®dom_YT, - ®dom_ZA, - ®dom_ZW, - NULL, + ®dom_00, ®dom_AD, ®dom_AE, ®dom_AF, ®dom_AI, ®dom_AL, + ®dom_AM, ®dom_AN, ®dom_AR, ®dom_AS, ®dom_AT, ®dom_AU, + ®dom_AW, ®dom_AZ, ®dom_BA, ®dom_BB, ®dom_BD, ®dom_BE, + ®dom_BF, ®dom_BG, ®dom_BH, ®dom_BL, ®dom_BM, ®dom_BN, + ®dom_BO, ®dom_BR, ®dom_BS, ®dom_BT, ®dom_BY, ®dom_BZ, + ®dom_CA, ®dom_CF, ®dom_CH, ®dom_CI, ®dom_CL, ®dom_CN, + ®dom_CO, ®dom_CR, ®dom_CX, ®dom_CY, ®dom_CZ, ®dom_DE, + ®dom_DK, ®dom_DM, ®dom_DO, ®dom_DZ, ®dom_EC, ®dom_EE, + ®dom_EG, ®dom_ES, ®dom_ET, ®dom_FI, ®dom_FM, ®dom_FR, + ®dom_GB, ®dom_GD, ®dom_GE, ®dom_GF, ®dom_GH, ®dom_GL, + ®dom_GP, ®dom_GR, ®dom_GT, ®dom_GU, ®dom_GY, ®dom_HK, + ®dom_HN, ®dom_HR, ®dom_HT, ®dom_HU, ®dom_ID, ®dom_IE, + ®dom_IL, ®dom_IN, ®dom_IR, ®dom_IS, ®dom_IT, ®dom_JM, + ®dom_JO, ®dom_JP, ®dom_KE, ®dom_KH, ®dom_KN, ®dom_KP, + ®dom_KR, ®dom_KW, ®dom_KY, ®dom_KZ, ®dom_LB, ®dom_LC, + ®dom_LI, ®dom_LK, ®dom_LS, ®dom_LT, ®dom_LU, ®dom_LV, + ®dom_MA, ®dom_MC, ®dom_MD, ®dom_ME, ®dom_MF, ®dom_MH, + ®dom_MK, ®dom_MN, ®dom_MO, ®dom_MP, ®dom_MQ, ®dom_MR, + ®dom_MT, ®dom_MU, ®dom_MW, ®dom_MX, ®dom_MY, ®dom_NI, + ®dom_NL, ®dom_NO, ®dom_NP, ®dom_NZ, ®dom_OM, ®dom_PA, + ®dom_PE, ®dom_PF, ®dom_PG, ®dom_PH, ®dom_PK, ®dom_PL, + ®dom_PM, ®dom_PR, ®dom_PT, ®dom_PW, ®dom_PY, ®dom_QA, + ®dom_RE, ®dom_RO, ®dom_RS, ®dom_RU, ®dom_RW, ®dom_SA, + ®dom_SE, ®dom_SG, ®dom_SI, ®dom_SK, ®dom_SN, ®dom_SR, + ®dom_SV, ®dom_SY, ®dom_TC, ®dom_TD, ®dom_TG, ®dom_TH, + ®dom_TN, ®dom_TR, ®dom_TT, ®dom_TW, ®dom_UA, ®dom_UG, + ®dom_US, ®dom_UY, ®dom_UZ, ®dom_VC, ®dom_VE, ®dom_VI, + ®dom_VN, ®dom_VU, ®dom_WF, ®dom_YE, ®dom_YT, ®dom_ZA, + ®dom_ZW, ®dom_BW, ®dom_GI, ®dom_IQ, ®dom_KG, ®dom_LY, + ®dom_MV, ®dom_NA, ®dom_NG, ®dom_SM, ®dom_TJ, ®dom_TM, + ®dom_FK, ®dom_FO, ®dom_ZM, ®dom_CU, ®dom_TZ, ®dom_WS, + ®dom_WW, ®dom_XX, }; int reg_regdb_size = ARRAY_SIZE(reg_regdb); - - diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_cmds.c b/drivers/aic8800/aic8800_fdrv/rwnx_cmds.c index 4cef481..68ddcea 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_cmds.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_cmds.c @@ -19,6 +19,7 @@ #include "rwnx_strs.h" #include "rwnx_events.h" #include "aicwf_txrxif.h" +#include "rwnx_wakelock.h" #ifdef AICWF_SDIO_SUPPORT #include "aicwf_sdio.h" #else @@ -46,8 +47,8 @@ static void cmd_complete(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) //RWNX_DBG(RWNX_FN_ENTRY_STR); lockdep_assert_held(&cmd_mgr->lock); - list_del(&cmd->list); - cmd_mgr->queue_sz--; + //list_del(&cmd->list); + //cmd_mgr->queue_sz--; cmd->flags |= RWNX_CMD_FLAG_DONE; if (cmd->flags & RWNX_CMD_FLAG_NONBLOCK) { @@ -58,6 +59,10 @@ static void cmd_complete(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) complete(&cmd->complete); } } + + if(cmd_mgr->queue_sz == 0){ + rwnx_wakeup_unlock(g_rwnx_plat->usbdev->rwnx_hw->ws_tx); + } } int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) @@ -102,6 +107,9 @@ int cmd_mgr_queue_force_defer(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd init_completion(&cmd->complete); list_add_tail(&cmd->list, &cmd_mgr->cmds); + if(cmd_mgr->queue_sz == 0){ + rwnx_wakeup_lock(g_rwnx_plat->usbdev->rwnx_hw->ws_tx); + } cmd_mgr->queue_sz++; spin_unlock_bh(&cmd_mgr->lock); @@ -123,12 +131,33 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) struct aic_usb_dev *usbdev = container_of(cmd_mgr, struct aic_usb_dev, cmd_mgr); #endif bool defer_push = false; + u8_l empty = 0; //RWNX_DBG(RWNX_FN_ENTRY_STR); #ifdef CREATE_TRACE_POINTS trace_msg_send(cmd->id); #endif - spin_lock_bh(&cmd_mgr->lock); + if(cmd->e2a_msg != NULL) { + do { + if(cmd_mgr->state == RWNX_CMD_MGR_STATE_CRASHED) + break; + spin_lock_bh(&cmd_mgr->lock); + empty = list_empty(&cmd_mgr->cmds); + if(!empty) { + spin_unlock_bh(&cmd_mgr->lock); + if(in_softirq()) { + printk("in_softirq:check cmdqueue empty\n"); + mdelay(10); + } else { + printk("check cmdqueue empty\n"); + msleep(50); + } + } + } while(!empty);//wait for cmd queue empty + } else { + spin_lock_bh(&cmd_mgr->lock); + } + if (cmd_mgr->state == RWNX_CMD_MGR_STATE_CRASHED) { printk(KERN_CRIT"cmd queue crashed\n"); @@ -177,6 +206,9 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) init_completion(&cmd->complete); list_add_tail(&cmd->list, &cmd_mgr->cmds); + if(cmd_mgr->queue_sz == 0){ + rwnx_wakeup_lock(g_rwnx_plat->usbdev->rwnx_hw->ws_tx); + } cmd_mgr->queue_sz++; if(cmd->a2e_msg->id == ME_TRAFFIC_IND_REQ @@ -240,6 +272,13 @@ static int cmd_mgr_queue(struct rwnx_cmd_mgr *cmd_mgr, struct rwnx_cmd *cmd) spin_unlock_bh(&cmd_mgr->lock); } else{ + spin_lock_bh(&cmd_mgr->lock); + list_del(&cmd->list); + cmd_mgr->queue_sz--; + if(cmd_mgr->queue_sz == 0){ + rwnx_wakeup_unlock(usbdev->rwnx_hw->ws_tx); + } + spin_unlock_bh(&cmd_mgr->lock); rwnx_cmd_free(cmd);//kfree(cmd);AIDEN if(!list_empty(&cmd_mgr->cmds) && usbdev->state == USB_UP_ST) WAKE_CMD_WORK(cmd_mgr); @@ -350,8 +389,16 @@ void cmd_mgr_task_process(struct work_struct *work) cmd_complete(cmd_mgr, next); } spin_unlock_bh(&cmd_mgr->lock); - } else - rwnx_cmd_free(next);//kfree(next);AIDEN + } else { + spin_lock_bh(&cmd_mgr->lock); + list_del(&next->list); + cmd_mgr->queue_sz--; + if(cmd_mgr->queue_sz == 0){ + rwnx_wakeup_unlock(usbdev->rwnx_hw->ws_tx); + } + spin_unlock_bh(&cmd_mgr->lock); + rwnx_cmd_free(next);//kfree(next);AIDEN + } } } @@ -460,11 +507,17 @@ static void cmd_mgr_drain(struct rwnx_cmd_mgr *cmd_mgr) spin_lock_bh(&cmd_mgr->lock); list_for_each_entry_safe(cur, nxt, &cmd_mgr->cmds, list) { list_del(&cur->list); - cmd_mgr->queue_sz--; + //cmd_mgr->queue_sz--; if (!(cur->flags & RWNX_CMD_FLAG_NONBLOCK)) complete(&cur->complete); } spin_unlock_bh(&cmd_mgr->lock); + #if 0 + if(cmd_mgr->queue_sz == 0){ + rwnx_wakeup_unlock(g_rwnx_plat->usbdev->rwnx_hw->ws_tx); + } + #endif + } void rwnx_cmd_mgr_init(struct rwnx_cmd_mgr *cmd_mgr) @@ -506,6 +559,7 @@ void aicwf_set_cmd_tx(void *dev, struct lmac_msg *msg, uint len) { u8 *buffer = NULL; u16 index = 0; + int ret = 0; #ifdef AICWF_SDIO_SUPPORT struct aic_sdio_dev *sdiodev = (struct aic_sdio_dev *)dev; struct aicwf_bus *bus = sdiodev->bus_if; @@ -540,6 +594,9 @@ void aicwf_set_cmd_tx(void *dev, struct lmac_msg *msg, uint len) index += 2; memcpy(&buffer[index], (u8 *)msg->param, msg->param_len); - aicwf_bus_txmsg(bus, buffer, len + 8); + ret = aicwf_bus_txmsg(bus, buffer, len + 8); + if (ret == -EIO) { + ret = aicwf_bus_txmsg(bus, buffer, len + 8); + } } diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_compat.h b/drivers/aic8800/aic8800_fdrv/rwnx_compat.h index f088f9c..204561b 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_compat.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_compat.h @@ -244,9 +244,11 @@ enum ieee80211_radiotap_he_mu_bits { #define REGULATORY_IGNORE_STALE_KICKOFF 0 #else #define STA_TDLS_INITIATOR(sta) sta->tdls_initiator + #ifndef REGULATORY_IGNORE_STALE_KICKOFF #define REGULATORY_IGNORE_STALE_KICKOFF 0 #endif + #endif diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_debugfs.c b/drivers/aic8800/aic8800_fdrv/rwnx_debugfs.c index d1a2043..7d4c82e 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_debugfs.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_debugfs.c @@ -200,11 +200,11 @@ DEBUGFS_READ_WRITE_FILE_OPS(stats); #endif /* CONFIG_RWNX_FULLMAC */ #define STA_HDR "** STA %d (%pM)\n" -#define STA_HDR_MAX_LEN sizeof("- STA xx (xx:xx:xx:xx:xx:xx)\n") + PS_HDR_MAX_LEN +#define STA_HDR_MAX_LEN (sizeof("- STA xx (xx:xx:xx:xx:xx:xx)\n") + PS_HDR_MAX_LEN) #ifdef CONFIG_RWNX_FULLMAC #define VIF_HDR "* VIF [%d] %s\n" -#define VIF_HDR_MAX_LEN sizeof(VIF_HDR) + IFNAMSIZ +#define VIF_HDR_MAX_LEN (sizeof(VIF_HDR) + IFNAMSIZ) #else #define VIF_HDR "* VIF [%d]\n" #define VIF_HDR_MAX_LEN sizeof(VIF_HDR) @@ -1261,6 +1261,12 @@ static ssize_t rwnx_dbgfs_regdbg_write(struct file *file, if(oper== 0) { ret = rwnx_send_dbg_mem_read_req(priv, addr, &mem_read_cfm); printk("[0x%x] = [0x%x]\n", mem_read_cfm.memaddr, mem_read_cfm.memdata); + } else if (oper == 1) { + ret = rwnx_send_dbg_mem_read_req(priv, addr, &mem_read_cfm); + printk("before write : [0x%x] = [0x%x]\n", mem_read_cfm.memaddr, mem_read_cfm.memdata); + ret = rwnx_send_dbg_mem_block_write_req(priv, addr, 4, &val); + ret = rwnx_send_dbg_mem_read_req(priv, addr, &mem_read_cfm); + printk("after write : [0x%x] = [0x%x]\n", mem_read_cfm.memaddr, mem_read_cfm.memdata); } return count; @@ -1274,7 +1280,7 @@ static ssize_t rwnx_dbgfs_vendor_hwconfig_write(struct file *file, { struct rwnx_hw *priv = file->private_data; char buf[64]; - int32_t addr[13]; + int32_t addr[14]; int32_t addr_out[12]; u32_l hwconfig_id; size_t len = min_t(size_t,count,sizeof(buf)-1); @@ -1288,10 +1294,10 @@ static ssize_t rwnx_dbgfs_vendor_hwconfig_write(struct file *file, } buf[len] = '\0'; - ret = sscanf(buf, "%x %x %x %x %x %x %x %x %x %x %x %x %x %x", - &hwconfig_id, &addr[0], &addr[1], &addr[2], &addr[3], &addr[4], &addr[5], &addr[6], &addr[7], &addr[8], &addr[9], &addr[10], &addr[11]); - if(ret > 14) { - printk("param error > 14\n"); + ret = sscanf(buf, "%x %x %x %x %x %x %x %x %x %x %x %x %x %x %x", + &hwconfig_id, &addr[0], &addr[1], &addr[2], &addr[3], &addr[4], &addr[5], &addr[6], &addr[7], &addr[8], &addr[9], &addr[10], &addr[11], &addr[12], &addr[13]); + if(ret > 15) { + printk("param error > 15\n"); } else { switch(hwconfig_id) { @@ -1303,12 +1309,12 @@ static ssize_t rwnx_dbgfs_vendor_hwconfig_write(struct file *file, printk("ACS_TXOP_REQ bk:0x%x be:0x%x vi:0x%x vo:0x%x\n",addr[0], addr[1], addr[2], addr[3]); break; case 1: - if(ret != 14) { - printk("param error != 14\n"); + if(ret != 15) { + printk("param error != 15\n"); break;} ret = rwnx_send_vendor_hwconfig_req(priv, hwconfig_id, addr, NULL); - printk("CHANNEL_ACCESS_REQ edca:%x,%x,%x,%x, vif:%x, retry_cnt:%x, rts:%x, long_nav:%x, cfe:%x, rc_retry_cnt:%x:%x:%x ccademod_th %x\n", - addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7], addr[8], addr[9], addr[10], addr[11], addr[12]); + printk("CHANNEL_ACCESS_REQ edca:%x,%x,%x,%x, vif:%x, retry_cnt:%x, rts:%x, long_nav:%x, cfe:%x, rc_retry_cnt:%x:%x:%x ccademod_th %x, remove_1m2m %x\n", + addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7], addr[8], addr[9], addr[10], addr[11], addr[12], addr[13]); break; case 2: if(ret != 7) { @@ -1456,6 +1462,216 @@ static ssize_t rwnx_dbgfs_vendor_swconfig_write(struct file *file, DEBUGFS_WRITE_FILE_OPS(vendor_swconfig); +static ssize_t rwnx_dbgfs_vendor_hwconfig_x2_write(struct file *file, + const char __user *user_buf, + size_t count, loff_t *ppos) +{ + struct rwnx_hw *priv = file->private_data; + char buf[64]; + int32_t addr[14]; + int32_t addr_out[12]; + u32_l hwconfig_id; + size_t len = min_t(size_t,count,sizeof(buf)-1); + int ret; + printk("%s\n",__func__); + //choose the type of write info by struct + //struct mm_set_vendor_trx_param_req trx_param; + + if(copy_from_user(buf,user_buf,len)) { + return -EFAULT; + } + + buf[len] = '\0'; + ret = sscanf(buf, "%x %x %x %x %x %x %x %x %x %x %x %x %x %x %x", + &hwconfig_id, &addr[0], &addr[1], &addr[2], &addr[3], &addr[4], &addr[5], &addr[6], &addr[7], &addr[8], &addr[9], &addr[10], &addr[11], &addr[12], &addr[13]); + if(ret > 15) { + printk("param error > 15\n"); + } else { + switch(hwconfig_id) + { + case 0: + if(ret != 5) { + printk("param error != 5\n"); + break;} + ret = rwnx_send_vendor_hwconfig_req_x2(priv, hwconfig_id, addr, NULL); + printk("ACS_TXOP_REQ bk:0x%x be:0x%x vi:0x%x vo:0x%x\n",addr[0], addr[1], addr[2], addr[3]); + break; + case 1: + if(ret != 15) { + printk("param error != 15\n"); + break;} + ret = rwnx_send_vendor_hwconfig_req_x2(priv, hwconfig_id, addr, NULL); + printk("CHANNEL_ACCESS_REQ edca:%x,%x,%x,%x, vif:%x, retry_cnt:%x, rts:%x, long_nav:%x, cfe:%x, rc_retry_cnt:%x:%x:%x ccademod_th %x remove_1m2m %x\n", + addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7], addr[8], addr[9], addr[10], addr[11], addr[12], addr[13]); + break; + case 2: + if(ret != 7) { + printk("param error != 7\n"); + break;} + ret = rwnx_send_vendor_hwconfig_req_x2(priv, hwconfig_id, addr, NULL); + printk("MAC_TIMESCALE_REQ sifsA:%x,sifsB:%x,slot:%x,ofdm_delay:%x,long_delay:%x,short_delay:%x\n", + addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]); + break; + case 3: + if(ret != 6) { + printk("param error != 6\n"); + break;} + addr[1] = ~addr[1] + 1; + addr[2] = ~addr[2] + 1; + addr[3] = ~addr[3] + 1; + addr[4] = ~addr[4] + 1; + ret = rwnx_send_vendor_hwconfig_req_x2(priv, hwconfig_id, addr, NULL); + printk("CCA_THRESHOLD_REQ auto_cca:%d, cca20p_rise:%d cca20s_rise:%d cca20p_fail:%d cca20s_fail:%d\n", + addr[0], addr[1], addr[2], addr[3], addr[4]); + break; + case 4: // BWMODE_REQ + if (ret != 2) { + printk("param error != 2\n"); + } else { + ret = rwnx_send_vendor_hwconfig_req_x2(priv, hwconfig_id, addr, NULL); + printk("BWMODE_REQ md=%d\n", addr[0]); + } + break; + case 5: // CHIP_TEMP_GET_REQ + if (ret != 1) { + printk("param error != 1\n"); + } else { + ret = rwnx_send_vendor_hwconfig_req_x2(priv, hwconfig_id, addr, addr_out); + printk("CHIP_TEMP_GET_REQ degree=%d\n", addr_out[0]); + } + break; + case 6: // STBC_MCS_SET_REQ + if (ret != 3) { + printk("param error != 3\n"); + } else { + printk("ret=%d, id=%d, param=%x, %x\n", ret, hwconfig_id, addr[0], addr[1]); + ret = rwnx_send_vendor_hwconfig_req_x2(priv, hwconfig_id, addr, addr_out); + } + break; + case 7: + printk("ret=%d, id=%d, param=%x, %x\n", ret, hwconfig_id, addr[0], addr[1]); + ret = rwnx_send_vendor_hwconfig_req_x2(priv, hwconfig_id, addr, addr_out); + break; + case 8: + case 9: + case 10: + case 11: + case 12: + ret = rwnx_send_vendor_hwconfig_req_x2(priv, hwconfig_id, addr, addr_out); + break; + default: + printk("param error:%d\n", hwconfig_id); + break; + } + if(ret) { + printk("rwnx_send_vendor_hwconfig_req fail: %x\n", ret); + } + } + + return count; +} + +DEBUGFS_WRITE_FILE_OPS(vendor_hwconfig_x2); + +static ssize_t rwnx_dbgfs_vendor_swconfig_x2_write(struct file *file, + const char __user *user_buf, + size_t count, loff_t *ppos) +{ + struct rwnx_hw *priv = file->private_data; + char buf[64]; + int32_t addr[12]; + int32_t addr_out[12]; + u32_l swconfig_id; + size_t len = min_t(size_t, count, sizeof(buf) - 1); + int ret; + printk("%s\n", __func__); + + if (copy_from_user(buf, user_buf, len)) { + return -EFAULT; + } + + buf[len] = '\0'; + ret = sscanf(buf, "%x %x %x", &swconfig_id, &addr[0], &addr[1]); + if (ret > 3) { + printk("param error > 3\n"); + } else { + switch (swconfig_id) + { + case 0: // BCN_CFG_REQ + if (ret != 2) { + printk("param error != 2\n"); + } else { + ret = rwnx_send_vendor_swconfig_req_x2(priv, swconfig_id, addr, addr_out); + printk("BCN_CFG_REQ set_en=%d, get_en=%d\n", addr[0], addr_out[0]); + } + break; + + case 1: // TEMP_COMP_SET_REQ + if (ret != 3) { + printk("param error != 3\n"); + } else { + ret = rwnx_send_vendor_swconfig_req_x2(priv, swconfig_id, addr, addr_out); + printk("TEMP_COMP_SET_REQ set_en=%d, tmr=%dms, get_st=%d\n", + addr[0], addr[1], addr_out[0]); + } + break; + + case 2: // TEMP_COMP_GET_REQ + if (ret != 1) { + printk("param error != 1\n"); + } else { + ret = rwnx_send_vendor_swconfig_req_x2(priv, swconfig_id, addr, addr_out); + printk("TEMP_COMP_GET_REQ get_st=%d, degree=%d\n", addr_out[0], addr_out[1]); + } + break; + + case 3: // EXT_FLAGS_SET_REQ + if (ret != 2) { + printk("param error != 2\n"); + } else { + ret = rwnx_send_vendor_swconfig_req_x2(priv, swconfig_id, addr, addr_out); + printk("EXT_FLAGS_SET_REQ set ext_flags=0x%x, get ext_flags=0x%x\n", + addr[0], addr_out[0]); + } + break; + + case 4: // EXT_FLAGS_GET_REQ + if (ret != 1) { + printk("param error != 1\n"); + } else { + ret = rwnx_send_vendor_swconfig_req_x2(priv, swconfig_id, addr, addr_out); + printk("EXT_FLAGS_GET_REQ get ext_flags=0x%x\n", addr_out[0]); + } + break; + + case 5: // EXT_FLAGS_MASK_SET_REQ + if (ret != 3) { + printk("param error != 3\n"); + } else { + ret = rwnx_send_vendor_swconfig_req_x2(priv, swconfig_id, addr, addr_out); + printk("EXT_FLAGS_MASK_SET_REQ set ext_flags mask=0x%x, val=0x%x, get ext_flags=0x%x\n", + addr[0], addr[1], addr_out[0]); + } + break; + case 6: // TWO_ANT_RSSI_GET_REQ + ret = rwnx_send_vendor_swconfig_req_x2(priv, swconfig_id, addr, addr_out); + printk("2 ant rssi=%x\n", addr_out[0]); + break; + default: + printk("param error\n"); + break; + } + + if (ret) { + printk("rwnx_send_vendor_swconfig_req fail: %x\n", ret); + } + } + + return count; +} + +DEBUGFS_WRITE_FILE_OPS(vendor_swconfig_x2); + static ssize_t rwnx_dbgfs_agg_disable_write(struct file *file, const char __user *user_buf, size_t count, loff_t *ppos) @@ -2157,7 +2373,7 @@ static ssize_t rwnx_dbgfs_last_rx_read(struct file *file, nss = last_rx->ht.mcs / 8;; gi = last_rx->ht.short_gi; } else { - BUG_ON((mcs = legrates_lut[last_rx->leg_rate]) == -1); + BUG_ON((mcs = legrates_lut[last_rx->leg_rate].idx) == -1); nss = 0; gi = 0; } @@ -2436,6 +2652,8 @@ int rwnx_dbgfs_register(struct rwnx_hw *rwnx_hw, const char *name) DEBUGFS_ADD_FILE(regdbg, dir_drv, S_IWUSR); DEBUGFS_ADD_FILE(vendor_hwconfig, dir_drv,S_IWUSR); DEBUGFS_ADD_FILE(vendor_swconfig, dir_drv,S_IWUSR); + DEBUGFS_ADD_FILE(vendor_hwconfig_x2, dir_drv,S_IWUSR); + DEBUGFS_ADD_FILE(vendor_swconfig_x2, dir_drv,S_IWUSR); DEBUGFS_ADD_FILE(agg_disable, dir_drv,S_IWUSR); DEBUGFS_ADD_FILE(set_roc, dir_drv,S_IWUSR); DEBUGFS_ADD_FILE(dbg_level, dir_drv, S_IWUSR | S_IRUSR); diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_defs.h b/drivers/aic8800/aic8800_fdrv/rwnx_defs.h index 8437fe8..643b45f 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_defs.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_defs.h @@ -33,6 +33,9 @@ #ifdef CONFIG_FILTER_TCP_ACK #include "aicwf_tcp_ack.h" #endif +#ifdef CONFIG_BAND_STEERING +#include "aicwf_steering.h" +#endif #ifdef AICWF_SDIO_SUPPORT #include "aicwf_sdio.h" @@ -73,6 +76,24 @@ #define HIGH_KERNEL_VERSION4 KERNEL_VERSION(6, 3, 0) #endif + + +#if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION +#ifndef IEEE80211_MAX_AMPDU_BUF +#define IEEE80211_MAX_AMPDU_BUF IEEE80211_MAX_AMPDU_BUF_HE +#endif +#ifndef IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB +#define IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB +#endif +#ifndef IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB +#define IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB +#endif +#ifndef IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA +#define IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU +#endif +#endif + + #ifndef IEEE80211_MAX_AMPDU_BUF #define IEEE80211_MAX_AMPDU_BUF 0x100 #endif @@ -86,14 +107,6 @@ #define IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA 0x40 #endif -#if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION -#define IEEE80211_MAX_AMPDU_BUF IEEE80211_MAX_AMPDU_BUF_HE -#define IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB -#define IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB -#define IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU -#endif - - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 5, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) enum nl80211_ac { NL80211_AC_VO, @@ -200,6 +213,38 @@ enum nl80211_mesh_power_mode { }; #endif +#ifdef CONFIG_BAND_STEERING +enum band_type { + BAND_ON_24G = 0, + BAND_ON_5G = 1, + BAND_ON_60G = 2, + BAND_ON_6G = 3, + BAND_MAX, +}; + +enum WIFI_FRAME_TYPE { + WIFI_MGT_TYPE = (0), +}; + +enum WIFI_FRAME_SUBTYPE { + WIFI_ASSOCREQ = (0 | WIFI_MGT_TYPE), + WIFI_PROBEREQ = (BIT(6) | WIFI_MGT_TYPE), + WIFI_AUTH = (BIT(7) | BIT(5) | BIT(4) | WIFI_MGT_TYPE), +}; + +struct tmp_feature_sta { + u8_l sta_idx; + u8_l supported_band; +}; + +#define MAX_PENDING_PROBES 3 +struct ap_probe_rsp { + u8_l da[6]; + struct work_struct rsp_work; + bool in_use; +}; +#endif + #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0) #define NL80211_MESHCONF_POWER_MODE 26 @@ -217,6 +262,7 @@ enum nl80211_mesh_power_mode { #endif + /** * struct rwnx_bcn - Information of the beacon in used (AP mode) * @@ -356,7 +402,6 @@ struct rwnx_vif { struct rwnx_key key[6]; unsigned long drv_flags; atomic_t drv_conn_state; - u8 is_conn; u8 drv_vif_index; /* Identifier of the VIF in driver */ u8 vif_index; /* Identifier of the station in FW */ u8 ch_index; /* Channel context identifier */ @@ -407,6 +452,12 @@ struct rwnx_vif { bool create_path; /* Indicate if we are waiting for a MESH_CREATE_PATH_CFM message */ int generation; /* Increased each time the list of Mesh Paths is updated */ +#ifdef CONFIG_BAND_STEERING + u8_l tmp_sta_idx; + enum band_type band; + u32_l freq; + bool start; +#endif enum nl80211_mesh_power_mode mesh_pm; /* mesh power save mode currently set in firmware */ enum nl80211_mesh_power_mode next_mesh_pm; /* mesh power save mode for next peer */ } ap; @@ -435,6 +486,13 @@ struct rwnx_vif { struct br_ext_info ethBrExtInfo; #endif /* CONFIG_BR_SUPPORT */ +#ifdef CONFIG_BAND_STEERING + struct workqueue_struct *rsp_wq; + struct timer_list steer_timer; + struct work_struct steer_work; + struct b_steer_priv bsteerpriv; + struct ap_probe_rsp pb_pool[MAX_PENDING_PROBES]; +#endif }; @@ -479,10 +537,18 @@ struct rwnx_rx_rate_stats { * @rx_rate: Statistics of the received rates */ struct rwnx_sta_stats { -//#ifdef CONFIG_RWNX_DEBUGFS + u32 rx_pkts; + u32 tx_pkts; + u64 rx_bytes; + u64 tx_bytes; + unsigned long last_act; struct hw_vect last_rx; struct rwnx_rx_rate_stats rx_rate; -//#endif + u32 last_chan_time; + u32 last_chan_busy_time; + u32 tx_ack_succ_stat; + u32 tx_ack_fail_stat; + u32 last_chan_tx_busy_time; }; #if (defined CONFIG_HE_FOR_OLD_KERNEL) || (defined CONFIG_VHT_FOR_OLD_KERNEL) @@ -490,6 +556,14 @@ struct aic_sta { u8 sta_idx; /* Identifier of the station */ bool he; /* Flag indicating if the station supports HE */ bool vht; /* Flag indicating if the station supports VHT */ + + struct ieee80211_he_cap_elem he_cap_elem; + struct ieee80211_he_mcs_nss_supp he_mcs_nss_supp; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0) || defined(CONFIG_VHT_FOR_OLD_KERNEL) + __le32 vht_cap_info; + struct ieee80211_vht_mcs_info supp_mcs; +#endif }; #endif @@ -537,6 +611,17 @@ struct rwnx_sta { struct rwnx_tdls tdls; /* TDLS station information */ struct rwnx_sta_stats stats; enum nl80211_mesh_power_mode mesh_pm; /* link-specific mesh power save mode */ +#ifdef CONFIG_DYNAMIC_PERPWR + s8_l rssi_save; + s8_l per_pwrloss; + struct work_struct per_pwr_work; + unsigned long last_jiffies; +#endif +#ifdef CONFIG_BAND_STEERING + u32_l link_time; + s8_l rssi; + u8_l support_band; +#endif }; static inline const u8 *rwnx_sta_addr(struct rwnx_sta *rwnx_sta) { @@ -620,13 +705,41 @@ struct rwnx_phy_info { bool limit_bw; }; +struct defrag_ctrl_info { + struct list_head list; + u8 sta_idx; + u8 tid; + u16 sn; + u8 next_fn; + u16 frm_len; + struct sk_buff *skb; + struct timer_list defrag_timer; + struct rwnx_hw *rwnx_hw; +}; + +struct amsdu_subframe_hdr { + u8 da[6]; + u8 sa[6]; + u16 sublen; +}; + /* rwnx driver status */ +void rwnx_set_conn_state(atomic_t *drv_conn_state, int state); enum rwnx_drv_connect_status { RWNX_DRV_STATUS_DISCONNECTED = 0, RWNX_DRV_STATUS_DISCONNECTING, RWNX_DRV_STATUS_CONNECTING, RWNX_DRV_STATUS_CONNECTED, + RWNX_DRV_STATUS_ROAMING, +}; + +static const char *const s_conn_state[] = { + "RWNX_DRV_STATUS_DISCONNECTED", + "RWNX_DRV_STATUS_DISCONNECTING", + "RWNX_DRV_STATUS_CONNECTING", + "RWNX_DRV_STATUS_CONNECTED", + "RWNX_DRV_STATUS_ROAMING", }; @@ -735,10 +848,19 @@ struct rwnx_hw { bool scanning; bool p2p_working; + struct list_head defrag_list; + spinlock_t defrag_lock; + struct work_struct apmStalossWork; struct workqueue_struct *apmStaloss_wq; u8 apm_vif_idx; u8 sta_mac_addr[6]; + + struct wakeup_source *ws_rx; + struct wakeup_source *ws_irqrx; + struct wakeup_source *ws_tx; + struct wakeup_source *ws_pwrctrl; + #ifdef CONFIG_SCHED_SCAN bool is_sched_scan; #endif//CONFIG_SCHED_SCAN @@ -760,9 +882,20 @@ struct rwnx_hw { bool wext_scan; struct completion wext_scan_com; struct list_head wext_scanre_list; - char wext_essid[32]; + char wext_essid[33]; int support_freqs[SCAN_CHANNEL_MAX]; int support_freqs_number; +#ifdef CONFIG_DYNAMIC_PWR + struct timer_list pwrloss_timer; + struct work_struct pwrloss_work; + struct rwnx_vif *read_rssi_vif; + s8 pwrloss_lvl; + u8 sta_rssi_idx; +#endif +#endif +#ifdef CONFIG_BAND_STEERING + u8_l iface_idx; + struct tmp_feature_sta feature_table[NX_REMOTE_STA_MAX + NX_VIRT_DEV_MAX]; #endif }; diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_main.c b/drivers/aic8800/aic8800_fdrv/rwnx_main.c index 0315980..5962bcd 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_main.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_main.c @@ -43,7 +43,13 @@ #include "aicwf_txrxif.h" #include "aicwf_compat_8800dc.h" #include "aicwf_compat_8800d80.h" +#include "aicwf_compat_8800d80x2.h" #include "aic_priv_cmd.h" +#include "rwnx_wakelock.h" +#include "rwnx_msg_tx.h" +#ifdef CONFIG_BAND_STEERING +#include "aicwf_manager.h" +#endif #ifdef CONFIG_USE_WIRELESS_EXT #include "aicwf_wext_linux.h" @@ -61,6 +67,16 @@ #define RW_DRV_COPYRIGHT "Copyright(c) 2015-2017 RivieraWaves" #define RW_DRV_AUTHOR "RivieraWaves S.A.S" +#ifdef CONFIG_WOWLAN + //ff ff ff ff ff ff is magic package + u8_l wowlan_param1[] = {0x01,0x2a,0x06,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff}; +#endif + +static char *wifi_mac_addr = 0; + +extern char country_code[]; + #define RWNX_PRINT_CFM_ERR(req) \ printk(KERN_CRIT "%s: Status Error(%d)\n", #req, (&req##_cfm)->status) @@ -525,6 +541,10 @@ atomic_t aicwf_deinit_atomic; int aicwf_dbg_level = LOGERROR|LOGINFO; module_param(aicwf_dbg_level, int, 0660); +#ifdef CONFIG_DYNAMIC_PWR +int dynamic_pwr = 1; +module_param(dynamic_pwr, int, 0660); +#endif int testmode = 0; char aic_fw_path[200]; @@ -1057,7 +1077,7 @@ static void rwnx_csa_finish(struct work_struct *ws) #endif } else { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)) - wiphy_lock(rwnx_hw->wiphy); + wiphy_lock(rwnx_hw->wiphy); #else mutex_lock(&vif->wdev.mtx); __acquire(&vif->wdev.mtx); @@ -1072,16 +1092,16 @@ static void rwnx_csa_finish(struct work_struct *ws) rwnx_txq_vif_stop(vif, RWNX_TXQ_STOP_CHAN, rwnx_hw); spin_unlock_bh(&rwnx_hw->cb_lock); #if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 9, 0)) - cfg80211_ch_switch_notify(vif->ndev, &csa->chandef, 0); + cfg80211_ch_switch_notify(vif->ndev, &csa->chandef, 0); #elif (LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION3) cfg80211_ch_switch_notify(vif->ndev, &csa->chandef, 0, 0); -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) +#elif (LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION) cfg80211_ch_switch_notify(vif->ndev, &csa->chandef, 0); #else cfg80211_ch_switch_notify(vif->ndev, &csa->chandef); #endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)) - wiphy_unlock(rwnx_hw->wiphy); + wiphy_unlock(rwnx_hw->wiphy); #else mutex_unlock(&vif->wdev.mtx); __release(&vif->wdev.mtx); @@ -1168,6 +1188,64 @@ void rwnx_update_mesh_power_mode(struct rwnx_vif *vif) vif->ap.mesh_pm = mesh_pm; } +#ifdef CONFIG_BAND_STEERING +void aicwf_steering_work(struct work_struct *work) +{ + struct rwnx_vif *rwnx_vif = container_of(work, struct rwnx_vif, steer_work); + struct rwnx_sta *sta; + + if (rwnx_vif->up == false) { + AICWFDBG(LOGERROR, "%s vif is down\n", __func__); + return; + } + + //printk("%s\n", __func__); + aicwf_nl_send_intf_rpt_msg(rwnx_vif); + aicwf_nl_send_time_tick_msg(rwnx_vif); + aicwf_band_steering_expire(rwnx_vif); + + spin_lock_bh(&rwnx_vif->rwnx_hw->cb_lock); + if(list_empty(&rwnx_vif->ap.sta_list)) { + spin_unlock_bh(&rwnx_vif->rwnx_hw->cb_lock); + goto finish; + } + list_for_each_entry(sta, &rwnx_vif->ap.sta_list, list) { + if (sta->valid) { + sta->link_time +=2; + aicwf_nl_send_sta_rpt_msg(rwnx_vif, sta); + } + } + spin_unlock_bh(&rwnx_vif->rwnx_hw->cb_lock); + +finish: + mod_timer(&rwnx_vif->steer_timer, jiffies + msecs_to_jiffies(STEER_UPFATE_TIME)); +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) +void aicwf_steering_timeout(ulong data) +#else +void aicwf_steering_timeout(struct timer_list *t) +#endif +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + struct rwnx_vif *rwnx_vif = (struct rwnx_vif *)data; +#else + struct rwnx_vif *rwnx_vif = container_of(t, struct rwnx_vif, steer_timer); +#endif + + if (rwnx_vif->up == false) { + AICWFDBG(LOGERROR, "%s vif is down\n", __func__); + return; + } + + if (!work_pending(&rwnx_vif->steer_work)) + schedule_work(&rwnx_vif->steer_work); + + return; +} +#endif + + #ifdef CONFIG_BR_SUPPORT void netdev_br_init(struct net_device *netdev) { @@ -1209,6 +1287,18 @@ void netdev_br_init(struct net_device *netdev) } #endif /* CONFIG_BR_SUPPORT */ +void rwnx_set_conn_state(atomic_t *drv_conn_state, int state){ + + if((int)atomic_read(drv_conn_state) != state){ + AICWFDBG(LOGDEBUG, "%s drv_conn_state:%p %s --> %s \r\n", __func__, + drv_conn_state, + s_conn_state[(int)atomic_read(drv_conn_state)], + s_conn_state[state]); + + atomic_set(drv_conn_state, state); + } +} + /********************************************************************* * netdev callbacks @@ -1232,7 +1322,9 @@ static int rwnx_open(struct net_device *dev) int waiting_counter = 10; RWNX_DBG(RWNX_FN_ENTRY_STR); - +#ifdef CONFIG_WOWLAN + rwnx_send_set_pkt_filter_req(rwnx_hw, wowlan_param1); +#endif while(test_bit(RWNX_DEV_STARTED, &rwnx_vif->drv_flags)){ msleep(100); AICWFDBG(LOGDEBUG, "%s waiting for rwnx_close \r\n", __func__); @@ -1255,20 +1347,19 @@ static int rwnx_open(struct net_device *dev) return error; } } +#ifdef CONFIG_COEX + if (testmode == 0) { + rwnx_send_coex_req(rwnx_hw, 0, 1); + } +#endif /* Device is now started */ } set_bit(RWNX_DEV_STARTED, &rwnx_vif->drv_flags); - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTED); AICWFDBG(LOGDEBUG, "%s rwnx_vif->drv_flags:%d\r\n", __func__, (int)rwnx_vif->drv_flags); - if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO) - { - #ifdef CONFIG_COEX - rwnx_send_coex_req(rwnx_hw, 1, 0); - #endif - } if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO) { if (!rwnx_hw->is_p2p_alive) { @@ -1414,7 +1505,7 @@ static int rwnx_close(struct net_device *dev) test_counter--; if(test_counter == 0){ AICWFDBG(LOGERROR, "%s connecting or disconnecting, not finish\r\n", __func__); - WARN_ON(1); + //WARN_ON(1); break; } } @@ -1474,7 +1565,7 @@ static int rwnx_close(struct net_device *dev) RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT){ test_counter = waiting_counter; if(atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTED){ - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTING); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTING); rwnx_send_sm_disconnect_req(rwnx_hw, rwnx_vif, 3); while (atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_DISCONNECTING) { AICWFDBG(LOGDEBUG, "%s wifi is disconnecting, waiting 100ms for state to stable\r\n", __func__); @@ -1546,12 +1637,6 @@ static int rwnx_close(struct net_device *dev) if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_MONITOR) rwnx_hw->monitor_vif = RWNX_INVALID_VIF; - if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_GO) - { - #ifdef CONFIG_COEX - rwnx_send_coex_req(rwnx_hw, 0, 1); - #endif - } rwnx_hw->vif_started--; if (rwnx_hw->vif_started == 0) { @@ -1560,21 +1645,24 @@ static int rwnx_close(struct net_device *dev) rwnx_ipc_tx_drain(rwnx_hw); #else #if defined(AICWF_USB_SUPPORT) - if (usbdev->bus_if->state != BUS_DOWN_ST && usbdev->state != USB_DOWN_ST) { + if (usbdev->bus_if->state != BUS_DOWN_ST && usbdev->state != USB_DOWN_ST) #else - if (sdiodev->bus_if->state != BUS_DOWN_ST) { + if (sdiodev->bus_if->state != BUS_DOWN_ST) #endif + { rwnx_send_reset(rwnx_hw); #if defined(AICWF_USB_SUPPORT) if (rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8801 || ((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC || rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW || - rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81)&& testmode == 0)) { + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2)&& testmode == 0)) { #endif // Set parameters to firmware rwnx_send_me_config_req(rwnx_hw); // Set channel parameters to firmware - rwnx_send_me_chan_config_req(rwnx_hw); + rwnx_send_me_chan_config_req(rwnx_hw, country_code); #if defined(AICWF_USB_SUPPORT) } #endif @@ -1611,7 +1699,7 @@ static int rwnx_do_ioctl(struct net_device *net, struct ifreq *req, int cmd) break; case (SIOCDEVPRIVATE+1): AICWFDBG(LOGINFO, "IOCTL PRIVATE\n"); - android_priv_cmd(net, req, cmd); + ret = android_priv_cmd(net, req, cmd); break; default: ret = -EOPNOTSUPP; @@ -1694,6 +1782,11 @@ static const struct net_device_ops rwnx_netdev_ops = { static const struct net_device_ops rwnx_netdev_monitor_ops = { .ndo_open = rwnx_open, .ndo_stop = rwnx_close, + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0) + .ndo_siocdevprivate = rwnx_do_ioctl, + #else + .ndo_do_ioctl = rwnx_do_ioctl, + #endif #ifdef CONFIG_RWNX_MON_XMIT .ndo_start_xmit = rwnx_start_monitor_if_xmit, .ndo_select_queue = rwnx_select_queue, @@ -1909,7 +2002,7 @@ static struct rwnx_vif *rwnx_interface_add(struct rwnx_hw *rwnx_hw, #endif #endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) if (cfg80211_register_netdevice(ndev)) #else if (register_netdevice(ndev)) @@ -1996,6 +2089,156 @@ void aicwf_p2p_alive_timeout(struct timer_list *t) spin_unlock_bh(&rwnx_hw->cb_lock); } +#ifdef CONFIG_DYNAMIC_PERPWR +void rssi_update_txpwrloss(struct rwnx_sta *sta, s8_l rssi) +{ + int rssi_avg; + + rssi_avg = (sta->rssi_save + rssi) / 2; + sta->rssi_save = rssi_avg; + + //printk("New RSSI: %d, Average RSSI: %d\n", rssi, rssi_avg); + + if(rssi_avg > RSSI_THD_0) { + if (sta->per_pwrloss != PWR_LOSS_LVL0) { + if ((jiffies_to_msecs(jiffies - sta->last_jiffies) < PWR_DELAY_TIME) && (sta->per_pwrloss >= PWR_LOSS_LVL0)) { + //printk("delay p1\n"); + return; + } + schedule_work(&sta->per_pwr_work); + sta->per_pwrloss = PWR_LOSS_LVL0; + sta->last_jiffies = jiffies; + } + } else if ((rssi_avg > RSSI_THD_1) && (rssi_avg <= RSSI_THD_0)) { + if (sta->per_pwrloss != PWR_LOSS_LVL1) { + if ((jiffies_to_msecs(jiffies - sta->last_jiffies) < PWR_DELAY_TIME) && (sta->per_pwrloss >= PWR_LOSS_LVL1)) { + //printk("delay p2\n"); + return; + } + schedule_work(&sta->per_pwr_work); + sta->per_pwrloss = PWR_LOSS_LVL1; + sta->last_jiffies = jiffies; + } + } else if ((rssi_avg > RSSI_THD_2) && (rssi_avg <= RSSI_THD_1)) { + if (sta->per_pwrloss != PWR_LOSS_LVL2) { + if ((jiffies_to_msecs(jiffies - sta->last_jiffies) < PWR_DELAY_TIME) && (sta->per_pwrloss >= PWR_LOSS_LVL2)) { + //printk("delay p3\n"); + return; + } + schedule_work(&sta->per_pwr_work); + sta->per_pwrloss = PWR_LOSS_LVL2; + sta->last_jiffies = jiffies; + } + } else if (rssi_avg <= RSSI_THD_2) { + if (sta->per_pwrloss != PWR_LOSS_LVL3) { + schedule_work(&sta->per_pwr_work); + sta->per_pwrloss = PWR_LOSS_LVL3; + sta->last_jiffies = jiffies; + } + } +} + +void aicwf_txpwer_per_sta_worker(struct work_struct *work) +{ + struct rwnx_sta *sta; + sta = container_of(work, struct rwnx_sta, per_pwr_work); + + AICWFDBG(LOGINFO, "per_sta_worker: idx: %d\n", sta->sta_idx); + rwnx_send_txpwr_per_sta_req(g_rwnx_plat->usbdev->rwnx_hw, sta); +} +#endif + +#ifdef CONFIG_DYNAMIC_PWR +void set_txpwrloss_ctrl(struct rwnx_hw *rwnx_hw, s8 value) +{ + AICWFDBG(LOGINFO, "set_txpwrloss_ctrl: %d\n", value); + set_txpwr_loss_ofst(value); + if (rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW) { + rwnx_send_txpwr_lvl_req(rwnx_hw); + } else if ((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81)) { + rwnx_send_txpwr_lvl_v3_req(rwnx_hw); + } else if ((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2) || + (rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2)) { + rwnx_send_txpwr_lvl_v4_req(rwnx_hw); + } +} + +void aicwf_pwrloss_worker(struct work_struct *work) +{ + struct rwnx_hw *rwnx_hw; + struct rwnx_vif *rwnx_vif; + struct mm_get_sta_info_cfm cfm; + int ret = 0; + s8 rssi; + + rwnx_hw = container_of(work, struct rwnx_hw, pwrloss_work); + rwnx_vif = rwnx_hw->read_rssi_vif; + if (!dynamic_pwr) { + if (rwnx_hw->pwrloss_lvl != 0) { + set_txpwrloss_ctrl(rwnx_hw, 0); + } + mod_timer(&rwnx_hw->pwrloss_timer, jiffies + msecs_to_jiffies(RSSI_GET_INTERVAL)); + return; + } + if(atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTED){ + ret = rwnx_send_get_sta_info_req(rwnx_hw, rwnx_hw->sta_rssi_idx, &cfm); + if(ret < 0) { + AICWFDBG(LOGINFO, "rwnx_send_get_sta_info_req: %dn", ret); + return; + } + rssi = (s8)cfm.rssi; + AICWFDBG(LOGINFO, "%s: rssi:%d lvl : %d\n", __func__, rssi, rwnx_hw->pwrloss_lvl); + if(rssi > RSSI_THD_0) { + if (rwnx_hw->pwrloss_lvl != PWR_LOSS_LVL0) { + set_txpwrloss_ctrl(rwnx_hw, PWR_LOSS_LVL0); + rwnx_hw->pwrloss_lvl = PWR_LOSS_LVL0; + } + } else if ((rssi > RSSI_THD_1) && (rssi <= RSSI_THD_0)) { + if (rwnx_hw->pwrloss_lvl != PWR_LOSS_LVL1) { + set_txpwrloss_ctrl(rwnx_hw, PWR_LOSS_LVL1); + rwnx_hw->pwrloss_lvl = PWR_LOSS_LVL1; + } + } else if ((rssi > RSSI_THD_2) && (rssi <= RSSI_THD_1)) { + if (rwnx_hw->pwrloss_lvl != PWR_LOSS_LVL2) { + set_txpwrloss_ctrl(rwnx_hw, PWR_LOSS_LVL2); + rwnx_hw->pwrloss_lvl = PWR_LOSS_LVL2; + } + } else if (rssi <= RSSI_THD_2) { + if (rwnx_hw->pwrloss_lvl != PWR_LOSS_LVL3) { + set_txpwrloss_ctrl(rwnx_hw, PWR_LOSS_LVL3); + rwnx_hw->pwrloss_lvl = PWR_LOSS_LVL3; + } + } + } else if (atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_DISCONNECTED){ + if (rwnx_hw->pwrloss_lvl != 0) { + set_txpwrloss_ctrl(rwnx_hw, 0); + rwnx_hw->pwrloss_lvl = 0; + } + } + mod_timer(&rwnx_hw->pwrloss_timer, jiffies + msecs_to_jiffies(RSSI_GET_INTERVAL)); +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) +static void aicwf_pwrloss_timer(ulong data) +#else +static void aicwf_pwrloss_timer(struct timer_list *t) +#endif +{ + struct rwnx_hw *rwnx_hw; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) + rwnx_vif = (struct rwnx_vif *)data; + rwnx_hw = rwnx_vif->rwnx_hw; +#else + rwnx_hw = from_timer(rwnx_hw, t, pwrloss_timer); +#endif + if (!work_pending(&rwnx_hw->pwrloss_work)) + schedule_work(&rwnx_hw->pwrloss_work); + return; + +} +#endif /********************************************************************* * Cfg80211 callbacks (and helper) @@ -2089,7 +2332,7 @@ static struct wireless_dev *rwnx_virtual_interface_add(struct rwnx_hw *rwnx_hw, * and a given role. */ -static struct rwnx_sta *rwnx_retrieve_sta(struct rwnx_hw *rwnx_hw, +struct rwnx_sta *rwnx_retrieve_sta(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, u8 *addr, __le16 fc, bool ap) { @@ -2191,11 +2434,7 @@ static int rwnx_cfg80211_del_iface(struct wiphy *wiphy, struct wireless_dev *wde #if 0 if (rwnx_vif == rwnx_hw->p2p_dev_vif) { if (timer_pending(&rwnx_hw->p2p_alive_timer)) { - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - timer_delete_sync(&rwnx_hw->p2p_alive_timer); - #else - del_timer_sync(&rwnx_hw->p2p_alive_timer); - #endif + del_timer_sync(&rwnx_hw->p2p_alive_timer); } } #endif @@ -2215,7 +2454,7 @@ static int rwnx_cfg80211_del_iface(struct wiphy *wiphy, struct wireless_dev *wde AICWFDBG(LOGINFO, "%s Remove Interface \r\n", dev->name); if (dev->reg_state == NETREG_REGISTERED) { /* Will call rwnx_close if interface is UP */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) cfg80211_unregister_netdevice(dev); #else unregister_netdevice(dev); @@ -2255,12 +2494,6 @@ static int rwnx_cfg80211_change_iface(struct wiphy *wiphy, RWNX_DBG(RWNX_FN_ENTRY_STR); AICWFDBG(LOGINFO, "change_if: %d to %d, %d, %d\r\n", vif->wdev.iftype, type, NL80211_IFTYPE_P2P_CLIENT, NL80211_IFTYPE_STATION); -#ifdef CONFIG_COEX - if (type == NL80211_IFTYPE_AP || type == NL80211_IFTYPE_P2P_GO) - rwnx_send_coex_req(vif->rwnx_hw, 1, 0); - if (RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_AP || RWNX_VIF_TYPE(vif) == NL80211_IFTYPE_P2P_GO) - rwnx_send_coex_req(vif->rwnx_hw, 0, 1); -#endif #ifndef CONFIG_RWNX_MON_DATA if ((type == NL80211_IFTYPE_MONITOR) && (RWNX_VIF_TYPE(vif) != NL80211_IFTYPE_MONITOR)) { @@ -2444,11 +2677,7 @@ static void rwnx_cfgp2p_stop_p2p_device(struct wiphy *wiphy, struct wireless_dev if (rwnx_vif == rwnx_hw->p2p_dev_vif) { rwnx_hw->is_p2p_alive = 0; if (timer_pending(&rwnx_hw->p2p_alive_timer)) { - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - timer_delete_sync(&rwnx_hw->p2p_alive_timer); - #else - del_timer_sync(&rwnx_hw->p2p_alive_timer); - #endif + del_timer_sync(&rwnx_hw->p2p_alive_timer); } if (rwnx_vif->up) { rwnx_send_remove_if(rwnx_hw, rwnx_vif->vif_index, true); @@ -2753,12 +2982,7 @@ static int rwnx_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, RWNX_DBG(RWNX_FN_ENTRY_STR); #if 1 -#if 0 - if((int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTED){ - AICWFDBG(LOGERROR, "%s driver was connected return it \r\n", __func__); - return -EALREADY; - } -#endif + if((int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTED) { AICWFDBG(LOGDEBUG, "%s this connection is roam \r\n", __func__); rwnx_vif->sta.is_roam = true; @@ -2769,11 +2993,16 @@ static int rwnx_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev, if((int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_DISCONNECTING|| (int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_CONNECTING) { AICWFDBG(LOGERROR, "%s driver is disconnecting or connecting ,return it \r\n", __func__); - return -EALREADY; + return 0; } #endif - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTING); + if(rwnx_vif->sta.is_roam){ + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_ROAMING); + }else{ + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTING); + } + if(is_wep) { if(sme->auth_type == NL80211_AUTHTYPE_AUTOMATIC) { @@ -2872,54 +3101,42 @@ static int rwnx_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev, RWNX_DBG(RWNX_FN_ENTRY_STR); AICWFDBG(LOGINFO, "%s drv_vif_index:%d disconnect reason:%d \r\n", __func__, rwnx_vif->drv_vif_index, reason_code); - rwnx_vif->is_conn = 0; -#if 0 - while(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_CONNECTING){ - AICWFDBG(LOGERROR, "%s driver connecting waiting 100ms \r\n", __func__); - msleep(100); - retry--; - if(retry == 0){ - break; - } - if(rwnx_hw->usbdev->state == USB_DOWN_ST){ - break; - } - } - if(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_CONNECTED){ - - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTING); - } -#endif - if(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_CONNECTING){ - AICWFDBG(LOGINFO, "%s call cfg80211_connect_result reason:%d \r\n", - __func__, reason_code); - rwnx_vif->is_conn = 1; - msleep(500); - } + if(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_DISCONNECTED) { + AICWFDBG(LOGERROR, "%s this\r\n",__func__); + WARN_ON(1); + return -EBUSY; + } + if(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_DISCONNECTING) { AICWFDBG(LOGERROR, "%s wifi is disconnecting, return it:%d \r\n", __func__, reason_code); return -EBUSY; } - if(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_CONNECTED){ - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTING); + if(atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_CONNECTED|| + atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_CONNECTING|| + atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_ROAMING){ + + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTING); #ifdef CONFIG_USE_WIRELESS_EXT - memset(rwnx_hw->wext_essid, 0, 32); + memset(rwnx_hw->wext_essid, 0, 33); #endif key_flag = true; return(rwnx_send_sm_disconnect_req(rwnx_hw, rwnx_vif, reason_code)); - }else{ + } +#if 0 + else{ cfg80211_connect_result(dev, NULL, NULL, 0, NULL, 0, reason_code?reason_code:WLAN_STATUS_UNSPECIFIED_FAILURE, GFP_ATOMIC); - atomic_set(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, RWNX_DRV_STATUS_DISCONNECTED); rwnx_external_auth_disable(rwnx_vif); return 0; } - +#endif + return 0; } #ifdef CONFIG_SCHED_SCAN @@ -3106,6 +3323,13 @@ static int rwnx_cfg80211_add_station(struct wiphy *wiphy, sta->acm = 0; sta->key.hw_idx = 0; +#ifdef CONFIG_DYNAMIC_PERPWR + sta->rssi_save = 0; + sta->per_pwrloss = 0; + sta->last_jiffies = jiffies; + INIT_WORK(&sta->per_pwr_work, aicwf_txpwer_per_sta_worker); +#endif + if (params->local_pm != NL80211_MESH_POWER_UNKNOWN) sta->mesh_pm = params->local_pm; else @@ -3145,6 +3369,19 @@ static int rwnx_cfg80211_add_station(struct wiphy *wiphy, #endif cfg80211_new_sta(rwnx_vif->ndev, sta->mac_addr, &sinfo, GFP_KERNEL); } + +#ifdef CONFIG_BAND_STEERING + struct tmp_feature_sta *f_sta = &rwnx_hw->feature_table[rwnx_vif->ap.tmp_sta_idx]; + AICWFDBG(LOGSTEER, "usb %s idx: %d, supp_band: %d\n ", __func__, rwnx_vif->ap.tmp_sta_idx, f_sta->supported_band); + if (rwnx_vif->ap.tmp_sta_idx < NX_REMOTE_STA_MAX + NX_VIRT_DEV_MAX) + rwnx_vif->ap.tmp_sta_idx++; + else + rwnx_vif->ap.tmp_sta_idx = 0; + + sta->support_band = f_sta->supported_band; + aicwf_nl_send_new_sta_msg(rwnx_vif, sta->mac_addr); +#endif + #ifdef CONFIG_RWNX_BFMER if (rwnx_hw->mod_params->bfmer) rwnx_send_bfmer_enable(rwnx_hw, sta, params->vht_capa); @@ -3204,13 +3441,11 @@ static int rwnx_cfg80211_del_station_compat(struct wiphy *wiphy, struct aicwf_rx_priv *rx_priv; #endif - //RWNX_DBG(RWNX_FN_ENTRY_STR); - AICWFDBG(LOGDEBUG ,"%s: %pM\n", __func__, mac); - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) if (params) mac = params->mac; #endif + AICWFDBG(LOGDEBUG ,"%s: %pM\n", __func__, mac); do { spin_lock_bh(&rwnx_hw->cb_lock); @@ -3276,6 +3511,18 @@ static int rwnx_cfg80211_del_station_compat(struct wiphy *wiphy, } #endif +#ifdef CONFIG_DYNAMIC_PERPWR + cur->rssi_save = 0; + cur->per_pwrloss = 0; + cur->last_jiffies = 0; + cancel_work_sync(&cur->per_pwr_work); +#endif +#ifdef CONFIG_BAND_STEERING + aicwf_nl_send_del_sta_msg(rwnx_vif, cur->mac_addr); + cur->link_time = 0; + cur->rssi = 0; + cur->support_band = 0; +#endif rwnx_txq_sta_deinit(rwnx_hw, cur); error = rwnx_send_me_sta_del(rwnx_hw, cur->sta_idx, false); if ((error != 0) && (error != -EPIPE)) @@ -3662,6 +3909,11 @@ static int rwnx_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *dev, #if (defined CONFIG_HE_FOR_OLD_KERNEL) || (defined CONFIG_VHT_FOR_OLD_KERNEL) rwnx_vif->ap.aic_index = 0; #endif +#ifdef CONFIG_BAND_STEERING + rwnx_vif->ap.band = (enum band_type)((settings->chandef).chan)->band; + rwnx_vif->ap.freq = ((settings->chandef).chan)->center_freq; + rwnx_vif->ap.tmp_sta_idx = 0; +#endif sta = &rwnx_hw->sta_table[apm_start_cfm.bcmc_idx]; sta->valid = true; sta->aid = 0; @@ -3718,6 +3970,32 @@ static int rwnx_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *dev, ((settings->chandef).width)); } +#ifdef CONFIG_BAND_STEERING + if (!error) { +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + init_timer(&rwnx_vif->steer_timer); + rwnx_vif->steer_timer.data = (ulong)rwnx_vif; + rwnx_vif->steer_timer.function = aicwf_steering_timeout; +#else + timer_setup(&rwnx_vif->steer_timer, aicwf_steering_timeout, 0); +#endif + aicwf_nl_hook(rwnx_vif, rwnx_vif->ap.band, rwnx_vif->rwnx_hw->iface_idx); + + INIT_WORK(&rwnx_vif->steer_work, aicwf_steering_work); + for (int i = 0; i < MAX_PENDING_PROBES; i++) { + rwnx_vif->pb_pool[i].in_use = false; + INIT_WORK(&rwnx_vif->pb_pool[i].rsp_work, rwnx_probersp_work); + } + rwnx_vif->rsp_wq = create_workqueue("aic_usb_rsp_wq"); + if (!rwnx_vif->rsp_wq) { + AICWFDBG(LOGERROR, "%s create rsp_wq fail\n", __func__); + return -ENOBUFS; + } + rwnx_vif->ap.start = true; + mod_timer(&rwnx_vif->steer_timer, jiffies + msecs_to_jiffies(STEER_UPFATE_TIME)); + } +#endif + end: //rwnx_ipc_elem_var_deallocs(rwnx_hw, &elem); @@ -3781,7 +4059,7 @@ static int rwnx_cfg80211_change_beacon(struct wiphy *wiphy, struct net_device *d /** * * @stop_ap: Stop being an AP, including stopping beaconing. */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) +#if (LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION) static int rwnx_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id) #else static int rwnx_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev) @@ -3797,6 +4075,21 @@ static int rwnx_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev) netif_tx_stop_all_queues(dev); netif_carrier_off(dev); + /* delete any remaining STA*/ + while (!list_empty(&rwnx_vif->ap.sta_list)) { + rwnx_cfg80211_del_station_compat(wiphy, dev, NULL); + } + +#ifdef CONFIG_BAND_STEERING + rwnx_vif->ap.start = false; + aicwf_nl_hook_deinit(rwnx_vif->ap.band, rwnx_vif->rwnx_hw->iface_idx); + if (timer_pending(&rwnx_vif->steer_timer)) + del_timer_sync(&rwnx_vif->steer_timer); + cancel_work_sync(&rwnx_vif->steer_work); + flush_workqueue(rwnx_vif->rsp_wq); + destroy_workqueue(rwnx_vif->rsp_wq); +#endif + if (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) rwnx_hw->is_p2p_connected = 0; rwnx_radar_cancel_cac(&rwnx_hw->radar); @@ -3805,17 +4098,11 @@ static int rwnx_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *dev) rwnx_chanctx_unlink(rwnx_vif); spin_unlock_bh(&rwnx_hw->cb_lock); - /* delete any remaining STA*/ - while (!list_empty(&rwnx_vif->ap.sta_list)) { - rwnx_cfg80211_del_station_compat(wiphy, dev, NULL); - } - /* delete BC/MC STA */ sta = &rwnx_hw->sta_table[rwnx_vif->ap.bcmc_index]; rwnx_txq_vif_deinit(rwnx_hw, rwnx_vif); rwnx_del_bcn(&rwnx_vif->ap.bcn); rwnx_del_csa(rwnx_vif); - flush_workqueue(rwnx_vif->sta_probe.apmprobesta_wq); destroy_workqueue(rwnx_vif->sta_probe.apmprobesta_wq); @@ -3845,12 +4132,13 @@ cfg80211_chandef_identical(const struct cfg80211_chan_def *chandef1, } #endif -static int rwnx_cfg80211_set_monitor_channel( - struct wiphy *wiphy, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0) - struct net_device *, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0)) +static int rwnx_cfg80211_set_monitor_channel(struct wiphy *wiphy, struct net_device *dev, + struct cfg80211_chan_def *chandef) +#else +static int rwnx_cfg80211_set_monitor_channel(struct wiphy *wiphy, + struct cfg80211_chan_def *chandef) #endif - struct cfg80211_chan_def *chandef) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif; @@ -3903,6 +4191,23 @@ static int rwnx_cfg80211_set_monitor_channel( return 0; } + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0)) +int rwnx_cfg80211_set_monitor_channel_(struct wiphy *wiphy, + struct net_device *dev, + struct cfg80211_chan_def *chandef) +{ + return rwnx_cfg80211_set_monitor_channel(wiphy, dev, chandef); +} +#else +int rwnx_cfg80211_set_monitor_channel_(struct wiphy *wiphy, + struct cfg80211_chan_def *chandef) +{ + return rwnx_cfg80211_set_monitor_channel(wiphy, chandef); +} +#endif + + /** * @probe_client: probe an associated client, must return a cookie that it * later passes to cfg80211_probe_status(). @@ -4359,7 +4664,7 @@ static int rwnx_cfg80211_dump_survey(struct wiphy *wiphy, struct net_device *net #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) static int rwnx_cfg80211_get_channel(struct wiphy *wiphy, struct wireless_dev *wdev, -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2)) +#if LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION unsigned int link_id, #endif struct cfg80211_chan_def *chandef) @@ -4375,13 +4680,11 @@ static int rwnx_cfg80211_get_channel(struct wiphy *wiphy, if (rwnx_vif->vif_index == rwnx_hw->monitor_vif) { //retrieve channel from firmware - rwnx_cfg80211_set_monitor_channel( - wiphy, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0) - NULL, -#endif - NULL - ); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0)) + rwnx_cfg80211_set_monitor_channel(wiphy, wdev->netdev, NULL); +#else + rwnx_cfg80211_set_monitor_channel(wiphy, NULL); +#endif } //Check if channel context is valid @@ -4476,6 +4779,16 @@ static int rwnx_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, break; } +#ifdef CONFIG_BAND_STEERING + if (ieee80211_is_assoc_resp(mgmt->frame_control)) { + AICWFDBG(LOGSTEER, "usb assoc_resp: da: %pM\n", mgmt->da); + if (aicwf_band_steering_block_chk(rwnx_vif, mgmt->da)) { + AICWFDBG(LOGSTEER, "[STEERING] usb assoc_rsp refuse temp, %pM\n", mgmt->da); + return 0; + } + } +#endif + /* Get STA on which management frame has to be sent */ rwnx_sta = rwnx_retrieve_sta(rwnx_hw, rwnx_vif, mgmt->da, mgmt->frame_control, ap); @@ -4565,17 +4878,17 @@ int rwnx_cfg80211_start_radar_detection(struct wiphy *wiphy, #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) , u32 cac_time_ms #endif - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0)) , int link_id - #endif - - +#endif ) { struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_vif *rwnx_vif = netdev_priv(dev); struct apm_start_cac_cfm cfm; + printk("%s\n", __func__); + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) rwnx_radar_start_cac(&rwnx_hw->radar, cac_time_ms, rwnx_vif); #endif @@ -4719,11 +5032,10 @@ int rwnx_cfg80211_channel_switch(struct wiphy *wiphy, goto end; } else { INIT_WORK(&csa->work, rwnx_csa_finish); - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 9, 0) - cfg80211_ch_switch_started_notify(dev, &csa->chandef, 0, params->count, false); + cfg80211_ch_switch_started_notify(dev, &csa->chandef, 0, params->count, false); #elif LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION4 - cfg80211_ch_switch_started_notify(dev, &csa->chandef, 0, params->count, false, 0); + cfg80211_ch_switch_started_notify(dev, &csa->chandef, 0, params->count, false, 0); #elif LINUX_VERSION_CODE >= HIGH_KERNEL_VERSION2 cfg80211_ch_switch_started_notify(dev, &csa->chandef, 0, params->count, false); #elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) @@ -4734,6 +5046,11 @@ int rwnx_cfg80211_channel_switch(struct wiphy *wiphy, } +#ifdef CONFIG_BAND_STEERING + vif->ap.band = (enum band_type)((params->chandef).chan)->band; + vif->ap.freq = ((params->chandef).chan)->center_freq; +#endif + end: return error; } @@ -4992,71 +5309,203 @@ int rwnx_cfg80211_change_bss(struct wiphy *wiphy, struct net_device *dev, return res; } -static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, - struct station_info *sinfo) -{ +enum { + PHYMODE_B, + PHYMODE_G, + PHYMODE_A, + PHYMODE_N, + PHYMODE_AC, + PHYMODE_AX +}; +static const u32 legacy_map_to_rate[12] = { //Kbps + 1000, 2000, 5500, 11000, 6000, 9000, 12000, 18000, 24000, 36000, 48000, 54000 +}; + +static const u32 he_mcs_map_to_rate[2][3][3][12] = { //NSS/GI/BW/MCS + { //1ss + { //0.8us + { 8600, 17200, 25800, 34400, 51600, 68800, 77400, 86000, 103200, 114700, 129000, 143400}, + {17200, 34400, 51600, 68800, 103200, 137600, 154900, 172100, 206500, 229400, 258100, 286800}, + {36000, 72100, 108100, 144100, 216200, 288200, 324300, 360300, 432400, 480400, 540400, 600400}, + }, + { //1.6us + { 8100, 16300, 24400, 32500, 48800, 65000, 73100, 81300, 97500, 108300, 121900, 135400}, //20M, + {16300, 32500, 48800, 65000, 97500, 130000, 146300, 162500, 195000, 216700, 243800, 270800}, //40M, + {34000, 68100, 102100, 136100, 204200, 272200, 306300, 340300, 408300, 453700, 510400, 567100}, //80M, + }, + { //3.2us + { 7300, 14600, 21900, 29300, 43900, 58500, 65800, 73100, 87800, 97500, 109700, 121900}, + {14600, 29300, 43900, 58500, 87800, 117000, 131600, 146300, 175500, 195000, 219400, 243800}, + {30600, 61300, 91900, 122500, 183800, 245000, 275600, 306300, 367500, 408300, 459400, 510400}, + } + }, + { //2ss + { //0.8us + { 17200, 34400, 51600, 68800, 103200, 137600, 154900, 172100, 206500, 229400, 258100, 286800}, //242tone + { 34400, 68800, 103200, 137600, 206500, 275300, 309700, 344100, 412900, 458800, 516200, 573500}, //484tone + { 72100, 144100, 216200, 288200, 432400, 576500, 648500, 720600, 864700, 960700, 1080900, 1201000}, //996tone + }, + { // 1.6us + { 16300, 32500, 48800, 65000, 97500, 130000, 146300, 162500, 195000, 216700, 243800, 270800}, + { 32500, 65000, 97500, 130000, 195000, 260000, 292500, 325000, 390000, 433300, 487500, 541700}, + { 68100, 136100, 204200, 272200, 408300, 544400, 612500, 680600, 816700, 907400, 1020800, 1134200}, + }, + { // 3.2us + { 14600, 29300, 43900, 58500, 87800, 117000, 131600, 146300, 175500, 195000, 219400, 243800}, + { 29300, 58500, 87800, 117000, 175500, 234000, 263300, 292500, 351000, 390000, 438800, 487500}, + { 61300, 122500, 183800, 245000, 367500, 490000, 551300, 612500, 735000, 816600, 918800, 1020800} + } + } +}; + + +static const u32 vht_mcs_map_to_rate[2][2][3][10] = { //NSS//GI/BW/MCS + { // 1ss + { //LONG GI + { 6500, 13000, 19500, 26000, 39000, 52000, 58500, 65000, 78000}, //20M + { 13500, 27000, 40500, 54000, 81000, 108000, 121500, 135000, 162000, 180000}, //40M + { 29300, 58500, 87800, 117000, 175500, 234000, 263300, 292500, 251000, 390000}, //80M + + }, + + { //SHORT GI + { 7200, 14400, 21700, 28900, 43300, 57800, 65000, 72200, 86700}, + { 15000, 30000, 45000, 60000, 90000, 120000, 135000, 150000, 180000, 200000}, + { 32500, 65000, 97500, 130000, 195000, 260000, 292500, 325000, 390000, 433300}, + + } + }, + { //2ss + { //LONG GI + { 13000, 26000, 39000, 52000, 78000, 104000, 117000, 130000, 156000}, //20M + { 27000, 54000, 81000, 108000, 162000, 216000, 243000, 270000, 324000, 360000}, //40M + { 58500, 117000, 175500, 234000, 351000, 468000, 526500, 585000, 702000, 780000}, //80M + }, + { //SHORT GI + { 14400, 28900, 43300, 57800, 86700, 115600, 130000, 144400, 173300}, //20M + { 30000, 60000, 90000, 120000, 180000, 240000, 270000, 300000, 360000, 400000}, //40M + { 65000, 130000, 195000, 260000, 390000, 520000, 585000, 650000, 780000, 866700}, //80M + } + } +}; + + +static const u32 ht_mcs_map_to_rate[2][2][3][8] = { //NSS//GI/BW/MCS + { // 1SS + { //LONG GI + {6500, 13000, 19500, 26000, 39000, 52000, 58500, 65000}, //20M + {13500, 27000, 40500, 54000, 81000, 108000, 121500, 135000}, //40M + }, + { //SHORT GI + {7200, 14400, 21700, 28900, 43300, 57800, 65000, 72200}, + {15000, 30000, 45000, 60000, 90000, 120000, 135000, 150000}, + } + }, + { // 2SS + { //LONG GI + { 13000, 26000, 39000, 52000, 78000, 104000, 117000, 130000}, //20M + { 27000, 54000, 81000, 108000, 162000, 216000, 243000, 270000}, //40M + }, + { //SHORT GI + { 14400, 28900, 43300, 57800, 86700, 115600, 130000, 144400}, //20M + { 30000, 60000, 90000, 120000, 180000, 240000, 270000, 300000}, //40M + } + + }, +}; + + +int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, + struct station_info *sinfo, u8 *phymode, u32 *tx_phyrate, u32 *rx_phyrate) +{ struct rwnx_sta_stats *stats = &sta->stats; struct rx_vector_1 *rx_vect1 = &stats->last_rx.rx_vect1; union rwnx_rate_ctrl_info *rate_info; struct mm_get_sta_info_cfm cfm; + u8 phymode_local = 0, mcs; + u32 tx_phyrate_local = 0; + u32 rx_phyrate_local = 0; rwnx_send_get_sta_info_req(vif->rwnx_hw, sta->sta_idx, &cfm); sinfo->tx_failed = cfm.txfailed; rate_info = (union rwnx_rate_ctrl_info *)&cfm.rate_info; - - AICWFDBG(LOGDEBUG, "%s ModTx(%d):%d TxIndex:%d ModRx(%d):%d RxHTIndex:%d RxVHTIndex:%d RxHEIndex:%d RSSI:%d \r\n", __func__, - rate_info->bwTx, - rate_info->formatModTx, - rate_info->mcsIndexTx, - rx_vect1->ch_bw, - rx_vect1->format_mod, - rx_vect1->ht.mcs, - rx_vect1->vht.mcs, - rx_vect1->he.mcs, - (s8)cfm.rssi); - + //printk("chan time=%d, busy=%d, tx succ=%d, tx_fail=%d\n", cfm.chan_busy_time, cfm.chan_time, cfm.ack_succ_stat, cfm.ack_fail_stat); + stats->last_chan_busy_time = cfm.chan_busy_time; + stats->last_chan_time = cfm.chan_time; + stats->tx_ack_succ_stat = cfm.ack_succ_stat; + stats->tx_ack_fail_stat = cfm.ack_fail_stat; + stats->last_chan_tx_busy_time = cfm.chan_tx_busy_time; switch (rate_info->formatModTx) { case FORMATMOD_NON_HT: + sinfo->txrate.flags = 0; + sinfo->txrate.legacy = tx_legrates_lut_rate[rate_info->mcsIndexTx]; + sinfo->txrate.nss = 1; + tx_phyrate_local = legacy_map_to_rate[rate_info->mcsIndexTx]; + if(sta->band == NL80211_BAND_2GHZ) + phymode_local = PHYMODE_B; + break; case FORMATMOD_NON_HT_DUP_OFDM: sinfo->txrate.flags = 0; sinfo->txrate.legacy = tx_legrates_lut_rate[rate_info->mcsIndexTx]; + sinfo->txrate.nss = 1; + tx_phyrate_local = legacy_map_to_rate[rate_info->mcsIndexTx]; + if(sta->band == NL80211_BAND_2GHZ) + phymode_local = PHYMODE_G; + else + phymode_local = PHYMODE_A; break; case FORMATMOD_HT_MF: case FORMATMOD_HT_GF: sinfo->txrate.flags = RATE_INFO_FLAGS_MCS; - sinfo->txrate.mcs = rate_info->mcsIndexTx; + sinfo->txrate.mcs = rate_info->mcsIndexTx & 0x7; + sinfo->txrate.nss = ((rate_info->mcsIndexTx >> 3) & 0x7) + 1; + phymode_local = PHYMODE_N; + + tx_phyrate_local = ht_mcs_map_to_rate[sinfo->txrate.nss - 1][rate_info->giAndPreTypeTx][rate_info->bwTx][sinfo->txrate.mcs]; break; case FORMATMOD_VHT: sinfo->txrate.flags = RATE_INFO_FLAGS_VHT_MCS; - sinfo->txrate.mcs = rate_info->mcsIndexTx; + sinfo->txrate.mcs = rate_info->mcsIndexTx & 0xF; + sinfo->txrate.nss = ((rate_info->mcsIndexTx >> 4) & 0x7) + 1; + tx_phyrate_local = vht_mcs_map_to_rate[sinfo->txrate.nss - 1][rate_info->giAndPreTypeTx][rate_info->bwTx][sinfo->txrate.mcs]; + //printk("phyrate: %d,%d,%d,%d\n", sinfo->txrate.nss - 1, rate_info->giAndPreTypeTx, rate_info->bwTx, sinfo->txrate.mcs); + phymode_local = PHYMODE_AC; break; #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) case FORMATMOD_HE_MU: case FORMATMOD_HE_SU: case FORMATMOD_HE_ER: sinfo->txrate.flags = RATE_INFO_FLAGS_HE_MCS; - sinfo->txrate.mcs = rate_info->mcsIndexTx; + sinfo->txrate.mcs = rate_info->mcsIndexTx & 0xF; + sinfo->txrate.nss = ((rate_info->mcsIndexTx >> 4) & 0x7) + 1; + tx_phyrate_local = he_mcs_map_to_rate[sinfo->txrate.nss - 1][rate_info->giAndPreTypeTx][rate_info->bwTx][sinfo->txrate.mcs]; + phymode_local = PHYMODE_AX; + //printk("phyrate: %d,%d,%d,%d\n", sinfo->txrate.nss - 1, rate_info->giAndPreTypeTx, rate_info->bwTx, sinfo->txrate.mcs); break; #else - //kernel not support he case FORMATMOD_HE_MU: case FORMATMOD_HE_SU: case FORMATMOD_HE_ER: sinfo->txrate.flags = RATE_INFO_FLAGS_VHT_MCS; - if(rate_info->mcsIndexTx > 9){ - sinfo->txrate.mcs = 9; - }else{ - sinfo->txrate.mcs = rate_info->mcsIndexTx; - } + sinfo->txrate.mcs = ((rate_info->mcsIndexTx & 0xF) > 9 ? 9 : (rate_info->mcsIndexTx & 0xF)); + sinfo->txrate.nss = ((rate_info->mcsIndexTx >> 4) & 0x7) + 1; + tx_phyrate_local = he_mcs_map_to_rate[sinfo->txrate.nss - 1][rate_info->giAndPreTypeTx][rate_info->bwTx][sinfo->txrate.mcs]; + phymode_local = PHYMODE_AX; break; #endif default: return -EINVAL; } + if(phymode) + *phymode = phymode_local; + if(tx_phyrate) { + *tx_phyrate = tx_phyrate_local; + AICWFDBG(LOGINFO, "phyrate=%d\n", *tx_phyrate); + } #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) switch (rate_info->bwTx) { case PHY_CHNL_BW_20: @@ -5081,18 +5530,16 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, } #endif - sinfo->txrate.nss = 1; + //sinfo->txrate.nss = 1; sinfo->filled |= (BIT(NL80211_STA_INFO_TX_BITRATE) | BIT(NL80211_STA_INFO_TX_FAILED)); - sinfo->inactive_time = jiffies_to_msecs(jiffies - vif->rwnx_hw->stats.last_tx); sinfo->rx_bytes = vif->net_stats.rx_bytes; sinfo->tx_bytes = vif->net_stats.tx_bytes; sinfo->tx_packets = vif->net_stats.tx_packets; sinfo->rx_packets = vif->net_stats.rx_packets; sinfo->signal = (s8)cfm.rssi; - sinfo->rxrate.nss = 1; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) switch (rx_vect1->ch_bw) { case PHY_CHNL_BW_20: sinfo->rxrate.bw = RATE_INFO_BW_20; @@ -5107,20 +5554,22 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, sinfo->rxrate.bw = RATE_INFO_BW_160; break; default: -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) sinfo->rxrate.bw = RATE_INFO_BW_HE_RU; -#else + #else sinfo->rxrate.bw = RATE_INFO_BW_20; -#endif + #endif break; } -#endif + #endif switch (rx_vect1->format_mod) { case FORMATMOD_NON_HT: case FORMATMOD_NON_HT_DUP_OFDM: sinfo->rxrate.flags = 0; - sinfo->rxrate.legacy = legrates_lut_rate[legrates_lut[rx_vect1->leg_rate]]; + sinfo->rxrate.legacy = legrates_lut[rx_vect1->leg_rate].rate; + sinfo->rxrate.nss = 1; + rx_phyrate_local = legrates_lut[rx_vect1->leg_rate].rate; break; case FORMATMOD_HT_MF: case FORMATMOD_HT_GF: @@ -5128,12 +5577,29 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, if (rx_vect1->ht.short_gi) sinfo->rxrate.flags |= RATE_INFO_FLAGS_SHORT_GI; sinfo->rxrate.mcs = rx_vect1->ht.mcs; + sinfo->rxrate.nss = rx_vect1->ht.num_extn_ss + 1; + + if(rx_vect1->ht.mcs == 32) {//mcs 32 + if(rx_vect1->vht.short_gi) + rx_phyrate_local = 6700; + else + rx_phyrate_local = 6000; + } else { + if(sinfo->rxrate.mcs >= 8) + mcs = sinfo->rxrate.mcs - 8; + else + mcs = sinfo->rxrate.mcs; + rx_phyrate_local = ht_mcs_map_to_rate[rx_vect1->ht.num_extn_ss][rx_vect1->ht.short_gi][rx_vect1->ch_bw][mcs]; + } break; case FORMATMOD_VHT: sinfo->rxrate.flags = RATE_INFO_FLAGS_VHT_MCS; if (rx_vect1->vht.short_gi) sinfo->rxrate.flags |= RATE_INFO_FLAGS_SHORT_GI; sinfo->rxrate.mcs = rx_vect1->vht.mcs; + sinfo->rxrate.nss = rx_vect1->vht.nss + 1; + rx_phyrate_local = vht_mcs_map_to_rate[rx_vect1->vht.nss][rx_vect1->vht.short_gi][rx_vect1->ch_bw][sinfo->rxrate.mcs]; + //printk("rx:%d,%d,%d,%d\n", rx_vect1->vht.nss, rx_vect1->vht.short_gi, rx_vect1->ch_bw, sinfo->rxrate.mcs); break; #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) case FORMATMOD_HE_MU: @@ -5143,7 +5609,11 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, sinfo->rxrate.flags = RATE_INFO_FLAGS_HE_MCS; sinfo->rxrate.mcs = rx_vect1->he.mcs; sinfo->rxrate.he_gi = rx_vect1->he.gi_type; + if (rx_vect1->he.gi_type) + sinfo->rxrate.flags |= RATE_INFO_FLAGS_SHORT_GI; sinfo->rxrate.he_dcm = rx_vect1->he.dcm; + sinfo->rxrate.nss = rx_vect1->he.nss + 1; + rx_phyrate_local = he_mcs_map_to_rate[rx_vect1->he.nss][rx_vect1->he.gi_type][rx_vect1->ch_bw][sinfo->rxrate.mcs]; break; #else //kernel not support he @@ -5151,17 +5621,18 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, case FORMATMOD_HE_SU: case FORMATMOD_HE_ER: sinfo->rxrate.flags = RATE_INFO_FLAGS_VHT_MCS; - if(rx_vect1->he.mcs > 9){ - sinfo->rxrate.mcs = 9; - }else{ - sinfo->rxrate.mcs = rx_vect1->he.mcs; - } + sinfo->rxrate.mcs = (rx_vect1->he.mcs > 9 ? 9 : rx_vect1->he.mcs); + sinfo->rxrate.nss = rx_vect1->he.nss + 1; break; #endif default: return -EINVAL; } + if(rx_phyrate) { + *rx_phyrate = rx_phyrate_local; + AICWFDBG(LOGINFO, "rx_phyrate=%d\n", *rx_phyrate); + } #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0) sinfo->filled |= (STATION_INFO_INACTIVE_TIME | @@ -5185,6 +5656,7 @@ static int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, } + /** * @get_station: get station information for the station identified by @mac */ @@ -5221,7 +5693,7 @@ static int rwnx_cfg80211_get_station(struct wiphy *wiphy, } if (sta) - return rwnx_fill_station_info(sta, vif, sinfo); + return rwnx_fill_station_info(sta, vif, sinfo, NULL, NULL, NULL); return -ENOENT; } @@ -5234,13 +5706,19 @@ static int rwnx_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *de int idx, u8 *mac, struct station_info *sinfo) { struct rwnx_vif *rwnx_vif = netdev_priv(dev); - struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); + //struct rwnx_hw *rwnx_hw = wiphy_priv(wiphy); struct rwnx_sta *sta_iter, *sta = NULL; - struct mesh_peer_info_cfm peer_info_cfm; + //struct mesh_peer_info_cfm peer_info_cfm; int i = 0; - if (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT) + AICWFDBG(LOGDEBUG, "%s enter \r\n", __func__); + +#if 0 + if (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_MESH_POINT){ + AICWFDBG(LOGERROR, "%s NOTSUPP \r\n", __func__); return -ENOTSUPP; + } +#endif list_for_each_entry(sta_iter, &rwnx_vif->ap.sta_list, list) { if (i < idx) { @@ -5255,6 +5733,10 @@ static int rwnx_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *de if (sta == NULL) return -ENOENT; + /* Copy peer MAC address */ + memcpy(mac, &sta->mac_addr, ETH_ALEN); + +#if 0 /* Forward the information to the UMAC */ if (rwnx_send_mesh_peer_info_req(rwnx_hw, rwnx_vif, sta->sta_idx, &peer_info_cfm)) @@ -5286,6 +5768,11 @@ static int rwnx_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *de BIT(NL80211_STA_INFO_PEER_PM) | BIT(NL80211_STA_INFO_NONPEER_PM)); #endif +#endif + + if (sta){ + rwnx_fill_station_info(sta, rwnx_vif, sinfo, NULL, NULL, NULL); + } return 0; } @@ -5792,14 +6279,21 @@ static void rwnx_reg_notifier(struct wiphy *wiphy, printk("%s Enter\r\n", __func__); // For now trust all initiator - rwnx_radar_set_domain(&rwnx_hw->radar, request->dfs_region); +#ifdef CONFIG_RADAR_OR_IR_DETECT + if(request->dfs_region != 0) + rwnx_radar_set_domain(&rwnx_hw->radar, request->dfs_region); +#else + rwnx_radar_set_domain(&rwnx_hw->radar, request->dfs_region); +#endif - if (rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8801 || - ((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC || - rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW || - rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81) && testmode == 0)){ - rwnx_send_me_chan_config_req(rwnx_hw); - } + if (rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8801 || + ((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && testmode == 0)){ + rwnx_send_me_chan_config_req(rwnx_hw, &request->alpha2[0]); + } } static void rwnx_enable_mesh(struct rwnx_hw *rwnx_hw) @@ -7846,7 +8340,7 @@ static int start_from_bootrom(struct rwnx_hw *rwnx_hw) */ -#ifdef CONFIG_GPIO_WAKEUP + #if defined CONFIG_GPIO_WAKEUP || defined CONFIG_WOWLAN static const struct wiphy_wowlan_support aic_wowlan_support = { .flags = WIPHY_WOWLAN_ANY | WIPHY_WOWLAN_MAGIC_PKT, }; @@ -7948,6 +8442,12 @@ int rwnx_ic_system_init(struct rwnx_hw *rwnx_hw){ #ifdef CONFIG_POWER_LIMIT rwnx_plat_powerlimit_load_8800d80(rwnx_hw); #endif + }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2){ + rwnx_plat_userconfig_load_8800d80x2(rwnx_hw); + #ifdef CONFIG_POWER_LIMIT + rwnx_plat_powerlimit_load_8800d80x2(rwnx_hw); + #endif } return 0; @@ -7983,6 +8483,10 @@ int rwnx_ic_rf_init(struct rwnx_hw *rwnx_hw){ }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81){ if ((ret = aicwf_set_rf_config_8800d80(rwnx_hw, &cfm))) return -1; + }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2){ + if ((ret = aicwf_set_rf_config_8800d80x2(rwnx_hw, &cfm))) + return -1; } #ifdef CONFIG_5M10M rwnx_send_vendor_hwconfig_req(rwnx_hw, hwconfig_id, param, NULL); @@ -7993,19 +8497,20 @@ void aic_ipc_setting(struct rwnx_vif *rwnx_vif){ struct rwnx_hw *rwnx_hw = rwnx_vif->rwnx_hw; uint32_t hw_edca = 1; uint32_t hw_cca = 3; - int32_t param[13]; + int32_t param[14]; int32_t cca[5]= {0x10, 0, 0, 0, 0}; - param[0] = 0; param[1] = 0x5e222; param[2] = 0; param[3] = 0; + param[0] = 0xFA522; param[1] = 0xFA522; param[2] = 0xFA522; param[3] = 0xFA522; param[4] = rwnx_vif->vif_index; - param[5] = 0x1e; param[6] = 0; param[7] = 0; param[8] =0;param[9] = 0x5;param[10] = 0x5;param[11] = 0x5;param[12] = 0; + param[5] = 0x1e; param[6] = 0; param[7] = 0; param[8] =0;param[9] = 0x2;param[10] = 0x2;param[11] = 0x7;param[12] = 0;;param[13] = 1; rwnx_send_vendor_hwconfig_req(rwnx_hw, hw_edca, param, NULL); rwnx_send_vendor_hwconfig_req(rwnx_hw, hw_cca, cca, NULL); } - +extern int get_adap_test(void); extern void *aicwf_prealloc_txq_alloc(size_t size); extern int aicwf_vendor_init(struct wiphy *wiphy); +extern char default_ccode[]; int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) { struct rwnx_hw *rwnx_hw; @@ -8017,6 +8522,7 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) u8 dflt_mac[ETH_ALEN] = { 0x88, 0x00, 0x33, 0x77, 0x10, 0x99}; struct mm_get_fw_version_cfm fw_version; u8_l mac_addr_efuse[ETH_ALEN]; + u8 mac_addr[ETH_ALEN]; #ifndef USE_5G struct aic_feature_t feature; #endif @@ -8026,7 +8532,6 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data) #endif int nx_remote_sta_max = NX_REMOTE_STA_MAX; - RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -8042,6 +8547,9 @@ if((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8801) || get_random_bytes(&dflt_mac[4], 2); #endif //#endif +#ifdef CONFIG_POWER_LIMIT + memcpy(country_code, default_ccode, 4); +#endif /* create a new wiphy for use with cfg80211 */ AICWFDBG(LOGINFO, "%s sizeof(struct rwnx_hw):%d \r\n", __func__, (int)sizeof(struct rwnx_hw)); wiphy = wiphy_new(&rwnx_cfg80211_ops, sizeof(struct rwnx_hw)); @@ -8073,6 +8581,8 @@ if((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8801) || rwnx_hw->is_sched_scan = false; #endif//CONFIG_SCHED_SCAN + aicwf_wakeup_lock_init(rwnx_hw); + rwnx_init_aic(rwnx_hw); /* set device pointer for wiphy */ set_wiphy_dev(wiphy, rwnx_hw->dev); @@ -8098,6 +8608,12 @@ if((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8801) || } #else memcpy(init_conf.mac_addr, dflt_mac, ETH_ALEN); + + if(wifi_mac_addr != 0){ + sscanf(wifi_mac_addr, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",&mac_addr[0],&mac_addr[1],&mac_addr[2],&mac_addr[3],&mac_addr[4],&mac_addr[5]); + if (mac_addr[0] | mac_addr[1] | mac_addr[2] | mac_addr[3]) + memcpy(init_conf.mac_addr, mac_addr, ETH_ALEN); + } #endif rwnx_hw->vif_started = 0; @@ -8128,6 +8644,8 @@ if((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8801) || rwnx_hw->roc_cookie_cnt = 1; INIT_LIST_HEAD(&rwnx_hw->vifs); + INIT_LIST_HEAD(&rwnx_hw->defrag_list); + spin_lock_init(&rwnx_hw->defrag_lock); mutex_init(&rwnx_hw->mutex); mutex_init(&rwnx_hw->dbgdump_elem.mutex); spin_lock_init(&rwnx_hw->tx_lock); @@ -8162,7 +8680,9 @@ if((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8801) || ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, 0, CO_BIT(5), rwnx_hw->fwlog_en, &set_start_cfm); } #else - if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81){ + if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2){ ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, 0, CO_BIT(5), rwnx_hw->fwlog_en, &set_start_cfm); } else { ret = rwnx_send_set_stack_start_req(rwnx_hw, 1, get_hardware_info(), feature.hwinfo, rwnx_hw->fwlog_en, &set_start_cfm); @@ -8199,7 +8719,7 @@ if((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8801) || #endif BIT(NL80211_IFTYPE_MONITOR); -#ifdef CONFIG_GPIO_WAKEUP +#if defined CONFIG_GPIO_WAKEUP || defined CONFIG_WOWLAN /* Set WoWLAN flags */ printk("%s Wowlan support\r\n", __func__); #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) @@ -8309,12 +8829,18 @@ if((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8801) || rwnx_enable_mesh(rwnx_hw); rwnx_radar_detection_init(&rwnx_hw->radar); +#ifdef CONFIG_RADAR_OR_IR_DETECT + rwnx_radar_set_domain(&rwnx_hw->radar, NL80211_DFS_FCC); +#endif + /* Set parameters to firmware */ if (rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8801 || ((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC || rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW || - rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81) && testmode == 0)) { + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && testmode == 0)) { rwnx_send_me_config_req(rwnx_hw); } @@ -8331,17 +8857,22 @@ if((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8801) || goto err_register_wiphy; } + if ((rwnx_hw->usbdev->vid == 0x2604 && rwnx_hw->usbdev->pid == 0x001f) + || (rwnx_hw->usbdev->vid == 0x2604 && rwnx_hw->usbdev->pid == 0x0020)) { + rwnx_send_pwm_init_req(rwnx_hw, 8, 1, 1, 400000, 400000, 100, 1, 1, 1); + rwnx_send_pwm_deinit_req(rwnx_hw, 8, 1, 1, 1); + } + /* Update regulatory (if needed) and set channel parameters to firmware (must be done after WiPHY registration) */ rwnx_custregd(rwnx_hw, wiphy); if (rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8801 || ((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC || rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW || - rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81) && testmode == 0)) { - rwnx_send_me_chan_config_req(rwnx_hw); - #ifdef CONFIG_COEX - rwnx_send_coex_req(rwnx_hw, 0, 1); - #endif + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && testmode == 0)) { + rwnx_send_me_chan_config_req(rwnx_hw, default_ccode); } *platform_data = rwnx_hw; @@ -8406,8 +8937,34 @@ if((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8801) || rwnx_hw->is_p2p_connected = 0; atomic_set(&rwnx_hw->p2p_alive_timer_count, 0); #endif + +#ifdef CONFIG_DYNAMIC_PWR + rwnx_hw->pwrloss_lvl = 0; + rwnx_hw->sta_rssi_idx = 0; + rwnx_hw->read_rssi_vif = vif; +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + init_timer(&rwnx_hw->pwrloss_timer); + rwnx_hw->pwrloss_timer.data = (ulong) vif; + rwnx_hw->pwrloss_timer.function = aicwf_pwrloss_timer; +#else + timer_setup(&rwnx_hw->pwrloss_timer, aicwf_pwrloss_timer, 0); +#endif + INIT_WORK(&rwnx_hw->pwrloss_work, aicwf_pwrloss_worker); + mod_timer(&rwnx_hw->pwrloss_timer, jiffies + msecs_to_jiffies(RSSI_GET_INTERVAL)); +#endif + #ifdef CONFIG_FOR_IPCAM - aic_ipc_setting(vif); + if(!testmode && !get_adap_test()) { + aic_ipc_setting(vif); + } +#endif +#ifdef CONFIG_WOWLAN + rwnx_send_set_pkt_filter_req(rwnx_hw, wowlan_param1); +#endif + +#ifdef CONFIG_BAND_STEERING + rwnx_hw->iface_idx = CONFIG_IFACE_NUMBER - 1; + aicwf_nl_init(); #endif return 0; @@ -8431,6 +8988,7 @@ err_lmac_reqs: //err_platon: //err_config: err_cache: + aicwf_wakeup_lock_deinit(rwnx_hw); wiphy_free(wiphy); err_out: return ret; @@ -8443,6 +9001,7 @@ err_out: void rwnx_cfg80211_deinit(struct rwnx_hw *rwnx_hw) { struct mm_set_stack_start_cfm set_start_cfm; + struct defrag_ctrl_info *defrag_ctrl = NULL; RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -8452,6 +9011,33 @@ void rwnx_cfg80211_deinit(struct rwnx_hw *rwnx_hw) rwnx_hw->scanning = 0; rwnx_hw->p2p_working = 0; +#ifdef CONFIG_BAND_STEERING + aicwf_nl_deinit(); +#endif + +#ifdef CONFIG_DYNAMIC_PWR + if(timer_pending(&rwnx_hw->pwrloss_timer)){ + del_timer_sync(&rwnx_hw->pwrloss_timer);} + cancel_work_sync(&rwnx_hw->pwrloss_work); +#endif + + if ((rwnx_hw->usbdev->vid == 0x2604 && rwnx_hw->usbdev->pid == 0x001f) + || (rwnx_hw->usbdev->vid == 0x2604 && rwnx_hw->usbdev->pid == 0x0020)) { + rwnx_set_pwm_tbl(rwnx_hw); + } + + spin_lock_bh(&rwnx_hw->defrag_lock); + if (!list_empty(&rwnx_hw->defrag_list)) { + list_for_each_entry(defrag_ctrl, &rwnx_hw->defrag_list, list) { + list_del_init(&defrag_ctrl->list); + if (timer_pending(&defrag_ctrl->defrag_timer)) + del_timer_sync(&defrag_ctrl->defrag_timer); + dev_kfree_skb(defrag_ctrl->skb); + kfree(defrag_ctrl); + } + } + spin_unlock_bh(&rwnx_hw->defrag_lock); + #ifdef CONFIG_DEBUG_FS rwnx_dbgfs_unregister(rwnx_hw); #endif @@ -8469,6 +9055,8 @@ void rwnx_cfg80211_deinit(struct rwnx_hw *rwnx_hw) #ifdef CONFIG_FILTER_TCP_ACK tcp_ack_deinit(rwnx_hw); #endif + aicwf_wakeup_lock_deinit(rwnx_hw); + if(rwnx_hw->wiphy){ wiphy_free(rwnx_hw->wiphy); } @@ -8555,7 +9143,8 @@ static void __exit rwnx_mod_exit(void) rwnx_free_cmd_array(); AICWFDBG(LOGINFO, "%s exit\r\n", __func__); } - +module_param(wifi_mac_addr,charp, 0); +MODULE_PARM_DESC(wifi_mac_addr, "Configures mac addr."); module_init(rwnx_mod_init); module_exit(rwnx_mod_exit); #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0) diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_main.h b/drivers/aic8800/aic8800_fdrv/rwnx_main.h index 7d06691..ad4e2fc 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_main.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_main.h @@ -15,6 +15,9 @@ int rwnx_cfg80211_init(struct rwnx_plat *rwnx_plat, void **platform_data); void rwnx_cfg80211_deinit(struct rwnx_hw *rwnx_hw); +int rwnx_fill_station_info(struct rwnx_sta *sta, struct rwnx_vif *vif, + struct station_info *sinfo, u8 *phymode, u32 *tx_phyrate, u32 *rx_phyrate); + extern int testmode; extern u8 chip_id; extern u8 chip_sub_id; @@ -23,4 +26,40 @@ extern u8 chip_mcu_id; #define CHIP_ID_H_MASK 0xC0 #define IS_CHIP_ID_H() ((chip_id & CHIP_ID_H_MASK) == CHIP_ID_H_MASK) +#define RSSI_GET_INTERVAL (10 * 1000) //time interval +#define RSSI_THD_0 (-20) //rssi 0 (dBm) +#define RSSI_THD_1 (-30) //rssi 1 (dBm) +#define RSSI_THD_2 (-75) //rssi 2 (dBm) + +#define PWR_LOSS_LVL0 (-10) //RSSI > RSSI_THD_0 +#define PWR_LOSS_LVL1 (-5 ) //RSSI_THD_1 < RSSI alpha2[0] == alpha2[0]) && (reg_regdb[idx]->alpha2[1] == alpha2[1])){ memcpy(country_code, alpha2, 2); @@ -718,6 +720,9 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) return; } + if(rwnx_hw->usbdev->chipid <= PRODUCT_ID_AIC8800D81) + nss = 1; + rwnx_hw->vht_cap_2G.vht_supported = true; if (rwnx_hw->mod_params->sgi80) rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_SHORT_GI_80; @@ -733,9 +738,11 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) rwnx_hw->vht_cap_2G.cap |= 3 << 13; #endif } - if (nss > 1) + if((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && + rwnx_hw->mod_params->stbc_on == true){ //if (nss > 1) rwnx_hw->vht_cap_2G.cap |= IEEE80211_VHT_CAP_TXSTBC; - + } // Update the AMSDU max RX size (not shifted as located at offset 0 of the VHT cap) rwnx_hw->vht_cap_2G.cap |= rwnx_hw->mod_params->amsdu_rx_max; @@ -782,7 +789,7 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) for (i = 0; i < nss; i++) { rwnx_hw->vht_cap_2G.vht_mcs.rx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); rwnx_hw->vht_cap_2G.vht_mcs.rx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; + //mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_9; } for (; i < 8; i++) { rwnx_hw->vht_cap_2G.vht_mcs.rx_mcs_map |= cpu_to_le16( @@ -794,8 +801,8 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) for (i = 0; i < nss; i++) { rwnx_hw->vht_cap_2G.vht_mcs.tx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); rwnx_hw->vht_cap_2G.vht_mcs.tx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_VHT_MCS_SUPPORT_0_8); + //mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, + // IEEE80211_VHT_MCS_SUPPORT_0_9); } for (; i < 8; i++) { rwnx_hw->vht_cap_2G.vht_mcs.tx_mcs_map |= cpu_to_le16( @@ -828,8 +835,11 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) rwnx_hw->vht_cap_5G.cap |= 3 << 13; #endif } - if (nss > 1) - rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_TXSTBC; + if((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && + rwnx_hw->mod_params->stbc_on == true){ //if (nss > 1) + rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_TXSTBC; + } // Update the AMSDU max RX size (not shifted as located at offset 0 of the VHT cap) rwnx_hw->vht_cap_5G.cap |= rwnx_hw->mod_params->amsdu_rx_max; @@ -877,7 +887,7 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) for (i = 0; i < nss; i++) { rwnx_hw->vht_cap_5G.vht_mcs.rx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); rwnx_hw->vht_cap_5G.vht_mcs.rx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; + //mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_9; } for (; i < 8; i++) { rwnx_hw->vht_cap_5G.vht_mcs.rx_mcs_map |= cpu_to_le16( @@ -889,8 +899,8 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) for (i = 0; i < nss; i++) { rwnx_hw->vht_cap_5G.vht_mcs.tx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); rwnx_hw->vht_cap_5G.vht_mcs.tx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_VHT_MCS_SUPPORT_0_8); + //mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, + // IEEE80211_VHT_MCS_SUPPORT_0_9); } for (; i < 8; i++) { rwnx_hw->vht_cap_5G.vht_mcs.tx_mcs_map |= cpu_to_le16( @@ -903,6 +913,8 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) #endif rwnx_hw->vht_cap_5G.cap &= ~IEEE80211_VHT_CAP_SHORT_GI_80; } + + rwnx_hw->vht_cap_5G.cap |= IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK; } #endif return; @@ -923,6 +935,10 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) return; } + if(rwnx_hw->usbdev->chipid <= PRODUCT_ID_AIC8800D81){ + nss = 1; + } + band_2GHz->vht_cap.vht_supported = true; if (rwnx_hw->mod_params->sgi80) band_2GHz->vht_cap.cap |= IEEE80211_VHT_CAP_SHORT_GI_80; @@ -938,9 +954,11 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) band_2GHz->vht_cap.cap |= 3 << 13; #endif } - if (nss > 1) + if((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && + rwnx_hw->mod_params->stbc_on == true){ //if (nss > 1) band_2GHz->vht_cap.cap |= IEEE80211_VHT_CAP_TXSTBC; - + } // Update the AMSDU max RX size (not shifted as located at offset 0 of the VHT cap) band_2GHz->vht_cap.cap |= rwnx_hw->mod_params->amsdu_rx_max; @@ -987,7 +1005,7 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) for (i = 0; i < nss; i++) { band_2GHz->vht_cap.vht_mcs.rx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); band_2GHz->vht_cap.vht_mcs.rx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; + //mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_9; } for (; i < 8; i++) { band_2GHz->vht_cap.vht_mcs.rx_mcs_map |= cpu_to_le16( @@ -999,8 +1017,8 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) for (i = 0; i < nss; i++) { band_2GHz->vht_cap.vht_mcs.tx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); band_2GHz->vht_cap.vht_mcs.tx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_VHT_MCS_SUPPORT_0_8); + //mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, + // IEEE80211_VHT_MCS_SUPPORT_0_9); } for (; i < 8; i++) { band_2GHz->vht_cap.vht_mcs.tx_mcs_map |= cpu_to_le16( @@ -1032,8 +1050,12 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) band_5GHz->vht_cap.cap |= 3 << 13; #endif } - if (nss > 1) - band_5GHz->vht_cap.cap |= IEEE80211_VHT_CAP_TXSTBC; + + if((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && + rwnx_hw->mod_params->stbc_on == true){ //if (nss > 1) + band_5GHz->vht_cap.cap |= IEEE80211_VHT_CAP_TXSTBC; + } // Update the AMSDU max RX size (not shifted as located at offset 0 of the VHT cap) band_5GHz->vht_cap.cap |= rwnx_hw->mod_params->amsdu_rx_max; @@ -1081,7 +1103,7 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) for (i = 0; i < nss; i++) { band_5GHz->vht_cap.vht_mcs.rx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); band_5GHz->vht_cap.vht_mcs.rx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; + //mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_9; } for (; i < 8; i++) { band_5GHz->vht_cap.vht_mcs.rx_mcs_map |= cpu_to_le16( @@ -1093,8 +1115,8 @@ static void rwnx_set_vht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) for (i = 0; i < nss; i++) { band_5GHz->vht_cap.vht_mcs.tx_mcs_map |= cpu_to_le16(mcs_map << (i*2)); band_5GHz->vht_cap.vht_mcs.tx_highest = MAX_VHT_RATE(mcs_map, nss, bw_max); - mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, - IEEE80211_VHT_MCS_SUPPORT_0_8); + //mcs_map = min_t(int, rwnx_hw->mod_params->mcs_map, + // IEEE80211_VHT_MCS_SUPPORT_0_9); } for (; i < 8; i++) { band_5GHz->vht_cap.vht_mcs.tx_mcs_map |= cpu_to_le16( @@ -1131,6 +1153,9 @@ static void rwnx_set_ht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) return; } + if(rwnx_hw->usbdev->chipid <= PRODUCT_ID_AIC8800D81) + nss = 1; + if (rwnx_hw->mod_params->stbc_on) band_2GHz->ht_cap.cap |= 1 << IEEE80211_HT_CAP_RX_STBC_SHIFT; if (rwnx_hw->mod_params->ldpc_on) @@ -1142,8 +1167,12 @@ static void rwnx_set_ht_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) } else { band_2GHz->ht_cap.mcs.rx_highest = cpu_to_le16(65 * nss); } - if (nss > 1) - band_2GHz->ht_cap.cap |= IEEE80211_HT_CAP_TX_STBC; + + if((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && + rwnx_hw->mod_params->stbc_on == true){ //if (nss > 1) + band_2GHz->ht_cap.cap |= IEEE80211_HT_CAP_TX_STBC; + } // Update the AMSDU max RX size if (rwnx_hw->mod_params->amsdu_rx_max) @@ -1182,6 +1211,9 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) int nss = rwnx_hw->mod_params->nss; int mcs_map; + if(rwnx_hw->usbdev->chipid <= PRODUCT_ID_AIC8800D81) + nss = 1; + he_cap = (struct ieee80211_sta_he_cap *) &rwnx_he_capa.he_cap; he_cap->has_he = true; he_cap->he_cap_elem.mac_cap_info[2] |= IEEE80211_HE_MAC_CAP2_ALL_ACK; @@ -1193,8 +1225,14 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) if (rwnx_hw->mod_params->use_80) { he_cap->ppe_thres[0] |= 0x20; he_cap->ppe_thres[2] |= 0xc0; - he_cap->ppe_thres[3] |= 0x07; + he_cap->ppe_thres[3] |= 0x01; } + if (nss == 2) { + he_cap->ppe_thres[0] |= 0x01; + he_cap->ppe_thres[3] |= 0x70; + he_cap->ppe_thres[4] |= 0x1c; + he_cap->ppe_thres[5] |= 0x07; + } //if (rwnx_hw->mod_params->use_80) { he_cap->he_cap_elem.phy_cap_info[0] |= @@ -1222,6 +1260,13 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) #endif if (rwnx_hw->mod_params->stbc_on) he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; + + if((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && + rwnx_hw->mod_params->stbc_on == true){ //if (nss > 1) + he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_TX_UNDER_80MHZ; + } + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | @@ -1253,7 +1298,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; #endif - he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; + //he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; he_cap->he_cap_elem.phy_cap_info[8] |= IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G; he_cap->he_cap_elem.phy_cap_info[9] |= IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB | IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_NON_COMP_SIGB; @@ -1265,7 +1310,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) he_cap->he_mcs_nss_supp.rx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); he_cap->he_mcs_nss_supp.rx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_80p80 |= unsup_for_ss; - mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; + //mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; } for (; i < 8; i++) { __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); @@ -1279,8 +1324,8 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) he_cap->he_mcs_nss_supp.tx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); he_cap->he_mcs_nss_supp.tx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_80p80 |= unsup_for_ss; - mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, - IEEE80211_HE_MCS_SUPPORT_0_7); + //mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, + // IEEE80211_HE_MCS_SUPPORT_0_7); } for (; i < 8; i++) { __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); @@ -1312,6 +1357,10 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) //#endif return; } + + if(rwnx_hw->usbdev->chipid <= PRODUCT_ID_AIC8800D81) + nss = 1; + he_cap = (struct ieee80211_sta_he_cap *) &band_2GHz->iftype_data->he_cap; he_cap->has_he = true; he_cap->he_cap_elem.mac_cap_info[2] |= IEEE80211_HE_MAC_CAP2_ALL_ACK; @@ -1323,8 +1372,14 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) if (rwnx_hw->mod_params->use_80) { he_cap->ppe_thres[0] |= 0x20; he_cap->ppe_thres[2] |= 0xc0; - he_cap->ppe_thres[3] |= 0x07; + he_cap->ppe_thres[3] |= 0x01; } + if (nss == 2) { + he_cap->ppe_thres[0] |= 0x01; + he_cap->ppe_thres[3] |= 0x70; + he_cap->ppe_thres[4] |= 0x1c; + he_cap->ppe_thres[5] |= 0x07; + } //if (rwnx_hw->mod_params->use_80) { he_cap->he_cap_elem.phy_cap_info[0] |= @@ -1352,6 +1407,13 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) #endif if (rwnx_hw->mod_params->stbc_on) he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; + + if((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && + rwnx_hw->mod_params->stbc_on == true){ //if (nss > 1) + he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_TX_UNDER_80MHZ; + } + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | @@ -1383,7 +1445,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; #endif - he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; + //he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; he_cap->he_cap_elem.phy_cap_info[8] |= IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G; #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) he_cap->he_cap_elem.phy_cap_info[9] |= IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB | @@ -1401,7 +1463,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) he_cap->he_mcs_nss_supp.rx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); he_cap->he_mcs_nss_supp.rx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_80p80 |= unsup_for_ss; - mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; + //mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; } for (; i < 8; i++) { __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); @@ -1415,8 +1477,8 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) he_cap->he_mcs_nss_supp.tx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); he_cap->he_mcs_nss_supp.tx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_80p80 |= unsup_for_ss; - mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, - IEEE80211_HE_MCS_SUPPORT_0_7); + //mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, + // IEEE80211_HE_MCS_SUPPORT_0_7); } for (; i < 8; i++) { __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); @@ -1438,8 +1500,14 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) if (rwnx_hw->mod_params->use_80) { he_cap->ppe_thres[0] |= 0x20; he_cap->ppe_thres[2] |= 0xc0; - he_cap->ppe_thres[3] |= 0x07; + he_cap->ppe_thres[3] |= 0x01; } + if (nss == 2) { + he_cap->ppe_thres[0] |= 0x01; + he_cap->ppe_thres[3] |= 0x70; + he_cap->ppe_thres[4] |= 0x1c; + he_cap->ppe_thres[5] |= 0x07; + } //if (rwnx_hw->mod_params->use_80) { he_cap->he_cap_elem.phy_cap_info[0] |= @@ -1466,6 +1534,13 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) #endif if (rwnx_hw->mod_params->stbc_on) he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; + + if((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2) && + rwnx_hw->mod_params->stbc_on == true){ //if (nss > 1) + he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_TX_UNDER_80MHZ; + } + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | @@ -1497,7 +1572,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT | IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO; #endif - he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; + //he_cap->he_cap_elem.phy_cap_info[7] |= IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI; he_cap->he_cap_elem.phy_cap_info[8] |= IEEE80211_HE_PHY_CAP8_20MHZ_IN_40MHZ_HE_PPDU_IN_2G; #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) he_cap->he_cap_elem.phy_cap_info[9] |= IEEE80211_HE_PHY_CAP9_RX_FULL_BW_SU_USING_MU_WITH_COMP_SIGB | @@ -1515,7 +1590,7 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) he_cap->he_mcs_nss_supp.rx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); he_cap->he_mcs_nss_supp.rx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.rx_mcs_80p80 |= unsup_for_ss; - mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; + //mcs_map = IEEE80211_HE_MCS_SUPPORT_0_7; } for (; i < 8; i++) { __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); @@ -1529,8 +1604,8 @@ static void rwnx_set_he_capa(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) he_cap->he_mcs_nss_supp.tx_mcs_80 |= cpu_to_le16(mcs_map << (i*2)); he_cap->he_mcs_nss_supp.tx_mcs_160 |= unsup_for_ss; he_cap->he_mcs_nss_supp.tx_mcs_80p80 |= unsup_for_ss; - mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, - IEEE80211_HE_MCS_SUPPORT_0_7); + //mcs_map = min_t(int, rwnx_hw->mod_params->he_mcs_map, + // IEEE80211_HE_MCS_SUPPORT_0_7); } for (; i < 8; i++) { __le16 unsup_for_ss = cpu_to_le16(IEEE80211_HE_MCS_NOT_SUPPORTED << (i*2)); @@ -1703,21 +1778,33 @@ int rwnx_handle_dynparams(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy) #endif //check he_mcs max - if(rwnx_hw->usbdev->chipid != PRODUCT_ID_AIC8800D81 && + if(rwnx_hw->usbdev->chipid != PRODUCT_ID_AIC8800D81 && + rwnx_hw->usbdev->chipid != PRODUCT_ID_AIC8800D81X2 && + rwnx_hw->usbdev->chipid != PRODUCT_ID_AIC8800D89X2 && rwnx_hw->mod_params->he_mcs_map > IEEE80211_HE_MCS_SUPPORT_0_9){ rwnx_hw->mod_params->he_mcs_map = IEEE80211_HE_MCS_SUPPORT_0_9; + } else { + rwnx_hw->mod_params->he_mcs_map = IEEE80211_HE_MCS_SUPPORT_0_11; } //check use_80 support if(rwnx_hw->usbdev->chipid != PRODUCT_ID_AIC8800D81 && + rwnx_hw->usbdev->chipid != PRODUCT_ID_AIC8800D81X2 && + rwnx_hw->usbdev->chipid != PRODUCT_ID_AIC8800D89X2 && rwnx_hw->mod_params->use_80 == true){ rwnx_hw->mod_params->use_80 = false; + } else { + rwnx_hw->mod_params->use_80 = true; } //check sgi80 support if(rwnx_hw->usbdev->chipid != PRODUCT_ID_AIC8800D81 && + rwnx_hw->usbdev->chipid != PRODUCT_ID_AIC8800D81X2 && + rwnx_hw->usbdev->chipid != PRODUCT_ID_AIC8800D89X2 && rwnx_hw->mod_params->sgi80 == true){ rwnx_hw->mod_params->sgi80 = false; + } else { + rwnx_hw->mod_params->sgi80 = true; } #ifdef CONFIG_5M10M rwnx_hw->mod_params->he_mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_7; diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.h b/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.h index 99d3883..64aa62d 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_mod_params.h @@ -66,5 +66,11 @@ int rwnx_handle_dynparams(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy); void rwnx_custregd(struct rwnx_hw *rwnx_hw, struct wiphy *wiphy); void rwnx_enable_wapi(struct rwnx_hw *rwnx_hw); void rwnx_enable_mfp(struct rwnx_hw *rwnx_hw); +struct ieee80211_regdomain *getRegdomainFromRwnxDB(struct wiphy *wiphy, + char *alpha2); + +struct ieee80211_regdomain *getRegdomainFromRwnxDBIndex(struct wiphy *wiphy, + int index); + #endif /* _RWNX_MOD_PARAM_H_ */ diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_msg_rx.c b/drivers/aic8800/aic8800_fdrv/rwnx_msg_rx.c index fb19bf4..3402681 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_msg_rx.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_msg_rx.c @@ -396,6 +396,40 @@ static inline int rwnx_rx_pktloss_notify_ind(struct rwnx_hw *rwnx_hw, return 0; } +static inline int rwnx_radar_detect_ind(struct rwnx_hw *rwnx_hw, + struct rwnx_cmd *cmd, + struct ipc_e2a_msg *msg) +{ + struct radar_pulse_array_desc *pulses = (struct radar_pulse_array_desc *)msg->param; + int i; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + //printk("%s\n", __func__); + + if(pulses->cnt == 0) { + printk("cnt error\n"); + return -1; + } + + if(rwnx_radar_detection_is_enable(&rwnx_hw->radar, pulses->idx)) { + for(i=0; icnt; i++) { + struct rwnx_radar_pulses *p = &rwnx_hw->radar.pulses[pulses->idx]; + + p->buffer[p->index] = pulses->pulse[i]; + p->index = (p->index + 1)%RWNX_RADAR_PULSE_MAX; + if(p->count < RWNX_RADAR_PULSE_MAX) + p->count++; + //printk("pulse=%x\n", pulses->pulse[i]); + } + + if(!work_pending(&rwnx_hw->radar.detection_work)) + schedule_work(&rwnx_hw->radar.detection_work); + } else + printk("not enable\n"); + + return 0; +} + static inline int rwnx_apm_staloss_ind(struct rwnx_hw *rwnx_hw, struct rwnx_cmd *cmd, struct ipc_e2a_msg *msg) @@ -681,6 +715,11 @@ static inline int rwnx_rx_scanu_result_ind(struct rwnx_hw *rwnx_hw, struct ieee80211_channel *chan; struct scanu_result_ind *ind = (struct scanu_result_ind *)msg->param; struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)ind->payload; + u64 tsf; + u8 *ie; + size_t ielen; + u16 capability, beacon_interval; + u16 len = ind->length; #if 0 const u8 *ie = mgmt->u.beacon.variable; @@ -699,20 +738,34 @@ static inline int rwnx_rx_scanu_result_ind(struct rwnx_hw *rwnx_hw, chan = ieee80211_get_channel(rwnx_hw->wiphy, ind->center_freq); if (chan != NULL) { - #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) - //ktime_t ts; +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) struct timespec ts; - get_monotonic_boottime(&ts); - //ts = ktime_get_real(); + get_monotonic_boottime(&ts); + tsf = (u64)ts.tv_sec * 1000000 + div_u64(ts.tv_nsec, 1000); mgmt->u.probe_resp.timestamp = ((u64)ts.tv_sec*1000000) + ts.tv_nsec/1000; - #else +#elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 6, 0) + struct timespec ts; + ts = ktime_to_timespec(ktime_get_boottime()); + tsf = (u64)ts.tv_sec * 1000000 + div_u64(ts.tv_nsec, 1000); + mgmt->u.probe_resp.timestamp = tsf; +#else struct timespec64 ts; - ktime_get_real_ts64(&ts); - mgmt->u.probe_resp.timestamp = ((u64)ts.tv_sec*1000000) + ts.tv_nsec/1000; - #endif - bss = cfg80211_inform_bss_frame(rwnx_hw->wiphy, chan, - (struct ieee80211_mgmt *)ind->payload, - ind->length, ind->rssi * 100, GFP_ATOMIC); + ts = ktime_to_timespec64(ktime_get_boottime()); + tsf = (u64)ts.tv_sec * 1000000 + div_u64(ts.tv_nsec, 1000); + mgmt->u.probe_resp.timestamp = tsf; +#endif + ie = mgmt->u.probe_resp.variable; + ielen = len - offsetof(struct ieee80211_mgmt, u.probe_resp.variable); + beacon_interval = le16_to_cpu(mgmt->u.probe_resp.beacon_int); + capability = le16_to_cpu(mgmt->u.probe_resp.capab_info); + /* framework use system bootup time */ + bss = cfg80211_inform_bss(rwnx_hw->wiphy, chan, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0)) + CFG80211_BSS_FTYPE_UNKNOWN, +#endif + mgmt->bssid, tsf, capability, beacon_interval, + ie, ielen, ind->rssi * 100, GFP_ATOMIC); + #if 0 //print scan result info start if(ie != NULL && bss != NULL){ @@ -737,7 +790,12 @@ static inline int rwnx_rx_scanu_result_ind(struct rwnx_hw *rwnx_hw, #ifdef CONFIG_USE_WIRELESS_EXT if(rwnx_hw->wext_scan){ - + list_for_each_entry(scan_re_wext, &rwnx_hw->wext_scanre_list, scanu_re_list) { + if (!memcmp(scan_re_wext->bss->bssid, bss->bssid, ETH_ALEN)) { + AICWFDBG(LOGDEBUG, "%s: BSSID already exists, no need to add again\r\n", __func__); + goto putbss; + } + } scan_re_wext = (struct scanu_result_wext *)vmalloc(sizeof(struct scanu_result_wext)); scan_re_wext->ind = (struct scanu_result_ind *)vmalloc(sizeof(struct scanu_result_ind)); scan_re_wext->payload = (u32_l *)vmalloc(sizeof(u32_l) * ind->length); @@ -757,7 +815,7 @@ static inline int rwnx_rx_scanu_result_ind(struct rwnx_hw *rwnx_hw, #endif } - +putbss: if (bss != NULL) #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0) cfg80211_put_bss(bss); @@ -840,6 +898,7 @@ static inline void cfg80211_chandef_create(struct cfg80211_chan_def *chandef, } } #endif + static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, struct rwnx_cmd *cmd, struct ipc_e2a_msg *msg) @@ -851,9 +910,9 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, const u8 *extcap_ie; const struct ieee_types_extcap *extcap; struct ieee80211_channel *chan; - struct cfg80211_bss *bss = NULL; + //struct cfg80211_bss *bss = NULL; struct wireless_dev *wdev = NULL; - int retry_counter = 10; + //int retry_counter = 10; RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -931,6 +990,13 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, AICWFDBG(LOGDEBUG, "sta idx %d fc error %d\n", sta->sta_idx, atomic_read(&rwnx_hw->sta_flowctrl[sta->sta_idx].tx_pending_cnt)); } +#ifdef CONFIG_RADAR_OR_IR_DETECT + if (chan->flags & IEEE80211_CHAN_RADAR) + rwnx_radar_detection_enable(&rwnx_hw->radar, + RWNX_RADAR_DETECT_REPORT, + RWNX_RADAR_RIU); +#endif + if (rwnx_vif->wep_enabled) rwnx_vif->wep_auth_err = false; @@ -977,9 +1043,9 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, rwnx_vif->wep_auth_err = true; AICWFDBG(LOGINFO, "con ind wep_auth_err %d\n", rwnx_vif->wep_auth_err); } - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); }else{ - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); } @@ -989,84 +1055,21 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, ind->status_code, (int)atomic_read(&rwnx_vif->drv_conn_state)); - do { - bss = cfg80211_get_bss(wdev->wiphy, NULL, rwnx_vif->sta.bssid, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2) - wdev->u.client.ssid, wdev->u.client.ssid_len, -#else - wdev->ssid, wdev->ssid_len, -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) - wdev->conn_bss_type, - IEEE80211_PRIVACY_ANY); -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) - IEEE80211_BSS_TYPE_ESS, - IEEE80211_PRIVACY_ANY); -#else - WLAN_CAPABILITY_ESS, - WLAN_CAPABILITY_PRIVACY); -#endif + if(ind->status_code == 0 && (int)atomic_read(&rwnx_vif->drv_conn_state) == RWNX_DRV_STATUS_DISCONNECTING){ + AICWFDBG(LOGINFO, "%s the disconnection has been requested, return it\r\n", __func__); + goto exit; + } - if (!bss) { - printk("%s bss is NULL \r\n", __func__); - - printk("%s bss ssid(%d):%s conn_bss_type:%d bss2 ssid(%d):%s conn_bss_type:%d\r\n", - __func__, - (int)rwnx_vif->sta.ssid_len, - rwnx_vif->sta.ssid, -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) - IEEE80211_BSS_TYPE_ESS, -#else - WLAN_CAPABILITY_ESS, -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2) - (int)wdev->u.client.ssid_len, - wdev->u.client.ssid, -#else - (int)wdev->ssid_len, - wdev->ssid, -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0) - wdev->conn_bss_type -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) - IEEE80211_BSS_TYPE_ESS -#else - WLAN_CAPABILITY_ESS -#endif - ); - - printk("%s rwnx_vif->sta.bssid %02x %02x %02x %02x %02x %02x \r\n", __func__, - rwnx_vif->sta.bssid[0], rwnx_vif->sta.bssid[1], rwnx_vif->sta.bssid[2], - rwnx_vif->sta.bssid[3], rwnx_vif->sta.bssid[4], rwnx_vif->sta.bssid[5]); - -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2) - wdev->u.client.ssid_len = (int)rwnx_vif->sta.ssid_len; - memcpy(wdev->u.client.ssid, rwnx_vif->sta.ssid, wdev->u.client.ssid_len); -#else - wdev->ssid_len = (int)rwnx_vif->sta.ssid_len; - memcpy(wdev->ssid, rwnx_vif->sta.ssid, wdev->ssid_len); -#endif - msleep(100); - retry_counter--; - if(retry_counter == 0){ - printk("%s bss recover fail \r\n", __func__); - break; - } - } - } while (!bss); - if (!ind->roamed) {//not roaming - if (rwnx_vif->is_conn == 0) { cfg80211_connect_result(dev, (const u8 *)ind->bssid.array, req_ie, ind->assoc_req_ie_len, rsp_ie, ind->assoc_rsp_ie_len, ind->status_code, GFP_ATOMIC); - } if (ind->status_code == 0) { - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTED); } else { - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); rwnx_external_auth_disable(rwnx_vif); } AICWFDBG(LOGINFO, "%s cfg80211_connect_result pass, rwnx_vif->drv_conn_state:%d\r\n", __func__, (int)atomic_read(&rwnx_vif->drv_conn_state)); @@ -1075,7 +1078,7 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, if(ind->status_code != 0){ AICWFDBG(LOGINFO, "%s roaming fail to notify disconnect \r\n", __func__); cfg80211_disconnected(dev, 0, NULL, 0,1, GFP_ATOMIC); - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); rwnx_external_auth_disable(rwnx_vif); }else{ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) @@ -1099,7 +1102,6 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, info.resp_ie_len = ind->assoc_rsp_ie_len; AICWFDBG(LOGINFO, "%s roaming success to notify roam \r\n", __func__); cfg80211_roamed(dev, &info, GFP_ATOMIC); - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTED); #else chan = ieee80211_get_channel(rwnx_hw->wiphy, ind->center_freq); AICWFDBG(LOGINFO, "%s roaming success to notify roam \r\n", __func__); @@ -1114,11 +1116,21 @@ static inline int rwnx_rx_sm_connect_ind(struct rwnx_hw *rwnx_hw, , ind->assoc_rsp_ie_len , GFP_ATOMIC); #endif /*LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)*/ - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTED); + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_CONNECTED); } + rwnx_vif->sta.is_roam = false; } - netif_tx_start_all_queues(dev); - netif_carrier_on(dev); + + if (ind->status_code == 0) { + netif_tx_start_all_queues(dev); + netif_carrier_on(dev); + } + +exit: + rwnx_vif->sta.is_roam = false; +#ifdef CONFIG_DYNAMIC_PWR + rwnx_hw->sta_rssi_idx = ind->ap_idx; +#endif return 0; } @@ -1167,7 +1179,8 @@ static inline int rwnx_rx_sm_disconnect_ind(struct rwnx_hw *rwnx_hw, struct aicwf_rx_priv *rx_priv; #endif - RWNX_DBG(RWNX_FN_ENTRY_STR); + //RWNX_DBG(RWNX_FN_ENTRY_STR); + AICWFDBG(LOGINFO, "%s reason code:%d \r\n", __func__, ind->reason_code); if((int)atomic_read(&rwnx_vif->drv_conn_state) == (int)RWNX_DRV_STATUS_DISCONNECTED){ AICWFDBG(LOGINFO, "%s, is already disconnected, drop disconnect ind", __func__); return 0; @@ -1187,6 +1200,10 @@ static inline int rwnx_rx_sm_disconnect_ind(struct rwnx_hw *rwnx_hw, AICWFDBG(LOGINFO, "%s roaming no rwnx_cfg80211_unlink_bss \r\n", __func__); } +#ifdef CONFIG_DEBUG_FS + rwnx_dbgfs_unregister_rc_stat(rwnx_hw, rwnx_vif->sta.ap); +#endif + #ifdef CONFIG_BR_SUPPORT struct rwnx_vif *vif = netdev_priv(dev); /* clear bridge database */ @@ -1245,7 +1262,10 @@ static inline int rwnx_rx_sm_disconnect_ind(struct rwnx_hw *rwnx_hw, rwnx_chanctx_unlink(rwnx_vif); //msleep(200); - atomic_set(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); + if (rwnx_vif->sta.is_roam == false) { + rwnx_set_conn_state(&rwnx_vif->drv_conn_state, (int)RWNX_DRV_STATUS_DISCONNECTED); + } + return 0; } @@ -1265,6 +1285,8 @@ static inline int rwnx_rx_sm_external_auth_required_ind(struct rwnx_hw *rwnx_hw, RWNX_DBG(RWNX_FN_ENTRY_STR); + memset((void*)¶ms, 0, sizeof(struct cfg80211_external_auth_params)); + params.action = NL80211_EXTERNAL_AUTH_START; memcpy(params.bssid, ind->bssid.array, ETH_ALEN); params.ssid.ssid_len = ind->ssid.length; @@ -1282,13 +1304,6 @@ static inline int rwnx_rx_sm_external_auth_required_ind(struct rwnx_hw *rwnx_hw, } AICWFDBG(LOGINFO, "%s wdev->conn_owner_nlportid:%d \r\n", __func__, (int)wdev->conn_owner_nlportid); - if (wdev->conn_owner_nlportid != 0) { - rwnx_vif->sta.conn_owner_nlportid = wdev->conn_owner_nlportid; - } else { - AICWFDBG(LOGINFO, "%s try to recover conn_owner_nlportid\r\n", __func__); - wdev->conn_owner_nlportid = rwnx_vif->sta.conn_owner_nlportid; - } - if ((ind->vif_idx > NX_VIRT_DEV_MAX) || !rwnx_vif->up || (RWNX_VIF_TYPE(rwnx_vif) != NL80211_IFTYPE_STATION) || (ret = cfg80211_external_auth_request(dev, ¶ms, GFP_ATOMIC))) { @@ -1579,6 +1594,7 @@ static msg_cb_fct mm_hdlrs[MSG_I(MM_MAX)] = { [MSG_I(MM_RSSI_STATUS_IND)] = rwnx_rx_rssi_status_ind, [MSG_I(MM_PKTLOSS_IND)] = rwnx_rx_pktloss_notify_ind, [MSG_I(MM_APM_STALOSS_IND)] = rwnx_apm_staloss_ind, + [MSG_I(MM_RADAR_DETECT_IND)] = rwnx_radar_detect_ind, }; static msg_cb_fct scan_hdlrs[MSG_I(SCANU_MAX)] = { diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c b/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c index 278e53f..91b2a14 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.c @@ -22,6 +22,10 @@ #include "aicwf_txrxif.h" #include "rwnx_strs.h" +#ifdef RF_WRITE_FILE +#include +#endif + const struct mac_addr mac_addr_bcst = {{0xFFFF, 0xFFFF, 0xFFFF}}; @@ -67,7 +71,7 @@ const int chnl2bw[] = { [PHY_CHNL_BW_80P80] = NL80211_CHAN_WIDTH_80P80, }; -#define RWNX_CMD_ARRAY_SIZE 20 +#define RWNX_CMD_ARRAY_SIZE 40 #define RWNX_CMD_HIGH_WATER_SIZE RWNX_CMD_ARRAY_SIZE/2 //#define RWNX_MSG_ARRAY_SIZE 20 @@ -131,7 +135,7 @@ static inline bool is_non_blocking_msg(int id) static inline u8_l get_chan_flags(uint32_t flags) { u8_l chan_flags = 0; -#ifdef RADAR_OR_IR_DETECT +#ifdef CONFIG_RADAR_OR_IR_DETECT #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) if (flags & IEEE80211_CHAN_PASSIVE_SCAN) #else @@ -386,7 +390,6 @@ static int rwnx_send_msg(struct rwnx_hw *rwnx_hw, const void *msg_params, struct rwnx_cmd *cmd; bool nonblock; int ret = 0; - u8_l empty = 0; //RWNX_DBG(RWNX_FN_ENTRY_STR); AICWFDBG(LOGDEBUG, "%s (%d)%s reqcfm:%d in_softirq:%d in_atomic:%d\r\n", @@ -444,7 +447,7 @@ static int rwnx_send_msg(struct rwnx_hw *rwnx_hw, const void *msg_params, cmd->flags = RWNX_CMD_FLAG_NONBLOCK; if (reqcfm) cmd->flags |= RWNX_CMD_FLAG_REQ_CFM; - +#if 0 if(cfm != NULL) { do { if(rwnx_hw->cmd_mgr->state == RWNX_CMD_MGR_STATE_CRASHED) @@ -468,7 +471,7 @@ static int rwnx_send_msg(struct rwnx_hw *rwnx_hw, const void *msg_params, } } while(!empty);//wait for cmd queue empty } - +#endif if(reqcfm) { cmd->flags &= ~RWNX_CMD_FLAG_WAIT_ACK; // we don't need ack any more ret = rwnx_hw->cmd_mgr->queue(rwnx_hw->cmd_mgr, cmd); @@ -1139,7 +1142,7 @@ int rwnx_send_rf_config_req(struct rwnx_hw *rwnx_hw, u8_l ofst, u8_l sel, u8_l * rf_config_req->table_num = 16; rf_config_req->deft_page = 0; - memcpy(rf_config_req->data, tbl, len); + memcpy(rf_config_req->data, tbl, len); /* Send the MM_SET_RF_CONFIG_REQ message to UMAC FW */ error = rwnx_send_msg(rwnx_hw, rf_config_req, 1, MM_SET_RF_CONFIG_CFM, NULL); @@ -1147,54 +1150,320 @@ int rwnx_send_rf_config_req(struct rwnx_hw *rwnx_hw, u8_l ofst, u8_l sel, u8_l * return (error); } +#ifdef RF_WRITE_FILE + +#define FW_PATH_MAX_LEN_RF 200 +extern char aic_fw_path[FW_PATH_MAX_LEN_RF]; + +int rwnx_rf_write_file(void *buf, int buf_len) +{ + int sum = 0, len = 0; + char *path = NULL; + struct file *fp = NULL; + loff_t pos = 0; +#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0) + mm_segment_t fs; +#endif + + AICWFDBG(LOGINFO, "%s\n", __func__); + path = __getname(); + if (!path) { + AICWFDBG(LOGINFO, "get path fail\n"); + return -1; + } + + len = snprintf(path, FW_PATH_MAX_LEN_RF, "%s/%s", aic_fw_path, FW_RF_CALIB_FILE); + AICWFDBG(LOGINFO, "%s: path=%s\n", __func__,path); + + fp = filp_open(path, O_RDWR | O_CREAT, 0644); + if (IS_ERR(fp)) { + AICWFDBG(LOGINFO, "fp open fial\n"); + __putname(path); + fp = NULL; + return -2; + } + +#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0) + fs = get_fs(); + set_fs(KERNEL_DS); +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0) + sum = kernel_write(fp, buf, buf_len, &pos); +#else LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) + sum = kernel_write(fp, (char *)buf, buf_len, pos); +#endif + +#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0) + set_fs(fs); +#endif + + __putname(path); + filp_close(fp, NULL); + fp = NULL; + + return 0; + +} + +int is_file_exist_rf(char* name) +{ + char *path = NULL; + struct file *fp = NULL; + int len; + + path = __getname(); + if (!path) { + AICWFDBG(LOGINFO, "%s getname fail\n", __func__); + return -1; + } + + len = snprintf(path, FW_PATH_MAX_LEN_RF, "%s/%s", aic_fw_path, name); + + fp = filp_open(path, O_RDONLY, 0); + if (IS_ERR(fp)) { + __putname(path); + fp = NULL; + return 0; + } else { + __putname(path); + filp_close(fp, NULL); + fp = NULL; + return 1; + } +} +#endif + extern void get_userconfig_xtal_cap(xtal_cap_conf_t *xtal_cap); int rwnx_send_rf_calib_req(struct rwnx_hw *rwnx_hw, struct mm_set_rf_calib_cfm *cfm) { - struct mm_set_rf_calib_req *rf_calib_req; - xtal_cap_conf_t xtal_cap = {0,}; + xtal_cap_conf_t xtal_cap = {0,}; int error; RWNX_DBG(RWNX_FN_ENTRY_STR); + AICWFDBG(LOGINFO, "%s in,chipid=%d\n", __func__,rwnx_hw->usbdev->chipid); + + if((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2) ||(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2)) + { + struct mm_set_rf_calib_req_v2 *rf_calib_req; + struct mm_set_rf_calib_cfm_v2 cfm2; - /* Build the MM_SET_RF_CALIB_REQ message */ - rf_calib_req = rwnx_msg_zalloc(MM_SET_RF_CALIB_REQ, TASK_MM, DRV_TASK_ID, - sizeof(struct mm_set_rf_calib_req)); + /* Build the MM_SET_RF_CALIB_REQ message */ + rf_calib_req = rwnx_msg_zalloc(MM_SET_RF_CALIB_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_rf_calib_req_v2)); - if (!rf_calib_req) { - return -ENOMEM; - } + if (!rf_calib_req) { + return -ENOMEM; + } - if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8801){ - rf_calib_req->cal_cfg_24g = 0xbf; - rf_calib_req->cal_cfg_5g = 0x3f; - }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC || - rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW){ - rf_calib_req->cal_cfg_24g = 0x0f8f; - rf_calib_req->cal_cfg_5g = 0; - }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81){ - rf_calib_req->cal_cfg_24g = 0x0f8f; - rf_calib_req->cal_cfg_5g = 0x0f0f; - } + if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8801){ + rf_calib_req->cal_cfg_24g = 0xbf; + rf_calib_req->cal_cfg_5g = 0x3f; + }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW){ + rf_calib_req->cal_cfg_24g = 0x0f8f; + rf_calib_req->cal_cfg_5g = 0; + }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81){ + rf_calib_req->cal_cfg_24g = 0x0f8f; + rf_calib_req->cal_cfg_5g = 0x0f0f; + }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2){ + rf_calib_req->cal_cfg_24g = 0x0f8f; + rf_calib_req->cal_cfg_5g = 0x0f0f; + } - rf_calib_req->param_alpha = 0x0c34c008; - rf_calib_req->bt_calib_en = 0; - rf_calib_req->bt_calib_param = 0x264203; + rf_calib_req->param_alpha = 0x0c34c008; + rf_calib_req->bt_calib_en = 0; + rf_calib_req->bt_calib_param = 0x264203; - get_userconfig_xtal_cap(&xtal_cap); + get_userconfig_xtal_cap(&xtal_cap); - if (xtal_cap.enable) { - AICWFDBG(LOGINFO, "user xtal cap: %d, cap_fine: %d\n", xtal_cap.xtal_cap, xtal_cap.xtal_cap_fine); - rf_calib_req->xtal_cap = xtal_cap.xtal_cap; - rf_calib_req->xtal_cap_fine = xtal_cap.xtal_cap_fine; - } else { - rf_calib_req->xtal_cap = 0; - rf_calib_req->xtal_cap_fine = 0; + if (xtal_cap.enable) { + AICWFDBG(LOGINFO, "user xtal cap: %d, cap_fine: %d\n", xtal_cap.xtal_cap, xtal_cap.xtal_cap_fine); + rf_calib_req->xtal_cap = xtal_cap.xtal_cap; + rf_calib_req->xtal_cap_fine = xtal_cap.xtal_cap_fine; + } else { + rf_calib_req->xtal_cap = 0; + rf_calib_req->xtal_cap_fine = 0; + } + +#ifdef RF_WRITE_FILE + if(is_file_exist_rf(FW_RF_CALIB_FILE) == 1) + { + void *buffer = NULL; + char *path = NULL; + struct file *fp = NULL; + int size = 0, len = 0;// i = 0; + ssize_t rdlen = 0; + unsigned char decrypt[16]; + //u32 **fw_buf =NULL; + //struct kstat stat; + + + AICWFDBG(LOGINFO, "%s: file exist in\n", __func__); + path = __getname(); + if (!path) + { + return -1; + } + len = snprintf(path, FW_PATH_MAX_LEN_RF, "%s/%s", aic_fw_path, FW_RF_CALIB_FILE); + AICWFDBG(LOGINFO, "%s: path=%s\n", __func__,path); + + if (len >= FW_PATH_MAX_LEN_RF) + { + AICWFDBG(LOGERROR, "%s: %s file's path too long\n", __func__, FW_RF_CALIB_FILE); + __putname(path); + return -2; + } + + fp = filp_open(path, O_RDONLY, 0); + if (IS_ERR_OR_NULL(fp)) + { + AICWFDBG(LOGERROR, "%s: %s file failed to open\n", __func__, FW_RF_CALIB_FILE); + __putname(path); + fp = NULL; + return -3; + } + + //vfs_stat(path, &stat); + size =(int)fp->f_inode->i_size; + AICWFDBG(LOGINFO, "%s: file is %d bytes\n", __func__,size); + buffer = vmalloc(size); + if (!buffer) + { + __putname(path); + filp_close(fp, NULL); + fp = NULL; + return -4; + } + + #if LINUX_VERSION_CODE > KERNEL_VERSION(4, 13, 16) + rdlen = kernel_read(fp, buffer, size, &fp->f_pos); + #else + rdlen = kernel_read(fp, fp->f_pos, buffer, size); + #endif + //rwnx_data_dump("cal_res.res_data",buffer,size); + + if (size != rdlen) + { + AICWFDBG(LOGERROR, "%s: %s file rdlen invalid %d\n", __func__, FW_RF_CALIB_FILE, (int)rdlen); + __putname(path); + filp_close(fp, NULL); + fp = NULL; + vfree(buffer); + buffer = NULL; + return -5; + } + + if (rdlen > 0) + { + fp->f_pos += rdlen; + } + + __putname(path); + filp_close(fp, NULL); + fp = NULL; + + if(rdlen == sizeof(rf_calib_req->cal_res.res_data)) + { + memcpy((u8 *)rf_calib_req->cal_res.res_data,buffer,rdlen); + //SET Demo + rf_calib_req->cal_res.magic_num = DRIVER_SET_WIFI_CALRES_MAGIC_NUM; + rf_calib_req->cal_res.info_flag = 0x4F; + rf_calib_req->cal_res.calib_flag = 0x00; + // before req, write testmode rf calib reg->cal res.res_data[], data read from file + } + else + { + AICWFDBG(LOGERROR, "%s: %s file rdlen %d is not equal rf_calib_req \n", __func__, FW_RF_CALIB_FILE, (int)rdlen); + vfree(buffer); + return -6; + } + vfree(buffer); + } + else +#endif + { + AICWFDBG(LOGINFO, "%s: file not exist in\n", __func__); + //GET Demo + rf_calib_req->cal_res.magic_num = DRIVER_GET_WIFI_CALRES_MAGIC_NUM; + rf_calib_req->cal_res.info_flag = 0x00; + rf_calib_req->cal_res.calib_flag = 0x4F; + // after req, read mm_set_rf_calib_cfm.cal_res.res data[] + // save the data into file + } + /* Send the MM_SET_RF_CALIB_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, rf_calib_req, 1, MM_SET_RF_CALIB_CFM, &cfm2); + +#ifdef RF_WRITE_FILE + if(is_file_exist_rf(FW_RF_CALIB_FILE) != 1) + { + void *buffer = NULL; + int buf_len = sizeof(cfm2.cal_res.res_data); + + AICWFDBG(LOGINFO, "%s: file not exist in2,buf_len=%d\n", __func__,buf_len); + buffer = vmalloc(buf_len); + if (!buffer) + { + return -4; + } + memcpy(buffer,cfm2.cal_res.res_data,buf_len); + //rwnx_data_dump("cal_res.res_data",buffer,buf_len); + rwnx_rf_write_file(buffer,buf_len); + vfree(buffer); + } +#endif + cfm->rxgain_24g_addr = cfm2.rxgain_24g_addr; + cfm->rxgain_5g_addr = cfm2.rxgain_5g_addr; + cfm->txgain_24g_addr = cfm2.txgain_24g_addr; + cfm->txgain_5g_addr = cfm2.txgain_5g_addr; } + else + { + struct mm_set_rf_calib_req *rf_calib_req; + /* Build the MM_SET_RF_CALIB_REQ message */ + rf_calib_req = rwnx_msg_zalloc(MM_SET_RF_CALIB_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_rf_calib_req)); - /* Send the MM_SET_RF_CALIB_REQ message to UMAC FW */ - error = rwnx_send_msg(rwnx_hw, rf_calib_req, 1, MM_SET_RF_CALIB_CFM, cfm); + if (!rf_calib_req) { + return -ENOMEM; + } + if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8801){ + rf_calib_req->cal_cfg_24g = 0xbf; + rf_calib_req->cal_cfg_5g = 0x3f; + }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW){ + rf_calib_req->cal_cfg_24g = 0x0f8f; + rf_calib_req->cal_cfg_5g = 0; + }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81){ + rf_calib_req->cal_cfg_24g = 0x0f8f; + rf_calib_req->cal_cfg_5g = 0x0f0f; + }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2){ + rf_calib_req->cal_cfg_24g = 0x0f8f; + rf_calib_req->cal_cfg_5g = 0x0f0f; + } + + rf_calib_req->param_alpha = 0x0c34c008; + rf_calib_req->bt_calib_en = 0; + rf_calib_req->bt_calib_param = 0x264203; + + get_userconfig_xtal_cap(&xtal_cap); + + if (xtal_cap.enable) { + AICWFDBG(LOGINFO, "user xtal cap: %d, cap_fine: %d\n", xtal_cap.xtal_cap, xtal_cap.xtal_cap_fine); + rf_calib_req->xtal_cap = xtal_cap.xtal_cap; + rf_calib_req->xtal_cap_fine = xtal_cap.xtal_cap_fine; + } else { + rf_calib_req->xtal_cap = 0; + rf_calib_req->xtal_cap_fine = 0; + } + /* Send the MM_SET_RF_CALIB_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, rf_calib_req, 1, MM_SET_RF_CALIB_CFM, cfm); + } + return (error); }; @@ -1366,8 +1635,9 @@ int rwnx_send_vendor_hwconfig_req(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, req1->rc_retry_cnt[1] = param[10]; req1->rc_retry_cnt[2] = param[11]; req1->ccademod_th = param[12]; - printk("set_channel_access_req:edca[]= %x %x %x %x\nvif_idx: %x, retry_cnt: %x, rts_en: %x, long_nav_en: %x, cfe_en: %x, rc_retry_cnt: %x:%x:%x, ccademod_th = %d\n", - req1->edca[0], req1->edca[1], req1->edca[2], req1->edca[3], req1->vif_idx, req1->retry_cnt, req1->rts_en, req1->long_nav_en, req1->cfe_en, req1->rc_retry_cnt[0],req1->rc_retry_cnt[1], req1->rc_retry_cnt[2], req1->ccademod_th); + req1->remove_1m2m = param[13]; + printk("set_channel_access_req:edca[]= %x %x %x %x\nvif_idx: %x, retry_cnt: %x, rts_en: %x, long_nav_en: %x, cfe_en: %x, rc_retry_cnt: %x:%x:%x, ccademod_th = %d remove_1m2m = %d\n", + req1->edca[0], req1->edca[1], req1->edca[2], req1->edca[3], req1->vif_idx, req1->retry_cnt, req1->rts_en, req1->long_nav_en, req1->cfe_en, req1->rc_retry_cnt[0],req1->rc_retry_cnt[1], req1->rc_retry_cnt[2], req1->ccademod_th, req1->remove_1m2m); /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ error = rwnx_send_msg(rwnx_hw, req1, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); break; @@ -1559,6 +1829,391 @@ int rwnx_send_vendor_swconfig_req(struct rwnx_hw *rwnx_hw, uint32_t swconfig_id, return error; } +int rwnx_send_vendor_hwconfig_req_x2(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, int32_t *param, int32_t *param_out) +{ + struct mm_set_acs_txop_req *req0; + struct mm_set_channel_access_req *req1; + struct mm_set_mac_timescale_req *req2; + struct mm_set_cca_threshold_req *req3; + struct mm_set_bwmode_req *req4; + + int error = 0; + + switch (hwconfig_id) + { + case ACS_TXOP_REQ_X2: + /* Build the ACS_TXOP_REQ message */ + req0= rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_acs_txop_req) ); + if (!req0) + return -ENOMEM; + req0->hwconfig_id = hwconfig_id; + req0->txop_be = param[0]; + req0->txop_bk = param[1]; + req0->txop_vi = param[2]; + req0->txop_vo = param[3]; + AICWFDBG(LOGINFO, "set_acs_txop_req: be: %x,bk: %x,vi: %x,vo: %x\n", + req0->txop_be, req0->txop_bk, req0->txop_vi, req0->txop_vo); + /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req0, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + break; + + case CHANNEL_ACCESS_REQ_X2: + /* Build the CHANNEL_ACCESS_REQ message */ + req1 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_channel_access_req)); + if (!req1) + return -ENOMEM; + req1->hwconfig_id = hwconfig_id; + req1->edca[0] = param[0]; + req1->edca[1] = param[1]; + req1->edca[2] = param[2]; + req1->edca[3] = param[3]; + req1->vif_idx = param[4]; + req1->retry_cnt = param[5]; + req1->rts_en = param[6]; + req1->long_nav_en = param[7]; + req1->cfe_en = param[8]; + req1->rc_retry_cnt[0] = param[9]; + req1->rc_retry_cnt[1] = param[10]; + req1->rc_retry_cnt[2] = param[11]; + req1->ccademod_th = param[12]; + req1->remove_1m2m = param[13]; + AICWFDBG(LOGINFO, "set_channel_access_req:edca[]= %x %x %x %x\nvif_idx: %x, retry_cnt: %x, rts_en: %x, long_nav_en: %x, cfe_en: %x, rc_retry_cnt: %x:%x:%x, ccademod_th = %d remove_1m2m = %x\n", + req1->edca[0], req1->edca[1], req1->edca[2], req1->edca[3], req1->vif_idx, req1->retry_cnt, req1->rts_en, req1->long_nav_en, req1->cfe_en, req1->rc_retry_cnt[0],req1->rc_retry_cnt[1], req1->rc_retry_cnt[2], req1->ccademod_th, req1->remove_1m2m); + /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req1, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + break; + + case MAC_TIMESCALE_REQ_X2: + /* Build the MAC_TIMESCALE_REQ message */ + req2 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_mac_timescale_req)); + if (!req2) + return -ENOMEM; + req2->hwconfig_id = hwconfig_id; + req2->sifsA_time = param[0]; + req2->sifsB_time = param[1]; + req2->slot_time = param[2]; + req2->rx_startdelay_ofdm = param[3]; + req2->rx_startdelay_long = param[4]; + req2->rx_startdelay_short = param[5]; + AICWFDBG(LOGINFO, "set_mac_timescale_req:sifsA_time: %x, sifsB_time: %x, slot_time: %x, rx_startdelay ofdm:%x long %x short %x\n", + req2->sifsA_time, req2->sifsB_time, req2->slot_time, req2->rx_startdelay_ofdm, req2->rx_startdelay_long, req2->rx_startdelay_short); + /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req2, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + break; + + case CCA_THRESHOLD_REQ_X2: + /* Build the CCA_THRESHOLD_REQ message */ + req3 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_cca_threshold_req)); + if (!req3) + return -ENOMEM; + req3->hwconfig_id = hwconfig_id; + req3->auto_cca_en = param[0]; + req3->cca20p_rise_th = param[1]; + req3->cca20s_rise_th = param[2]; + req3->cca20p_fall_th = param[3]; + req3->cca20s_fall_th = param[4]; + AICWFDBG(LOGINFO, "cca_threshold_req: auto_cca_en:%d\ncca20p_rise_th = %d\ncca20s_rise_th = %d\ncca20p_fall_th = %d\ncca20s_fall_th = %d\n", + req3->auto_cca_en, req3->cca20p_rise_th, req3->cca20s_rise_th, req3->cca20p_fall_th, req3->cca20s_fall_th); + /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req3, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + break; + + case BWMODE_REQ_X2: + /* Build the SET_BWMODE_REQ message */ + req4 = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_bwmode_req)); + if (!req4) + return -ENOMEM; + req4->hwconfig_id = hwconfig_id; + req4->bwmode = param[0]; + AICWFDBG(LOGINFO, "bwmode :%d\n", req4->bwmode); + /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req4, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + break; + case CHIP_TEMP_GET_REQ_X2: + //if ((rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DC) || + // (rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800DW)) + { + struct mm_get_chip_temp_req *req; + struct mm_set_vendor_hwconfig_cfm cfm = {0,}; + /* Build the CHIP_TEMP_GET_REQ message */ + req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_get_chip_temp_req)); + if (!req) + return -ENOMEM; + req->hwconfig_id = hwconfig_id; + /* Send the MM_SET_VENDOR_HWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_HWCONFIG_CFM, &cfm); + if (!error) { + if (param_out) { + param_out[0] = (int32_t)cfm.chip_temp_cfm.degree; + } + AICWFDBG(LOGINFO, "get_chip_temp degree=%d\n", cfm.chip_temp_cfm.degree); + } else { + AICWFDBG(LOGERROR, "get_chip_temp err=%d\n", error); + } + } + break; + + case STBC_MCS_SET_REQ_X2: + { + struct mm_get_stbc_msc_req *req; + + req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_get_stbc_msc_req)); + if (!req) + return -ENOMEM; + req->hwconfig_id = hwconfig_id; + req->enable = (u8)param[0]; + req->mcs_thresh = (u8)param[1]; + + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + if (error) { + AICWFDBG(LOGERROR, "set_stbc_err =%d\n", error); + } + } + break; + case MAX_AGG_TX_CNT_REQ_X2: + { + struct mm_set_max_tx_agg_cnt_req *req; + + if((u8)param[0] > 1 || (u8)param[1] > 11) { + AICWFDBG(LOGERROR, "hwvendor max_agg_cnt param error:%x,%x\n", (u8)param[0], (u8)param[1]); + break; + } + req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_max_tx_agg_cnt_req)); + if (!req) + return -ENOMEM; + + req->hwconfig_id = hwconfig_id; + req->enale = (u8)param[0]; + req->mcs_thresh = (u8)param[1]; + req->max_agg_cnt[0] = (u8)param[2]; + req->max_agg_cnt[1] = (u8)param[3]; + req->max_agg_cnt[2] = (u8)param[4]; + req->max_agg_cnt[3] = (u8)param[5]; + + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + if (error) { + AICWFDBG(LOGERROR, "set agg max cnt err=%d\n", error); + } + AICWFDBG(LOGINFO, "hwvendor max_aggr_cnt:en=%d, mcs_thresh=%d, 0x%x, 0x%x, 0x%x, 0x%x\n", req->enale, req->mcs_thresh, req->max_agg_cnt[0], + req->max_agg_cnt[1], req->max_agg_cnt[2], req->max_agg_cnt[3]); + } + break; + case MAX_BW_MCS_THRESH_SET_REQ_X2: + { + struct mm_set_max_bw_mcs_thresh_req *req; + if((u8)param[0] > 1 || (u8)param[1] > 11) { + AICWFDBG(LOGERROR, "hwvendor max_bw_mcs param error:%x,%x\n", (u8)param[0], (u8)param[1]); + break; + } + req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_max_bw_mcs_thresh_req)); + if (!req) + return -ENOMEM; + + req->hwconfig_id = hwconfig_id; + req->enale = (u8)param[0]; + req->max_bw_mcs_thresh = (u8)param[1]; + + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + if (error) { + AICWFDBG(LOGERROR, "set max_bw_mcs err=%d\n", error); + } + AICWFDBG(LOGINFO, "set max_bw_mcs: enable=%d, thresh=%d\n", (u8)param[0], (u8)param[1]); + } + break; + case DCM_FORCE_EN_REQ_X2: + { + struct mm_set_dcm_force_en_req *req; + req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_dcm_force_en_req)); + if (!req) + return -ENOMEM; + + req->hwconfig_id = hwconfig_id; + req->enable = (u8)param[0]; + + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + if (error) { + AICWFDBG(LOGERROR, "set dcm_force_en err=%d\n", error); + } + AICWFDBG(LOGINFO, "set dcm_force_en: enable=%d\n", (u8)param[0]); + } + break; + case AUTO_CCA_EN_REQ_X2: + { + struct mm_set_auto_cca_en_req *req; + + if((u8)param[0] > 1 || (int8_t)param[1] > 0 || (u8)param[2] > 1 || (int8_t)param[3]>0) { + AICWFDBG(LOGERROR, "hwvendor auto_cca_en param error:%x,%d,%x,%d\n", (u8)param[0], (int8_t)param[1], + (u8)param[2], (int8_t)param[3]); + break; + } + req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_auto_cca_en_req)); + if (!req) + return -ENOMEM; + + req->hwconfig_id = hwconfig_id; + req->enable = (u8)param[0]; + req->max_cca_thresh = (int8_t)param[1]; + req->default_cca_set = (u8)param[2]; + req->default_cca_thresh = (int8_t)param[3]; + + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + if (error) { + AICWFDBG(LOGERROR, "set auto cca en err=%d\n", error); + } + AICWFDBG(LOGINFO, "set auto cca en: enable=%d, thresh=%d, default_set=%d, default_thresh=%d\n", + (u8)param[0], (int8_t)param[1], (u8)param[2], (int8_t)param[3]); + } + break; + case NSS_1T2R_REQ_X2: + { + struct mm_set_nss_1t2r_req *req; + req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_nss_1t2r_req)); + if (!req) + return -ENOMEM; + + req->hwconfig_id = hwconfig_id; + req->enable = (u8)param[0]; + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + if (error) { + AICWFDBG(LOGERROR, "set nss 1t2r err=%d\n", error); + } + AICWFDBG(LOGINFO, "set nss 1t2r: enable=%d\n", (u8)param[0]); + } + break; + case ON_AIR_DUTY_CYCLE_REQ_X2: + { + struct mm_set_on_air_duty_cycle_req *req; + if((u8)param[1]<1 || (u8)param[1] > 100) { + AICWFDBG(LOGERROR, "hwvendor on_air_duty_cycle param error:%x,%x\n", (u8)param[0], (u8)param[1]); + break; + } + req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_on_air_duty_cycle_req)); + if (!req) + return -ENOMEM; + + req->hwconfig_id = hwconfig_id; + req->enable = (u8)param[0]; + req->percent = (u8)param[1]; + + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + if (error) { + AICWFDBG(LOGERROR, "set on_air duty cycle err=%d\n", error); + } + AICWFDBG(LOGINFO, "set on_air duty cycle: enable=%d, percent=%d\n", (u8)param[0], (u8)param[1]); + } + break; + default: + return -ENOMEM; + } + return error; +} + +int rwnx_send_vendor_swconfig_req_x2(struct rwnx_hw *rwnx_hw, uint32_t swconfig_id, int32_t *param_in, int32_t *param_out) +{ + struct mm_set_vendor_swconfig_req *req; + struct mm_set_vendor_swconfig_cfm cfm = {0,}; + int error; + + req = rwnx_msg_zalloc(MM_SET_VENDOR_SWCONFIG_REQ, TASK_MM, DRV_TASK_ID, sizeof(struct mm_set_vendor_swconfig_req)); + if (!req) { + return -ENOMEM; + } + req->swconfig_id = swconfig_id; + + switch (swconfig_id) + { + case BCN_CFG_REQ_X2: + /* Build the BCN_CFG_REQ message */ + req->bcn_cfg_req.tim_bcmc_ignored_enable = (bool_l)param_in[0]; + AICWFDBG(LOGINFO, "bcn_cfg_req: tim_bcmc_ignd=%d\n", req->bcn_cfg_req.tim_bcmc_ignored_enable); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = (int32_t)cfm.bcn_cfg_cfm.tim_bcmc_ignored_status; + AICWFDBG(LOGINFO, "status=%d\n", cfm.bcn_cfg_cfm.tim_bcmc_ignored_status); + } + break; + + case TEMP_COMP_SET_REQ_X2: + /* Build the TEMP_COMP_SET_REQ message */ + req->temp_comp_set_req.enable = (u8_l)param_in[0]; + req->temp_comp_set_req.tmr_period_ms = (u32_l)param_in[1]; + AICWFDBG(LOGINFO, "temp_comp_set_req: en=%d, tmr=%x\n", + req->temp_comp_set_req.enable, req->temp_comp_set_req.tmr_period_ms); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = (int32_t)cfm.temp_comp_set_cfm.status; + AICWFDBG(LOGINFO, "status=%d\n", cfm.temp_comp_set_cfm.status); + } + break; + + case TEMP_COMP_GET_REQ_X2: + AICWFDBG(LOGTRACE, "temp_comp_get_req\n"); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = (int32_t)cfm.temp_comp_get_cfm.status; + param_out[1] = (int32_t)cfm.temp_comp_get_cfm.degree; + AICWFDBG(LOGINFO, "status=%d, degree=%d\n", + cfm.temp_comp_get_cfm.status, cfm.temp_comp_get_cfm.degree); + } + break; + + case EXT_FLAGS_SET_REQ_X2: + /* Build the EXT_FLAGS_SET_REQ message */ + req->ext_flags_set_req.user_flags = (u32_l)param_in[0]; + AICWFDBG(LOGINFO, "ext_flags_set_req: flags=%x\n", + req->ext_flags_set_req.user_flags); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = (uint32_t)cfm.ext_flags_set_cfm.user_flags; + AICWFDBG(LOGINFO, "cfm flags=%x\n", cfm.ext_flags_set_cfm.user_flags); + } + break; + + case EXT_FLAGS_GET_REQ_X2: + /* Build the EXT_FLAGS_GET_REQ message */ + AICWFDBG(LOGTRACE, "ext_flags_get_req\n"); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = (uint32_t)cfm.ext_flags_get_cfm.user_flags; + AICWFDBG(LOGINFO, "cfm flags=%x\n", cfm.ext_flags_get_cfm.user_flags); + } + break; + + case EXT_FLAGS_MASK_SET_REQ_X2: + /* Build the EXT_FLAGS_MASK_SET_REQ message */ + req->ext_flags_mask_set_req.user_flags_mask = (u32_l)param_in[0]; + req->ext_flags_mask_set_req.user_flags_val = (u32_l)param_in[1]; + AICWFDBG(LOGINFO, "ext_flags_mask_set_req: flags mask=0x%x, val=0x%x\n", + req->ext_flags_mask_set_req.user_flags_mask, req->ext_flags_mask_set_req.user_flags_val); + /* Send the MM_SET_VENDOR_SWCONFIG_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if (!error) { + param_out[0] = (uint32_t)cfm.ext_flags_mask_set_cfm.user_flags; + AICWFDBG(LOGINFO, "cfm flags=%x\n", cfm.ext_flags_mask_set_cfm.user_flags); + } + break; + case TWO_ANT_RSSI_GET_REQ_X2: + AICWFDBG(LOGINFO, "get 2 ant rssi:\n"); + error = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_SWCONFIG_CFM, &cfm); + if(error) { + AICWFDBG(LOGINFO, "get 2 ant rssi fail\n"); + } else + param_out[0] = *((u32 *)&cfm + 1); + break; + default: + error = -ENOMEM; + break; + } + + return error; +} + + int rwnx_send_mask_set_ext_flags_req(struct rwnx_hw *rwnx_hw, uint32_t flags_mask, uint32_t flags_val, struct mm_set_vendor_swconfig_cfm *cfm) { struct mm_set_vendor_swconfig_req *req; @@ -1675,7 +2330,7 @@ int rwnx_send_txpwr_lvl_req(struct rwnx_hw *rwnx_hw) txpwr_lvl_v2 = &txpwr_lvl_v2_tmp; txpwr_loss = &txpwr_loss_tmp; - txpwr_loss->loss_enable = 0; + txpwr_loss->loss_enable_2g4 = 0; get_userconfig_txpwr_lvl_v2_in_fdrv(txpwr_lvl_v2); get_userconfig_txpwr_loss(txpwr_loss); @@ -1719,16 +2374,18 @@ int rwnx_send_txpwr_lvl_req(struct rwnx_hw *rwnx_hw) AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[10]); AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, txpwr_lvl_v2->pwrlvl_11ax_2g4[11]); - if (txpwr_loss->loss_enable == 1) { - AICWFDBG(LOGINFO, "%s:loss_value:%d\r\n", __func__, txpwr_loss->loss_value); + if (txpwr_loss->loss_enable_2g4 == 1) { + AICWFDBG(LOGINFO, "%s:loss_value_2g4: %d\r\n", __func__, + txpwr_loss->loss_value_2g4); + + for (i = 0; i <= 11; i++) + txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[i] -= txpwr_loss->loss_value_2g4; + for (i = 0; i <= 9; i++) + txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[i] -= txpwr_loss->loss_value_2g4; + for (i = 0; i <= 11; i++) + txpwr_lvl_v2->pwrlvl_11ax_2g4[i] -= txpwr_loss->loss_value_2g4; + } - for (i = 0; i <= 11; i++) - txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[i] += txpwr_loss->loss_value; - for (i = 0; i <= 9; i++) - txpwr_lvl_v2->pwrlvl_11n_11ac_2g4[i] += txpwr_loss->loss_value; - for (i = 0; i <= 11; i++) - txpwr_lvl_v2->pwrlvl_11ax_2g4[i] += txpwr_loss->loss_value; - } if ((testmode == 0) && (chip_sub_id == 0)) { txpwr_lvl_req->txpwr_lvl.enable = txpwr_lvl_v2->enable; txpwr_lvl_req->txpwr_lvl.dsss = txpwr_lvl_v2->pwrlvl_11b_11ag_2g4[3]; // 11M @@ -1771,30 +2428,38 @@ int rwnx_send_txpwr_lvl_v3_req(struct rwnx_hw *rwnx_hw) return -ENOMEM; } - txpwr_lvl_v3 = &txpwr_lvl_v3_tmp; - txpwr_loss = &txpwr_loss_tmp; - txpwr_loss->loss_enable = 0; + txpwr_lvl_v3 = &txpwr_lvl_v3_tmp; + txpwr_loss = &txpwr_loss_tmp; + txpwr_loss->loss_enable_2g4 = 0; + txpwr_loss->loss_enable_5g = 0; - get_userconfig_txpwr_lvl_v3_in_fdrv(txpwr_lvl_v3); + get_userconfig_txpwr_lvl_v3_in_fdrv(txpwr_lvl_v3); get_userconfig_txpwr_loss(txpwr_loss); - if (txpwr_loss->loss_enable == 1) { - AICWFDBG(LOGINFO, "%s:loss_value:%d\r\n", __func__, txpwr_loss->loss_value); - - for (i = 0; i <= 11; i++) - txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[i] += txpwr_loss->loss_value; - for (i = 0; i <= 9; i++) - txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[i] += txpwr_loss->loss_value; - for (i = 0; i <= 11; i++) - txpwr_lvl_v3->pwrlvl_11ax_2g4[i] += txpwr_loss->loss_value; + if (txpwr_loss->loss_enable_2g4 == 1) { + AICWFDBG(LOGINFO, "%s:loss_value_2g4: %d\r\n", __func__, + txpwr_loss->loss_value_2g4); for (i = 0; i <= 11; i++) - txpwr_lvl_v3->pwrlvl_11a_5g[i] += txpwr_loss->loss_value; - for (i = 0; i <= 9; i++) - txpwr_lvl_v3->pwrlvl_11n_11ac_5g[i] += txpwr_loss->loss_value; - for (i = 0; i <= 11; i++) - txpwr_lvl_v3->pwrlvl_11ax_5g[i] += txpwr_loss->loss_value; - } + txpwr_lvl_v3->pwrlvl_11b_11ag_2g4[i] -= txpwr_loss->loss_value_2g4; + for (i = 0; i <= 9; i++) + txpwr_lvl_v3->pwrlvl_11n_11ac_2g4[i] -= txpwr_loss->loss_value_2g4; + for (i = 0; i <= 11; i++) + txpwr_lvl_v3->pwrlvl_11ax_2g4[i] -= txpwr_loss->loss_value_2g4; + } + + if (txpwr_loss->loss_enable_5g == 1) { + AICWFDBG(LOGINFO, "%s:loss_value_5g: %d\r\n", __func__, + txpwr_loss->loss_value_5g); + + for (i = 0; i <= 11; i++) + txpwr_lvl_v3->pwrlvl_11a_5g[i] -= txpwr_loss->loss_value_5g; + for (i = 0; i <= 9; i++) + txpwr_lvl_v3->pwrlvl_11n_11ac_5g[i] -= txpwr_loss->loss_value_5g; + for (i = 0; i <= 11; i++) + txpwr_lvl_v3->pwrlvl_11ax_5g[i] -= txpwr_loss->loss_value_5g; + } + if (txpwr_lvl_v3->enable == 0) { rwnx_msg_free(rwnx_hw, txpwr_lvl_req); @@ -1880,6 +2545,168 @@ int rwnx_send_txpwr_lvl_v3_req(struct rwnx_hw *rwnx_hw) } } +int rwnx_send_txpwr_lvl_v4_req(struct rwnx_hw *rwnx_hw) +{ + struct mm_set_txpwr_lvl_req *txpwr_lvl_req; + txpwr_lvl_conf_v4_t txpwr_lvl_v4_tmp; + txpwr_lvl_conf_v4_t *txpwr_lvl_v4; + txpwr_loss_conf_t txpwr_loss_tmp; + txpwr_loss_conf_t *txpwr_loss; + int error; + int i; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MM_SET_TXPWR_LVL_REQ message */ + txpwr_lvl_req = rwnx_msg_zalloc(MM_SET_TXPWR_IDX_LVL_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_lvl_req)); + + if (!txpwr_lvl_req) { + return -ENOMEM; + } + + txpwr_lvl_v4 = &txpwr_lvl_v4_tmp; + txpwr_loss = &txpwr_loss_tmp; + txpwr_loss->loss_enable_2g4 = 0; + txpwr_loss->loss_enable_5g = 0; + + get_userconfig_txpwr_lvl_v4_in_fdrv(txpwr_lvl_v4); + get_userconfig_txpwr_loss(txpwr_loss); + + if (txpwr_loss->loss_enable_2g4 == 1) { + AICWFDBG(LOGINFO, "%s:loss_value_2g4: %d\r\n", __func__, + txpwr_loss->loss_value_2g4); + + for (i = 0; i <= 11; i++) + txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[i] -= txpwr_loss->loss_value_2g4; + for (i = 0; i <= 9; i++) + txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[i] -= txpwr_loss->loss_value_2g4; + for (i = 0; i <= 11; i++) + txpwr_lvl_v4->pwrlvl_11ax_2g4[i] -= txpwr_loss->loss_value_2g4; + } + + if (txpwr_loss->loss_enable_5g == 1) { + AICWFDBG(LOGINFO, "%s:loss_value_5g: %d\r\n", __func__, + txpwr_loss->loss_value_5g); + + for (i = 0; i <= 7; i++) + txpwr_lvl_v4->pwrlvl_11a_5g[i] -= txpwr_loss->loss_value_5g; + for (i = 0; i <= 9; i++) + txpwr_lvl_v4->pwrlvl_11n_11ac_5g[i] -= txpwr_loss->loss_value_5g; + for (i = 0; i <= 11; i++) + txpwr_lvl_v4->pwrlvl_11ax_5g[i] -= txpwr_loss->loss_value_5g; + } + + + if (txpwr_lvl_v4->enable == 0) { + rwnx_msg_free(rwnx_hw, txpwr_lvl_req); + return 0; + } else { + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_v4->enable); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[11]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[11]); + + AICWFDBG(LOGINFO, "%s:lvl_11a_6m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11a_9m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11a_12m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11a_18m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11a_24m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11a_36m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11a_48m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11a_54m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[11]); + + txpwr_lvl_req->txpwr_lvl_v4 = *txpwr_lvl_v4; + + /* Send the MM_SET_TXPWR_LVL_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, txpwr_lvl_req, 1, MM_SET_TXPWR_IDX_LVL_CFM, NULL); + + return (error); + } +} + +#ifdef CONFIG_DYNAMIC_PERPWR +int rwnx_send_txpwr_per_sta_req(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta) +{ + struct mm_set_txpwr_lvl_per_sta_req *req; + int ret; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + req = rwnx_msg_zalloc(MM_SET_TXPWR_PER_STA_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_lvl_per_sta_req)); + if (!req) { + AICWFDBG(LOGERROR, "%s msg alloc fail\n", __func__); + return -ENOMEM; + } + + AICWFDBG(LOGINFO, "sta_idx: %d, per_pwrloss: %d\r\n", sta->sta_idx, sta->per_pwrloss); + + req->sta_idx = sta->sta_idx; + req->tx_pwr_offset = sta->per_pwrloss; + + AICWFDBG(LOGDEBUG, "per_pwrloss: %d\n", req->tx_pwr_offset); + + ret = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_TXPWR_PER_STA_CFM, NULL); + + return ret; +} + +#endif + int rwnx_send_txpwr_lvl_adj_req(struct rwnx_hw *rwnx_hw) { struct mm_set_txpwr_lvl_adj_req *txpwr_lvl_adj_req; @@ -2009,6 +2836,9 @@ int rwnx_send_txpwr_ofst2x_req(struct rwnx_hw *rwnx_hw) } if (rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81){ get_userconfig_txpwr_ofst2x_in_fdrv(txpwr_ofst2x); + } else if (rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2){ + get_userconfig_txpwr_ofst2x_in_fdrv(txpwr_ofst2x); } if (txpwr_ofst2x->enable){ AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_ofst2x->enable); @@ -2040,6 +2870,58 @@ int rwnx_send_txpwr_ofst2x_req(struct rwnx_hw *rwnx_hw) return (error); } +int rwnx_send_txpwr_ofst2x_v2_req(struct rwnx_hw *rwnx_hw) +{ + struct mm_set_txpwr_ofst_req *txpwr_ofst_req; + txpwr_ofst2x_conf_v2_t *txpwr_ofst2x_v2; + int error = 0; + int type, ch_grp; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the MM_SET_TXPWR_OFST_REQ message */ + txpwr_ofst_req = rwnx_msg_zalloc(MM_SET_TXPWR_OFST_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_txpwr_ofst_req)); + + if (!txpwr_ofst_req) { + return -ENOMEM; + } + + txpwr_ofst2x_v2 = &txpwr_ofst_req->txpwr_ofst2x_v2; + txpwr_ofst2x_v2->enable = 0; + + get_userconfig_txpwr_ofst2x_v2_in_fdrv(txpwr_ofst2x_v2); + + if (txpwr_ofst2x_v2->enable){ + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_ofst2x_v2->enable); + AICWFDBG(LOGINFO, "pwrofst2x 2.4g(ant0/ant1): [0]:11b, [1]:ofdm_highrate\n" + " chan=" "\t1-4" "\t5-9" "\t10-13"); + for (type = 0; type < 2; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 3; ch_grp++) { + AICWFDBG(LOGINFO, "\t%d/%d", txpwr_ofst2x_v2->pwrofst2x_tbl_2g4_ant0[ch_grp][type], txpwr_ofst2x_v2->pwrofst2x_tbl_2g4_ant1[ch_grp][type]); + } + } + AICWFDBG(LOGINFO, "\npwrofst2x 5g(ant0/ant1): [0]:ofdm_highrate\n" + " chan=" "\t36-50" "\t51-64" "\t98-114" "\t115-130" "\t131-146" "\t147-166"); + for (type = 0; type < 1; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 6; ch_grp++) { + AICWFDBG(LOGINFO, "\t%d/%d", txpwr_ofst2x_v2->pwrofst2x_tbl_5g_ant0[ch_grp][type], txpwr_ofst2x_v2->pwrofst2x_tbl_5g_ant1[ch_grp][type]); + } + } + AICWFDBG(LOGINFO, "\n"); + + /* Send the MM_SET_TXPWR_OFST_REQ message to UMAC FW */ + error = rwnx_send_msg(rwnx_hw, txpwr_ofst_req, 1, MM_SET_TXPWR_OFST_CFM, NULL); + }else{ + AICWFDBG(LOGINFO, "%s:Do not use txpwr_ofst2x_v2\r\n", __func__); + rwnx_msg_free(rwnx_hw, txpwr_ofst_req); + } + + return (error); +} + int rwnx_send_set_filter(struct rwnx_hw *rwnx_hw, uint32_t filter) { struct mm_set_filter_req *set_filter_req_param; @@ -2259,11 +3141,18 @@ int rwnx_send_me_config_req(struct rwnx_hw *rwnx_hw) /* Send the ME_CONFIG_REQ message to LMAC FW */ return rwnx_send_msg(rwnx_hw, req, 1, ME_CONFIG_CFM, NULL); } -int rwnx_send_me_chan_config_req(struct rwnx_hw *rwnx_hw) + +int rwnx_send_me_chan_config_req(struct rwnx_hw *rwnx_hw, char *ccode) { struct me_chan_config_req *req; struct wiphy *wiphy = rwnx_hw->wiphy; int i; +#ifdef CONFIG_POWER_LIMIT + int8_t max_pwr; + uint8_t r_idx; + txpwr_loss_conf_t txpwr_loss_tmp; + txpwr_loss_conf_t *txpwr_loss; +#endif RWNX_DBG(RWNX_FN_ENTRY_STR); @@ -2273,6 +3162,21 @@ int rwnx_send_me_chan_config_req(struct rwnx_hw *rwnx_hw) if (!req) return -ENOMEM; + +#ifdef CONFIG_POWER_LIMIT + txpwr_loss = &txpwr_loss_tmp; + get_userconfig_txpwr_loss(txpwr_loss); + + if (txpwr_loss->loss_enable_2g4 == 1) + AICWFDBG(LOGINFO, "%s:loss_value_2g4: %d\r\n", __func__, + txpwr_loss->loss_value_2g4); + if (txpwr_loss->loss_enable_5g == 1) + AICWFDBG(LOGINFO, "%s:loss_value_5g: %d\r\n", __func__, + txpwr_loss->loss_value_5g); + + r_idx = get_ccode_region(ccode); +#endif + req->chan2G4_cnt= 0; if (wiphy->bands[NL80211_BAND_2GHZ] != NULL) { struct ieee80211_supported_band *b = wiphy->bands[NL80211_BAND_2GHZ]; @@ -2286,7 +3190,9 @@ int rwnx_send_me_chan_config_req(struct rwnx_hw *rwnx_hw) req->chan2G4[req->chan2G4_cnt].tx_power = chan_to_fw_pwr(b->channels[i].max_power); #ifdef CONFIG_POWER_LIMIT { - int8_t max_pwr = get_powerlimit_by_freq(PHY_BAND_2G4, req->chan2G4[req->chan2G4_cnt].freq); + max_pwr = get_powerlimit_by_freq(PHY_BAND_2G4, req->chan2G4[req->chan2G4_cnt].freq, r_idx); + if (txpwr_loss->loss_enable_2g4 == 1) + max_pwr -= txpwr_loss->loss_value_2g4; if (req->chan2G4[req->chan2G4_cnt].tx_power > max_pwr) { req->chan2G4[req->chan2G4_cnt].tx_power = max_pwr; } @@ -2311,7 +3217,9 @@ int rwnx_send_me_chan_config_req(struct rwnx_hw *rwnx_hw) req->chan5G[req->chan5G_cnt].tx_power = chan_to_fw_pwr(b->channels[i].max_power); #ifdef CONFIG_POWER_LIMIT { - int8_t max_pwr = get_powerlimit_by_freq(PHY_BAND_5G, req->chan5G[req->chan5G_cnt].freq); + max_pwr = get_powerlimit_by_freq(PHY_BAND_5G, req->chan5G[req->chan5G_cnt].freq, r_idx); + if (txpwr_loss->loss_enable_5g == 1) + max_pwr -= txpwr_loss->loss_value_5g; if (req->chan5G[req->chan5G_cnt].tx_power > max_pwr) { req->chan5G[req->chan5G_cnt].tx_power = max_pwr; } @@ -2378,6 +3286,15 @@ int rwnx_send_me_sta_add(struct rwnx_hw *rwnx_hw, struct station_parameters *par #endif RWNX_DBG(RWNX_FN_ENTRY_STR); +#ifdef CONFIG_RADAR_OR_IR_DETECT + if((rwnx_hw->radar.sta_num == 0) && (rwnx_hw->radar.status != RWNX_RADAR_INSERVICE_BUSY)) + rwnx_hw->radar.status = RWNX_RADAR_INSERVICE_BUSY; + + AICWFDBG(LOGINFO, "DFS: assoc add num %d, %d\n", rwnx_hw->radar.sta_num, rwnx_hw->radar.status); + if(rwnx_hw->radar.sta_num < 0x0FFF) + rwnx_hw->radar.sta_num++; +#endif + /* Build the MM_STA_ADD_REQ message */ req = rwnx_msg_zalloc(ME_STA_ADD_REQ, TASK_ME, DRV_TASK_ID, sizeof(struct me_sta_add_req)); @@ -2419,17 +3336,19 @@ int rwnx_send_me_sta_add(struct rwnx_hw *rwnx_hw, struct station_parameters *par } #elif defined(CONFIG_VHT_FOR_OLD_KERNEL) if (sta->vht) { - const struct ieee80211_vht_cap *vht_capa = rwnx_vht_capa; + //const struct ieee80211_vht_cap *vht_capa = rwnx_vht_capa; req->flags |= STA_VHT_CAPA; - req->vht_cap.vht_capa_info = cpu_to_le32(vht_capa->vht_cap_info); - req->vht_cap.rx_highest = cpu_to_le16(vht_capa->supp_mcs.rx_highest); - req->vht_cap.rx_mcs_map = cpu_to_le16(vht_capa->supp_mcs.rx_mcs_map); - req->vht_cap.tx_highest = cpu_to_le16(vht_capa->supp_mcs.tx_highest); - req->vht_cap.tx_mcs_map = cpu_to_le16(vht_capa->supp_mcs.tx_mcs_map); + req->vht_cap.vht_capa_info = cpu_to_le32(rwnx_vht_capa->cap); + req->vht_cap.rx_highest = sta->supp_mcs.rx_highest;//cpu_to_le16(rwnx_vht_capa->vht_mcs.rx_highest); + req->vht_cap.rx_mcs_map = sta->supp_mcs.rx_mcs_map;//cpu_to_le16(rwnx_vht_capa->vht_mcs.rx_mcs_map); + req->vht_cap.tx_highest = sta->supp_mcs.tx_highest;//cpu_to_le16(rwnx_vht_capa->vht_mcs.tx_highest); + req->vht_cap.tx_mcs_map = sta->supp_mcs.tx_mcs_map;//cpu_to_le16(rwnx_vht_capa->vht_mcs.tx_mcs_map); } #endif + AICWFDBG(LOGDEBUG,"rx map %x rx high %x tx map %x tx high %x \n",req->vht_cap.rx_mcs_map,req->vht_cap.rx_highest,req->vht_cap.tx_mcs_map,req->vht_cap.tx_highest); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) if (link_sta_params->he_capa) { #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0) @@ -2462,13 +3381,13 @@ int rwnx_send_me_sta_add(struct rwnx_hw *rwnx_hw, struct station_parameters *par (struct ieee80211_he_mcs_nss_supp *)(he_capa + 1); req->flags |= STA_HE_CAPA; for (i = 0; i < ARRAY_SIZE(he_capa->mac_cap_info); i++) { - req->he_cap.mac_cap_info[i] = he_capa->mac_cap_info[i]; + req->he_cap.mac_cap_info[i] = sta->he_cap_elem.mac_cap_info[i];//he_capa->mac_cap_info[i]; } for (i = 0; i < ARRAY_SIZE(he_capa->phy_cap_info); i++) { - req->he_cap.phy_cap_info[i] = he_capa->phy_cap_info[i]; + req->he_cap.phy_cap_info[i] = sta->he_cap_elem.phy_cap_info[i];//he_capa->phy_cap_info[i]; } - req->he_cap.mcs_supp.rx_mcs_80 = mcs_nss_supp->rx_mcs_80; - req->he_cap.mcs_supp.tx_mcs_80 = mcs_nss_supp->tx_mcs_80; + req->he_cap.mcs_supp.rx_mcs_80 = sta->he_mcs_nss_supp.rx_mcs_80;//mcs_nss_supp->rx_mcs_80; + req->he_cap.mcs_supp.tx_mcs_80 = sta->he_mcs_nss_supp.tx_mcs_80;//mcs_nss_supp->tx_mcs_80; req->he_cap.mcs_supp.rx_mcs_160 = mcs_nss_supp->rx_mcs_160; req->he_cap.mcs_supp.tx_mcs_160 = mcs_nss_supp->tx_mcs_160; req->he_cap.mcs_supp.rx_mcs_80p80 = mcs_nss_supp->rx_mcs_80p80; @@ -2477,6 +3396,9 @@ int rwnx_send_me_sta_add(struct rwnx_hw *rwnx_hw, struct station_parameters *par #endif #endif + AICWFDBG(LOGDEBUG,"rwnx sta add he mcs/nss rx mcs 80 0x%04x \n",le16_to_cpu(req->he_cap.mcs_supp.rx_mcs_80)); + AICWFDBG(LOGDEBUG,"rwnx sta add he mcs/nss tx mcs 80 0x%04x \n",le16_to_cpu(req->he_cap.mcs_supp.tx_mcs_80)); + if (params->sta_flags_set & BIT(NL80211_STA_FLAG_WME)) req->flags |= STA_QOS_CAPA; @@ -2527,6 +3449,15 @@ int rwnx_send_me_sta_del(struct rwnx_hw *rwnx_hw, u8 sta_idx, bool tdls_sta) req->sta_idx = sta_idx; req->tdls_sta = tdls_sta; +#ifdef CONFIG_RADAR_OR_IR_DETECT + if((rwnx_hw->radar.sta_num == 1) && (rwnx_hw->radar.status == RWNX_RADAR_INSERVICE_BUSY)) + rwnx_hw->radar.status = RWNX_RADAR_INSERVICE_DONE; + + AICWFDBG(LOGINFO, "DFS: assoc del num %d, %d\n", rwnx_hw->radar.sta_num, rwnx_hw->radar.status); + if(rwnx_hw->radar.sta_num > 0) + rwnx_hw->radar.sta_num--; +#endif + /* Send the ME_STA_DEL_REQ message to LMAC FW */ return rwnx_send_msg(rwnx_hw, req, 1, ME_STA_DEL_CFM, NULL); } @@ -2743,7 +3674,7 @@ int rwnx_send_sm_connect_req(struct rwnx_hw *rwnx_hw, rwnx_vif->last_auth_type = sme->auth_type; } #ifdef CONFIG_USE_WIRELESS_EXT - memset(rwnx_hw->wext_essid, 0, 32); + memset(rwnx_hw->wext_essid, 0, 33); memcpy(rwnx_hw->wext_essid, sme->ssid, (int)sme->ssid_len); #endif @@ -2887,7 +3818,14 @@ int rwnx_send_apm_start_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, req->chan.band = settings->chandef.chan->band; req->chan.freq = settings->chandef.chan->center_freq; #endif - req->chan.flags = 0; + +#ifdef CONFIG_RADAR_OR_IR_DETECT + req->chan.flags = get_chan_flags(settings->chandef.chan->flags); +#else + req->chan.flags = 0; +#endif + printk("chan.flags %u \n",req->chan.flags); + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) req->chan.tx_power = chan_to_fw_pwr(settings->chandef.chan->max_power); req->center_freq1 = settings->chandef.center_freq1; @@ -3028,7 +3966,7 @@ int rwnx_send_scanu_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, req->bssid = mac_addr_bcst; req->no_cck = param->no_cck; -#ifdef RADAR_OR_IR_DETECT +#ifdef CONFIG_RADAR_OR_IR_DETECT if (req->ssid_cnt == 0) chan_flags |= CHAN_NO_IR; #endif @@ -3171,14 +4109,18 @@ int rwnx_send_apm_start_cac_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif, return -ENOMEM; /* Set parameters for the APM_START_CAC_REQ message */ - req->vif_idx = vif->vif_index; - req->chan.band = chandef->chan->band; - req->chan.freq = chandef->chan->center_freq; - req->chan.flags = 0; - req->center_freq1 = chandef->center_freq1; - req->center_freq2 = chandef->center_freq2; - req->ch_width = bw2chnl[chandef->width]; - + req->vif_idx = vif->vif_index; + req->chan.band = chandef->chan->band; + req->chan.type = bw2chnl[chandef->width]; + req->chan.prim20_freq = chandef->chan->center_freq; + req->chan.center1_freq = chandef->center_freq1; + req->chan.center2_freq = chandef->center_freq2; + req->chan.tx_power = 20; + req->chan.flags = get_chan_flags(chandef->chan->flags); +#ifdef CONFIG_RADAR_OR_IR_DETECT + rwnx_hw->radar.status = RWNX_RADAR_CAC_BUSY; + AICWFDBG(LOGINFO, "DFS: radar st = %d\n", rwnx_hw->radar.status); +#endif /* Send the APM_START_CAC_REQ message to LMAC FW */ return rwnx_send_msg(rwnx_hw, req, 1, APM_START_CAC_CFM, cfm); } @@ -3199,6 +4141,10 @@ int rwnx_send_apm_stop_cac_req(struct rwnx_hw *rwnx_hw, struct rwnx_vif *vif) req->vif_idx = vif->vif_index; /* Send the APM_STOP_CAC_REQ message to LMAC FW */ +#ifdef CONFIG_RADAR_OR_IR_DETECT + rwnx_hw->radar.status = RWNX_RADAR_CAC_DONE; + AICWFDBG(LOGINFO, "DFS: radar st = %d\n", rwnx_hw->radar.status); +#endif return rwnx_send_msg(rwnx_hw, req, 1, APM_STOP_CAC_CFM, NULL); } @@ -3932,6 +4878,27 @@ int rwnx_send_dbg_mem_block_write_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, return rwnx_send_msg(rwnx_hw, mem_blk_write_req, 1, DBG_MEM_BLOCK_WRITE_CFM, NULL); } +int rwnx_send_dbg_mem_block_read_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, + u32 mem_size, struct dbg_mem_block_read_cfm *cfm) +{ + struct dbg_mem_block_read_req *mem_blk_read_req; + + //RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the DBG_MEM_BLOCK_READ_REQ message */ + mem_blk_read_req = rwnx_msg_zalloc(DBG_MEM_BLOCK_READ_REQ, TASK_DBG, DRV_TASK_ID, + sizeof(struct dbg_mem_block_read_req)); + if (!mem_blk_read_req) + return -ENOMEM; + + /* Set parameters for the DBG_MEM_BLOCK_READ_REQ message */ + mem_blk_read_req->memaddr = mem_addr; + mem_blk_read_req->memsize = mem_size; + + /* Send the DBG_MEM_BLOCK_READ_REQ message to LMAC FW */ + return rwnx_send_msg(rwnx_hw, mem_blk_read_req, 1, DBG_MEM_BLOCK_READ_CFM, cfm); +} + int rwnx_send_dbg_start_app_req(struct rwnx_hw *rwnx_hw, u32 boot_addr, u32 boot_type) { @@ -4004,6 +4971,49 @@ int rwnx_send_dbg_gpio_init_req(struct rwnx_hw *rwnx_hw, u8_l gpio_idx, u8_l gpi return rwnx_send_msg(rwnx_hw, gpio_init_req, 1, DBG_GPIO_INIT_CFM, NULL); } +#ifdef CONFIG_WOWLAN +int rwnx_send_set_pkt_filter_req(struct rwnx_hw *rwnx_hw, u8_l *param) +{ + struct mm_set_wakeup_info_req *req; + int i, err; + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + /* Build the WAKEUP_INFO_REQ message */ + if (param[2] == 0) + req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_wakeup_info_req)); + else + req = rwnx_msg_zalloc(MM_SET_VENDOR_HWCONFIG_REQ, TASK_MM, DRV_TASK_ID, + sizeof(struct mm_set_wakeup_info_req) + + 2 * param[2] - 1); + if (!req) + return -ENOMEM; + + req->hwconfig_id = WAKEUP_INFO_REQ; + req->code = (u16_l)param[0]; + req->offset = (u16_l)param[1]; + req->length = (u16_l)param[2]; + AICWFDBG(LOGINFO, + "set_wakeup_info_req: id: 0x%x, offset: 0x%x, length: 0x%x\n", + req->code, req->offset, req->length); + // AICWFDBG(LOG_INFO, "set_wakeup_info_req mask_pattern:\n"); + for (i = 0; i < 2 * req->length; i++) { + req->mask_and_pattern[i] = param[3 + i]; + // AICWFDBG(LOG_INFO, KERN_CONT"%02x ", req->mask_and_pattern[i]); + } + + /* Send the MM_SET_VENDOR_HWCONFIG_CFM message to UMAC FW */ + err = rwnx_send_msg(rwnx_hw, req, 1, MM_SET_VENDOR_HWCONFIG_CFM, NULL); + if (err) { + AICWFDBG(LOGINFO, "%s msg_fail\n", __func__); + return err; + } + + return err; +} +#endif + int rwnx_send_cfg_rssi_req(struct rwnx_hw *rwnx_hw, u8 vif_index, int rssi_thold, u32 rssi_hyst) { struct mm_cfg_rssi_req *req; @@ -4039,4 +5049,78 @@ int rwnx_send_reboot(struct rwnx_hw *rwnx_hw) ret = rwnx_send_dbg_start_app_req(rwnx_hw, delay, HOST_START_APP_REBOOT); return ret; } + +int rwnx_send_pwm_init_req(struct rwnx_hw *rwnx_hw, u8 pwm_gpidx, u8 mode, u8 run, u32 tmr_cnt, + u32 dty_cnt, u32 step_val, u8 gpio_en, u8 gpio_dir, u8 gpio_val) +{ + struct dbg_pwm_init_req *pwm_init_req; + + pwm_init_req = rwnx_msg_zalloc(DBG_PWM_INIT_REQ, TASK_DBG, DRV_TASK_ID, + sizeof(struct dbg_pwm_init_req)); + if (!pwm_init_req) + return -ENOMEM; + + pwm_init_req->pwm_gpidx = pwm_gpidx; + pwm_init_req->mode = mode; + pwm_init_req->run = run; + pwm_init_req->tmr_cnt = tmr_cnt; + pwm_init_req->dty_cnt = dty_cnt; + pwm_init_req->step_val = step_val; + pwm_init_req->gpio_en = gpio_en; + pwm_init_req->gpio_dir = gpio_dir; + pwm_init_req->gpio_val = gpio_val; + + + return rwnx_send_msg(rwnx_hw, pwm_init_req, 1, DBG_PWM_INIT_CFM, NULL); +} + +int rwnx_send_pwm_deinit_req(struct rwnx_hw *rwnx_hw, u8 pwm_gpidx, u8 gpio_en, u8 gpio_dir, u8 gpio_val) +{ + struct dbg_pwm_deinit_req *pwm_deinit_req; + + pwm_deinit_req = rwnx_msg_zalloc(DBG_PWM_DEINIT_REQ, TASK_DBG, DRV_TASK_ID, + sizeof(struct dbg_pwm_deinit_req)); + if (!pwm_deinit_req) + return -ENOMEM; + + pwm_deinit_req->pwm_gpidx = pwm_gpidx; + pwm_deinit_req->gpio_en = gpio_en; + pwm_deinit_req->gpio_dir = gpio_dir; + pwm_deinit_req->gpio_val = gpio_val; + + return rwnx_send_msg(rwnx_hw, pwm_deinit_req, 1, DBG_PWM_DEINIT_CFM, NULL); +} + +u32 pwm_tbl[][2] = { + {0x40504088, 4}, +}; + +void rwnx_set_pwm_tbl(struct rwnx_hw *rwnx_hw) +{ + int patch_num = 0; + int cnt = 0; + int ret = 0; + + patch_num = sizeof(pwm_tbl) / sizeof(u32) / 2; + for (cnt = 0; cnt < patch_num; cnt++) { + ret = rwnx_send_dbg_mem_write_req(rwnx_hw, pwm_tbl[cnt][0], pwm_tbl[cnt][1]); + if (ret) { + break; + } + } +} + + //#endif // CONFIG_USB_BT +#ifdef CONFIG_WOWLAN +int rwnx_send_dummy_reboot(struct rwnx_hw *rwnx_hw) +{ + int ret = 0; + u32 delay = 2 *1000; //1s + + RWNX_DBG(RWNX_FN_ENTRY_STR); + + ret = rwnx_send_dbg_start_app_req(rwnx_hw, delay, 6); + return ret; +} +#endif diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.h b/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.h index 5533c52..99277dc 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_msg_tx.h @@ -15,6 +15,11 @@ #include "rwnx_defs.h" +#ifdef RF_WRITE_FILE +#define FW_RF_CALIB_FILE "aic_rf_calib.bin" +#endif + + int rwnx_send_reset(struct rwnx_hw *rwnx_hw); int rwnx_send_start(struct rwnx_hw *rwnx_hw); int rwnx_send_version_req(struct rwnx_hw *rwnx_hw, struct mm_version_cfm *cfm); @@ -67,7 +72,7 @@ int rwnx_send_get_macaddr_req(struct rwnx_hw *rwnx_hw, struct mm_get_mac_addr_cf #ifdef CONFIG_RWNX_FULLMAC int rwnx_send_me_config_req(struct rwnx_hw *rwnx_hw); -int rwnx_send_me_chan_config_req(struct rwnx_hw *rwnx_hw); +int rwnx_send_me_chan_config_req(struct rwnx_hw *rwnx_hw, char *ccode); int rwnx_send_me_set_control_port_req(struct rwnx_hw *rwnx_hw, bool opened, u8 sta_idx); int rwnx_send_me_sta_add(struct rwnx_hw *rwnx_hw, struct station_parameters *params, @@ -153,6 +158,8 @@ int rwnx_send_dbg_get_sys_stat_req(struct rwnx_hw *rwnx_hw, struct dbg_get_sys_stat_cfm *cfm); int rwnx_send_dbg_mem_block_write_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, u32 mem_size, u32 *mem_data); +int rwnx_send_dbg_mem_block_read_req(struct rwnx_hw *rwnx_hw, u32 mem_addr, + u32 mem_size, struct dbg_mem_block_read_cfm *cfm); int rwnx_send_dbg_start_app_req(struct rwnx_hw *rwnx_hw, u32 boot_addr, u32 boot_type); int rwnx_send_dbg_gpio_write_req(struct rwnx_hw *rwnx_hw, u8_l gpio_idx, u8_l gpio_val); @@ -169,19 +176,35 @@ int rwnx_send_set_temp_comp_req(struct rwnx_hw *rwnx_hw, struct mm_set_vendor_sw int rwnx_send_vendor_hwconfig_req(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, int32_t *param, int32_t *param_out); int rwnx_send_vendor_swconfig_req(struct rwnx_hw *rwnx_hw, uint32_t swconfig_id, int32_t *param_in, int32_t *param_out); int rwnx_send_mask_set_ext_flags_req(struct rwnx_hw *rwnx_hw, uint32_t flags_mask, uint32_t flags_val, struct mm_set_vendor_swconfig_cfm *cfm); +int rwnx_send_vendor_hwconfig_req_x2(struct rwnx_hw *rwnx_hw, uint32_t hwconfig_id, int32_t *param, int32_t *param_out); +int rwnx_send_vendor_swconfig_req_x2(struct rwnx_hw *rwnx_hw, uint32_t swconfig_id, int32_t *param_in, int32_t *param_out); int rwnx_send_get_fw_version_req(struct rwnx_hw *rwnx_hw, struct mm_get_fw_version_cfm *cfm); int rwnx_send_txpwr_idx_req(struct rwnx_hw *rwnx_hw); int rwnx_send_txpwr_ofst_req(struct rwnx_hw *rwnx_hw); int rwnx_send_txpwr_ofst2x_req(struct rwnx_hw *rwnx_hw); +int rwnx_send_txpwr_ofst2x_v2_req(struct rwnx_hw *rwnx_hw); int rwnx_send_set_filter(struct rwnx_hw *rwnx_hw, uint32_t filter); int rwnx_send_txpwr_lvl_req(struct rwnx_hw *rwnx_hw); int rwnx_send_txpwr_lvl_v3_req(struct rwnx_hw *rwnx_hw); +int rwnx_send_txpwr_lvl_v4_req(struct rwnx_hw *rwnx_hw); int rwnx_send_txpwr_lvl_adj_req(struct rwnx_hw *rwnx_hw); +#ifdef CONFIG_WOWLAN +int rwnx_send_set_pkt_filter_req(struct rwnx_hw *rwnx_hw, u8_l *param); +int rwnx_send_dummy_reboot(struct rwnx_hw *rwnx_hw); +#endif +#ifdef CONFIG_DYNAMIC_PERPWR +int rwnx_send_txpwr_per_sta_req(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta); +#endif + //#ifdef CONFIG_USB_BT int rwnx_send_reboot(struct rwnx_hw *rwnx_hw); //#endif // CONFIG_USB_BT +int rwnx_send_pwm_init_req(struct rwnx_hw *rwnx_hw, u8 pwm_gpidx, u8 mode, u8 run, u32 tmr_cnt, + u32 dty_cnt, u32 step_val, u8 gpio_en, u8 gpio_dir, u8 gpio_val); +int rwnx_send_pwm_deinit_req(struct rwnx_hw *rwnx_hw, u8 pwm_gpidx, u8 gpio_en, u8 gpio_dir, u8 gpio_val); +void rwnx_set_pwm_tbl(struct rwnx_hw *rwnx_hw); #endif /* _RWNX_MSG_TX_H_ */ diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_platform.c b/drivers/aic8800/aic8800_fdrv/rwnx_platform.c index 97851f9..0392d4c 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_platform.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_platform.c @@ -33,6 +33,7 @@ #include "md5.h" #include "aicwf_compat_8800dc.h" #include "aicwf_compat_8800d80.h" +#include "aicwf_compat_8800d80x2.h" #ifdef CONFIG_USE_FW_REQUEST #include #endif @@ -55,18 +56,6 @@ extern char aic_fw_path[FW_PATH_MAX_LEN]; #define PRINT 2 #define GET_VALUE 3 -typedef struct -{ - txpwr_lvl_conf_t txpwr_lvl; - txpwr_lvl_conf_v2_t txpwr_lvl_v2; - txpwr_lvl_conf_v3_t txpwr_lvl_v3; - txpwr_lvl_adj_conf_t txpwr_lvl_adj; - txpwr_loss_conf_t txpwr_loss; - txpwr_ofst_conf_t txpwr_ofst; - txpwr_ofst2x_conf_t txpwr_ofst2x; - xtal_cap_conf_t xtal_cap; -} userconfig_info_t; - userconfig_info_t userconfig_info = { .txpwr_lvl = { .enable = 1, @@ -113,9 +102,32 @@ userconfig_info_t userconfig_info = { //MCS0, MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9, MCS10,MCS11 { 20, 20, 20, 20, 18, 18, 16, 16, 16, 15, 14, 14}, }, + .txpwr_lvl_v4 = { + .enable = 1, + .pwrlvl_11b_11ag_2g4 = + //1M, 2M, 5M5, 11M, 6M, 9M, 12M, 18M, 24M, 36M, 48M, 54M + { 20, 20, 20, 20, 20, 20, 20, 20, 18, 18, 16, 16}, + .pwrlvl_11n_11ac_2g4 = + //MCS0, MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9 + { 20, 20, 20, 20, 18, 18, 16, 16, 16, 16}, + .pwrlvl_11ax_2g4 = + //MCS0, MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9, MCS10,MCS11 + { 20, 20, 20, 20, 18, 18, 16, 16, 16, 16, 15, 15}, + .pwrlvl_11a_5g = + //6M, 9M, 12M, 18M, 24M, 36M, 48M, 54M + { 20, 20, 20, 20, 18, 18, 16, 16}, + .pwrlvl_11n_11ac_5g = + //MCS0, MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9 + { 20, 20, 20, 20, 18, 18, 16, 16, 16, 15}, + .pwrlvl_11ax_5g = + //MCS0, MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9, MCS10,MCS11 + { 20, 20, 20, 20, 18, 18, 16, 16, 16, 15, 14, 14}, + }, .txpwr_loss = { - .loss_enable = 1, - .loss_value = 0, + .loss_enable_2g4 = 0, + .loss_value_2g4 = 0, + .loss_enable_5g = 0, + .loss_value_5g = 0, }, .txpwr_ofst = { .enable = 1, @@ -142,6 +154,42 @@ userconfig_info_t userconfig_info = { { 0, 0, 0, 0, 0, 0 }, // ofdm_midrate }, }, + .txpwr_ofst2x_v2 = { + .enable = 0, + .pwrofst_flags = 0, + .pwrofst2x_tbl_2g4_ant0 = + { // 11b, ofdm_highrate, ofdm_lowrate + { 0, 0, 0 }, // ch1-4 + { 0, 0, 0 }, // ch5-9 + { 0, 0, 0 }, // ch10-13 + }, + .pwrofst2x_tbl_2g4_ant1 = + { // 11b, ofdm_highrate, ofdm_lowrate + { 0, 0, 0 }, // ch1-4 + { 0, 0, 0 }, // ch5-9 + { 0, 0, 0 }, // ch10-13 + }, + .pwrofst2x_tbl_5g_ant0 = + { // ofdm_highrate, ofdm_lowrate, ofdm_midrate + { 0, 0, 0 }, // ch42 + { 0, 0, 0 }, // ch58 + { 0, 0, 0 }, // ch106 + { 0, 0, 0 }, // ch122 + { 0, 0, 0 }, // ch138 + { 0, 0, 0 }, // ch155 + }, + .pwrofst2x_tbl_5g_ant1 = + { // ofdm_highrate, ofdm_lowrate, ofdm_midrate + { 0, 0, 0 }, // ch42 + { 0, 0, 0 }, // ch58 + { 0, 0, 0 }, // ch106 + { 0, 0, 0 }, // ch122 + { 0, 0, 0 }, // ch138 + { 0, 0, 0 }, // ch155 + }, + .pwrofst2x_tbl_6g_ant0 = { 0, }, // ofdm_highrate: 6e_ch7 ~ 6e_ch229 + .pwrofst2x_tbl_6g_ant1 = { 0, }, // ofdm_highrate: 6e_ch7 ~ 6e_ch229 + }, .xtal_cap = { .enable = 0, .xtal_cap = 24, @@ -149,25 +197,257 @@ userconfig_info_t userconfig_info = { }, }; +typedef struct { + char ccode[3]; + Regions_code region; +} reg_table; + +/* If the region conflicts with the kernel, the actual authentication standard prevails */ +reg_table reg_tables[] = { + {.ccode = "CN", .region = REGIONS_SRRC}, + {.ccode = "US", .region = REGIONS_FCC}, + {.ccode = "DE", .region = REGIONS_ETSI}, + {.ccode = "00", .region = REGIONS_DEFAULT}, + {.ccode = "WW", .region = REGIONS_DEFAULT}, + {.ccode = "XX", .region = REGIONS_DEFAULT}, + {.ccode = "JP", .region = REGIONS_JP}, + {.ccode = "AD", .region = REGIONS_ETSI}, + {.ccode = "AE", .region = REGIONS_ETSI}, + {.ccode = "AF", .region = REGIONS_ETSI}, + {.ccode = "AI", .region = REGIONS_ETSI}, + {.ccode = "AL", .region = REGIONS_ETSI}, + {.ccode = "AM", .region = REGIONS_ETSI}, + {.ccode = "AN", .region = REGIONS_ETSI}, + {.ccode = "AR", .region = REGIONS_FCC}, + {.ccode = "AS", .region = REGIONS_FCC}, + {.ccode = "AT", .region = REGIONS_ETSI}, + {.ccode = "AU", .region = REGIONS_ETSI}, + {.ccode = "AW", .region = REGIONS_ETSI}, + {.ccode = "AZ", .region = REGIONS_ETSI}, + {.ccode = "BA", .region = REGIONS_ETSI}, + {.ccode = "BB", .region = REGIONS_FCC}, + {.ccode = "BD", .region = REGIONS_JP}, + {.ccode = "BE", .region = REGIONS_ETSI}, + {.ccode = "BF", .region = REGIONS_FCC}, + {.ccode = "BG", .region = REGIONS_ETSI}, + {.ccode = "BH", .region = REGIONS_ETSI}, + {.ccode = "BL", .region = REGIONS_ETSI}, + {.ccode = "BM", .region = REGIONS_FCC}, + {.ccode = "BN", .region = REGIONS_JP}, + {.ccode = "BO", .region = REGIONS_JP}, + {.ccode = "BR", .region = REGIONS_FCC}, + {.ccode = "BS", .region = REGIONS_FCC}, + {.ccode = "BT", .region = REGIONS_ETSI}, + {.ccode = "BW", .region = REGIONS_ETSI}, + {.ccode = "BY", .region = REGIONS_ETSI}, + {.ccode = "BZ", .region = REGIONS_JP}, + {.ccode = "CA", .region = REGIONS_FCC}, + {.ccode = "CF", .region = REGIONS_FCC}, + {.ccode = "CH", .region = REGIONS_ETSI}, + {.ccode = "CI", .region = REGIONS_FCC}, + {.ccode = "CL", .region = REGIONS_ETSI}, + {.ccode = "CO", .region = REGIONS_FCC}, + {.ccode = "CR", .region = REGIONS_FCC}, + {.ccode = "CX", .region = REGIONS_FCC}, + {.ccode = "CY", .region = REGIONS_ETSI}, + {.ccode = "CZ", .region = REGIONS_ETSI}, + {.ccode = "DK", .region = REGIONS_ETSI}, + {.ccode = "DM", .region = REGIONS_FCC}, + {.ccode = "DO", .region = REGIONS_FCC}, + {.ccode = "DZ", .region = REGIONS_JP}, + {.ccode = "EC", .region = REGIONS_FCC}, + {.ccode = "EE", .region = REGIONS_ETSI}, + {.ccode = "EG", .region = REGIONS_ETSI}, + {.ccode = "ES", .region = REGIONS_ETSI}, + {.ccode = "ET", .region = REGIONS_ETSI}, + {.ccode = "FI", .region = REGIONS_ETSI}, + {.ccode = "FM", .region = REGIONS_FCC}, + {.ccode = "FR", .region = REGIONS_ETSI}, + {.ccode = "GB", .region = REGIONS_ETSI}, + {.ccode = "GD", .region = REGIONS_FCC}, + {.ccode = "GE", .region = REGIONS_ETSI}, + {.ccode = "GF", .region = REGIONS_ETSI}, + {.ccode = "GH", .region = REGIONS_FCC}, + {.ccode = "GI", .region = REGIONS_ETSI}, + {.ccode = "GL", .region = REGIONS_ETSI}, + {.ccode = "GP", .region = REGIONS_ETSI}, + {.ccode = "GR", .region = REGIONS_ETSI}, + {.ccode = "GT", .region = REGIONS_FCC}, + {.ccode = "GU", .region = REGIONS_FCC}, + {.ccode = "GY", .region = REGIONS_DEFAULT}, + {.ccode = "HK", .region = REGIONS_ETSI}, + {.ccode = "HN", .region = REGIONS_FCC}, + {.ccode = "HR", .region = REGIONS_ETSI}, + {.ccode = "HT", .region = REGIONS_FCC}, + {.ccode = "HU", .region = REGIONS_ETSI}, + {.ccode = "ID", .region = REGIONS_ETSI}, + {.ccode = "IE", .region = REGIONS_ETSI}, + {.ccode = "IL", .region = REGIONS_ETSI}, + {.ccode = "IN", .region = REGIONS_ETSI}, + {.ccode = "IQ", .region = REGIONS_ETSI}, + {.ccode = "IR", .region = REGIONS_JP}, + {.ccode = "IS", .region = REGIONS_ETSI}, + {.ccode = "IT", .region = REGIONS_ETSI}, + {.ccode = "JM", .region = REGIONS_FCC}, + {.ccode = "JO", .region = REGIONS_ETSI}, + {.ccode = "KE", .region = REGIONS_ETSI}, + {.ccode = "KG", .region = REGIONS_ETSI}, + {.ccode = "KH", .region = REGIONS_ETSI}, + {.ccode = "KN", .region = REGIONS_ETSI}, + {.ccode = "KP", .region = REGIONS_JP}, + {.ccode = "KR", .region = REGIONS_ETSI}, + {.ccode = "KW", .region = REGIONS_ETSI}, + {.ccode = "KY", .region = REGIONS_FCC}, + {.ccode = "KZ", .region = REGIONS_DEFAULT}, + {.ccode = "LB", .region = REGIONS_ETSI}, + {.ccode = "LC", .region = REGIONS_ETSI}, + {.ccode = "LI", .region = REGIONS_ETSI}, + {.ccode = "LK", .region = REGIONS_FCC}, + {.ccode = "LS", .region = REGIONS_ETSI}, + {.ccode = "LT", .region = REGIONS_ETSI}, + {.ccode = "LU", .region = REGIONS_ETSI}, + {.ccode = "LV", .region = REGIONS_ETSI}, + {.ccode = "LY", .region = REGIONS_ETSI}, + {.ccode = "MA", .region = REGIONS_ETSI}, + {.ccode = "MC", .region = REGIONS_ETSI}, + {.ccode = "MD", .region = REGIONS_ETSI}, + {.ccode = "ME", .region = REGIONS_ETSI}, + {.ccode = "MF", .region = REGIONS_ETSI}, + {.ccode = "MH", .region = REGIONS_FCC}, + {.ccode = "MK", .region = REGIONS_ETSI}, + {.ccode = "MN", .region = REGIONS_ETSI}, + {.ccode = "MO", .region = REGIONS_ETSI}, + {.ccode = "MP", .region = REGIONS_FCC}, + {.ccode = "MQ", .region = REGIONS_ETSI}, + {.ccode = "MR", .region = REGIONS_ETSI}, + {.ccode = "MT", .region = REGIONS_ETSI}, + {.ccode = "MU", .region = REGIONS_FCC}, + {.ccode = "MV", .region = REGIONS_ETSI}, + {.ccode = "MW", .region = REGIONS_ETSI}, + {.ccode = "MX", .region = REGIONS_FCC}, + {.ccode = "MY", .region = REGIONS_FCC}, + {.ccode = "NA", .region = REGIONS_ETSI}, + {.ccode = "NG", .region = REGIONS_ETSI}, + {.ccode = "NI", .region = REGIONS_FCC}, + {.ccode = "NL", .region = REGIONS_ETSI}, + {.ccode = "NO", .region = REGIONS_ETSI}, + {.ccode = "NP", .region = REGIONS_JP}, + {.ccode = "NZ", .region = REGIONS_ETSI}, + {.ccode = "OM", .region = REGIONS_ETSI}, + {.ccode = "PA", .region = REGIONS_FCC}, + {.ccode = "PE", .region = REGIONS_FCC}, + {.ccode = "PF", .region = REGIONS_ETSI}, + {.ccode = "PG", .region = REGIONS_FCC}, + {.ccode = "PH", .region = REGIONS_FCC}, + {.ccode = "PK", .region = REGIONS_ETSI}, + {.ccode = "PL", .region = REGIONS_ETSI}, + {.ccode = "PM", .region = REGIONS_ETSI}, + {.ccode = "PR", .region = REGIONS_FCC}, + {.ccode = "PT", .region = REGIONS_ETSI}, + {.ccode = "PW", .region = REGIONS_FCC}, + {.ccode = "PY", .region = REGIONS_FCC}, + {.ccode = "QA", .region = REGIONS_ETSI}, + {.ccode = "RE", .region = REGIONS_ETSI}, + {.ccode = "RO", .region = REGIONS_ETSI}, + {.ccode = "RS", .region = REGIONS_ETSI}, + {.ccode = "RU", .region = REGIONS_ETSI}, + {.ccode = "RW", .region = REGIONS_FCC}, + {.ccode = "SA", .region = REGIONS_ETSI}, + {.ccode = "SE", .region = REGIONS_ETSI}, + {.ccode = "SG", .region = REGIONS_ETSI}, + {.ccode = "SI", .region = REGIONS_ETSI}, + {.ccode = "SK", .region = REGIONS_ETSI}, + {.ccode = "SM", .region = REGIONS_ETSI}, + {.ccode = "SN", .region = REGIONS_FCC}, + {.ccode = "SR", .region = REGIONS_ETSI}, + {.ccode = "SV", .region = REGIONS_FCC}, + {.ccode = "SY", .region = REGIONS_DEFAULT}, + {.ccode = "TC", .region = REGIONS_FCC}, + {.ccode = "TD", .region = REGIONS_ETSI}, + {.ccode = "TG", .region = REGIONS_ETSI}, + {.ccode = "TH", .region = REGIONS_FCC}, + {.ccode = "TJ", .region = REGIONS_ETSI}, + {.ccode = "TM", .region = REGIONS_ETSI}, + {.ccode = "TN", .region = REGIONS_ETSI}, + {.ccode = "TR", .region = REGIONS_ETSI}, + {.ccode = "TT", .region = REGIONS_FCC}, + {.ccode = "TW", .region = REGIONS_FCC}, + {.ccode = "UA", .region = REGIONS_ETSI}, + {.ccode = "UG", .region = REGIONS_FCC}, + {.ccode = "UY", .region = REGIONS_FCC}, + {.ccode = "UZ", .region = REGIONS_ETSI}, + {.ccode = "VC", .region = REGIONS_ETSI}, + {.ccode = "VE", .region = REGIONS_FCC}, + {.ccode = "VI", .region = REGIONS_FCC}, + {.ccode = "VN", .region = REGIONS_JP}, + {.ccode = "VU", .region = REGIONS_FCC}, + {.ccode = "WF", .region = REGIONS_ETSI}, + {.ccode = "YE", .region = REGIONS_DEFAULT}, + {.ccode = "YT", .region = REGIONS_ETSI}, + {.ccode = "ZA", .region = REGIONS_ETSI}, + {.ccode = "ZM", .region = REGIONS_ETSI}, + {.ccode = "ZW", .region = REGIONS_ETSI}, +}; + +uint8_t get_ccode_region(char * ccode) +{ + int i, cnt; + AICWFDBG(LOGDEBUG, "%s ccode:%s\r\n", __func__, ccode); + + cnt = sizeof(reg_tables) / sizeof(reg_tables[0]); + + for (i = 0; i < cnt; i++) { + if (reg_tables[i].ccode[0] == ccode[0] && + reg_tables[i].ccode[1] == ccode[1]) { + AICWFDBG(LOGDEBUG, "region: %d\r\n", reg_tables[i].region); + return reg_tables[i].region; + } + } + AICWFDBG(LOGDEBUG, "use default region\r\n"); + return REGIONS_DEFAULT; +} + +u8 get_region_index(char * name) +{ + if (strncmp(name, "SRRC", 4) == 0) + return REGIONS_SRRC; + else if (strncmp(name, "FCC", 3) == 0) + return REGIONS_FCC; + else if (strncmp(name, "ETSI", 4) == 0) + return REGIONS_ETSI; + else if (strncmp(name, "JP", 2) == 0) + return REGIONS_JP; + else if (strncmp(name, "UNSET", 5) == 0) + return REGIONS_DEFAULT; + + return REGIONS_DEFAULT; +} + + #ifdef CONFIG_POWER_LIMIT #define POWER_LIMIT_INVALID_VAL POWER_LEVEL_INVALID_VAL #define POWER_LIMIT_CC_MATCHED_BIT (0x1U << 0) +#define MAX_2_4G_BW_NUM 2 +#define MAX_5G_BW_NUM 3 +#define MAX_REGION_NUM 5 + + typedef struct { - u8_l ch_cnt_2g4; - u8_l ch_cnt_5g; - u8_l ch_num_2g4[MAC_DOMAINCHANNEL_24G_MAX]; - u8_l ch_num_5g[MAC_DOMAINCHANNEL_5G_MAX]; - s8_l max_pwr_2g4[MAC_DOMAINCHANNEL_24G_MAX]; - s8_l max_pwr_5g[MAC_DOMAINCHANNEL_5G_MAX]; + u8_l ch_cnt_2g4[MAX_2_4G_BW_NUM]; + u8_l ch_cnt_5g[MAX_5G_BW_NUM]; + u8_l ch_num_2g4[MAX_2_4G_BW_NUM][MAC_DOMAINCHANNEL_24G_MAX]; + u8_l ch_num_5g[MAX_5G_BW_NUM][MAC_DOMAINCHANNEL_5G_MAX]; + s8_l max_pwr_2g4[MAX_2_4G_BW_NUM][MAC_DOMAINCHANNEL_24G_MAX]; + s8_l max_pwr_5g[MAX_5G_BW_NUM][MAC_DOMAINCHANNEL_5G_MAX]; } txpwr_lmt_info_t; typedef struct { u32_l flags; - txpwr_lmt_info_t txpwr_lmt; + txpwr_lmt_info_t txpwr_lmt[MAX_REGION_NUM]; } powerlimit_info_t; powerlimit_info_t powerlimit_info = {0,}; @@ -1358,6 +1638,15 @@ static int rwnx_plat_patch_load(struct rwnx_hw *rwnx_hw) } #endif else + #elif defined(CONFIG_LOFT_CALIB) + if (1) { + AICWFDBG(LOGINFO, "loft calib\n"); + ret = aicwf_loft_calib_8800dc(rwnx_hw, &loft_res_local); + if (ret) { + AICWFDBG(LOGINFO, "loft calib fail: %d\n", ret); + return ret; + } + } else #endif { ret = aicwf_misc_ram_init_8800dc(rwnx_hw); @@ -1384,8 +1673,23 @@ static int rwnx_plat_patch_load(struct rwnx_hw *rwnx_hw) return ret; } } - #endif - #endif + #endif/*CONFIG_FORCE_DPD_CALIB*/ + #elif defined(CONFIG_LOFT_CALIB) + { + AICWFDBG(LOGINFO, "patch load\n"); + ret = aicwf_plat_patch_load_8800dc(rwnx_hw); + if (ret) { + AICWFDBG(LOGINFO, "load patch bin fail: %d\n", ret); + return ret; + } + AICWFDBG(LOGINFO, "loft calib\n"); + ret = aicwf_loft_calib_8800dc(rwnx_hw, &loft_res_local); + if (ret) { + AICWFDBG(LOGINFO, "loft calib fail: %d\n", ret); + return ret; + } + } + #endif/*CONFIG_DPD*/ AICWFDBG(LOGINFO, "%s load rftest bin\n", __func__); ret = aicwf_plat_rftest_load_8800dc(rwnx_hw); if (ret) { @@ -1652,6 +1956,33 @@ static int rwnx_check_fw_compatibility(struct rwnx_hw *rwnx_hw) #endif #endif /* !CONFIG_RWNX_FHOST */ +int rwnx_atoi2(char *value, int c_len) +{ + int len = 0; + int i = 0; + int result = 0; + int flag = 1; + + if (value[0] == '-') { + flag = -1; + value++; + } + len = c_len; + + for (i = 0;i < len ;i++) { + result = result * 10; + if (value[i] >= 48 && value[i] <= 57) { + result += value[i] - 48; + } else { + result = 0; + break; + } + } + + return result * flag; +} + + int rwnx_atoi(char *value) { int len = 0; @@ -1820,6 +2151,80 @@ void get_userconfig_txpwr_lvl_v3_in_fdrv(txpwr_lvl_conf_v3_t *txpwr_lvl_v3) AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_5g:%d\r\n", __func__, txpwr_lvl_v3->pwrlvl_11ax_5g[11]); } +void get_userconfig_txpwr_lvl_v4_in_fdrv(txpwr_lvl_conf_v4_t *txpwr_lvl_v4) +{ + *txpwr_lvl_v4 = userconfig_info.txpwr_lvl_v4; + + AICWFDBG(LOGINFO, "%s:enable:%d\r\n", __func__, txpwr_lvl_v4->enable); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_1m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[0]); +#if 0//comment verbose printing + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_2m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_5m5_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_11m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_6m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_9m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_12m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_18m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_24m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_36m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_48m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11b_11ag_54m_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11b_11ag_2g4[11]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_2g4:%d\r\n",__func__, txpwr_lvl_v4->pwrlvl_11n_11ac_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_2g4:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_2g4[11]); + + AICWFDBG(LOGINFO, "%s:lvl_11a_6m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11a_9m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11a_12m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11a_18m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11a_24m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11a_36m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11a_48m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11a_54m_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11a_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs0_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs1_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs2_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs3_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs4_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs5_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs6_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs7_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs8_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11n_11ac_mcs9_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11n_11ac_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs0_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[0]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs1_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[1]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs2_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[2]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs3_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[3]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs4_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[4]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs5_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[5]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs6_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[6]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs7_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[7]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs8_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[8]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs9_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[9]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs10_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[10]); + AICWFDBG(LOGINFO, "%s:lvl_11ax_mcs11_5g:%d\r\n", __func__, txpwr_lvl_v4->pwrlvl_11ax_5g[11]); +#endif +} + void get_userconfig_txpwr_lvl_adj_in_fdrv(txpwr_lvl_adj_conf_t *txpwr_lvl_adj) { *txpwr_lvl_adj = userconfig_info.txpwr_lvl_adj; @@ -1883,13 +2288,47 @@ void get_userconfig_txpwr_ofst2x_in_fdrv(txpwr_ofst2x_conf_t *txpwr_ofst2x) AICWFDBG(LOGINFO, "\n"); } +void get_userconfig_txpwr_ofst2x_v2_in_fdrv(txpwr_ofst2x_conf_v2_t *txpwr_ofst2x_v2) +{ + int type, ch_grp; + *txpwr_ofst2x_v2 = userconfig_info.txpwr_ofst2x_v2; + AICWFDBG(LOGINFO, "%s:enable :%d\r\n", __func__, txpwr_ofst2x_v2->enable); + AICWFDBG(LOGINFO, "pwrofst2x 2.4g(ant0/ant1): [0]:11b, [1]:ofdm_highrate\n" + " chan=" "\t1-4" "\t5-9" "\t10-13"); + for (type = 0; type < 2; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 3; ch_grp++) { + AICWFDBG(LOGINFO, "\t%d/%d", txpwr_ofst2x_v2->pwrofst2x_tbl_2g4_ant0[ch_grp][type], txpwr_ofst2x_v2->pwrofst2x_tbl_2g4_ant1[ch_grp][type]); + } + } + AICWFDBG(LOGINFO, "\npwrofst2x 5g: [0]:ofdm_highrate\n" + " chan=" "\t36-50" "\t51-64" "\t98-114" "\t115-130" "\t131-146" "\t147-166"); + for (type = 0; type < 1; type++) { + AICWFDBG(LOGINFO, "\n [%d] =", type); + for (ch_grp = 0; ch_grp < 6; ch_grp++) { + AICWFDBG(LOGINFO, "\t%d/%d", txpwr_ofst2x_v2->pwrofst2x_tbl_5g_ant0[ch_grp][type], txpwr_ofst2x_v2->pwrofst2x_tbl_5g_ant1[ch_grp][type]); + } + } + AICWFDBG(LOGINFO, "\n"); +} void get_userconfig_txpwr_loss(txpwr_loss_conf_t *txpwr_loss) { - txpwr_loss->loss_enable = userconfig_info.txpwr_loss.loss_enable; - txpwr_loss->loss_value = userconfig_info.txpwr_loss.loss_value; + txpwr_loss->loss_enable_2g4 = userconfig_info.txpwr_loss.loss_enable_2g4; + txpwr_loss->loss_value_2g4 = userconfig_info.txpwr_loss.loss_value_2g4; + txpwr_loss->loss_enable_5g = userconfig_info.txpwr_loss.loss_enable_5g; + txpwr_loss->loss_value_5g = userconfig_info.txpwr_loss.loss_value_5g; - AICWFDBG(LOGINFO, "%s:loss_enable:%d\r\n", __func__, txpwr_loss->loss_enable); - AICWFDBG(LOGINFO, "%s:loss_value:%d\r\n", __func__, txpwr_loss->loss_value); + AICWFDBG(LOGDEBUG, "%s:loss_enable_2g4: %d, val_2g4: %d, loss_enable_5g: %d, val_5g: %d\r\n", __func__, + txpwr_loss->loss_enable_2g4, txpwr_loss->loss_value_2g4, + txpwr_loss->loss_enable_5g, txpwr_loss->loss_value_5g); +} +void set_txpwr_loss_ofst(s8_l value) +{ + userconfig_info.txpwr_loss.loss_enable_2g4 = 1; + userconfig_info.txpwr_loss.loss_value_2g4 = -value; + userconfig_info.txpwr_loss.loss_enable_5g = 1; + userconfig_info.txpwr_loss.loss_value_5g = -value; + AICWFDBG(LOGINFO, "%s:value:%d\r\n", __func__, value); } void get_userconfig_xtal_cap(xtal_cap_conf_t *xtal_cap) @@ -2117,10 +2556,14 @@ void rwnx_plat_nvram_set_value(char *command, char *value) userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[4] = rwnx_atoi(value); } else if (!strcmp(command, "lvl_adj_5g_chan_155")) { userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[5] = rwnx_atoi(value); - } else if (!strcmp(command, "loss_enable")) { - userconfig_info.txpwr_loss.loss_enable = rwnx_atoi(value); - } else if (!strcmp(command, "loss_value")) { - userconfig_info.txpwr_loss.loss_value = rwnx_atoi(value); + } else if (!strcmp(command, "loss_enable_2g4")) { + userconfig_info.txpwr_loss.loss_enable_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "loss_value_2g4")) { + userconfig_info.txpwr_loss.loss_value_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "loss_enable_5g")) { + userconfig_info.txpwr_loss.loss_enable_5g = rwnx_atoi(value); + } else if (!strcmp(command, "loss_value_5g")) { + userconfig_info.txpwr_loss.loss_value_5g = rwnx_atoi(value); } else if (!strcmp(command, "ofst_enable")) { userconfig_info.txpwr_ofst.enable = rwnx_atoi(value); userconfig_info.txpwr_ofst2x.enable = rwnx_atoi(value); @@ -2155,7 +2598,7 @@ void rwnx_plat_nvram_set_value(char *command, char *value) } else if (!strcmp(command, "ofst_2g4_ofdm_lowrate_chan_5_9")) { userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[2][1] = rwnx_atoi(value); } else if (!strcmp(command, "ofst_2g4_ofdm_lowrate_chan_10_13")) { - userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[2][0] = rwnx_atoi(value); + userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_2g4[2][2] = rwnx_atoi(value); } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_42")) { userconfig_info.txpwr_ofst2x.pwrofst2x_tbl_5g[0][0] = rwnx_atoi(value); } else if (!strcmp(command, "ofst_5g_ofdm_lowrate_chan_58")) { @@ -2203,6 +2646,293 @@ void rwnx_plat_nvram_set_value(char *command, char *value) } } +void rwnx_plat_nvram_set_value_8800d80x2(char *command, char *value) +{ + //TODO send command + AICWFDBG(LOGINFO, "%s:command=%s value=%s\n", __func__, command, value); + if (!strcmp(command, "enable")) { + userconfig_info.txpwr_lvl_v4.enable = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_1m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[0] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_2m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[1] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_5m5_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[2] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_11m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[3] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_6m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[4] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_9m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[5] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_12m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[6] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_18m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[7] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_24m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[8] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_36m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[9] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_48m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[10] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11b_11ag_54m_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11b_11ag_2g4[11] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs0_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[0] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs1_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[1] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs2_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[2] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs3_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[3] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs4_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[4] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs5_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[5] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs6_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[6] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs7_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[7] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs8_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[8] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs9_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_2g4[9] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs0_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[0] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs1_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[1] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs2_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[2] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs3_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[3] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs4_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[4] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs5_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[5] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs6_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[6] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs7_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[7] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs8_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[8] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs9_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[9] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs10_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[10] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs11_2g4")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_2g4[11] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_6m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[0] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_9m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[1] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_12m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[2] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_18m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[3] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_24m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[4] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_36m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[5] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_48m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[6] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11a_54m_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11a_5g[7] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs0_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[0] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs1_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[1] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs2_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[2] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs3_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[3] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs4_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[4] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs5_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[5] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs6_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[6] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs7_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[7] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs8_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[8] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11n_11ac_mcs9_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11n_11ac_5g[9] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs0_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[0] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs1_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[1] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs2_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[2] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs3_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[3] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs4_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[4] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs5_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[5] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs6_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[6] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs7_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[7] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs8_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[8] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs9_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[9] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs10_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[10] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_11ax_mcs11_5g")) { + userconfig_info.txpwr_lvl_v4.pwrlvl_11ax_5g[11] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_enable")) { + userconfig_info.txpwr_lvl_adj.enable = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_2g4_chan_1_4")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[0] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_2g4_chan_5_9")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[1] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_2g4_chan_10_13")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_2g4[2] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_42")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[0] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_58")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[1] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_106")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[2] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_122")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[3] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_138")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[4] = rwnx_atoi(value); + } else if (!strcmp(command, "lvl_adj_5g_chan_155")) { + userconfig_info.txpwr_lvl_adj.pwrlvl_adj_tbl_5g[5] = rwnx_atoi(value); + } else if (!strcmp(command, "loss_enable_2g4")) { + userconfig_info.txpwr_loss.loss_enable_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "loss_value_2g4")) { + userconfig_info.txpwr_loss.loss_value_2g4 = rwnx_atoi(value); + } else if (!strcmp(command, "loss_enable_5g")) { + userconfig_info.txpwr_loss.loss_enable_5g = rwnx_atoi(value); + } else if (!strcmp(command, "loss_value_5g")) { + userconfig_info.txpwr_loss.loss_value_5g = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_enable")) { + userconfig_info.txpwr_ofst2x_v2.enable = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_11b_chan_1_4")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[0][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_11b_chan_5_9")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[1][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_11b_chan_10_13")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[2][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_ofdm_highrate_chan_1_4")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[0][1] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_ofdm_highrate_chan_5_9")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[1][1] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant0_ofdm_highrate_chan_10_13")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant0[2][1] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_11b_chan_1_4")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[0][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_11b_chan_5_9")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[1][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_11b_chan_10_13")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[2][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_ofdm_highrate_chan_1_4")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[0][1] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_ofdm_highrate_chan_5_9")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[1][1] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_2g4_ant1_ofdm_highrate_chan_10_13")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_2g4_ant1[2][1] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_42")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[0][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_58")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[1][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_106")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[2][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_122")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[3][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_138")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[4][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant0_ofdm_highrate_chan_155")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant0[5][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_42")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[0][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_58")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[1][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_106")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[2][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_122")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[3][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_138")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[4][0] = rwnx_atoi(value); + } else if (!strcmp(command, "ofst_5g_ant1_ofdm_highrate_chan_155")) { + userconfig_info.txpwr_ofst2x_v2.pwrofst2x_tbl_5g_ant1[5][0] = rwnx_atoi(value); + } else if (!strcmp(command, "xtal_enable")) { + userconfig_info.xtal_cap.enable = rwnx_atoi(value); + } else if (!strcmp(command, "xtal_cap")) { + userconfig_info.xtal_cap.xtal_cap = rwnx_atoi(value); + } else if (!strcmp(command, "xtal_cap_fine")) { + userconfig_info.xtal_cap.xtal_cap_fine = rwnx_atoi(value); + } else { + AICWFDBG(LOGERROR, "invalid cmd: %s\n", command); + } +} + +void rwnx_plat_userconfig_parsing_8800d80x2(char *buffer, int size) +{ + int i = 0; + int parse_state = 0; + char command[100]; + char value[100]; + int char_counter = 0; + + memset(command, 0, 64); + memset(value, 0, 100); + + for (i = 0; i < size; i++) { + //Send command or print nvram log when char is \r or \n + if (buffer[i] == 0x0a || buffer[i] == 0x0d) { + if (command[0] != 0 && value[0] != 0) { + if (parse_state == PRINT) { + AICWFDBG(LOGINFO, "%s:%s\r\n", __func__, value); + } else if (parse_state == GET_VALUE) { + rwnx_plat_nvram_set_value_8800d80x2(command, value); + } + } + //Reset command value and char_counter + memset(command, 0, 64); + memset(value, 0, 100); + char_counter = 0; + parse_state = INIT; + continue; + } + + //Switch parser state + if (parse_state == INIT) { + if (buffer[i] == '#') { + parse_state = PRINT; + continue; + } else if (buffer[i] == 0x0a || buffer[i] == 0x0d) { + parse_state = INIT; + continue; + } else { + parse_state = CMD; + } + } + + //Fill data to command and value + if (parse_state == PRINT) { + command[0] = 0x01; + value[char_counter] = buffer[i]; + char_counter++; + } else if (parse_state == CMD) { + if (command[0] != 0 && buffer[i] == '=') { + parse_state = GET_VALUE; + char_counter = 0; + continue; + } + command[char_counter] = buffer[i]; + char_counter++; + } else if (parse_state == GET_VALUE) { + if(buffer[i] != 0x2D && (buffer[i] < 0x30 || buffer[i] > 0x39)) { + continue; + } + value[char_counter] = buffer[i]; + char_counter++; + } + } +} void rwnx_plat_userconfig_parsing(char *buffer, int size) { @@ -2343,6 +3073,48 @@ int GetS1ByteIntegerFromStringInDecimal(char *str, s8 *val) return 1; } +int8_t rwnx_plat_powerlimit_save(u8_l band, char *channel, u8_l bw, char *limit, char *name) +{ + u8 channel_num, powerLimit_val, reg_idx; + + if (GetU1ByteIntegerFromStringInDecimal((char *)channel, &channel_num) == 0 + || GetS1ByteIntegerFromStringInDecimal((char *)limit, &powerLimit_val) == 0) { + AICWFDBG(LOGERROR, "Illegal index of power limit table [ch %s][val %s]\n", channel, limit); + return -1; + } + + reg_idx = get_region_index(name); + + if (band == PHY_BAND_2G4) { + uint8_t cur_idx = powerlimit_info.txpwr_lmt[reg_idx].ch_cnt_2g4[bw]; + AICWFDBG(LOGINFO, "reg_idx=%d, band=%d, bw=%d, cur_idx=%d, ch=%s, pwr=%s\n", + reg_idx, band, bw, cur_idx, channel, limit); + if (cur_idx < MAC_DOMAINCHANNEL_24G_MAX) { + powerlimit_info.txpwr_lmt[reg_idx].ch_num_2g4[bw][cur_idx] = channel_num; + powerlimit_info.txpwr_lmt[reg_idx].max_pwr_2g4[bw][cur_idx] = powerLimit_val; + powerlimit_info.txpwr_lmt[reg_idx].ch_cnt_2g4[bw]++; + } else { + AICWFDBG(LOGERROR, "band %d chan_cnt reached %d\n", band, MAC_DOMAINCHANNEL_24G_MAX); + AICWFDBG(LOGERROR, "channel=%s(%d) powerLimit=%s(%d)\n", channel, channel_num, limit, powerLimit_val); + } + } else if (band == PHY_BAND_5G) { + uint8_t cur_idx = powerlimit_info.txpwr_lmt[reg_idx].ch_cnt_5g[bw]; + AICWFDBG(LOGINFO, "reg_idx=%d, band=%d, bw=%d, cur_idx=%d, ch=%s, pwr=%s\n", + reg_idx, band, bw, cur_idx, channel, limit); + if (cur_idx < MAC_DOMAINCHANNEL_5G_MAX) { + powerlimit_info.txpwr_lmt[reg_idx].ch_num_5g[bw][cur_idx] = channel_num; + powerlimit_info.txpwr_lmt[reg_idx].max_pwr_5g[bw][cur_idx] = powerLimit_val; + powerlimit_info.txpwr_lmt[reg_idx].ch_cnt_5g[bw]++; + } else { + AICWFDBG(LOGERROR, "band %d chan_cnt reached %d\n", band, MAC_DOMAINCHANNEL_5G_MAX); + AICWFDBG(LOGERROR, "channel=%s(%d) powerLimit=%s(%d)\n", channel, channel_num, limit, powerLimit_val); + } + } + + return 0; +} + + void rwnx_plat_powerlimit_parsing(char *buffer, int size, char *cc) { #define LD_STAGE_EXC_MAPPING 0 @@ -2351,224 +3123,236 @@ void rwnx_plat_powerlimit_parsing(char *buffer, int size, char *cc) #define LD_STAGE_COLUMN_DEFINE 3 #define LD_STAGE_CH_ROW 4 - uint8_t loadingStage = LD_STAGE_EXC_MAPPING; - uint32_t i = 0, forCnt = 0; - uint32_t i_cc; - char *szLine, *ptmp; - char band[10], colNumBuf[10]; - uint8_t colNum = 0, colNum_cc = 255, band_cc = 0; - // clear powerlimit info at first - memset((void *)&powerlimit_info, 0, sizeof(powerlimit_info_t)); - ptmp = buffer; - for (szLine = GetLineFromBuffer(ptmp); szLine != NULL; szLine = GetLineFromBuffer(ptmp)) { - if (isAllSpaceOrTab(szLine, sizeof(*szLine))) - continue; - if (IsCommentString(szLine)) - continue; + uint8_t loadingStage = LD_STAGE_EXC_MAPPING; + uint32_t i = 0, forCnt = 0; + uint32_t i_cc; + char *szLine, *ptmp; + char band[10], colNumBuf[10], bandwidth[10]; + uint8_t colNum = 0, band_cc = 0, bw_cc = 0; + char **reg_name = NULL; + // clear powerlimit info at first + memset((void *)&powerlimit_info, 0, sizeof(powerlimit_info_t)); + ptmp = buffer; + for (szLine = GetLineFromBuffer(ptmp); szLine != NULL; szLine = GetLineFromBuffer(ptmp)) { + if (isAllSpaceOrTab(szLine, sizeof(*szLine))) + continue; + if (IsCommentString(szLine)) + continue; - if (loadingStage == LD_STAGE_EXC_MAPPING) { - if (szLine[0] == '#' || szLine[1] == '#') { - loadingStage = LD_STAGE_TAB_DEFINE; - } else { - continue; - } - } + if (loadingStage == LD_STAGE_EXC_MAPPING) { + if (szLine[0] == '#' || szLine[1] == '#') { + loadingStage = LD_STAGE_TAB_DEFINE; + } else { + continue; + } + } - if (loadingStage == LD_STAGE_TAB_DEFINE) { - /* read "## 2.4G" */ - if (szLine[0] != '#' || szLine[1] != '#') - continue; + if (loadingStage == LD_STAGE_TAB_DEFINE) { + /* read "## 2.4G" */ + if (szLine[0] != '#' || szLine[1] != '#') + continue; - /* skip the space */ - i = 2; - while (szLine[i] == ' ' || szLine[i] == '\t') - ++i; + /* skip the space */ + i = 2; + while (szLine[i] == ' ' || szLine[i] == '\t') + ++i; - szLine[--i] = ' '; /* return the space in front of the regulation info */ + szLine[--i] = ' '; /* return the space in front of the regulation info */ - /* Parse the label of the table */ - memset((void *)band, 0, 10); - if (!ParseQualifiedString(szLine, &i, band, ' ', ',')) { - AICWFDBG(LOGERROR, "Fail to parse band!\n"); - goto exit; - } - if (strncmp(band, "2.4G", 4) == 0) { - band_cc = PHY_BAND_2G4; - } else if (strncmp(band, "5G", 2) == 0) { - band_cc = PHY_BAND_5G; - } - memset((void *) colNumBuf, 0, 10); - if (!ParseQualifiedString(szLine, &i, colNumBuf, '#', '#')) { - AICWFDBG(LOGERROR, "Fail to parse column number!\n"); - goto exit; - } - if (!GetU1ByteIntegerFromStringInDecimal(colNumBuf, &colNum)) { - AICWFDBG(LOGERROR, "Column number \"%s\" is not unsigned decimal\n", colNumBuf); - goto exit; - } - if (colNum == 0) { - AICWFDBG(LOGERROR, "Column number is 0\n"); - goto exit; - } + /* Parse the label of the table */ + memset((void *)band, 0, 10); + memset((void *)bandwidth, 0, 10); + memset((void *)colNumBuf, 0, 10); - AICWFDBG(LOGINFO, "band=%s(%d)\n", band, band_cc); - loadingStage = LD_STAGE_TAB_START; - } else if (loadingStage == LD_STAGE_TAB_START) { - /* read "## START" */ - if (szLine[0] != '#' || szLine[1] != '#') - continue; + if (!ParseQualifiedString(szLine, &i, band, ' ', ',')) { + AICWFDBG(LOGERROR, "Fail to parse band!\n"); + goto exit; + } + if (strncmp(band, "2.4G", 4) == 0) { + band_cc = PHY_BAND_2G4; + } else if (strncmp(band, "5G", 2) == 0) { + band_cc = PHY_BAND_5G; + } - /* skip the space */ - i = 2; - while (szLine[i] == ' ' || szLine[i] == '\t') - ++i; + if (!ParseQualifiedString(szLine, &i, bandwidth, ' ', ',')) { + AICWFDBG(LOGERROR, "Fail to parse bandwidth!\n"); + goto exit; + } + if (strncmp(bandwidth, "20M", 3) == 0) + bw_cc = PHY_CHNL_BW_20; + else if (strncmp(bandwidth, "40M", 3) == 0) + bw_cc = PHY_CHNL_BW_40; + else if (strncmp(bandwidth, "80M", 3) == 0) + bw_cc = PHY_CHNL_BW_80; - if (strncmp((u8 *)(szLine + i), "START", 5)) { - AICWFDBG(LOGERROR, "Missing \"## START\" label\n"); - goto exit; - } + if (!ParseQualifiedString(szLine, &i, colNumBuf, '#', '#')) { + AICWFDBG(LOGERROR, "Fail to parse column number!\n"); + goto exit; + } + if (!GetU1ByteIntegerFromStringInDecimal(colNumBuf, &colNum)) { + AICWFDBG(LOGERROR, "Column number \"%s\" is not unsigned decimal\n", colNumBuf); + goto exit; + } + if (colNum == 0) { + AICWFDBG(LOGERROR, "Column number is 0\n"); + goto exit; + } - loadingStage = LD_STAGE_COLUMN_DEFINE; - } else if (loadingStage == LD_STAGE_COLUMN_DEFINE) { - /* read "## CN US" */ - if (szLine[0] != '#' || szLine[1] != '#') - continue; + AICWFDBG(LOGINFO, "band=%s, bandwidth=%s, colnum=%d\n", band, bandwidth, colNum); + loadingStage = LD_STAGE_TAB_START; + } else if (loadingStage == LD_STAGE_TAB_START) { + /* read "## START" */ + if (szLine[0] != '#' || szLine[1] != '#') + continue; - /* skip the space */ - i = 2; - while (szLine[i] == ' ' || szLine[i] == '\t') - ++i; + /* skip the space */ + i = 2; + while (szLine[i] == ' ' || szLine[i] == '\t') + ++i; - for (forCnt = 0; forCnt < colNum; forCnt++) { - /* skip the space */ - while (szLine[i] == ' ' || szLine[i] == '\t') - i++; - i_cc = i; + if (strncmp((u8 *)(szLine + i), "START", 5)) { + AICWFDBG(LOGERROR, "Missing \"## START\" label\n"); + goto exit; + } - while (szLine[i] != ' ' && szLine[i] != '\t' && szLine[i] != '\0') - i++; + loadingStage = LD_STAGE_COLUMN_DEFINE; + } else if (loadingStage == LD_STAGE_COLUMN_DEFINE) { + /* read "## FCC ETSI" */ + if (szLine[0] != '#' || szLine[1] != '#') + continue; - if ((i - i_cc) != 2) { - AICWFDBG(LOGERROR, "CC len err\n"); - goto exit; - } else if ((szLine[i_cc] == cc[0]) && (szLine[i_cc + 1] == cc[1])) { - AICWFDBG(LOGINFO, "CC matched: %s, col=%d\n", cc, forCnt); - colNum_cc = forCnt; - powerlimit_info.flags |= POWER_LIMIT_CC_MATCHED_BIT; - break; - } - } + /* skip the space */ + i = 2; + while (szLine[i] == ' ' || szLine[i] == '\t') + ++i; - loadingStage = LD_STAGE_CH_ROW; - } else if (loadingStage == LD_STAGE_CH_ROW) { - char channel[10] = {0}, powerLimit[10] = {0}; - u8 channel_num, powerLimit_val, cnt = 0; + reg_name = (char **)kmalloc(sizeof(char *) * colNum, GFP_KERNEL); + if (!reg_name) { + AICWFDBG(LOGERROR, "reg_name alloc fail\n"); + goto exit; + } - /* the table ends */ - if (szLine[0] == '#' && szLine[1] == '#') { - i = 2; - while (szLine[i] == ' ' || szLine[i] == '\t') - ++i; + for (forCnt = 0; forCnt < colNum; ++forCnt) { + /* skip the space */ + while (szLine[i] == ' ' || szLine[i] == '\t') + i++; + i_cc = i; - if (strncmp((u8 *)(szLine + i), "END", 3) == 0) { - loadingStage = LD_STAGE_TAB_DEFINE; - colNum = 0; - continue; - } else { - AICWFDBG(LOGERROR, "Missing \"## END\" label\n"); - goto exit; - } - } + while (szLine[i] != ' ' && szLine[i] != '\t' && szLine[i] != '\0') + i++; - if ((szLine[0] != 'c' && szLine[0] != 'C') || - (szLine[1] != 'h' && szLine[1] != 'H') - ) { - AICWFDBG(LOGERROR, "Wrong channel prefix: '%c','%c'(%d,%d)\n", szLine[0], szLine[1], szLine[0], szLine[1]); - continue; - } - i = 2;/* move to the location behind 'h' */ + reg_name[forCnt] = (char *)kmalloc(i - i_cc + 1, GFP_KERNEL); + if (!reg_name[forCnt]) { + AICWFDBG(LOGERROR, "reg_name element alloc fail\n"); + goto exit; + } - /* load the channel number */ - cnt = 0; - while (szLine[i] >= '0' && szLine[i] <= '9') { - channel[cnt] = szLine[i]; - ++cnt; - ++i; - } + strncpy(reg_name[forCnt], szLine + i_cc, i - i_cc); + reg_name[forCnt][i - i_cc] = '\0'; + AICWFDBG(LOGINFO, "reg_name: %s\n", reg_name[forCnt]); - for (forCnt = 0; forCnt < colNum; ++forCnt) { - /* skip the space between channel number and the power limit value */ - while (szLine[i] == ' ' || szLine[i] == '\t') - ++i; + } - /* load the power limit value */ - memset((void *)powerLimit, 0, 10); + loadingStage = LD_STAGE_CH_ROW; + } else if (loadingStage == LD_STAGE_CH_ROW) { + char channel[10] = {0}, powerLimit[10] = {0}; + u8 cnt = 0; - if (szLine[i] == 'N' && szLine[i + 1] == 'A') { - /* - * means channel not available - */ - sprintf(powerLimit, "%d", POWER_LIMIT_INVALID_VAL); - i += 2; - } else if ((szLine[i] >= '0' && szLine[i] <= '9') - || szLine[i] == '+' || szLine[i] == '-' - ) { - /* case of dBm value */ - cnt = 0; - while ((szLine[i] >= '0' && szLine[i] <= '9') - || szLine[i] == '+' || szLine[i] == '-' - ) { - powerLimit[cnt] = szLine[i]; - ++cnt; - ++i; - } - } else { - AICWFDBG(LOGERROR, "Wrong limit expression \"%c%c\"(%d, %d)\n" - , szLine[i], szLine[i + 1], szLine[i], szLine[i + 1]); - goto exit; - } + /* the table ends */ + if (szLine[0] == '#' && szLine[1] == '#') { + i = 2; + while (szLine[i] == ' ' || szLine[i] == '\t') + ++i; - if (forCnt == colNum_cc) { - /* store the power limit value */ - if (GetU1ByteIntegerFromStringInDecimal((char *)channel, &channel_num) == 0 - || GetS1ByteIntegerFromStringInDecimal((char *)powerLimit, &powerLimit_val) == 0 - ) { - AICWFDBG(LOGERROR, "Illegal index of power limit table [ch %s][val %s]\n", channel, powerLimit); - goto exit; - } + if (strncmp((u8 *)(szLine + i), "END", 3) == 0) { + loadingStage = LD_STAGE_TAB_DEFINE; + if (reg_name) { + for (forCnt = 0; forCnt < colNum; ++forCnt) { + if (reg_name[forCnt]) { + kfree(reg_name[forCnt]); + reg_name[forCnt] = NULL; + } + } + kfree(reg_name); + reg_name = NULL; + } + colNum = 0; + continue; + } else { + AICWFDBG(LOGERROR, "Missing \"## END\" label\n"); + goto exit; + } + } - if (band_cc == PHY_BAND_2G4) { - uint8_t cur_idx = powerlimit_info.txpwr_lmt.ch_cnt_2g4; - AICWFDBG(LOGINFO, "[%d]: ch=%s, pwr=%s\n", cur_idx, channel, powerLimit); - if (cur_idx < MAC_DOMAINCHANNEL_24G_MAX) { - powerlimit_info.txpwr_lmt.ch_num_2g4[cur_idx] = channel_num; - powerlimit_info.txpwr_lmt.max_pwr_2g4[cur_idx] = powerLimit_val; - powerlimit_info.txpwr_lmt.ch_cnt_2g4++; - } else { - AICWFDBG(LOGERROR, "band %d chan_cnt reached %d\n", band_cc, MAC_DOMAINCHANNEL_24G_MAX); - AICWFDBG(LOGERROR, "channel=%s(%d) powerLimit=%s(%d)\n", channel, channel_num, powerLimit, powerLimit_val); - } - } else if (band_cc == PHY_BAND_5G) { - uint8_t cur_idx = powerlimit_info.txpwr_lmt.ch_cnt_5g; - AICWFDBG(LOGINFO, "[%d]: ch=%s, pwr=%s\n", cur_idx, channel, powerLimit); - if (cur_idx < MAC_DOMAINCHANNEL_5G_MAX) { - powerlimit_info.txpwr_lmt.ch_num_5g[cur_idx] = channel_num; - powerlimit_info.txpwr_lmt.max_pwr_5g[cur_idx] = powerLimit_val; - powerlimit_info.txpwr_lmt.ch_cnt_5g++; - } else { - AICWFDBG(LOGERROR, "band %d chan_cnt reached %d\n", band_cc, MAC_DOMAINCHANNEL_5G_MAX); - AICWFDBG(LOGERROR, "channel=%s(%d) powerLimit=%s(%d)\n", channel, channel_num, powerLimit, powerLimit_val); - } - } - break; - } - } - } - } + if ((szLine[0] != 'c' && szLine[0] != 'C') || + (szLine[1] != 'h' && szLine[1] != 'H')) { + AICWFDBG(LOGERROR, "Wrong channel prefix: '%c','%c'(%d,%d)\n", szLine[0], szLine[1], szLine[0], szLine[1]); + continue; + } + i = 2;/* move to the location behind 'h' */ + + /* load the channel number */ + cnt = 0; + while (szLine[i] >= '0' && szLine[i] <= '9') { + channel[cnt] = szLine[i]; + ++cnt; + ++i; + } + + for (forCnt = 0; forCnt < colNum; ++forCnt) { + /* skip the space between channel number and the power limit value */ + while (szLine[i] == ' ' || szLine[i] == '\t') + ++i; + + /* load the power limit value */ + memset((void *)powerLimit, 0, 10); + + if (szLine[i] == 'N' && szLine[i + 1] == 'A') { + /* + * means channel not available + */ + sprintf(powerLimit, "%d", POWER_LIMIT_INVALID_VAL); + i += 2; + } else if ((szLine[i] >= '0' && szLine[i] <= '9') + || szLine[i] == '+' || szLine[i] == '-') { + /* case of dBm value */ + cnt = 0; + while ((szLine[i] >= '0' && szLine[i] <= '9') + || szLine[i] == '+' || szLine[i] == '-' + ) { + powerLimit[cnt] = szLine[i]; + ++cnt; + ++i; + } + } else { + AICWFDBG(LOGERROR, "Wrong limit expression \"%c%c\"(%d, %d)\n", + szLine[i], szLine[i + 1], szLine[i], szLine[i + 1]); + goto exit; + } + + if (rwnx_plat_powerlimit_save(band_cc, channel, bw_cc, powerLimit, reg_name[forCnt]) < 0) + goto exit; + } + } + } + + powerlimit_info.flags |= POWER_LIMIT_CC_MATCHED_BIT; exit: - return; + if (reg_name) { + for (forCnt = 0; forCnt < colNum; ++forCnt) { + if (reg_name[forCnt]) { + kfree(reg_name[forCnt]); + reg_name[forCnt] = NULL; + } + } + kfree(reg_name); + reg_name = NULL; + } + + return; } + /// 5G lower bound freq #define PHY_FREQ_5G 5000 @@ -2585,78 +3369,83 @@ uint16_t phy_channel_to_freq(uint8_t band, int channel) return 0; } -int8_t get_powerlimit_by_freq(uint8_t band, uint16_t freq) +int8_t get_powerlimit_by_freq(uint8_t band, uint16_t freq, uint8_t r_idx) { - int8_t ret = POWER_LIMIT_INVALID_VAL; - uint8_t idx; - if (powerlimit_info.flags & POWER_LIMIT_CC_MATCHED_BIT) { - if (band == PHY_BAND_2G4) { - uint8_t idx_cnt = powerlimit_info.txpwr_lmt.ch_cnt_2g4; - for (idx = 0; idx < idx_cnt; idx++) { - int ch_num = powerlimit_info.txpwr_lmt.ch_num_2g4[idx]; - uint16_t freq_tmp = phy_channel_to_freq(PHY_BAND_2G4, ch_num); - if (freq == freq_tmp) { - ret = powerlimit_info.txpwr_lmt.max_pwr_2g4[idx]; - //AICWFDBG(LOGINFO, "[%d]: ch=%d(freq=%d), pwr=%d\n", idx, ch_num, freq, ret); - break; - } - } - if (idx == idx_cnt) { - AICWFDBG(LOGERROR, "powerlimit search failed: band=%d freq=%d\n", band, freq); - } - } else if (band == PHY_BAND_5G) { - uint8_t idx_cnt = powerlimit_info.txpwr_lmt.ch_cnt_5g; - for (idx = 0; idx < idx_cnt; idx++) { - int ch_num = powerlimit_info.txpwr_lmt.ch_num_5g[idx]; - uint16_t freq_tmp = phy_channel_to_freq(PHY_BAND_5G, ch_num); - if (freq == freq_tmp) { - ret = powerlimit_info.txpwr_lmt.max_pwr_5g[idx]; - //AICWFDBG(LOGINFO, "[%d]: ch=%d(freq=%d), pwr=%d\n", idx, ch_num, freq, ret); - break; - } - } - if (idx == idx_cnt) { - AICWFDBG(LOGERROR, "powerlimit search failed: band=%d freq=%d\n", band, freq); - } - } - } + int8_t ret = POWER_LIMIT_INVALID_VAL; + uint8_t idx; + if (!(powerlimit_info.flags & POWER_LIMIT_CC_MATCHED_BIT)) { + AICWFDBG(LOGERROR, "powerlimit flag not set\n"); + return ret; + } + + if (band == PHY_BAND_2G4) { + uint8_t idx_cnt = powerlimit_info.txpwr_lmt[r_idx].ch_cnt_2g4[0]; + for (idx = 0; idx < idx_cnt; idx++) { + int ch_num = powerlimit_info.txpwr_lmt[r_idx].ch_num_2g4[0][idx]; + uint16_t freq_tmp = phy_channel_to_freq(PHY_BAND_2G4, ch_num); + if (freq == freq_tmp) { + ret = powerlimit_info.txpwr_lmt[r_idx].max_pwr_2g4[0][idx]; + AICWFDBG(LOGINFO, "[%d]: ch=%d(freq=%d), pwr=%d\n", idx, ch_num, freq, ret); + break; + } + } + if (idx == idx_cnt) + AICWFDBG(LOGERROR, "powerlimit search failed: band=%d freq=%d\n", band, freq); + } else if (band == PHY_BAND_5G) { + uint8_t idx_cnt = powerlimit_info.txpwr_lmt[r_idx].ch_cnt_5g[0]; + for (idx = 0; idx < idx_cnt; idx++) { + int ch_num = powerlimit_info.txpwr_lmt[r_idx].ch_num_5g[0][idx]; + uint16_t freq_tmp = phy_channel_to_freq(PHY_BAND_5G, ch_num); + if (freq == freq_tmp) { + ret = powerlimit_info.txpwr_lmt[r_idx].max_pwr_5g[0][idx]; + AICWFDBG(LOGINFO, "[%d]: ch=%d(freq=%d), pwr=%d\n", idx, ch_num, freq, ret); + break; + } + } + if (idx == idx_cnt) + AICWFDBG(LOGERROR, "powerlimit search failed: band=%d freq=%d\n", band, freq); + } return ret; } -int8_t get_powerlimit_by_chnum(uint8_t chnum) +int8_t get_powerlimit_by_chnum(uint8_t chnum, uint8_t r_idx, uint8_t bw) { - int8_t ret = POWER_LIMIT_INVALID_VAL; - uint8_t idx; - if (powerlimit_info.flags & POWER_LIMIT_CC_MATCHED_BIT) { - if (chnum <= 14) { - uint8_t idx_cnt = powerlimit_info.txpwr_lmt.ch_cnt_2g4; - for (idx = 0; idx < idx_cnt; idx++) { - uint8_t ch_num = powerlimit_info.txpwr_lmt.ch_num_2g4[idx]; - if (chnum == ch_num) { - ret = powerlimit_info.txpwr_lmt.max_pwr_2g4[idx]; - //AICWFDBG(LOGINFO, "[%d]: ch=%d, pwr=%d\n", idx, ch_num, ret); - break; - } - } - if (idx == idx_cnt) { - AICWFDBG(LOGERROR, "powerlimit search failed: chnum=%d\n", chnum); - } - } else if (chnum <= 165) { - uint8_t idx_cnt = powerlimit_info.txpwr_lmt.ch_cnt_5g; - for (idx = 0; idx < idx_cnt; idx++) { - int ch_num = powerlimit_info.txpwr_lmt.ch_num_5g[idx]; - if (chnum == ch_num) { - ret = powerlimit_info.txpwr_lmt.max_pwr_5g[idx]; - //AICWFDBG(LOGINFO, "[%d]: ch=%d, pwr=%d\n", idx, ch_num, ret); - break; - } - } - if (idx == idx_cnt) { - AICWFDBG(LOGERROR, "powerlimit search failed: chnum=%d\n", chnum); - } - } - } - return ret; + int8_t ret = POWER_LIMIT_INVALID_VAL; + uint8_t idx; + if (!(powerlimit_info.flags & POWER_LIMIT_CC_MATCHED_BIT)) { + AICWFDBG(LOGERROR, "powerlimit flag not set\n"); + return ret; + } + + if (chnum <= 14) { + uint8_t idx_cnt = powerlimit_info.txpwr_lmt[r_idx].ch_cnt_2g4[bw]; + for (idx = 0; idx < idx_cnt; idx++) { + uint8_t ch_num = powerlimit_info.txpwr_lmt[r_idx].ch_num_2g4[bw][idx]; + if (chnum == ch_num) { + ret = powerlimit_info.txpwr_lmt[r_idx].max_pwr_2g4[bw][idx]; + AICWFDBG(LOGINFO, "[%d]: ch=%d, pwr=%d\n", idx, ch_num, ret); + break; + } + } + if (idx == idx_cnt) + AICWFDBG(LOGERROR, "%s powerlimit search failed: chnum=%d, please confirm the center frequency\n", + __func__, chnum); + } else if (chnum <= 165) { + uint8_t idx_cnt = powerlimit_info.txpwr_lmt[r_idx].ch_cnt_5g[bw]; + for (idx = 0; idx < idx_cnt; idx++) { + uint8_t ch_num = powerlimit_info.txpwr_lmt[r_idx].ch_num_5g[bw][idx]; + if (chnum == ch_num) { + ret = powerlimit_info.txpwr_lmt[r_idx].max_pwr_5g[bw][idx]; + AICWFDBG(LOGINFO, "[%d]: ch=%d, pwr=%d\n", idx, ch_num, ret); + break; + } + } + if (idx == idx_cnt) + AICWFDBG(LOGERROR, "%s powerlimit search failed: chnum=%d, please confirm the center frequency\n", + __func__, chnum); + } + + return ret; } #endif @@ -2678,6 +3467,9 @@ static int rwnx_plat_userconfig_load(struct rwnx_hw *rwnx_hw) { #endif }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81){ rwnx_plat_userconfig_load_8800d80(rwnx_hw); + }else if(rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D81X2 || + rwnx_hw->usbdev->chipid == PRODUCT_ID_AIC8800D89X2){ + rwnx_plat_userconfig_load_8800d80x2(rwnx_hw); } return 0; diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_platform.h b/drivers/aic8800/aic8800_fdrv/rwnx_platform.h index e957763..7d54740 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_platform.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_platform.h @@ -64,6 +64,31 @@ enum rwnx_platform_addr { RWNX_ADDR_MAX, }; +typedef struct +{ + txpwr_lvl_conf_t txpwr_lvl; + txpwr_lvl_conf_v2_t txpwr_lvl_v2; + txpwr_lvl_conf_v3_t txpwr_lvl_v3; + txpwr_lvl_conf_v4_t txpwr_lvl_v4; + txpwr_lvl_adj_conf_t txpwr_lvl_adj; + txpwr_loss_conf_t txpwr_loss; + txpwr_ofst_conf_t txpwr_ofst; + txpwr_ofst2x_conf_t txpwr_ofst2x; + txpwr_ofst2x_conf_v2_t txpwr_ofst2x_v2; + xtal_cap_conf_t xtal_cap; +} userconfig_info_t; + +extern userconfig_info_t userconfig_info; + +typedef enum { + REGIONS_SRRC, + REGIONS_FCC, + REGIONS_ETSI, + REGIONS_JP, + REGIONS_DEFAULT, +} Regions_code; + + struct rwnx_hw; /** @@ -129,15 +154,24 @@ int is_file_exist(char* name); void get_userconfig_txpwr_lvl_in_fdrv(txpwr_lvl_conf_t *txpwr_lvl); void get_userconfig_txpwr_lvl_v2_in_fdrv(txpwr_lvl_conf_v2_t *txpwr_lvl_v2); void get_userconfig_txpwr_lvl_v3_in_fdrv(txpwr_lvl_conf_v3_t *txpwr_lvl_v3); +void get_userconfig_txpwr_lvl_v4_in_fdrv(txpwr_lvl_conf_v4_t *txpwr_lvl_v4); void get_userconfig_txpwr_lvl_adj_in_fdrv(txpwr_lvl_adj_conf_t *txpwr_lvl_adj); void get_userconfig_txpwr_ofst_in_fdrv(txpwr_ofst_conf_t *txpwr_ofst); void get_userconfig_txpwr_ofst2x_in_fdrv(txpwr_ofst2x_conf_t *txpwr_ofst2x); +void get_userconfig_txpwr_ofst2x_v2_in_fdrv(txpwr_ofst2x_conf_v2_t *txpwr_ofst2x_v2); void get_userconfig_txpwr_loss(txpwr_loss_conf_t *txpwr_loss); +void set_txpwr_loss_ofst(s8_l value); void rwnx_plat_userconfig_parsing(char *buffer, int size); + +uint8_t get_ccode_region(char * ccode); +u8 get_region_index(char * name); + + #ifdef CONFIG_POWER_LIMIT +int8_t rwnx_plat_powerlimit_save(u8_l band, char *channel, u8_l bw, char *limit, char *name); void rwnx_plat_powerlimit_parsing(char *buffer, int size, char *cc); -int8_t get_powerlimit_by_freq(uint8_t band, uint16_t freq); -int8_t get_powerlimit_by_chnum(uint8_t chnum); +int8_t get_powerlimit_by_freq(uint8_t band, uint16_t freq, uint8_t r_idx); +int8_t get_powerlimit_by_chnum(uint8_t chnum, uint8_t r_idx, uint8_t bw); #endif int rwnx_platform_register_drv(void); void rwnx_platform_unregister_drv(void); diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_radar.c b/drivers/aic8800/aic8800_fdrv/rwnx_radar.c index bc65c45..947b713 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_radar.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_radar.c @@ -288,7 +288,7 @@ struct pri_detector { */ struct pri_detector_ops { void (*init)(struct pri_detector *pde); - struct pri_sequence * (*add_pulse)(struct pri_detector *pde, u16 len, u64 ts, u16 pri); + struct pri_sequence * (*add_pulse)(struct rwnx_radar *radar, struct pri_detector *pde, u16 len, u64 ts, u16 pri); int reset_on_pri_overflow; }; @@ -708,7 +708,7 @@ static void pri_detector_reset(struct pri_detector *pde, u64 ts); * - If not save this pulse in the list */ static -struct pri_sequence *pde_short_add_pulse(struct pri_detector *pde, +struct pri_sequence *pde_short_add_pulse(struct rwnx_radar *radar, struct pri_detector *pde, u16 len, u64 ts, u16 pri) { u32 max_updated_seq; @@ -798,12 +798,16 @@ void pde_long_init(struct pri_detector *pde) * has been detected. */ static -struct pri_sequence *pde_long_add_pulse(struct pri_detector *pde, +struct pri_sequence *pde_long_add_pulse(struct rwnx_radar *radar, struct pri_detector *pde, u16 len, u64 ts, u16 pri) { struct pri_sequence *ps; const struct radar_detector_specs *rs = pde->rs; + if(radar->status != RWNX_RADAR_CAC_BUSY) { + return NULL; + } + if (list_empty(&pde->sequences)) { /* First pulse, create a new sequence */ ps = pool_get_pseq_elem(); @@ -1066,6 +1070,35 @@ static void dfs_pattern_detector_pri_overflow(struct dfs_pattern_detector *dpd) } } +void print_radar_detect_info(struct pri_detector *pde, struct pri_sequence *ps) +{ + struct radar_detector_specs *rs = (struct radar_detector_specs *)pde->rs; + struct pulse_elem *p; + u16 idx = 0; + + AICWFDBG(LOGINFO, "aic dfs detected: %d, %d, %d\n", pde->window_size, pde->count, pde->max_count); + AICWFDBG(LOGINFO, "\t rs: %u %u\n", rs->type, rs->type_id); + AICWFDBG(LOGINFO, "\t rs: width[%u, %u]\n", rs->width_min, rs->width_max); + AICWFDBG(LOGINFO, "\t rs: pri[%u, %u] %u\n", rs->pri_min, rs->pri_max, rs->num_pri); + AICWFDBG(LOGINFO, "\t rs: %u/%u %u\n", rs->ppb, rs->ppb_thresh, rs->max_pri_tolerance); + + AICWFDBG(LOGINFO, "\t ps.pri = %u\n" , ps->pri ); + AICWFDBG(LOGINFO, "\t ps.dur = %u\n" , ps->dur ); + AICWFDBG(LOGINFO, "\t ps.count = %u\n" , ps->count ); + AICWFDBG(LOGINFO, "\t ps.count_falses = %u\n" , ps->count_falses ); + AICWFDBG(LOGINFO, "\t ps.first_ts = %lu\n", (long unsigned int)ps->first_ts ); + AICWFDBG(LOGINFO, "\t ps.last_ts = %lu\n", (long unsigned int)ps->last_ts ); + AICWFDBG(LOGINFO, "\t ps.deadline_ts = %lu\n", (long unsigned int)ps->deadline_ts ); + AICWFDBG(LOGINFO, "\t ps.ppb_thresh = %u\n" , ps->ppb_thresh ); + + AICWFDBG(LOGINFO, "\t pulses -->\n"); + list_for_each_entry_reverse(p, &pde->pulses, head) { + AICWFDBG(LOGINFO, "\t %u: %lu\n", idx, (long unsigned int)p->ts); + idx++; + } +} + + /** * dfs_pattern_detector_add_pulse - Process one pulse * @@ -1082,7 +1115,7 @@ static void dfs_pattern_detector_pri_overflow(struct dfs_pattern_detector *dpd) * * @return True is the pulse complete a radar pattern, false otherwise */ -static bool dfs_pattern_detector_add_pulse(struct dfs_pattern_detector *dpd, +static bool dfs_pattern_detector_add_pulse(struct rwnx_radar *radar, struct dfs_pattern_detector *dpd, enum rwnx_radar_chain chain, u16 freq, u16 pri, u16 len, u32 now) { @@ -1122,9 +1155,10 @@ static bool dfs_pattern_detector_add_pulse(struct dfs_pattern_detector *dpd, } pde = pri_detector_get(dpd, freq, i); - ps = pde->ops->add_pulse(pde, len, dpd->last_pulse_ts, pri); + ps = pde->ops->add_pulse(radar, pde, len, dpd->last_pulse_ts, pri); if (ps != NULL) { + print_radar_detect_info(pde, ps); #ifdef CREATE_TRACE_POINTS trace_radar_detected(chain, dpd->region, pde->freq, i, ps->pri); #endif @@ -1207,6 +1241,8 @@ bool dfs_pattern_detector_set_domain(struct dfs_pattern_detector *dpd, dpd->num_radar_types = rt->num_radar_types; dpd->region = region; + + AICWFDBG(LOGINFO,"set_region %d \n",region); return true; } @@ -1269,6 +1305,8 @@ static void rwnx_radar_detected(struct rwnx_hw *rwnx_hw) #ifdef CONFIG_RWNX_FULLMAC struct cfg80211_chan_def chan_def; + RWNX_DBG(RWNX_FN_ENTRY_STR); + if (!rwnx_chanctx_valid(rwnx_hw, rwnx_hw->cur_chanctx)) { WARN(1, "Radar detected without channel information"); return; @@ -1296,6 +1334,9 @@ static void rwnx_radar_process_pulse(struct work_struct *ws) u32 pulses[RWNX_RADAR_LAST][RWNX_RADAR_PULSE_MAX]; u16 pulses_count[RWNX_RADAR_LAST]; u32 now = jiffies; /* would be better to store jiffies value in IT handler */ + #ifdef RWNX_RADAR_DUMP_EN + struct rwnx_radar_dump *rm = radar->rmem; + #endif /* recopy pulses locally to avoid too long spin_lock */ spin_lock_bh(&radar->lock); @@ -1344,11 +1385,51 @@ static void rwnx_radar_process_pulse(struct work_struct *ws) #ifdef CREATE_TRACE_POINTS trace_radar_pulse(chain, p); #endif - if (dfs_pattern_detector_add_pulse(radar->dpd[chain], chain, - (s16)freq + (2 * p->freq), - p->rep, (p->len * 2), now)) { + #ifdef RWNX_RADAR_DUMP_EN + if(chain == RWNX_RADAR_RIU) { + u16 pri; + struct dfs_pattern_detector *dpd = NULL; + rm->ps[rm->idx] = pulses[chain][i]; + rm->tm[rm->idx] = now; + rm->cnt ++; + + pri = p->rep; + dpd = radar->dpd[chain]; + if (pri == 0) { + u32 delta_jiffie; + if (unlikely(now < dpd->prev_jiffies)) { + delta_jiffie = 0xffffffff - dpd->prev_jiffies + now; + } else { + delta_jiffie = now - dpd->prev_jiffies; + } + rm->ts[rm->idx] = dpd->last_pulse_ts + jiffies_to_usecs(delta_jiffie); + } else { + rm->ts[rm->idx] = dpd->last_pulse_ts + pri; + } + rm->idx = (rm->idx + 1) % RWNX_RADARR_DUMP_NB; + } + #endif + if((radar->status != RWNX_RADAR_CAC_BUSY) && (radar->status != RWNX_RADAR_INSERVICE_BUSY)) { + break; + } + AICWFDBG(LOGTRACE, "+r:%x\n", *(uint32_t *)p); + if (dfs_pattern_detector_add_pulse(radar, radar->dpd[chain], chain, + (s16)freq + (2 * p->freq), + p->rep, (p->len * 2), now)) { + u16 idx = radar->detected[chain].index; + #ifdef RWNX_RADAR_DUMP_EN + if (chain == RWNX_RADAR_RIU) { + int k; + AICWFDBG(LOGINFO, "\t received pulses %d %d\n", rm->cnt, rm->idx-1); + for(k=0; kidx, rm->ps[rm->idx], rm->ts[rm->idx], rm->tm[rm->idx]); + rm->idx = (rm->idx + 1) % RWNX_RADARR_DUMP_NB; + } + } + #endif + if (chain == RWNX_RADAR_RIU) { /* operating chain, inform upper layer to change channel */ if (radar->dpd[chain]->enabled == RWNX_RADAR_DETECT_REPORT) { @@ -1399,11 +1480,11 @@ static void rwnx_radar_cac_work(struct work_struct *ws) #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) &ctxt->chan_def, #endif - NL80211_RADAR_CAC_FINISHED, GFP_KERNEL - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0) - , 0 - #endif - ); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0) + NL80211_RADAR_CAC_FINISHED, GFP_KERNEL, 0); +#else + NL80211_RADAR_CAC_FINISHED, GFP_KERNEL); +#endif rwnx_send_apm_stop_cac_req(rwnx_hw, radar->cac_vif); rwnx_chanctx_unlink(radar->cac_vif); @@ -1411,6 +1492,36 @@ static void rwnx_radar_cac_work(struct work_struct *ws) } #endif /* CONFIG_RWNX_FULLMAC */ + +void rwnx_radar_reset_rmem(struct rwnx_radar *radar) +{ +#ifdef RWNX_RADAR_DUMP_EN + if (radar->rmem != NULL) { + memset((void *)radar->rmem, 0, sizeof(*radar->rmem)); + } +#endif +} + +void rwnx_radar_init_rmem(struct rwnx_radar *radar) +{ +#ifdef RWNX_RADAR_DUMP_EN + if (radar->rmem == NULL) { + radar->rmem = kmalloc(sizeof(*radar->rmem), GFP_ATOMIC); + } + rwnx_radar_reset_rmem(radar); +#endif +} + +void rwnx_radar_deinit_rmem(struct rwnx_radar *radar) +{ +#ifdef RWNX_RADAR_DUMP_EN + if (radar->rmem != NULL) { + kfree(radar->rmem); + } +#endif +} + + bool rwnx_radar_detection_init(struct rwnx_radar *radar) { spin_lock_init(&radar->lock); @@ -1422,6 +1533,10 @@ bool rwnx_radar_detection_init(struct rwnx_radar *radar) radar->dpd[RWNX_RADAR_FCU] = dfs_pattern_detector_init(NL80211_DFS_UNSET, RWNX_RADAR_FCU); + rwnx_radar_init_rmem(radar); + radar->status = RWNX_RADAR_IDLE; + AICWFDBG(LOGINFO, "DFS: radar st = %d\n", radar->status); + if (radar->dpd[RWNX_RADAR_FCU] == NULL) { rwnx_radar_detection_deinit(radar); return false; @@ -1445,11 +1560,13 @@ void rwnx_radar_detection_deinit(struct rwnx_radar *radar) dfs_pattern_detector_exit(radar->dpd[RWNX_RADAR_FCU]); radar->dpd[RWNX_RADAR_FCU] = NULL; } + rwnx_radar_deinit_rmem(radar); } bool rwnx_radar_set_domain(struct rwnx_radar *radar, enum nl80211_dfs_regions region) { + AICWFDBG(LOGINFO, "%s \n",__func__); if (radar->dpd[0] == NULL) return false; #ifdef CREATE_TRACE_POINTS @@ -1463,6 +1580,7 @@ bool rwnx_radar_set_domain(struct rwnx_radar *radar, void rwnx_radar_detection_enable(struct rwnx_radar *radar, u8 enable, u8 chain) { + //printk("%s enable:%u chain:%u \n",__func__,enable,chain); if (chain < RWNX_RADAR_LAST ) { #ifdef CREATE_TRACE_POINTS trace_radar_enable_detection(radar->dpd[chain]->region, enable, chain); @@ -1503,11 +1621,11 @@ void rwnx_radar_cancel_cac(struct rwnx_radar *radar) #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) &ctxt->chan_def, #endif - NL80211_RADAR_CAC_ABORTED, GFP_KERNEL - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0) - , 0 - #endif - ); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 12, 0) + NL80211_RADAR_CAC_FINISHED, GFP_KERNEL, 0); +#else + NL80211_RADAR_CAC_ABORTED, GFP_KERNEL); +#endif rwnx_chanctx_unlink(radar->cac_vif); } diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_radar.h b/drivers/aic8800/aic8800_fdrv/rwnx_radar.h index 355320f..5e2b8e4 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_radar.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_radar.h @@ -82,11 +82,33 @@ struct rwnx_radar_detected { s16 freq[NX_NB_RADAR_DETECTED]; }; - +#define RWNX_RADAR_DUMP_EN 1 +#ifdef RWNX_RADAR_DUMP_EN +#define RWNX_RADARR_DUMP_NB 32 +struct rwnx_radar_dump { + u32 cnt; + u32 idx; + u32 ps[RWNX_RADARR_DUMP_NB]; + u64 tm[RWNX_RADARR_DUMP_NB]; + u64 ts[RWNX_RADARR_DUMP_NB]; +}; +#endif +enum rwnx_radar_status { + RWNX_RADAR_IDLE = 0, + RWNX_RADAR_CAC_BUSY = 1, + RWNX_RADAR_CAC_DONE = 2, + RWNX_RADAR_INSERVICE_BUSY = 3, + RWNX_RADAR_INSERVICE_DONE = 4 +}; struct rwnx_radar { struct rwnx_radar_pulses pulses[RWNX_RADAR_LAST]; struct dfs_pattern_detector *dpd[RWNX_RADAR_LAST]; struct rwnx_radar_detected detected[RWNX_RADAR_LAST]; + #ifdef RWNX_RADAR_DUMP_EN + struct rwnx_radar_dump *rmem; + #endif + u16 status; + u16 sta_num; struct work_struct detection_work; /* Work used to process radar pulses */ spinlock_t lock; /* lock for pulses processing */ @@ -97,6 +119,10 @@ struct rwnx_radar { #endif }; +void rwnx_radar_reset_rmem(struct rwnx_radar *radar); +void rwnx_radar_init_rmem(struct rwnx_radar *radar); +void rwnx_radar_deinit_rmem(struct rwnx_radar *radar); + bool rwnx_radar_detection_init(struct rwnx_radar *radar); void rwnx_radar_detection_deinit(struct rwnx_radar *radar); bool rwnx_radar_set_domain(struct rwnx_radar *radar, diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_rx.c b/drivers/aic8800/aic8800_fdrv/rwnx_rx.c index 13f4330..eb6d60a 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_rx.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_rx.c @@ -25,6 +25,10 @@ #include #include "rwnx_msg_tx.h" #endif +#include "rwnx_main.h" +#ifdef CONFIG_BAND_STEERING +#include "aicwf_manager.h" +#endif #ifndef IEEE80211_MAX_CHAINS #define IEEE80211_MAX_CHAINS 4 @@ -47,46 +51,56 @@ u16 tx_legrates_lut_rate[] = { 540 }; - -u16 legrates_lut_rate[] = { - 10 , - 20 , - 55 , - 110 , - 0 , - 0 , - 0 , - 0 , - 480 , - 240 , - 120 , - 60 , - 540 , - 360 , - 180 , - 90 +struct rwnx_legrate legrates_lut[] = { + [0] = { .idx = 0, .rate = 10}, + [1] = { .idx = 1, .rate = 20}, + [2] = { .idx = 2, .rate = 55}, + [3] = { .idx = 3, .rate = 110}, + [4] = { .idx = -1, .rate = 0}, + [5] = { .idx = -1, .rate = 0}, + [6] = { .idx = -1, .rate = 0}, + [7] = { .idx = -1, .rate = 0}, + [8] = { .idx = 10, .rate = 480}, + [9] = { .idx = 8, .rate = 240}, + [10] = { .idx = 6, .rate = 120}, + [11] = { .idx = 4, .rate = 60}, + [12] = { .idx = 11, .rate = 540}, + [13] = { .idx = 9, .rate = 360}, + [14] = { .idx = 7, .rate = 180}, + [15] = { .idx = 5, .rate = 90}, }; +#ifdef CONFIG_BAND_STEERING +typedef struct _op_class_ { + u8_l op_class; + u8_l band; /* 0: 2.4g, 1: 5g*/ +} _op_class_; -const u8 legrates_lut[] = { - 0, /* 0 */ - 1, /* 1 */ - 2, /* 2 */ - 3, /* 3 */ - -1, /* 4 */ - -1, /* 5 */ - -1, /* 6 */ - -1, /* 7 */ - 10, /* 8 */ - 8, /* 9 */ - 6, /* 10 */ - 4, /* 11 */ - 11, /* 12 */ - 9, /* 13 */ - 7, /* 14 */ - 5 /* 15 */ +static const _op_class_ g_op_class[] = { + { 81, BAND_ON_24G }, + { 82, BAND_ON_24G }, + { 83, BAND_ON_24G }, + { 84, BAND_ON_24G }, + { 115, BAND_ON_5G }, + { 116, BAND_ON_5G }, + { 117, BAND_ON_5G }, + { 118, BAND_ON_5G }, + { 119, BAND_ON_5G }, + { 120, BAND_ON_5G }, + { 121, BAND_ON_5G }, + { 122, BAND_ON_5G }, + { 123, BAND_ON_5G }, + { 124, BAND_ON_5G }, + { 125, BAND_ON_5G }, + { 126, BAND_ON_5G }, + { 127, BAND_ON_5G }, + { 128, BAND_ON_5G } }; +#define BAND_CAP_2G BIT(BAND_ON_24G) +#define BAND_CAP_5G BIT(BAND_ON_5G) +#endif + struct vendor_radiotap_hdr { u8 oui[3]; u8 subns; @@ -285,7 +299,7 @@ static void rwnx_rx_statistic(struct rwnx_hw *rwnx_hw, struct hw_rxhdr *hw_rxhdr break; } } else { - int idx = legrates_lut[rxvect->leg_rate]; + int idx = legrates_lut[rxvect->leg_rate].idx; if (idx < 4) { rate_idx = idx * 2 + rxvect->pre_type; } else { @@ -327,8 +341,7 @@ static void rwnx_rx_statistic(struct rwnx_hw *rwnx_hw, struct hw_rxhdr *hw_rxhdr cpu_raise_softirq(smp_processor_id(), NET_RX_SOFTIRQ) #endif /* LINUX_VERSION_CODE */ -void rwnx_rx_data_skb_resend(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, struct hw_rxhdr *rxhdr) +void rwnx_rx_data_skb_resend(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, struct sk_buff *skb) { struct sk_buff *rx_skb = skb; //bool amsdu = rxhdr->flags_is_amsdu; @@ -369,8 +382,7 @@ void rwnx_rx_data_skb_resend(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, } } #ifdef AICWF_RX_REORDER -static void rwnx_rx_data_skb_forward(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, - struct sk_buff *skb, struct hw_rxhdr *rxhdr) +static void rwnx_rx_data_skb_forward(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, struct sk_buff *skb) { struct sk_buff *rx_skb; @@ -457,16 +469,19 @@ static bool rwnx_rx_data_skb(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, struct sk_buff *rx_skb; bool amsdu = rxhdr->flags_is_amsdu; bool resend = false, forward = true; + u8 flags_vif_idx = rxhdr->flags_vif_idx; + u8 flags_dst_idx = rxhdr->flags_dst_idx; skb->dev = rwnx_vif->ndev; __skb_queue_head_init(&list); if (amsdu) { + #if 1 + rwnx_rxdata_process_amsdu(rwnx_hw, skb, flags_vif_idx, &list); + #else int count; -// Debian 6.1.0-26 backported the new function call, but not Ubuntu 6.2. -#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0) || \ - (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 109) && LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0)) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0) ieee80211_amsdu_to_8023s(skb, &list, rwnx_vif->ndev->dev_addr, RWNX_VIF_TYPE(rwnx_vif), 0, NULL, NULL, false); #else @@ -478,6 +493,7 @@ static bool rwnx_rx_data_skb(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, if (count > ARRAY_SIZE(rwnx_hw->stats.amsdus_rx)) count = ARRAY_SIZE(rwnx_hw->stats.amsdus_rx); rwnx_hw->stats.amsdus_rx[count - 1]++; + #endif } else { rwnx_hw->stats.amsdus_rx[0]++; __skb_queue_head(&list, skb); @@ -499,9 +515,9 @@ static bool rwnx_rx_data_skb(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, } else { /* unicast pkt for STA inside the BSS, no need to forward to upper layer simply resend on wireless interface */ - if (rxhdr->flags_dst_idx != RWNX_INVALID_STA) + if (flags_dst_idx != RWNX_INVALID_STA) { - struct rwnx_sta *sta = &rwnx_hw->sta_table[rxhdr->flags_dst_idx]; + struct rwnx_sta *sta = &rwnx_hw->sta_table[flags_dst_idx]; if (sta->valid && (sta->vlan_idx == rwnx_vif->vif_index)) { forward = false; @@ -518,7 +534,7 @@ static bool rwnx_rx_data_skb(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, if (!is_multicast_ether_addr(eth->h_dest)) { /* unicast pkt for STA inside the BSS, no need to forward to upper layer simply resend on wireless interface */ - if (rxhdr->flags_dst_idx != RWNX_INVALID_STA) + if (flags_dst_idx != RWNX_INVALID_STA) { forward = false; resend = true; @@ -675,6 +691,81 @@ static inline const u8 *cfg80211_find_ext_ie(u8 ext_eid, const u8* ies, int len) #endif +#ifdef CONFIG_BAND_STEERING +static void handle_op_class_band(struct tmp_feature_sta *f_sta, const u8 *ie, int ie_len) +{ + int op_num, i, j; + u8 op_class; + + if (!ie) { + return; + } + + op_num = ie[1]; + for (i = 0; i < op_num; i++) { + op_class = ie[i + 2]; + for (j = 0; j < ARRAY_SIZE(g_op_class); j++) { + if (op_class == g_op_class[j].op_class) { + switch (g_op_class[j].band) { + case BAND_ON_24G: + f_sta->supported_band |= BAND_CAP_2G; + break; + case BAND_ON_5G: + f_sta->supported_band |= BAND_CAP_5G; + break; + default: + break; + } + break; + } + } + } +} + +static void set_band_by_freq(struct tmp_feature_sta *f_sta, u16 freq) +{ + if (freq >= 5180) { + f_sta->supported_band |= BAND_CAP_5G; + } else { + f_sta->supported_band |= BAND_CAP_2G; + } +} + +static void handle_assoc_request(struct rwnx_vif *rwnx_vif, + struct tmp_feature_sta *f_sta, + struct ieee80211_mgmt *mgmt, + struct sk_buff *skb, + struct rx_vector_1 *rxvect, + struct hw_rxhdr *hw_rxhdr, + bool is_reassoc) +{ + const u8 *ie; + u8 *variable_field; + size_t variable_len; + + aicwf_nl_send_frame_rpt_msg(rwnx_vif, WIFI_ASSOCREQ, mgmt->sa, rxvect->rssi1); + f_sta->sta_idx = rwnx_vif->ap.tmp_sta_idx; + + if (is_reassoc) { + variable_field = mgmt->u.reassoc_req.variable; + } else { + variable_field = mgmt->u.assoc_req.variable; + } + variable_len = skb->len - (variable_field - skb->data); + + ie = cfg80211_find_ie(WLAN_EID_SUPPORTED_REGULATORY_CLASSES, + variable_field, variable_len); + + if (ie) { + handle_op_class_band(f_sta, ie, variable_len); + AICWFDBG(LOGINFO, "%s usb %sassoc supported_band: %u\n", __func__, + is_reassoc ? "re" : "", f_sta->supported_band); + } else { + AICWFDBG(LOGINFO, "%s usb %sassoc no find op_class\n", __func__, is_reassoc ? "re" : ""); + set_band_by_freq(f_sta, hw_rxhdr->phy_info.phy_prim20_freq); + } +} +#endif /** * rwnx_rx_mgmt - Process one 802.11 management frame @@ -693,9 +784,54 @@ static void rwnx_rx_mgmt(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, struct rx_vector_1 *rxvect = &hw_rxhdr->hwvect.rx_vect1; #ifdef CONFIG_HE_FOR_OLD_KERNEL struct ieee80211_he_cap_elem *he; + struct ieee80211_he_mcs_nss_supp *he_mcs; +#endif + + //printk("rwnx_rx_mgmt\n"); + if(skb->data[0]!=0x80 && skb->data[0] != 0x40) + AICWFDBG(LOGDEBUG,"rxmgmt:%x,%x\n", skb->data[0], skb->data[1]); + +#ifdef CONFIG_BAND_STEERING + bool queued = false; + struct tmp_feature_sta *f_sta = &rwnx_hw->feature_table[rwnx_vif->ap.tmp_sta_idx]; + if (RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_AP) { +#if 0 + if(skb->data[0] != 0x80) + printk("rx mgmt:%02x\n", mgmt->frame_control); +#endif + + if (ieee80211_is_assoc_req(mgmt->frame_control)) { + handle_assoc_request(rwnx_vif, f_sta, mgmt, skb, rxvect, hw_rxhdr, false); + } else if (ieee80211_is_reassoc_req(mgmt->frame_control)) { + handle_assoc_request(rwnx_vif, f_sta, mgmt, skb, rxvect, hw_rxhdr, true); + } + + if (ieee80211_is_auth(mgmt->frame_control)) { + aicwf_nl_send_frame_rpt_msg(rwnx_vif, WIFI_AUTH, mgmt->sa, rxvect->rssi1); + } + + if (ieee80211_is_probe_req(mgmt->frame_control)) { + if (!rwnx_vif->ap.start) + return; + aicwf_nl_send_frame_rpt_msg(rwnx_vif, WIFI_PROBEREQ, mgmt->sa, rxvect->rssi1); + AICWFDBG(LOGSTEER, "usb rx p_req: %pM\n", mgmt->sa); + for (int i = 0; i < MAX_PENDING_PROBES; i++) { + if (!rwnx_vif->pb_pool[i].in_use) { + rwnx_vif->pb_pool[i].in_use = true; + memcpy(rwnx_vif->pb_pool[i].da, mgmt->sa, 6); + queue_work(rwnx_vif->rsp_wq, &rwnx_vif->pb_pool[i].rsp_work); + queued = true; + break; + } + } + if (!queued) + AICWFDBG(LOGERROR, "usb probe_rsp pool full, drop %pM\n", mgmt->sa); + return; + } + + } #endif - //printk("rwnx_rx_mgmt\n"); #if (defined CONFIG_HE_FOR_OLD_KERNEL) || (defined CONFIG_VHT_FOR_OLD_KERNEL) struct aic_sta *sta = &rwnx_hw->aic_table[rwnx_vif->ap.aic_index]; const u8* ie; @@ -710,6 +846,12 @@ static void rwnx_rx_mgmt(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, ie = cfg80211_find_ext_ie(WLAN_EID_EXT_HE_CAPABILITY, mgmt->u.assoc_req.variable, len); if (ie && ie[1] >= sizeof(*he) + 1) { printk("assoc_req: find he\n"); + he = (struct ieee80211_he_cap_elem *)(ie+3); + he_mcs = (struct ieee80211_he_mcs_nss_supp *)((u8 *)he + sizeof(*he)); + memcpy(&sta->he_cap_elem,ie+3,sizeof(struct ieee80211_he_cap_elem)); + + sta->he_mcs_nss_supp.rx_mcs_80 = he_mcs->rx_mcs_80; + sta->he_mcs_nss_supp.tx_mcs_80 = he_mcs->tx_mcs_80; sta->he = true; } else { @@ -723,6 +865,8 @@ static void rwnx_rx_mgmt(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, ie = cfg80211_find_ie(WLAN_EID_VHT_CAPABILITY, mgmt->u.assoc_req.variable, len); if (ie && ie[1] >= sizeof(*vht)) { printk("assoc_req: find vht\n"); + memcpy(&sta->vht_cap_info,ie+2,4); + memcpy(&sta->supp_mcs,ie+2+4,sizeof(struct ieee80211_vht_mcs_info)); sta->vht = true; } else { printk("assoc_req: no find vht\n"); @@ -730,8 +874,20 @@ static void rwnx_rx_mgmt(struct rwnx_hw *rwnx_hw, struct rwnx_vif *rwnx_vif, } #endif } + if (ieee80211_is_deauth(mgmt->frame_control) && rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) { + printk("DEAUTH: sta_idx %d MAC %pM reason:%x\n", rwnx_vif->ap.aic_index, mgmt->sa, mgmt->u.deauth.reason_code); + } + if (ieee80211_is_disassoc(mgmt->frame_control) && rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) { + printk("DISASSOC: sta_idx %d MAC %pM reason:%x\n", rwnx_vif->ap.aic_index, mgmt->sa, mgmt->u.disassoc.reason_code); + } #endif + /*if (ieee80211_is_mgmt(mgmt->frame_control) && + (skb->len <= 24 || skb->len > 768)) { + printk("mgmt err\n"); + return; + }*/ + if (ieee80211_is_beacon(mgmt->frame_control)) { if ((RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_MESH_POINT) && hw_rxhdr->flags_new_peer) { @@ -1020,7 +1176,7 @@ static void rwnx_rx_add_rtap_hdr(struct rwnx_hw* rwnx_hw, struct ieee80211_supported_band* band = rwnx_hw->wiphy->bands[phy_info->phy_band]; rtap->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_RATE); - BUG_ON((rate_idx = legrates_lut[rxvect->leg_rate]) == -1); + BUG_ON((rate_idx = legrates_lut[rxvect->leg_rate].idx) == -1); if (phy_info->phy_band == NL80211_BAND_5GHZ) rate_idx -= 4; /* rwnx_ratetable_5ghz[0].hw_value == 4 */ *pos = DIV_ROUND_UP(band->bitrates[rate_idx].bitrate, 5); @@ -1347,6 +1503,7 @@ struct reord_ctrl_info *reord_init_sta(struct aicwf_rx_priv* rx_priv, const u8 * return NULL; } + AICWFDBG(LOGINFO, "reord_init_sta:%pM\n", mac_addr); reord_info = kmalloc(sizeof(struct reord_ctrl_info), GFP_ATOMIC); if (!reord_info) return NULL; @@ -1428,11 +1585,7 @@ int reord_flush_tid(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u8 tid) preorder_ctrl->enable = false; spin_unlock_irqrestore(&preorder_ctrl->reord_list_lock, flags); if (timer_pending(&preorder_ctrl->reord_timer)) - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - ret = timer_delete_sync(&preorder_ctrl->reord_timer); - #else - ret = del_timer_sync(&preorder_ctrl->reord_timer); - #endif + ret = del_timer_sync(&preorder_ctrl->reord_timer); cancel_work_sync(&preorder_ctrl->reord_timer_work); return 0; @@ -1458,11 +1611,7 @@ void reord_deinit_sta(struct aicwf_rx_priv* rx_priv, struct reord_ctrl_info *reo if(preorder_ctrl->enable){ preorder_ctrl->enable = false; if (timer_pending(&preorder_ctrl->reord_timer)) { - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - ret = timer_delete_sync(&preorder_ctrl->reord_timer); - #else - ret = del_timer_sync(&preorder_ctrl->reord_timer); - #endif + ret = del_timer_sync(&preorder_ctrl->reord_timer); } cancel_work_sync(&preorder_ctrl->reord_timer_work); } @@ -1492,31 +1641,13 @@ int reord_single_frame_ind(struct aicwf_rx_priv *rx_priv, struct recv_msdu *prfr struct list_head *rxframes_freequeue = NULL; struct sk_buff *skb = NULL; struct rwnx_vif *rwnx_vif = (struct rwnx_vif *)rx_priv->rwnx_vif; + struct sk_buff_head list; + struct sk_buff *rx_skb; rxframes_freequeue = &rx_priv->rxframes_freequeue; skb = prframe->pkt; - if (skb == NULL) { - txrx_err("skb is NULL\n"); - return -1; - } - if(!prframe->forward) { - //printk("single: %d not forward: drop\n", prframe->seq_num); - dev_kfree_skb(skb); - prframe->pkt = NULL; - reord_rxframe_free(&rx_priv->freeq_lock, rxframes_freequeue, &prframe->rxframe_list); - return 0; - } - - skb->data = prframe->rx_data; - skb_set_tail_pointer(skb, prframe->len); - skb->len = prframe->len; - - rwnx_vif->net_stats.rx_packets++; - rwnx_vif->net_stats.rx_bytes += skb->len; - //printk("netif sn=%d, len=%d\n", precv_frame->attrib.seq_num, skb->len); - -#ifdef CONFIG_BR_SUPPORT + #ifdef CONFIG_BR_SUPPORT void *br_port = NULL; if (1) {//(check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE) { @@ -1541,54 +1672,110 @@ int reord_single_frame_ind(struct aicwf_rx_priv *rx_priv, struct recv_msdu *prfr } #endif /* CONFIG_BR_SUPPORT */ - skb->dev = rwnx_vif->ndev; + if (skb == NULL) { + txrx_err("skb is NULL\n"); + return -1; + } -#if 0 - if(test_log_flag){ - if(skb->data[42] == 0x80){ - printk("AIDEN : SN:%d R_SN:%d pid:%d\r\n", - prframe->seq_num, (skb->data[44] << 8| skb->data[45]), current->pid); - } - } -#endif - rwnx_skb_align_8bytes(skb); + if(prframe->is_ap_reord) { + if(prframe->ap_resend_cnt) { + struct sk_buff *resend_skb = prframe->first_resend_skb; + struct sk_buff *resend_next_skb; + u8 resend_cnt = 0; + while(resend_skb) { + resend_cnt++; + resend_next_skb = resend_skb->next; + dev_kfree_skb(resend_skb); + resend_skb = resend_next_skb; + } + if(resend_cnt != prframe->ap_resend_cnt) + printk("resend cnt error: %d,%d\n", resend_cnt, prframe->ap_resend_cnt); - skb->protocol = eth_type_trans(skb, rwnx_vif->ndev); + if(!prframe->ap_fwd_cnt) { + prframe->pkt = NULL; + reord_rxframe_free(&rx_priv->freeq_lock, rxframes_freequeue, &prframe->rxframe_list); + return 0; + } //else + // printk("both has resend & fwd\n"); + } + } else { + if(!prframe->forward) { + dev_kfree_skb(skb); + prframe->pkt = NULL; + reord_rxframe_free(&rx_priv->freeq_lock, rxframes_freequeue, &prframe->rxframe_list); + return 0; + } + } + + __skb_queue_head_init(&list); + if(!prframe->is_ap_reord) + { + if(prframe->is_amsdu) { + rwnx_rxdata_process_amsdu(rwnx_vif->rwnx_hw, skb, rwnx_vif->vif_index, &list); //rxhdr not used below since skb free! + } else { + __skb_queue_head(&list, skb); + } + } else { + struct sk_buff *fwd_skb = prframe->first_fwd_skb; + struct sk_buff *fwd_next_skb; + u8 fwd_cnt = 0; + while(fwd_skb) { + //printk("single ind:%p\n", fwd_skb); + fwd_cnt++; + fwd_next_skb = fwd_skb->next; + __skb_queue_tail(&list, fwd_skb); + fwd_skb = fwd_next_skb; + } + if(fwd_cnt != prframe->ap_fwd_cnt) + printk("fwd cnt error: %d,%d\n", fwd_cnt, prframe->ap_fwd_cnt); + } + + while (!skb_queue_empty(&list)) { + rx_skb = __skb_dequeue(&list); + + rwnx_vif->net_stats.rx_packets++; + rwnx_vif->net_stats.rx_bytes += rx_skb->len; + //printk("netif sn=%d, len=%d\n", precv_frame->attrib.seq_num, skb->len); + rx_skb->dev = rwnx_vif->ndev; + rwnx_skb_align_8bytes(rx_skb); + rx_skb->protocol = eth_type_trans(rx_skb, rwnx_vif->ndev); #ifdef AICWF_ARP_OFFLOAD - if(RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) { - arpoffload_proc(skb, rwnx_vif); - } + if(RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_STATION || RWNX_VIF_TYPE(rwnx_vif) == NL80211_IFTYPE_P2P_CLIENT) { + arpoffload_proc(rx_skb, rwnx_vif); + } #endif - memset(skb->cb, 0, sizeof(skb->cb)); + memset(rx_skb->cb, 0, sizeof(rx_skb->cb)); #ifdef CONFIG_FILTER_TCP_ACK - filter_rx_tcp_ack(rwnx_vif->rwnx_hw, skb->data, cpu_to_le16(skb->len)); + filter_rx_tcp_ack(rwnx_vif->rwnx_hw, rx_skb->data, cpu_to_le16(rx_skb->len)); #endif #ifdef CONFIG_RX_NETIF_RECV_SKB//AIDEN test - local_bh_disable(); - netif_receive_skb(skb); - local_bh_enable(); + local_bh_disable(); + netif_receive_skb(rx_skb); + local_bh_enable(); #else - if (in_interrupt()) { - netif_rx(skb); - } else { - /* - * If the receive is not processed inside an ISR, the softirqd must be woken explicitly to service the NET_RX_SOFTIRQ. - * * In 2.6 kernels, this is handledby netif_rx_ni(), but in earlier kernels, we need to do it manually. - */ + if (in_interrupt()) { + netif_rx(rx_skb); + } else { + /* + * If the receive is not processed inside an ISR, the softirqd must be woken explicitly to service the NET_RX_SOFTIRQ. + * * In 2.6 kernels, this is handledby netif_rx_ni(), but in earlier kernels, we need to do it manually. + */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) - netif_rx_ni(skb); + netif_rx_ni(rx_skb); #else - ulong flags; - netif_rx(skb); - local_irq_save(flags); - RAISE_RX_SOFTIRQ(); - local_irq_restore(flags); + ulong flags; + netif_rx(rx_skb); + local_irq_save(flags); + RAISE_RX_SOFTIRQ(); + local_irq_restore(flags); #endif - } + } #endif//CONFIG_RX_NETIF_RECV_SKB + } + prframe->pkt = NULL; reord_rxframe_free(&rx_priv->freeq_lock, rxframes_freequeue, &prframe->rxframe_list); @@ -1715,45 +1902,38 @@ void reord_timeout_worker(struct work_struct *work) return ; } -int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 seq_num, u8 tid, u8 forward) +int reord_process_unit(struct recv_msdu *pframe, struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 seq_num, u8 tid, u8 forward, u8 is_amsdu) { int ret=0; u8 *mac; - struct recv_msdu *pframe; struct reord_ctrl *preorder_ctrl; struct reord_ctrl_info *reord_info; struct rwnx_vif *rwnx_vif = (struct rwnx_vif *)rx_priv->rwnx_vif; struct ethhdr *eh = (struct ethhdr *)(skb->data); - //u8 *da = eh->h_dest; - //u8 is_mcast = ((*da) & 0x01)? 1 : 0; - - if (rwnx_vif == NULL || skb->len <= 14) { - dev_kfree_skb(skb); - return -1; - } + u8 *da = eh->h_dest; + u8 is_mcast = ((*da) & 0x01)? 1 : 0; + #if 0 + struct recv_msdu *pframe; pframe = reord_rxframe_alloc(&rx_priv->freeq_lock, &rx_priv->rxframes_freequeue); if (!pframe) { dev_kfree_skb(skb); return -1; } + #endif INIT_LIST_HEAD(&pframe->reord_pending_list); pframe->seq_num = seq_num; pframe->tid = tid; pframe->rx_data = skb->data; - pframe->len = skb->len; + //pframe->len = skb->len; pframe->pkt = skb; - pframe->forward = forward; + pframe->forward = forward; preorder_ctrl = pframe->preorder_ctrl; + pframe->is_amsdu = is_amsdu; -#if 0 - if ((ntohs(eh->h_proto) == ETH_P_PAE) || is_mcast){ - printk("%s AIDEN pframe->seq_num:%d is bcast or mcast\r\n", __func__, pframe->seq_num); - ret = reord_single_frame_ind(rx_priv, pframe); - return ret; - } -#endif + if ((ntohs(eh->h_proto) == ETH_P_PAE) || is_mcast) + return reord_single_frame_ind(rx_priv, pframe); if((rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) mac = eh->h_dest; @@ -1775,11 +1955,11 @@ int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 s if (&reord_info->list == &rx_priv->stas_reord_list) {//first time??? reord_info = reord_init_sta(rx_priv, mac); - //reord_info has 8 preorder_ctrl, - //There is a one-to-one matched preorder_ctrl and tid + //reord_info has 8 preorder_ctrl, + //There is a one-to-one matched preorder_ctrl and tid if (!reord_info) { spin_unlock_bh(&rx_priv->stas_reord_lock); - dev_kfree_skb(skb); + reord_single_frame_ind(rx_priv, pframe); return -1; } list_add_tail(&reord_info->list, &rx_priv->stas_reord_list); @@ -1796,9 +1976,9 @@ int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 s if (preorder_ctrl->enable == false) { preorder_ctrl->ind_sn = pframe->seq_num; - spin_lock_bh(&preorder_ctrl->reord_list_lock);//AIDEN + spin_lock_bh(&preorder_ctrl->reord_list_lock);//AIDEN reord_single_frame_ind(rx_priv, pframe); - spin_unlock_bh(&preorder_ctrl->reord_list_lock);//AIDEN + spin_unlock_bh(&preorder_ctrl->reord_list_lock);//AIDEN preorder_ctrl->ind_sn = (preorder_ctrl->ind_sn + 1)%4096; return 0; } @@ -1841,11 +2021,7 @@ int reord_process_unit(struct aicwf_rx_priv *rx_priv, struct sk_buff *skb, u16 s } } else { if(timer_pending(&preorder_ctrl->reord_timer)) { - #if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0) - ret = timer_delete(&preorder_ctrl->reord_timer); - #else - ret = del_timer(&preorder_ctrl->reord_timer); - #endif + ret = del_timer(&preorder_ctrl->reord_timer); } } @@ -1862,7 +2038,7 @@ fail: dev_kfree_skb(pframe->pkt); pframe->pkt = NULL; } - reord_rxframe_free(&rx_priv->freeq_lock, &rx_priv->rxframes_freequeue, &pframe->rxframe_list); + reord_rxframe_free(&rx_priv->freeq_lock, &rx_priv->rxframes_freequeue, &pframe->rxframe_list); return ret; } @@ -1935,14 +2111,94 @@ void remove_sec_hdr_mgmt_frame(struct hw_rxhdr *hw_rxhdr,struct sk_buff *skb) skb_pull(skb,8); memcpy(skb->data,mgmt_header,hdr_len); hw_rxhdr->hwvect.len -= 8; - } - else { + } else { printk("unsupport decr_status:%d\n",hw_rxhdr->hwvect.decr_status); } } } } +void rwnx_rxdata_process_amsdu(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, u8 vif_idx, + struct sk_buff_head *list) +{ + u16 len_alligned = 0; + u16 sublen = 0; + struct sk_buff *sub_skb = NULL; + struct rwnx_vif *rwnx_vif; + + //if (is_amsdu) + { + //skb_pull(skb, pull_len-8); + /* |amsdu sub1 | amsdu sub2 | ... */ + len_alligned = 0; + sublen = 0; + sub_skb = NULL; + while (skb->len > 16) { + sublen = (skb->data[12]<<8)|(skb->data[13]); + if (skb->len > (sublen+14)) + len_alligned = roundup(sublen + 14, 4); + else if (skb->len == (sublen+14)) + len_alligned = sublen+14; + else { + printk("accroding to amsdu: this will not happen\n"); + break; + } + //printk("sublen = %d, %x, %x, %x, %x\r\n", sublen,skb->data[0], skb->data[1], skb->data[12], skb->data[13]); +#if 1 + sub_skb = __dev_alloc_skb(sublen - 6 + 12, GFP_ATOMIC); + if(!sub_skb){ + printk("sub_skb alloc fail:%d\n", sublen); + break; + } + skb_put(sub_skb, sublen - 6 + 12); + memcpy(sub_skb->data, skb->data, MAC_ADDR_LEN); + memcpy(&sub_skb->data[6], &skb->data[6], MAC_ADDR_LEN); + memcpy(&sub_skb->data[12], &skb->data[14 + 6], sublen - 6); + + rwnx_vif = rwnx_rx_get_vif(rwnx_hw, vif_idx); + if (!rwnx_vif) { + printk("frame received but no active vif (%d), skb->len:%u\n", vif_idx, skb->len); + //dev_kfree_skb(sub_skb); + break; + } + __skb_queue_tail(list, sub_skb); + + //printk("a:%p\n", sub_skb); + //if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, sub_skb, hw_rxhdr)) + // dev_kfree_skb(sub_skb); +#endif + skb_pull(skb, len_alligned); + } + //printk("af:%p\n", skb); + //printk("cnt=%d\n", cnt); + dev_kfree_skb(skb); + //return 0; + } +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) +void defrag_timeout_cb(ulong data) +#else +void defrag_timeout_cb(struct timer_list *t) +#endif +{ + struct defrag_ctrl_info *defrag_ctrl = NULL; +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) + defrag_ctrl = (struct defrag_ctrl_info *)data; +#else + defrag_ctrl = from_timer(defrag_ctrl, t, defrag_timer); +#endif + + printk("%s:%p\r\n", __func__, defrag_ctrl); + spin_lock_bh(&defrag_ctrl->rwnx_hw->defrag_lock); + list_del_init(&defrag_ctrl->list); + dev_kfree_skb(defrag_ctrl->skb); + kfree(defrag_ctrl); + spin_unlock_bh(&defrag_ctrl->rwnx_hw->defrag_lock); +} + +extern void rwnx_data_dump(char* tag, void* data, unsigned long len); + u8 rwnx_rxdataind_aicwf(struct rwnx_hw *rwnx_hw, void *hostid, void *rx_priv) { struct hw_rxhdr *hw_rxhdr; @@ -1951,19 +2207,26 @@ u8 rwnx_rxdataind_aicwf(struct rwnx_hw *rwnx_hw, void *hostid, void *rx_priv) struct sk_buff *skb = hostid; int msdu_offset = sizeof(struct hw_rxhdr) + 2; u16_l status = 0; + struct aicwf_rx_priv *rx_priv_tmp; u8 hdr_len = 24; u8 ra[MAC_ADDR_LEN] = {0}; u8 ta[MAC_ADDR_LEN] = {0}; u8 ether_type[2] = {0}; u8 pull_len = 0; + u16 seq_num = 0; + u8_l frag_num = 0; u8 tid = 0; u8 is_qos = 0; -#ifdef AICWF_RX_REORDER - struct aicwf_rx_priv *rx_priv_tmp; - u16 seq_num = 0; - bool resend = false; - bool forward = false; -#endif + u8 is_frag = 0; + struct defrag_ctrl_info *defrag_info = NULL; + struct defrag_ctrl_info *defrag_info_tmp = NULL; + struct sk_buff *skb_tmp = NULL; + int ret; + u8 sta_idx = 0; + u16_l frame_ctrl; + u8 is_amsdu = 0; + bool resend = false, forward = true; + const struct ethhdr *eth; REG_SW_SET_PROFILING(rwnx_hw, SW_PROF_RWNXDATAIND); hw_rxhdr = (struct hw_rxhdr *)skb->data; @@ -1999,7 +2262,7 @@ u8 rwnx_rxdataind_aicwf(struct rwnx_hw *rwnx_hw, void *hostid, void *rx_priv) //Check if monitor interface exists and is open rwnx_vif = rwnx_rx_get_vif(rwnx_hw, rwnx_hw->monitor_vif); if (!rwnx_vif) { - dev_err(rwnx_hw->dev, "Received monitor frame but there is no monitor interface open\n"); + dev_err(rwnx_hw->dev, "Received monitor frame but there is no monitor interface open, skb->len:%u\n", skb->len); goto check_len_update; } @@ -2047,6 +2310,8 @@ u8 rwnx_rxdataind_aicwf(struct rwnx_hw *rwnx_hw, void *hostid, void *rx_priv) #endif } + skb_reset_tail_pointer(skb); + skb->len = 0; skb_reset_tail_pointer(skb_monitor); skb_monitor->len = 0; skb_put(skb_monitor, frm_len); @@ -2098,16 +2363,23 @@ check_len_update: &hw_rxhdr->hwvect.rx_vect1, &hw_rxhdr->hwvect.rx_vect2); skb_pull(skb, msdu_offset + 2); //+2 since sdio allign 58->60 +#define MAC_FCTRL_MOREFRAG 0x0400 + frame_ctrl = (skb->data[1] << 8) | skb->data[0]; + seq_num = ((skb->data[22] & 0xf0) >> 4) | (skb->data[23] << 4); + frag_num = (skb->data[22] & 0x0f); + is_amsdu = 0; - if(skb->data[1] & 0x80)//htc - hdr_len += 4; + if ((skb->data[0] & 0x0f) == 0x08) { + if ((skb->data[0] & 0x80) == 0x80) {//qos data + hdr_len = 26; + tid = skb->data[24] & 0x0F; + is_qos = 1; + if (skb->data[24] & 0x80) + is_amsdu = 1; + } - if((skb->data[0] & 0x0f)==0x08) { - if((skb->data[0] & 0x80) == 0x80) {//qos data - hdr_len += 2;//802.11 mac header len - tid = skb->data[24] & 0x0F; - is_qos = 1; - } + if(skb->data[1] & 0x80)// htc + hdr_len += 4; if((skb->data[1] & 0x3) == 0x1) {// to ds memcpy(ra, &skb->data[16], MAC_ADDR_LEN);//destination addr @@ -2118,41 +2390,185 @@ check_len_update: } pull_len += (hdr_len + 8); -#ifdef AICWF_RX_REORDER - seq_num = ((skb->data[22]&0xf0)>>4) | (skb->data[23]<<4); + + switch (hw_rxhdr->hwvect.decr_status) { + case RWNX_RX_HD_DECR_CCMP128: + pull_len += 8;//ccmp_header + //skb_pull(&skb->data[skb->len-8], 8); //ccmp_mic_len + memcpy(ether_type, &skb->data[hdr_len + 6 + 8], 2); + break; + case RWNX_RX_HD_DECR_TKIP: + pull_len += 8;//tkip_header + memcpy(ether_type, &skb->data[hdr_len + 6 + 8], 2); + break; + case RWNX_RX_HD_DECR_WEP: + pull_len += 4;//wep_header + memcpy(ether_type, &skb->data[hdr_len + 6 + 4], 2); + break; + case RWNX_RX_HD_DECR_WAPI: + pull_len += 18;//wapi_header + memcpy(ether_type, &skb->data[hdr_len + 6 + 18], 2); + break; + + default: + memcpy(ether_type, &skb->data[hdr_len + 6], 2); + break; + } + if(is_amsdu) + hw_rxhdr->flags_is_amsdu = 1; + else + hw_rxhdr->flags_is_amsdu = 0; + + if((ether_type[0] == 0x8e && ether_type[1] == 0x88) || (ether_type[0] == 0x88 && ether_type[1] == 0x8e)) + printk("rx eapol\n"); + if (is_amsdu) { + skb_pull(skb, pull_len-8); + } + + if (hw_rxhdr->flags_dst_idx != RWNX_INVALID_STA) + sta_idx = hw_rxhdr->flags_dst_idx; + + if (!hw_rxhdr->flags_need_reord && ((frame_ctrl & MAC_FCTRL_MOREFRAG) || frag_num)) { + printk("rxfrag:%d,%d,%d,sn=%d,%d\r\n", (frame_ctrl & MAC_FCTRL_MOREFRAG), frag_num, skb->len, seq_num,pull_len); + if (frame_ctrl & MAC_FCTRL_MOREFRAG) { + spin_lock_bh(&rwnx_hw->defrag_lock); + if (!list_empty(&rwnx_hw->defrag_list)) { + list_for_each_entry(defrag_info_tmp, &rwnx_hw->defrag_list, list) { + if ((defrag_info_tmp->sn == seq_num) && (defrag_info_tmp->tid == tid) && \ + defrag_info_tmp->sta_idx == sta_idx) { + defrag_info = defrag_info_tmp; + break; + } + } + } + + //printk("rx frag: sn=%d, fn=%d, skb->len=%d\r\n", seq_num, frag_num, skb->len); + if (defrag_info) { + is_frag = 1; + if (defrag_info->next_fn != frag_num) { + printk("discard:%d:%d\n", defrag_info->next_fn, frag_num); + dev_kfree_skb(skb); + spin_unlock_bh(&rwnx_hw->defrag_lock); + return 0; + } + + skb_put(defrag_info->skb, skb->len-(pull_len-8)); + memcpy(&defrag_info->skb->data[defrag_info->frm_len], \ + &skb->data[pull_len-8], skb->len - (pull_len-8)); + //printk("middle:%d,%d\n", skb->len-(pull_len-8), skb->len); + defrag_info->frm_len += (skb->len - (pull_len - 8)); + defrag_info->next_fn++; + dev_kfree_skb(skb); + spin_unlock_bh(&rwnx_hw->defrag_lock); + return 0; + } else { + defrag_info = kzalloc(sizeof(struct defrag_ctrl_info), GFP_KERNEL); + if (defrag_info == NULL) { + printk("no defrag_ctrl_info\r\n"); + dev_kfree_skb(skb); + spin_unlock_bh(&rwnx_hw->defrag_lock); + return 0; + } + defrag_info->skb = __dev_alloc_skb(2000, GFP_KERNEL); + if (defrag_info->skb == NULL) { + printk("no fragment skb\r\n"); + dev_kfree_skb(skb); + kfree(defrag_info); + spin_unlock_bh(&rwnx_hw->defrag_lock); + return 0; + } + is_frag = 1; + skb_pull(skb, pull_len); + skb_push(skb, 14); + memcpy(skb->data, ra, MAC_ADDR_LEN); + memcpy(&skb->data[6], ta, MAC_ADDR_LEN); + memcpy(&skb->data[12], ether_type, 2); + defrag_info->sn = seq_num; + defrag_info->next_fn = 1; + defrag_info->tid = tid; + defrag_info->sta_idx = sta_idx; + + skb_put(defrag_info->skb, skb->len); + memcpy(defrag_info->skb->data, skb->data, skb->len); + defrag_info->frm_len = skb->len; + defrag_info->rwnx_hw = rwnx_hw; + //printk("first:%p,%p,%p,%p,%p, %d,%d\r\n", defrag_info, defrag_info->skb, defrag_info->skb->head, defrag_info->skb->tail, defrag_info->skb->end, defrag_info->frm_len, skb->len); + list_add_tail(&defrag_info->list, &rwnx_hw->defrag_list); + spin_unlock_bh(&rwnx_hw->defrag_lock); +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) + init_timer(&defrag_info->defrag_timer); + defrag_info->defrag_timer.data = (unsigned long)defrag_info; + defrag_info->defrag_timer.function = defrag_timeout_cb; +#else + timer_setup(&defrag_info->defrag_timer, defrag_timeout_cb, 0); #endif - switch(hw_rxhdr->hwvect.decr_status) - { - case RWNX_RX_HD_DECR_CCMP128: - pull_len += 8;//ccmp_header - //skb_pull(&skb->data[skb->len-8], 8); //ccmp_mic_len - memcpy(ether_type, &skb->data[hdr_len + 6 + 8], 2); - break; - case RWNX_RX_HD_DECR_TKIP: - pull_len += 8;//tkip_header - memcpy(ether_type, &skb->data[hdr_len + 6 + 8], 2); - break; - case RWNX_RX_HD_DECR_WEP: - pull_len += 4;//wep_header - memcpy(ether_type, &skb->data[hdr_len + 6 + 4], 2); - break; - case RWNX_RX_HD_DECR_WAPI: - pull_len += 18;//wapi_header - memcpy(ether_type, &skb->data[hdr_len + 6 + 18], 2); - break; + ret = mod_timer(&defrag_info->defrag_timer, jiffies + msecs_to_jiffies(DEFRAG_MAX_WAIT)); + dev_kfree_skb(skb); + return 0; + } + } else { + //check whether the last fragment + if (!list_empty(&rwnx_hw->defrag_list)) { + spin_lock_bh(&rwnx_hw->defrag_lock); + list_for_each_entry(defrag_info_tmp, &rwnx_hw->defrag_list, list) { + if (((defrag_info_tmp->sn == seq_num) && (defrag_info_tmp->tid == tid) && \ + defrag_info_tmp->sta_idx == sta_idx)) { + defrag_info = defrag_info_tmp; + break; + } + } - default: - memcpy(ether_type, &skb->data[hdr_len + 6], 2); - break; - } + if (!defrag_info) + spin_unlock_bh(&rwnx_hw->defrag_lock); + else { + if (defrag_info->next_fn != frag_num) { + printk("discard:%d:%d\n", defrag_info->next_fn, frag_num); + dev_kfree_skb(skb); + spin_unlock_bh(&rwnx_hw->defrag_lock); + return 0; + } - skb_pull(skb, pull_len); - skb_push(skb, 14); - //fill 802.3 header - memcpy(skb->data, ra, MAC_ADDR_LEN);//destination addr - memcpy(&skb->data[6], ta, MAC_ADDR_LEN);//source addr - memcpy(&skb->data[12], ether_type, 2);//802.3 type - } + skb_put(defrag_info->skb, skb->len - (pull_len-8)); + memcpy(&defrag_info->skb->data[defrag_info->frm_len], \ + &skb->data[pull_len-8], skb->len - (pull_len-8)); + defrag_info->frm_len += (skb->len - (pull_len-8)); + is_frag = 1; + //printk("last: sn=%d, fn=%d, %d, %d\r\n", seq_num, frag_num, defrag_info->frm_len, skb->len); + + rwnx_vif = rwnx_rx_get_vif(rwnx_hw, hw_rxhdr->flags_vif_idx); + if (!rwnx_vif) { + printk("Frame received but no active vif (%d)", hw_rxhdr->flags_vif_idx); + dev_kfree_skb(skb); + spin_unlock_bh(&rwnx_hw->defrag_lock); + return 0; + } + dev_kfree_skb(skb); + + skb_tmp = defrag_info->skb; + list_del_init(&defrag_info->list); + if (timer_pending(&defrag_info->defrag_timer)) { + ret = del_timer(&defrag_info->defrag_timer); + } + kfree(defrag_info); + spin_unlock_bh(&rwnx_hw->defrag_lock); + + if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb_tmp, hw_rxhdr)) + dev_kfree_skb(skb_tmp); + + return 0; + } + } + } + } + + if (!is_frag && !is_amsdu) { + skb_pull(skb, pull_len); + skb_push(skb, 14); + memcpy(skb->data, ra, MAC_ADDR_LEN); + memcpy(&skb->data[6], ta, MAC_ADDR_LEN); + memcpy(&skb->data[12], ether_type, 2); + } + } if (hw_rxhdr->flags_is_80211_mpdu) { remove_sec_hdr_mgmt_frame(hw_rxhdr,skb); @@ -2161,8 +2577,8 @@ check_len_update: rwnx_vif = rwnx_rx_get_vif(rwnx_hw, hw_rxhdr->flags_vif_idx); if (!rwnx_vif) { - dev_err(rwnx_hw->dev, "Frame received but no active vif (%d)", - hw_rxhdr->flags_vif_idx); + dev_err(rwnx_hw->dev, "Frame received but no active vif (%d), skb->len:%u\n", + hw_rxhdr->flags_vif_idx, skb->len); dev_kfree_skb(skb); goto end; } @@ -2190,71 +2606,179 @@ check_len_update: skb->priority = 256 + tid;//hw_rxhdr->flags_user_prio; #ifdef AICWF_RX_REORDER - rx_priv_tmp = rx_priv; + rx_priv_tmp = rx_priv; rx_priv_tmp->rwnx_vif = (void *)rwnx_vif; - if( (rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) ){ - if(is_qos && hw_rxhdr->flags_need_reord){ - reord_process_unit((struct aicwf_rx_priv *)rx_priv, skb, seq_num, tid, 1); - }else if(is_qos && !hw_rxhdr->flags_need_reord) { - reord_flush_tid((struct aicwf_rx_priv *)rx_priv, skb, tid); - if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb, hw_rxhdr)) - dev_kfree_skb(skb); - } - else { - if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb, hw_rxhdr)) - dev_kfree_skb(skb); - } - } else if( (rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) ) { - #if 1 - const struct ethhdr *eth; - resend = false; - forward = true; - skb_reset_mac_header(skb); - eth = eth_hdr(skb); - //printk("da:%pM, %x,%x, len=%d\n", eth->h_dest, skb->data[12], skb->data[13], skb->len); - - if (unlikely(is_multicast_ether_addr(eth->h_dest))) { - /* broadcast pkt need to be forwared to upper layer and resent - on wireless interface */ - resend = true; + if( (rwnx_vif->wdev.iftype == NL80211_IFTYPE_STATION) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) ){ + if(is_qos && hw_rxhdr->flags_need_reord){ + struct recv_msdu *pframe; + pframe = reord_rxframe_alloc(&rx_priv_tmp->freeq_lock, &rx_priv_tmp->rxframes_freequeue); + if (!pframe) { + printk("no pframe\n"); + dev_kfree_skb(skb); + return -1; + } + pframe->is_ap_reord = 0; + pframe->ap_fwd_cnt = 0; + pframe->ap_resend_cnt = 0; + reord_process_unit(pframe, (struct aicwf_rx_priv *)rx_priv, skb, seq_num, tid, 1, hw_rxhdr->flags_is_amsdu); + } else if (is_qos && !hw_rxhdr->flags_need_reord) { + reord_flush_tid((struct aicwf_rx_priv *)rx_priv, skb, tid); + if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb, hw_rxhdr) && !hw_rxhdr->flags_is_amsdu) + dev_kfree_skb(skb); } else { - /* unicast pkt for STA inside the BSS, no need to forward to upper - layer simply resend on wireless interface */ - if (hw_rxhdr->flags_dst_idx != RWNX_INVALID_STA) { - struct rwnx_sta *sta = &rwnx_hw->sta_table[hw_rxhdr->flags_dst_idx]; - if (sta->valid && (sta->vlan_idx == rwnx_vif->vif_index)) { - resend = true; - forward = false; - } - } + if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb, hw_rxhdr) && !hw_rxhdr->flags_is_amsdu) + dev_kfree_skb(skb); } + } else if( (rwnx_vif->wdev.iftype == NL80211_IFTYPE_AP) || (rwnx_vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) ) { +#ifdef CONFIG_DYNAMIC_PERPWR + struct rwnx_sta *sta; +#endif + struct sk_buff_head list; + struct sk_buff *rx_skb; + +#ifdef CONFIG_DYNAMIC_PERPWR + sta = &rwnx_hw->sta_table[hw_rxhdr->flags_sta_idx]; + rssi_update_txpwrloss(sta, hw_rxhdr->hwvect.rx_vect1.rssi1); +#endif +#ifdef CONFIG_BAND_STEERING + (&rwnx_hw->sta_table[hw_rxhdr->flags_sta_idx])->rssi = hw_rxhdr->hwvect.rx_vect1.rssi1; +#endif + u8 flags_dst_idx = hw_rxhdr->flags_dst_idx; + u8 flags_need_reord = hw_rxhdr->flags_need_reord; + u8 flags_vif_idx = hw_rxhdr->flags_vif_idx; + u8 flags_is_amsdu = hw_rxhdr->flags_is_amsdu; + //u8 reord_cnt = 0; + struct recv_msdu *pframe = NULL; + + __skb_queue_head_init(&list); + + //printk("dst_idx=%d, len=%d\n", flags_dst_idx, skb->len); + if (flags_is_amsdu) { + rwnx_rxdata_process_amsdu(rwnx_hw, skb, flags_vif_idx, &list); //rxhdr not used below since skb free! + } else { + rwnx_hw->stats.amsdus_rx[0]++; + __skb_queue_head(&list, skb); + } + + while (!skb_queue_empty(&list)) { + rx_skb = __skb_dequeue(&list); + + skb_reset_mac_header(rx_skb); + eth = eth_hdr(rx_skb); + //printk("da:%pM, %x,%x, len=%d\n", eth->h_dest, skb->data[12], skb->data[13], skb->len); + + resend = false; + forward = true; + if (unlikely(is_multicast_ether_addr(eth->h_dest))) { + /* broadcast pkt need to be forwared to upper layer and resent + on wireless interface */ + resend = true; + } else { + /* unicast pkt for STA inside the BSS, no need to forward to upper + layer simply resend on wireless interface */ + if ((flags_dst_idx != RWNX_INVALID_STA) && !flags_is_amsdu) { + struct rwnx_sta *sta = &rwnx_hw->sta_table[flags_dst_idx]; + if (sta->valid && (sta->vlan_idx == rwnx_vif->vif_index)) { + resend = true; + forward = false; + } + } else { + struct rwnx_sta *cur, *tmp; + bool found = false; + spin_lock_bh(&rwnx_hw->cb_lock); + list_for_each_entry_safe(cur, tmp, &rwnx_vif->ap.sta_list, list) { + if (!memcmp(cur->mac_addr, eth->h_dest, ETH_ALEN)) { + found = true; + break; + } + } + spin_unlock_bh(&rwnx_hw->cb_lock); + if(found) { + //printk("amsdu found da\n"); + resend = true; + forward = false; + } + } + } if(resend){ - rwnx_rx_data_skb_resend(rwnx_hw, rwnx_vif, skb, hw_rxhdr); + rwnx_rx_data_skb_resend(rwnx_hw, rwnx_vif, rx_skb); } if(forward) { - if (is_qos && hw_rxhdr->flags_need_reord) - reord_process_unit((struct aicwf_rx_priv *)rx_priv, skb, seq_num, tid, 1); - else if (is_qos && !hw_rxhdr->flags_need_reord) { - reord_flush_tid((struct aicwf_rx_priv *)rx_priv, skb, tid); - rwnx_rx_data_skb_forward(rwnx_hw, rwnx_vif, skb, hw_rxhdr); + if (is_qos && flags_need_reord) { + if(pframe == NULL) { + pframe = reord_rxframe_alloc(&rx_priv_tmp->freeq_lock, &rx_priv_tmp->rxframes_freequeue); + if (!pframe) { + dev_kfree_skb(rx_skb); + return -1; + } + rx_skb->next = NULL; + pframe->ap_fwd_cnt = 1; + pframe->ap_resend_cnt = 0; + pframe->first_fwd_skb = rx_skb; + pframe->last_fwd_skb = rx_skb; + pframe->first_resend_skb = NULL; + pframe->last_resend_skb = NULL; + } else { + rx_skb->next = NULL; + pframe->ap_fwd_cnt++; + if(pframe->first_fwd_skb == NULL) { + pframe->first_fwd_skb = rx_skb; + pframe->last_fwd_skb = rx_skb; + } else { + pframe->last_fwd_skb->next = rx_skb; + pframe->last_fwd_skb = rx_skb; + } + } + } else if (is_qos && !flags_need_reord) { + reord_flush_tid((struct aicwf_rx_priv *)rx_priv, rx_skb, tid); + rwnx_rx_data_skb_forward(rwnx_hw, rwnx_vif, rx_skb); } else - rwnx_rx_data_skb_forward(rwnx_hw, rwnx_vif, skb, hw_rxhdr); + rwnx_rx_data_skb_forward(rwnx_hw, rwnx_vif, rx_skb); } else if(resend) { - if (is_qos && hw_rxhdr->flags_need_reord) - reord_process_unit((struct aicwf_rx_priv *)rx_priv, skb, seq_num, tid, 0); - else if (is_qos && !hw_rxhdr->flags_need_reord) { - reord_flush_tid((struct aicwf_rx_priv *)rx_priv, skb, tid); - dev_kfree_skb(skb); - } + if (is_qos && flags_need_reord) { + if(pframe == NULL) { + pframe = reord_rxframe_alloc(&rx_priv_tmp->freeq_lock, &rx_priv_tmp->rxframes_freequeue); + if (!pframe) { + dev_kfree_skb(rx_skb); + return -1; + } + rx_skb->next = NULL; + pframe->ap_fwd_cnt = 0; + pframe->ap_resend_cnt = 1; + pframe->first_fwd_skb = NULL; + pframe->last_fwd_skb = NULL; + pframe->first_resend_skb = rx_skb; + pframe->last_resend_skb = rx_skb; + } else { + rx_skb->next = NULL; + pframe->ap_resend_cnt++; + if(pframe->first_resend_skb == NULL) { + pframe->first_resend_skb = rx_skb; + pframe->last_resend_skb = rx_skb; + } else { + pframe->last_resend_skb->next = rx_skb; + pframe->last_resend_skb = rx_skb; + } + } + } + else if (is_qos && !flags_need_reord) { + if(!reord_flush_tid((struct aicwf_rx_priv *)rx_priv, rx_skb, tid)) + dev_kfree_skb(rx_skb); + } else { + dev_kfree_skb(rx_skb); + } } else - dev_kfree_skb(skb); - #else - if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb, hw_rxhdr)) - dev_kfree_skb(skb); - #endif + dev_kfree_skb(rx_skb); + } + + if(pframe != NULL) { + pframe->is_ap_reord = 1; + //printk("reord:%d,%d\n", pframe->ap_fwd_cnt, pframe->ap_resend_cnt); + reord_process_unit(pframe, (struct aicwf_rx_priv *)rx_priv, rx_skb, seq_num, tid, 0, 0); + } } #else if (!rwnx_rx_data_skb(rwnx_hw, rwnx_vif, skb, hw_rxhdr)) diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_rx.h b/drivers/aic8800/aic8800_fdrv/rwnx_rx.h index e5480cd..e7e71f6 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_rx.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_rx.h @@ -326,8 +326,12 @@ struct hw_rxhdr { u32 pattern; }; -extern const u8 legrates_lut[]; -extern u16 legrates_lut_rate[]; +struct rwnx_legrate { + int idx; + int rate; +}; + +extern struct rwnx_legrate legrates_lut[]; extern u16 tx_legrates_lut_rate[]; struct DHCPInfo { @@ -376,6 +380,8 @@ void reord_timeout_handler (struct timer_list *t); #endif #endif +void rwnx_rxdata_process_amsdu(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, u8 vif_idx, + struct sk_buff_head *list); #ifdef CONFIG_HE_FOR_OLD_KERNEL #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 197) diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_strs.c b/drivers/aic8800/aic8800_fdrv/rwnx_strs.c index 1e52871..105301d 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_strs.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_strs.c @@ -135,6 +135,8 @@ static const char *const rwnx_mmid2str[MSG_I(MM_MAX)] = { [MSG_I(MM_GET_WIFI_DISABLE_REQ)] = "MM_GET_WIFI_DISABLE_REQ", [MSG_I(MM_GET_WIFI_DISABLE_CFM)] = "MM_GET_WIFI_DISABLE_CFM", [MSG_I(MM_CFG_RSSI_CFM)] = "MM_CFG_RSSI_CFM", + [MSG_I(MM_SET_TXPWR_PER_STA_REQ)] = "MM_SET_TXPWR_PER_STA_REQ", + [MSG_I(MM_SET_TXPWR_PER_STA_CFM)] = "MM_SET_TXPWR_PER_STA_CFM", }; static const char *const rwnx_dbgid2str[MSG_I(DBG_MAX)] = { diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_tx.c b/drivers/aic8800/aic8800_fdrv/rwnx_tx.c index 0d66786..ae44319 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_tx.c +++ b/drivers/aic8800/aic8800_fdrv/rwnx_tx.c @@ -18,6 +18,7 @@ #include "rwnx_events.h" #include "rwnx_compat.h" #include "aicwf_txrxif.h" +#include "rwnx_main.h" #ifdef CONFIG_RWNX_MON_XMIT #include #endif @@ -107,7 +108,7 @@ void rwnx_ps_bh_enable(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, spin_unlock_bh(&rwnx_hw->tx_lock); //if (sta->ps.pkt_ready[LEGACY_PS_ID]) - // rwnx_set_traffic_status(rwnx_hw, sta, true, LEGACY_PS_ID); + //rwnx_set_traffic_status(rwnx_hw, sta, true, LEGACY_PS_ID); //if (sta->ps.pkt_ready[UAPSD_ID]) // rwnx_set_traffic_status(rwnx_hw, sta, true, UAPSD_ID); @@ -132,8 +133,8 @@ void rwnx_ps_bh_enable(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, rwnx_txq_sta_start(sta, RWNX_TXQ_STOP_STA_PS, rwnx_hw); spin_unlock_bh(&rwnx_hw->tx_lock); - //if (sta->ps.pkt_ready[LEGACY_PS_ID]) - // rwnx_set_traffic_status(rwnx_hw, sta, false, LEGACY_PS_ID); + if (sta->ps.pkt_ready[LEGACY_PS_ID]) + rwnx_set_traffic_status(rwnx_hw, sta, false, LEGACY_PS_ID); //if (sta->ps.pkt_ready[UAPSD_ID]) // rwnx_set_traffic_status(rwnx_hw, sta, false, UAPSD_ID); @@ -1466,6 +1467,7 @@ netdev_tx_t rwnx_start_xmit(struct sk_buff *skb, struct net_device *dev) skb->priority = 0; #ifdef CONFIG_FILTER_TCP_ACK + if(cpu_to_le16(skb->len) <= MAX_TCP_ACK){ msgbuf=intf_tcp_alloc_msg(msgbuf); msgbuf->rwnx_vif=rwnx_vif; msgbuf->skb=skb; @@ -1475,6 +1477,7 @@ netdev_tx_t rwnx_start_xmit(struct sk_buff *skb, struct net_device *dev) move_tcpack_msg(rwnx_hw,msgbuf); kfree(msgbuf); } + } #endif memcpy(ð_t, skb->data, sizeof(struct ethhdr)); @@ -1830,6 +1833,141 @@ int rwnx_start_mgmt_xmit(struct rwnx_vif *vif, struct rwnx_sta *sta, return 0; } +#ifdef CONFIG_BAND_STEERING +void rwnx_probersp_work(struct work_struct *work) +{ + struct ap_probe_rsp *rsp = container_of(work, struct ap_probe_rsp, rsp_work); + struct rwnx_vif *rwnx_vif = container_of(rsp, struct rwnx_vif, pb_pool[0]); + struct rwnx_hw *rwnx_hw = rwnx_vif->rwnx_hw; + struct sk_buff *skb = NULL; + struct rwnx_bcn *bcn = &rwnx_vif->ap.bcn; + unsigned int len = bcn->len; + u8_l *buf; + struct ieee80211_mgmt *mgmt; + bool robust; + u16_l headroom, frame_len; + struct rwnx_sta *sta = NULL; + struct rwnx_txq *txq; + struct rwnx_txhdr *txhdr; + struct rwnx_sw_txhdr *sw_txhdr; + struct txdesc_api *desc; + headroom = sizeof(struct rwnx_txhdr); + frame_len = len; + + if (aicwf_band_steering_block_chk(rwnx_vif, rsp->da)) { + AICWFDBG(LOGSTEER, "usb %s, %d, probe_rsp refuse temp %pM\n", __func__, rwnx_vif->ap.freq, rsp->da); + goto free_use; + } + if (!bcn->head || bcn->head_len == 0 || bcn->head_len > frame_len) { + AICWFDBG(LOGSTEER, "%s bcn head NULL\n", __func__); + goto free_use; + } + + skb = dev_alloc_skb(frame_len + headroom); + if (!skb) { + AICWFDBG(LOGERROR, "%s alloc skb fail\n", __func__); + goto free_use; + } + + skb_reserve(skb, headroom); + buf = skb_put(skb, frame_len); + + memcpy(buf, bcn->head, bcn->head_len); + buf += bcn->head_len; + *buf++ = WLAN_EID_TIM; + *buf++ = 4; + *buf++ = 0; + *buf++ = bcn->dtim; + *buf++ = 0; + *buf++ = 0; + if (bcn->tail) { + memcpy(buf, bcn->tail, bcn->tail_len); + buf += bcn->tail_len; + } + if (bcn->ies) + memcpy(buf, bcn->ies, bcn->ies_len); + + mgmt = (struct ieee80211_mgmt *)skb->data; + mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_RESP); + memcpy (mgmt->da, rsp->da, ETH_ALEN); + rsp->in_use = false; + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) + robust = ieee80211_is_robust_mgmt_frame(skb); +#else + if (skb->len < 25) + robust = false; + robust = ieee80211_is_robust_mgmt_frame((void *)skb->data); +#endif + + sta = rwnx_retrieve_sta(rwnx_hw, rwnx_vif, mgmt->da, mgmt->frame_control, true); + if (sta) { + txq = rwnx_txq_sta_get(sta, 8, rwnx_hw); + } else { + txq = rwnx_txq_vif_get(rwnx_vif, NX_UNK_TXQ_TYPE); + } + if (txq->idx == TXQ_INACTIVE) { + AICWFDBG(LOGERROR, "%s TXQ inactive\n", __func__); + goto fail; + } + + skb_push(skb, headroom); + txhdr = (struct rwnx_txhdr *)skb->data; + txhdr->hw_hdr.cfm.status.value = 0; + sw_txhdr = kmem_cache_alloc(rwnx_hw->sw_txhdr_cache, GFP_ATOMIC); + if (unlikely(sw_txhdr == NULL)) { + AICWFDBG(LOGERROR, "%s cache fail\n", __func__); + goto fail; + } + txhdr->sw_hdr = sw_txhdr; + sw_txhdr->txq = txq; + sw_txhdr->frame_len = frame_len; + sw_txhdr->rwnx_sta = sta; + sw_txhdr->rwnx_vif = rwnx_vif; + sw_txhdr->skb = skb; + sw_txhdr->headroom = headroom; + sw_txhdr->map_len = skb->len - offsetof(struct rwnx_txhdr, hw_hdr); +#ifdef CONFIG_RWNX_AMSDUS_TX + sw_txhdr->amsdu.len = 0; + sw_txhdr->amsdu.nb = 0; +#endif + sw_txhdr->raw_frame = 0; + sw_txhdr->fixed_rate = 0; + + desc = &sw_txhdr->desc; + desc->host.ethertype = 0; + desc->host.staid = (sta) ? sta->sta_idx : 0xFF; + desc->host.vif_idx = rwnx_vif->vif_index; + desc->host.tid = 0xFF; + desc->host.flags = TXU_CNTRL_MGMT; + if (robust) + desc->host.flags |= TXU_CNTRL_MGMT_ROBUST; +#ifdef CONFIG_RWNX_SPLIT_TX_BUF + desc->host.packet_len[0] = frame_len; +#else + desc->host.packet_len = frame_len; +#endif + desc->host.status_desc_addr = sw_txhdr->dma_addr; + + spin_lock_bh(&rwnx_hw->tx_lock); + AICWFDBG(LOGSTEER, "usb p_rsp: %pM", mgmt->da); + // AICWFDBG(LOGDEBUG, "usb %s sta:%p skb:%p desc->host.staid:%d \r\n", __func__, sta, skb, desc->host.staid); + if (rwnx_txq_queue_skb(skb, txq, rwnx_hw, false)) + rwnx_hwq_process(rwnx_hw, txq->hwq); + spin_unlock_bh(&rwnx_hw->tx_lock); + + return; + +fail: + if (sw_txhdr) + kmem_cache_free(rwnx_hw->sw_txhdr_cache, sw_txhdr); + dev_kfree_skb(skb); +free_use: + if (rsp->in_use) + rsp->in_use = false; +} +#endif + #ifdef CONFIG_RWNX_MON_XMIT /** * netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb, @@ -1876,11 +2014,11 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d int nx_off_chan_txq_idx = NX_OFF_CHAN_TXQ_IDX; rtap_hdr = (struct ieee80211_radiotap_header*)(rtap_buf); - rtap_len = ieee80211_get_radiotap_len(rtap_buf); + rtap_len = ieee80211_get_radiotap_len(rtap_buf);//max_length frame_len = skb->len; - printk("rwnx_start_monitor_if_xmit, skb_len=%d, rtap_len=%d\n", skb->len, rtap_len); - + AICWFDBG(LOGINFO, "rwnx_start_monitor_if_xmit, skb_len=%d, rtap_len=%d\n", skb->len, rtap_len); +//rwnx_data_dump((char*)__func__, skb->data, skb->len); if((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8801) || ((g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8800DC || g_rwnx_plat->usbdev->chipid == PRODUCT_ID_AIC8800DW) && chip_id < 3)){ @@ -1888,14 +2026,20 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d } - if (unlikely(rtap_hdr->it_version)) + if (unlikely(rtap_hdr->it_version)){ + AICWFDBG(LOGERROR, "%s itv \r\n", __func__); goto free_tag; + } - if (unlikely(skb->len < rtap_len)) + if (unlikely(skb->len < rtap_len)){ + AICWFDBG(LOGERROR, "%s skb->len < rtap_len \r\n", __func__); goto free_tag; + } - if (unlikely(rtap_len < sizeof(struct ieee80211_radiotap_header))) + if (unlikely(rtap_len < sizeof(struct ieee80211_radiotap_header))){ + AICWFDBG(LOGERROR, "%s rtap_len < sizeof(struct ieee80211_radiotap_header) \r\n", __func__); goto free_tag; + } frame_len -= rtap_len; pframe = rtap_buf + rtap_len; @@ -1907,39 +2051,44 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d if (ret) { continue; } + AICWFDBG(LOGDEBUG, "%s iterator.this_arg_index:%d iterator.this_arg:%x\r\n", __func__, + iterator.this_arg_index, *iterator.this_arg); switch (iterator.this_arg_index) { case IEEE80211_RADIOTAP_RATE: // This is basic 802.11b/g rate; use MCS/VHT for higher rates rate = *iterator.this_arg; - printk("rate=0x%x\n", rate); + AICWFDBG(LOGDEBUG, "rate=0x%x\n", rate); for (idx = 0; idx < HW_RATE_MAX; idx++) { if ((rate * 5) == tx_legrates_lut_rate[idx]) { + AICWFDBG(LOGDEBUG, "%s datarate:%d \r\n", __func__, tx_legrates_lut_rate[idx]); break; } } + if (idx < HW_RATE_MAX) { rate_idx = idx; + AICWFDBG(LOGDEBUG, "rate_idx = %d \r\n", rate_idx); } else { - printk("invalid radiotap rate: %d\n", rate); + AICWFDBG(LOGERROR, "invalid radiotap rate: %d\n", rate); } break; case IEEE80211_RADIOTAP_TX_FLAGS: { u16_l txflags = get_unaligned_le16(iterator.this_arg); - printk("txflags=0x%x\n", txflags); + AICWFDBG(LOGDEBUG, "txflags=0x%x\n", txflags); if ((txflags & IEEE80211_RADIOTAP_F_TX_NOACK) == 0) { - printk(" TX_NOACK\n"); + AICWFDBG(LOGDEBUG, " TX_NOACK\n"); } if (txflags & 0x0010) { // Use preconfigured seq num // NOTE: this is currently ignored due to qos_en=_FALSE and HW seq num override - printk(" GetSequence\n"); + AICWFDBG(LOGDEBUG, " GetSequence\n"); } } break; case IEEE80211_RADIOTAP_MCS: { u8_l mcs_have = iterator.this_arg[0]; - printk("mcs_have=0x%x\n", mcs_have); + AICWFDBG(LOGDEBUG, "mcs_have=0x%x\n", mcs_have); rate_fmt = FORMATMOD_HT_MF; if (mcs_have & IEEE80211_RADIOTAP_MCS_HAVE_BW) { u8_l bw = (iterator.this_arg[1] & IEEE80211_RADIOTAP_MCS_BW_MASK); @@ -1953,7 +2102,7 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d bw = IEEE80211_RADIOTAP_MCS_BW_20; ch_offset = 2; // CHNL_OFFSET_UPPER; } - printk(" bw=%d, ch_offset=%d\n", bw, ch_offset); + AICWFDBG(LOGDEBUG, " bw=%d, ch_offset=%d\n", bw, ch_offset); } if (mcs_have & IEEE80211_RADIOTAP_MCS_HAVE_MCS) { u8_l fixed_rate = iterator.this_arg[2] & 0x7f; @@ -1961,17 +2110,17 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d fixed_rate = 0; } rate_idx = fixed_rate; - printk(" fixed_rate=0x%x\n", fixed_rate); + AICWFDBG(LOGDEBUG, " fixed_rate=0x%x\n", fixed_rate); } if ((mcs_have & IEEE80211_RADIOTAP_MCS_HAVE_GI) && (iterator.this_arg[1] & IEEE80211_RADIOTAP_MCS_SGI)) { - printk(" sgi\n"); + AICWFDBG(LOGDEBUG, " sgi\n"); } if ((mcs_have & IEEE80211_RADIOTAP_MCS_HAVE_FEC) && (iterator.this_arg[1] & IEEE80211_RADIOTAP_MCS_FEC_LDPC)) { - printk(" ldpc\n"); + AICWFDBG(LOGDEBUG, " ldpc\n"); } if (mcs_have & IEEE80211_RADIOTAP_MCS_HAVE_STBC) { u8 stbc = (iterator.this_arg[1] & IEEE80211_RADIOTAP_MCS_STBC_MASK) >> IEEE80211_RADIOTAP_MCS_STBC_SHIFT; - printk(" stbc=0x%x\n", stbc); + AICWFDBG(LOGDEBUG, " stbc=0x%x\n", stbc); } } break; @@ -1981,17 +2130,17 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d u8 known = iterator.this_arg[0]; u8 flags = iterator.this_arg[2]; rate_fmt = FORMATMOD_VHT; - printk("known=0x%x, flags=0x%x\n", known, flags); + AICWFDBG(LOGDEBUG, "known=0x%x, flags=0x%x\n", known, flags); // NOTE: this code currently only supports 1SS for radiotap defined rates if ((known & IEEE80211_RADIOTAP_VHT_KNOWN_STBC) && (flags & IEEE80211_RADIOTAP_VHT_FLAG_STBC)) { - printk(" stbc\n"); + AICWFDBG(LOGDEBUG, " stbc\n"); } if ((known & IEEE80211_RADIOTAP_VHT_KNOWN_GI) && (flags & IEEE80211_RADIOTAP_VHT_FLAG_SGI)) { - printk(" sgi\n"); + AICWFDBG(LOGDEBUG, " sgi\n"); } if (known & IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH) { u8_l bw = iterator.this_arg[3] & 0x1F; - printk(" bw=0x%x\n",bw); + AICWFDBG(LOGDEBUG, " bw=0x%x\n",bw); // NOTE: there are various L and U, but we just use straight 20/40/80 // since it's not clear how to set CHNL_OFFSET_LOWER/_UPPER with different // sideband sizes/configurations. TODO. @@ -1999,26 +2148,26 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d txsig_bw = PHY_CHNL_BW_40; if (bw == 0) { txsig_bw = PHY_CHNL_BW_20; - printk(" 20M\n"); + AICWFDBG(LOGDEBUG, " 20M\n"); } else if (bw >=1 && bw <= 3) { - printk(" 40M\n"); + AICWFDBG(LOGDEBUG, " 40M\n"); } else if (bw >=4 && bw <= 10) { - printk(" 80M\n"); + AICWFDBG(LOGDEBUG, " 80M\n"); } else if (bw >= 11 && bw <= 25) { - printk(" 160M\n"); + AICWFDBG(LOGDEBUG, " 160M\n"); } } // User 0 nss = iterator.this_arg[4] & 0x0F; // Number of spatial streams - printk(" nss=0x%x\n", nss); + AICWFDBG(LOGINFO, " nss=0x%x\n", nss); if (nss > 0) { if (nss > 4) nss = 4; mcs = (iterator.this_arg[4]>>4) & 0x0F; // MCS rate index if (mcs > 8) mcs = 9; rate_idx = mcs; - printk(" mcs=0x%x\n", mcs); + AICWFDBG(LOGDEBUG, " mcs=0x%x\n", mcs); if (iterator.this_arg[8] & IEEE80211_RADIOTAP_CODING_LDPC_USER0) { - printk(" ldpc\n"); + AICWFDBG(LOGDEBUG, " ldpc\n"); } } } @@ -2048,13 +2197,13 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d } if (data2 & IEEE80211_RADIOTAP_HE_DATA2_GI_KNOWN) { u8 gi = (data5 & IEEE80211_RADIOTAP_HE_DATA5_GI) >> 4; - printk(" gi: %d\n", gi); + AICWFDBG(LOGDEBUG, " gi: %d\n", gi); } } break; default: - printk("unparsed arg: 0x%x\n",iterator.this_arg_index); + AICWFDBG(LOGERROR, "unparsed arg: 0x%x\n",iterator.this_arg_index); break; } } @@ -2089,14 +2238,14 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d txq = rwnx_txq_vif_get(vif, NX_UNK_TXQ_TYPE); } if (txq->idx == TXQ_INACTIVE) { - printk("TXQ_INACTIVE\n"); + AICWFDBG(LOGERROR, "TXQ_INACTIVE\n"); goto free_tag; } // prepare to xmit headroom = sizeof(struct rwnx_txhdr); skb_mgmt = dev_alloc_skb(headroom + frame_len); if (!skb_mgmt) { - printk("skb_mgmt alloc fail\n"); + AICWFDBG(LOGERROR, "skb_mgmt alloc fail\n"); goto free_tag; } skb_reserve(skb_mgmt, headroom); @@ -2118,7 +2267,7 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d sw_txhdr = kmem_cache_alloc(rwnx_hw->sw_txhdr_cache, GFP_ATOMIC); if (unlikely(sw_txhdr == NULL)) { dev_kfree_skb(skb_mgmt); - printk("sw_txhdr alloc fail\n"); + AICWFDBG(LOGERROR, "sw_txhdr alloc fail\n"); goto free_tag; } txhdr->sw_hdr = sw_txhdr; @@ -2160,6 +2309,7 @@ netdev_tx_t rwnx_start_monitor_if_xmit(struct sk_buff *skb, struct net_device *d desc->host.status_desc_addr = sw_txhdr->dma_addr; spin_lock_bh(&rwnx_hw->tx_lock); + AICWFDBG(LOGTRACE, "%s send data\r\n", __func__); if (rwnx_txq_queue_skb(skb_mgmt, txq, rwnx_hw, false)) rwnx_hwq_process(rwnx_hw, txq->hwq); spin_unlock_bh(&rwnx_hw->tx_lock); diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_tx.h b/drivers/aic8800/aic8800_fdrv/rwnx_tx.h index da4511d..eb64c77 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_tx.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_tx.h @@ -194,5 +194,9 @@ int rwnx_dbgfs_print_sta(char *buf, size_t size, struct rwnx_sta *sta, void rwnx_txq_credit_update(struct rwnx_hw *rwnx_hw, int sta_idx, u8 tid, s8 update); void rwnx_tx_push(struct rwnx_hw *rwnx_hw, struct rwnx_txhdr *txhdr, int flags); +#ifdef CONFIG_BAND_STEERING +void rwnx_probersp_work(struct work_struct *work); +#endif + #endif /* _RWNX_TX_H_ */ diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_version_gen.h b/drivers/aic8800/aic8800_fdrv/rwnx_version_gen.h index 6de34a9..705c56e 100644 --- a/drivers/aic8800/aic8800_fdrv/rwnx_version_gen.h +++ b/drivers/aic8800/aic8800_fdrv/rwnx_version_gen.h @@ -1,5 +1,5 @@ #define RWNX_VERS_REV "1a4b0054d2M (master)" #define RWNX_VERS_MOD "6.4.3.0" #define RWNX_VERS_BANNER "rwnx v6.4.3.0 - 1a4b0054d2M (master)" -#define RELEASE_DATE "2024_0420_24c7777c" +#define RELEASE_DATE "2025_0423_71b66e7b" diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_wakelock.c b/drivers/aic8800/aic8800_fdrv/rwnx_wakelock.c new file mode 100644 index 0000000..90e7ad8 --- /dev/null +++ b/drivers/aic8800/aic8800_fdrv/rwnx_wakelock.c @@ -0,0 +1,92 @@ +#include +#include +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) +#include +#else +#include +#endif +#include "rwnx_defs.h" +#include "rwnx_wakelock.h" + +struct wakeup_source *rwnx_wakeup_init(const char *name) +{ + struct wakeup_source *ws; + ws = wakeup_source_create(name); + wakeup_source_add(ws); + return ws; +} + +void rwnx_wakeup_deinit(struct wakeup_source *ws) +{ + if (ws && ws->active) + __pm_relax(ws); + wakeup_source_remove(ws); + wakeup_source_destroy(ws); +} + +struct wakeup_source *rwnx_wakeup_register(struct device *dev, const char *name) +{ + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) + return wakeup_source_register(dev, name); +#else + +#if defined(CONFIG_PLATFORM_ROCKCHIP2) || defined(CONFIG_PLATFORM_ROCKCHIP) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) + return wakeup_source_register(dev, name); +#else + return wakeup_source_register(name); +#endif + +#else + return wakeup_source_register(name); +#endif//#if defined(CONFIG_PLATFORM_ROCKCHIP2) || defined(CONFIG_PLATFORM_ROCKCHIP) + +#endif//LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0) +} + +void rwnx_wakeup_unregister(struct wakeup_source *ws) +{ + if (ws && ws->active) + __pm_relax(ws); + wakeup_source_unregister(ws); +} + +void rwnx_wakeup_lock(struct wakeup_source *ws) +{ + AICWFDBG(LOGDEBUG, "%s enter \r\n", __func__); + __pm_stay_awake(ws); +} + +void rwnx_wakeup_unlock(struct wakeup_source *ws) +{ + AICWFDBG(LOGDEBUG, "%s enter \r\n", __func__); + __pm_relax(ws); +} + +void rwnx_wakeup_lock_timeout(struct wakeup_source *ws, unsigned int msec) +{ + __pm_wakeup_event(ws, msec); +} + +void aicwf_wakeup_lock_init(struct rwnx_hw *rwnx_hw) +{ + rwnx_hw->ws_tx = rwnx_wakeup_init("rwnx_tx_wakelock"); + rwnx_hw->ws_rx = rwnx_wakeup_init("rwnx_rx_wakelock"); + rwnx_hw->ws_irqrx = rwnx_wakeup_init("rwnx_irqrx_wakelock"); + rwnx_hw->ws_pwrctrl = rwnx_wakeup_init("rwnx_pwrcrl_wakelock"); +} + +void aicwf_wakeup_lock_deinit(struct rwnx_hw *rwnx_hw) +{ + rwnx_wakeup_deinit(rwnx_hw->ws_tx); + rwnx_wakeup_deinit(rwnx_hw->ws_rx); + rwnx_wakeup_deinit(rwnx_hw->ws_irqrx); + rwnx_wakeup_deinit(rwnx_hw->ws_pwrctrl); + rwnx_hw->ws_tx = NULL; + rwnx_hw->ws_rx = NULL; + rwnx_hw->ws_irqrx = NULL; + rwnx_hw->ws_pwrctrl = NULL; +} + diff --git a/drivers/aic8800/aic8800_fdrv/rwnx_wakelock.h b/drivers/aic8800/aic8800_fdrv/rwnx_wakelock.h new file mode 100644 index 0000000..9c9655a --- /dev/null +++ b/drivers/aic8800/aic8800_fdrv/rwnx_wakelock.h @@ -0,0 +1,21 @@ +#ifndef __RWNX_WAKELOCK_H +#define __RWNX_WAKELOCK_H + +#include +#include +#include + +struct wakeup_source *rwnx_wakeup_init(const char *name); +void rwnx_wakeup_deinit(struct wakeup_source *ws); + +struct wakeup_source *rwnx_wakeup_register(struct device *dev, const char *name); +void rwnx_wakeup_unregister(struct wakeup_source *ws); + +void rwnx_wakeup_lock(struct wakeup_source *ws); +void rwnx_wakeup_unlock(struct wakeup_source *ws); +void rwnx_wakeup_lock_timeout(struct wakeup_source *ws, unsigned int msec); + +void aicwf_wakeup_lock_init(struct rwnx_hw *rwnx_hw); +void aicwf_wakeup_lock_deinit(struct rwnx_hw *rwnx_hw); + +#endif diff --git a/drivers/aic8800/aic_load_fw/.gitignore b/drivers/aic8800/aic_load_fw/.gitignore new file mode 100644 index 0000000..6ebacd5 --- /dev/null +++ b/drivers/aic8800/aic_load_fw/.gitignore @@ -0,0 +1,11 @@ +*.o +*.ko +*.order +*.symvers +*.o.d +*.o.cmd +*.ko.cmd +*.mod +*.mod.c* + +.tmp_versions/ diff --git a/drivers/aic8800/aic_load_fw/Makefile b/drivers/aic8800/aic_load_fw/Makefile index 9c87ab3..3479e82 100644 --- a/drivers/aic8800/aic_load_fw/Makefile +++ b/drivers/aic8800/aic_load_fw/Makefile @@ -7,11 +7,14 @@ CONFIG_M2D_OTA_AUTO_SUPPORT = n CONFIG_LINK_DET_5G = y CONFIG_FOR_IPCAM = n CONFIG_USB_SUSPEND_REBOOT_TIME = n +CONFIG_SUPPORT_USB_SUSP = n +CONFIG_RADAR_OR_IR_DETECT =n # Need to set fw path in BOARD_KERNEL_CMDLINE CONFIG_USE_FW_REQUEST ?= n CONFIG_PREALLOC_RX_SKB ?= n CONFIG_PREALLOC_TXQ ?= y +CONFIG_BAND_STEERING = n # Platform support list CONFIG_PLATFORM_ROCKCHIP ?= n @@ -39,7 +42,9 @@ ccflags-$(CONFIG_USE_FW_REQUEST) += -DCONFIG_USE_FW_REQUEST ccflags-$(CONFIG_PREALLOC_RX_SKB) += -DCONFIG_PREALLOC_RX_SKB ccflags-$(CONFIG_PREALLOC_TXQ) += -DCONFIG_PREALLOC_TXQ ccflags-$(CONFIG_USB_SUSPEND_REBOOT_TIME) += -DCONFIG_USB_SUSPEND_REBOOT_TIME - +ccflags-$(CONFIG_SUPPORT_USB_SUSP) += -DCONFIG_SUPPORT_USB_SUSP +ccflags-$(CONFIG_RADAR_OR_IR_DETECT) += -DCONFIG_RADAR_OR_IR_DETECT +ccflags-$(CONFIG_BAND_STEERING) += -DCONFIG_BAND_STEERING obj-$(CONFIG_AIC_LOADFW_SUPPORT) := $(MODULE_NAME).o $(MODULE_NAME)-y := aic_bluetooth_main.o \ @@ -48,6 +53,7 @@ $(MODULE_NAME)-y := aic_bluetooth_main.o \ aic_txrxif.o \ aicbluetooth_cmds.o \ aic_compat_8800d80.o \ + aic_compat_8800d80x2.o \ md5.o $(MODULE_NAME)-$(CONFIG_PREALLOC_RX_SKB) += aicwf_rx_prealloc.o diff --git a/drivers/aic8800/aic_load_fw/aic_compat_8800d80.c b/drivers/aic8800/aic_load_fw/aic_compat_8800d80.c index 2d1f272..1a9c43e 100644 --- a/drivers/aic8800/aic_load_fw/aic_compat_8800d80.c +++ b/drivers/aic8800/aic_load_fw/aic_compat_8800d80.c @@ -17,7 +17,7 @@ void rwnx_release_firmware_common(u32** buffer); extern int testmode; extern u8 chip_id; -u8 chip_mcu_id = 0; +extern u8 chip_mcu_id; typedef u32 (*array2_tbl_t)[2]; @@ -39,13 +39,26 @@ typedef struct { #define AIC_PATCH_OFST(mem) ((size_t) &((aic_patch_t *)0)->mem) #define AIC_PATCH_ADDR(mem) ((u32) (aic_patch_str_base + AIC_PATCH_OFST(mem))) +#define USER_PWROFST_COVER_CALIB_FLAG (0x01U << 0) #define USER_CHAN_MAX_TXPWR_EN_FLAG (0x01U << 1) #define USER_TX_USE_ANA_F_FLAG (0x01U << 2) +#define USER_APM_PRBRSP_OFFLOAD_DISABLE_FLAG (0x01U << 3) +#define USER_HE_MU_EDCA_UPDATE_DISABLE_FLAG (0x01U << 4) +#define CFG_PWROFST_COVER_CALIB 1 +#ifdef CONFIG_POWER_LIMIT +#define CFG_USER_CHAN_MAX_TXPWR_EN 1 +#else #define CFG_USER_CHAN_MAX_TXPWR_EN 0 +#endif #define CFG_USER_TX_USE_ANA_F 0 +#ifdef CONFIG_BAND_STEERING +#define CFG_USER_APM_PRBRSP_OFFLOAD_DISABLE 1 +#else +#define CFG_USER_APM_PRBRSP_OFFLOAD_DISABLE 0 +#endif -#define CFG_USER_EXT_FLAGS_EN (CFG_USER_CHAN_MAX_TXPWR_EN || CFG_USER_TX_USE_ANA_F) +#define CFG_USER_EXT_FLAGS_EN (CFG_PWROFST_COVER_CALIB || CFG_USER_CHAN_MAX_TXPWR_EN || CFG_USER_TX_USE_ANA_F|| CFG_USER_APM_PRBRSP_OFFLOAD_DISABLE) u32 patch_tbl_d80[][2] = { @@ -60,16 +73,26 @@ u32 patch_tbl_d80[][2] = {0x0170, 0x0001000A},//rx aggr counter #endif - #if CFG_USER_EXT_FLAGS_EN - {0x0188, 0x00000001 - #if CFG_USER_CHAN_MAX_TXPWR_EN - | USER_CHAN_MAX_TXPWR_EN_FLAG - #endif - #if CFG_USER_TX_USE_ANA_F - | USER_TX_USE_ANA_F_FLAG - #endif - }, // user_ext_flags - #endif +#if CFG_USER_EXT_FLAGS_EN + {0x0188, 0x00000000 +#if CFG_PWROFST_COVER_CALIB + | USER_PWROFST_COVER_CALIB_FLAG +#endif +#if CFG_USER_CHAN_MAX_TXPWR_EN + | USER_CHAN_MAX_TXPWR_EN_FLAG +#endif +#if CFG_USER_TX_USE_ANA_F + | USER_TX_USE_ANA_F_FLAG +#endif +#if CFG_USER_APM_PRBRSP_OFFLOAD_DISABLE + | USER_APM_PRBRSP_OFFLOAD_DISABLE_FLAG +#endif + }, // user_ext_flags +#endif + +#ifdef CONFIG_RADAR_OR_IR_DETECT + {0x0019c,0x00000B00}, +#endif }; //adap test @@ -314,6 +337,38 @@ int system_config_8800d80(struct aic_usb_dev *usb_dev){ } +static int aicbt_ext_patch_data_load(struct aic_usb_dev *usb_dev, struct aicbt_patch_info_t *patch_info) +{ + int ret = 0; + uint32_t ext_patch_nb = patch_info->ext_patch_nb; + char ext_patch_file_name[50]; + int index = 0; + uint32_t id = 0; + uint32_t addr = 0; + + + if (ext_patch_nb > 0){ + + for (index = 0; index < patch_info->ext_patch_nb; index++){ + id = *(patch_info->ext_patch_param + (index * 2)); + addr = *(patch_info->ext_patch_param + (index * 2) + 1); + memset(ext_patch_file_name, 0, sizeof(ext_patch_file_name)); + sprintf(ext_patch_file_name,"%s%d.bin", + FW_PATCH_BASE_NAME_8800D80_U02_EXT, + id); + AICWFDBG(LOGDEBUG, "%s ext_patch_file_name:%s ext_patch_id:%x ext_patch_addr:%x \r\n", + __func__,ext_patch_file_name, id, addr); + + if (rwnx_plat_bin_fw_upload_android(usb_dev, addr, ext_patch_file_name)) { + ret = -1; + break; + } + } + } + return ret; +} + + int aicfw_download_fw_8800d80(struct aic_usb_dev *usb_dev) { struct aicbt_patch_table *head = NULL; @@ -331,6 +386,7 @@ int aicfw_download_fw_8800d80(struct aic_usb_dev *usb_dev) int i = 0; +#if 0 if (chip_id == CHIP_REV_U01) { head = aicbt_patch_table_alloc(usb_dev, FW_PATCH_TABLE_NAME_8800D80); } else { @@ -358,7 +414,7 @@ int aicfw_download_fw_8800d80(struct aic_usb_dev *usb_dev) } printk("addr_adid 0x%x, addr_patch 0x%x\n", patch_info.addr_adid, patch_info.addr_patch); - +#endif if(testmode == FW_NORMAL_MODE){ if (chip_id != CHIP_REV_U01){ @@ -369,16 +425,16 @@ int aicfw_download_fw_8800d80(struct aic_usb_dev *usb_dev) if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_patch, FW_PATCH_BASE_NAME_8800D80_U02)) { return -1; } - #if 0 - if (rwnx_plat_bin_fw_patch_table_upload_android(usb_dev, FW_PATCH_TABLE_NAME_8800D80_U02)) { + + if (aicbt_ext_patch_data_load(usb_dev, &patch_info)) { return -1; } - #else + if (aicbt_patch_table_load(usb_dev, head)) { return -1; } #endif - #endif + if (IS_CHIP_ID_H()){ if(rwnx_plat_bin_fw_upload_android(usb_dev, RAM_FMAC_FW_ADDR_8800D80_U02, FW_BASE_NAME_8800D80_H_U02)) return -1; @@ -426,7 +482,7 @@ int aicfw_download_fw_8800d80(struct aic_usb_dev *usb_dev) } }else if(testmode == FW_TEST_MODE){ if (chip_id != CHIP_REV_U01){ - +#if 0 if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_adid, FW_ADID_BASE_NAME_8800D80_U02)) { return -1; } @@ -434,15 +490,15 @@ int aicfw_download_fw_8800d80(struct aic_usb_dev *usb_dev) if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_patch, FW_PATCH_BASE_NAME_8800D80_U02)) { return -1; } -#if 0 - if (rwnx_plat_bin_fw_patch_table_upload_android(usb_dev, FW_PATCH_TABLE_NAME_8800D80_U02)) { + + if (aicbt_ext_patch_data_load(usb_dev, &patch_info)) { return -1; } -#else + if (aicbt_patch_table_load(usb_dev, head)) { return -1; } -#endif + if (chip_mcu_id) { int ret = 0; @@ -452,7 +508,7 @@ int aicfw_download_fw_8800d80(struct aic_usb_dev *usb_dev) return -1; } } - +#endif if(rwnx_plat_bin_fw_upload_android(usb_dev, RAM_FMAC_RF_FW_ADDR_8800D80_U02, FW_RF_BASE_NAME_8800D80_U02)) { AICWFDBG(LOGERROR,"%s wifi fw download fail \r\n", __func__); return -1; @@ -500,64 +556,115 @@ int aicfw_download_fw_8800d80(struct aic_usb_dev *usb_dev) wakeup_param->gpio_num[1] = 3;////default select gpiob2 for fw_wakeup_host wakeup_param->gpio_dft_lvl[1] = 1;////0:defalut pull down, 1:default pull up /********************************************************************/ - //MAX_AD_FILTER_NUM=5 :num 0 - { - const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; - wakeup_param->ad_filter[0].ad_len = 12; - wakeup_param->ad_filter[0].ad_type = 0x09; - memcpy(wakeup_param->ad_filter[0].ad_data, data,wakeup_param->ad_filter[0].ad_len-1);// 1111 1111 1110 0000 0000 0000 0000 0000 //0xffe00000 - wakeup_param->ad_filter[0].ad_data_mask = 0xffe00000; - wakeup_param->ad_filter[0].ad_role = ROLE_COMBO|(COMBO_0<<4); - wakeup_param->ad_filter[0].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] - } - /********************************************************************/ - //MAX_AD_FILTER_NUM=5 :num 1 - { - const uint8_t data[2] = {0x12,0x18}; - wakeup_param->ad_filter[1].ad_len = 3; - wakeup_param->ad_filter[1].ad_type = 0x3; - memcpy(wakeup_param->ad_filter[1].ad_data, data,wakeup_param->ad_filter[1].ad_len-1);// 1100 0000 0000 0000 0000 0000 0000 0000 //0xc0000000 - wakeup_param->ad_filter[1].ad_data_mask = 0xc0000000; - wakeup_param->ad_filter[1].ad_role = ROLE_COMBO|(COMBO_0<<4); - wakeup_param->ad_filter[1].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] - } - /********************************************************************/ - //MAX_AD_FILTER_NUM=5 :num 2 - { - //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; - wakeup_param->ad_filter[2].ad_len = 0; - wakeup_param->ad_filter[2].ad_type = 0; - //memcpy(wakeup_param->ad_filter[2].ad_data, data,wakeup_param->ad_filter[2].ad_len-1);// 1100 0000 0111 1111 1100 0000 0000 0000 //0xc07fc000 - wakeup_param->ad_filter[2].ad_data_mask = 0; - wakeup_param->ad_filter[2].ad_role = ROLE_ONLY; - wakeup_param->ad_filter[2].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] - } - /********************************************************************/ - //MAX_AD_FILTER_NUM=5 :num 3 - { - //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; - wakeup_param->ad_filter[3].ad_len = 0; - wakeup_param->ad_filter[3].ad_type = 0; - //memcpy(wakeup_param->ad_filter[2].ad_data, data,wakeup_param->ad_filter[2].ad_len-1);// 1100 0000 0111 1111 1100 0000 0000 0000 //0xc07fc000 - wakeup_param->ad_filter[3].ad_data_mask = 0; - wakeup_param->ad_filter[3].ad_role = ROLE_COMBO|(COMBO_1<<4); - wakeup_param->ad_filter[3].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] - } - /********************************************************************/ - //MAX_AD_FILTER_NUM=5 :num 4 - { - //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; - wakeup_param->ad_filter[4].ad_len = 0; - wakeup_param->ad_filter[4].ad_type = 0x09; - //memcpy(wakeup_param->ad_filter[4].ad_data, data,wakeup_param->ad_filter[4].ad_len-1);// 1111 1111 1110 0000 0000 0000 0000 0000 //0xffe00000 - wakeup_param->ad_filter[4].ad_data_mask = 0xffe00000; - wakeup_param->ad_filter[4].ad_role = ROLE_COMBO|(COMBO_1<<4); - wakeup_param->ad_filter[4].gpio_trigger_idx = TG_IDX_0|TG_IDX_1;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] - } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 0 + { + const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[0].ad_len = 12; + wakeup_param->ad_filter[0].ad_type = 0x09; + memcpy(wakeup_param->ad_filter[0].ad_data, data,wakeup_param->ad_filter[0].ad_len-1);// 1111 1111 1110 0000 0000 0000 0000 0000 //0xffe00000 + wakeup_param->ad_filter[0].ad_data_mask = 0xffe00000; + wakeup_param->ad_filter[0].ad_role = ROLE_COMBO|(COMBO_0<<4); + wakeup_param->ad_filter[0].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[0].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 1 + { + const uint8_t data[2] = {0x12,0x18}; + wakeup_param->ad_filter[1].ad_len = 3; + wakeup_param->ad_filter[1].ad_type = 0x3; + memcpy(wakeup_param->ad_filter[1].ad_data, data,wakeup_param->ad_filter[1].ad_len-1);// 1100 0000 0000 0000 0000 0000 0000 0000 //0xc0000000 + wakeup_param->ad_filter[1].ad_data_mask = 0xc0000000; + wakeup_param->ad_filter[1].ad_role = ROLE_COMBO|(COMBO_0<<4); + wakeup_param->ad_filter[1].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[1].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 2 + { + //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[2].ad_len = 0; + wakeup_param->ad_filter[2].ad_type = 0; + //memcpy(wakeup_param->ad_filter[2].ad_data, data,wakeup_param->ad_filter[2].ad_len-1);// 1100 0000 0111 1111 1100 0000 0000 0000 //0xc07fc000 + wakeup_param->ad_filter[2].ad_data_mask = 0; + wakeup_param->ad_filter[2].ad_role = ROLE_ONLY; + wakeup_param->ad_filter[2].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[2].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 3 + { + //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[3].ad_len = 0; + wakeup_param->ad_filter[3].ad_type = 0; + //memcpy(wakeup_param->ad_filter[2].ad_data, data,wakeup_param->ad_filter[2].ad_len-1);// 1100 0000 0111 1111 1100 0000 0000 0000 //0xc07fc000 + wakeup_param->ad_filter[3].ad_data_mask = 0; + wakeup_param->ad_filter[3].ad_role = ROLE_COMBO|(COMBO_1<<4); + wakeup_param->ad_filter[3].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[3].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 4 + { + //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[4].ad_len = 0; + wakeup_param->ad_filter[4].ad_type = 0x09; + //memcpy(wakeup_param->ad_filter[4].ad_data, data,wakeup_param->ad_filter[4].ad_len-1);// 1111 1111 1110 0000 0000 0000 0000 0000 //0xffe00000 + wakeup_param->ad_filter[4].ad_data_mask = 0xffe00000; + wakeup_param->ad_filter[4].ad_role = ROLE_COMBO|(COMBO_1<<4); + wakeup_param->ad_filter[4].gpio_trigger_idx = TG_IDX_0|TG_IDX_1;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[4].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[5] = 0; + } for(i = 0; i < (sizeof(struct ble_wakeup_param_t)/4 +1); i++){ printk("write_blocks[%d]:0x%08X \r\n", i, write_blocks[i]); - rwnx_send_dbg_mem_write_req(usb_dev, 0x15FF00 + (4 * i), write_blocks[i]); + rwnx_send_dbg_mem_write_req(usb_dev, 0x15FE00 + (4 * i), write_blocks[i]); } rwnx_send_dbg_start_app_req(usb_dev, RAM_FW_BLE_SCAN_WAKEUP_ADDR_8800D80, HOST_START_APP_AUTO); kfree(wakeup_param); diff --git a/drivers/aic8800/aic_load_fw/aic_compat_8800d80.h b/drivers/aic8800/aic_load_fw/aic_compat_8800d80.h index c32d984..de6d99f 100644 --- a/drivers/aic8800/aic_load_fw/aic_compat_8800d80.h +++ b/drivers/aic8800/aic_load_fw/aic_compat_8800d80.h @@ -15,13 +15,13 @@ #ifdef CONFIG_FOR_IPCAM #define FW_BASE_NAME_8800D80_U02 "fmacfw_8800d80_u02_ipc.bin" #define FW_BASE_NAME_8800D80_H_U02 "fmacfw_8800d80_h_u02_ipc.bin" - #else #define FW_BASE_NAME_8800D80_U02 "fmacfw_8800d80_u02.bin" #define FW_BASE_NAME_8800D80_H_U02 "fmacfw_8800d80_h_u02.bin" #endif #define FW_RF_BASE_NAME_8800D80_U02 "lmacfw_rf_8800d80_u02.bin" #define FW_PATCH_BASE_NAME_8800D80_U02 "fw_patch_8800d80_u02.bin" +#define FW_PATCH_BASE_NAME_8800D80_U02_EXT "fw_patch_8800d80_u02_ext" #define FW_ADID_BASE_NAME_8800D80_U02 "fw_adid_8800d80_u02.bin" #define FW_CALIBMODE_NAME_8800D80_U02 "calibmode_8800d80.bin" #define FW_PATCH_TABLE_NAME_8800D80_U02 "fw_patch_table_8800d80_u02.bin" diff --git a/drivers/aic8800/aic_load_fw/aic_compat_8800d80x2.c b/drivers/aic8800/aic_load_fw/aic_compat_8800d80x2.c new file mode 100644 index 0000000..847f1bb --- /dev/null +++ b/drivers/aic8800/aic_load_fw/aic_compat_8800d80x2.c @@ -0,0 +1,767 @@ +#include "aic_txrxif.h" +#include "aicwf_usb.h" +#include "aicbluetooth.h" +#include "aic_compat_8800d80x2.h" +#include "aicwf_debug.h" +extern int ble_scan_wakeup_reboot_time; +extern uint32_t ad_data_filter_mask; +extern uint32_t gpio_num;//default select gpiob2 for fw_wakeup_host +extern uint32_t gpio_dft_lvl;//0:defalut pull down, 1:default pull up + +int rwnx_plat_bin_fw_upload_2(struct aic_usb_dev *usbdev, u32 fw_addr, + char *filename); +int rwnx_request_firmware_common(struct aic_usb_dev *usbdev, + u32** buffer, const char *filename); +void rwnx_plat_userconfig_parsing(char *buffer, int size); +void rwnx_release_firmware_common(u32** buffer); + +extern int testmode; +extern u8 chip_id; +extern u8 chip_mcu_id; + +typedef u32 (*array2_tbl_t)[2]; + +#define AIC_PATCH_MAGIG_NUM 0x48435450 // "PTCH" +#define AIC_PATCH_MAGIG_NUM_2 0x50544348 // "HCTP" +#define AIC_PATCH_BLOCK_MAX 4 + +typedef struct { + uint32_t magic_num; + uint32_t pair_start; + uint32_t magic_num_2; + uint32_t pair_count; + uint32_t block_dst[AIC_PATCH_BLOCK_MAX]; + uint32_t block_src[AIC_PATCH_BLOCK_MAX]; + uint32_t block_size[AIC_PATCH_BLOCK_MAX]; // word count +} aic_patch_t; + + +#define AIC_PATCH_OFST(mem) ((size_t) &((aic_patch_t *)0)->mem) +#define AIC_PATCH_ADDR(mem) ((u32) (aic_patch_str_base + AIC_PATCH_OFST(mem))) + +#define USER_PWROFST_COVER_CALIB_FLAG (0x01U << 0) +#define USER_CHAN_MAX_TXPWR_EN_FLAG (0x01U << 1) +#define USER_TX_USE_ANA_F_FLAG (0x01U << 2) +#define USER_APM_PRBRSP_OFFLOAD_DISABLE_FLAG (0x01U << 3) +#define USER_HE_MU_EDCA_UPDATE_DISABLE_FLAG (0x01U << 4) + +#ifdef CONFIG_POWER_LIMIT +#define CFG_USER_CHAN_MAX_TXPWR_EN 1 +#else +#define CFG_USER_CHAN_MAX_TXPWR_EN 0 +#endif +#define CFG_USER_TX_USE_ANA_F 0 +#ifdef CONFIG_BAND_STEERING +#define CFG_USER_APM_PRBRSP_OFFLOAD_DISABLE 1 +#else +#define CFG_USER_APM_PRBRSP_OFFLOAD_DISABLE 0 +#endif + +u32 patch_tbl_d80x2[][2] = +{ +#ifdef CONFIG_PLATFORM_HI + {0x021c, 0x04000000},//hs amsdu + {0x0220, 0x04000000},//ss amsdu + {0x0224, 0x08000a01},//hs aggr + {0x0228, 0x08000a01},//ss aggr +#else + {0x021c, 0x04000000},//hs amsdu + {0x0220, 0x04010101},//ss amsdu + {0x0224, 0x50000a01},//hs aggr + {0x0228, 0x50000a00},//ss aggr +#endif + +#if 0 + #ifdef USE_5G + {0x00b4, 0xf3010001}, + #else + {0x00b4, 0xf3010000}, + #endif +#ifdef CONFIG_PLATFORM_HI + {0x0170, 0x00000001},//rx aggr counter +#else + {0x0170, 0x0000000A},//rx aggr counter +#endif +#endif + + {0x01f0, 0x00000001 + #if CFG_USER_CHAN_MAX_TXPWR_EN + | USER_CHAN_MAX_TXPWR_EN_FLAG + #endif + #if CFG_USER_TX_USE_ANA_F + | USER_TX_USE_ANA_F_FLAG + #endif + #if CFG_USER_APM_PRBRSP_OFFLOAD_DISABLE + | USER_APM_PRBRSP_OFFLOAD_DISABLE_FLAG + #endif + }, // user_ext_flags +}; + +//adap test +u32 adaptivity_patch_tbl_d80x2[][2] = { + {0x000C, 0x0000320A}, //linkloss_thd + {0x009C, 0x00000000}, //ac_param_conf + {0x01D0, 0x00010000}, //tx_adaptivity_en +}; + +u32 syscfg_tbl_masked_8800d80x2[][3] = { +}; + +u32 syscfg_tbl_8800d80x2[][2] = { + #ifdef CONFIG_PMIC_SETTING + {0x70001408, 0x00000000}, // stop wdg + #endif /* CONFIG_PMIC_SETTING */ + {0x40500010, 0x00000006},//cpu performance + {0x40500024, 0x0000001f}, +}; + +extern int adap_test; + +#define NEW_PATCH_BUFFER_MAP 1 + +int aicwf_patch_config_8800d80x2(struct aic_usb_dev *usb_dev) +{ +#if 1 + u32 rd_patch_addr; + u32 aic_patch_addr; + u32 config_base, aic_patch_str_base; + #if (NEW_PATCH_BUFFER_MAP) + u32 patch_buff_addr, patch_buff_base, rd_version_addr, rd_version_val; + #endif + uint32_t start_addr; + u32 patch_addr; + u32 patch_cnt = sizeof(patch_tbl_d80x2) / 4 / 2; + struct dbg_mem_read_cfm rd_patch_addr_cfm; + int ret = 0; + int cnt = 0; + //adap test + int adap_patch_cnt = 0; + + if (adap_test) { + AICWFDBG(LOGINFO, "%s adap test \r\n", __func__); + adap_patch_cnt = sizeof(adaptivity_patch_tbl_d80x2)/sizeof(u32)/2; + } + + rd_patch_addr = RAM_FMAC_FW_ADDR_8800D80X2 + 0x01A8; + aic_patch_addr = rd_patch_addr + 8; + + AICWFDBG(LOGERROR, "Read FW mem: %08x\n", rd_patch_addr); + if ((ret = rwnx_send_dbg_mem_read_req(usb_dev, rd_patch_addr, &rd_patch_addr_cfm))) { + AICWFDBG(LOGERROR, "setting base[0x%x] rd fail: %d\n", rd_patch_addr, ret); + return ret; + } + AICWFDBG(LOGERROR, "%x=%x\n", rd_patch_addr_cfm.memaddr, rd_patch_addr_cfm.memdata); + config_base = rd_patch_addr_cfm.memdata; + + if ((ret = rwnx_send_dbg_mem_read_req(usb_dev, aic_patch_addr, &rd_patch_addr_cfm))) { + AICWFDBG(LOGERROR, "patch_str_base[0x%x] rd fail: %d\n", aic_patch_addr, ret); + return ret; + } + AICWFDBG(LOGERROR, "%x=%x\n", rd_patch_addr_cfm.memaddr, rd_patch_addr_cfm.memdata); + aic_patch_str_base = rd_patch_addr_cfm.memdata; + + #if (NEW_PATCH_BUFFER_MAP) + rd_version_addr = RAM_FMAC_FW_ADDR_8800D80X2 + 0x01C; + if ((ret = rwnx_send_dbg_mem_read_req(usb_dev, rd_version_addr, &rd_patch_addr_cfm))) { + AICWFDBG(LOGERROR, "version val[0x%x] rd fail: %d\n", rd_version_addr, ret); + return ret; + } + rd_version_val = rd_patch_addr_cfm.memdata; + AICWFDBG(LOGINFO, "rd_version_val=%08X\n", rd_version_val); + usb_dev->fw_version_uint = rd_version_val; + patch_buff_addr = rd_patch_addr + 12; + ret = rwnx_send_dbg_mem_read_req(usb_dev, patch_buff_addr, &rd_patch_addr_cfm); + if (ret) { + AICWFDBG(LOGERROR, "patch buf rd fail\n"); + return ret; + } + AICWFDBG(LOGINFO, "%x=%x\n", rd_patch_addr_cfm.memaddr, rd_patch_addr_cfm.memdata); + patch_buff_base = rd_patch_addr_cfm.memdata; + patch_addr = start_addr = patch_buff_base; + #endif + + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, AIC_PATCH_ADDR(magic_num), AIC_PATCH_MAGIG_NUM))) { + AICWFDBG(LOGERROR, "maigic_num[0x%x] write fail: %d\n", AIC_PATCH_ADDR(magic_num), ret); + return ret; + } + + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, AIC_PATCH_ADDR(magic_num_2), AIC_PATCH_MAGIG_NUM_2))) { + AICWFDBG(LOGERROR, "maigic_num[0x%x] write fail: %d\n", AIC_PATCH_ADDR(magic_num_2), ret); + return ret; + } + + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, AIC_PATCH_ADDR(pair_start), patch_addr))) { + AICWFDBG(LOGERROR, "pair_start[0x%x] write fail: %d\n", AIC_PATCH_ADDR(pair_start), ret); + return ret; + } + + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, AIC_PATCH_ADDR(pair_count), patch_cnt + adap_patch_cnt))) { + AICWFDBG(LOGERROR, "pair_count[0x%x] write fail: %d\n", AIC_PATCH_ADDR(pair_count), ret); + return ret; + } + + for (cnt = 0; cnt < patch_cnt; cnt++) { + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, start_addr+8*cnt, patch_tbl_d80x2[cnt][0]+config_base))) { + AICWFDBG(LOGERROR, "%x write fail\n", start_addr+8*cnt); + return ret; + } + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, start_addr+8*cnt+4, patch_tbl_d80x2[cnt][1]))) { + AICWFDBG(LOGERROR, "%x write fail\n", start_addr+8*cnt+4); + return ret; + } + } + + if (adap_test){ + int tmp_cnt = patch_cnt + adap_patch_cnt; + AICWFDBG(LOGINFO, "%s set adap_test patch \r\n", __func__); + for (cnt = patch_cnt; cnt < tmp_cnt; cnt++) { + int tbl_idx = cnt - patch_cnt; + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, start_addr+8*cnt, adaptivity_patch_tbl_d80x2[tbl_idx][0]+config_base))) { + AICWFDBG(LOGERROR, "%x write fail\n", start_addr+8*cnt); + return ret; + } + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, start_addr+8*cnt+4, adaptivity_patch_tbl_d80x2[tbl_idx][1]))) { + AICWFDBG(LOGERROR, "%x write fail\n", start_addr+8*cnt+4); + return ret; + } + } + } + + /* + * Patch block 0 ~ 3, that is void by default, can be set as: + * + * const u32 patch_block_0[3] = {0x11223344, 0x55667788, 0xaabbccdd}; + * if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, (u32)(&aic_patch->block_dst[0]), 0x160000))) { + * printk("block_dst [0x%x] write fail: %d\n", (u32)(&aic_patch->block_dst[0]), ret); + * } + * if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, (u32)(&aic_patch->block_src[0]), 0x307000))) { + * printk("block_src [0x%x] write fail: %d\n", (u32)(&aic_patch->block_src[0]), ret); + * } + * if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, (u32)(&aic_patch->block_size[0]), sizeof(patch_block_0) / sizeof(u32)))) { + * printk("block_size[0x%x] write fail: %d\n", (u32)(&aic_patch->block_size[0]), ret); + * } + * if ((ret = rwnx_send_dbg_mem_block_write_req(usb_dev, 0x307000, sizeof(patch_block_0), patch_block_0))) { + * printk("blk set fail: %d\n", ret); + * } + */ + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, AIC_PATCH_ADDR(block_size[0]), 0))) { + AICWFDBG(LOGERROR, "block_size[0x%x] write fail: %d\n", AIC_PATCH_ADDR(block_size[0]), ret); + return ret; + } + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, AIC_PATCH_ADDR(block_size[1]), 0))) { + AICWFDBG(LOGERROR, "block_size[0x%x] write fail: %d\n", AIC_PATCH_ADDR(block_size[1]), ret); + return ret; + } + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, AIC_PATCH_ADDR(block_size[2]), 0))) { + AICWFDBG(LOGERROR, "block_size[0x%x] write fail: %d\n", AIC_PATCH_ADDR(block_size[2]), ret); + return ret; + } + if ((ret = rwnx_send_dbg_mem_write_req(usb_dev, AIC_PATCH_ADDR(block_size[3]), 0))) { + AICWFDBG(LOGERROR, "block_size[0x%x] write fail: %d\n", AIC_PATCH_ADDR(block_size[3]), ret); + return ret; + } +#endif + + return 0; +} + + +#if 0 +extern char aic_fw_path[200]; + +int rwnx_plat_userconfig_load_8800d80x2(struct aic_usb_dev *usb_dev){ + int size; + u32 *dst=NULL; + char *filename = FW_USERCONFIG_NAME_8800D80X2; + + AICWFDBG(LOGINFO, "userconfig file path:%s \r\n", filename); + + /* load file */ + size = rwnx_request_firmware_common(usb_dev, &dst, filename); + if (size <= 0) { + AICWFDBG(LOGERROR, "wrong size of firmware file\n"); + dst = NULL; + return 0; + } + + /* Copy the file on the Embedded side */ + AICWFDBG(LOGINFO, "### Load file done: %s, size=%d\n", filename, size); + + rwnx_plat_userconfig_parsing((char *)dst, size); + + rwnx_release_firmware_common(&dst); + + AICWFDBG(LOGINFO, "userconfig download complete\n\n"); + return 0; + +} +#endif +int system_config_8800d80x2(struct aic_usb_dev *usb_dev){ + int syscfg_num; + int ret, cnt; + const u32 mem_addr = 0x40500000; + const u32 mem_addr2 = 0x40500004; + struct dbg_mem_read_cfm rd_mem_addr_cfm; + ret = rwnx_send_dbg_mem_read_req(usb_dev, mem_addr, &rd_mem_addr_cfm); + if (ret) { + printk("%x rd fail: %d\n", mem_addr, ret); + return ret; + } + chip_id = rd_mem_addr_cfm.memdata >> 16; + + ret = rwnx_send_dbg_mem_read_req(usb_dev, mem_addr2, &rd_mem_addr_cfm); + if (ret) { + printk("%x rd fail: %d\n", mem_addr2, ret); + return ret; + } + if (((rd_mem_addr_cfm.memdata >> 17) & 0x01UL) == 0x00UL) { + chip_mcu_id = 1; + } + + printk("chip_id=%x, chip_mcu_id = %d\n", chip_id, chip_mcu_id); + #if 1 + syscfg_num = sizeof(syscfg_tbl_8800d80x2) / sizeof(u32) / 2; + for (cnt = 0; cnt < syscfg_num; cnt++) { + ret = rwnx_send_dbg_mem_write_req(usb_dev, syscfg_tbl_8800d80x2[cnt][0], syscfg_tbl_8800d80x2[cnt][1]); + if (ret) { + printk("%x write fail: %d\n", syscfg_tbl_8800d80x2[cnt][0], ret); + return ret; + } + } + syscfg_num = sizeof(syscfg_tbl_masked_8800d80x2) / sizeof(u32) / 3; + for (cnt = 0; cnt < syscfg_num; cnt++) { + ret = rwnx_send_dbg_mem_mask_write_req(usb_dev, + syscfg_tbl_masked_8800d80x2[cnt][0], syscfg_tbl_masked_8800d80x2[cnt][1], syscfg_tbl_masked_8800d80x2[cnt][2]); + if (ret) { + printk("%x mask write fail: %d\n", syscfg_tbl_masked_8800d80x2[cnt][0], ret); + return ret; + } + } + #endif + + return 0; +} + + +static int aicbt_ext_patch_data_load(struct aic_usb_dev *usb_dev, struct aicbt_patch_info_t *patch_info) +{ + int ret = 0; + uint32_t ext_patch_nb = patch_info->ext_patch_nb; + char ext_patch_file_name[50]; + int index = 0; + uint32_t id = 0; + uint32_t addr = 0; + + + if (ext_patch_nb > 0){ + + for (index = 0; index < patch_info->ext_patch_nb; index++){ + id = *(patch_info->ext_patch_param + (index * 2)); + addr = *(patch_info->ext_patch_param + (index * 2) + 1); + memset(ext_patch_file_name, 0, sizeof(ext_patch_file_name)); + sprintf(ext_patch_file_name,"%s%d.bin", + FW_PATCH_BASE_NAME_8800D80X2_U03_EXT, + id); + AICWFDBG(LOGDEBUG, "%s ext_patch_file_name:%s ext_patch_id:%x ext_patch_addr:%x \r\n", + __func__,ext_patch_file_name, id, addr); + + if (rwnx_plat_bin_fw_upload_android(usb_dev, addr, ext_patch_file_name)) { + ret = -1; + break; + } + } + } + return ret; +} + + +int aicfw_download_fw_8800d80x2(struct aic_usb_dev *usb_dev) +{ +#ifdef CONFIG_USB_BT + struct aicbt_patch_table *head = NULL; + struct aicbt_patch_info_t patch_info = { + .info_len = 0, + .adid_addrinf = 0, + .addr_adid = 0, + .patch_addrinf = 0, + .addr_patch = 0, + .reset_addr = 0, + .reset_val = 0, + .adid_flag_addr = 0, + .adid_flag = 0, + }; + + int i = 0; + + if (chip_id < CHIP_REV_U05) { + head = aicbt_patch_table_alloc(usb_dev, FW_PATCH_TABLE_NAME_8800D80X2_U03); + } else { + head = aicbt_patch_table_alloc(usb_dev, FW_PATCH_TABLE_NAME_8800D80X2_U05); + } + if (head == NULL){ + printk("aicbt_patch_table_alloc fail\n"); + return -1; + } + + if(head == NULL){ + return -1; + } + if (chip_id < CHIP_REV_U05) { + patch_info.addr_adid = FW_RAM_ADID_BASE_ADDR_8800D80X2_U03; + patch_info.addr_patch = FW_RAM_PATCH_BASE_ADDR_8800D80X2_U03; + } else { + patch_info.addr_adid = FW_RAM_ADID_BASE_ADDR_8800D80X2_U05; + patch_info.addr_patch = FW_RAM_PATCH_BASE_ADDR_8800D80X2_U05; + } + aicbt_patch_info_unpack(&patch_info, head); + if(patch_info.info_len == 0) { + printk("%s, aicbt_patch_info_unpack fail\n", __func__); + return -1; + } + + printk("addr_adid 0x%x, addr_patch 0x%x\n", patch_info.addr_adid, patch_info.addr_patch); + + if (chip_mcu_id) { + int ret = 0; + u32 retry = 0; + const u32 mem_addr = 0x40506030; + const u32 mem_addr2 = 0x40506004; + u32 mem_data; + struct dbg_mem_read_cfm rd_mem_addr_cfm; + ret = rwnx_send_dbg_mem_read_req(usb_dev, mem_addr, &rd_mem_addr_cfm); + if (ret) { + printk("%x rd fail: %d\n", mem_addr, ret); + return ret; + } + if (0 == (rd_mem_addr_cfm.memdata & (0x01UL << 2))) { + ret = rwnx_send_dbg_mem_read_req(usb_dev, mem_addr2, &rd_mem_addr_cfm); + if (ret) { + printk("%x rd fail: %d\n", mem_addr2, ret); + return ret; + } + mem_data = (rd_mem_addr_cfm.memdata | (0x01UL << 17)) & (~(0x01UL << 18)); + + ret = rwnx_send_dbg_mem_write_req(usb_dev, mem_addr2, mem_data); + if (ret) { + printk("%x wr fail: %d\n", mem_addr2, ret); + return ret; + } + mdelay(1); + + while (1) { + ret = rwnx_send_dbg_mem_read_req(usb_dev, mem_addr, &rd_mem_addr_cfm); + if (ret) { + printk("%x rd fail: %d\n", mem_addr, ret); + return ret; + } + if (0 == (rd_mem_addr_cfm.memdata & (0x01UL << 2))) { + mdelay(1); + retry++; + if (retry > 20) { + printk("bt pwron timeout\n"); + return -1; + } + } else { + break; + } + } + } + } +#endif + + if(testmode == FW_NORMAL_MODE){ + + if (chip_id < CHIP_REV_U05){ +#ifdef CONFIG_USB_BT + if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_adid, FW_ADID_BASE_NAME_8800D80X2_U03)) { + return -1; + } + if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_patch, FW_PATCH_BASE_NAME_8800D80X2_U03)) { + return -1; + } + + if (aicbt_ext_patch_data_load(usb_dev, &patch_info)) { + return -1; + } + + if (aicbt_patch_table_load(usb_dev, head)) { + return -1; + } + + mdelay(100); +#endif + + if(rwnx_plat_bin_fw_upload_android(usb_dev, RAM_FMAC_FW_ADDR_8800D80X2, FW_BASE_NAME_8800D80X2)) { + return -1; + } + #if 0 + if(rwnx_plat_bin_fw_upload_android(usb_dev, FW_RAM_CALIBMODE_ADDR_8800D80X2_U02, FW_CALIBMODE_NAME_8800D80X2_U02)) { + return -1; + } + if (rwnx_send_dbg_mem_write_req(usb_dev, 0x40500048, 0x1e0000)) + return -1; + #endif + if (aicwf_patch_config_8800d80x2(usb_dev)) { + return -1; + } + if (rwnx_send_dbg_start_app_req(usb_dev, RAM_FMAC_FW_ADDR_8800D80X2, HOST_START_APP_AUTO)) { + return -1; + } + }else { +#ifdef CONFIG_USB_BT + if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_adid, FW_ADID_BASE_NAME_8800D80X2_U05)) { + return -1; + } + if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_patch, FW_PATCH_BASE_NAME_8800D80X2_U05)) { + return -1; + } + if (aicbt_ext_patch_data_load(usb_dev, &patch_info)) { + return -1; + } + if (aicbt_patch_table_load(usb_dev, head)) { + return -1; + } + + mdelay(100); +#endif + if(rwnx_plat_bin_fw_upload_android(usb_dev, RAM_FMAC_FW_ADDR_8800D80X2, FW_BASE_NAME_8800D80X2)) { + return -1; + } + if (aicwf_patch_config_8800d80x2(usb_dev)) { + return -1; + } + if (rwnx_send_dbg_start_app_req(usb_dev, RAM_FMAC_FW_ADDR_8800D80X2, HOST_START_APP_AUTO)) { + return -1; + } + } + }else if(testmode == FW_TEST_MODE){ + if (chip_id < CHIP_REV_U05){ +#ifdef CONFIG_USB_BT + if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_adid, FW_ADID_BASE_NAME_8800D80X2_U03)) { + return -1; + } + + if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_patch, FW_PATCH_BASE_NAME_8800D80X2_U03)) { + return -1; + } + + if (aicbt_ext_patch_data_load(usb_dev, &patch_info)) { + return -1; + } + + if (aicbt_patch_table_load(usb_dev, head)) { + return -1; + } + + mdelay(100); +#endif + + if (chip_mcu_id) { + int ret = 0; + ret = rwnx_plat_flash_bin_upload_android(usb_dev, FLASH_BIN_ADDR_8800M80X2, FLASH_BIN_8800M80X2); + if (ret && ret!= ENOENT) { + AICWFDBG(LOGERROR,"%s flash bin download fail \r\n", __func__); + return -1; + } + } + + if(rwnx_plat_bin_fw_upload_android(usb_dev, RAM_FMAC_RF_FW_ADDR_8800D80X2, FW_RF_BASE_NAME_8800D80X2)) { + AICWFDBG(LOGERROR,"%s wifi fw download fail \r\n", __func__); + return -1; + } + if (rwnx_send_dbg_start_app_req(usb_dev, RAM_FMAC_RF_FW_ADDR_8800D80X2, HOST_START_APP_AUTO)) { + return -1; + } + } else { +#ifdef CONFIG_USB_BT + if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_adid, FW_ADID_BASE_NAME_8800D80X2_U05)) { + return -1; + } + + if(rwnx_plat_bin_fw_upload_android(usb_dev, patch_info.addr_patch, FW_PATCH_BASE_NAME_8800D80X2_U05)) { + return -1; + } + + if (aicbt_ext_patch_data_load(usb_dev, &patch_info)) { + return -1; + } + + if (aicbt_patch_table_load(usb_dev, head)) { + return -1; + } + + mdelay(100); +#endif + if(rwnx_plat_bin_fw_upload_android(usb_dev, RAM_FMAC_RF_FW_ADDR_8800D80X2, FW_RF_BASE_NAME_8800D80X2)) { + AICWFDBG(LOGERROR,"%s wifi fw download fail \r\n", __func__); + return -1; + } + if (rwnx_send_dbg_start_app_req(usb_dev, RAM_FMAC_RF_FW_ADDR_8800D80X2, HOST_START_APP_AUTO)) { + return -1; + } + } + }else if(testmode == FW_BLE_SCAN_AD_FILTER_MODE){ +/* + data and ad_data_filter_mask instructions for use + ex. + data[18] = {0x46,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x30,0xff,0xff,0xff,0x43,0x52,0x45,0x4c,0x42}; + mask = 1100 0000 0111 1111 1100 0000 0000 0000 = 0xc07fc000 + + data = 0x46,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x30,0xff,0xff,0xff,0x43,0x52,0x45,0x4c,0x42 + mask = 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0...... fill 0 + + data & mask = "0x46 0x00" 0x00 0x00 0x00 0x00 0x00 0x00 0x00 "0x30 0xff 0xff 0x43 0x52 0x45 0x4c 0x42" + using data & mask value condition to wakeup host_wake_bt gpio +*/ + + struct ble_wakeup_param_t* wakeup_param = (struct ble_wakeup_param_t*)kmalloc(sizeof(struct ble_wakeup_param_t), GFP_KERNEL); + uint32_t *write_blocks = (uint32_t *)wakeup_param; + + printk("%s ble scan wakeup \r\n", __func__); + + memset(wakeup_param, 0, sizeof(struct ble_wakeup_param_t)); + rwnx_plat_bin_fw_upload_android(usb_dev, RAM_FW_BLE_SCAN_WAKEUP_ADDR_8800D80, FW_BLE_SCAN_AD_FILTER_NAME); + wakeup_param->magic_num = 0x53454C42;//magic_num + wakeup_param->delay_scan_to = 1000;//delay start scan time(ms) + wakeup_param->reboot_to = ble_scan_wakeup_reboot_time;//reboot time + /******************************************************************/ + ///gpio_trigger_idx : 0 if wakeup_param->gpio_dft_lvl[0]=0xfe,this idx will be invalid. + wakeup_param->gpio_num[0] = gpio_num;////default select gpiob2 for fw_wakeup_host + wakeup_param->gpio_dft_lvl[0] = gpio_dft_lvl;////0:defalut pull down, 1:default pull up + ///gpio_trigger_idx : 1 if wakeup_param->gpio_dft_lvl[1]=0xfe,this idx will be invalid. + wakeup_param->gpio_num[1] = 3;////default select gpiob2 for fw_wakeup_host + wakeup_param->gpio_dft_lvl[1] = 1;////0:defalut pull down, 1:default pull up + /********************************************************************/ + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 0 + { + const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[0].ad_len = 12; + wakeup_param->ad_filter[0].ad_type = 0x09; + memcpy(wakeup_param->ad_filter[0].ad_data, data,wakeup_param->ad_filter[0].ad_len-1);// 1111 1111 1110 0000 0000 0000 0000 0000 //0xffe00000 + wakeup_param->ad_filter[0].ad_data_mask = 0xffe00000; + wakeup_param->ad_filter[0].ad_role = ROLE_COMBO|(COMBO_0<<4); + wakeup_param->ad_filter[0].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[0].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 1 + { + const uint8_t data[2] = {0x12,0x18}; + wakeup_param->ad_filter[1].ad_len = 3; + wakeup_param->ad_filter[1].ad_type = 0x3; + memcpy(wakeup_param->ad_filter[1].ad_data, data,wakeup_param->ad_filter[1].ad_len-1);// 1100 0000 0000 0000 0000 0000 0000 0000 //0xc0000000 + wakeup_param->ad_filter[1].ad_data_mask = 0xc0000000; + wakeup_param->ad_filter[1].ad_role = ROLE_COMBO|(COMBO_0<<4); + wakeup_param->ad_filter[1].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[1].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 2 + { + //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[2].ad_len = 0; + wakeup_param->ad_filter[2].ad_type = 0; + //memcpy(wakeup_param->ad_filter[2].ad_data, data,wakeup_param->ad_filter[2].ad_len-1);// 1100 0000 0111 1111 1100 0000 0000 0000 //0xc07fc000 + wakeup_param->ad_filter[2].ad_data_mask = 0; + wakeup_param->ad_filter[2].ad_role = ROLE_ONLY; + wakeup_param->ad_filter[2].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[2].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 3 + { + //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[3].ad_len = 0; + wakeup_param->ad_filter[3].ad_type = 0; + //memcpy(wakeup_param->ad_filter[2].ad_data, data,wakeup_param->ad_filter[2].ad_len-1);// 1100 0000 0111 1111 1100 0000 0000 0000 //0xc07fc000 + wakeup_param->ad_filter[3].ad_data_mask = 0; + wakeup_param->ad_filter[3].ad_role = ROLE_COMBO|(COMBO_1<<4); + wakeup_param->ad_filter[3].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[3].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 4 + { + //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[4].ad_len = 0; + wakeup_param->ad_filter[4].ad_type = 0x09; + //memcpy(wakeup_param->ad_filter[4].ad_data, data,wakeup_param->ad_filter[4].ad_len-1);// 1111 1111 1110 0000 0000 0000 0000 0000 //0xffe00000 + wakeup_param->ad_filter[4].ad_data_mask = 0xffe00000; + wakeup_param->ad_filter[4].ad_role = ROLE_COMBO|(COMBO_1<<4); + wakeup_param->ad_filter[4].gpio_trigger_idx = TG_IDX_0|TG_IDX_1;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[4].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[5] = 0; + } + + for(i = 0; i < (sizeof(struct ble_wakeup_param_t)/4 +1); i++){ + printk("write_blocks[%d]:0x%08X \r\n", i, write_blocks[i]); + rwnx_send_dbg_mem_write_req(usb_dev, 0x15FE00 + (4 * i), write_blocks[i]); + } + //rwnx_send_dbg_start_app_req(usb_dev, RAM_FW_BLE_SCAN_WAKEUP_ADDR_8800D80, HOST_START_APP_AUTO); + + int ret; + ret = rwnx_send_dbg_mem_write_req(usb_dev, 0x40500048, RAM_FW_BLE_SCAN_WAKEUP_ADDR_8800D80); + if (ret) { + printk("%x write fail\n", ret); + } + ret = rwnx_send_dbg_mem_write_req(usb_dev, 0x4050012c, 0x00000040); + if (ret) { + printk("%x write fail\n", ret); + } + + + kfree(wakeup_param); + + return -1; + + } + + return 0; +} + + diff --git a/drivers/aic8800/aic_load_fw/aic_compat_8800d80x2.h b/drivers/aic8800/aic_load_fw/aic_compat_8800d80x2.h new file mode 100644 index 0000000..571bf8c --- /dev/null +++ b/drivers/aic8800/aic_load_fw/aic_compat_8800d80x2.h @@ -0,0 +1,45 @@ +#include +#include "aicwf_usb.h" + +#define USB_DEVICE_ID_AIC_8800D80X2 0x8D90 +#define USB_DEVICE_ID_AIC_8800D81X2 0x8D91 +#define USB_DEVICE_ID_AIC_8800D89X2 0x8D99 + +#ifdef CONFIG_FOR_IPCAM +#define FW_BASE_NAME_8800D80X2 "fmacfw_8800d80x2_ipc.bin" +#else +#define FW_BASE_NAME_8800D80X2 "fmacfw_8800d80x2.bin" +#endif +#define FW_RF_BASE_NAME_8800D80X2 "lmacfw_rf_8800d80x2.bin" + +#define FW_PATCH_BASE_NAME_8800D80X2_U03 "fw_patch_8800d80x2_u03.bin" +#define FW_PATCH_BASE_NAME_8800D80X2_U03_EXT "fw_patch_8800d80x2_u03_ext" +#define FW_ADID_BASE_NAME_8800D80X2_U03 "fw_adid_8800d80x2_u03.bin" +#define FW_PATCH_TABLE_NAME_8800D80X2_U03 "fw_patch_table_8800d80x2_u03.bin" + +#define FW_PATCH_BASE_NAME_8800D80X2_U05 "fw_patch_8800d80x2_u05.bin" +#define FW_PATCH_BASE_NAME_8800D80X2_U05_EXT "fw_patch_8800d80x2_u05_ext" +#define FW_ADID_BASE_NAME_8800D80X2_U05 "fw_adid_8800d80x2_u05.bin" +#define FW_PATCH_TABLE_NAME_8800D80X2_U05 "fw_patch_table_8800d80x2_u05.bin" + +#define FLASH_BIN_8800M80X2 "host_wb_8800m80x2.bin" + +#define FW_USERCONFIG_NAME_8800D80X2 "aic_userconfig_8800d80x2.txt" + +#define RAM_FMAC_FW_ADDR_8800D80X2 0x120000 +#define RAM_FMAC_RF_FW_ADDR_8800D80X2 0x120000 + +#define FW_RAM_ADID_BASE_ADDR_8800D80X2_U03 0x003018f8 +#define FW_RAM_PATCH_BASE_ADDR_8800D80X2_U03 0x0030b494 + +#define FW_RAM_ADID_BASE_ADDR_8800D80X2_U05 0x003018f8 +#define FW_RAM_PATCH_BASE_ADDR_8800D80X2_U05 0x0030b48c + +#define FLASH_BIN_ADDR_8800M80X2 0x8000000 + + +int aicwf_patch_config_8800d80x2(struct aic_usb_dev *usb_dev); +int rwnx_plat_userconfig_load_8800d80x2(struct aic_usb_dev *usbdev); +int system_config_8800d80x2(struct aic_usb_dev *usb_dev); +int aicfw_download_fw_8800d80x2(struct aic_usb_dev *usb_dev); + diff --git a/drivers/aic8800/aic_load_fw/aic_txrxif.h b/drivers/aic8800/aic_load_fw/aic_txrxif.h index d566a11..08df943 100644 --- a/drivers/aic8800/aic_load_fw/aic_txrxif.h +++ b/drivers/aic8800/aic_load_fw/aic_txrxif.h @@ -18,7 +18,7 @@ #define DATA_BUF_MAX 2048 #define TXPKT_BLOCKSIZE 512 #define MAX_AGGR_TXPKT_LEN (1536*32) -#define CMD_TX_TIMEOUT 5000 +#define CMD_TX_TIMEOUT 2000 #define TX_ALIGNMENT 4 #define RX_HWHRD_LEN 60 //58->60 word allined diff --git a/drivers/aic8800/aic_load_fw/aicbluetooth.c b/drivers/aic8800/aic_load_fw/aicbluetooth.c index bda29b1..9ae9254 100644 --- a/drivers/aic8800/aic_load_fw/aicbluetooth.c +++ b/drivers/aic8800/aic_load_fw/aicbluetooth.c @@ -5,6 +5,7 @@ #include "aic_txrxif.h" #include "md5.h" #include "aicbluetooth.h" +#include "aicwf_debug.h" #ifdef CONFIG_USE_FW_REQUEST #include #endif @@ -16,6 +17,8 @@ #define GET_VALUE 3 extern int flash_erase_len; +int flash_write_size = 0; +u32 flash_write_bin_crc = 0; typedef struct { @@ -146,7 +149,9 @@ enum aicbsp_cpmode_type { ///aic bt tx pwr lvl :lsb->msb: first byte, min pwr lvl; second byte, max pwr lvl; ///pwr lvl:20(min), 30 , 40 , 50 , 60(max) #define AICBT_TXPWR_LVL 0x00006020 -#define AICBT_TXPWR_LVL_8800d80 0x00006F2F +#define AICBT_TXPWR_LVL_8800d80 0x00006F2F +#define AICBT_TXPWR_LVL_8800d80x2 0x00006F2F + #define AICBSP_MODE_BT_HCI_MODE_NULL 0 #define AICBSP_MODE_BT_HCI_MODE_MB 1 @@ -155,6 +160,7 @@ enum aicbsp_cpmode_type { #define AICBSP_HWINFO_DEFAULT (-1) #define AICBSP_CPMODE_DEFAULT AICBSP_CPMODE_WORK +#define AICBT_BTMODE_DEFAULT_8800d80x2 AICBT_BTMODE_BT_ONLY_COANT #define AICBT_BTMODE_DEFAULT_8800d80 AICBT_BTMODE_BT_ONLY_COANT #define AICBT_BTMODE_DEFAULT AICBT_BTMODE_BT_ONLY #define AICBT_BTPORT_DEFAULT AICBT_BTPORT_MB @@ -163,6 +169,7 @@ enum aicbsp_cpmode_type { #define AICBT_LPM_ENABLE_DEFAULT 0 #define AICBT_TXPWR_LVL_DEFAULT AICBT_TXPWR_LVL #define AICBT_TXPWR_LVL_DEFAULT_8800d80 AICBT_TXPWR_LVL_8800d80 +#define AICBT_TXPWR_LVL_DEFAULT_8800d80x2 AICBT_TXPWR_LVL_8800d80x2 #define AIC_HW_INFO 0x21 @@ -181,6 +188,83 @@ module_param_string(saved_sdk_ver, saved_sdk_ver,64, 0660); #endif + +const u32 crc_tab[256] = +{ + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, + 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, + 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, + 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, + 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, + 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, + 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, + 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, + 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, + 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, + 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, + 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, + 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, + 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, + 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, + 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, + 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, + 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, + 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, + 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, + 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, + 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, + 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, + 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, + 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, + 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, + 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, + 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, + 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, + 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, + 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, + 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, + 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, + 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, + 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, + 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, + 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, + 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, + 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, + 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, + 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, + 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, + 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, + 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, + 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, + 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, + 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, + 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, + 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, + 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, + 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, + 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d, +}; +u32 aic_crc32(u8 *p, u32 len, u32 crc) +{ + while(len--) + { + crc = crc_tab[((crc & 0xFF) ^ *p++)] ^ (crc >> 8); + } + return crc; +} + int aic_bt_platform_init(struct aic_usb_dev *usbdev) { rwnx_cmd_mgr_init(&usbdev->cmd_mgr); @@ -274,7 +358,9 @@ static int aic_load_firmware(u32 ** fw_buf, const char *name, struct device *dev len = snprintf(path, FW_PATH_MAX, "%s/%s/%s",aic_default_fw_path, "aic8800", name); } else if (usb_dev->chipid == PRODUCT_ID_AIC8800D80) { len = snprintf(path, FW_PATH_MAX, "%s/%s/%s",aic_default_fw_path, "aic8800D80", name); - } else { + } else if (usb_dev->chipid == PRODUCT_ID_AIC8800D80X2) { + len = snprintf(path, FW_PATH_MAX, "%s/%s/%s",aic_default_fw_path, "aic8800D80X2", name); + }else { printk("%s unknown chipid %d\n", __func__, usb_dev->chipid); } #else @@ -671,9 +757,11 @@ int rwnx_plat_flash_bin_upload_android(struct aic_usb_dev *usbdev, u32 fw_addr, int err=0; const u32 mem_addr = fw_addr; struct dbg_mem_read_cfm rd_mem_addr_cfm; + u32 crc = ~0UL; /* load aic firmware */ size = aic_load_firmware(&dst, filename, dev); + flash_write_size = size; if(size<=0){ printk("wrong size of firmware file\n"); vfree(dst); @@ -716,6 +804,8 @@ int rwnx_plat_flash_bin_upload_android(struct aic_usb_dev *usbdev, u32 fw_addr, /* Copy the file on the Embedded side */ printk("### Upload %s firmware, @ = %x size=%d\n", filename, fw_addr, size); + crc = aic_crc32((u8 *)dst, size, crc); + flash_write_bin_crc = crc; if (size > 1024) {// > 1KB data for (i = 0; i < (size - 1024); i += 1024) {//each time write 1KB @@ -832,6 +922,16 @@ int get_adap_test(void){ return adap_test; } +int get_flash_bin_size(void) +{ + return flash_write_size; +} + +u32 get_flash_bin_crc(void) +{ + return flash_write_bin_crc; +} + EXPORT_SYMBOL(get_fw_path); EXPORT_SYMBOL(get_testmode); @@ -842,6 +942,9 @@ EXPORT_SYMBOL(get_hardware_info); EXPORT_SYMBOL(get_adap_test); +EXPORT_SYMBOL(get_flash_bin_size); +EXPORT_SYMBOL(get_flash_bin_crc); + void get_userconfig_xtal_cap(xtal_cap_conf_t *xtal_cap) { @@ -1172,6 +1275,14 @@ static struct aicbt_info_t aicbt_info[] = { },//PRODUCT_ID_AIC8800D80 { },//PRODUCT_ID_AIC8800D81 + { + .btmode = AICBT_BTMODE_DEFAULT_8800d80x2, + .btport = AICBT_BTPORT_DEFAULT, + .uart_baud = AICBT_UART_BAUD_DEFAULT, + .uart_flowctrl = AICBT_UART_FC_DEFAULT, + .lpm_enable = AICBT_LPM_ENABLE_DEFAULT, + .txpwr_lvl = AICBT_TXPWR_LVL_DEFAULT_8800d80x2, + },//PRODUCT_ID_AIC8800D80X2 }; int aicbt_patch_table_load(struct aic_usb_dev *usbdev, struct aicbt_patch_table *_head) @@ -1223,13 +1334,47 @@ int aicbt_patch_table_load(struct aic_usb_dev *usbdev, struct aicbt_patch_table int aicbt_patch_info_unpack(struct aicbt_patch_info_t *patch_info, struct aicbt_patch_table *head_t) { + uint8_t *patch_info_array = (uint8_t*)patch_info; + int base_len = 0; + int memcpy_len = 0; + if (AICBT_PT_INF == head_t->type) { - patch_info->info_len = head_t->len; - if(patch_info->info_len == 0) + base_len = ((offsetof(struct aicbt_patch_info_t, ext_patch_nb_addr) - offsetof(struct aicbt_patch_info_t, adid_addrinf) )/sizeof(uint32_t))/2; + AICWFDBG(LOGDEBUG, "%s head_t->len:%d base_len:%d \r\n", __func__, head_t->len, base_len); + + if (head_t->len > base_len){ + patch_info->info_len = base_len; + memcpy_len = patch_info->info_len + 1;//include ext patch nb + } else{ + patch_info->info_len = head_t->len; + memcpy_len = patch_info->info_len; + } + AICWFDBG(LOGDEBUG, "%s memcpy_len:%d \r\n", __func__, memcpy_len); + + if (patch_info->info_len == 0) return 0; - memcpy(&patch_info->adid_addrinf, head_t->data, patch_info->info_len * sizeof(uint32_t) * 2); + + memcpy(((patch_info_array) + sizeof(patch_info->info_len)), + head_t->data, + memcpy_len * sizeof(uint32_t) * 2); + AICWFDBG(LOGDEBUG, "%s adid_addrinf:%x addr_adid:%x \r\n", __func__, + ((struct aicbt_patch_info_t *)patch_info_array)->adid_addrinf, + ((struct aicbt_patch_info_t *)patch_info_array)->addr_adid); + + if (patch_info->ext_patch_nb > 0){ + int index = 0; + patch_info->ext_patch_param = (uint32_t *)(head_t->data + ((memcpy_len) * 2)); + + for(index = 0; index < patch_info->ext_patch_nb; index++){ + AICWFDBG(LOGDEBUG, "%s id:%x addr:%x \r\n", __func__, + *(patch_info->ext_patch_param + (index * 2)), + *(patch_info->ext_patch_param + (index * 2) + 1)); + } + } + } return 0; + } int rwnx_plat_bin_fw_patch_table_upload_android(struct aic_usb_dev *usbdev, char *filename){ diff --git a/drivers/aic8800/aic_load_fw/aicbluetooth_cmds.c b/drivers/aic8800/aic_load_fw/aicbluetooth_cmds.c index 229b5ce..fe1f82e 100644 --- a/drivers/aic8800/aic_load_fw/aicbluetooth_cmds.c +++ b/drivers/aic8800/aic_load_fw/aicbluetooth_cmds.c @@ -240,6 +240,7 @@ void aicwf_set_cmd_tx(void *dev, struct lmac_msg *msg, uint len) struct aicwf_bus *bus = usbdev->bus_if; u8 *buffer = bus->cmd_buf; u16 index = 0; + int ret = 0; memset(buffer, 0, CMD_BUF_MAX); buffer[0] = (len+4) & 0x00ff; @@ -261,7 +262,10 @@ void aicwf_set_cmd_tx(void *dev, struct lmac_msg *msg, uint len) index += 2; memcpy(&buffer[index], (u8 *)msg->param, msg->param_len); - aicwf_bus_txmsg(bus, buffer, len + 8); + ret = aicwf_bus_txmsg(bus, buffer, len + 8); + if (ret == -EIO) { + ret = aicwf_bus_txmsg(bus, buffer, len + 8); + } } static inline void *rwnx_msg_zalloc(lmac_msg_id_t const id, diff --git a/drivers/aic8800/aic_load_fw/aicbluetooth_cmds.h b/drivers/aic8800/aic_load_fw/aicbluetooth_cmds.h index 352258b..3b54bf9 100644 --- a/drivers/aic8800/aic_load_fw/aicbluetooth_cmds.h +++ b/drivers/aic8800/aic_load_fw/aicbluetooth_cmds.h @@ -59,6 +59,7 @@ struct lmac_msg struct aicbt_patch_info_t { uint32_t info_len; +//base len start uint32_t adid_addrinf; uint32_t addr_adid; uint32_t patch_addrinf; @@ -67,6 +68,12 @@ struct aicbt_patch_info_t { uint32_t reset_val; uint32_t adid_flag_addr; uint32_t adid_flag; +//base len end +//ext patch nb + uint32_t ext_patch_nb_addr; + uint32_t ext_patch_nb; + uint32_t *ext_patch_param; + }; diff --git a/drivers/aic8800/aic_load_fw/aicwf_usb.c b/drivers/aic8800/aic_load_fw/aicwf_usb.c index 32a2243..9d91e47 100644 --- a/drivers/aic8800/aic_load_fw/aicwf_usb.c +++ b/drivers/aic8800/aic_load_fw/aicwf_usb.c @@ -25,6 +25,7 @@ #include "aicbluetooth.h" #include "aicwf_debug.h" #include "aic_compat_8800d80.h" +#include "aic_compat_8800d80x2.h" #define JUMP_TABLE_BASE 0x161928 #define JUMP_TABLE_OFFSET(i) ((u32)(JUMP_TABLE_BASE+(i)*4)) @@ -37,6 +38,7 @@ extern uint32_t gpio_num;//default select gpiob2 for fw_wakeup_host extern uint32_t gpio_dft_lvl;//0:defalut pull down, 1:default pull up u8 chip_id = 0; u8 chip_sub_id = 0; +u8 chip_mcu_id = 0; int fw_loaded = 0; void aicwf_usb_tx_flowctrl(struct aic_usb_dev *usb_dev, bool state) @@ -820,8 +822,10 @@ static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, struct usb_interface *in #ifdef CONFIG_USB_MSG_EP if ( usb_dev->msg_out_pipe != 0 && - (usb_dev->chipid == PRODUCT_ID_AIC8801 || - usb_dev->chipid == PRODUCT_ID_AIC8800D81)){ + (usb_dev->chipid == PRODUCT_ID_AIC8801 || + usb_dev->chipid == PRODUCT_ID_AIC8800D81|| + usb_dev->chipid == PRODUCT_ID_AIC8800D81X2 || + usb_dev->chipid == PRODUCT_ID_AIC8800D89X2)){ printk("TX Msg Bulk EP found\n"); usb_dev->use_msg_ep = 1; }else{ @@ -838,12 +842,11 @@ static int aicwf_parse_usb(struct aic_usb_dev *usb_dev, struct usb_interface *in #endif #endif - - if (usb->speed == USB_SPEED_HIGH) { - printk("Aic high speed USB device detected\n"); - } else { - printk("Aic full speed USB device detected\n"); - } + printk("Aic %s speed USB device detected\n", + (usb->speed == USB_SPEED_SUPER) ? "super" : + (usb->speed == USB_SPEED_HIGH) ? "high" : + (usb->speed == USB_SPEED_FULL) ? "full" : + (usb->speed == USB_SPEED_LOW) ? "low" : "NG"); exit: return ret; } @@ -981,6 +984,11 @@ u32 patch_tbl[][2] ={ #endif #ifdef CONFIG_USB_SUSPEND_REBOOT_TIME {0x0110, 0x03e80001}//reboot time when usb suspend,0001 enables reboot on suspend, default 0x3e8 = 1000ms reboot +#else +#ifdef CONFIG_SUPPORT_USB_SUSP +//USB SUSP keep working 0x0100:enable 0x0000:disable +{0x0110, 0x00000100} +#endif #endif }; @@ -1133,6 +1141,8 @@ static int system_config(struct aic_usb_dev *usb_dev) return system_config_8800(usb_dev); }else if(usb_dev->chipid == PRODUCT_ID_AIC8800D80){ return system_config_8800d80(usb_dev); + }else if(usb_dev->chipid == PRODUCT_ID_AIC8800D80X2){ + return system_config_8800d80x2(usb_dev); }else{ return -1; } @@ -1345,6 +1355,18 @@ static int aicloadfw_chipmatch(struct aic_usb_dev *usb_dev, u16 vid, u16 pid){ usb_dev->chipid = PRODUCT_ID_AIC8800D81; AICWFDBG(LOGINFO, "%s USE AIC8800D41\r\n", __func__); return 0; + }else if(pid == USB_DEVICE_ID_AIC_8800D80X2 && vid == USB_VENDOR_ID_AIC_V2){ + usb_dev->chipid = PRODUCT_ID_AIC8800D80X2; + AICWFDBG(LOGINFO, "%s USE AIC8800D80X2\r\n", __func__); + return 0; + }else if(pid == USB_DEVICE_ID_AIC_8800D81X2 && vid == USB_VENDOR_ID_AIC_V2){ + usb_dev->chipid = PRODUCT_ID_AIC8800D81X2; + AICWFDBG(LOGINFO, "%s USE AIC8800D81X2\r\n", __func__); + return 0; + }else if(pid == USB_DEVICE_ID_AIC_8800D89X2 && vid == USB_VENDOR_ID_AIC_V2){ + usb_dev->chipid = PRODUCT_ID_AIC8800D89X2; + AICWFDBG(LOGINFO, "%s USE AIC8800D89X2\r\n", __func__); + return 0; }else{ return -1; } @@ -1452,64 +1474,115 @@ int aicfw_download_fw_8800(struct aic_usb_dev *usb_dev){ wakeup_param->gpio_num[1] = 3;////default select gpiob2 for fw_wakeup_host wakeup_param->gpio_dft_lvl[1] = 1;////0:defalut pull down, 1:default pull up /********************************************************************/ - //MAX_AD_FILTER_NUM=5 :num 0 - { - const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; - wakeup_param->ad_filter[0].ad_len = 12; - wakeup_param->ad_filter[0].ad_type = 0x09; - memcpy(wakeup_param->ad_filter[0].ad_data, data,wakeup_param->ad_filter[0].ad_len-1);// 1111 1111 1110 0000 0000 0000 0000 0000 //0xffe00000 - wakeup_param->ad_filter[0].ad_data_mask = 0xffe00000; - wakeup_param->ad_filter[0].ad_role = ROLE_COMBO|(COMBO_0<<4); - wakeup_param->ad_filter[0].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] - } - /********************************************************************/ - //MAX_AD_FILTER_NUM=5 :num 1 - { - const uint8_t data[2] = {0x12,0x18}; - wakeup_param->ad_filter[1].ad_len = 3; - wakeup_param->ad_filter[1].ad_type = 0x3; - memcpy(wakeup_param->ad_filter[1].ad_data, data,wakeup_param->ad_filter[1].ad_len-1);// 1100 0000 0000 0000 0000 0000 0000 0000 //0xc0000000 - wakeup_param->ad_filter[1].ad_data_mask = 0xc0000000; - wakeup_param->ad_filter[1].ad_role = ROLE_COMBO|(COMBO_0<<4); - wakeup_param->ad_filter[1].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] - } - /********************************************************************/ - //MAX_AD_FILTER_NUM=5 :num 2 - { - //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; - wakeup_param->ad_filter[2].ad_len = 0; - wakeup_param->ad_filter[2].ad_type = 0; - //memcpy(wakeup_param->ad_filter[2].ad_data, data,wakeup_param->ad_filter[2].ad_len-1);// 1100 0000 0111 1111 1100 0000 0000 0000 //0xc07fc000 - wakeup_param->ad_filter[2].ad_data_mask = 0; - wakeup_param->ad_filter[2].ad_role = ROLE_ONLY; - wakeup_param->ad_filter[2].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] - } - /********************************************************************/ - //MAX_AD_FILTER_NUM=5 :num 3 - { - //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; - wakeup_param->ad_filter[3].ad_len = 0; - wakeup_param->ad_filter[3].ad_type = 0; - //memcpy(wakeup_param->ad_filter[2].ad_data, data,wakeup_param->ad_filter[2].ad_len-1);// 1100 0000 0111 1111 1100 0000 0000 0000 //0xc07fc000 - wakeup_param->ad_filter[3].ad_data_mask = 0; - wakeup_param->ad_filter[3].ad_role = ROLE_COMBO|(COMBO_1<<4); - wakeup_param->ad_filter[3].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] - } - /********************************************************************/ - //MAX_AD_FILTER_NUM=5 :num 4 - { - //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; - wakeup_param->ad_filter[4].ad_len = 0; - wakeup_param->ad_filter[4].ad_type = 0x09; - //memcpy(wakeup_param->ad_filter[4].ad_data, data,wakeup_param->ad_filter[4].ad_len-1);// 1111 1111 1110 0000 0000 0000 0000 0000 //0xffe00000 - wakeup_param->ad_filter[4].ad_data_mask = 0xffe00000; - wakeup_param->ad_filter[4].ad_role = ROLE_COMBO|(COMBO_1<<4); - wakeup_param->ad_filter[4].gpio_trigger_idx = TG_IDX_0|TG_IDX_1;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] - } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 0 + { + const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[0].ad_len = 12; + wakeup_param->ad_filter[0].ad_type = 0x09; + memcpy(wakeup_param->ad_filter[0].ad_data, data,wakeup_param->ad_filter[0].ad_len-1);// 1111 1111 1110 0000 0000 0000 0000 0000 //0xffe00000 + wakeup_param->ad_filter[0].ad_data_mask = 0xffe00000; + wakeup_param->ad_filter[0].ad_role = ROLE_COMBO|(COMBO_0<<4); + wakeup_param->ad_filter[0].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[0].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[0].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 1 + { + const uint8_t data[2] = {0x12,0x18}; + wakeup_param->ad_filter[1].ad_len = 3; + wakeup_param->ad_filter[1].ad_type = 0x3; + memcpy(wakeup_param->ad_filter[1].ad_data, data,wakeup_param->ad_filter[1].ad_len-1);// 1100 0000 0000 0000 0000 0000 0000 0000 //0xc0000000 + wakeup_param->ad_filter[1].ad_data_mask = 0xc0000000; + wakeup_param->ad_filter[1].ad_role = ROLE_COMBO|(COMBO_0<<4); + wakeup_param->ad_filter[1].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[1].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[1].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 2 + { + //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[2].ad_len = 0; + wakeup_param->ad_filter[2].ad_type = 0; + //memcpy(wakeup_param->ad_filter[2].ad_data, data,wakeup_param->ad_filter[2].ad_len-1);// 1100 0000 0111 1111 1100 0000 0000 0000 //0xc07fc000 + wakeup_param->ad_filter[2].ad_data_mask = 0; + wakeup_param->ad_filter[2].ad_role = ROLE_ONLY; + wakeup_param->ad_filter[2].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[2].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[2].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 3 + { + //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[3].ad_len = 0; + wakeup_param->ad_filter[3].ad_type = 0; + //memcpy(wakeup_param->ad_filter[2].ad_data, data,wakeup_param->ad_filter[2].ad_len-1);// 1100 0000 0111 1111 1100 0000 0000 0000 //0xc07fc000 + wakeup_param->ad_filter[3].ad_data_mask = 0; + wakeup_param->ad_filter[3].ad_role = ROLE_COMBO|(COMBO_1<<4); + wakeup_param->ad_filter[3].gpio_trigger_idx = TG_IDX_0;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[3].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[3].wl_addr.addr[5] = 0; + } + /********************************************************************/ + //MAX_AD_FILTER_NUM=5 :num 4 + { + //const uint8_t data[11] = {0x59,0x4B,0x32,0x42,0x41,0x5F,0x54,0x45,0x53,0x54,0x33}; + wakeup_param->ad_filter[4].ad_len = 0; + wakeup_param->ad_filter[4].ad_type = 0x09; + //memcpy(wakeup_param->ad_filter[4].ad_data, data,wakeup_param->ad_filter[4].ad_len-1);// 1111 1111 1110 0000 0000 0000 0000 0000 //0xffe00000 + wakeup_param->ad_filter[4].ad_data_mask = 0xffe00000; + wakeup_param->ad_filter[4].ad_role = ROLE_COMBO|(COMBO_1<<4); + wakeup_param->ad_filter[4].gpio_trigger_idx = TG_IDX_0|TG_IDX_1;//0: match for wakeup_param->gpio_num[0] 1: match for wakeup_param->gpio_num[1] + /********************************************************************/ + /*enable white list addr for paired remote ble addr. if all 0: all addr will use ad filter + wl_addr have value xx: only remote addr in white_list_addr will use ad filter + ********************************************************************/ + wakeup_param->ad_filter[4].wl_addr.addr[0] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[1] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[2] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[3] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[4] = 0; + wakeup_param->ad_filter[4].wl_addr.addr[5] = 0; + } for(i = 0; i < (sizeof(struct ble_wakeup_param_t)/4 +1); i++){ printk("write_blocks[%d]:0x%08X \r\n", i, write_blocks[i]); - rwnx_send_dbg_mem_write_req(usb_dev, 0x15FF00 + (4 * i), write_blocks[i]); + rwnx_send_dbg_mem_write_req(usb_dev, 0x15FE00 + (4 * i), write_blocks[i]); } rwnx_send_dbg_start_app_req(usb_dev, RAM_FW_BLE_SCAN_WAKEUP_ADDR, HOST_START_APP_AUTO); kfree(wakeup_param); @@ -1580,6 +1653,8 @@ int aicfw_download_fw(struct aic_usb_dev *usb_dev) return aicfw_download_fw_8800(usb_dev); }else if(usb_dev->chipid == PRODUCT_ID_AIC8800D80){ return aicfw_download_fw_8800d80(usb_dev); + }else if(usb_dev->chipid == PRODUCT_ID_AIC8800D80X2){ + return aicfw_download_fw_8800d80x2(usb_dev); }else{ return -1; } @@ -1606,7 +1681,9 @@ static int aicwf_usb_probe(struct usb_interface *intf, const struct usb_device_i if(fw_loaded == 1 && (id->idProduct == USB_DEVICE_ID_AIC_8801 || id->idProduct == USB_DEVICE_ID_AIC_8800D81 || - id->idProduct == USB_DEVICE_ID_AIC_8800D41)){ + id->idProduct == USB_DEVICE_ID_AIC_8800D41 || + id->idProduct == USB_DEVICE_ID_AIC_8800D81X2 || + id->idProduct == USB_DEVICE_ID_AIC_8800D89X2)){ return -1; } @@ -1673,15 +1750,17 @@ static int aicwf_usb_probe(struct usb_interface *intf, const struct usb_device_i aic_bt_platform_init(usb_dev); - if (usb->speed != USB_SPEED_HIGH) { - printk("Aic full speed USB device detected\n"); + if ((usb->speed != USB_SPEED_HIGH) && (usb->speed != USB_SPEED_SUPER)) { + printk("Aic USB device detected speed = %d\n", usb->speed); system_reboot(usb_dev); goto out_free_bus; } if(fw_loaded == 0 && - (usb_dev->chipid == PRODUCT_ID_AIC8801 || - usb_dev->chipid == PRODUCT_ID_AIC8800D81)){ + (usb_dev->chipid == PRODUCT_ID_AIC8801 || + usb_dev->chipid == PRODUCT_ID_AIC8800D81|| + usb_dev->chipid == PRODUCT_ID_AIC8800D81X2 || + usb_dev->chipid == PRODUCT_ID_AIC8800D89X2)){ rwnx_send_reboot(usb_dev); goto out_free_bus; } @@ -1764,6 +1843,9 @@ static struct usb_device_id aicwf_usb_id_table[] = { {USB_DEVICE(USB_VENDOR_ID_AIC, USB_DEVICE_ID_AIC_8800D81)}, {USB_DEVICE(USB_VENDOR_ID_AIC, USB_DEVICE_ID_AIC_8800D40)}, {USB_DEVICE(USB_VENDOR_ID_AIC, USB_DEVICE_ID_AIC_8800D41)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_DEVICE_ID_AIC_8800D80X2)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_DEVICE_ID_AIC_8800D81X2)}, + {USB_DEVICE(USB_VENDOR_ID_AIC_V2, USB_DEVICE_ID_AIC_8800D89X2)}, {} }; diff --git a/drivers/aic8800/aic_load_fw/aicwf_usb.h b/drivers/aic8800/aic_load_fw/aicwf_usb.h index adaac5b..759698d 100644 --- a/drivers/aic8800/aic_load_fw/aicwf_usb.h +++ b/drivers/aic8800/aic_load_fw/aicwf_usb.h @@ -21,26 +21,32 @@ /* USB Device ID */ #define USB_VENDOR_ID_AIC 0xA69C +#define USB_VENDOR_ID_AIC_V2 0x368B #define USB_DEVICE_ID_AIC 0x8800 -#define USB_DEVICE_ID_AIC_8801 0x8801 +#define USB_DEVICE_ID_AIC_8801 0x8801 #define CHIP_REV_U01 0x1 #define CHIP_REV_U02 0x3 #define CHIP_REV_U03 0x7 +#define CHIP_REV_U04 0xf +#define CHIP_REV_U05 0x1f #define CHIP_SUB_REV_U04 0x20 enum AICWF_IC{ PRODUCT_ID_AIC8800 = 0, - PRODUCT_ID_AIC8801, - PRODUCT_ID_AIC8800DC, - PRODUCT_ID_AIC8800DW, - PRODUCT_ID_AIC8800D80, - PRODUCT_ID_AIC8800D81, + PRODUCT_ID_AIC8801, + PRODUCT_ID_AIC8800DC, + PRODUCT_ID_AIC8800DW, + PRODUCT_ID_AIC8800D80, + PRODUCT_ID_AIC8800D81, + PRODUCT_ID_AIC8800D80X2, + PRODUCT_ID_AIC8800D81X2, + PRODUCT_ID_AIC8800D89X2, }; #define AICWF_USB_RX_URBS (20) -#define AICWF_USB_TX_URBS (100) +#define AICWF_USB_TX_URBS (30) #define AICWF_USB_TX_LOW_WATER (AICWF_USB_TX_URBS/4) #define AICWF_USB_TX_HIGH_WATER (AICWF_USB_TX_LOW_WATER*3) #define AICWF_USB_MAX_PKT_SIZE (2048) @@ -84,6 +90,7 @@ enum AICWF_IC{ #define FW_RAM_PATCH_BASE_ADDR 0x00100000 #define FW_RAM_PATCH_BASE_ADDR_U03 0x00100000 #define FW_PATCH_TEST_BASE_ADDR 0x00100000 +#define RAM_FW_BLE_WAKEUP_OUT_ADDR 0x0015f000 enum { FW_NORMAL_MODE, @@ -118,6 +125,7 @@ enum aicwf_usb_state { #define MAX_GPIO_TRIGGER_NUM 2// Max user config num of gpio #define MAX_ROLE_COMNO_IDX_NUM 2// Max num of ad role type combo,form( enum gpio_combo_idx) + #define AD_ROLE_FLAG 0x0f #define ROLE_COMBO_IDX_FLAG 0xf0 @@ -136,6 +144,11 @@ enum gpio_trigger_bit { TG_IDX_1 = (1<<1), }; +/* BD Address */ +typedef struct { + uint8_t addr[6]; +}bdaddr_t; + struct wakeup_ad_data_filter { uint32_t ad_data_mask; uint8_t gpio_trigger_idx; @@ -143,6 +156,7 @@ struct wakeup_ad_data_filter { uint8_t ad_len; uint8_t ad_type; uint8_t ad_data[31]; + bdaddr_t wl_addr; }; struct ble_wakeup_param_t { diff --git a/drivers/aic8800/aic_load_fw/rwnx_version_gen.h b/drivers/aic8800/aic_load_fw/rwnx_version_gen.h index afc7528..f31bfce 100644 --- a/drivers/aic8800/aic_load_fw/rwnx_version_gen.h +++ b/drivers/aic8800/aic_load_fw/rwnx_version_gen.h @@ -1,4 +1,4 @@ #define RWNX_VERS_REV "1a4b0054d2M (master)" #define RWNX_VERS_MOD "6.4.3.0" #define RWNX_VERS_BANNER "rwnx v6.4.3.0 - 1a4b0054d2M (master)" -#define RELEASE_DATE "2024_0420_24c7777c" +#define RELEASE_DATE "2025_0423_71b66e7b" diff --git a/fw/aic8800D80/aic_powerlimit_8800d80.txt b/fw/aic8800D80/aic_powerlimit_8800d80.txt new file mode 100644 index 0000000..9a16186 --- /dev/null +++ b/fw/aic8800D80/aic_powerlimit_8800d80.txt @@ -0,0 +1,118 @@ +# AIC POWERLIMIT 2024/1108/1900 +# Max tx power reference: Linux wireless regulatory database for CRDA +# https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/tree/db.txt +# If loss_value in aic_userconfig_8800d80.txt is enabled, the power value in this document will be subtracted from loss_value in actual judgment + +# Table 1: +## 2.4G, 20M,#5# +## START +## SRRC FCC ETSI JP UNSET +CH01 15 15 15 15 15 +CH02 16 16 16 16 16 +CH03 16 16 16 16 16 +CH04 16 16 16 16 16 +CH05 16 16 16 16 16 +CH06 16 16 16 16 16 +CH07 16 16 16 16 16 +CH08 16 16 16 16 16 +CH09 16 16 16 16 16 +CH10 16 16 16 16 16 +CH11 16 16 16 16 16 +CH12 12 12 12 12 12 +CH13 12 12 12 12 12 +CH14 NA NA NA 12 12 +## END + +# Table 2: +## 2.4G, 40M,#5# +## START +## SRRC FCC ETSI JP UNSET +CH01 NA NA NA NA NA +CH02 NA NA NA NA NA +CH03 16 16 16 16 16 +CH04 16 16 16 16 16 +CH05 16 16 16 16 16 +CH06 16 16 16 16 16 +CH07 16 16 16 16 16 +CH08 16 16 16 16 16 +CH09 16 16 16 16 16 +CH10 16 16 16 16 16 +CH11 16 16 16 16 16 +CH12 NA NA NA NA NA +CH13 NA NA NA NA NA +CH14 NA NA NA NA NA +## END + +# Table 3: +## 5G, 20M,#5# +## START +## SRRC FCC ETSI JP UNSET +# 5G Band 1 +CH36 15 16 16 16 15 +CH40 15 16 16 16 15 +CH44 15 16 16 16 15 +CH48 15 16 16 16 15 +# 5G Band 2 +CH52 15 16 16 16 15 +CH56 15 16 16 16 15 +CH60 15 16 16 16 15 +CH64 15 16 16 16 15 +# 5G Band 3 +CH100 NA 16 16 16 15 +CH104 NA 16 16 16 15 +CH108 NA 16 16 16 15 +CH112 NA 16 16 16 15 +CH116 NA 16 16 16 15 +CH120 NA 16 16 16 15 +CH124 NA 16 16 16 15 +CH128 NA 16 16 16 15 +CH132 NA 16 16 16 15 +CH136 NA 16 16 16 15 +CH140 NA 16 16 16 15 +CH144 NA NA 16 16 15 +# 5G Band 4 +CH149 16 16 11 NA 11 +CH153 16 16 11 NA 11 +CH157 16 16 11 NA 11 +CH161 16 16 11 NA 11 +CH165 16 16 11 NA 11 +## END + +# Table 4: +## 5G, 40M,#5# +## START +## SRRC FCC ETSI JP UNSET +# 5G Band 1 +CH38 15 16 16 16 15 +CH46 15 16 16 16 15 +# 5G Band 2 +CH54 15 16 16 16 15 +CH62 15 16 16 16 15 +# 5G Band 3 +CH102 NA 16 16 16 15 +CH110 NA 16 16 16 15 +CH118 NA 16 16 16 15 +CH126 NA 16 16 16 15 +CH134 NA 16 16 16 15 +CH142 NA 16 NA 16 15 +# 5G Band 4 +CH151 16 16 11 NA 11 +CH159 16 16 11 NA 11 +## END + +# Table 5: +## 5G, 80M,#5# +## START +## SRRC FCC ETSI JP UNSET +# 5G Band 1 +CH42 15 16 16 16 15 +# 5G Band 2 +CH58 15 16 16 16 15 +# 5G Band 3 +CH106 NA 16 16 16 15 +CH122 NA 16 16 16 15 +CH138 NA 16 NA NA 15 +# 5G Band 4 +CH155 16 16 11 NA 11 +## END + diff --git a/fw/aic8800D80/aic_userconfig_8800d80.txt b/fw/aic8800D80/aic_userconfig_8800d80.txt index d8d6633..864efb4 100644 --- a/fw/aic8800D80/aic_userconfig_8800d80.txt +++ b/fw/aic8800D80/aic_userconfig_8800d80.txt @@ -2,74 +2,88 @@ # txpwr_lvl enable=1 -lvl_11b_11ag_1m_2g4=20 -lvl_11b_11ag_2m_2g4=20 -lvl_11b_11ag_5m5_2g4=20 -lvl_11b_11ag_11m_2g4=20 -lvl_11b_11ag_6m_2g4=20 -lvl_11b_11ag_9m_2g4=20 -lvl_11b_11ag_12m_2g4=20 -lvl_11b_11ag_18m_2g4=20 -lvl_11b_11ag_24m_2g4=20 -lvl_11b_11ag_36m_2g4=19 -lvl_11b_11ag_48m_2g4=18 -lvl_11b_11ag_54m_2g4=17 -lvl_11n_11ac_mcs0_2g4=20 -lvl_11n_11ac_mcs1_2g4=20 -lvl_11n_11ac_mcs2_2g4=20 -lvl_11n_11ac_mcs3_2g4=20 -lvl_11n_11ac_mcs4_2g4=20 -lvl_11n_11ac_mcs5_2g4=19 -lvl_11n_11ac_mcs6_2g4=18 -lvl_11n_11ac_mcs7_2g4=17 -lvl_11n_11ac_mcs8_2g4=17 -lvl_11n_11ac_mcs9_2g4=16 -lvl_11ax_mcs0_2g4=20 -lvl_11ax_mcs1_2g4=20 -lvl_11ax_mcs2_2g4=20 -lvl_11ax_mcs3_2g4=20 -lvl_11ax_mcs4_2g4=20 -lvl_11ax_mcs5_2g4=19 -lvl_11ax_mcs6_2g4=18 -lvl_11ax_mcs7_2g4=17 -lvl_11ax_mcs8_2g4=17 -lvl_11ax_mcs9_2g4=16 -lvl_11ax_mcs10_2g4=15 -lvl_11ax_mcs11_2g4=15 -lvl_11a_6m_5g=19 -lvl_11a_9m_5g=19 -lvl_11a_12m_5g=19 +lvl_11b_11ag_1m_2g4=18 +lvl_11b_11ag_2m_2g4=18 +lvl_11b_11ag_5m5_2g4=18 +lvl_11b_11ag_11m_2g4=18 +lvl_11b_11ag_6m_2g4=18 +lvl_11b_11ag_9m_2g4=18 +lvl_11b_11ag_12m_2g4=18 +lvl_11b_11ag_18m_2g4=18 +lvl_11b_11ag_24m_2g4=16 +lvl_11b_11ag_36m_2g4=16 +lvl_11b_11ag_48m_2g4=15 +lvl_11b_11ag_54m_2g4=15 +lvl_11n_11ac_mcs0_2g4=18 +lvl_11n_11ac_mcs1_2g4=18 +lvl_11n_11ac_mcs2_2g4=18 +lvl_11n_11ac_mcs3_2g4=18 +lvl_11n_11ac_mcs4_2g4=16 +lvl_11n_11ac_mcs5_2g4=16 +lvl_11n_11ac_mcs6_2g4=15 +lvl_11n_11ac_mcs7_2g4=15 +lvl_11n_11ac_mcs8_2g4=14 +lvl_11n_11ac_mcs9_2g4=14 +lvl_11ax_mcs0_2g4=18 +lvl_11ax_mcs1_2g4=18 +lvl_11ax_mcs2_2g4=18 +lvl_11ax_mcs3_2g4=18 +lvl_11ax_mcs4_2g4=16 +lvl_11ax_mcs5_2g4=16 +lvl_11ax_mcs6_2g4=15 +lvl_11ax_mcs7_2g4=15 +lvl_11ax_mcs8_2g4=14 +lvl_11ax_mcs9_2g4=14 +lvl_11ax_mcs10_2g4=13 +lvl_11ax_mcs11_2g4=13 +lvl_11a_6m_5g=18 +lvl_11a_9m_5g=18 +lvl_11a_12m_5g=18 lvl_11a_18m_5g=18 -lvl_11a_24m_5g=18 -lvl_11a_36m_5g=18 -lvl_11a_48m_5g=18 -lvl_11a_54m_5g=18 -lvl_11n_11ac_mcs0_5g=19 -lvl_11n_11ac_mcs1_5g=19 -lvl_11n_11ac_mcs2_5g=19 +lvl_11a_24m_5g=16 +lvl_11a_36m_5g=16 +lvl_11a_48m_5g=15 +lvl_11a_54m_5g=15 +lvl_11n_11ac_mcs0_5g=18 +lvl_11n_11ac_mcs1_5g=18 +lvl_11n_11ac_mcs2_5g=18 lvl_11n_11ac_mcs3_5g=18 -lvl_11n_11ac_mcs4_5g=18 -lvl_11n_11ac_mcs5_5g=18 -lvl_11n_11ac_mcs6_5g=18 -lvl_11n_11ac_mcs7_5g=17 -lvl_11n_11ac_mcs8_5g=15 -lvl_11n_11ac_mcs9_5g=15 -lvl_11ax_mcs0_5g=19 -lvl_11ax_mcs1_5g=19 -lvl_11ax_mcs2_5g=19 +lvl_11n_11ac_mcs4_5g=16 +lvl_11n_11ac_mcs5_5g=16 +lvl_11n_11ac_mcs6_5g=15 +lvl_11n_11ac_mcs7_5g=15 +lvl_11n_11ac_mcs8_5g=14 +lvl_11n_11ac_mcs9_5g=14 +lvl_11ax_mcs0_5g=18 +lvl_11ax_mcs1_5g=18 +lvl_11ax_mcs2_5g=18 lvl_11ax_mcs3_5g=18 -lvl_11ax_mcs4_5g=18 -lvl_11ax_mcs5_5g=18 -lvl_11ax_mcs6_5g=18 -lvl_11ax_mcs7_5g=17 -lvl_11ax_mcs8_5g=15 -lvl_11ax_mcs9_5g=15 -lvl_11ax_mcs10_5g=13 -lvl_11ax_mcs11_5g=13 +lvl_11ax_mcs4_5g=16 +lvl_11ax_mcs5_5g=16 +lvl_11ax_mcs6_5g=14 +lvl_11ax_mcs7_5g=14 +lvl_11ax_mcs8_5g=13 +lvl_11ax_mcs9_5g=13 +lvl_11ax_mcs10_5g=12 +lvl_11ax_mcs11_5g=12 + +# txpwr_lvl_adj +lvl_adj_enable=0 +lvl_adj_2g4_chan_1_4=0 +lvl_adj_2g4_chan_5_9=0 +lvl_adj_2g4_chan_10_13=0 +lvl_adj_5g_chan_42=0 +lvl_adj_5g_chan_58=0 +lvl_adj_5g_chan_106=0 +lvl_adj_5g_chan_122=0 +lvl_adj_5g_chan_138=0 +lvl_adj_5g_chan_155=0 # txpwr_loss -loss_enable=0 -loss_value=2 +loss_enable_2g4=0 +loss_value_2g4=2 +loss_enable_5g=0 +loss_value_5g=5 # txpwr_ofst ofst_enable=0 diff --git a/fw/aic8800D80/aic_userconfig_8800d80_u11.txt b/fw/aic8800D80/aic_userconfig_8800d80_u11.txt new file mode 100644 index 0000000..5bf7827 --- /dev/null +++ b/fw/aic8800D80/aic_userconfig_8800d80_u11.txt @@ -0,0 +1,124 @@ +# AIC USERCONFIG 2022/0803/1707 + +# txpwr_lvl +enable=1 +lvl_11b_11ag_1m_2g4=20 +lvl_11b_11ag_2m_2g4=20 +lvl_11b_11ag_5m5_2g4=20 +lvl_11b_11ag_11m_2g4=20 +lvl_11b_11ag_6m_2g4=20 +lvl_11b_11ag_9m_2g4=20 +lvl_11b_11ag_12m_2g4=20 +lvl_11b_11ag_18m_2g4=20 +lvl_11b_11ag_24m_2g4=20 +lvl_11b_11ag_36m_2g4=19 +lvl_11b_11ag_48m_2g4=18 +lvl_11b_11ag_54m_2g4=17 +lvl_11n_11ac_mcs0_2g4=20 +lvl_11n_11ac_mcs1_2g4=20 +lvl_11n_11ac_mcs2_2g4=20 +lvl_11n_11ac_mcs3_2g4=20 +lvl_11n_11ac_mcs4_2g4=20 +lvl_11n_11ac_mcs5_2g4=19 +lvl_11n_11ac_mcs6_2g4=18 +lvl_11n_11ac_mcs7_2g4=17 +lvl_11n_11ac_mcs8_2g4=17 +lvl_11n_11ac_mcs9_2g4=16 +lvl_11ax_mcs0_2g4=20 +lvl_11ax_mcs1_2g4=20 +lvl_11ax_mcs2_2g4=20 +lvl_11ax_mcs3_2g4=20 +lvl_11ax_mcs4_2g4=20 +lvl_11ax_mcs5_2g4=19 +lvl_11ax_mcs6_2g4=18 +lvl_11ax_mcs7_2g4=17 +lvl_11ax_mcs8_2g4=17 +lvl_11ax_mcs9_2g4=16 +lvl_11ax_mcs10_2g4=15 +lvl_11ax_mcs11_2g4=15 +lvl_11a_6m_5g=19 +lvl_11a_9m_5g=19 +lvl_11a_12m_5g=19 +lvl_11a_18m_5g=18 +lvl_11a_24m_5g=18 +lvl_11a_36m_5g=18 +lvl_11a_48m_5g=18 +lvl_11a_54m_5g=18 +lvl_11n_11ac_mcs0_5g=19 +lvl_11n_11ac_mcs1_5g=19 +lvl_11n_11ac_mcs2_5g=19 +lvl_11n_11ac_mcs3_5g=18 +lvl_11n_11ac_mcs4_5g=18 +lvl_11n_11ac_mcs5_5g=18 +lvl_11n_11ac_mcs6_5g=18 +lvl_11n_11ac_mcs7_5g=17 +lvl_11n_11ac_mcs8_5g=15 +lvl_11n_11ac_mcs9_5g=15 +lvl_11ax_mcs0_5g=19 +lvl_11ax_mcs1_5g=19 +lvl_11ax_mcs2_5g=19 +lvl_11ax_mcs3_5g=18 +lvl_11ax_mcs4_5g=18 +lvl_11ax_mcs5_5g=18 +lvl_11ax_mcs6_5g=18 +lvl_11ax_mcs7_5g=17 +lvl_11ax_mcs8_5g=15 +lvl_11ax_mcs9_5g=15 +lvl_11ax_mcs10_5g=13 +lvl_11ax_mcs11_5g=13 + +# txpwr_lvl_adj +lvl_adj_enable=0 +lvl_adj_2g4_chan_1_4=0 +lvl_adj_2g4_chan_5_9=0 +lvl_adj_2g4_chan_10_13=0 +lvl_adj_5g_chan_42=0 +lvl_adj_5g_chan_58=0 +lvl_adj_5g_chan_106=0 +lvl_adj_5g_chan_122=0 +lvl_adj_5g_chan_138=0 +lvl_adj_5g_chan_155=0 + +# txpwr_loss +loss_enable_2g4=0 +loss_value_2g4=2 +loss_enable_5g=0 +loss_value_5g=5 + +# txpwr_ofst +ofst_enable=0 +ofst_2g4_11b_chan_1_4=0 +ofst_2g4_11b_chan_5_9=0 +ofst_2g4_11b_chan_10_13=0 +ofst_2g4_ofdm_highrate_chan_1_4=0 +ofst_2g4_ofdm_highrate_chan_5_9=0 +ofst_2g4_ofdm_highrate_chan_10_13=0 +ofst_2g4_ofdm_lowrate_chan_1_4=0 +ofst_2g4_ofdm_lowrate_chan_5_9=0 +ofst_2g4_ofdm_lowrate_chan_10_13=0 +ofst_5g_ofdm_lowrate_chan_42=0 +ofst_5g_ofdm_lowrate_chan_58=0 +ofst_5g_ofdm_lowrate_chan_106=0 +ofst_5g_ofdm_lowrate_chan_122=0 +ofst_5g_ofdm_lowrate_chan_138=0 +ofst_5g_ofdm_lowrate_chan_155=0 +ofst_5g_ofdm_highrate_chan_42=0 +ofst_5g_ofdm_highrate_chan_58=0 +ofst_5g_ofdm_highrate_chan_106=0 +ofst_5g_ofdm_highrate_chan_122=0 +ofst_5g_ofdm_highrate_chan_138=0 +ofst_5g_ofdm_highrate_chan_155=0 +ofst_5g_ofdm_midrate_chan_42=0 +ofst_5g_ofdm_midrate_chan_58=0 +ofst_5g_ofdm_midrate_chan_106=0 +ofst_5g_ofdm_midrate_chan_122=0 +ofst_5g_ofdm_midrate_chan_138=0 +ofst_5g_ofdm_midrate_chan_155=0 + +# xtal cap +xtal_enable=0 +xtal_cap=24 +xtal_cap_fine=31 + + + diff --git a/fw/aic8800D80/aic_userconfig_8800d80_u11_cus.txt b/fw/aic8800D80/aic_userconfig_8800d80_u11_cus.txt new file mode 100644 index 0000000..f58796c --- /dev/null +++ b/fw/aic8800D80/aic_userconfig_8800d80_u11_cus.txt @@ -0,0 +1,124 @@ +# AIC USERCONFIG 2022/0803/1707 + +# txpwr_lvl +enable=1 +lvl_11b_11ag_1m_2g4=18 +lvl_11b_11ag_2m_2g4=18 +lvl_11b_11ag_5m5_2g4=18 +lvl_11b_11ag_11m_2g4=18 +lvl_11b_11ag_6m_2g4=18 +lvl_11b_11ag_9m_2g4=18 +lvl_11b_11ag_12m_2g4=18 +lvl_11b_11ag_18m_2g4=18 +lvl_11b_11ag_24m_2g4=18 +lvl_11b_11ag_36m_2g4=18 +lvl_11b_11ag_48m_2g4=18 +lvl_11b_11ag_54m_2g4=17 +lvl_11n_11ac_mcs0_2g4=20 +lvl_11n_11ac_mcs1_2g4=20 +lvl_11n_11ac_mcs2_2g4=20 +lvl_11n_11ac_mcs3_2g4=20 +lvl_11n_11ac_mcs4_2g4=20 +lvl_11n_11ac_mcs5_2g4=19 +lvl_11n_11ac_mcs6_2g4=18 +lvl_11n_11ac_mcs7_2g4=18 +lvl_11n_11ac_mcs8_2g4=17 +lvl_11n_11ac_mcs9_2g4=16 +lvl_11ax_mcs0_2g4=20 +lvl_11ax_mcs1_2g4=20 +lvl_11ax_mcs2_2g4=20 +lvl_11ax_mcs3_2g4=20 +lvl_11ax_mcs4_2g4=20 +lvl_11ax_mcs5_2g4=19 +lvl_11ax_mcs6_2g4=18 +lvl_11ax_mcs7_2g4=18 +lvl_11ax_mcs8_2g4=17 +lvl_11ax_mcs9_2g4=17 +lvl_11ax_mcs10_2g4=16 +lvl_11ax_mcs11_2g4=16 +lvl_11a_6m_5g=18 +lvl_11a_9m_5g=18 +lvl_11a_12m_5g=18 +lvl_11a_18m_5g=18 +lvl_11a_24m_5g=18 +lvl_11a_36m_5g=18 +lvl_11a_48m_5g=18 +lvl_11a_54m_5g=18 +lvl_11n_11ac_mcs0_5g=20 +lvl_11n_11ac_mcs1_5g=19 +lvl_11n_11ac_mcs2_5g=19 +lvl_11n_11ac_mcs3_5g=18 +lvl_11n_11ac_mcs4_5g=18 +lvl_11n_11ac_mcs5_5g=18 +lvl_11n_11ac_mcs6_5g=18 +lvl_11n_11ac_mcs7_5g=17 +lvl_11n_11ac_mcs8_5g=16 +lvl_11n_11ac_mcs9_5g=16 +lvl_11ax_mcs0_5g=20 +lvl_11ax_mcs1_5g=19 +lvl_11ax_mcs2_5g=19 +lvl_11ax_mcs3_5g=18 +lvl_11ax_mcs4_5g=18 +lvl_11ax_mcs5_5g=18 +lvl_11ax_mcs6_5g=18 +lvl_11ax_mcs7_5g=17 +lvl_11ax_mcs8_5g=16 +lvl_11ax_mcs9_5g=16 +lvl_11ax_mcs10_5g=15 +lvl_11ax_mcs11_5g=15 + +# txpwr_lvl_adj +lvl_adj_enable=0 +lvl_adj_2g4_chan_1_4=0 +lvl_adj_2g4_chan_5_9=0 +lvl_adj_2g4_chan_10_13=0 +lvl_adj_5g_chan_42=0 +lvl_adj_5g_chan_58=0 +lvl_adj_5g_chan_106=0 +lvl_adj_5g_chan_122=0 +lvl_adj_5g_chan_138=0 +lvl_adj_5g_chan_155=0 + +# txpwr_loss +loss_enable_2g4=0 +loss_value_2g4=2 +loss_enable_5g=0 +loss_value_5g=5 + +# txpwr_ofst +ofst_enable=0 +ofst_2g4_11b_chan_1_4=0 +ofst_2g4_11b_chan_5_9=0 +ofst_2g4_11b_chan_10_13=0 +ofst_2g4_ofdm_highrate_chan_1_4=0 +ofst_2g4_ofdm_highrate_chan_5_9=0 +ofst_2g4_ofdm_highrate_chan_10_13=0 +ofst_2g4_ofdm_lowrate_chan_1_4=0 +ofst_2g4_ofdm_lowrate_chan_5_9=0 +ofst_2g4_ofdm_lowrate_chan_10_13=0 +ofst_5g_ofdm_lowrate_chan_42=0 +ofst_5g_ofdm_lowrate_chan_58=0 +ofst_5g_ofdm_lowrate_chan_106=0 +ofst_5g_ofdm_lowrate_chan_122=0 +ofst_5g_ofdm_lowrate_chan_138=0 +ofst_5g_ofdm_lowrate_chan_155=0 +ofst_5g_ofdm_highrate_chan_42=0 +ofst_5g_ofdm_highrate_chan_58=0 +ofst_5g_ofdm_highrate_chan_106=0 +ofst_5g_ofdm_highrate_chan_122=0 +ofst_5g_ofdm_highrate_chan_138=0 +ofst_5g_ofdm_highrate_chan_155=0 +ofst_5g_ofdm_midrate_chan_42=0 +ofst_5g_ofdm_midrate_chan_58=0 +ofst_5g_ofdm_midrate_chan_106=0 +ofst_5g_ofdm_midrate_chan_122=0 +ofst_5g_ofdm_midrate_chan_138=0 +ofst_5g_ofdm_midrate_chan_155=0 + +# xtal cap +xtal_enable=0 +xtal_cap=24 +xtal_cap_fine=31 + + + diff --git a/fw/aic8800D80/aic_userconfig_8800d80_u11_pro.txt b/fw/aic8800D80/aic_userconfig_8800d80_u11_pro.txt new file mode 100644 index 0000000..f6de9fd --- /dev/null +++ b/fw/aic8800D80/aic_userconfig_8800d80_u11_pro.txt @@ -0,0 +1,124 @@ +# AIC USERCONFIG 2022/0803/1707 + +# txpwr_lvl +enable=1 +lvl_11b_11ag_1m_2g4=20 +lvl_11b_11ag_2m_2g4=20 +lvl_11b_11ag_5m5_2g4=20 +lvl_11b_11ag_11m_2g4=20 +lvl_11b_11ag_6m_2g4=20 +lvl_11b_11ag_9m_2g4=20 +lvl_11b_11ag_12m_2g4=20 +lvl_11b_11ag_18m_2g4=20 +lvl_11b_11ag_24m_2g4=20 +lvl_11b_11ag_36m_2g4=19 +lvl_11b_11ag_48m_2g4=18 +lvl_11b_11ag_54m_2g4=17 +lvl_11n_11ac_mcs0_2g4=20 +lvl_11n_11ac_mcs1_2g4=20 +lvl_11n_11ac_mcs2_2g4=20 +lvl_11n_11ac_mcs3_2g4=20 +lvl_11n_11ac_mcs4_2g4=20 +lvl_11n_11ac_mcs5_2g4=19 +lvl_11n_11ac_mcs6_2g4=18 +lvl_11n_11ac_mcs7_2g4=17 +lvl_11n_11ac_mcs8_2g4=17 +lvl_11n_11ac_mcs9_2g4=16 +lvl_11ax_mcs0_2g4=20 +lvl_11ax_mcs1_2g4=20 +lvl_11ax_mcs2_2g4=20 +lvl_11ax_mcs3_2g4=20 +lvl_11ax_mcs4_2g4=20 +lvl_11ax_mcs5_2g4=19 +lvl_11ax_mcs6_2g4=18 +lvl_11ax_mcs7_2g4=17 +lvl_11ax_mcs8_2g4=17 +lvl_11ax_mcs9_2g4=16 +lvl_11ax_mcs10_2g4=15 +lvl_11ax_mcs11_2g4=15 +lvl_11a_6m_5g=19 +lvl_11a_9m_5g=19 +lvl_11a_12m_5g=19 +lvl_11a_18m_5g=18 +lvl_11a_24m_5g=18 +lvl_11a_36m_5g=18 +lvl_11a_48m_5g=18 +lvl_11a_54m_5g=18 +lvl_11n_11ac_mcs0_5g=19 +lvl_11n_11ac_mcs1_5g=19 +lvl_11n_11ac_mcs2_5g=19 +lvl_11n_11ac_mcs3_5g=18 +lvl_11n_11ac_mcs4_5g=18 +lvl_11n_11ac_mcs5_5g=18 +lvl_11n_11ac_mcs6_5g=18 +lvl_11n_11ac_mcs7_5g=17 +lvl_11n_11ac_mcs8_5g=15 +lvl_11n_11ac_mcs9_5g=15 +lvl_11ax_mcs0_5g=19 +lvl_11ax_mcs1_5g=19 +lvl_11ax_mcs2_5g=19 +lvl_11ax_mcs3_5g=18 +lvl_11ax_mcs4_5g=18 +lvl_11ax_mcs5_5g=18 +lvl_11ax_mcs6_5g=18 +lvl_11ax_mcs7_5g=17 +lvl_11ax_mcs8_5g=15 +lvl_11ax_mcs9_5g=15 +lvl_11ax_mcs10_5g=14 +lvl_11ax_mcs11_5g=14 + +# txpwr_lvl_adj +lvl_adj_enable=0 +lvl_adj_2g4_chan_1_4=0 +lvl_adj_2g4_chan_5_9=0 +lvl_adj_2g4_chan_10_13=0 +lvl_adj_5g_chan_42=0 +lvl_adj_5g_chan_58=0 +lvl_adj_5g_chan_106=0 +lvl_adj_5g_chan_122=0 +lvl_adj_5g_chan_138=0 +lvl_adj_5g_chan_155=0 + +# txpwr_loss +loss_enable_2g4=0 +loss_value_2g4=2 +loss_enable_5g=0 +loss_value_5g=5 + +# txpwr_ofst +ofst_enable=0 +ofst_2g4_11b_chan_1_4=0 +ofst_2g4_11b_chan_5_9=0 +ofst_2g4_11b_chan_10_13=0 +ofst_2g4_ofdm_highrate_chan_1_4=0 +ofst_2g4_ofdm_highrate_chan_5_9=0 +ofst_2g4_ofdm_highrate_chan_10_13=0 +ofst_2g4_ofdm_lowrate_chan_1_4=0 +ofst_2g4_ofdm_lowrate_chan_5_9=0 +ofst_2g4_ofdm_lowrate_chan_10_13=0 +ofst_5g_ofdm_lowrate_chan_42=0 +ofst_5g_ofdm_lowrate_chan_58=0 +ofst_5g_ofdm_lowrate_chan_106=0 +ofst_5g_ofdm_lowrate_chan_122=0 +ofst_5g_ofdm_lowrate_chan_138=0 +ofst_5g_ofdm_lowrate_chan_155=0 +ofst_5g_ofdm_highrate_chan_42=0 +ofst_5g_ofdm_highrate_chan_58=0 +ofst_5g_ofdm_highrate_chan_106=0 +ofst_5g_ofdm_highrate_chan_122=0 +ofst_5g_ofdm_highrate_chan_138=0 +ofst_5g_ofdm_highrate_chan_155=0 +ofst_5g_ofdm_midrate_chan_42=0 +ofst_5g_ofdm_midrate_chan_58=0 +ofst_5g_ofdm_midrate_chan_106=0 +ofst_5g_ofdm_midrate_chan_122=0 +ofst_5g_ofdm_midrate_chan_138=0 +ofst_5g_ofdm_midrate_chan_155=0 + +# xtal cap +xtal_enable=0 +xtal_cap=24 +xtal_cap_fine=31 + + + diff --git a/fw/aic8800D80/fmacfw_8800d80_h_u02.bin b/fw/aic8800D80/fmacfw_8800d80_h_u02.bin new file mode 100644 index 0000000000000000000000000000000000000000..e6bab414645db9f2e3e526742a13a65f7a769280 GIT binary patch literal 351716 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%0A{Hz- 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 literal 0 HcmV?d00001 diff --git a/fw/aic8800D80/fmacfw_8800d80_h_u02_ipc.bin b/fw/aic8800D80/fmacfw_8800d80_h_u02_ipc.bin new file mode 100644 index 0000000000000000000000000000000000000000..18490aa969b66f8522ec8bb77561b2309e6c8c15 GIT binary patch literal 346052 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

;vsbA*28NhNk#6oY!Rf6D`ty6H7{*Ct4)^ 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 literal 0 HcmV?d00001 diff --git a/fw/aic8800D80/fmacfw_8800d80_u02.bin b/fw/aic8800D80/fmacfw_8800d80_u02.bin index b5b4271ff0e149cd8537bbaa2b6917d61db1ff02..b65b6bcb5a841ebb867c8794895bc36800ac4fbb 100644 GIT binary patch delta 16848 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 DkDz3y delta 16835 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 diff --git a/fw/aic8800D80/fmacfw_8800d80_u02_ipc.bin b/fw/aic8800D80/fmacfw_8800d80_u02_ipc.bin index 4b03cd3108f2d52fd98e6aa3ed17a585775b7149..1256572972caeb9fbd1ae2dba4fa8bdf778a8196 100644 GIT binary patch delta 176841 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

WVfWHEhj4=?> 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%0Air={DQJ8%+zU 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%0D8w`K$}W{S~_J3eAToqLMM|Aplr#aTwu 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 delta 157394 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

2|vwOQar7*X0@xQfPgB)`Ow`d9)cQQ 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 diff --git a/fw/aic8800D80/fw_ble_scan_ad_filter.bin b/fw/aic8800D80/fw_ble_scan_ad_filter.bin index ca17f67e567087ea2664d3a77ca80da62f874b06..2ae783573682f3fde1ac7ca8560f027e7941b6d2 100644 GIT binary patch delta 184840 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

YbkCyFK=4&9;dsj#xgR0lsG;3L0L7K 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

RWdqHaR(esMB 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 C#I2(M literal 25300 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

;Uu{oK`Z)pV`&NBtEH=*rz zLxS~FKB?dhjFJ!XlQw)jM%yDze?iQTK->FcVYuf!LwL3Rr)nVcyKwG%v5@t<&KX(! zmS`eVB3sHi(6;qPs?rmzk$iI7qpGra1Lk5H(CX7;E@tYtqV`HY1!*UBf_7#guQXr= z1j%Jk^3(9ijEN^|e1~K?)H%%68PB)1zbLOV?)Rsnqj+ zFy!Ez>xYePOU3=;7R)0g*=>R}*C&{Zq*P&;2>BNoF#<Wn7KI`{_%zy(y%yt!u8}mY13kny{U%ii9WX`>dAZ3X9|{4EJp^=&x_@aiJDyh zPbKBb|J?qw|E2%`G{*nc){Eo(<39@IS6DzzRX6~1Q^}v=KmvvMedh@!)ORbP5sNEB zjTH6&_m`(%e$O_2!2*3je!)Eb-2B3Mw-wHtr_a;>xM_>Ne!lrO^CI*AHPZhBh6j}< literal 0 HcmV?d00001 diff --git a/fw/aic8800DC/fw_patch_8800dc_u02_ext0.bin b/fw/aic8800DC/fw_patch_8800dc_u02_ext0.bin new file mode 100644 index 0000000000000000000000000000000000000000..ca18b59c1947dbae89c99f798e9f64d4e52a8aaf GIT binary patch literal 2892 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 literal 0 HcmV?d00001 diff --git a/fw/aic8800DC/fw_patch_8800dc_u02h.bin b/fw/aic8800DC/fw_patch_8800dc_u02h.bin new file mode 100644 index 0000000000000000000000000000000000000000..8e48ba89af46b4e829a3cf9ed1c22feafa48c689 GIT binary patch literal 15680 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 literal 0 HcmV?d00001 diff --git a/fw/aic8800DC/fw_patch_table_8800dc_u02h.bin b/fw/aic8800DC/fw_patch_table_8800dc_u02h.bin new file mode 100644 index 0000000000000000000000000000000000000000..eb7aae14e2964676fe32f2fe772420afb7d4498f GIT binary patch literal 568 zcmZ{hyGsK>5XL9w6qTqWiI6~qEi5b&%u|z8cZrEfk=zju#p>+DLQJ7{f~A)J34)>s zKCt%zf?8>sbPC#8C|Fon2>NaIEG%5u{V}uO%+Aajl|tTjEZeb-DZ(<8U8$8ETiSAI z@_1&N8(`AF$PUw}$I^AUEzkq1IJ<6GDo*-3u-DnE0~981)6H+#g|cJkQ*DhO_f6!E zA22lrnO49ccy`5f3BRYs^d4Y(YcidHty88AaQmETABSaOQ)rLL z2mj$UlMZe@qIPf?`97el+%bKEoA=P;o%93K6En?%ukf#ds@|$OSyX*_QELx&aENiD zFP8!E8@2|@-oFqp`|pMY%eXRGI#DM@+&TZ5n^D4z z(l#`v>=F9wWm-ID%79h$I}$=2NTlMXksV)(_qt?F*ilhiS{3oENW>B;5s&8*$y_=n TqGEnwS)?+_%tUq^vVYePf}daL literal 0 HcmV?d00001 diff --git a/fw/aic8800DC/lmacfw_rf_8800dc.bin b/fw/aic8800DC/lmacfw_rf_8800dc.bin new file mode 100644 index 0000000000000000000000000000000000000000..1373376d9c1244ec33f592169d8b99f57a182ba5 GIT binary patch literal 169706 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 K^{i1o-~R(UTPf%O literal 0 HcmV?d00001

iekgZh4>nR>Joy zJhWsfO43r}jVL9T4GWb$+{X)V`abVnF4uShHGYp8i_PD?_ky&@91U-(#}WT~pSS); zpHGGQT#Xj?{x^NH=sCgM$c68=evdEWjFLS9`(58X zdoI2H3C_Q1Ahx0YS+1w9wEl_rAXO4?w~H9RD`EIS*6XD7_aHa5IV7s2of4+K{%O2GL zUkUHuTvMB#fc!tzT)!2b3#C;^Pb<{;-;gcj%50@~fikE2G;IG=dJ)X8J+lYAzNYsP zdy2&I_0QmYakh&56p1xgfGX2GUg(7VpL*?li8<_)?lG?m!D(#>PCr^!l(OcJ&hoi| z`VBH?Y&ODI<8FSnJza`2mu!sAUP-u~r{QmMFSHgW^Q(_N1z!OjdYrT&98h_TSXp}eQ6*~e z?Om#A;Gq?EIMklHXTN*)beuM%f8gPj;cyK8a1wa39e#w6wrbcK4jKXGE%qRXd(SHe zDBr)JJL>R{G8F^;zz&v5c*A~5EOcGrX{w9T;(3_IJko$0Wx^3@Cm)4xLF>fmNsKsZlFD5p)#IzZ9k44i zoiTG(6vqnxH`U{Ahxftv?$m8u z>bLIoxZCw#_>%D`>5}IVv_&m=JDB&b5^uw#&pl08^P|>3yIb+Sgq001 zNn!lK1f+?^Uk+aWj9caJ3N(8zNoA1!)oDT7Z9A-Z4Zu@CMXgKt0emmfug3%jfXP75sesjDSZ9DPFZ|6JNYx1HWbseUzW)B%9MJ zCjT#gcymQ^1uYy~{kCDQj*ztvtlc~(88!Z!e_C$q>P>T!%e4e5&7#d4idH|cb;_*| zloXYvl@^t5Tvg;;zqy>hbv|#V{r~UE%$v{W*%lTpu@>1DXBQRPZ(l~p!)u%mqi=ca zW#vVs4{YY=@g{SH5c=b9y_KJCPNDNoUXD_m%cmnTEtF3CNjm*zy1X=4b`^b%IuANa zox^=3Zd|>wbfeQW!CAbic;l2?OI8(85Kg5(E6w*#<|k~}NM|^8)9Q^y4-{`)U9@TS zLv)(|O;KxhQC4>L(xOE1N4!<6-#egy}77-bMfXa<^25le9q#coZE|*-JW&(9m|St z&sn;-Xi34+#aW9|9(|PmpGsy~3zptqv~WpL;nIZ#Mb^9ikL$>5@b6>XTwJmeLtDG5 z;@+uSi#M!Yg>`b4uYO<^)*v_McEPl&cyn!O?@+rnjdELyy93EDE1Y*|yZdc)?T%@suttbQ0+f@kOEP5cCG zGjn~XA_#nlH6UaotU;(ocnjfk;v93C zgk~KOL4!^3abnOxN?uXtIrhH6uUXdnK0{1toMJM~bIWC>U~r^t8Nf@R)9nh3%4lQci?$Moq?dN1-%FAC<% z>1lHM^LKV5zbKgglljMVkBF;c|3CSg!e_58<;^qrG;>-yKYhlW8R>H}ro%dM|Ju!b RM&_(F8R;@g|F5R={{SbTx+DMq diff --git a/fw/aic8800D80/fw_patch_8800d80_u02_ext0.bin b/fw/aic8800D80/fw_patch_8800d80_u02_ext0.bin new file mode 100644 index 0000000000000000000000000000000000000000..f407e2f5765a200b9c02a2d4af0ab5fb5e06550f GIT binary patch literal 10956 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 BK@|W1 literal 0 HcmV?d00001 diff --git a/fw/aic8800D80/fw_patch_table_8800d80_u02.bin b/fw/aic8800D80/fw_patch_table_8800d80_u02.bin index 4907160ce897aa72b80db269c882d3a487ca3dc4..67d54145bea8b1149be499bacdbb7656c28d6609 100644 GIT binary patch literal 1240 zcmZ{kZ)ntY9LL}1cDC6(kD7Eg{q&tAZcXX#oa;6YTBl|-^ z3l#KOPX_CeJ+N4i*l2=+G6#dMw6K^lLuEn1f&%xz*aOFWeebTI2YumpuiyLodH+72 z-}m$V-Y?a$vo)K`WOLb6yBMjW?&xaEWxe)eIoG9kOvyD)SD<9d1Tx70cmL4e`^%5* z2U5yUTYN8tb!NwJepnd%adaggDlhChW2rjW4X&~u;OMOdacka$*TN|~E zxkj!;jnjLVsR#S2OkdH%`Q`KvUBAI})11BynH>7oHq+=cPLofXM%K}n)uz|+A6;Y0 zqqja~>cM~hP17~>4*Glt_C`$SV12+ei2n>a16Pvo68Tb3n5Kz0f8!LT&RE_l`?S;W zcTNj%Z-eO}?Bw~A@O+%-s8hd;y6D9+(*g2*#QXe--VimNCf@v_X~_FJs89T}7E?L# zyZcNZGe6vF8i0F=e@gwUyjKLhdcSEF-M5i`pbxQ*I^OG#S50B`SdjeW`JFmL@M_Fd zMf^<8G|qZfzGgaz{_(ccIQ~~|IOVC|dCWA0|2VwHe1~5LbxsV@Pv%b@H+_j7t2SLB z&x2+w?OSL1rCr5yTE?DLa!nKWW2VHLa0#75wZz}2koTF4*p;isPL?!2<)>H?F*}s7mtUpbkgHE43 zXS!d;dHCLG5Pbr^3m1QI+Ks>VI>djG{aJX7__WhZh0|X@JI%ttjME&veamTt_~ah? z9;UC|ra7J;>oX;Ie(?}}U4`yv-(c?>>=(Y+QQiY~{^HcbeDEOW1>MX(jG`y$|7r5q z(*FZ+66UEh4~y&FM|b$-q>JC03f8;Xbsc-##S$(ajW@bjQ_GeYTDHdBX4ik@Ef?$E M5{(^h!uG%85uS_&P5=M^ delta 649 zcmXw%O-NK>6o%i)8Pw^=39WIgj$a{U>cIS#V-1a2)GUh8rYs>GsVQ9q2`vhWnaH4} zG6b~L;2zSKyPk1&#~5OjZ>EgQ!^(_T|b?Qdp9WnJC{HI4QMP= zKsTX%i+a_BzOmb{2`J9W@L(nFX)SeN)4k2=A`HrQnDQ-7%blhbI1@Jgf?qM1fD3WnW6+d`!RSkG$;pqsD1- z4;O;Y!fSA3zv&qLH@hJHBizqQty6!_RIMXko>*}8l<6BBKgoxnzDm6u;C=>7{415) t-r%mo#q%zbbg@V*?xM+_WV|O4bzygD?5az2@4J|Y$11blU}fIx`v>iuhs^*0 diff --git a/fw/aic8800D80/lmacfw_rf_8800d80_u02.bin b/fw/aic8800D80/lmacfw_rf_8800d80_u02.bin index 07716a666abe06846c0d292c9a5ea82f1c1fcaa4..8c1a5831aaf1a36d4b5d7effb7c6b06854dd0521 100644 GIT binary patch delta 169348 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 Yt9z20S610lx4`>wj);(v=#%9C0WC@qZvX%Q delta 123257 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 x3LHQ@8{vFId?mte?5qNRS`bf%e4_T6X{d diff --git a/fw/aic8800DC/aic_powerlimit_8800dc.txt b/fw/aic8800DC/aic_powerlimit_8800dc.txt new file mode 100644 index 0000000..9a16186 --- /dev/null +++ b/fw/aic8800DC/aic_powerlimit_8800dc.txt @@ -0,0 +1,118 @@ +# AIC POWERLIMIT 2024/1108/1900 +# Max tx power reference: Linux wireless regulatory database for CRDA +# https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/tree/db.txt +# If loss_value in aic_userconfig_8800d80.txt is enabled, the power value in this document will be subtracted from loss_value in actual judgment + +# Table 1: +## 2.4G, 20M,#5# +## START +## SRRC FCC ETSI JP UNSET +CH01 15 15 15 15 15 +CH02 16 16 16 16 16 +CH03 16 16 16 16 16 +CH04 16 16 16 16 16 +CH05 16 16 16 16 16 +CH06 16 16 16 16 16 +CH07 16 16 16 16 16 +CH08 16 16 16 16 16 +CH09 16 16 16 16 16 +CH10 16 16 16 16 16 +CH11 16 16 16 16 16 +CH12 12 12 12 12 12 +CH13 12 12 12 12 12 +CH14 NA NA NA 12 12 +## END + +# Table 2: +## 2.4G, 40M,#5# +## START +## SRRC FCC ETSI JP UNSET +CH01 NA NA NA NA NA +CH02 NA NA NA NA NA +CH03 16 16 16 16 16 +CH04 16 16 16 16 16 +CH05 16 16 16 16 16 +CH06 16 16 16 16 16 +CH07 16 16 16 16 16 +CH08 16 16 16 16 16 +CH09 16 16 16 16 16 +CH10 16 16 16 16 16 +CH11 16 16 16 16 16 +CH12 NA NA NA NA NA +CH13 NA NA NA NA NA +CH14 NA NA NA NA NA +## END + +# Table 3: +## 5G, 20M,#5# +## START +## SRRC FCC ETSI JP UNSET +# 5G Band 1 +CH36 15 16 16 16 15 +CH40 15 16 16 16 15 +CH44 15 16 16 16 15 +CH48 15 16 16 16 15 +# 5G Band 2 +CH52 15 16 16 16 15 +CH56 15 16 16 16 15 +CH60 15 16 16 16 15 +CH64 15 16 16 16 15 +# 5G Band 3 +CH100 NA 16 16 16 15 +CH104 NA 16 16 16 15 +CH108 NA 16 16 16 15 +CH112 NA 16 16 16 15 +CH116 NA 16 16 16 15 +CH120 NA 16 16 16 15 +CH124 NA 16 16 16 15 +CH128 NA 16 16 16 15 +CH132 NA 16 16 16 15 +CH136 NA 16 16 16 15 +CH140 NA 16 16 16 15 +CH144 NA NA 16 16 15 +# 5G Band 4 +CH149 16 16 11 NA 11 +CH153 16 16 11 NA 11 +CH157 16 16 11 NA 11 +CH161 16 16 11 NA 11 +CH165 16 16 11 NA 11 +## END + +# Table 4: +## 5G, 40M,#5# +## START +## SRRC FCC ETSI JP UNSET +# 5G Band 1 +CH38 15 16 16 16 15 +CH46 15 16 16 16 15 +# 5G Band 2 +CH54 15 16 16 16 15 +CH62 15 16 16 16 15 +# 5G Band 3 +CH102 NA 16 16 16 15 +CH110 NA 16 16 16 15 +CH118 NA 16 16 16 15 +CH126 NA 16 16 16 15 +CH134 NA 16 16 16 15 +CH142 NA 16 NA 16 15 +# 5G Band 4 +CH151 16 16 11 NA 11 +CH159 16 16 11 NA 11 +## END + +# Table 5: +## 5G, 80M,#5# +## START +## SRRC FCC ETSI JP UNSET +# 5G Band 1 +CH42 15 16 16 16 15 +# 5G Band 2 +CH58 15 16 16 16 15 +# 5G Band 3 +CH106 NA 16 16 16 15 +CH122 NA 16 16 16 15 +CH138 NA 16 NA NA 15 +# 5G Band 4 +CH155 16 16 11 NA 11 +## END + diff --git a/fw/aic8800DC/aic_powerlimit_8800dw.txt b/fw/aic8800DC/aic_powerlimit_8800dw.txt new file mode 100644 index 0000000..9a16186 --- /dev/null +++ b/fw/aic8800DC/aic_powerlimit_8800dw.txt @@ -0,0 +1,118 @@ +# AIC POWERLIMIT 2024/1108/1900 +# Max tx power reference: Linux wireless regulatory database for CRDA +# https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/tree/db.txt +# If loss_value in aic_userconfig_8800d80.txt is enabled, the power value in this document will be subtracted from loss_value in actual judgment + +# Table 1: +## 2.4G, 20M,#5# +## START +## SRRC FCC ETSI JP UNSET +CH01 15 15 15 15 15 +CH02 16 16 16 16 16 +CH03 16 16 16 16 16 +CH04 16 16 16 16 16 +CH05 16 16 16 16 16 +CH06 16 16 16 16 16 +CH07 16 16 16 16 16 +CH08 16 16 16 16 16 +CH09 16 16 16 16 16 +CH10 16 16 16 16 16 +CH11 16 16 16 16 16 +CH12 12 12 12 12 12 +CH13 12 12 12 12 12 +CH14 NA NA NA 12 12 +## END + +# Table 2: +## 2.4G, 40M,#5# +## START +## SRRC FCC ETSI JP UNSET +CH01 NA NA NA NA NA +CH02 NA NA NA NA NA +CH03 16 16 16 16 16 +CH04 16 16 16 16 16 +CH05 16 16 16 16 16 +CH06 16 16 16 16 16 +CH07 16 16 16 16 16 +CH08 16 16 16 16 16 +CH09 16 16 16 16 16 +CH10 16 16 16 16 16 +CH11 16 16 16 16 16 +CH12 NA NA NA NA NA +CH13 NA NA NA NA NA +CH14 NA NA NA NA NA +## END + +# Table 3: +## 5G, 20M,#5# +## START +## SRRC FCC ETSI JP UNSET +# 5G Band 1 +CH36 15 16 16 16 15 +CH40 15 16 16 16 15 +CH44 15 16 16 16 15 +CH48 15 16 16 16 15 +# 5G Band 2 +CH52 15 16 16 16 15 +CH56 15 16 16 16 15 +CH60 15 16 16 16 15 +CH64 15 16 16 16 15 +# 5G Band 3 +CH100 NA 16 16 16 15 +CH104 NA 16 16 16 15 +CH108 NA 16 16 16 15 +CH112 NA 16 16 16 15 +CH116 NA 16 16 16 15 +CH120 NA 16 16 16 15 +CH124 NA 16 16 16 15 +CH128 NA 16 16 16 15 +CH132 NA 16 16 16 15 +CH136 NA 16 16 16 15 +CH140 NA 16 16 16 15 +CH144 NA NA 16 16 15 +# 5G Band 4 +CH149 16 16 11 NA 11 +CH153 16 16 11 NA 11 +CH157 16 16 11 NA 11 +CH161 16 16 11 NA 11 +CH165 16 16 11 NA 11 +## END + +# Table 4: +## 5G, 40M,#5# +## START +## SRRC FCC ETSI JP UNSET +# 5G Band 1 +CH38 15 16 16 16 15 +CH46 15 16 16 16 15 +# 5G Band 2 +CH54 15 16 16 16 15 +CH62 15 16 16 16 15 +# 5G Band 3 +CH102 NA 16 16 16 15 +CH110 NA 16 16 16 15 +CH118 NA 16 16 16 15 +CH126 NA 16 16 16 15 +CH134 NA 16 16 16 15 +CH142 NA 16 NA 16 15 +# 5G Band 4 +CH151 16 16 11 NA 11 +CH159 16 16 11 NA 11 +## END + +# Table 5: +## 5G, 80M,#5# +## START +## SRRC FCC ETSI JP UNSET +# 5G Band 1 +CH42 15 16 16 16 15 +# 5G Band 2 +CH58 15 16 16 16 15 +# 5G Band 3 +CH106 NA 16 16 16 15 +CH122 NA 16 16 16 15 +CH138 NA 16 NA NA 15 +# 5G Band 4 +CH155 16 16 11 NA 11 +## END + diff --git a/fw/aic8800DC/aic_userconfig_8800dc.txt b/fw/aic8800DC/aic_userconfig_8800dc.txt new file mode 100644 index 0000000..9e4bea6 --- /dev/null +++ b/fw/aic8800DC/aic_userconfig_8800dc.txt @@ -0,0 +1,62 @@ +# AIC USERCONFIG 2022/0803/1707 + +# txpwr_lvl +enable=1 +lvl_11b_11ag_1m_2g4=20 +lvl_11b_11ag_2m_2g4=20 +lvl_11b_11ag_5m5_2g4=20 +lvl_11b_11ag_11m_2g4=20 +lvl_11b_11ag_6m_2g4=20 +lvl_11b_11ag_9m_2g4=20 +lvl_11b_11ag_12m_2g4=20 +lvl_11b_11ag_18m_2g4=20 +lvl_11b_11ag_24m_2g4=18 +lvl_11b_11ag_36m_2g4=18 +lvl_11b_11ag_48m_2g4=16 +lvl_11b_11ag_54m_2g4=16 +lvl_11n_11ac_mcs0_2g4=20 +lvl_11n_11ac_mcs1_2g4=20 +lvl_11n_11ac_mcs2_2g4=20 +lvl_11n_11ac_mcs3_2g4=20 +lvl_11n_11ac_mcs4_2g4=18 +lvl_11n_11ac_mcs5_2g4=18 +lvl_11n_11ac_mcs6_2g4=16 +lvl_11n_11ac_mcs7_2g4=16 +lvl_11n_11ac_mcs8_2g4=16 +lvl_11n_11ac_mcs9_2g4=16 +lvl_11ax_mcs0_2g4=20 +lvl_11ax_mcs1_2g4=20 +lvl_11ax_mcs2_2g4=20 +lvl_11ax_mcs3_2g4=20 +lvl_11ax_mcs4_2g4=18 +lvl_11ax_mcs5_2g4=18 +lvl_11ax_mcs6_2g4=16 +lvl_11ax_mcs7_2g4=16 +lvl_11ax_mcs8_2g4=16 +lvl_11ax_mcs9_2g4=16 +lvl_11ax_mcs10_2g4=15 +lvl_11ax_mcs11_2g4=15 + +# txpwr_loss +loss_enable_2g4=0 +loss_value_2g4=2 +loss_enable_5g=0 +loss_value_5g=5 + +# txpwr_ofst +ofst_enable=0 +ofst_chan_1_4=0 +ofst_chan_5_9=0 +ofst_chan_10_13=0 +ofst_chan_36_64=0 +ofst_chan_100_120=0 +ofst_chan_122_140=0 +ofst_chan_142_165=0 + +# xtal cap +xtal_enable=0 +xtal_cap=24 +xtal_cap_fine=31 + + + diff --git a/fw/aic8800DC/aic_userconfig_8800dw.txt b/fw/aic8800DC/aic_userconfig_8800dw.txt new file mode 100644 index 0000000..9e4bea6 --- /dev/null +++ b/fw/aic8800DC/aic_userconfig_8800dw.txt @@ -0,0 +1,62 @@ +# AIC USERCONFIG 2022/0803/1707 + +# txpwr_lvl +enable=1 +lvl_11b_11ag_1m_2g4=20 +lvl_11b_11ag_2m_2g4=20 +lvl_11b_11ag_5m5_2g4=20 +lvl_11b_11ag_11m_2g4=20 +lvl_11b_11ag_6m_2g4=20 +lvl_11b_11ag_9m_2g4=20 +lvl_11b_11ag_12m_2g4=20 +lvl_11b_11ag_18m_2g4=20 +lvl_11b_11ag_24m_2g4=18 +lvl_11b_11ag_36m_2g4=18 +lvl_11b_11ag_48m_2g4=16 +lvl_11b_11ag_54m_2g4=16 +lvl_11n_11ac_mcs0_2g4=20 +lvl_11n_11ac_mcs1_2g4=20 +lvl_11n_11ac_mcs2_2g4=20 +lvl_11n_11ac_mcs3_2g4=20 +lvl_11n_11ac_mcs4_2g4=18 +lvl_11n_11ac_mcs5_2g4=18 +lvl_11n_11ac_mcs6_2g4=16 +lvl_11n_11ac_mcs7_2g4=16 +lvl_11n_11ac_mcs8_2g4=16 +lvl_11n_11ac_mcs9_2g4=16 +lvl_11ax_mcs0_2g4=20 +lvl_11ax_mcs1_2g4=20 +lvl_11ax_mcs2_2g4=20 +lvl_11ax_mcs3_2g4=20 +lvl_11ax_mcs4_2g4=18 +lvl_11ax_mcs5_2g4=18 +lvl_11ax_mcs6_2g4=16 +lvl_11ax_mcs7_2g4=16 +lvl_11ax_mcs8_2g4=16 +lvl_11ax_mcs9_2g4=16 +lvl_11ax_mcs10_2g4=15 +lvl_11ax_mcs11_2g4=15 + +# txpwr_loss +loss_enable_2g4=0 +loss_value_2g4=2 +loss_enable_5g=0 +loss_value_5g=5 + +# txpwr_ofst +ofst_enable=0 +ofst_chan_1_4=0 +ofst_chan_5_9=0 +ofst_chan_10_13=0 +ofst_chan_36_64=0 +ofst_chan_100_120=0 +ofst_chan_122_140=0 +ofst_chan_142_165=0 + +# xtal cap +xtal_enable=0 +xtal_cap=24 +xtal_cap_fine=31 + + + diff --git a/fw/aic8800DC/aic_userconfig_8800dw_u2.txt b/fw/aic8800DC/aic_userconfig_8800dw_u2.txt new file mode 100644 index 0000000..868dffb --- /dev/null +++ b/fw/aic8800DC/aic_userconfig_8800dw_u2.txt @@ -0,0 +1,62 @@ +# AIC USERCONFIG 2022/0803/1707 + +# txpwr_lvl +enable=1 +lvl_11b_11ag_1m_2g4=19 +lvl_11b_11ag_2m_2g4=19 +lvl_11b_11ag_5m5_2g4=19 +lvl_11b_11ag_11m_2g4=19 +lvl_11b_11ag_6m_2g4=19 +lvl_11b_11ag_9m_2g4=19 +lvl_11b_11ag_12m_2g4=19 +lvl_11b_11ag_18m_2g4=19 +lvl_11b_11ag_24m_2g4=18 +lvl_11b_11ag_36m_2g4=18 +lvl_11b_11ag_48m_2g4=16 +lvl_11b_11ag_54m_2g4=16 +lvl_11n_11ac_mcs0_2g4=18 +lvl_11n_11ac_mcs1_2g4=18 +lvl_11n_11ac_mcs2_2g4=18 +lvl_11n_11ac_mcs3_2g4=18 +lvl_11n_11ac_mcs4_2g4=18 +lvl_11n_11ac_mcs5_2g4=18 +lvl_11n_11ac_mcs6_2g4=18 +lvl_11n_11ac_mcs7_2g4=17 +lvl_11n_11ac_mcs8_2g4=16 +lvl_11n_11ac_mcs9_2g4=16 +lvl_11ax_mcs0_2g4=17 +lvl_11ax_mcs1_2g4=17 +lvl_11ax_mcs2_2g4=17 +lvl_11ax_mcs3_2g4=17 +lvl_11ax_mcs4_2g4=17 +lvl_11ax_mcs5_2g4=17 +lvl_11ax_mcs6_2g4=16 +lvl_11ax_mcs7_2g4=16 +lvl_11ax_mcs8_2g4=16 +lvl_11ax_mcs9_2g4=16 +lvl_11ax_mcs10_2g4=15 +lvl_11ax_mcs11_2g4=15 + +# txpwr_loss +loss_enable_2g4=0 +loss_value_2g4=2 +loss_enable_5g=0 +loss_value_5g=5 + +# txpwr_ofst +ofst_enable=0 +ofst_chan_1_4=0 +ofst_chan_5_9=0 +ofst_chan_10_13=0 +ofst_chan_36_64=0 +ofst_chan_100_120=0 +ofst_chan_122_140=0 +ofst_chan_142_165=0 + +# xtal cap +xtal_enable=0 +xtal_cap=24 +xtal_cap_fine=31 + + + diff --git a/fw/aic8800DC/aic_userconfig_8800dw_w311.txt b/fw/aic8800DC/aic_userconfig_8800dw_w311.txt new file mode 100644 index 0000000..13154ef --- /dev/null +++ b/fw/aic8800DC/aic_userconfig_8800dw_w311.txt @@ -0,0 +1,62 @@ +# AIC USERCONFIG 2022/0803/1707 + +# txpwr_lvl +enable=1 +lvl_11b_11ag_1m_2g4=21 +lvl_11b_11ag_2m_2g4=21 +lvl_11b_11ag_5m5_2g4=21 +lvl_11b_11ag_11m_2g4=21 +lvl_11b_11ag_6m_2g4=21 +lvl_11b_11ag_9m_2g4=21 +lvl_11b_11ag_12m_2g4=21 +lvl_11b_11ag_18m_2g4=21 +lvl_11b_11ag_24m_2g4=21 +lvl_11b_11ag_36m_2g4=20 +lvl_11b_11ag_48m_2g4=19 +lvl_11b_11ag_54m_2g4=19 +lvl_11n_11ac_mcs0_2g4=21 +lvl_11n_11ac_mcs1_2g4=21 +lvl_11n_11ac_mcs2_2g4=21 +lvl_11n_11ac_mcs3_2g4=21 +lvl_11n_11ac_mcs4_2g4=21 +lvl_11n_11ac_mcs5_2g4=20 +lvl_11n_11ac_mcs6_2g4=19 +lvl_11n_11ac_mcs7_2g4=19 +lvl_11n_11ac_mcs8_2g4=18 +lvl_11n_11ac_mcs9_2g4=18 +lvl_11ax_mcs0_2g4=21 +lvl_11ax_mcs1_2g4=21 +lvl_11ax_mcs2_2g4=21 +lvl_11ax_mcs3_2g4=21 +lvl_11ax_mcs4_2g4=21 +lvl_11ax_mcs5_2g4=20 +lvl_11ax_mcs6_2g4=19 +lvl_11ax_mcs7_2g4=19 +lvl_11ax_mcs8_2g4=18 +lvl_11ax_mcs9_2g4=18 +lvl_11ax_mcs10_2g4=17 +lvl_11ax_mcs11_2g4=17 + +# txpwr_loss +loss_enable_2g4=0 +loss_value_2g4=2 +loss_enable_5g=0 +loss_value_5g=5 + +# txpwr_ofst +ofst_enable=0 +ofst_chan_1_4=0 +ofst_chan_5_9=0 +ofst_chan_10_13=0 +ofst_chan_36_64=0 +ofst_chan_100_120=0 +ofst_chan_122_140=0 +ofst_chan_142_165=0 + +# xtal cap +xtal_enable=0 +xtal_cap=24 +xtal_cap_fine=31 + + + diff --git a/fw/aic8800DC/fmacfw_calib_8800dc_h_u02.bin b/fw/aic8800DC/fmacfw_calib_8800dc_h_u02.bin new file mode 100644 index 0000000000000000000000000000000000000000..a067e5a1e719367a7bbe10974b05a5c01a8a0bdf GIT binary patch literal 32684 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 literal 0 HcmV?d00001 diff --git a/fw/aic8800DC/fmacfw_patch_8800dc_h_u02.bin b/fw/aic8800DC/fmacfw_patch_8800dc_h_u02.bin new file mode 100644 index 0000000000000000000000000000000000000000..69a64e6830983a9523741a1eb497246574b85d7a GIT binary patch literal 26116 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 Q=6`CkpI$f3&zN`qH*>)^F8}}l literal 0 HcmV?d00001 diff --git a/fw/aic8800DC/fmacfw_patch_8800dc_u02.bin b/fw/aic8800DC/fmacfw_patch_8800dc_u02.bin new file mode 100644 index 0000000000000000000000000000000000000000..ccb91b360c1f8415b828b6df1912fb980ebb119f GIT binary patch literal 23356 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 literal 0 HcmV?d00001 diff --git a/fw/aic8800DC/fmacfw_patch_tbl_8800dc_ipc_u02.bin b/fw/aic8800DC/fmacfw_patch_tbl_8800dc_ipc_u02.bin new file mode 100644 index 0000000000000000000000000000000000000000..df2573d0b8a30551cb68f71a53116f0a7938f4be GIT binary patch literal 504 zcmcJ~y-EW?6b0Z@7)=x+Q;1hlnBWhIAehZYmPJs(fY?P;R2FrEB7wvz>Cy-mTcj|Z z7J`irAed6v!a@t*z{192!NT+kp2c|ux7d%lcjn9;v;_64-e{ibysfPTtH7UIv|P*4 z^ZL}!TNS(F)bU?mkW?tA1)nt96f|gu>)n2Z%&6dPK;fRg)AG2$VZTc+`xHhN1)4^) zf;LTL1p&`>a)OZiUklt%OGUv}LLub{uHw99=5pT;*B7j>x;#h6mIOBI=X*RyqkTb* z_kDPRZ}w*n1YdE^p&-ltbxH8Ver8SZOmi!ooB21sz~j1i!h7-e4$rtw2oy}+~ZRK>v@zR!O z*?K{rxR#xF9T)%hnjwX7RPaT9t_fpE@hh z)vT?GVJFe}HW*ji}YZLHxi9DJW!!5UWF=9Xd)8 zRB9n^!O1}+*nmQpf>EO=INZTOP-@W-0)F5i`k0G$Xa>KQLSOjZ^K#DfKIfdv%PCF@ zTD}S{Blb`beIR(3Cvch0e8Bx@{Zi+BERZ5WfW*i}xXT1<6@up;@>F0q3CjBfgTy}~ z*doDiq@Q&wtRp9@0`EGt1q#)#$s2`@I)&D8g(q_gJF^POh|2n>zG!?J(byZ)NRc$j zkmiVnJE|cw8mB)rIyx0>Qr4!h)z11Zg;=-avEf(PJfc3N5GKAsg`TiN=z~IFfcr5| zxD9xUjO?CXTW7~ypXk2EVcJXa7L5o^QaYAVUhrZr>-dDZwm>lj}xw$La5( z1ry<)H}7@Vq98<4Buz5Jza*Gm7SuLbup2D|$ekZbH`^111{}oTo=Me`B(C@tISEN-U8>4_IW=5 literal 0 HcmV?d00001 diff --git a/fw/aic8800DC/fw_adid_8800dc_u02h.bin b/fw/aic8800DC/fw_adid_8800dc_u02h.bin new file mode 100644 index 0000000000000000000000000000000000000000..e3bc1f0d45480da71d050709820aee098922ad32 GIT binary patch literal 1476 zcmeH{J!n%=6vuyloO@p`L>f@UA$}kQD~OXrh7LsoMhNwTDiMM{B+#XUI+Q9!GdOf` zs8C}lg*p`Kpb{iP3JQe|EgESM2f+>rWm-rpw=1f7E@UHyk;BRnLn3J?4;uO&8&YG2wqaBEFWj)ibC&yg zOF?;{6qW3-=0`294=vFNOXaK~=^OgfhK@6;KWAvk1RjY_!?mhvx()NnqsxYwD~7i{ zhS^J6@2cT^lgHFHuU<3p%GTeF9{xw|<5RHT_TDnHU`f2QWZqbM7A^jl#@g84z`NS3 zbvi>_9||?HU(;MH6QXeI@9Qj;g#NLg=V48o{crZq{(*2(7`Ul-f)dXC`J8;dCoC#e zX0L=)FQv#s{>SgBjDEjACp}7@uQ3g OO)IjmD=XOF4&MNgReYxa literal 0 HcmV?d00001 diff --git a/fw/aic8800DC/fw_patch_8800dc_u02.bin b/fw/aic8800DC/fw_patch_8800dc_u02.bin new file mode 100644 index 0000000000000000000000000000000000000000..0d6131f31b28079cbaafd79c81bdfac47330669a GIT binary patch literal 16592 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