From 43453ca90eeee7dde9e1b6faecc433aa4dc889b9 Mon Sep 17 00:00:00 2001 From: Andreas Grapentin Date: Fri, 31 Jan 2020 15:08:12 +0100 Subject: libre/ndiswrapper-module: added --- libre/ndiswrapper-module/PKGBUILD | 49 +++++++++++++++++++++ libre/ndiswrapper-module/kernel-5.3.patch | 69 +++++++++++++++++++++++++++++ libre/ndiswrapper-module/kernel-5.4.patch | 22 ++++++++++ libre/ndiswrapper-module/kernel-5.5.patch | 72 +++++++++++++++++++++++++++++++ 4 files changed, 212 insertions(+) create mode 100644 libre/ndiswrapper-module/PKGBUILD create mode 100644 libre/ndiswrapper-module/kernel-5.3.patch create mode 100644 libre/ndiswrapper-module/kernel-5.4.patch create mode 100644 libre/ndiswrapper-module/kernel-5.5.patch (limited to 'libre/ndiswrapper-module') 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 +# Contributor (Arch): maz-1 +# Contributor: Andreas Grapentin + +_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="$(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 ++#include + + .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 ++#include + + #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 -- cgit v1.2.3