rtl8812au
rtl8812au copied to clipboard
Line 557 in rtl8812au/core/rtw_cmd.c i get the following error: control reaches end of non-void function
When I run make to build the driver I get the following errors.
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/5.13.0-52-generic/build M=/home/nicholas/wifidriver2/rtl8812au modules make[1]: Entering directory '/usr/src/linux-headers-5.13.0-52-generic' CC [M] /home/nicholas/wifidriver2/rtl8812au/core/rtw_cmd.o /home/nicholas/wifidriver2/rtl8812au/core/rtw_cmd.c: In function ‘rtw_cmd_thread’: /home/nicholas/wifidriver2/rtl8812au/core/rtw_cmd.c:557:1: error: control reaches end of non-void function [-Werror=return-type] 557 | } | ^ cc1: some warnings being treated as errors make[2]: *** [scripts/Makefile.build:281: /home/nicholas/wifidriver2/rtl8812au/core/rtw_cmd.o] Error 1 make[1]: *** [Makefile:1879: /home/nicholas/wifidriver2/rtl8812au] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-5.13.0-52-generic' make: *** [Makefile:1086: modules] Error 2
我也遇到了同样的问题, 坐等大神回复
搜了一下, 在Makefile中添加一行代码即可。
EXTRA_CFLAGS += -Wno-return-type
编译过了, 但是最后报错
CC [M] /home/ly/code/rtl8812au/core/rtw_mp_ioctl.o
LD [M] /home/ly/code/rtl8812au/8812au.o
MODPOST /home/ly/code/rtl8812au/Module.symvers
ERROR: modpost: "kthread_complete_and_exit" [/home/ly/code/rtl8812au/8812au.ko] undefined!
make[2]: *** [scripts/Makefile.modpost:150: /home/ly/code/rtl8812au/Module.symvers] Error 1
make[2]: *** Deleting file '/home/ly/code/rtl8812au/Module.symvers'
make[1]: *** [Makefile:1794: modules] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.13.0-52-generic'
make: *** [Makefile:1087: modules] Error 2
原来是kernel 5.17改名字了, 我的kernel是5.13的。 grep一下kthread_complete_and_exit, 发现是在include/osdep_service_linux.h 149行, 改为如下即可:
#define thread_exit() complete_and_exit(NULL, 0)
参考 Kernel 5.17 renames complete_and_exit to kthread_complete_and_exit https://github.com/lwfinger/rtl8723ds/issues/15 https://lore.kernel.org/lkml/[email protected]/
测试发现, 其实第一个错误可以不管, 只需要改thread_exit
定义即可:
diff --git a/include/osdep_service_linux.h b/include/osdep_service_linux.h
index 32a55b9..44fa5d5 100644
--- a/include/osdep_service_linux.h
+++ b/include/osdep_service_linux.h
@@ -146,7 +146,7 @@
typedef int thread_return;
typedef void* thread_context;
- #define thread_exit() kthread_complete_and_exit(NULL, 0)
+ #define thread_exit() complete_and_exit(NULL, 0)^M
typedef void timer_hdl_return;
typedef void* timer_hdl_context;
@magicly What you told me works. Thanks a lot magicly!
My pleasure~
This is address in this PR