summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD7
-rw-r--r--legacy-wireless-ioctls-4.9+.patch79
3 files changed, 89 insertions, 3 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 9268db592820..494edb16c649 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,8 +1,8 @@
# Generated by makepkg 5.1.3
-# Thu Aug 8 05:24:41 UTC 2019
+# Fri Sep 20 13:08:48 UTC 2019
pkgbase = linux-shmilee
pkgver = 4.19.64
- pkgrel = 1
+ pkgrel = 2
url = https://www.kernel.org/
arch = x86_64
license = GPL2
@@ -24,6 +24,7 @@ pkgbase = linux-shmilee
source = https://raw.githubusercontent.com/dolohow/uksm/c4fc85e4e513f97c38806358c472cc45270d936f/uksm-4.19.patch
source = uksm-patch-for-4.19.37+.patch
source = linux-cjktty-4.19.patch::https://github.com/torvalds/linux/compare/v4.19...Gentoo-zh:4.19-utf8.patch
+ source = legacy-wireless-ioctls-4.9+.patch
source = config
source = 60-linux.hook
source = 90-linux.hook
@@ -40,6 +41,7 @@ pkgbase = linux-shmilee
sha256sums = ec617b1718e6cadfad02c75aca9c4b0e6b6f944bc1a93b7e4d82c847c04b5653
sha256sums = fe32296cad05b08b34369ac49a226ae9591890fb106d0c6bc5b8f690f8d553b3
sha256sums = 72be48252f30bc644071bbce2607b773f789c6f19e281b89ab7e16a3d8161ed3
+ sha256sums = edfb9939840b8710d6ee0385a8e968609eef348295465bb087744c18ed3496e0
sha256sums = 2eb7ec27f3dea53b0aac9ad665195df63e03598a89b6dd1c00af8d2738be88df
sha256sums = ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21
sha256sums = 75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919
diff --git a/PKGBUILD b/PKGBUILD
index c5631bc2986b..2ed76b8c66ab 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -40,7 +40,7 @@ pkgbase=linux-shmilee
pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
_srcname=linux-${_LLL_VER}
pkgver=${_LLL_VER}.${_LLL_SUBVER}
-pkgrel=1
+pkgrel=2
arch=('x86_64')
url="https://www.kernel.org/"
license=('GPL2')
@@ -58,6 +58,7 @@ source=(
${_UKSM_PATCH}
'uksm-patch-for-4.19.37+.patch'
${_CJKTTY_PATCH}
+ 'legacy-wireless-ioctls-4.9+.patch'
'config' # the main kernel config file
'60-linux.hook' # pacman hook for depmod
'90-linux.hook' # pacman hook for initramfs regeneration
@@ -78,6 +79,7 @@ sha256sums=('0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1'
'ec617b1718e6cadfad02c75aca9c4b0e6b6f944bc1a93b7e4d82c847c04b5653'
'fe32296cad05b08b34369ac49a226ae9591890fb106d0c6bc5b8f690f8d553b3'
'72be48252f30bc644071bbce2607b773f789c6f19e281b89ab7e16a3d8161ed3'
+ 'edfb9939840b8710d6ee0385a8e968609eef348295465bb087744c18ed3496e0'
'2eb7ec27f3dea53b0aac9ad665195df63e03598a89b6dd1c00af8d2738be88df'
'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21'
'75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919'
@@ -113,6 +115,9 @@ prepare() {
cp "../${_CJKTTY_PATCH_FILE}" "../${_CJKTTY_PATCH_FILE}.${_LLL_SUBVER}.patch"
patch -Np1 -i "../${_CJKTTY_PATCH_FILE}.${_LLL_SUBVER}.patch"
+ msg "Patching source to reinstate the legacy wireless ioctls"
+ patch -Np2 -i ../legacy-wireless-ioctls-4.9+.patch
+
cp -Tf ../config .config
if [ "${_kernelname}" != "" ]; then
diff --git a/legacy-wireless-ioctls-4.9+.patch b/legacy-wireless-ioctls-4.9+.patch
new file mode 100644
index 000000000000..715325283ff9
--- /dev/null
+++ b/legacy-wireless-ioctls-4.9+.patch
@@ -0,0 +1,79 @@
+fix: ioctl[RTL_IOCTL_HOSTAPD]: Operation not supported
+from: https://github.com/lwfinger/rtl8188eu/issues/257
+author: Ablinne
+url: https://pastebin.com/2nmLS4d6
+
+--- src_orig/archlinux-linux/net/wireless/wext-core.c 2018-12-07 15:55:27.385876108 +0100
++++ src/archlinux-linux/net/wireless/wext-core.c 2018-12-07 13:40:56.138049613 +0100
+@@ -912,12 +912,13 @@
+ * Main IOCTl dispatcher.
+ * Check the type of IOCTL and call the appropriate wrapper...
+ */
+-static int wireless_process_ioctl(struct net *net, struct iwreq *iwr,
++static int wireless_process_ioctl(struct net *net, struct ifreq *ifr,
+ unsigned int cmd,
+ struct iw_request_info *info,
+ wext_ioctl_func standard,
+ wext_ioctl_func private)
+ {
++ struct iwreq *iwr = (struct iwreq *) ifr;
+ struct net_device *dev;
+ iw_handler handler;
+
+@@ -925,7 +926,7 @@
+ * The copy_to/from_user() of ifr is also dealt with in there */
+
+ /* Make sure the device exist */
+- if ((dev = __dev_get_by_name(net, iwr->ifr_name)) == NULL)
++ if ((dev = __dev_get_by_name(net, ifr->ifr_name)) == NULL)
+ return -ENODEV;
+
+ /* A bunch of special cases, then the generic case...
+@@ -954,6 +955,9 @@
+ else if (private)
+ return private(dev, iwr, cmd, info, handler);
+ }
++ /* Old driver API : call driver ioctl handler */
++ if (dev->netdev_ops->ndo_do_ioctl)
++ return dev->netdev_ops->ndo_do_ioctl(dev, ifr, cmd);
+ return -EOPNOTSUPP;
+ }
+
+@@ -971,7 +975,7 @@
+ }
+
+ /* entry point from dev ioctl */
+-static int wext_ioctl_dispatch(struct net *net, struct iwreq *iwr,
++static int wext_ioctl_dispatch(struct net *net, struct ifreq *ifr,
+ unsigned int cmd, struct iw_request_info *info,
+ wext_ioctl_func standard,
+ wext_ioctl_func private)
+@@ -981,9 +985,9 @@
+ if (ret)
+ return ret;
+
+- dev_load(net, iwr->ifr_name);
++ dev_load(net, ifr->ifr_name);
+ rtnl_lock();
+- ret = wireless_process_ioctl(net, iwr, cmd, info, standard, private);
++ ret = wireless_process_ioctl(net, ifr, cmd, info, standard, private);
+ rtnl_unlock();
+
+ return ret;
+@@ -1044,7 +1048,7 @@
+
+ iwr.ifr_name[sizeof(iwr.ifr_name) - 1] = 0;
+
+- ret = wext_ioctl_dispatch(net, &iwr, cmd, &info,
++ ret = wext_ioctl_dispatch(net, (struct ifreq *) &iwr, cmd, &info,
+ ioctl_standard_call,
+ ioctl_private_call);
+ if (ret >= 0 &&
+@@ -1106,7 +1110,7 @@
+ info.cmd = cmd;
+ info.flags = IW_REQUEST_FLAG_COMPAT;
+
+- ret = wext_ioctl_dispatch(net, &iwr, cmd, &info,
++ ret = wext_ioctl_dispatch(net, (struct ifreq *) &iwr, cmd, &info,
+ compat_standard_call,
+ compat_private_call);