联系邮箱:li_cloud6630@qq.com
如果你有一台配置比较高的MT7981,比如你的存储是snor+emmc或者emmc,你的内存1GB。那么在双核MT7981 1.3GHz主频下,单纯运行OpenWrt有一点点亏但不多。如果可以运行Ubuntu的话,相当于硬路由软吃,既可以发挥硬路由在硬件上的优势,又可以和Ubuntu的生态结合起来,从而起到一举两得的效果。
如果觉得MT7981性能还不够,可以运行MT7986,MT7988,步骤什么的都是一样的。
然后内核的配置选项可以多开一些,把能用得到的都编译到内核镜像中去就可以,当然在openwrt中我们不一定需要这么做,但是在运行其它系统时还是尽可能的全一些,比如网络功能,比如通用的驱动等等。
内核WIFI驱动移植
移植过程中注意,尽可能的不要去改动代码里面原生的一些CONFIG选项的名称,各个模块互相有依赖,修改后容易出现编译不过或者功能不全的情况。
移植WIFI驱动CONNINFRA
从build_dir目录中复制conninfra驱动到内核代码的drivers/net/wireless/mediatek/里面,然后目录里面有很多杂质要去了。
进入目录:
plain
$ find ./ -name "*.o" | xargs rm
$ find ./ -name "*.ko" | xargs rm
$ rm -rf .built* .con* .dep_files ipkg-aarch64_cortex-a53/ modules.order Module.symvers.tmp .pkgdir/ .prepared_be70f257b2e0b236890547576296f53a_6664517399ebbbc92a37c5bb081b5c53*
$ rm conninfra.mod*
可以了,这样清爽了很多。在conninfra目录中已经包含makefile了,这样的话,我们需要添加一个Kconfig。在上层目录中的Makefile和Kconfig也需要添加上对应目录的编译。
conninfra的Kconfig
在package/mtk/drivers/conninfra/Makefile文件中有如下描述:
plain
define KernelPackage/conninfra/config
if PACKAGE_kmod-conninfra
config MTK_CONNINFRA_APSOC
bool "Conninfra APSOC Only"
default n
if MTK_CONNINFRA_APSOC
choice
prompt "Choose APSOC Chip"
config MTK_CONNINFRA_APSOC_MT7986
bool "MT7986"
config MTK_CONNINFRA_APSOC_MT7981
bool "MT7981"
endchoice
config CONNINFRA_EMI_SUPPORT
bool "EMI Support"
default n
config FPGA_EARLY_PORTING
bool "Only for FPGA Stage"
default n
config CONNINFRA_AUTO_UP
bool "Conninfra Up by Self"
default n
endif
endif
endef
我们Kconfig就是从这里改过来的。按照内核的格式改动后应该是这样的:
plain
menuconfig CONNINFRA_SUPPORT
tristate "MediaTek Filogic MT798x WIFI CONNINFRA"
default n
config MTK_CONNINFRA_APSOC
tristate "Conninfra APSOC Only"
depends on CONNINFRA_SUPPORT
default n
if MTK_CONNINFRA_APSOC
choice
prompt "Choose APSOC Chip"
config MTK_CONNINFRA_APSOC_MT7986
bool "MT7986"
config MTK_CONNINFRA_APSOC_MT7981
bool "MT7981"
endchoice
config CONNINFRA_EMI_SUPPORT
bool "EMI Support"
default n
config FPGA_EARLY_PORTING
bool "Only for FPGA Stage"
default n
config CONNINFRA_AUTO_UP
bool "Conninfra Up by Self"
default n
endif #MTK_CONNINFRA_APSOC
添加编译
在上层的Kconfig和Makefile中添加编译。
内核选项使能
这样的话,在执行menuconfig的时候,可以看到已经有了这个选项,而且选项里面跟OpenWrt是一样的。按照OpenWrt来选就可以。这里一定会出现很多很多的错误。
编译conninfra
正常编译内核即可。
ERROR 1\] ring.h: No such file or directory
```plain
AR drivers/net/wireless/mediatek/conninfra/built-in.a
CC [M] drivers/net/wireless/mediatek/conninfra/base/ring.o
drivers/net/wireless/mediatek/conninfra/base/ring.c:13:10: fatal error: ring.h: No such file or directory
13 | #include "ring.h"
| ^~~~~~~~
compilation terminated.
make[5]: *** [scripts/Makefile.build:262: drivers/net/wireless/mediatek/conninfra/base/ring.o] Error 1
make[4]: *** [scripts/Makefile.build:497: drivers/net/wireless/mediatek/conninfra] Error 2
make[3]: *** [scripts/Makefile.build:497: drivers/net/wireless/mediatek] Error 2
make[2]: *** [scripts/Makefile.build:497: drivers/net/wireless] Error 2
make[1]: *** [scripts/Makefile.build:497: drivers/net] Error 2
make: *** [Makefile:1750: drivers] Error 2
```
首先ring.h在base/include下面,找不到只能说明Makefile写的不对。我们修改的时候尽可能的以增量式的方式来适配,尽可能的不要出现大改动。
ring.h的头文件路径声明在这里:
```plain
###############################################################################
# common_main
###############################################################################
ccflags-y += \
-I$(SUBDIRS)/include \
-I$(SUBDIRS)/base/include \
-I$(SUBDIRS)/core/include \
-I$(SUBDIRS)/conf/include \
-I$(SUBDIRS)/platform/include
```
这里用了一个SUBDIRS的变量,在linux中该变量是不存在的。我们在上面给它赋值。
```plain
SUBDIRS := $(abs_srctree)/drivers/net/wireless/mediatek/conninfra
```
重新编译内核发现直接就成功了,那么看来这个模块还是很简单的就能移植上。
```plain
LD vmlinux
SORTEX vmlinux
SYSMAP System.map
Building modules, stage 2.
MODPOST 40 modules
CC [M] drivers/net/wireless/mediatek/conninfra/conninfra.mod.o
LD [M] drivers/net/wireless/mediatek/conninfra/conninfra.ko
OBJCOPY arch/arm64/boot/Image
GZIP arch/arm64/boot/Image.gz
```
###### 编译warp
跟上面的一样,先准备好代码,复制到目录里面。上层目录的Makefile和Kconfig不再说明,按照上面的添加方式加上就行了。
然后发现已经有Kconfig了但是不全,我们不用那个。使用package/mtk/drivers/warp/config.in并且改造一下:
```plain
menuconfig WARP_SUPPORT
tristate "WARP Driver Support"
default n
if WARP_SUPPORT
config WARP_VERSION
int "WARP Driver HW Version Support"
range 1 3
default 1 if TARGET_mediatek_mt7622
default 2 if TARGET_mediatek_mt7986
default 3 if TARGET_mediatek_mt7988
config WARP_DBG_SUPPORT
bool "WARP Driver Debug Info Support"
default y
config WED_HW_RRO_SUPPORT
bool "WED HW RRO Support"
default y
config MTK_MEMORY_SHRINK
bool "Memory Shrink"
default n
config WARP_MEMORY_LEAK_DBG
bool "Memory leak debug"
depends on !MTK_MEMORY_SHRINK && WARP_DBG_SUPPORT
default y
config WARP_CHIPSET
string "WARP target chipset"
default mt7988
help
For colgin: colgin, for panther: mt7986, for jaguar: mt7988
config WARP_WO_EMBEDDED_LOAD
bool "Emebedded MCU firmware support"
default n
help
Once enabled, firmware download flow try embedded version once externel version being invalid.
endif #WARP_SUPPORT
```

这样就看着跟op是一样的了。保存退出,编译一下看看。
\[ERROR 1\] fatal error: warp_cfg.h: No such file or directory
估计跟上面的错误是一样的,Makefile中添加:
```plain
PKG_BUILD_DIR := $(abs_srctree)/drivers/net/wireless/mediatek/warp/
```
然后编译成功了,又出现错误了。
\[ERROR 2\] undefined
```plain
ERROR: "warp_get_wo_emi_node" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_wo_set_apsrc_idle" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_bus_set_hw" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_fwdl_reset" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_wo_pc_lr_cr_dump" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_wo_reset" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "bus_setup" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_wed_rro_init" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_get_wo_ilm_node" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_eint_ctrl_hw" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_wdma_int_sel" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_whole_chip_wo_reset" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_fwdl_get_wo_heartbeat" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_bus_msi_set" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_get_dts_idx" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_fwdl_write_start_address" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
ERROR: "warp_get_pcie_slot" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined!
make[1]: *** [scripts/Makefile.modpost:93: __modpost] Error 1
make: *** [Makefile:1340: modules] Error 2
```
应该是哪个文件没编译进去。查一下warp_get_wo_emi_node这个吧。因为我们编译的是mt7981,然后敏锐的发现在类似warp_mt7981.c文件中得到了定义。这么看的话,是这个文件没有参与编译。在Makefle中有如下描述:

但是上面有:

这里是带引号的字符串。

上面的判断加上引号就可以了。

成了。
###### 编译mt_wifi
这个是最复杂,最难的一个。
老样子,复制过去,先处理代码。代码中没有Makefifle,Kconfig,新建这两个文件。
然后Kconfig也是按照package/mtk/drivers/mt_wifi/config.in来,不过看下面的规则,需要处理一下,把MTK_去掉。

里面还有一些跟KMOD相关的,也要替换成对应的内核的CONFIG。
太长了,修改完如下所示:
```plain
menuconfig MT_WIFI_SUPPORT
tristate "MTK wifi AP driver"
default n
config SUPPORT_OPENWRT
bool
default y
depends on MT_WIFI_SUPPORT
config WIFI_DRIVER
bool
default y
depends on MT_WIFI_SUPPORT
select WIFI_MT_MAC
select MT_MAC
#select FIRST_IF_MT7615E
#select CHIP_MT7622
#select CHIP_MT7626
#select SECOND_IF_MT7615E
#select THIRD_IF_MT7615E
#select CHIP_MT7615E
if WIFI_DRIVER
choice
prompt "Choose First WiFi Interface"
config FIRST_IF_NONE
bool "None"
config FIRST_IF_MT7615E
bool "MT7615E"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7615E
config FIRST_IF_MT7622
bool "MT7622"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7622
config FIRST_IF_MT7626
bool "MT7626"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7626
config FIRST_IF_AXE
bool "MT6867"
select WIFI_MT_MAC
select MT_MAC
select CHIP_AXE
config FIRST_IF_MT7915
bool "MT7915"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7915
config FIRST_IF_MT7986
bool "MT7986"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7986
config FIRST_IF_MT7916
bool "MT7916"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7916
config FIRST_IF_MT7981
bool "MT7981"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7981
endchoice
choice
prompt "Choose Second WiFi Interface"
config SECOND_IF_NONE
bool "None"
config SECOND_IF_MT7615E
bool "MT7615E"
select WIFI_MT_MAC
select CHIP_MT7615E
select MULTI_INF_SUPPORT
config SECOND_IF_AXE
bool "MT6867"
select WIFI_MT_MAC
select MT_MAC
select CHIP_AXE
config SECOND_IF_MT7915
bool "MT7915"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7915
config SECOND_IF_MT7916
bool "MT7916"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7916
endchoice
choice
prompt "Choose Third WiFi Interface"
config THIRD_IF_NONE
bool "None"
config THIRD_IF_MT7615E
bool "MT7615E"
select WIFI_MT_MAC
select CHIP_MT7615E
select MULTI_INF_SUPPORT
config THIRD_IF_MT7915
bool "MT7915"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7915
select MULTI_INF_SUPPORT
config THIRD_IF_MT7916
bool "MT7916"
select WIFI_MT_MAC
select MT_MAC
select CHIP_MT7916
select MULTI_INF_SUPPORT
endchoice
config RT_FIRST_CARD
int
depends on ! FIRST_IF_NONE
default 7615 if FIRST_IF_MT7615E
default 7622 if FIRST_IF_MT7622
default 7626 if FIRST_IF_MT7626
default 6867 if FIRST_IF_AXE
config RT_SECOND_CARD
int
depends on ! SECOND_IF_NONE
default 7615 if SECOND_IF_MT7615E
default 6867 if SECOND_IF_AXE
config RT_THIRD_CARD
int
depends on ! THIRD_IF_NONE
default 7615 if THIRD_IF_MT7615E
config RT_FIRST_IF_RF_OFFSET
hex
depends on ! FIRST_IF_NONE
default 0xc0000
config RT_SECOND_IF_RF_OFFSET
hex
depends on ! SECOND_IF_NONE
default 0xc8000
config RT_THIRD_IF_RF_OFFSET
hex
depends on ! THIRD_IF_NONE
default 0xd0000
config MT_WIFI
tristate "MT WIFI Driver"
select WIFI_BASIC_FUNC if MT_WIFI
config MT_WIFI_PATH
string
depends on MT_WIFI
default "mt_wifi"
if MT_WIFI
choice
prompt "MT_WIFI DRIVER VERSION"
default MT_WIFI_DRIVER_VERSION_7672
config MT_WIFI_DRIVER_VERSION_7661
bool "7.6.6.1"
config MT_WIFI_DRIVER_VERSION_7672
bool "7.6.7.2"
endchoice
choice
prompt "MT7916 custom WACPU firmware"
depends on CHIP_MT7916
default MT_WIFI_MT7916_20240823
config MT_WIFI_MT7916_DEFAULT_FIRMWARE
bool "default firmware"
config MT_WIFI_MT7916_20221208
bool "mt7916-fw-20221208"
config MT_WIFI_MT7916_20240823
bool "mt7916-fw-20240823"
endchoice
choice
prompt "MT7981 custom WACPU firmware"
depends on CHIP_MT7981
default MT_WIFI_MT7981_20240823
config MT_WIFI_MT7981_DEFAULT_FIRMWARE
bool "default firmware"
config MT_WIFI_MT7981_20230306
bool "mt7981-fw-20230306"
config MT_WIFI_MT7981_20230330
bool "mt7981-fw-20230330"
config MT_WIFI_MT7981_20230411
bool "mt7981-fw-20230411"
config MT_WIFI_MT7981_20230717
bool "mt7981-fw-20230717"
config MT_WIFI_MT7981_20231024
bool "mt7981-fw-20231024"
config MT_WIFI_MT7981_20240823
bool "mt7981-fw-20240823"
endchoice
choice
prompt "MT7986 custom WACPU firmware"
depends on CHIP_MT7986
default MT_WIFI_MT7986_20240823
config MT_WIFI_MT7986_DEFAULT_FIRMWARE
bool "default firmware"
config MT_WIFI_MT7986_20221208
bool "mt7986-fw-20221208"
config MT_WIFI_MT7986_20230421
bool "mt7986-fw-20230421"
config MT_WIFI_MT7986_20230808
bool "mt7986-fw-20230808"
config MT_WIFI_MT7986_20231024
bool "mt7986-fw-20231024"
config MT_WIFI_MT7986_20240823
bool "mt7986-fw-20240823"
endchoice
config MT_WIFI_FIRMWARE_PATH_MT7916
string
default mt7916-fw-20221208 if MT_WIFI_MT7916_20221208
default mt7916-fw-20240823 if MT_WIFI_MT7916_20240823
config MT_WIFI_FIRMWARE_PATH_MT7981
string
default mt7981-fw-20230306 if MT_WIFI_MT7981_20230306
default mt7981-fw-20230330 if MT_WIFI_MT7981_20230330
default mt7981-fw-20230411 if MT_WIFI_MT7981_20230411
default mt7981-fw-20230717 if MT_WIFI_MT7981_20230717
default mt7981-fw-20231024 if MT_WIFI_MT7981_20231024
default mt7981-fw-20240823 if MT_WIFI_MT7981_20240823
config MT_WIFI_FIRMWARE_PATH_MT7986
string
default mt7986-fw-20221208 if MT_WIFI_MT7986_20221208
default mt7986-fw-20230421 if MT_WIFI_MT7986_20230421
default mt7986-fw-20230808 if MT_WIFI_MT7986_20230808
default mt7986-fw-20231024 if MT_WIFI_MT7986_20231024
default mt7986-fw-20240823 if MT_WIFI_MT7986_20240823
config FW_NEW_API_PATCH
bool
depends on MT_WIFI_DRIVER_VERSION_7661
default y if !(MT_WIFI_MT7981_DEFAULT_FIRMWARE || MT_WIFI_MT7986_DEFAULT_FIRMWARE)
menu "WiFi Generic Feature Options"
choice
prompt "EEPROM Type of 1st Card"
depends on ! FIRST_IF_NONE
config FIRST_IF_EEPROM_FLASH
bool "FLASH"
config FIRST_IF_EEPROM_PROM
bool "EEPROM"
config FIRST_IF_EEPROM_EFUSE
bool "EFUSE"
endchoice
config RT_FIRST_CARD_EEPROM
string
depends on ! FIRST_IF_NONE
default "prom" if FIRST_IF_EEPROM_PROM
default "efuse" if FIRST_IF_EEPROM_EFUSE
default "flash" if FIRST_IF_EEPROM_FLASH
choice
prompt "EEPROM Type of 2nd Card"
depends on ! SECOND_IF_NONE
config SECOND_IF_EEPROM_FLASH
bool "FLASH"
config SECOND_IF_EEPROM_PROM
bool "EEPROM"
config SECOND_IF_EEPROM_EFUSE
bool "EFUSE"
endchoice
config RT_SECOND_CARD_EEPROM
string
depends on ! SECOND_IF_NONE
default "prom" if SECOND_IF_EEPROM_PROM
default "efuse" if SECOND_IF_EEPROM_EFUSE
default "flash" if SECOND_IF_EEPROM_FLASH
choice
prompt "EEPROM Type of 3th Card"
depends on ! THIRD_IF_NONE
config THIRD_IF_EEPROM_FLASH
bool "FLASH"
config THIRD_IF_EEPROM_PROM
bool "EEPROM"
config THIRD_IF_EEPROM_EFUSE
bool "EFUSE"
endchoice
config RT_THIRD_CARD_EEPROM
string
depends on ! THIRD_IF_NONE
default "prom" if THIRD_IF_EEPROM_PROM
default "efuse" if THIRD_IF_EEPROM_EFUSE
default "flash" if THIRD_IF_EEPROM_FLASH
config MULTI_INF_SUPPORT
bool
default y if !FIRST_IF_NONE && !SECOND_IF_NONE
config WIFI_BASIC_FUNC
bool "Basic Functions"
select WIRELESS_EXT
select WEXT_SPY
select WEXT_PRIV
config DOT11_N_SUPPORT
bool "802.11n support"
default y
config DOT11_VHT_AC
bool "802.11AC support"
depends on WIFI_DRIVER
depends on DOT11_N_SUPPORT
default y
config DOT11_HE_AX
bool "802.11AX support"
depends on WIFI_DRIVER
depends on DOT11_VHT_AC
depends on CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
default y
config CFG_SUPPORT_FALCON_MURU
bool "MURU support"
depends on WIFI_DRIVER
depends on DOT11_VHT_AC
depends on CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
default y
config CFG_SUPPORT_FALCON_TXCMD_DBG
bool "TXCMD DBG support"
depends on WIFI_DRIVER
depends on DOT11_VHT_AC
depends on CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
default y
config CFG_SUPPORT_FALCON_SR
bool "SR(Spatial Reuse) support"
depends on WIFI_DRIVER
depends on CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
default y
config CFG_SUPPORT_FALCON_PP
bool "PP(Preamble Puncture) support"
depends on WIFI_DRIVER
depends on CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
default y
config WIFI_TWT_SUPPORT
bool "TWT(Target Wake Time) support"
depends on WIFI_DRIVER
depends on DOT11_HE_AX
depends on CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
default y
config G_BAND_256QAM_SUPPORT
bool "2.4G 256QAM support"
depends on WIFI_DRIVER
depends on DOT11_VHT_AC
default y
config BRCM_256QAM_SUPPORT
bool "BRCM 2.4G 256QAM support"
depends on WIFI_DRIVER
depends on G_BAND_256QAM_SUPPORT
default n
config VHT_TXBF_2G_EPIGRAM_IE_SUPPORT
bool "BRCM 2.4G VHT Sounding support"
depends on WIFI_DRIVER
default n
config TPC_SUPPORT
bool "802.11h TPC Support"
depends on WIFI_DRIVER
default y
config ICAP_SUPPORT
bool "ICAP Support"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT
default y
config SPECTRUM_SUPPORT
bool "Wifi Spectrum Support"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT
default y
config PHY_ICS_SUPPORT
bool "PHY ICS Support"
depends on WIFI_DRIVER
depends on CHIP_MT7986 || CHIP_MT7916
default y
config BACKGROUND_SCAN_SUPPORT
bool "Background Scan Support"
depends on WIFI_DRIVER
default y
config SMART_CARRIER_SENSE_SUPPORT
bool "Smart Carrier Sense Support"
depends on WIFI_DRIVER
default y
config THERMAL_PROTECT_SUPPORT
bool "THERMAL PROTECT SUPPORT"
depends on WIFI_DRIVER && SMART_CARRIER_SENSE_SUPPORT
default n
config SCS_FW_OFFLOAD
bool "SCS FW OFFLOAD Support"
depends on WIFI_DRIVER && SMART_CARRIER_SENSE_SUPPORT
default n
config MT_DFS_SUPPORT
bool "Dynamic Frequency Selection Support"
depends on WIFI_DRIVER
default y
config OFFCHANNEL_SCAN_FEATURE
bool "Channel Quality Monitor"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT
default n
#config WFA_VHT_R2_PF
# bool "WFA VHT R2 Plugfest"
# depends on DOT11_VHT_AC
# default n
config HDR_TRANS_TX_SUPPORT
bool "Tx Header Translation"
depends on CHIP_MT7615E || CHIP_MT7622 || CHIP_MT7626 || CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
default y
config HDR_TRANS_RX_SUPPORT
bool "Rx Header Translation"
depends on CHIP_MT7615E || CHIP_MT7622 || CHIP_MT7626 || CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
default y
config DBDC_MODE
bool "dbdc mode support"
depends on CHIP_MT7615E || CHIP_MT7626 || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
select MULTI_PROFILE_SUPPORT
select DEFAULT_5G_PROFILE
default y
config MULTI_PROFILE_SUPPORT
bool "Multi Profile Support"
depends on DBDC_MODE
default y
config DEFAULT_5G_PROFILE
bool "5G default profile for DBDC"
depends on DBDC_MODE
# depends on MULTI_PROFILE_SUPPORT
default y
config WSC_INCLUDED
bool "WSC (WiFi Simple Config)"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT || MT_STA_SUPPORT
default y
config WSC_V2_SUPPORT
bool "WSC V2(WiFi Simple Config Version 2.0)"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT || MT_STA_SUPPORT
default y
config DOT11W_PMF_SUPPORT
bool "PMF"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT || MT_STA_SUPPORT
default y
config TXBF_SUPPORT
bool "Tx Bean Forming Support"
depends on WIFI_DRIVER
default y
config FAST_NAT_SUPPORT
bool "Fast-NAT support"
# depends on RA_HW_NAT_WIFI
default n
config WHNAT_SUPPORT
tristate "Wifi Hardware NAT support"
depends on CHIP_MT7615E || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
depends on WLAN_HOOK
depends on FAST_NAT_SUPPORT
depends on NET_MEDIATEK_HNAT
default n
config WARP_V2
bool "Warp driver version 2 support"
depends on WARP_SUPPORT && WHNAT_SUPPORT
default n
config WIFI_SKB_USES_SLAB
bool "WiFi SKB allocation by SLAB"
depends on WIFI_DRIVER
default n
#config LLTD_SUPPORT
# bool "LLTD (Link Layer Topology Discovery Protocol)"
# depends on WIFI_DRIVER
# depends on MT_AP_SUPPORT
# default n
#config QOS_DLS_SUPPORT
# bool "802.11e DLS ((Direct-Link Setup) Support"
# depends on WIFI_DRIVER
# depends on MT_AP_SUPPORT
# default n
#config WAPI_SUPPORT
# bool "WAPI Support"
# depends on WIFI_DRIVER
# default n
config FTM_SUPPORT
bool "FTM Support"
depends on WIFI_DRIVER
select PASSPOINT_R2
default n
#config CARRIER_DETECTION_SUPPORT
# bool "Carrier Detect"
# depends on WIFI_DRIVER
# default n
config IGMP_SNOOP_SUPPORT
bool "IGMP snooping"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT
default y
config MEMORY_SHRINK
bool "Memory Shrink"
depends on WIFI_DRIVER
default n
config MEMORY_SHRINK_AGGRESS
bool "Memory Shrink Aggressive"
depends on MEMORY_SHRINK
default n
config RPS_EFFICIENCY
bool "RPS Efficiency"
depends on WIFI_DRIVER && CHIP_MT7626
default n
#config BLOCK_NET_IF
# bool "NETIF Block"
# depends on WIFI_DRIVER
# depends on MT_AP_SUPPORT
# default n
# help
# Support Net interface block while Tx-Sw queue full
#config RATE_ADAPTION
# bool "New Rate Adaptation support"
# depends on WIFI_DRIVER
# default y
#config NEW_RATE_ADAPT_SUPPORT
# bool "Intelligent Rate Adaption"
# depends on WIFI_DRIVER && RATE_ADAPTION
# default y
#config AGS_SUPPORT
# bool "Adaptive Group Switching"
# depends on WIFI_DRIVER && RATE_ADAPTION
# depends on MT_AP_SUPPORT || MT_STA_SUPPORT
# default n
#config RATE_ADAPT_AGBS_SUPPORT
# bool "Adaptive AGBS Mode"
# depends on WIFI_DRIVER && RATE_ADAPTION
# depends on MT_AP_SUPPORT || MT_STA_SUPPORT
# default y
#config IDS_SUPPORT
# bool "IDS (Intrusion Detection System) Support"
# depends on WIFI_DRIVER
# depends on MT_AP_SUPPORT
# default n
#config WIFI_WORK_QUEUE
# bool "Work Queue"
# depends on WIFI_DRIVER
# default n
#config WIFI_SKB_RECYCLE
# bool "SKB Recycle(Linux)"
# depends on WIFI_DRIVER
# depends on MT_AP_SUPPORT
# default n
config RTMP_FLASH_SUPPORT
bool "Flash Support"
depends on WIFI_DRIVER
default y
config PRE_CAL_TRX_SET1_SUPPORT
bool "Calibration To Flash/BinFile Support"
depends on WIFI_DRIVER
default y
config RLM_CAL_CACHE_SUPPORT
bool "RlmCalibrationCache Support"
depends on WIFI_DRIVER
default y
config PRE_CAL_TRX_SET2_SUPPORT
bool "Pre-calibration to Flash Support"
depends on WIFI_DRIVER
default y
config CAL_BIN_FILE_SUPPORT
bool "Calibration to BinFile Support"
depends on WIFI_DRIVER
default y
config RF_LOCKDOWN_SUPPORT
bool "RF Lockdown Support"
depends on WIFI_DRIVER
default n
config LINK_TEST_SUPPORT
bool "Link Test Support"
depends on WIFI_DRIVER
default n
#config LED_CONTROL_SUPPORT
# bool "LED Support"
# depends on WIFI_DRIVER
# depends on MT_AP_SUPPORT
# default n
config ATE_SUPPORT
bool "ATE/QA Support"
depends on WIFI_DRIVER
default y
config WLAN_SERVICE
bool "Wlan Service Library Support"
depends on WIFI_DRIVER
default n
#config MEMORY_OPTIMIZATION
# bool "Memory Optimization"
# depends on WIFI_DRIVER
# default n
config PASSPOINT_R2
bool "Passpoint Release-2 Support"
depends on WIFI_DRIVER
select DOT11W_PMF_SUPPORT
depends on MT_AP_SUPPORT
default n
config MBO_SUPPORT
bool "MBO Support"
depends on WIFI_DRIVER
select INTERWORKING
select WNM_SUPPORT
select DOT11K_RRM_SUPPORT
select DOT11R_FT_SUPPORT
select DOT11W_PMF_SUPPORT
default n
config OCE_SUPPORT
bool "Optimized Connectivity Experience Support"
depends on MT_AP_SUPPORT
depends on MBO_SUPPORT
depends on CHIP_MT7915 || CHIP_MT7986
default y
config WTBL_TDD_SUPPORT
bool "S/W WTBL TDD SWAP Support"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT
depends on CHIP_MT7915 || CHIP_MT7916 || CHIP_MT7986 || CHIP_MT7981
default n
config SW_CONNECT_SUPPORT
bool "Pure S/W STA Increase Connection Support"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT
depends on CHIP_MT7915 || CHIP_MT7916 || CHIP_MT7986 || CHIP_MT7981
default n
config MAP_SUPPORT
bool "MAP Support"
depends on WIFI_DRIVER
select INTERWORKING
select WNM_SUPPORT
select DOT11K_RRM_SUPPORT
select DOT11R_FT_SUPPORT
select DOT11W_PMF_SUPPORT
default n
config MAP_R2_VER_SUPPORT
bool "Multi-AP R2 version support"
depends on MAP_SUPPORT
default n
config MAP_R3_VER_SUPPORT
bool "Multi-AP R3 version support"
depends on MAP_SUPPORT
depends on MAP_R2_VER_SUPPORT
default n
config MAP_R2_6E_SUPPORT
bool "Multi-AP R2 6E support"
depends on MAP_SUPPORT
default n
config MAP_R3_6E_SUPPORT
bool "Multi-AP R3 6E support"
depends on MAP_SUPPORT
depends on MAP_R2_6E_SUPPORT
default n
#config TRACE_TCP_PKT
# bool "TCP DATA/ACK packets trace log"
# depends on WIFI_DRIVER
# default n
config UAPSD
bool "UAPSD support"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT || MT_STA_SUPPORT
default y
config TCP_RACK_SUPPORT
bool "TCP Reduced ACK support"
depends on WIFI_DRIVER
default n
#### PA_LNA_Type choice
config RED_SUPPORT
bool "RED(Random Early Drop) support"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT || MT_STA_SUPPORT
default y
config FQ_SCH_SUPPORT
bool "Fair Queueing support"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT && VOW_SUPPORT
depends on CHIP_MT7622
default y
config CTXD_MEM_CPY_SUPPORT
bool "CTXD(sw mode) support"
depends on WIFI_DRIVER
default n
config CTXD_SCATTER_AND_GATHER_SUPPORT
bool "CTXD(hw mode) support"
depends on WIFI_DRIVER
default n
config FDB_SUPPORT
bool "FW Debug Port"
depends on WIFI_DRIVER
default n
choice
prompt "PA LNA Type of 1st Card"
depends on ! FIRST_IF_NONE
config FIRST_IF_EPAELNA
bool "ePAeLNA"
config FIRST_IF_IPAILNA
bool "iPAiLNA"
config FIRST_IF_IPAELNA
bool "iPAeLNA"
# config FIRST_IF_EPAILNA
# bool "ePAiLNA"
endchoice
choice
prompt "PA LNA Type of 2nd Card"
depends on ! SECOND_IF_NONE
config SECOND_IF_EPAELNA
bool "ePAeLNA"
config SECOND_IF_IPAILNA
bool "iPAiLNA"
config SECOND_IF_IPAELNA
bool "iPAeLNA"
# config SECOND_IF_EPAILNA
# bool "ePAiLNA"
endchoice
choice
prompt "PA LNA Type of 3rd Card"
depends on ! THIRD_IF_NONE
config THIRD_IF_EPAELNA
bool "ePAeLNA"
config THIRD_IF_IPAILNA
bool "iPAiLNA"
config THIRD_IF_IPAELNA
bool "iPAeLNA"
# config THIRD_IF_EPAILNA
# bool "ePAiLNA"
endchoice
#### PA_LNA_Type choice END
config WIFI_FW_BIN_LOAD
depends on CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
bool "load wifi fw with bin file"
default n
config WIFI_SKU_TYPE
depends on CHIP_MT7986
string "Panther SKU Type : AX6000 or AX7800 or SADBDC"
default "AX6000"
config WIFI_ADIE_TYPE
depends on CHIP_MT7986
string "Panther ADIE Type : mt7975 or mt7976"
default "mt7976"
#
# Section for chip architectures
#
# "RLT MAC Support"
config RLT_MAC
bool
depends on WIFI_DRIVER
default n
config RLT_BBP
bool
config RLT_RF
bool
# "RTMP MAC Support"
config RTMP_MAC
bool
depends on WIFI_DRIVER
default n
config RTMP_BBP
bool
config RTMP_RF
bool
#
# Section for interfaces
#
config RTMP_PCI_SUPPORT
bool
config RTMP_USB_SUPPORT
bool
config RTMP_RBUS_SUPPORT
bool
endmenu
menu "WiFi Operation Modes"
choice
prompt "Main Mode"
default WIFI_MODE_AP
config WIFI_MODE_AP
tristate "AP"
select MT_AP_SUPPORT
config WIFI_MODE_STA
tristate "STA"
select MT_STA_SUPPORT
config WIFI_MODE_BOTH
tristate "APSTA"
select MT_AP_SUPPORT
select MT_STA_SUPPORT
endchoice
config MT_AP_SUPPORT
tristate "Ralink RT2860 802.11n AP support"
# depends on NET_RADIO
select WIRELESS_EXT
select WEXT_SPY
select WEXT_PRIV
config WDS_SUPPORT
bool "WDS"
depends on MT_AP_SUPPORT
default y
config MBSS_SUPPORT
bool "MBSSID"
depends on MT_AP_SUPPORT
default y
#config NEW_MBSSID_MODE
# bool "New MBSSID MODE"
# depends on MT_AP_SUPPORT && MBSS_SUPPORT
# depends on RALINK_RT3883 || RALINK_RT3352 || RALINK_RT5350 || RALINK_RT6352 || RALINK_MT7620
# default y
#config ENHANCE_NEW_MBSSID_MODE
# bool "Enhanced MBSSID mode"
# depends on NEW_MBSSID_MODE
# default y
config APCLI_SUPPORT
bool "AP-Client Support"
depends on MT_AP_SUPPORT
default y
config APCLI_CERT_SUPPORT
bool "AP-Client TGn Cert Support"
depends on MT_AP_SUPPORT
depends on APCLI_SUPPORT
default n
config MAC_REPEATER_SUPPORT
bool "MAC Repeater Support"
depends on MT_AP_SUPPORT
depends on APCLI_SUPPORT
depends on RALINK_RT6352 || RALINK_MT7620 || RALINK_MT7603E || MT_AP_SUPPORT
default y
config APCLI_CONNECTION_TRIAL
bool "Trial Connection"
depends on MT_AP_SUPPORT
depends on APCLI_SUPPORT
default n
config MWDS
bool "Mixed WDS(MWDS)"
depends on MT_AP_SUPPORT
select APCLI_SUPPORT
default n
config WIFI_SYSDVT
bool "Wifi System DVT tool Support"
depends on MT_AP_SUPPORT
default n
config MUMIMO_SUPPORT
bool "MU-MIMO Support"
depends on WIFI_DRIVER
select MU_RA_SUPPORT
default y
config MU_RA_SUPPORT
bool "MU-RGA Support"
depends on MUMIMO_SUPPORT
config DOT11R_FT_SUPPORT
bool "802.11r Fast BSS Transition"
depends on MT_AP_SUPPORT
default n
config DOT11K_RRM_SUPPORT
bool "802.11k Radio Resource Management"
depends on MT_AP_SUPPORT
default n
config ENTERPRISE_AP_SUPPORT
bool "Enterprise AP Support"
depends on MT_AP_SUPPORT
default n
config MLME_MULTI_QUEUE_SUPPORT
bool "Mlme MultiQueue Support"
depends on MT_AP_SUPPORT
default n
config WIFI_EAP_FEATURE
bool "EAP Feature"
depends on WIFI_DRIVER
default y
#VLAN
config VLAN_SUPPORT
bool "VLAN Support"
depends on MT_AP_SUPPORT
depends on WIFI_EAP_FEATURE
default n
#Sniffer
config SNIFFER_SUPPORT
bool "SNIFFER"
depends on MT_AP_SUPPORT
depends on WIFI_EAP_FEATURE
default n
#Highpriority frame rate specific
config HIGHPRI_RATE_SPECIFIC
bool "Highpriority frame rate specific"
depends on MT_AP_SUPPORT
depends on WIFI_EAP_FEATURE
default n
config SNIFFER_RADIOTAP_SUPPORT
bool "SNIFFER_RADIOTAP"
default y
config WF_RESET_SUPPORT
bool "WIFI RESET"
default n
#TxRx Statistic
config TXRX_STAT_SUPPORT
bool "TxRx Stats Support"
depends on WIFI_DRIVER && WIFI_EAP_FEATURE
default n
#Antenna control
config ANTENNA_CONTROL_SUPPORT
bool "Antenna Control"
depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE
default n
#Mgmt Tx Power
config MGMT_TXPWR_CTRL
bool "Mgmt TxPower Control"
depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE
default n
#TxD based Mgmt Tx Power
config TXD_MGMT_TXPWR_CTRL
bool "TxD based Mgmt TxPower Control"
depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE
default n
#Channel Utilization
config CHUTIL_SUPPORT
bool "Channel Utilization Support"
depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE
default n
#Noise Floor
config NF_SUPPORT
bool "Noise Floor Support"
depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE
default n
#RA_PHY_RATE
config RA_PHY_RATE_SUPPORT
bool "RA PHY RATE Support"
depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE
default n
#AMPDU Config
config AMPDU_CONF_SUPPORT
bool "AMPDU Config retry & agglimitSupport"
depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE
default n
#ACK CTS Timeout
config ACK_CTS_TIMEOUT_SUPPORT
bool "ACK CTS Timeout cck & ofdm Support"
depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE
default n
#MBSS_DTIM_SUPPORT
config MBSS_DTIM_SUPPORT
bool "MBSS DTIM SUPPORT"
depends on MT_AP_SUPPORT
default n
config RADIUS_MAC_AUTH_SUPPORT
bool "RADIUS MAC Auth Support"
depends on ENTERPRISE_AP_SUPPORT
depends on CFG80211_SUPPORT
default n
config ZERO_LOSS_CSA_SUPPORT
bool "Zero Loss CSA Support"
depends on MT_AP_SUPPORT
default n
config DYNAMIC_VLAN_SUPPORT
bool "Dynamic VLAN Support"
depends on MT_AP_SUPPORT
depends on ENTERPRISE_AP_SUPPORT
default n
config CFG80211_SUPPORT
bool "CFG80211"
depends on MT_AP_SUPPORT
default n
config IAP_VENDOR1_FEATURE_SUPPORT
bool "IAP Vendor1 Feature enable"
depends on ENTERPRISE_AP_SUPPORT
default n
#CUSTOMISED HOSTAPD
config CUSTOMISED_HOSTAPD_SUPPORT
bool "Customised Hostapd Support"
depends on MT_AP_SUPPORT
depends on CFG80211_SUPPORT
default n
#HOSTAPD_MAP_SUPPORT
config HOSTAPD_MAP_SUPPORT
bool "Hostapd MAP Support"
depends on MT_AP_SUPPORT
depends on CFG80211_SUPPORT
default n
#HOSTAPD_WAPP_SUPPORT
config HOSTAPD_WAPP_SUPPORT
bool "Hostapd WAPP Support"
depends on MT_AP_SUPPORT
depends on CFG80211_SUPPORT
default n
#HOSTAPD_WPA3_SUPPORT
config HOSTAPD_WPA3_SUPPORT
bool "Hostapd WPA3 Support"
depends on MT_AP_SUPPORT
depends on CFG80211_SUPPORT
default n
#HOSTAPD_WPA3R3_SUPPORT
config HOSTAPD_WPA3R3_SUPPORT
bool "Hostapd WPA3R3 Support"
depends on HOSTAPD_WPA3_SUPPORT
default n
#DBDC_ONE_BAND_SUPPORT
config DBDC_ONE_BAND_SUPPORT
bool "Single Band DBDC Support"
depends on MT_AP_SUPPORT
default n
#APCLI STA
config APCLI_STA_SUPPORT
bool "APCLI Supplicant Support"
depends on APCLI_SUPPORT
depends on CFG80211_SUPPORT
default n
#WDS STA
config WDS_STA_SUPPORT
bool "WDS STA Support"
depends on APCLI_SUPPORT
depends on CFG80211_SUPPORT
default n
#WDS AP
config MBSS_AS_WDS_AP_SUPPORT
bool "MBSS AS WDS AP Support"
depends on MT_AP_SUPPORT
depends on MBSS_SUPPORT
default n
config DSCP_QOS_MAP_SUPPORT
bool "Dscp Qos Mapping Support"
depends on MT_AP_SUPPORT
default n
config QOS_R1_SUPPORT
bool "MTK QoS R1 support"
default n
config DSCP_PRI_SUPPORT
bool "Dscp Priority Mapping Support"
depends on MT_AP_SUPPORT
default n
config MIN_PHY_RATE_SUPPORT
bool "Minimum PHY rate support"
depends on MT_AP_SUPPORT
default n
config FAST_UP_RATE_SUPPORT
bool "Fast UP rate support"
depends on MT_AP_SUPPORT
default n
config CON_WPS_SUPPORT
bool "Concurrent WPS Support"
depends on MT_AP_SUPPORT
depends on APCLI_SUPPORT
depends on WSC_INCLUDED
depends on WSC_V2_SUPPORT
# depends on MULTI_INF_SUPPORT
default n
#config LLTD_SUPPORT
# bool "LLTD (Link Layer Topology Discovery Protocol)"
# depends on MT_AP_SUPPORT
#config COC_SUPPORT
# bool "CoC Support"
# depends on MT_AP_SUPPORT
# default n
#config RT2860V2_SNMP
# bool "Net-SNMP Support"
# depends on MT_AP_SUPPORT
config MCAST_RATE_SPECIFIC
bool "User specific tx rate of mcast pkt"
depends on MT_AP_SUPPORT
default y
#config EXT_BUILD_CHANNEL_LIST
# bool "Extension Channel List"
# depends on MT_AP_SUPPORT
#config AUTO_CH_SELECT_ENHANCE
# bool "Auto Channel Selection Enhancement"
# depends on MT_AP_SUPPORT
config VOW_SUPPORT
bool "MediaAir(VOW) support"
depends on MT_AP_SUPPORT
default y
#config AIRPLAY_SUPPORT
# bool "AIRPLAY Support"
# depends on MT_AP_SUPPORT
# default n
config BAND_STEERING
bool "Band Steering"
depends on MT_AP_SUPPORT
default y
config LED_CONTROL_SUPPORT
bool "LED Control Support"
default n
config WLAN_HOOK
bool "WLAN hook Support"
depends on WIFI_DRIVER
default n
config RADIUS_ACCOUNTING_SUPPORT
bool "Radius Accounting Support"
depends on MT_AP_SUPPORT
default n
config GREENAP_SUPPORT
bool "GreenAP Support"
depends on MT_AP_SUPPORT
default y
config WIFI_CSI_CN_INFO_SUPPORT
bool "CSI CN Info Support"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT
default n
config 6G_AFC_SUPPORT
bool "6G Band AFC Support"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT
default n
config DFS_SLAVE_SUPPORT
bool "DFS-Slave Support"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT
default n
config VENDOR_FEATURE11_SUPPORT
bool "Vendor11 Feature Enable"
depends on WIFI_DRIVER
depends on MT_AP_SUPPORT
default n
config PCIE_ASPM_DYM_CTRL_SUPPORT
bool "Pcie Aspm Dynamic Control Support"
depends on MT_AP_SUPPORT
default y
config COEX_SUPPORT
bool "Coex Support"
depends on MT_AP_SUPPORT
default n
config EASY_SETUP_SUPPORT
bool "Whole Home Coverage - Easy Setup"
depends on MT_AP_SUPPORT
default n
config EVENT_NOTIFIER_SUPPORT
bool "Whole Home Coverage - Event Notifier"
depends on MT_AP_SUPPORT
default n
config AIR_MONITOR
bool "Air Monitor"
depends on MT_AP_SUPPORT
default n
config WNM_SUPPORT
bool "802.11v WNM Support"
depends on MT_AP_SUPPORT
default n
config INTERWORKING
bool "802.11u Interworking"
depends on MT_AP_SUPPORT
default n
#config ROAMING_ENHANCE_SUPPORT
# bool "Roaming Enhance Support"
# depends on MT_AP_SUPPORT
# depends on APCLI_SUPPORT
# default n
config LINUX_NET_TXQ_SUPPORT
bool "NET TX Queue Support"
default n
#config WIFI_FWD_SUPPORT
# bool "WiFi Forwarding Support"
# default n
config WPA3_SUPPORT
bool "WPA3 Support"
depends on MT_AP_SUPPORT
default n
config OWE_SUPPORT
bool "Enhanced Open Support"
depends on MT_AP_SUPPORT
default n
config SINGLE_SKU
bool "Single SKU Support"
depends on MT_AP_SUPPORT
default n
config PROFILING_SUPPORT
bool "WIFI Profiling Support"
default n
config 6G_SUPPORT
bool "WIFI 6G Support"
default n
help
Supporting 6GHz Wi-Fi
config BSSMGR_CROSS_MODULE_SUPPORT
bool "WIFI 6G BSS Manager Cross Module Support"
depends on 6G_SUPPORT
default n
help
Supporting 6GHz Wi-Fi BSS Manager Cross Module
endmenu
endif
config WIFI_MT_MAC
bool
default y
depends on MT_WIFI
if WIFI_RLT_MAC
config RLT_MAC
bool
default y
endif
if WIFI_RTMP_MAC
config RTMP_MAC
bool
default y
endif
if WIFI_MT_MAC
config MT_MAC
bool
default y
config CHIP_MT7603E
bool
default n
config CHIP_MT7615E
bool
default n
config CHIP_MT7622
bool
default n
config CHIP_MT7663E
bool
default n
config CHIP_MT7626
bool
default n
config CHIP_AXE
bool
default n
config CHIP_MT7915
bool
default n
config CHIP_MT7986
bool
default n
config CHIP_MT7916
bool
default n
config CHIP_MT7981
bool
default n
endif
if CHIP_MT7615E || CHIP_MT7622 || CHIP_MT7626 || CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981
config MT_MAC
bool
default y
select RATE_ADAPTION
select RATE_ADAPT_AGBS_SUPPORT
select DOT11_N_SUPPORT
select DOT11_VHT_AC
select HDR_TRANS_TX_SUPPORT
select HDR_TRANS_RX_SUPPORT
endif
endif #WIFI_DRIVER#
```
然后添加Makefile的内容:
```plain
obj-$(CONFIG_MT_WIFI_SUPPORT) += mt_wifi_ap/
```
上层编译目录模仿之前的添加即可,不再列举。
然后对照着openwrt把选项选中,一定要认真,选项太多了。

后面太多了不列举了。选好后开始编译。

好了,编译完成了。
##### 生成模块
执行命令生成内核镜像:
```plain
$ mkimage -f mt798x-kernel.its vmlinuz-dtb.img
```
执行安装模块命令,等待备用。
```plain
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=`pwd`/build-modules/
```
后面等我们做完文件系统后,再把目录里面的驱动加到系统里面去。
#### Ubuntu文件系统制作
首先安装以下包
```plain
sudo apt-get install qemu qemu-user-static debootstrap
```
##### 制作基础文件系统
新建个目录,就叫arm64_ubuntu20吧。然后进入目录,执行:
```plain
$ sudo debootstrap --arch arm64 focal . https://mirrors.aliyun.com/ubuntu-ports/
```
运行完成后,chroot到目录,再安装一些其它必须包:
```plain
$ sudo chroot .
# apt-get install systemd systemd-sysv udev wget net-tools iputils-ping isc-dhcp-client libxml2-dev libnl-genl-3-dev libreadline-dev libtinfo-dev sudo vim apt-utils
```
CTRL+D退出。
##### 准备固件和配置
然后把配置和固件拷贝过来:
```plain
$ sudo cp -rf ../../mt798x-workspace/openwrt/build_dir/target-aarch64_cortex-a53_musl/root.orig-mediatek/etc/wireless/
etc/
$ sudo cp -rf ../../mt798x-workspace/openwrt/build_dir/target-aarch64_cortex-a53_musl/root.orig-mediatek/lib/firmware/ lib/
```
##### 安装内核及驱动
然后再把我们刚才编译的驱动和内核镜像拷贝过来:
```plain
$ sudo cp ../../mt798x-workspace/mt798x-linux/linux-5.4.281/vmlinuz-dtb.img ./
$ sudo cp -rf ../../mt798x-workspace/mt798x-linux/linux-5.4.281/build-modules/lib/modules/ lib/
```
这样一个完整的文件系统就做好了。
```plain
$ ls
bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var vmlinuz-dtb.img
```
##### 修改密码
然后还有个最关键的一步,继续chroot到系统,然后执行:
```plain
# passwd root
New password:
Retype new password:
passwd: password updated successfully
```
密码自己设置。
#### 制作能挂载EMMC的引导固件
现在我们既然使用了spi-nor+emmc的这种方式,传统的spi-nor的固件无法满足我们的要求,那么这时候我们需要重新定制固件。因为FIP分区大小有改变,也无法在Uboot烧写,所以后面烧写第一次是在ram中烧写的,或者去救援模式烧写。后面直接在uboot中更新即可。
##### 制作固件
在u-boot下新建配置文件mt7981_spim_nor_emmc_rfb_defconfig,然后内容如下:
```plain
CONFIG_ARM=y
CONFIG_SYS_HAS_NONCACHED_MEMORY=y
CONFIG_POSITION_INDEPENDENT=y
CONFIG_ARCH_MEDIATEK=y
CONFIG_TEXT_BASE=0x41e00000
CONFIG_SYS_MALLOC_F_LEN=0x4000
CONFIG_NR_DRAM_BANKS=1
CONFIG_ENV_SIZE=0x10000
CONFIG_ENV_OFFSET=0x0
CONFIG_DEFAULT_DEVICE_TREE="mt7981-spim-nor-emmc-rfb"
CONFIG_SYS_PROMPT="MT7981> "
CONFIG_TARGET_MT7981=y
CONFIG_DEBUG_UART_BASE=0x11002000
CONFIG_DEBUG_UART_CLOCK=40000000
CONFIG_SYS_LOAD_ADDR=0x46000000
CONFIG_PCI=y
CONFIG_DEBUG_UART=y
CONFIG_MEDIATEK_BOOTMENU=y
CONFIG_MTK_UPGRADE_BL2_VERIFY=y
CONFIG_MTK_UPGRADE_FIP_VERIFY=y
CONFIG_AUTOBOOT_MENU_SHOW=y
CONFIG_AUTOBOOT_MENU_MTK_SHOW=y
CONFIG_DEFAULT_FDT_FILE="mt7981-spim-nor-emmc-rfb"
CONFIG_LOGLEVEL=7
CONFIG_LOG=y
CONFIG_SYS_CBSIZE=512
CONFIG_SYS_PBSIZE=1049
# CONFIG_BOOTM_NETBSD is not set
# CONFIG_BOOTM_PLAN9 is not set
# CONFIG_BOOTM_RTEMS is not set
# CONFIG_BOOTM_VXWORKS is not set
# CONFIG_CMD_ELF is not set
# CONFIG_CMD_UNLZ4 is not set
# CONFIG_CMD_UNZIP is not set
# CONFIG_CMD_FLASH is not set
CONFIG_CMD_GPIO=y
CONFIG_CMD_PWM=y
CONFIG_CMD_MTD=y
CONFIG_CMD_PCI=y
CONFIG_CMD_SF_TEST=y
CONFIG_CMD_PING=y
CONFIG_MTDIDS_DEFAULT="nor0=nor0"
CONFIG_MTDPARTS_DEFAULT="nor0:256k(bl2),64k(u-boot-env),704k(factory),2048k(fip)"
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_MTD=y
CONFIG_ENV_MTD_NAME="u-boot-env"
CONFIG_ENV_SIZE_REDUND=0x10000
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_USE_IPADDR=y
CONFIG_IPADDR="192.168.1.1"
CONFIG_USE_NETMASK=y
CONFIG_NETMASK="255.255.255.0"
CONFIG_USE_SERVERIP=y
CONFIG_SERVERIP="192.168.1.2"
CONFIG_PROT_TCP=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_CLK=y
CONFIG_SYS_I2C_MTK=y
CONFIG_CMD_GPT=y
CONFIG_CMD_GPT_RENAME=y
CONFIG_CMD_LSBLK=y
CONFIG_MMC=y
CONFIG_CMD_MMC=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_SMC=y
CONFIG_CMD_FAT=y
CONFIG_CMD_FS_GENERIC=y
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_MMC_HS200_SUPPORT=y
CONFIG_MMC_MTK=y
CONFIG_DM_MTD=y
CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH_SFDP_SUPPORT=y
CONFIG_SPI_FLASH_EON=y
CONFIG_SPI_FLASH_GIGADEVICE=y
CONFIG_SPI_FLASH_ISSI=y
CONFIG_SPI_FLASH_MACRONIX=y
CONFIG_SPI_FLASH_SPANSION=y
CONFIG_SPI_FLASH_STMICRO=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_SPI_FLASH_XMC=y
CONFIG_SPI_FLASH_XTX=y
CONFIG_SPI_FLASH_MTD=y
CONFIG_PHY_FIXED=y
CONFIG_MEDIATEK_ETH=y
CONFIG_PCIE_MEDIATEK=y
CONFIG_PINCTRL=y
CONFIG_PINCONF=y
CONFIG_PINCTRL_MT7981=y
CONFIG_POWER_DOMAIN=y
CONFIG_MTK_POWER_DOMAIN=y
CONFIG_DM_PWM=y
CONFIG_PWM_MTK=y
CONFIG_DM_SERIAL=y
CONFIG_MTK_SERIAL=y
CONFIG_SPI=y
CONFIG_DM_SPI=y
CONFIG_MTK_SPIM=y
CONFIG_HEXDUMP=y
CONFIG_FAT_WRITE=y
CONFIG_LMB_MAX_REGIONS=64
```
然后新建设备树mt7981-spim-nor-emmc-rfb.dts,内容如下:
```plain
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2022 MediaTek Inc.
* Author: Sam Shih