3.2release中rlt8822ES wifi适配
目标 在3.2release上完成rlt8822ES芯片的适配,并使WiFi相关xts用例success。 一、驱动移植编译 此适配的主芯片为海思的平台为例 1. 把rlt8822ES芯片的WIFI驱动放在kernel\linux\linux-5.10\drivers\net\wireless\realtek目录下; 2. 在 kernel\linux\linux-5.10\drivers\net
目标
在3.2release上完成rlt8822ES芯片的适配,并使WiFi相关xts用例success。
一、驱动移植编译
此适配的主芯片为海思的平台为例
1. 把rlt8822ES芯片的WIFI驱动放在kernel\linux\linux-5.10\drivers\net\wireless\realtek目录下;
2. 在 kernel\linux\linux-5.10\drivers\net\wireless\realtek\Kconfig中添加
source "drivers/net/wireless/realtek/rtw8822es/Kconfig"
3. 在kernel\linux\linux-5.10\drivers\net\wireless\realtek\Makefile中增加
obj-$(CONFIG_RTW88) += rtw8822es/
4. 在kernel\linux\linux-5.10\drivers\net\wireless\realtek\rtl8822es\Makefile中
112行的CONFIG_RTW_LOG_LEVEL = 4修改为CONFIG_RTW_LOG_LEVEL = 0
138行的CONFIG_RTW_SDIO_PM_KEEP_POWER = y修改为CONFIG_RTW_SDIO_PM_KEEP_POWER = n //根据是否待机状态修改
153行的CONFIG_PLATFORM_I386_PC = y修改为CONFIG_PLATFORM_I386_PC = n
208行的CONFIG_PLATFORM_HISILICON = n修改为CONFIG_PLATFORM_HISILICON = y //此处芯片平台修改
2204行到2038行修改如下 //此处芯片平台修改对应的配置
ifeq ($(CONFIG_PLATFORM_HISILICON), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_PLATFORM_HISILICON
EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT
EXTRA_CFLAGS += -DCONFIG_P2P
EXTRA_CFLAGS += -DCONFIG_HISI_CFI
KSRC := $(LINUX_DIR)
ARCH := $(CFG_HI_CPU_ARCH)
CROSS_COMPILE := $(HI_KERNEL_TOOLCHAINS_NAME)-
CONFIG_RTL8822ES := m
MODULE_NAME := rtl8822eS
endif
5. 找到对应的xxx_deconfig,加上对应的
CONFIG_RTL8822ES := m
修改完以上文件后,用OH工具链编译看是否编译通过;
二、修改OH中配置文件
1. 在third_party\wpa_supplicant\wpa_supplicant-2.9_standard\BUILD.gn中
19到23行修改为
declare_args() {
wpa_supplicant_driver_nl80211_hisi = ture //此处false改为ture
wpa_supplicant_driver_nl80211 = ture //此处false改为ture
wpa_supplicant_ohos_certmgr = true
}
2. 修改对应的device\board\xxx\xxx\cfg\init.xxx.cfg文件
}, {
"name" : "fs",
"cmds" : [
xxx
"insmod /vendor/lib/modules/rlt8822es.ko ifname=wlan0 if2name=p2p0",
]
}, {
3. 在vendor\xxx\...\BUILD.gn
sdk_module_name_list = {
xxx,
"rlt8822es.ko"
}
注意:此时一般需要把out\kernel\linux\linux-5.10\drivers\net\wireless\realtek\rtl8822es\rtl8822es.ko cp到对应的位置
通过2.3步骤后.ko文件在开机后就加载完成,此时用WPA命令测试是否wifi功能是否正常。
三、修改源代码过xts
备注:此处修改需根据日志定位情况修改,不同wifi芯片修改方案不相同
1. 在foundation\communication\wifi\wifi\services\wifi_standard\wifi_hal\etc\init\p2p_supplicant.conf中增加
p2p_no_group_iface=1
2. 在foundation\communication\wifi\wifi\services\wifi_standard\wifi_hal\wifi_hal_module\wpa_supplicant_hal\wifi_wpa_hal.c中
将148行的else if (strncmp(retMsg.key, "p2p-", strlen("p2p-")) == 0) { 修改为
else if (strncmp(retMsg.key, "p2p", strlen("p2p")) == 0) { //将p2p-修改为p2p
3. 在foundation\communication\wifi\wifi\services\wifi_standard\wifi_hal\wifi_hal_module\wpa_supplicant_hal\wifi_wpa_hal.c中761行增加freq = 0 ;
char cmd[P2P_CMD_BUF_LENGTH] = {0};
int res;
freq = 0 ; //761行,芯片不支持5G 5745MHz,修改为0后默认走2.4G 2437MHz
if (isPersistent) {
4. 在kernel\linux\linux-5.10\drivers\net\wireless\realtek\rtw8822es\core\rtw_mlme_ext.c中
7393行~7395行的代码剪切到7421行到7423行,修改后的代码如下
#endif /* CONFIG_P2P */
#ifdef CONFIG_RTW_MBO
rtw_mbo_build_beacon_ies(padapter, &pframe, pattrib);
#endif
#ifdef CONFIG_RTW_REPEATER_SON
7732行~7734行的代码剪切到7764行到7766行,修改后的代码如下
#endif /* CONFIG_P2P */
#ifdef CONFIG_RTW_MBO
rtw_mbo_build_probe_rsp_ies(padapter, &pframe, pattrib);
#endif
#ifdef CONFIG_AUTO_AP_MODE
5. 在kernel\linux\linux-5.10\drivers\net\wireless\realtek\rtw8822es\os_dep\linux\ioctl_cfg80211.c中5560和5561增加
5558 ret = rtw_add_beacon(adapter, settings->beacon.head, settings->beacon.head_len,
5559 settings->beacon.tail, settings->beacon.tail_len);
5560
rtw_cfg80211_set_mgnt_wpsp2pie(ndev, settings->beacon.beacon_ies, settings->beacon.beacon_ies_len, 1);
rtw_cfg80211_set_mgnt_wpsp2pie(ndev, settings->beacon.proberesp_ies, settings->beacon.proberesp_ies_len, 2);
5561#ifdef CONFIG_RTW_80211R_AP
更多推荐
所有评论(0)