From 92578caeca68b4a376afabfdee1b60d5a69b4d99 Mon Sep 17 00:00:00 2001 From: msylgj <1388852+msylgj@users.noreply.github.com> Date: Wed, 2 Mar 2022 22:44:14 +0800 Subject: [PATCH] r8168: add support for kernel over 5.10 --- ...168-add-support-for-kernel-over-5.10.patch | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 package/kernel/r8168/patches/002-r8168-add-support-for-kernel-over-5.10.patch diff --git a/package/kernel/r8168/patches/002-r8168-add-support-for-kernel-over-5.10.patch b/package/kernel/r8168/patches/002-r8168-add-support-for-kernel-over-5.10.patch new file mode 100644 index 0000000000..10519448e7 --- /dev/null +++ b/package/kernel/r8168/patches/002-r8168-add-support-for-kernel-over-5.10.patch @@ -0,0 +1,50 @@ +--- a/src/r8168_n.c 2021-07-05 01:30:48.000000000 +0100 ++++ b/src/r8168_n.c 2022-02-02 09:13:11.165555448 +0000 +@@ -96,6 +96,10 @@ + #include + #endif + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)) ++#define PDE_DATA pde_data ++#endif ++ + #define FIRMWARE_8168D_1 "rtl_nic/rtl8168d-1.fw" + #define FIRMWARE_8168D_2 "rtl_nic/rtl8168d-2.fw" + #define FIRMWARE_8168E_1 "rtl_nic/rtl8168e-1.fw" +@@ -524,6 +528,12 @@ + + MODULE_VERSION(RTL8168_VERSION); + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) ++static inline void dev_addr_mod(struct net_device *dev, unsigned int offset, const void *addr, size_t len) { ++ memcpy(&dev->dev_addr[offset], addr, len); ++} ++#endif ++ + static void rtl8168_sleep_rx_enable(struct net_device *dev); + static void rtl8168_dsm(struct net_device *dev, int dev_state); + +@@ -24146,11 +24156,13 @@ + } + + rtl8168_rar_set(tp, mac_addr); + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0) + for (i = 0; i < MAC_ADDR_LEN; i++) { + dev->dev_addr[i] = RTL_R8(tp, MAC0 + i); + tp->org_mac_addr[i] = dev->dev_addr[i]; /* keep the original MAC address */ + } ++#endif + #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,13) + memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len); + #endif +@@ -24178,9 +24190,9 @@ + return -EADDRNOTAVAIL; + + spin_lock_irqsave(&tp->lock, flags); +- +- memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); ++ dev_addr_mod(dev, 0, addr->sa_data, dev->addr_len); ++ /* memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);*/ + + rtl8168_rar_set(tp, dev->dev_addr);