From 28f226a0387fcbf70108bba839ff9b2e74a2b63e Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 21 Nov 2024 12:20:47 +0800 Subject: [PATCH] r8125: fix build with linux 6.9+ --- .../patches/100-kernel-6.9-support.patch | 104 ++++++++++++++++++ .../100-fix-build-with-linux-6.9.patch | 4 +- 2 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 package/kernel/r8125/patches/100-kernel-6.9-support.patch diff --git a/package/kernel/r8125/patches/100-kernel-6.9-support.patch b/package/kernel/r8125/patches/100-kernel-6.9-support.patch new file mode 100644 index 000000000..137692edc --- /dev/null +++ b/package/kernel/r8125/patches/100-kernel-6.9-support.patch @@ -0,0 +1,104 @@ +--- a/src/r8125_n.c ++++ b/src/r8125_n.c +@@ -7478,7 +7478,11 @@ + } + + 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 rtl8125_private *tp = netdev_priv(net); + struct ethtool_eee *eee = &tp->eee; +@@ -7511,9 +7515,15 @@ + + 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; + +@@ -7521,11 +7531,18 @@ + } + + 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 rtl8125_private *tp = netdev_priv(net); + struct ethtool_eee *eee = &tp->eee; + u64 advertising; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,9,0) ++ u32 adv; ++#endif + int rc = 0; + + if (!HW_HAS_WRITE_PHY_MCU_RAM_CODE(tp) || +@@ -7557,6 +7574,18 @@ + */ + + 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 %llu\n", ++ adv, advertising); ++ rc = -EINVAL; ++ goto out; ++ } ++#else + if (!edata->advertised) { + edata->advertised = advertising & eee->supported; + } else if (edata->advertised & ~advertising) { +@@ -7565,13 +7594,23 @@ + 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 + + //tp->eee.eee_enabled = edata->eee_enabled; + //tp->eee_adv_t = ethtool_adv_to_mmd_eee_adv_t(edata->advertised); +@@ -7579,7 +7618,11 @@ + dev_printk(KERN_WARNING, tp_to_dev(tp), "EEE tx_lpi_timer %x must be a subset of support %x\n", + edata->tx_lpi_timer, eee->tx_lpi_timer); + ++#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->tx_lpi_enabled = edata->tx_lpi_enabled; + //eee->tx_lpi_timer = edata->tx_lpi_timer; + eee->eee_enabled = edata->eee_enabled; diff --git a/package/kernel/r8126/patches/100-fix-build-with-linux-6.9.patch b/package/kernel/r8126/patches/100-fix-build-with-linux-6.9.patch index 53876f3db..a0b216285 100644 --- a/package/kernel/r8126/patches/100-fix-build-with-linux-6.9.patch +++ b/package/kernel/r8126/patches/100-fix-build-with-linux-6.9.patch @@ -1,5 +1,5 @@ ---- a/r8126_n.c -+++ b/r8126_n.c +--- a/src/r8126_n.c ++++ b/src/r8126_n.c @@ -6929,7 +6929,11 @@ rtl8126_device_lpi_t_to_ethtool_lpi_t(st }