[packages/r8168] - fix building with kernel 6.9

baggins baggins at pld-linux.org
Tue May 28 02:05:07 CEST 2024


commit 9ca469b1165a0a1ae40687dc525bb7a6cdefe259
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Tue May 28 00:08:25 2024 +0200

    - fix building with kernel 6.9
    
    https://github.com/mtorromeo/r8168/pull/60/commits/94426e16197c244d03aad0434e3490acdaa830fe

 kernel-6.9.patch | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 r8168.spec       |   4 +-
 2 files changed, 122 insertions(+), 1 deletion(-)
---
diff --git a/r8168.spec b/r8168.spec
index 3509cd3..6816c01 100644
--- a/r8168.spec
+++ b/r8168.spec
@@ -4,7 +4,7 @@
 # nothing to be placed to debuginfo package
 %define		_enable_debug_packages	0
 
-%define		rel	0.1
+%define		rel	1
 %define		pname	r8168
 Summary:	Linux driver for RTL8111/8168B PCI Express Gigabit Ethernet controllers
 Summary(pl.UTF-8):	Linuksowy sterownik dla kart sieciowych RTL8111/8168B PCI Express Gigabit Ethernet
@@ -19,6 +19,7 @@ URL:		http://www.realtek.com.tw/
 # unfortunately this download is not DF-friendly.
 Source0:	%{pname}-%{version}.tar.bz2
 # Source0-md5:	6323d3ed1b01bf2e78b4a235c6eae4db
+Patch0:		kernel-6.9.patch
 BuildRequires:	rpmbuild(macros) >= 1.701
 %{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.20.2}
 BuildRoot:	%{tmpdir}/%{pname}-%{version}-root-%(id -u -n)
@@ -70,6 +71,7 @@ Express Gigabit Ethernet.\
 
 %prep
 %setup -q -n %{pname}-%{version}
+%patch0 -p1
 
 %build
 %{expand:%build_kernel_packages}
diff --git a/kernel-6.9.patch b/kernel-6.9.patch
new file mode 100644
index 0000000..526805c
--- /dev/null
+++ b/kernel-6.9.patch
@@ -0,0 +1,119 @@
+From 94426e16197c244d03aad0434e3490acdaa830fe Mon Sep 17 00:00:00 2001
+From: Masato TOYOSHIMA <phoepsilonix at phoepsilonix.love>
+Date: Tue, 14 May 2024 14:52:58 +0900
+Subject: [PATCH] Linux 6.9 compat: change to ethtool_keee from ethtool_eee
+
+linux/include/linux/ethtool.h
+
+struct ethtool_ops
+    int (*get_eee)(struct net_device *dev, struct ethtool_keee *eee);
+    int (*set_eee)(struct net_device *dev, struct ethtool_keee *eee);
+
+change to ethtool_keee from ethtool_eee
+    rtl_ethtool_get_eee(struct net_device *net, struct ethtool_keee *edata)
+    rtl_ethtool_set_eee(struct net_device *net, struct ethtool_keee *edata)
+---
+ src/r8168_n.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+
+diff --git a/src/r8168_n.c b/src/r8168_n.c
+index ad63f42..3d67641 100755
+--- a/src/r8168_n.c
++++ b/src/r8168_n.c
+@@ -7941,7 +7941,11 @@ rtl8168_device_lpi_t_to_ethtool_lpi_t(struct rtl8168_private *tp , u32 lpi_timer
+ }
+ 
+ static int
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,9,0)
++rtl_ethtool_get_eee(struct net_device *net, struct ethtool_keee *edata)
++#else
+ rtl_ethtool_get_eee(struct net_device *net, struct ethtool_eee *edata)
++#endif
+ {
+         struct rtl8168_private *tp = netdev_priv(net);
+         struct ethtool_eee *eee = &tp->eee;
+@@ -7975,9 +7979,15 @@ rtl_ethtool_get_eee(struct net_device *net, struct ethtool_eee *edata)
+ 
+         edata->eee_enabled = !!val;
+         edata->eee_active = !!(supported & adv & lp);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,9,0)
++        ethtool_convert_legacy_u32_to_link_mode(edata->supported, supported);
++        ethtool_convert_legacy_u32_to_link_mode(edata->advertised, adv);
++        ethtool_convert_legacy_u32_to_link_mode(edata->lp_advertised, lp);
++#else
+         edata->supported = supported;
+         edata->advertised = adv;
+         edata->lp_advertised = lp;
++#endif
+         edata->tx_lpi_enabled = edata->eee_enabled;
+         edata->tx_lpi_timer = tx_lpi_timer;
+ 
+@@ -7985,11 +7995,19 @@ rtl_ethtool_get_eee(struct net_device *net, struct ethtool_eee *edata)
+ }
+ 
+ static int
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,9,0)
++rtl_ethtool_set_eee(struct net_device *net, struct ethtool_keee *edata)
++#else
+ rtl_ethtool_set_eee(struct net_device *net, struct ethtool_eee *edata)
++#endif
+ {
+         struct rtl8168_private *tp = netdev_priv(net);
+         struct ethtool_eee *eee = &tp->eee;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,9,0)
++        u32 advertising, adv;
++#else
+         u32 advertising;
++#endif
+         int rc = 0;
+ 
+         if (!rtl8168_support_eee(tp))
+@@ -8013,6 +8031,18 @@ rtl_ethtool_set_eee(struct net_device *net, struct ethtool_eee *edata)
+         }
+ 
+         advertising = tp->advertising;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,9,0)
++        ethtool_convert_link_mode_to_legacy_u32(&adv, edata->advertised);
++        if (linkmode_empty(edata->advertised)) {
++                adv = advertising & eee->supported;
++                ethtool_convert_legacy_u32_to_link_mode(edata->advertised, adv);
++        } else if (!linkmode_empty(edata->advertised) & ~advertising) {
++                dev_printk(KERN_WARNING, tp_to_dev(tp), "EEE advertised %x must be a subset of autoneg advertised speeds %x\n",
++                           adv, advertising);
++                rc = -EINVAL;
++                goto out;
++        }
++#else
+         if (!edata->advertised) {
+                 edata->advertised = advertising & eee->supported;
+         } else if (edata->advertised & ~advertising) {
+@@ -8021,15 +8051,29 @@ rtl_ethtool_set_eee(struct net_device *net, struct ethtool_eee *edata)
+                 rc = -EINVAL;
+                 goto out;
+         }
++#endif
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,9,0)
++        if (!linkmode_empty(edata->advertised) & ~eee->supported) {
++                dev_printk(KERN_WARNING, tp_to_dev(tp), "EEE advertised %x must be a subset of support %x\n",
++                           adv, eee->supported);
++                rc = -EINVAL;
++                goto out;
++        }
++#else
+         if (edata->advertised & ~eee->supported) {
+                 dev_printk(KERN_WARNING, tp_to_dev(tp), "EEE advertised %x must be a subset of support %x\n",
+                            edata->advertised, eee->supported);
+                 rc = -EINVAL;
+                 goto out;
+         }
++#endif
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,9,0)
++        ethtool_convert_link_mode_to_legacy_u32(&eee->advertised, edata->advertised);
++#else
+         eee->advertised = edata->advertised;
++#endif
+         eee->eee_enabled = edata->eee_enabled;
+ 
+         if (eee->eee_enabled)
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/r8168.git/commitdiff/9ca469b1165a0a1ae40687dc525bb7a6cdefe259



More information about the pld-cvs-commit mailing list