From c08171e5444075344ff0a48e7cff606ff699151e Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Tue, 1 Sep 2026 22:23:00 +0100 Subject: [PATCH] Disable YT6801 private ioctl interface --- pkgbuilds/yt6801-dkms/.omarchy/package.json | 1 + pkgbuilds/yt6801-dkms/PKGBUILD | 15 ++- pkgbuilds/yt6801-dkms/patch.diff | 118 +++++++++----------- 3 files changed, 66 insertions(+), 68 deletions(-) diff --git a/pkgbuilds/yt6801-dkms/.omarchy/package.json b/pkgbuilds/yt6801-dkms/.omarchy/package.json index 436ae2c..6f152aa 100644 --- a/pkgbuilds/yt6801-dkms/.omarchy/package.json +++ b/pkgbuilds/yt6801-dkms/.omarchy/package.json @@ -1,4 +1,5 @@ { "source": "aur", + "sync": false, "upstream_commit": "020a0f11079cc974794e49856a1a98ab677570a9" } diff --git a/pkgbuilds/yt6801-dkms/PKGBUILD b/pkgbuilds/yt6801-dkms/PKGBUILD index 23b1076..f6627ed 100644 --- a/pkgbuilds/yt6801-dkms/PKGBUILD +++ b/pkgbuilds/yt6801-dkms/PKGBUILD @@ -2,8 +2,8 @@ _pkgbase=yt6801 pkgname=yt6801-dkms -pkgver=1.0.31 -pkgrel=2 +pkgver=1.0.34 +pkgrel=1 pkgdesc="Kernel module for Motorcomm YT6801 ethernet controller (DKMS)" arch=('x86_64') url="https://www.motor-comm.com/product/ethernet-control-chip" @@ -11,8 +11,8 @@ license=('GPL-2.0-or-later') depends=('dkms') source=(${_pkgbase}-${pkgver}.zip::'https://www.motor-comm.com/Cn/Skippower/downloadFile.html?id=1817' 'patch.diff') -sha256sums=('9ea62182bd520483df5fd3ec320262cbdddcc763f3128ae37abd26905a97e14c' - '6cdb77774c483b640c8f0499fd54a79e773cd3f96a426cd99eec385972d9d5bb') +sha256sums=('877e6953fc6eb47232a74e47b0daf33de0e7f9e9a395d3bc10d500d3c4150af8' + 'a48de70ede7d530383c26f17b2a292143ec3af5e6024c0f4403b954249f52058') prepare() { cd ${srcdir} @@ -21,6 +21,13 @@ prepare() { patch -p1 < patch.diff } +check() { + if grep -Eq '\.ndo_(do_ioctl|siocdevprivate)' ${srcdir}/src/fuxi-gmac-net.c || + grep -q 'fuxi-gmac-ioctl\.o' ${srcdir}/src/Makefile; then + return 1 + fi +} + package() { mkdir -p ${pkgdir}/usr/src/${_pkgbase}-${pkgver} diff --git a/pkgbuilds/yt6801-dkms/patch.diff b/pkgbuilds/yt6801-dkms/patch.diff index daebe0e..807b8a1 100644 --- a/pkgbuilds/yt6801-dkms/patch.diff +++ b/pkgbuilds/yt6801-dkms/patch.diff @@ -1,10 +1,9 @@ diff --git a/src/dkms.conf b/src/dkms.conf -index 78eaf8b..9d93675 100644 --- a/src/dkms.conf +++ b/src/dkms.conf @@ -1,8 +1,5 @@ PACKAGE_NAME="yt6801" - PACKAGE_VERSION="1.0.31" + PACKAGE_VERSION="1.0.34" -CLEAN="make clean" -MAKE[0]="make" BUILT_MODULE_NAME[0]="yt6801" @@ -12,67 +11,58 @@ index 78eaf8b..9d93675 100644 AUTOINSTALL="yes" -REMAKE_INITRD="yes" diff --git a/src/fuxi-gmac-net.c b/src/fuxi-gmac-net.c -index 3e643f9..fea4c97 100644 --- a/src/fuxi-gmac-net.c +++ b/src/fuxi-gmac-net.c -@@ -771,7 +771,9 @@ static void fxgmac_tx_hang_timer_handler(struct timer_list *t) - static void fxgmac_tx_hang_timer_handler(unsigned long data) - #endif - { --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,16,0)) -+ struct fxgmac_channel *channel = timer_container_of(channel, t, expansion.tx_hang_timer); -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)) - struct fxgmac_channel *channel = from_timer(channel, t, expansion.tx_hang_timer); - #else - struct fxgmac_channel *channel = (struct fxgmac_channel *)data; -diff --git a/src/fuxi-gmac-phy.c b/src/fuxi-gmac-phy.c -index 36d4fb3..8bd9533 100644 ---- a/src/fuxi-gmac-phy.c -+++ b/src/fuxi-gmac-phy.c -@@ -324,7 +324,9 @@ static void fxgmac_phy_link_poll(struct timer_list *t) - static void fxgmac_phy_link_poll(unsigned long data) - #endif - { --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,16,0)) -+ struct fxgmac_pdata *pdata = timer_container_of(pdata, t, expansion.phy_poll_tm); -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) - struct fxgmac_pdata *pdata = from_timer(pdata, t, expansion.phy_poll_tm); - #else - struct fxgmac_pdata *pdata = (struct fxgmac_pdata*)data; -@@ -352,7 +354,9 @@ static void fxgmac_phy_link_poll(unsigned long data) - - int fxgmac_phy_timer_init(struct fxgmac_pdata *pdata) - { --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,16,0)) -+ timer_init_key(&pdata->expansion.phy_poll_tm, NULL, 0, "fuxi_phy_link_update_timer", NULL); -+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) - init_timer_key(&pdata->expansion.phy_poll_tm, NULL, 0, "fuxi_phy_link_update_timer", NULL); - #else - init_timer_key(&pdata->expansion.phy_poll_tm, 0, "fuxi_phy_link_update_timer", NULL); -@@ -370,6 +374,10 @@ int fxgmac_phy_timer_init(struct fxgmac_pdata *pdata) - - void fxgmac_phy_timer_destroy(struct fxgmac_pdata *pdata) - { -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,15,0)) -+ timer_shutdown_sync(&pdata->expansion.phy_poll_tm); -+#else - del_timer_sync(&pdata->expansion.phy_poll_tm); -+#endif - DPRINTK("fxgmac_phy_timer removed\n"); - } -diff --git a/src/fuxi-gmac.h b/src/fuxi-gmac.h -index 539b507..2435f0c 100644 ---- a/src/fuxi-gmac.h -+++ b/src/fuxi-gmac.h -@@ -50,6 +50,8 @@ - #define FXGMAC_NS_IFA_LOCAL_LINK 1 - #define FXGMAC_NS_IFA_GLOBAL_UNICAST 2 - -+#define FXGMAC_INT_MODERATION_ENABLED 1 -+ - #define FXGMAX_ASPM_WAR_EN - /* Descriptor related parameters */ - #if FXGMAC_TX_HANG_TIMER_ENABLED +@@ -2133,41 +2133,0 @@ +-/* +- * cmd = [0x89F0, 0x89FF] +- * When using it, we must pay attention to the thread synchronization +- * of this interface. Because it's an external call that isn't +- * initiated by the OS. +- */ +-static int fxgmac_ioctl(struct net_device *netdev, +- struct ifreq *ifr, int cmd) +-{ +- struct file f; +- int ret = FXGMAC_SUCCESS; +- struct fxgmac_pdata *pdata = netdev_priv(netdev); +- +- if (!netif_running(netdev) || +- pdata->expansion.dev_state != FXGMAC_DEV_START) +- return -ENODEV; +- +- f.private_data = pdata; +- +- switch (cmd) { +- case FXGMAC_DEV_CMD: +- ret = fxgmac_netdev_ops_ioctl(&f, FXGMAC_IOCTL_DFS_COMMAND, (unsigned long)(ifr->ifr_data)); +- break; +- default: +- ret = -EINVAL; +- break; +- } +- +- return ret; +-} +- +-#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) ) +-static int fxgmac_siocdevprivate(struct net_device *dev, +- struct ifreq *ifr, +- void __user *data, +- int cmd) +-{ +- return fxgmac_ioctl(dev, ifr, cmd); +-} +-#endif +- +@@ -2369,4 +2328,0 @@ +- .ndo_do_ioctl = fxgmac_ioctl, +-#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(5,15,0) ) +- .ndo_siocdevprivate = fxgmac_siocdevprivate, +-#endif +diff --git a/src/Makefile b/src/Makefile +--- a/src/Makefile ++++ b/src/Makefile +@@ -70 +70 @@ +-yt6801-objs := fuxi-gmac-common.o fuxi-gmac-desc.o fuxi-gmac-ethtool.o fuxi-gmac-hw.o fuxi-gmac-net.o fuxi-gmac-pci.o fuxi-gmac-phy.o fuxi-efuse.o fuxi-gmac-ioctl.o ++yt6801-objs := fuxi-gmac-common.o fuxi-gmac-desc.o fuxi-gmac-ethtool.o fuxi-gmac-hw.o fuxi-gmac-net.o fuxi-gmac-pci.o fuxi-gmac-phy.o fuxi-efuse.o