awesometic / realtek-r8125-dkms

A DKMS package for easy use of Realtek r8125 driver, which supports 2.5 GbE.
GNU General Public License v2.0
328 stars 65 forks source link

manjaro 6.9.1 内核 #56

Open kuailecs54 opened 1 month ago

kuailecs54 commented 1 month ago

manjaro 6.9.1 无法使用 安装脚本 6.8.9内核 可使用

kuailecs54 commented 1 month ago

请教一下 我需要修改什么来 在6.9.1 内核中使用

awesometic commented 1 month ago

Hello,

Could you paste an error message when you're installing the package?

LsnmxNB commented 1 month ago

https://www.realtek.com/Download/List?cate_id=584

参考,6.8可以

stefanh-it commented 1 month ago

Please see all of the issues when trying to build this driver on kernel version 6.9.1 both as DKMS and directly from the upstream, running on archlinux, same behaviour across zen and arch kernel.

output of dkms build log file when upgrading from linux-6.8.9 to linux-6.9.2:

DKMS make.log for r8125-9.013.02 for kernel 6.8.9-zen1-1-zen (x86_64)
So 26 Mai 2024 23:14:32 CEST
/bin/sh: line 1: VER: command not found
make -C src/ KVER=6.8.9-zen1-1-zen BASEDIR=/lib/modules/6.9.2-zen1-1-zen modules
make[1]: Entering directory '/var/lib/dkms/r8125/9.013.02/build/src'
find: ‘/lib/modules/6.9.2-zen1-1-zen/kernel/drivers/net/ethernet’: No such file or directory
find: ‘/lib/modules/6.9.2-zen1-1-zen/kernel/drivers/net’: No such file or directory
make -C /lib/modules/6.9.2-zen1-1-zen/build M=/var/lib/dkms/r8125/9.013.02/build/src modules
make[2]: Entering directory '/var/lib/dkms/r8125/9.013.02/build/src'
make[2]: *** /lib/modules/6.9.2-zen1-1-zen/build: No such file or directory.  Stop.
make[2]: Leaving directory '/var/lib/dkms/r8125/9.013.02/build/src'
make[1]: *** [Makefile:188: modules] Error 2
make[1]: Leaving directory '/var/lib/dkms/r8125/9.013.02/build/src'
make: *** [Makefile:42: modules] Error 2

Install upstream source / Realtek website, I get this interesting result:

/home/st/Documents/RealTek-Driver/r8125-9.013.02/src/r8125_n.c:7682:20: error: initialization of ‘int (*)(struct net_device *, struct ethtool_keee *)’ from incompatible pointer type ‘int (*)(struct net_device *, struct ethtool_eee *)’ [-Wincompatible-pointer-types]
 7682 |         .get_eee = rtl_ethtool_get_eee,
      |                    ^~~~~~~~~~~~~~~~~~~
/home/st/Documents/RealTek-Driver/r8125-9.013.02/src/r8125_n.c:7682:20: note: (near initialization for ‘rtl8125_ethtool_ops.get_eee’)
/home/st/Documents/RealTek-Driver/r8125-9.013.02/src/r8125_n.c:7683:20: error: initialization of ‘int (*)(struct net_device *, struct ethtool_keee *)’ from incompatible pointer type ‘int (*)(struct net_device *, struct ethtool_eee *)’ [-Wincompatible-pointer-types]
 7683 |         .set_eee = rtl_ethtool_set_eee,
      |                    ^~~~~~~~~~~~~~~~~~~
/home/st/Documents/RealTek-Driver/r8125-9.013.02/src/r8125_n.c:7683:20: note: (near initialization for ‘rtl8125_ethtool_ops.set_eee’)
make[4]: *** [scripts/Makefile.build:244: /home/st/Documents/RealTek-Driver/r8125-9.013.02/src/r8125_n.o] Error 1
make[3]: *** [/usr/lib/modules/6.9.2-zen1-1-zen/build/Makefile:1917: /home/st/Documents/RealTek-Driver/r8125-9.013.02/src] Error 2
make[2]: *** [Makefile:240: __sub-make] Error 2
make[1]: *** [Makefile:188: modules] Error 2
make: *** [Makefile:41: modules] Error 2
awesometic commented 1 month ago

In kernel 6.9, there is a new network structure ethtool_keee that wraps ethtool_eee, which the current source uses.

Applying this makes things be changed to use keee to get eee properties.

So maybe we need to edit all of the parts related to that, not just change the variable/structure name but some simple logic to get the eee's properties where it needs. 🤔

For the best stability, I think we should wait for the official version by Realtek that supports kernel 6.9 or above.