diff --git a/BUILD_FOR_NETHUNTER.md b/BUILD_FOR_NETHUNTER.md new file mode 100644 index 0000000..2a622ff --- /dev/null +++ b/BUILD_FOR_NETHUNTER.md @@ -0,0 +1,46 @@ +## Build Kernel Headers + +``` +cd [your kernel source directory] +make module_prepare +make modules_install INSTALL_MOD_PATH=../ +``` + +## Build RTL8188EUS driver/modules + +``` +cd ../ +git clone https://github.com/aircrack-ng/rtl8188eus -b v5.3.9 +cd rtl8188eus +``` + +That command places this driver behind your kernel source directory (RECOMMENDED). +If you put it anywhere you might need to set the Makefile in this driver, but i won't explain it. +Now, do: + +``` +export ARCH=arm64 +export SUBARCH=arm64 +export CROSS_COMPILE=../toolchain/toolchain64/bin/aarch64-linux-android- +export KBUILD_KVER=3.10.73-NetHunter-something +``` + +arm64 is the device architecture. +CROSS_COMPILE is your toolchain directory. +KBUILD_KVER is your kernel build version, you can search for it in ../lib/modules (the place of your modules_install when you build kernel headers). + +Now, do: +``` +make +``` + +If there is no error or success you will see a file named 8188eu.ko in this driver directory. + + +## Load the driver (8188eu.ko) +``` +su +cd /system/lib/modules +insmod 8188eu.ko +``` + diff --git a/Kconfig b/Kconfig index d0bbdb6..013175c 100644 --- a/Kconfig +++ b/Kconfig @@ -1,6 +1,6 @@ -config RTL8188EUS +config RTL8188EU tristate "Realtek 8188E USB WiFi" depends on USB ---help--- - Help message of RTL8188EUS + Help message of RTL8188EU diff --git a/Makefile b/Makefile index 40abaa2..b24502f 100755 --- a/Makefile +++ b/Makefile @@ -1,30 +1,14 @@ EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS) -fno-pie EXTRA_CFLAGS += -O1 #EXTRA_CFLAGS += -O3 -#EXTRA_CFLAGS += -Wall -#EXTRA_CFLAGS += -Wextra -#EXTRA_CFLAGS += -Werror -#EXTRA_CFLAGS += -pedantic -#EXTRA_CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes - EXTRA_CFLAGS += -Wno-unused-variable EXTRA_CFLAGS += -Wno-unused-value EXTRA_CFLAGS += -Wno-unused-label EXTRA_CFLAGS += -Wno-unused-parameter EXTRA_CFLAGS += -Wno-unused-function EXTRA_CFLAGS += -Wno-unused -#EXTRA_CFLAGS += -Wno-uninitialized EXTRA_CFLAGS += -Wno-vla -#EXTRA_CFLAGS += -Wno-cast-function-type EXTRA_CFLAGS += -Wno-date-time -#EXTRA_CFLAGS += -Wno-misleading-indentation -#EXTRA_CFLAGS += -Wno-uninitialized -# Relax some warnings from '-Wextra' so we won't get flooded with warnings -#EXTRA_CFLAGS += -Wno-sign-compare -#EXTRA_CFLAGS += -Wno-missing-field-initializers -#EXTRA_CFLAGS += -Wno-type-limits -EXTRA_CFLAGS += -Wno-implicit-fallthrough -EXTRA_CFLAGS += -Wno-maybe-uninitialized GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc ) ifeq ($(GCC_VER_49),1) @@ -56,7 +40,7 @@ CONFIG_PCI_HCI = n CONFIG_SDIO_HCI = n CONFIG_GSPI_HCI = n ########################## Features ########################### -CONFIG_NET_NS = n +CONFIG_NET_NS = y CONFIG_MP_INCLUDED = y CONFIG_POWER_SAVING = n CONFIG_USB_AUTOSUSPEND = n @@ -89,10 +73,10 @@ CONFIG_RTW_IPCAM_APPLICATION = n CONFIG_RTW_REPEATER_SON = n CONFIG_RTW_WIFI_HAL = y ########################## Debug ########################### -CONFIG_RTW_DEBUG = y +CONFIG_RTW_DEBUG = n # default log level is _DRV_INFO_ = 4, # please refer to "How_to_set_driver_debug_log_level.doc" to set the available level. -CONFIG_RTW_LOG_LEVEL = 4 +CONFIG_RTW_LOG_LEVEL = 0 ######################## Wake On Lan ########################## CONFIG_WOWLAN = n CONFIG_WAKEUP_TYPE = 0x7 #bit2: deauth, bit1: unicast, bit0: magic pkt. diff --git a/README.md b/README.md index 0df5a32..4a997e9 100644 --- a/README.md +++ b/README.md @@ -5,18 +5,16 @@ [![Monitor mode](https://img.shields.io/badge/monitor%20mode-supported-brightgreen.svg)](#) [![Frame Injection](https://img.shields.io/badge/frame%20injection-supported-brightgreen.svg)](#) [![MESH Mode](https://img.shields.io/badge/mesh%20mode-supported-brightgreen.svg)](#) -[![GitHub issues](https://img.shields.io/github/issues/kimocoder/rtl8188eus.svg)](https://github.com/kimocoder/rtl8188eus/issues) -[![GitHub forks](https://img.shields.io/github/forks/kimocoder/rtl8188eus.svg)](https://github.com/kimocoder/rtl8188eus/network) -[![GitHub stars](https://img.shields.io/github/stars/kimocoder/rtl8188eus.svg)](https://github.com/kimocoder/rtl8188eus/stargazers) -[![GitHub license](https://img.shields.io/github/license/kimocoder/rtl8812au.svg)](https://github.com/kimocoder/rtl8188eus/blob/master/LICENSE)
+[![GitHub issues](https://img.shields.io/github/issues/aircrack-ng/rtl8188eus.svg)](https://github.com/aircrack-ng/rtl8188eus/issues) +[![GitHub forks](https://img.shields.io/github/forks/aircrack-ng/rtl8188eus.svg)](https://github.com/aircrack-ng/rtl8188eus/network) +[![GitHub stars](https://img.shields.io/github/stars/aircrack-ng/rtl8188eus.svg)](https://github.com/aircrack-ng/rtl8188eus/stargazers) +[![GitHub license](https://img.shields.io/github/license/aircrack-ng/rtl8812au.svg)](https://github.com/aircrack-ng/rtl8188eus/blob/master/LICENSE)
[![Android](https://img.shields.io/badge/android%20(8)-supported-brightgreen.svg)](#) [![aircrack-ng](https://img.shields.io/badge/aircrack--ng-supported-blue.svg)](#) -This is a pure Realtek release, not from vendor but from all the Realtek multichip "bases" -we've seen, this must be the newest, most stable and effective one. -The performance and code quality has been improved. # Supports +* Android 7 * MESH Support * Monitor mode * Frame injection @@ -25,21 +23,21 @@ The performance and code quality has been improved. # Howto build/install 1. You will need to blacklist another driver in order to use this one. -2. "echo "blacklist r8188eu.ko" > "/etc/modprobe.d/realtek.conf" +2. "echo "blacklist r8188eu" > "/etc/modprobe.d/realtek.conf" 3. "make && make install"
4. Reboot in order to blacklist and load the new driver/module. # MONITOR MODE howto Use these steps to enter monitor mode. ``` -airmon-ng check-kill -ip link set down -iw dev set type monitor +$ sudo airmon-ng check-kill +$ sudo ip link set down +$ sudo iw dev set type monitor ``` Frame injection test may be performed with (after kernel v5.2 scanning is slow, run a scan or simply an airodump-ng first!) ``` -aireplay -9 +$ aireplay -9 ``` # NetworkManager configuration @@ -62,12 +60,9 @@ plugins=keyfile unmanaged-devices=mac:A7:A7:A7:A7:A7 ``` -# TODO -* Implement txpower control - -* Finish up the elimination of the wrapper _rtw_memset. - I didn't have more time after "rtw_beamforming.c" - -* Add more VID/PIDS for all 3 chipsets supported. - - +# Credits +Realtek - https://www.realtek.com
+Alfa Networks - https://www.alfa.com.tw
+aircrack-ng. - https://www.aircrack-ng.org
+
+And all those who may be using or contributing to it of anykind. Thanks!
diff --git a/core/rtw_debug.c b/core/rtw_debug.c index 40d2996..d9752bb 100644 --- a/core/rtw_debug.c +++ b/core/rtw_debug.c @@ -6051,6 +6051,7 @@ ssize_t proc_set_lck(struct file *file, const char __user *buffer, size_t count, inline void RTW_BUF_DUMP_SEL(uint _loglevel, void *sel, u8 *_titlestring, bool _idx_show, const u8 *_hexdata, int _hexdatalen) { +#ifdef CONFIG_RTW_DEBUG int __i; u8 *ptr = (u8 *)_hexdata; @@ -6076,6 +6077,7 @@ inline void RTW_BUF_DUMP_SEL(uint _loglevel, void *sel, u8 *_titlestring, } _RTW_PRINT_SEL(sel, "\n"); } +#endif } #else inline void _RTW_STR_DUMP_SEL(void *sel, char *str_out) diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c index 68dc9d2..da471c1 100644 --- a/core/rtw_mlme_ext.c +++ b/core/rtw_mlme_ext.c @@ -1831,7 +1831,11 @@ void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame) ptable->func = &OnAuth; else ptable->func = &OnAuthClient; - /* pass through */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0) + __attribute__ ((fallthrough)); +#else + __attribute__ ((__fallthrough__)); +#endif case WIFI_ASSOCREQ: case WIFI_REASSOCREQ: _mgt_dispatcher(padapter, ptable, precv_frame); diff --git a/core/rtw_security.c b/core/rtw_security.c index 52d5e3d..5807521 100644 --- a/core/rtw_security.c +++ b/core/rtw_security.c @@ -982,13 +982,6 @@ static void next_key(u8 *key, sint round); static void byte_sub(u8 *in, u8 *out); static void shift_row(u8 *in, u8 *out); static void mix_column(u8 *in, u8 *out); -#ifndef PLATFORM_FREEBSD -static void add_round_key(u8 *shiftrow_in, - u8 *mcol_in, - u8 *block_in, - sint round, - u8 *out); -#endif /* PLATFORM_FREEBSD */ static void aes128k128d(u8 *key, u8 *data, u8 *ciphertext); @@ -1929,7 +1922,6 @@ u32 rtw_aes_decrypt(_adapter *padapter, u8 *precvframe) sint length; - u32 prwskeylen; u8 *pframe, *prwskey; /* , *payload,*iv */ struct sta_info *stainfo; struct rx_pkt_attrib *prxattrib = &((union recv_frame *)precvframe)->u.hdr.attrib; @@ -2139,6 +2131,7 @@ BIP_exit: #endif /* CONFIG_IEEE80211W */ #ifndef PLATFORM_FREEBSD +#if defined(CONFIG_TDLS) /* compress 512-bits */ static int sha256_compress(struct sha256_state *md, unsigned char *buf) { @@ -2319,7 +2312,9 @@ static u8 os_strlen(const char *s) p++; return p - s; } +#endif +#if defined(CONFIG_TDLS) || defined(CONFIG_RTW_MESH_AEK) static int os_memcmp(const void *s1, const void *s2, u8 n) { const unsigned char *p1 = s1, *p2 = s2; @@ -2337,6 +2332,7 @@ static int os_memcmp(const void *s1, const void *s2, u8 n) return *p1 - *p2; } +#endif /** * hmac_sha256_vector - HMAC-SHA256 over data vector (RFC 2104) @@ -2347,6 +2343,7 @@ static int os_memcmp(const void *s1, const void *s2, u8 n) * @len: Lengths of the data blocks * @mac: Buffer for the hash (32 bytes) */ +#if defined(CONFIG_TDLS) static void hmac_sha256_vector(u8 *key, size_t key_len, size_t num_elem, u8 *addr[], size_t *len, u8 *mac) { @@ -2408,6 +2405,7 @@ static void hmac_sha256_vector(u8 *key, size_t key_len, size_t num_elem, _len[1] = 32; sha256_vector(2, _addr, _len, mac); } +#endif /* CONFIG_TDLS */ #endif /* PLATFORM_FREEBSD */ /** * sha256_prf - SHA256-based Pseudo-Random Function (IEEE 802.11r, 8.5.1.5.2) @@ -2423,6 +2421,7 @@ static void hmac_sha256_vector(u8 *key, size_t key_len, size_t num_elem, * given key. */ #ifndef PLATFORM_FREEBSD /* Baron */ +#if defined(CONFIG_TDLS) static void sha256_prf(u8 *key, size_t key_len, char *label, u8 *data, size_t data_len, u8 *buf, size_t buf_len) { @@ -2459,6 +2458,7 @@ static void sha256_prf(u8 *key, size_t key_len, char *label, counter++; } } +#endif #endif /* PLATFORM_FREEBSD Baron */ /* AES tables*/ @@ -3083,7 +3083,7 @@ int aes_siv_decrypt(const u8 *key, const u8 *iv_crypt, size_t iv_c_len, #endif /* CONFIG_RTW_MESH_AEK */ #ifdef CONFIG_TDLS -void wpa_tdls_generate_tpk(_adapter *padapter, PVOID sta) +void wpa_tdls_generate_tpk(_adapter *padapter, void *sta) { struct sta_info *psta = (struct sta_info *)sta; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; diff --git a/core/rtw_sta_mgt.c b/core/rtw_sta_mgt.c index 3a79e09..9b3c03f 100644 --- a/core/rtw_sta_mgt.c +++ b/core/rtw_sta_mgt.c @@ -41,7 +41,7 @@ inline void rtw_st_ctl_init(struct st_ctl_t *st_ctl) _rtw_init_queue(&st_ctl->tracker_q); } -inline void rtw_st_ctl_clear_tracker_q(struct st_ctl_t *st_ctl) +static inline void rtw_st_ctl_clear_tracker_q(struct st_ctl_t *st_ctl) { _irqL irqL; _list *plist, *phead; diff --git a/core/rtw_wlan_util.c b/core/rtw_wlan_util.c index b9a8944..4814717 100644 --- a/core/rtw_wlan_util.c +++ b/core/rtw_wlan_util.c @@ -1038,7 +1038,7 @@ exit: return ret; } -inline bool rtw_sec_camid_is_used(struct cam_ctl_t *cam_ctl, u8 id) +static inline bool rtw_sec_camid_is_used(struct cam_ctl_t *cam_ctl, u8 id) { _irqL irqL; bool ret; diff --git a/dkms.conf b/dkms.conf index 8738b39..1c14127 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl8188eus" -PACKAGE_VERSION="5.3.9~20191129" +PACKAGE_VERSION="5.3.9~20200316" CLEAN="'make' clean" BUILT_MODULE_NAME[0]=8188eu PROCS_NUM=`nproc` diff --git a/hal/hal_intf.c b/hal/hal_intf.c index d818bc8..95966c8 100644 --- a/hal/hal_intf.c +++ b/hal/hal_intf.c @@ -939,7 +939,7 @@ s32 c2h_handler(_adapter *adapter, u8 id, u8 seq, u8 plen, u8 *payload) #endif case C2H_EXTEND: sub_id = payload[0]; - /* no handle, goto default */ + __attribute__ ((__fallthrough__)); default: if (phydm_c2H_content_parsing(adapter_to_phydm(adapter), id, plen, payload) != TRUE) diff --git a/include/autoconf.h b/include/autoconf.h index b718fe0..d5de692 100644 --- a/include/autoconf.h +++ b/include/autoconf.h @@ -93,7 +93,7 @@ /*#define CONFIG_ANTENNA_DIVERSITY*/ - #define CONFIG_CONCURRENT_MODE + //#define CONFIG_CONCURRENT_MODE #ifdef CONFIG_CONCURRENT_MODE #define CONFIG_RUNTIME_PORT_SWITCH #define CONFIG_SCAN_BACKOP diff --git a/include/rtl8192e_sreset.h b/include/rtl8192e_sreset.h index 78109ae..52df2ec 100644 --- a/include/rtl8192e_sreset.h +++ b/include/rtl8192e_sreset.h @@ -12,7 +12,7 @@ * more details. * *****************************************************************************/ -#ifndef _RTL88812A_SRESET_H_ +#ifndef _RTL8812A_SRESET_H_ #define _RTL8812A_SRESET_H_ #include diff --git a/include/rtl8812a_sreset.h b/include/rtl8812a_sreset.h index d4bbd58..13cbf5f 100644 --- a/include/rtl8812a_sreset.h +++ b/include/rtl8812a_sreset.h @@ -12,7 +12,7 @@ * more details. * *****************************************************************************/ -#ifndef _RTL88812A_SRESET_H_ +#ifndef _RTL8812A_SRESET_H_ #define _RTL8812A_SRESET_H_ #include diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index c2461a3..3acf030 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -686,9 +686,13 @@ static int rtw_cfg80211_sync_iftype(_adapter *adapter) static u64 rtw_get_systime_us(void) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)) + struct timespec64 ts; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)) struct timespec ts; -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)) + getboottime64(&ts); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) getboottime(&ts); #else get_monotonic_boottime(&ts); @@ -2367,6 +2371,7 @@ static int cfg80211_rtw_change_iface(struct wiphy *wiphy, case NL80211_IFTYPE_P2P_CLIENT: is_p2p = _TRUE; #endif + __attribute__ ((__fallthrough__)); case NL80211_IFTYPE_STATION: networkType = Ndis802_11Infrastructure; @@ -2391,6 +2396,7 @@ static int cfg80211_rtw_change_iface(struct wiphy *wiphy, case NL80211_IFTYPE_P2P_GO: is_p2p = _TRUE; #endif + __attribute__ ((__fallthrough__)); case NL80211_IFTYPE_AP: networkType = Ndis802_11APMode; diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 58a9e03..caf020d 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -817,7 +817,7 @@ void rtw_regsty_load_target_tx_power(struct registry_priv *regsty) #endif /* CONFIG_IEEE80211_BAND_5GHZ */ } -inline void rtw_regsty_load_excl_chs(struct registry_priv *regsty) +static inline void rtw_regsty_load_excl_chs(struct registry_priv *regsty) { int i; int ch_num = 0; @@ -831,7 +831,7 @@ inline void rtw_regsty_load_excl_chs(struct registry_priv *regsty) } #ifdef CONFIG_80211N_HT -inline void rtw_regsty_init_rx_ampdu_sz_limit(struct registry_priv *regsty) +static inline void rtw_regsty_init_rx_ampdu_sz_limit(struct registry_priv *regsty) { int i, j; uint *sz_limit; @@ -1284,17 +1284,18 @@ unsigned int rtw_classify8021d(struct sk_buff *skb) return dscp >> 5; } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 2, 0)) -static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb, - struct net_device *sb_dev) -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0)) -static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb, - struct net_device *sb_dev, - select_queue_fallback_t fallback) -#else -static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb, - void *accel_priv, select_queue_fallback_t fallback) +static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0) + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0) + , void *accel_priv + #else + , struct net_device *sb_dev + #endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) + , select_queue_fallback_t fallback + #endif #endif +) { _adapter *padapter = rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &padapter->mlmepriv; diff --git a/os_dep/linux/rtw_proc.c b/os_dep/linux/rtw_proc.c index 6ed0288..8a0fd3e 100644 --- a/os_dep/linux/rtw_proc.c +++ b/os_dep/linux/rtw_proc.c @@ -62,7 +62,12 @@ inline struct proc_dir_entry *rtw_proc_create_dir(const char *name, struct proc_ } inline struct proc_dir_entry *rtw_proc_create_entry(const char *name, struct proc_dir_entry *parent, - const struct file_operations *fops, void * data) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)) +const struct proc_ops *fops, void * data) +#else +const struct file_operations *fops, void * data) +#endif + { struct proc_dir_entry *entry; @@ -230,6 +235,26 @@ static ssize_t rtw_drv_proc_write(struct file *file, const char __user *buffer, return -EROFS; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)) +static const struct proc_ops rtw_drv_proc_seq_fops = { + //.proc_owner = THIS_MODULE, + .proc_open = rtw_drv_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = seq_release, + .proc_write = rtw_drv_proc_write, +}; + +static const struct proc_ops rtw_drv_proc_sseq_fops = { + //.proc_owner = THIS_MODULE, + .proc_open = rtw_drv_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = single_release, + .proc_write = rtw_drv_proc_write, +}; + +#else static const struct file_operations rtw_drv_proc_seq_fops = { .owner = THIS_MODULE, .open = rtw_drv_proc_open, @@ -247,6 +272,7 @@ static const struct file_operations rtw_drv_proc_sseq_fops = { .release = single_release, .write = rtw_drv_proc_write, }; +#endif int rtw_drv_proc_init(void) { @@ -3683,6 +3709,27 @@ static ssize_t rtw_adapter_proc_write(struct file *file, const char __user *buff return -EROFS; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)) +static const struct proc_ops rtw_adapter_proc_seq_fops = { + //.proc_owner = THIS_MODULE, + .proc_open = rtw_adapter_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = seq_release, + .proc_write = rtw_adapter_proc_write, +}; + +static const struct proc_ops rtw_adapter_proc_sseq_fops = { + //.proc_owner = THIS_MODULE, + .proc_open = rtw_adapter_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = single_release, + .proc_write = rtw_adapter_proc_write, +}; + +#else + static const struct file_operations rtw_adapter_proc_seq_fops = { .owner = THIS_MODULE, .open = rtw_adapter_proc_open, @@ -3700,6 +3747,7 @@ static const struct file_operations rtw_adapter_proc_sseq_fops = { .release = single_release, .write = rtw_adapter_proc_write, }; +#endif int proc_get_odm_adaptivity(struct seq_file *m, void *v) { @@ -3855,6 +3903,26 @@ static ssize_t rtw_odm_proc_write(struct file *file, const char __user *buffer, return -EROFS; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)) +static const struct proc_ops rtw_odm_proc_seq_fops = { + //.proc_owner = THIS_MODULE, + .proc_open = rtw_odm_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = seq_release, + .proc_write = rtw_odm_proc_write, +}; + +static const struct proc_ops rtw_odm_proc_sseq_fops = { + //.proc_owner = THIS_MODULE, + .proc_open = rtw_odm_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = single_release, + .proc_write = rtw_odm_proc_write, +}; + +#else static const struct file_operations rtw_odm_proc_seq_fops = { .owner = THIS_MODULE, .open = rtw_odm_proc_open, @@ -3873,6 +3941,8 @@ static const struct file_operations rtw_odm_proc_sseq_fops = { .write = rtw_odm_proc_write, }; +#endif + struct proc_dir_entry *rtw_odm_proc_init(struct net_device *dev) { struct proc_dir_entry *dir_odm = NULL; @@ -3996,6 +4066,26 @@ static ssize_t rtw_mcc_proc_write(struct file *file, const char __user *buffer, return -EROFS; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)) +static const struct proc_ops rtw_mcc_proc_seq_fops = { + .proc_owner = THIS_MODULE, + .proc_open = rtw_mcc_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = seq_release, + .proc_write = rtw_mcc_proc_write, +}; + +static const struct proc_ops rtw_mcc_proc_sseq_fops = { + .proc_owner = THIS_MODULE, + .proc_open = rtw_mcc_proc_open, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = single_release, + .proc_write = rtw_mcc_proc_write, +}; + +#else static const struct file_operations rtw_mcc_proc_seq_fops = { .owner = THIS_MODULE, .open = rtw_mcc_proc_open, @@ -4013,6 +4103,7 @@ static const struct file_operations rtw_mcc_proc_sseq_fops = { .release = single_release, .write = rtw_mcc_proc_write, }; +#endif struct proc_dir_entry *rtw_mcc_proc_init(struct net_device *dev) { diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c index e5323f1..82a37d2 100644 --- a/os_dep/osdep_service.c +++ b/os_dep/osdep_service.c @@ -286,7 +286,7 @@ inline struct sk_buff *_rtw_skb_clone(struct sk_buff *skb) return skb_clone(skb); #endif /* PLATFORM_FREEBSD */ } -inline struct sk_buff *_rtw_pskb_copy(struct sk_buff *skb) +static inline struct sk_buff *_rtw_pskb_copy(struct sk_buff *skb) { #ifdef PLATFORM_LINUX #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36))