--- r8101-1.032.04/src/r8101_n.c.old +++ r8101-1.032.04/src/r8101_n.c @@ -211,7 +211,11 @@ static void rtl8101_dsm(struct net_device *dev, int dev_state); +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) static void rtl8101_esd_timer(unsigned long __opaque); +#else +static void rtl8101_esd_timer(struct timer_list *timer_list); +#endif static void rtl8101_hw_phy_config(struct net_device *dev); @@ -220,7 +224,12 @@ static void rtl8101_tx_clear(struct rtl8101_private *tp); static void rtl8101_rx_clear(struct rtl8101_private *tp); +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) static void rtl8101_link_timer(unsigned long __opaque); +#else +static void rtl8101_link_timer(struct timer_list *timer_list); +#endif + static void rtl8101_aspm_fix1(struct net_device *dev); static int rtl8101_open(struct net_device *dev); @@ -9132,8 +9141,11 @@ { struct rtl8101_private *tp = netdev_priv(dev); struct timer_list *timer = &tp->link_timer; - - setup_timer(timer, rtl8101_link_timer, (unsigned long)dev); +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) + setup_timer(timer, rtl8101_link_timer, (unsigned long)tp); +#else + timer_setup(timer, rtl8101_link_timer, 0); +#endif mod_timer(timer, jiffies + RTL8101_LINK_TIMEOUT); } @@ -9147,7 +9159,11 @@ struct rtl8101_private *tp = netdev_priv(dev); struct timer_list *timer = &tp->esd_timer; - setup_timer(timer, rtl8101_esd_timer, (unsigned long)dev); +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) + setup_timer(timer, rtl8101_esd_timer, (unsigned long)tp); +#else + timer_setup(timer, rtl8101_esd_timer, 0); +#endif mod_timer(timer, jiffies + RTL8101_ESD_TIMEOUT); } @@ -10486,10 +10502,16 @@ } static void +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) rtl8101_esd_timer(unsigned long __opaque) { - struct net_device *dev = (struct net_device *)__opaque; - struct rtl8101_private *tp = netdev_priv(dev); + struct rtl8101_private *tp = (struct rtl8101_private *)__opaque; +#else +rtl8101_esd_timer(struct timer_list *timer_list) +{ + struct rtl8101_private *tp = container_of(timer_list, struct rtl8101_private, esd_timer); +#endif + struct net_device *dev = tp->dev; struct pci_dev *pdev = tp->pci_dev; struct timer_list *timer = &tp->esd_timer; unsigned long timeout = RTL8101_ESD_TIMEOUT; @@ -10597,10 +10619,16 @@ } static void +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0) rtl8101_link_timer(unsigned long __opaque) { - struct net_device *dev = (struct net_device *)__opaque; - struct rtl8101_private *tp = netdev_priv(dev); + struct rtl8101_private *tp = (struct rtl8101_private *)__opaque; +#else +rtl8101_link_timer(struct timer_list *timer_list) +{ + struct rtl8101_private *tp = container_of(timer_list, struct rtl8101_private, link_timer); +#endif + struct net_device *dev = tp->dev; struct timer_list *timer = &tp->link_timer; unsigned long flags;