ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/package/kernel/mwlwifi/Makefile b/package/kernel/mwlwifi/Makefile
new file mode 100644
index 0000000..eb986dc
--- /dev/null
+++ b/package/kernel/mwlwifi/Makefile
@@ -0,0 +1,104 @@
+#
+# Copyright (C) 2014-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=mwlwifi
+PKG_RELEASE=2
+
+PKG_LICENSE:=ISC
+PKG_LICENSE_FILES:=
+
+PKG_SOURCE_URL:=https://github.com/kaloz/mwlwifi
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_DATE:=2020-02-06
+PKG_SOURCE_VERSION:=a2fd00bb74c35820dfe233d762690c0433a87ef5
+PKG_MIRROR_HASH:=0eda0e774a87e58e611d6436350e1cf2be3de50fddde334909a07a15b0c9862b
+
+PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
+PKG_BUILD_PARALLEL:=1
+PKG_FLAGS:=nonshared
+
+include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/mwlwifi
+  SUBMENU:=Wireless Drivers
+  TITLE:=Marvell 88W8864/88W8897/88W8964/88W8997 wireless driver
+  DEPENDS:=+kmod-mac80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT @PCI_SUPPORT @TARGET_mvebu
+  FILES:=$(PKG_BUILD_DIR)/mwlwifi.ko
+  AUTOLOAD:=$(call AutoLoad,50,mwlwifi)
+endef
+
+NOSTDINC_FLAGS := \
+	$(KERNEL_NOSTDINC_FLAGS) \
+	-I$(PKG_BUILD_DIR) \
+	-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/backport.h
+
+define Build/Compile
+	+$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \
+		$(KERNEL_MAKE_FLAGS) \
+		M="$(PKG_BUILD_DIR)" \
+		NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
+		modules
+endef
+
+define Package/mwlwifi-firmware-default
+  SECTION:=firmware
+  CATEGORY:=Firmware
+  TITLE:=Marvell $(1) firmware
+  DEPENDS:=+kmod-mwlwifi @TARGET_mvebu
+endef
+
+define Package/mwlwifi-firmware/install
+	$(INSTALL_DIR) $(1)/lib/firmware
+	$(INSTALL_DIR) $(1)/lib/firmware/mwlwifi
+	$(CP) $(PKG_BUILD_DIR)/bin/firmware/$(2) $(1)/lib/firmware/mwlwifi/
+	$(CP) $(PKG_BUILD_DIR)/bin/firmware/Marvell_license.txt $(1)/lib/firmware/mwlwifi/$(2).Marvell_license.txt
+endef
+
+define Package/mwlwifi-firmware-88w8864
+$(call Package/mwlwifi-firmware-default,88W8864)
+endef
+
+define Package/mwlwifi-firmware-88w8864/install
+	$(call Package/mwlwifi-firmware/install,$(1),88W8864.bin)
+endef
+
+define Package/mwlwifi-firmware-88w8897
+$(call Package/mwlwifi-firmware-default,88W8897)
+endef
+
+define Package/mwlwifi-firmware-88w8897/install
+	$(call Package/mwlwifi-firmware/install,$(1),88W8897.bin)
+endef
+
+define Package/mwlwifi-firmware-88w8964
+$(call Package/mwlwifi-firmware-default,88W8964)
+endef
+
+define Package/mwlwifi-firmware-88w8964/install
+	$(call Package/mwlwifi-firmware/install,$(1),88W8964.bin)
+endef
+
+define Package/mwlwifi-firmware-88w8997
+$(call Package/mwlwifi-firmware-default,88W8997)
+endef
+
+define Package/mwlwifi-firmware-88w8997/install
+	$(call Package/mwlwifi-firmware/install,$(1),88W8997.bin)
+endef
+
+$(eval $(call KernelPackage,mwlwifi))
+$(eval $(call BuildPackage,mwlwifi-firmware-88w8864))
+$(eval $(call BuildPackage,mwlwifi-firmware-88w8897))
+$(eval $(call BuildPackage,mwlwifi-firmware-88w8964))
+$(eval $(call BuildPackage,mwlwifi-firmware-88w8997))
diff --git a/package/kernel/mwlwifi/patches/001-Fix-compile-with-mac80211-backports-5_3+.patch b/package/kernel/mwlwifi/patches/001-Fix-compile-with-mac80211-backports-5_3+.patch
new file mode 100644
index 0000000..fdba575
--- /dev/null
+++ b/package/kernel/mwlwifi/patches/001-Fix-compile-with-mac80211-backports-5_3+.patch
@@ -0,0 +1,35 @@
+From 182391a3c96ff6ad79bbba0758338a16a66abbd8 Mon Sep 17 00:00:00 2001
+From: DENG Qingfang <dengqf6@mail2.sysu.edu.cn>
+Date: Wed, 12 Feb 2020 14:18:58 +0800
+Subject: [PATCH] Fix driver loading with backports 5.3+
+
+Commit 747796b2f126 did not solve the issue that it crashes when an older kernel
+with a newer backport tries loading it, because it only detects kernel version.
+
+As net/cfg80211.h in 5.3+ defines VENDOR_CMD_RAW_DATA, use it as a condition.
+
+Signed-off-by: DENG Qingfang <dqfext@gmail.com>
+---
+ vendor_cmd.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/vendor_cmd.c
++++ b/vendor_cmd.c
+@@ -92,7 +92,7 @@ static const struct wiphy_vendor_command
+ 			  .subcmd = MWL_VENDOR_CMD_SET_BF_TYPE},
+ 		.flags = WIPHY_VENDOR_CMD_NEED_NETDEV,
+ 		.doit = mwl_vendor_cmd_set_bf_type,
+-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0))
++#ifdef VENDOR_CMD_RAW_DATA
+ 		.policy = mwl_vendor_attr_policy,
+ #endif
+ 	},
+@@ -101,7 +101,7 @@ static const struct wiphy_vendor_command
+ 			  .subcmd = MWL_VENDOR_CMD_GET_BF_TYPE},
+ 		.flags = WIPHY_VENDOR_CMD_NEED_NETDEV,
+ 		.doit = mwl_vendor_cmd_get_bf_type,
+-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0))
++#ifdef VENDOR_CMD_RAW_DATA
+ 		.policy = mwl_vendor_attr_policy,
+ #endif
+ 	}