From 5bb4bffa971da0532ffe79f1304c7cd0ad352db8 Mon Sep 17 00:00:00 2001 From: Shmuel H Date: Sat, 7 May 2022 14:05:45 +0300 Subject: [PATCH 1/2] linux: set netdev macaddr using dev_addr_set dev_addr is const now, therefore, we have to use dev_addr_set in order to modify it. --- include/drv_types_linux.h | 3 +++ os_dep/linux/ioctl_linux.c | 2 +- os_dep/linux/mlme_linux.c | 2 +- os_dep/linux/os_intfs.c | 8 ++++---- os_dep/osdep_service.c | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/include/drv_types_linux.h b/include/drv_types_linux.h index 91ca68b..85fd09e 100644 --- a/include/drv_types_linux.h +++ b/include/drv_types_linux.h @@ -15,5 +15,8 @@ #ifndef __DRV_TYPES_LINUX_H__ #define __DRV_TYPES_LINUX_H__ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)) +#define dev_addr_set(netdev, ethdata) _rtw_memcpy(netdev, ethdata, ETH_ALEN) +#endif #endif diff --git a/os_dep/linux/ioctl_linux.c b/os_dep/linux/ioctl_linux.c index 8b95881..b2a7560 100644 --- a/os_dep/linux/ioctl_linux.c +++ b/os_dep/linux/ioctl_linux.c @@ -9725,7 +9725,7 @@ static int rtw_mp_efuse_set(struct net_device *dev, rtw_hal_read_chip_info(padapter); /* set mac addr*/ rtw_macaddr_cfg(adapter_mac_addr(padapter), get_hal_mac_addr(padapter)); - _rtw_memcpy(padapter->pnetdev->dev_addr, get_hal_mac_addr(padapter), ETH_ALEN); /* set mac addr to net_device */ + dev_addr_set(padapter->pnetdev, get_hal_mac_addr(padapter)); /* set mac addr to net_device */ #ifdef CONFIG_P2P rtw_init_wifidirect_addrs(padapter, adapter_mac_addr(padapter), adapter_mac_addr(padapter)); diff --git a/os_dep/linux/mlme_linux.c b/os_dep/linux/mlme_linux.c index 247e45e..771c627 100644 --- a/os_dep/linux/mlme_linux.c +++ b/os_dep/linux/mlme_linux.c @@ -404,7 +404,7 @@ int hostapd_mode_init(_adapter *padapter) mac[4] = 0x11; mac[5] = 0x12; - _rtw_memcpy(pnetdev->dev_addr, mac, ETH_ALEN); + dev_addr_set(pnetdev, mac); rtw_netif_carrier_off(pnetdev); diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index a37e488..a762fd4 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -1288,7 +1288,7 @@ 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 */ - _rtw_memcpy(pnetdev->dev_addr, sa->sa_data, ETH_ALEN); /* set mac addr to net_device */ + dev_addr_set(pnetdev, sa->sa_data); /* set mac addr to net_device */ #if 0 if (rtw_is_hw_init_completed(padapter)) { @@ -1753,7 +1753,7 @@ int rtw_os_ndev_register(_adapter *adapter, const char *name) /* alloc netdev name */ rtw_init_netdev_name(ndev, name); - _rtw_memcpy(ndev->dev_addr, adapter_mac_addr(adapter), ETH_ALEN); + dev_addr_set(ndev, adapter_mac_addr(adapter)); #if defined(CONFIG_NET_NS) dev_net_set(ndev, wiphy_net(adapter_to_wiphy(adapter))); #endif //defined(CONFIG_NET_NS) @@ -2722,7 +2722,7 @@ int _netdev_vir_if_open(struct net_device *pnetdev) rtw_mbid_camid_alloc(padapter, adapter_mac_addr(padapter)); #endif rtw_init_wifidirect_addrs(padapter, adapter_mac_addr(padapter), adapter_mac_addr(padapter)); - _rtw_memcpy(pnetdev->dev_addr, adapter_mac_addr(padapter), ETH_ALEN); + dev_addr_set(pnetdev, adapter_mac_addr(padapter)); } #endif /*CONFIG_PLATFORM_INTEL_BYT*/ @@ -3471,7 +3471,7 @@ int _netdev_open(struct net_device *pnetdev) rtw_mbid_camid_alloc(padapter, adapter_mac_addr(padapter)); #endif rtw_init_wifidirect_addrs(padapter, adapter_mac_addr(padapter), adapter_mac_addr(padapter)); - _rtw_memcpy(pnetdev->dev_addr, adapter_mac_addr(padapter), ETH_ALEN); + dev_addr_set(pnetdev, adapter_mac_addr(padapter)); #endif /* CONFIG_PLATFORM_INTEL_BYT */ rtw_clr_surprise_removed(padapter); diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c index 5e0bd8a..28e464b 100644 --- a/os_dep/osdep_service.c +++ b/os_dep/osdep_service.c @@ -2516,7 +2516,7 @@ int rtw_change_ifname(_adapter *padapter, const char *ifname) rtw_init_netdev_name(pnetdev, ifname); - _rtw_memcpy(pnetdev->dev_addr, adapter_mac_addr(padapter), ETH_ALEN); + dev_addr_set(pnetdev, adapter_mac_addr(padapter)); if (rtnl_lock_needed) ret = register_netdev(pnetdev); From a7e64bafd4ed674d74469a669c551cc8c90782d7 Mon Sep 17 00:00:00 2001 From: Shmuel H Date: Sat, 7 May 2022 14:12:54 +0300 Subject: [PATCH 2/2] linux: proc: use pde_data instead of PDE_DATA in >=5.17 --- os_dep/linux/rtw_proc.c | 32 -------------------------------- os_dep/linux/rtw_proc.h | 3 +++ 2 files changed, 3 insertions(+), 32 deletions(-) diff --git a/os_dep/linux/rtw_proc.c b/os_dep/linux/rtw_proc.c index 840a675..f1016e1 100644 --- a/os_dep/linux/rtw_proc.c +++ b/os_dep/linux/rtw_proc.c @@ -213,11 +213,7 @@ const int drv_proc_hdls_num = sizeof(drv_proc_hdls) / sizeof(struct rtw_proc_hdl static int rtw_drv_proc_open(struct inode *inode, struct file *file) { /* struct net_device *dev = proc_get_parent_data(inode); */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0) ssize_t index = (ssize_t)PDE_DATA(inode); -#else - ssize_t index = (ssize_t)inode->i_private; -#endif const struct rtw_proc_hdl *hdl = drv_proc_hdls + index; void *private = NULL; @@ -239,11 +235,7 @@ static int rtw_drv_proc_open(struct inode *inode, struct file *file) static ssize_t rtw_drv_proc_write(struct file *file, const char __user *buffer, size_t count, loff_t *pos) { -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0) ssize_t index = (ssize_t)PDE_DATA(file_inode(file)); -#else - ssize_t index = (ssize_t)file_inode(file)->i_private; -#endif const struct rtw_proc_hdl *hdl = drv_proc_hdls + index; ssize_t (*write)(struct file *, const char __user *, size_t, loff_t *, void *) = hdl->write; @@ -4163,11 +4155,7 @@ const int adapter_proc_hdls_num = sizeof(adapter_proc_hdls) / sizeof(struct rtw_ static int rtw_adapter_proc_open(struct inode *inode, struct file *file) { -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0) ssize_t index = (ssize_t)PDE_DATA(inode); -#else - ssize_t index = (ssize_t)inode->i_private; -#endif const struct rtw_proc_hdl *hdl = adapter_proc_hdls + index; void *private = proc_get_parent_data(inode); @@ -4189,11 +4177,7 @@ static int rtw_adapter_proc_open(struct inode *inode, struct file *file) static ssize_t rtw_adapter_proc_write(struct file *file, const char __user *buffer, size_t count, loff_t *pos) { -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0) ssize_t index = (ssize_t)PDE_DATA(file_inode(file)); -#else - ssize_t index = (ssize_t)file_inode(file)->i_private; -#endif const struct rtw_proc_hdl *hdl = adapter_proc_hdls + index; ssize_t (*write)(struct file *, const char __user *, size_t, loff_t *, void *) = hdl->write; @@ -4358,11 +4342,7 @@ const int odm_proc_hdls_num = sizeof(odm_proc_hdls) / sizeof(struct rtw_proc_hdl static int rtw_odm_proc_open(struct inode *inode, struct file *file) { -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0) ssize_t index = (ssize_t)PDE_DATA(inode); -#else - ssize_t index = (ssize_t)inode->i_private; -#endif const struct rtw_proc_hdl *hdl = odm_proc_hdls + index; void *private = proc_get_parent_data(inode); @@ -4384,11 +4364,7 @@ static int rtw_odm_proc_open(struct inode *inode, struct file *file) static ssize_t rtw_odm_proc_write(struct file *file, const char __user *buffer, size_t count, loff_t *pos) { -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0) ssize_t index = (ssize_t)PDE_DATA(file_inode(file)); -#else - ssize_t index = (ssize_t)file_inode(file)->i_private; -#endif const struct rtw_proc_hdl *hdl = odm_proc_hdls + index; ssize_t (*write)(struct file *, const char __user *, size_t, loff_t *, void *) = hdl->write; @@ -4525,11 +4501,7 @@ const int mcc_proc_hdls_num = sizeof(mcc_proc_hdls) / sizeof(struct rtw_proc_hdl static int rtw_mcc_proc_open(struct inode *inode, struct file *file) { -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0) ssize_t index = (ssize_t)PDE_DATA(inode); -#else - ssize_t index = (ssize_t)inode->i_private; -#endif const struct rtw_proc_hdl *hdl = mcc_proc_hdls + index; void *private = proc_get_parent_data(inode); @@ -4551,11 +4523,7 @@ static int rtw_mcc_proc_open(struct inode *inode, struct file *file) static ssize_t rtw_mcc_proc_write(struct file *file, const char __user *buffer, size_t count, loff_t *pos) { -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0) ssize_t index = (ssize_t)PDE_DATA(file_inode(file)); -#else - ssize_t index = (ssize_t)file_inode(file)->i_private; -#endif const struct rtw_proc_hdl *hdl = mcc_proc_hdls + index; ssize_t (*write)(struct file *, const char __user *, size_t, loff_t *, void *) = hdl->write; diff --git a/os_dep/linux/rtw_proc.h b/os_dep/linux/rtw_proc.h index c2c7c8e..af6f22f 100644 --- a/os_dep/linux/rtw_proc.h +++ b/os_dep/linux/rtw_proc.h @@ -17,6 +17,9 @@ #include #include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0) +#define PDE_DATA pde_data +#endif #define RTW_PROC_HDL_TYPE_SEQ 0 #define RTW_PROC_HDL_TYPE_SSEQ 1