ASR_BASE

Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/kernel/macremapper/Makefile b/external/subpack/kernel/macremapper/Makefile
new file mode 100644
index 0000000..0889805
--- /dev/null
+++ b/external/subpack/kernel/macremapper/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright (C) 2019 EWSI
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=macremapper
+PKG_VERSION:=1.1.0
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/ewsi/$(PKG_NAME)/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=f9580427803123d13d50f3422623a37212034a5d72a485f9c04904f19509e4bb
+
+PKG_MAINTAINER:=Carey Sonsino <careys@edgewaterwireless.com>
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=kernelmod/COPYING
+
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/macremapper
+  SUBMENU:=Network Support
+  URL:=https://www.edgewaterwireless.com
+  TITLE:=Dual Channel Wi-Fi macremapper Module
+  DEPENDS:= +kmod-cfg80211 +kmod-br-netfilter
+  FILES:=$(PKG_BUILD_DIR)/kernelmod/$(PKG_NAME).$(LINUX_KMOD_SUFFIX)
+  AUTOLOAD:=$(call AutoProbe,macremapper)
+endef
+
+define KernelPackage/macremapper/description
+  Linux kernel module for implementation the DCW filtering mechanism
+endef
+
+MAKE_FLAGS += KERNEL_SRC=$(LINUX_DIR) ARCH=$(LINUX_KARCH)
+MAKE_PATH:=kernelmod
+
+$(eval $(call KernelPackage,macremapper))
diff --git a/external/subpack/kernel/macremapper/patches/01_fix_nf_hooks.patch b/external/subpack/kernel/macremapper/patches/01_fix_nf_hooks.patch
new file mode 100644
index 0000000..29cb421
--- /dev/null
+++ b/external/subpack/kernel/macremapper/patches/01_fix_nf_hooks.patch
@@ -0,0 +1,27 @@
+--- a/kernelmod/main.c
++++ b/kernelmod/main.c
+@@ -98,8 +98,11 @@ modinit( void ) {
+ 
+   rv = mrm_rcdb_init();
+   if (rv != 0) return rv;
+-
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,13,0)
+   nf_register_hook(&_hops);
++#else
++  nf_register_net_hook(&init_net, &_hops);
++#endif
+   mrm_init_ctlfile(); /* XXX not checking for failure! */
+ 
+   printk(KERN_INFO "MRM The MAC Address Re-Mapper is now in the kernel\n");
+@@ -110,7 +113,11 @@ modinit( void ) {
+ static void __exit
+ modexit( void ) {
+   mrm_destroy_ctlfile();
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,13,0)
+   nf_unregister_hook(&_hops);
++#else
++  nf_unregister_net_hook(&init_net, &_hops);
++#endif
+   mrm_rcdb_destroy(); /* imperative that this happens last */
+   printk(KERN_INFO "MRM The MAC Address Re-Mapper gone bye-bye\n");
+ }
diff --git a/external/subpack/kernel/macremapper/patches/02-mrm_ctlfile.c-compatibility-with-linux-5.6.patch b/external/subpack/kernel/macremapper/patches/02-mrm_ctlfile.c-compatibility-with-linux-5.6.patch
new file mode 100644
index 0000000..d103b19
--- /dev/null
+++ b/external/subpack/kernel/macremapper/patches/02-mrm_ctlfile.c-compatibility-with-linux-5.6.patch
@@ -0,0 +1,59 @@
+From 6126f8efebf659708245ba99df6b85d7c1260668 Mon Sep 17 00:00:00 2001
+From: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
+Date: Sun, 31 Jan 2021 20:53:32 -0800
+Subject: [PATCH] mrm_ctlfile.c: compatibility with linux >= 5.6
+
+Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
+---
+ kernelmod/mrm_ctlfile.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+--- a/kernelmod/mrm_ctlfile.c
++++ b/kernelmod/mrm_ctlfile.c
+@@ -13,6 +13,7 @@
+ #include "./macremapper_ioctl.h"
+ #include "./bufprintf.h"
+ 
++#include <linux/version.h>
+ #include <linux/proc_fs.h>
+ #include <linux/uaccess.h>
+ #include <linux/mutex.h>
+@@ -80,13 +81,14 @@ mrm_handle_read(struct file *f, char __u
+ }
+ 
+ static long
+-mrm_handle_ioctl(struct file *f, unsigned int type, void __user *param) {
++mrm_handle_ioctl(struct file *f, unsigned int type, unsigned long arg) {
+   union {
+     struct mrm_filter_config  filt_conf;
+     struct mrm_remap_entry    remap_entry;
+     unsigned                  count;
+   } u;
+   int rv;
++  void __user *param = (void __user *)arg;
+ 
+   mutex_lock(&_ctrl_mutex);
+ 
+@@ -159,6 +161,14 @@ fail_fault:
+ }
+ 
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
++static const struct proc_ops _fops = {
++	.proc_open	= mrm_handle_open,
++	.proc_release	= mrm_handle_release,
++	.proc_read	= mrm_handle_read,
++	.proc_ioctl	= mrm_handle_ioctl,
++};
++#else
+ static const struct file_operations _fops = {
+   owner:           THIS_MODULE,
+   open:            &mrm_handle_open,
+@@ -166,6 +176,7 @@ static const struct file_operations _fop
+   read:            &mrm_handle_read,
+   unlocked_ioctl:  (void*)&mrm_handle_ioctl,
+ };
++#endif
+ 
+ int mrm_init_ctlfile( void ) {
+   struct proc_dir_entry *pde;
diff --git a/external/subpack/kernel/mdio-netlink/Makefile b/external/subpack/kernel/mdio-netlink/Makefile
new file mode 100644
index 0000000..cd2ee2f
--- /dev/null
+++ b/external/subpack/kernel/mdio-netlink/Makefile
@@ -0,0 +1,39 @@
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=mdio-netlink
+PKG_VERSION:=1.3.1
+PKG_RELEASE:=2
+
+PKG_SOURCE_URL:=https://github.com/wkz/mdio-tools
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=f74eaf38dbda441df4fcaeb21ca4465957953a2f
+PKG_MIRROR_HASH:=fdabb78a4fe26713c4c83aab707f57254145184614b9b39b17649a2151394005
+
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=COPYING
+
+PKG_MAINTAINER:=Damien Mascord <tusker@tusker.org>
+
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/mdio-netlink
+  SECTION:=kernel
+  CATEGORY:=Kernel modules
+  SUBMENU:=Network Support
+  TITLE:=mdio-netlink Linux MDIO netlink kernel module
+  KCONFIG:=CONFIG_PHYLIB=y CONFIG_MDIO_BUS=y
+  URL:=https://github.com/wkz/mdio-tools.git
+  FILES:=$(PKG_BUILD_DIR)/kernel/mdio-netlink.ko
+  AUTOLOAD:=$(call AutoProbe,mdio-netlink)
+endef
+
+define KernelPackage/mdio-netlink/description
+  mdio-netlink Linux MDIO netlink kernel module
+endef
+
+define Build/Compile
+	$(KERNEL_MAKE) M=$(PKG_BUILD_DIR)/kernel modules
+endef
+
+$(eval $(call KernelPackage,mdio-netlink))
diff --git a/external/subpack/kernel/mtd-rw/Makefile b/external/subpack/kernel/mtd-rw/Makefile
new file mode 100644
index 0000000..433f679
--- /dev/null
+++ b/external/subpack/kernel/mtd-rw/Makefile
@@ -0,0 +1,49 @@
+#
+# Copyright (C) 2016 Joseph C. Lehner <joseph.c.lehner@gmail.com>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=mtd-rw
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/jclehner/mtd-rw
+PKG_SOURCE_DATE:=2021-02-28
+PKG_SOURCE_VERSION:=e87767395a6d27380196702f5f7bf98e92774f3f
+PKG_MIRROR_HASH:=984218d7a8e1252419c45ef313f23fb6e5edfa83088f68a4a356b795444ab381
+
+PKG_MAINTAINER:=Joseph C. Lehner <joseph.c.lehner@gmail.com>
+PKG_LICENSE=GPL-2.0
+PKG_LICENSE_FILES=LICENSE
+
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/mtd-rw
+	SUBMENU:=Other modules
+	TITLE:=Write-enabler for MTD partitions
+	FILES:=$(PKG_BUILD_DIR)/mtd-rw.ko
+	DEPENDS:=@!(TARGET_x86||TARGET_bcm27xx||TARGET_octeontx)
+endef
+
+define KernelPackage/mtd-rw/description
+	A kernel module that temporarily makes all MTD partitions writeable.
+endef
+
+MAKE_OPTS:= \
+	ARCH="$(LINUX_KARCH)" \
+	CROSS_COMPILE="$(TARGET_CROSS)" \
+	M="$(PKG_BUILD_DIR)"
+
+define Build/Compile
+	$(MAKE) -C "$(LINUX_DIR)" \
+			$(MAKE_OPTS) \
+			CONFIG_MTD_RW=m \
+			modules
+endef
+
+$(eval $(call KernelPackage,mtd-rw))
diff --git a/external/subpack/kernel/ovpn-dco/Makefile b/external/subpack/kernel/ovpn-dco/Makefile
new file mode 100644
index 0000000..0ba5744
--- /dev/null
+++ b/external/subpack/kernel/ovpn-dco/Makefile
@@ -0,0 +1,61 @@
+#
+# Copyright (C) 2021 Jianhui Zhao <zhaojh329@gmail.com>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=ovpn-dco
+PKG_VERSION:=0.2.20240320
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL=https://codeload.github.com/OpenVPN/ovpn-dco/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=83a02dc3e6e40b0ef128cd32ce7f47da7fccd759af68657f44925d64a88db37b
+
+PKG_MAINTAINER:=Jianhui Zhao <zhaojh329@gmail.com>
+PKG_LICENSE:=GPL-2.0-only
+
+
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/ovpn-dco-v2
+  SUBMENU:=Network Support
+  TITLE:=OpenVPN data channel offload
+  DEPENDS:=+kmod-crypto-aead +kmod-udptunnel4 +IPV6:kmod-udptunnel6
+  FILES:=$(PKG_BUILD_DIR)/drivers/net/ovpn-dco/ovpn-dco-v2.ko
+  AUTOLOAD:=$(call AutoLoad,30,ovpn-dco-v2)
+endef
+
+define KernelPackage/ovpn-dco-v2/description
+  This module enhances the performance of the OpenVPN userspace software
+  by offloading the data channel processing to kernelspace.
+endef
+
+NOSTDINC_FLAGS += \
+	$(KERNEL_NOSTDINC_FLAGS) \
+	-I$(PKG_BUILD_DIR)/include \
+	-I$(PKG_BUILD_DIR)/compat-include \
+	-include $(PKG_BUILD_DIR)/linux-compat.h
+
+EXTRA_KCONFIG:= \
+	CONFIG_OVPN_DCO_V2=m
+
+PKG_EXTMOD_SUBDIRS = drivers/net/ovpn-dco
+
+MAKE_OPTS:= \
+	$(KERNEL_MAKE_FLAGS) \
+	M="$(PKG_BUILD_DIR)/drivers/net/ovpn-dco" \
+	NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
+	$(EXTRA_KCONFIG)
+
+define Build/Compile
+	$(MAKE) -C "$(LINUX_DIR)" \
+		$(MAKE_OPTS) \
+		modules
+endef
+
+$(eval $(call KernelPackage,ovpn-dco-v2))
diff --git a/external/subpack/kernel/v4l2loopback/Makefile b/external/subpack/kernel/v4l2loopback/Makefile
new file mode 100644
index 0000000..d49ccfd
--- /dev/null
+++ b/external/subpack/kernel/v4l2loopback/Makefile
@@ -0,0 +1,51 @@
+# This software is in the public domain, furnished "as is", without technical
+# support, and with no warranty, express or implied, as to its usefulness for
+# any purpose.
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=v4l2loopback
+PKG_VERSION:=0.13.2
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/umlaeute/v4l2loopback
+PKG_SOURCE_VERSION:=v$(PKG_VERSION)
+PKG_MIRROR_HASH:=06b786138b35daab3edfafb95432f1b838676e6dd615c481eae0553182eac67b
+
+PKG_MAINTAINER:=Michel Promonet <michel.promonet@free.fr>
+PKG_CPE_ID:=cpe:/o:v4l2loopback_project:v4l2loopback
+
+include $(INCLUDE_DIR)/package.mk
+
+define KernelPackage/v4l2loopback
+  SUBMENU:=Video Support
+  TITLE:=v4l2loopback kernel module
+  FILES:=$(PKG_BUILD_DIR)/v4l2loopback.ko
+  DEPENDS:=+kmod-video-core 
+  AUTOLOAD:=$(call AutoProbe,v4l2loopback)
+endef
+
+define KernelPackage/v4l2loopback/description
+  This module allows you to create "virtual video devices".
+  Normal (v4l2) applications will read these devices as if
+  they were ordinary video devices, but the video will not be
+  read from e.g. a capture card but instead it is generated
+  by another application. 
+endef
+
+MAKE_OPTS:= \
+	ARCH="$(LINUX_KARCH)" \
+	CROSS_COMPILE="$(TARGET_CROSS)" \
+	M="$(PKG_BUILD_DIR)"
+
+define Build/Compile
+	$(MAKE) -C "$(LINUX_DIR)" \
+		$(MAKE_OPTS) \
+		CONFIG_PACKAGE_kmod-v4l2loopback=m \
+		modules
+endef
+
+$(eval $(call KernelPackage,v4l2loopback))
+