diff --git a/README.md b/README.md index 52dd81d..9b5cf6d 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ and post in `Discussions` or `Issues`. ### Compatible Kernels - Kernels: 3.8 - 5.11 (Realtek) -- Kernels: 5.12 - 5.16 (community support) +- Kernels: 5.12 - 5.17 (community support) ### Tested Linux Distributions diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 0fb90ec..e1e4942 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -1634,7 +1634,11 @@ static int rtw_net_set_mac_address(struct net_device *pnetdev, void *addr) } _rtw_memcpy(adapter_mac_addr(padapter), sa->sa_data, ETH_ALEN); /* set mac addr to adapter */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)) + eth_hw_addr_set(pnetdev, sa->sa_data); +#else _rtw_memcpy(pnetdev->dev_addr, sa->sa_data, ETH_ALEN); /* set mac addr to net_device */ +#endif #if 0 if (rtw_is_hw_init_completed(padapter)) { @@ -2170,7 +2174,11 @@ int rtw_os_ndev_register(_adapter *adapter, const char *name) /* alloc netdev name */ rtw_init_netdev_name(ndev, name); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)) + eth_hw_addr_set(ndev, adapter_mac_addr(adapter)); +#else _rtw_memcpy(ndev->dev_addr, adapter_mac_addr(adapter), ETH_ALEN); +#endif /* Tell the network stack we exist */ diff --git a/os_dep/linux/rtw_proc.c b/os_dep/linux/rtw_proc.c index e055f05..1b0d362 100644 --- a/os_dep/linux/rtw_proc.c +++ b/os_dep/linux/rtw_proc.c @@ -37,6 +37,8 @@ inline struct proc_dir_entry *get_rtw_drv_proc(void) #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)) #define PDE_DATA(inode) PDE((inode))->data #define proc_get_parent_data(inode) PDE((inode))->parent->data +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)) +#define PDE_DATA(inode) pde_data(inode) #endif #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)) diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c index a6d36b6..119e408 100644 --- a/os_dep/osdep_service.c +++ b/os_dep/osdep_service.c @@ -1309,8 +1309,12 @@ u32 _rtw_down_sema(_sema *sema) inline void thread_exit(_completion *comp) { #ifdef PLATFORM_LINUX +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)) + kthread_complete_and_exit(comp, 0); +#else complete_and_exit(comp, 0); #endif +#endif #ifdef PLATFORM_FREEBSD printf("%s", "RTKTHREAD_exit");