summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Grapentin <andreas@grapentin.org>2020-01-31 15:08:12 +0100
committerAndreas Grapentin <andreas@grapentin.org>2020-01-31 15:11:18 +0100
commit43453ca90eeee7dde9e1b6faecc433aa4dc889b9 (patch)
treed4f297da9e9f8a24fa258c9c2797426da8efdaa2
parent02710d03959105e09429a0406d7f58996d24495e (diff)
libre/ndiswrapper-module: added
-rw-r--r--libre/ndiswrapper-module/PKGBUILD49
-rw-r--r--libre/ndiswrapper-module/kernel-5.3.patch69
-rw-r--r--libre/ndiswrapper-module/kernel-5.4.patch22
-rw-r--r--libre/ndiswrapper-module/kernel-5.5.patch72
4 files changed, 212 insertions, 0 deletions
diff --git a/libre/ndiswrapper-module/PKGBUILD b/libre/ndiswrapper-module/PKGBUILD
new file mode 100644
index 000000000..0678ece28
--- /dev/null
+++ b/libre/ndiswrapper-module/PKGBUILD
@@ -0,0 +1,49 @@
+# Maintainer (Arch): Felix Yan <felixonmars@archlinux.org>
+# Contributor (Arch): maz-1 <loveayawaka@gmail.com>
+# Contributor: Andreas Grapentin <andreas@grapentin.org>
+
+_basekernel=5.4.12-1
+
+pkgname=ndiswrapper-module
+pkgver=1.62
+pkgrel=24
+pkgrel+=.parabola1.basekernel${_basekernel%-*}
+pkgdesc="Module for NDIS (Windows Network Drivers) drivers supplied by vendors, kernel module for Linux kernel"
+pkgdesc+=' (built for the linux-libre kernel package)'
+arch=('x86_64')
+arch+=('i686')
+url="https://sourceforge.net/projects/ndiswrapper/"
+license=('GPL')
+makedepends=(linux-libre-headers=${_basekernel%-*} git libelf)
+conflicts=('ndiswrapper-arch')
+provides=('NDISWRAPPER-MODULE')
+replaces=('ndiswrapper-arch')
+source=("https://sourceforge.net/projects/ndiswrapper/files/stable/ndiswrapper-$pkgver.tar.gz"
+ 'kernel-5.3.patch' 'kernel-5.4.patch' 'kernel-5.5.patch')
+sha512sums=('a6e111bc699572642e44d6d31cc2f06374648a01b8dd7dd4e74d6ad5e187e39f99faee38f792c83a94d4618ae4d8866914fb3f60b1d80e838a753285ea7cf783'
+ 'c404f35280534b172235c5c578657d7a30ac2253c7c2abedd65a183d09390e95e7c3030cb409accb4d198ff0411482f8029f8664418c99d5672f92e9c733801d'
+ '36450042db79ed4545030276bff9db1bc9895259f38c1c0bf4dc238ad76ec61c2e08d437997dafd327f2a8fd1694d61e418941555e92144e3ec86c8066561429'
+ 'ed543cbfb236de0a20e1f164c22c83cd19aec416b5f50a58cee731857231c667d166c36814047174bddda36261af71e92ecdb2944e5b818a603085af279fbd89')
+
+prepare() {
+ cd ndiswrapper-$pkgver
+ patch --no-backup-if-mismatch -p2 -i "$srcdir"/kernel-5.3.patch
+ patch --no-backup-if-mismatch -p1 -i "$srcdir"/kernel-5.4.patch
+ patch --no-backup-if-mismatch -p1 -i "$srcdir"/kernel-5.5.patch
+}
+
+build() {
+ _kernver="$(</usr/src/linux-libre/version)"
+
+ cd ndiswrapper-$pkgver
+ make -C driver KVERS_UNAME="$_kernver"
+}
+
+package() {
+ depends=(linux-libre=${_basekernel%-*})
+
+ _extradir="/usr/lib/modules/$(</usr/src/linux-libre/version)/extramodules"
+ cd ndiswrapper-$pkgver
+ install -Dt "$pkgdir$_extradir" -m644 driver/*.ko
+ find "$pkgdir" -name '*.ko' -exec xz {} +
+}
diff --git a/libre/ndiswrapper-module/kernel-5.3.patch b/libre/ndiswrapper-module/kernel-5.3.patch
new file mode 100644
index 000000000..33e3ed3ba
--- /dev/null
+++ b/libre/ndiswrapper-module/kernel-5.3.patch
@@ -0,0 +1,69 @@
+diff --git a/ndiswrapper/driver/ntoskernel.c b/ndiswrapper/driver/ntoskernel.c
+index 4fe0dc1..4dd7a89 100644
+--- a/ndiswrapper/driver/ntoskernel.c
++++ b/ndiswrapper/driver/ntoskernel.c
+@@ -2524,7 +2524,11 @@ int ntoskernel_init(void)
+ info->task = NULL;
+ info->count = 0;
+ #ifdef CONFIG_SMP
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,3,0)
+ cpumask_setall(&info->cpus_allowed);
++#else
++ cpumask_setall(&info->cpus_mask);
++#endif
+ #endif
+ }
+ } while (0);
+diff --git a/ndiswrapper/driver/ntoskernel.h b/ndiswrapper/driver/ntoskernel.h
+index 3c4c6ff..8a71ae3 100644
+--- a/ndiswrapper/driver/ntoskernel.h
++++ b/ndiswrapper/driver/ntoskernel.h
+@@ -107,7 +107,11 @@ static cpumask_t cpumasks[NR_CPUS];
+ #endif /* CONFIG_SMP */
+
+ #ifndef tsk_cpus_allowed
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,3,0)
+ #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
++#else
++#define tsk_cpus_allowed(tsk) (&(tsk)->cpus_mask)
++#endif
+ #endif
+
+ #ifndef __packed
+@@ -631,7 +635,12 @@ struct irql_info {
+ int count;
+ struct mutex lock;
+ #ifdef CONFIG_SMP
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,3,0)
+ cpumask_t cpus_allowed;
++#else
++ const cpumask_t *cpus_ptr;
++ cpumask_t cpus_mask;
++#endif
+ #endif
+ struct task_struct *task;
+ };
+@@ -658,7 +667,11 @@ static inline KIRQL raise_irql(KIRQL newirql)
+ /* TODO: is this enough to pin down to current cpu? */
+ #ifdef CONFIG_SMP
+ assert(task_cpu(current) == smp_processor_id());
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,3,0)
+ cpumask_copy(&info->cpus_allowed, tsk_cpus_allowed(current));
++#else
++ cpumask_copy(&info->cpus_mask, tsk_cpus_allowed(current));
++#endif
+ set_cpus_allowed_ptr(current, cpumask_of(smp_processor_id()));
+ #endif
+ put_cpu_var(irql_info);
+@@ -682,7 +695,11 @@ static inline void lower_irql(KIRQL oldirql)
+ if (--info->count == 0) {
+ info->task = NULL;
+ #ifdef CONFIG_SMP
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,3,0)
+ set_cpus_allowed_ptr(current, &info->cpus_allowed);
++#else
++ set_cpus_allowed_ptr(current, &info->cpus_mask);
++#endif
+ #endif
+ mutex_unlock(&info->lock);
+ }
diff --git a/libre/ndiswrapper-module/kernel-5.4.patch b/libre/ndiswrapper-module/kernel-5.4.patch
new file mode 100644
index 000000000..9e3212d82
--- /dev/null
+++ b/libre/ndiswrapper-module/kernel-5.4.patch
@@ -0,0 +1,22 @@
+diff -u -r ndiswrapper-1.62/driver/wrapndis.c ndiswrapper-1.62-5.4/driver/wrapndis.c
+--- ndiswrapper-1.62/driver/wrapndis.c 2019-02-11 04:11:14.000000000 +0000
++++ ndiswrapper-1.62-5.4/driver/wrapndis.c 2019-11-26 00:02:39.035464963 +0000
+@@ -457,10 +457,18 @@
+ for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
+ skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
+ sg_element++;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0)
+ sg_element->length = frag->size;
++#else
++ sg_element->length = skb_frag_size(frag);
++#endif
+ sg_element->address =
+ pci_map_page(wnd->wd->pci.pdev, skb_frag_page(frag),
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0)
+ frag->page_offset, frag->size,
++#else
++ skb_frag_off(frag), skb_frag_size(frag),
++#endif
+ PCI_DMA_TODEVICE);
+ TRACE3("%llx, %u", sg_element->address, sg_element->length);
+ }
diff --git a/libre/ndiswrapper-module/kernel-5.5.patch b/libre/ndiswrapper-module/kernel-5.5.patch
new file mode 100644
index 000000000..c128a5578
--- /dev/null
+++ b/libre/ndiswrapper-module/kernel-5.5.patch
@@ -0,0 +1,72 @@
+diff -u -r ndiswrapper-1.62-5.4/driver/lin2win.S ndiswrapper-1.62-5.5/driver/lin2win.S
+--- ndiswrapper-1.62-5.4/driver/lin2win.S 2019-02-11 04:11:14.000000000 +0000
++++ ndiswrapper-1.62-5.5/driver/lin2win.S 2020-01-27 22:33:17.363779223 +0000
+@@ -14,6 +14,7 @@
+ */
+
+ #include <linux/linkage.h>
++#include <linux/version.h>
+
+ .text
+
+@@ -71,8 +72,12 @@
+ * We get (ARGC + 1) arguments.
+ */
+ .macro lin2win name, argc
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,5,0)
+ .type \name, @function
+ ENTRY(\name)
++#else
++ SYM_FUNC_START(\name)
++#endif
+
+ /* Create a call frame - it's optional, but good for debugging */
+ .cfi_startproc
+@@ -125,7 +130,11 @@
+ .cfi_restore %rbp
+ ret
+ .cfi_endproc
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,5,0)
+ .size \name, (. - \name)
++#else
++ SYM_FUNC_END(\name)
++#endif
+ .endm
+
+ /* Define lin2winN functions */
+diff -u -r ndiswrapper-1.62-5.4/driver/win2lin_stubs.S ndiswrapper-1.62-5.5/driver/win2lin_stubs.S
+--- ndiswrapper-1.62-5.4/driver/win2lin_stubs.S 2019-02-11 04:11:14.000000000 +0000
++++ ndiswrapper-1.62-5.5/driver/win2lin_stubs.S 2020-01-27 22:33:20.867163026 +0000
+@@ -14,6 +14,7 @@
+ */
+
+ #include <linux/linkage.h>
++#include <linux/version.h>
+
+ #ifdef CONFIG_X86_64
+
+@@ -141,8 +142,12 @@
+
+ /* Declare function LONGNAME, call function SHORTNAME with ARGC arguments */
+ .macro win2linm longname, shortname, argc
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,5,0)
+ .type \longname, @function
+ ENTRY(\longname)
++#else
++ SYM_FUNC_START(\longname)
++#endif
+
+ /* Create a call frame - it's optional, but good for debugging */
+ .cfi_startproc
+@@ -243,7 +248,11 @@
+ .cfi_restore %rbp
+ ret
+ .cfi_endproc
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,5,0)
+ .size \longname, (. - \longname)
++#else
++ SYM_FUNC_END(\longname)
++#endif
+ .endm
+
+ #define win2lin(name, argc) win2linm win2lin_ ## name ## _ ## argc, name, argc