+diff --git a/src/r8168_n.c b/src/r8168_n.c\r
+index 4cd540a..2dbb726 100755\r
+--- a/src/r8168_n.c\r
++++ b/src/r8168_n.c\r
+@@ -407,8 +407,14 @@ MODULE_VERSION(RTL8168_VERSION);\r
+ static void rtl8168_sleep_rx_enable(struct net_device *dev);\r
+ static void rtl8168_dsm(struct net_device *dev, int dev_state);\r
+ \r
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)\r
++static void rtl8168_esd_timer(struct timer_list *timer);\r
++static void rtl8168_link_timer(struct timer_list *timer);\r
++#else\r
+ static void rtl8168_esd_timer(unsigned long __opaque);\r
+ static void rtl8168_link_timer(unsigned long __opaque);\r
++#endif//LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)\r
++\r
+ static void rtl8168_tx_clear(struct rtl8168_private *tp);\r
+ static void rtl8168_rx_clear(struct rtl8168_private *tp);\r
+ \r
+@@ -22964,7 +22970,11 @@ static inline void rtl8168_request_esd_timer(struct net_device *dev)\r
+ struct rtl8168_private *tp = netdev_priv(dev);\r
+ struct timer_list *timer = &tp->esd_timer;\r
+ \r
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)\r
++ timer_setup(timer, rtl8168_esd_timer, 0);\r
++#else\r
+ setup_timer(timer, rtl8168_esd_timer, (unsigned long)dev);\r
++#endif//LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)\r
+ mod_timer(timer, jiffies + RTL8168_ESD_TIMEOUT);\r
+ }\r
+ \r
+@@ -22978,7 +22988,11 @@ static inline void rtl8168_request_link_timer(struct net_device *dev)\r
+ struct rtl8168_private *tp = netdev_priv(dev);\r
+ struct timer_list *timer = &tp->link_timer;\r
+ \r
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)\r
++ timer_setup(timer, rtl8168_link_timer, 0);\r
++#else\r
+ setup_timer(timer, rtl8168_link_timer, (unsigned long)dev);\r
++#endif//LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)\r
+ mod_timer(timer, jiffies + RTL8168_LINK_TIMEOUT);\r
+ }\r
+ \r
+@@ -24717,12 +24731,19 @@ err_out:\r
+ #define PCI_DEVICE_SERIAL_NUMBER (0x0164)\r
+ \r
+ static void\r
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)\r
++rtl8168_esd_timer(struct timer_list *timer)\r
++{\r
++ struct rtl8168_private *tp = from_timer(tp, timer, esd_timer);\r
++ struct net_device *dev = tp->dev;\r
++#else\r
+ rtl8168_esd_timer(unsigned long __opaque)\r
+ {\r
+ struct net_device *dev = (struct net_device *)__opaque;\r
+ struct rtl8168_private *tp = netdev_priv(dev);\r
+- struct pci_dev *pdev = tp->pci_dev;\r
+ struct timer_list *timer = &tp->esd_timer;\r
++#endif//LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)\r
++ struct pci_dev *pdev = tp->pci_dev;\r
+ unsigned long timeout = RTL8168_ESD_TIMEOUT;\r
+ unsigned long flags;\r
+ u8 cmd;\r
+@@ -24856,11 +24877,18 @@ rtl8168_esd_timer(unsigned long __opaque)\r
+ }\r
+ \r
+ static void\r
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)\r
++rtl8168_link_timer(struct timer_list *timer)\r
++{\r
++ struct rtl8168_private *tp = from_timer(tp, timer, link_timer);\r
++ struct net_device *dev = tp->dev;\r
++#else\r
+ rtl8168_link_timer(unsigned long __opaque)\r
+ {\r
+ struct net_device *dev = (struct net_device *)__opaque;\r
+ struct rtl8168_private *tp = netdev_priv(dev);\r
+ struct timer_list *timer = &tp->link_timer;\r
++#endif//LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)\r
+ unsigned long flags;\r
+ \r
+ spin_lock_irqsave(&tp->lock, flags);
\ No newline at end of file