From 7ad50134075919984217aa4d355533b30c073832 Mon Sep 17 00:00:00 2001 From: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com> Date: Tue, 11 Aug 2020 19:02:00 +0800 Subject: [PATCH] rtl8821cu: build with mac80211 --- package/ctcgfw/rtl8821cu/Makefile | 29 ++++++++-------- .../patches/001-use-kernel-byteorder.patch | 15 +++++++++ .../020-compatible-with-kernel-5.4.patch | 13 -------- .../rtl8821cu/patches/020-remove-iwreq.patch | 33 +++++++++++++++++++ ...c.patch => 030-fix-build-on-powerpc.patch} | 0 .../rtl8821cu/patches/040-wireless-5.x.patch | 27 +++++++++++++++ 6 files changed, 89 insertions(+), 28 deletions(-) create mode 100644 package/ctcgfw/rtl8821cu/patches/001-use-kernel-byteorder.patch delete mode 100644 package/ctcgfw/rtl8821cu/patches/020-compatible-with-kernel-5.4.patch create mode 100644 package/ctcgfw/rtl8821cu/patches/020-remove-iwreq.patch rename package/ctcgfw/rtl8821cu/patches/{010-fix-build-on-powerpc.patch => 030-fix-build-on-powerpc.patch} (100%) create mode 100644 package/ctcgfw/rtl8821cu/patches/040-wireless-5.x.patch diff --git a/package/ctcgfw/rtl8821cu/Makefile b/package/ctcgfw/rtl8821cu/Makefile index 7287b990b1..58457eb336 100644 --- a/package/ctcgfw/rtl8821cu/Makefile +++ b/package/ctcgfw/rtl8821cu/Makefile @@ -15,9 +15,9 @@ PKG_LICENSE:=GPLv3 PKG_SOURCE_URL:=https://github.com/brektrou/rtl8821CU.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2020-03-02 -PKG_SOURCE_VERSION:=7756a7ab6b4dfd105d36d8433a72802ac0620d53 -PKG_MIRROR_HASH:=4e9ac6bcedc0d3fc7d4b44be2076d6b9838d404ce0b8a8158b12287e9c0f53b6 +PKG_SOURCE_DATE:=2020-07-27 +PKG_SOURCE_VERSION:=93b04bfcd293fdd7d98d5a7c964ae9416a40159c +PKG_MIRROR_HASH:=0b0c12c69efa680481abc3a7703a1a224f7fcd6271f8eb3c038fbaef02945bfa PKG_MAINTAINER:=[CTCGFW] Project OpenWrt PKG_BUILD_PARALLEL:=1 @@ -27,21 +27,10 @@ STAMP_CONFIGURED_DEPENDS := $(STAGING_DIR)/usr/include/mac80211-backport/backpor include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/package.mk -NOSTDINC_FLAGS = \ - -I$(PKG_BUILD_DIR)/include \ - -I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \ - -I$(STAGING_DIR)/usr/include/mac80211-backport \ - -I$(STAGING_DIR)/usr/include/mac80211/uapi \ - -I$(STAGING_DIR)/usr/include/mac80211 \ - -include backport/autoconf.h \ - -include backport/backport.h - -NOSTDINC_FLAGS+=-DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT -DCONFIG_CONCURRENT_MODE -DBUILD_OPENWRT - define KernelPackage/rtl8821cu SUBMENU:=Wireless Drivers TITLE:=Realtek rtl8821cu Support - DEPENDS:=+@USB_SUPPORT +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +kmod-mac80211 +kmod-usb-core + DEPENDS:=+kmod-cfg80211 +kmod-usb-core +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT FILES:=$(PKG_BUILD_DIR)/rtl8821cu.ko AUTOLOAD:=$(call AutoProbe,rtl8821cu) PROVIDES:=kmod-rtl8821cu @@ -51,6 +40,15 @@ define KernelPackage/rtl8821cu/description Kernel module for rtl8821cu wireless module. endef +NOSTDINC_FLAGS = \ + -I$(PKG_BUILD_DIR) \ + -I$(PKG_BUILD_DIR)/include \ + -I$(STAGING_DIR)/usr/include/mac80211-backport \ + -I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \ + -I$(STAGING_DIR)/usr/include/mac80211 \ + -I$(STAGING_DIR)/usr/include/mac80211/uapi \ + -include backport/backport.h + EXTRA_KCONFIG:=\ CONFIG_RTL8821CU=m \ USER_MODULE_NAME=rtl8821cu @@ -76,6 +74,7 @@ endif MAKE_OPTS:= \ $(KERNEL_MAKE_FLAGS) \ M="$(PKG_BUILD_DIR)" \ + NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \ USER_EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ $(EXTRA_KCONFIG) diff --git a/package/ctcgfw/rtl8821cu/patches/001-use-kernel-byteorder.patch b/package/ctcgfw/rtl8821cu/patches/001-use-kernel-byteorder.patch new file mode 100644 index 0000000000..e75a278339 --- /dev/null +++ b/package/ctcgfw/rtl8821cu/patches/001-use-kernel-byteorder.patch @@ -0,0 +1,15 @@ +Fix compile problem when rtw_byteorder.h and asm/byteorder.h gets +included in addition for example indirectly, do not use realtek own copy +of the byteorder headers. + +--- a/include/drv_types.h ++++ b/include/drv_types.h +@@ -25,7 +25,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include diff --git a/package/ctcgfw/rtl8821cu/patches/020-compatible-with-kernel-5.4.patch b/package/ctcgfw/rtl8821cu/patches/020-compatible-with-kernel-5.4.patch deleted file mode 100644 index a6f5344843..0000000000 --- a/package/ctcgfw/rtl8821cu/patches/020-compatible-with-kernel-5.4.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c -index 345af67..54a07db 100644 ---- a/os_dep/linux/os_intfs.c -+++ b/os_dep/linux/os_intfs.c -@@ -1562,7 +1562,7 @@ static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb - #else - , void *accel_priv - #endif -- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) -+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) - , select_queue_fallback_t fallback - #endif - #endif diff --git a/package/ctcgfw/rtl8821cu/patches/020-remove-iwreq.patch b/package/ctcgfw/rtl8821cu/patches/020-remove-iwreq.patch new file mode 100644 index 0000000000..ed184e6faf --- /dev/null +++ b/package/ctcgfw/rtl8821cu/patches/020-remove-iwreq.patch @@ -0,0 +1,33 @@ +diff --git a/include/linux/wireless.h b/include/linux/wireless.h +index c7f4a6c..f7ef486 100644 +--- a/include/linux/wireless.h ++++ b/include/linux/wireless.h +@@ -18,10 +18,11 @@ + + /***************************** INCLUDES *****************************/ + +-#if 0 ++#if 1 + #include /* for __u* and __s* typedefs */ + #include /* for "struct sockaddr" et al */ + #include /* for IFNAMSIZ and co... */ ++ #include + #else + #define __user + /* typedef uint16_t __u16; */ +@@ -37,6 +38,8 @@ struct compat_iw_point { + __u16 flags; + }; + #endif ++ ++#if 0 + /* --------------------------- SUBTYPES --------------------------- */ + /* + * For all data larger than 16 octets, we need to use a +@@ -83,5 +86,6 @@ struct iwreq { + /* Data part (defined just above) */ + union iwreq_data u; + }; ++#endif + + #endif /* _LINUX_WIRELESS_H */ diff --git a/package/ctcgfw/rtl8821cu/patches/010-fix-build-on-powerpc.patch b/package/ctcgfw/rtl8821cu/patches/030-fix-build-on-powerpc.patch similarity index 100% rename from package/ctcgfw/rtl8821cu/patches/010-fix-build-on-powerpc.patch rename to package/ctcgfw/rtl8821cu/patches/030-fix-build-on-powerpc.patch diff --git a/package/ctcgfw/rtl8821cu/patches/040-wireless-5.x.patch b/package/ctcgfw/rtl8821cu/patches/040-wireless-5.x.patch new file mode 100644 index 0000000000..a2af2c5b32 --- /dev/null +++ b/package/ctcgfw/rtl8821cu/patches/040-wireless-5.x.patch @@ -0,0 +1,27 @@ +diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c +index c4b5157..cdb9388 100755 +--- a/os_dep/linux/os_intfs.c ++++ b/os_dep/linux/os_intfs.c +@@ -1302,6 +1302,14 @@ unsigned int rtw_classify8021d(struct sk_buff *skb) + } + + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,19,0)) ++static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb ++ , struct net_device *sb_dev ++ #if (LINUX_VERSION_CODE < KERNEL_VERSION(5,2,0)) ++ , select_queue_fallback_t fallback ++ #endif ++) ++#else + static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0) + , void *accel_priv +@@ -1310,6 +1318,7 @@ static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb + #endif + #endif + ) ++#endif + { + _adapter *padapter = rtw_netdev_priv(dev); + struct mlme_priv *pmlmepriv = &padapter->mlmepriv;