Compare commits

..
21 changed files with 208 additions and 103 deletions
View File
+11 -8
View File
@@ -7,9 +7,13 @@ EXTRA_CFLAGS += -Wno-unused-label
EXTRA_CFLAGS += -Wno-unused-parameter EXTRA_CFLAGS += -Wno-unused-parameter
EXTRA_CFLAGS += -Wno-unused-function EXTRA_CFLAGS += -Wno-unused-function
EXTRA_CFLAGS += -Wno-unused EXTRA_CFLAGS += -Wno-unused
EXTRA_CFLAGS += -Wno-address
EXTRA_CFLAGS += -Wno-cast-function-type
EXTRA_CFLAGS += -Wno-discarded-qualifiers
EXTRA_CFLAGS += -Wno-vla EXTRA_CFLAGS += -Wno-vla
EXTRA_CFLAGS += -Wno-date-time EXTRA_CFLAGS += -Wno-date-time
GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc ) GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc )
ifeq ($(GCC_VER_49),1) ifeq ($(GCC_VER_49),1)
EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later
@@ -159,8 +163,6 @@ CONFIG_PLATFORM_PPC64LE = n
CONFIG_DRVEXT_MODULE = n CONFIG_DRVEXT_MODULE = n
export TopDIR ?= $(shell pwd)
########### COMMON ################################# ########### COMMON #################################
ifeq ($(CONFIG_GSPI_HCI), y) ifeq ($(CONFIG_GSPI_HCI), y)
HCI_NAME = gspi HCI_NAME = gspi
@@ -775,16 +777,16 @@ endif
ifeq ($(CONFIG_AUTOCFG_CP), y) ifeq ($(CONFIG_AUTOCFG_CP), y)
ifeq ($(CONFIG_MULTIDRV), y) ifeq ($(CONFIG_MULTIDRV), y)
$(shell cp $(TopDIR)/autoconf_multidrv_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h) $(shell cp autoconf_multidrv_$(HCI_NAME)_linux.h include/autoconf.h)
else else
ifeq ($(CONFIG_RTL8188E)$(CONFIG_SDIO_HCI),yy) ifeq ($(CONFIG_RTL8188E)$(CONFIG_SDIO_HCI),yy)
$(shell cp $(TopDIR)/autoconf_rtl8189e_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h) $(shell cp autoconf_rtl8189e_$(HCI_NAME)_linux.h include/autoconf.h)
else ifeq ($(CONFIG_RTL8188F)$(CONFIG_SDIO_HCI),yy) else ifeq ($(CONFIG_RTL8188F)$(CONFIG_SDIO_HCI),yy)
$(shell cp $(TopDIR)/autoconf_rtl8189f_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h) $(shell cp autoconf_rtl8189f_$(HCI_NAME)_linux.h include/autoconf.h)
else ifeq ($(CONFIG_RTL8723C),y) else ifeq ($(CONFIG_RTL8723C),y)
$(shell cp $(TopDIR)/autoconf_rtl8723c_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h) $(shell cp autoconf_rtl8723c_$(HCI_NAME)_linux.h include/autoconf.h)
else else
$(shell cp $(TopDIR)/autoconf_$(RTL871X)_$(HCI_NAME)_linux.h $(TopDIR)/include/autoconf.h) $(shell cp autoconf_$(RTL871X)_$(HCI_NAME)_linux.h include/autoconf.h)
endif endif
endif endif
@@ -1032,7 +1034,8 @@ EXTRA_CFLAGS += -DDM_ODM_SUPPORT_TYPE=0x04
ifeq ($(CONFIG_PLATFORM_I386_PC), y) ifeq ($(CONFIG_PLATFORM_I386_PC), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
SUBARCH := $(shell uname -m | sed -e "s/i.86/i386/; s/ppc64le/powerpc/; s/ppc/powerpc/; s/armv.l/arm/; s/aarch64/arm64/;")ARCH ?= $(SUBARCH) SUBARCH := $(shell uname -m | sed -e "s/i.86/i386/; s/ppc64le/powerpc/; s/ppc/powerpc/; s/armv.l/arm/; s/aarch64/arm64/;")
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= CROSS_COMPILE ?=
KVER := $(shell uname -r) KVER := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build KSRC := /lib/modules/$(KVER)/build
+9 -7
View File
@@ -14,23 +14,25 @@
# Supports # Supports
* Android 7 * Android 12/13
* MESH Support * MESH Support
* Monitor mode * Monitor mode
* Frame injection * Frame injection
* Up to kernel v5.3+ * Up to kernel v6.0+
... And a bunch of various wifi chipsets ... And a bunch of various wifi chipsets
# Howto build/install # Howto build/install
1. You will need to blacklist another driver in order to use this one. 1. You will need to blacklist another driver in order to use this one.
2. "echo "blacklist r8188eu" > "/etc/modprobe.d/realtek.conf" 2. `echo 'blacklist r8188eu'|sudo tee -a '/etc/modprobe.d/realtek.conf'`
3. "make && make install"<br> 3. Reboot
4. Reboot in order to blacklist and load the new driver/module. 4. cd rtl8188eus
5. `make && sudo make install`
6. Reboot in order to blacklist and load the new driver/module.
# MONITOR MODE howto # MONITOR MODE howto
Use these steps to enter monitor mode. Use these steps to enter monitor mode.
``` ```
$ sudo airmon-ng check-kill $ sudo airmon-ng check kill
$ sudo ip link set <interface> down $ sudo ip link set <interface> down
$ sudo iw dev <interface> set type monitor $ sudo iw dev <interface> set type monitor
``` ```
@@ -42,7 +44,7 @@ $ aireplay -9 <interface>
# NetworkManager configuration # NetworkManager configuration
Add these lines below to "NetworkManager.conf" and ADD YOUR ADAPTER MAC below [keyfile] Add these lines below to "NetworkManager.conf" and ADD YOUR ADAPTER MAC below [keyfile]
This will make the Network-Manager ignore the device, and therefor don't cause problems. This will make the Network-Manager ignore the device, and therefore don't cause problems.
``` ```
[device] [device]
wifi.scan-rand-mac-address=no wifi.scan-rand-mac-address=no
+2 -1
View File
@@ -711,13 +711,14 @@ void rtw_efuse_analyze(PADAPTER padapter, u8 Type, u8 Fake)
j = 0; j = 0;
for (i = 0; i < mapLen; i++) { for (i = 0; i < mapLen; i++) {
if (i % 16 == 0) if (i % 16 == 0) {
RTW_PRINT_SEL(RTW_DBGDUMP, "0x%03x: ", i); RTW_PRINT_SEL(RTW_DBGDUMP, "0x%03x: ", i);
_RTW_PRINT_SEL(RTW_DBGDUMP, "%02X%s" _RTW_PRINT_SEL(RTW_DBGDUMP, "%02X%s"
, pEfuseHal->fakeEfuseInitMap[i] , pEfuseHal->fakeEfuseInitMap[i]
, ((i + 1) % 16 == 0) ? "\n" : (((i + 1) % 8 == 0) ? " " : " ") , ((i + 1) % 16 == 0) ? "\n" : (((i + 1) % 8 == 0) ? " " : " ")
); );
} }
}
_RTW_PRINT_SEL(RTW_DBGDUMP, "\n"); _RTW_PRINT_SEL(RTW_DBGDUMP, "\n");
if (eFuseWord) if (eFuseWord)
rtw_mfree((u8 *)eFuseWord, EFUSE_MAX_SECTION_NUM * (EFUSE_MAX_WORD_UNIT * 2)); rtw_mfree((u8 *)eFuseWord, EFUSE_MAX_SECTION_NUM * (EFUSE_MAX_WORD_UNIT * 2));
+8
View File
@@ -15,9 +15,12 @@
#define _RTW_BR_EXT_C_ #define _RTW_BR_EXT_C_
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <linux/version.h>
#include <linux/if_arp.h> #include <linux/if_arp.h>
#include <net/ip.h> #include <net/ip.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)
#include <net/ipx.h> #include <net/ipx.h>
#endif
#include <linux/atalk.h> #include <linux/atalk.h>
#include <linux/udp.h> #include <linux/udp.h>
#include <linux/if_pppox.h> #include <linux/if_pppox.h>
@@ -948,6 +951,7 @@ int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method)
} }
} }
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)
/* IPX */ /* IPX */
if (ipx != NULL) { if (ipx != NULL) {
switch (method) { switch (method) {
@@ -1016,8 +1020,12 @@ int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method)
} }
} }
/* AARP */ /* AARP */
else if (ea != NULL) { else if (ea != NULL) {
#else
if (ea != NULL) {
#endif
/* Sanity check fields. */ /* Sanity check fields. */
if (ea->hw_len != ETH_ALEN || ea->pa_len != AARP_PA_ALEN) { if (ea->hw_len != ETH_ALEN || ea->pa_len != AARP_PA_ALEN) {
DEBUG_WARN("NAT25: Appletalk AARP Sanity check fail!\n"); DEBUG_WARN("NAT25: Appletalk AARP Sanity check fail!\n");
+7 -5
View File
@@ -1831,11 +1831,13 @@ void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame)
ptable->func = &OnAuth; ptable->func = &OnAuth;
else else
ptable->func = &OnAuthClient; ptable->func = &OnAuthClient;
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0) _mgt_dispatcher(padapter, ptable, precv_frame);
__attribute__ ((fallthrough)); //#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0)
#else // __attribute__ ((fallthrough));
__attribute__ ((__fallthrough__)); //#else
#endif // __attribute__ ((fallthrough));
//#endif
break;
case WIFI_ASSOCREQ: case WIFI_ASSOCREQ:
case WIFI_REASSOCREQ: case WIFI_REASSOCREQ:
_mgt_dispatcher(padapter, ptable, precv_frame); _mgt_dispatcher(padapter, ptable, precv_frame);
+23 -23
View File
@@ -1575,7 +1575,7 @@ u32 rtw_aes_encrypt(_adapter *padapter, u8 *pxmitframe)
pframe = ((struct xmit_frame *)pxmitframe)->buf_addr + hw_hdr_offset; pframe = ((struct xmit_frame *)pxmitframe)->buf_addr + hw_hdr_offset;
/* 4 start to encrypt each fragment */ /* 4 start to encrypt each fragment */
if ((pattrib->encrypt == _AES_)) { if (pattrib->encrypt == _AES_) {
/* /*
if(pattrib->psta) if(pattrib->psta)
{ {
@@ -1930,7 +1930,7 @@ u32 rtw_aes_decrypt(_adapter *padapter, u8 *precvframe)
u32 res = _SUCCESS; u32 res = _SUCCESS;
pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data; pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data;
/* 4 start to encrypt each fragment */ /* 4 start to encrypt each fragment */
if ((prxattrib->encrypt == _AES_)) { if (prxattrib->encrypt == _AES_) {
stainfo = rtw_get_stainfo(&padapter->stapriv , &prxattrib->ta[0]); stainfo = rtw_get_stainfo(&padapter->stapriv , &prxattrib->ta[0]);
if (stainfo != NULL) { if (stainfo != NULL) {
@@ -2133,7 +2133,7 @@ BIP_exit:
#ifndef PLATFORM_FREEBSD #ifndef PLATFORM_FREEBSD
#if defined(CONFIG_TDLS) #if defined(CONFIG_TDLS)
/* compress 512-bits */ /* compress 512-bits */
static int sha256_compress(struct sha256_state *md, unsigned char *buf) static int rtw_sha256_compress(struct rtw_sha256_state *md, unsigned char *buf)
{ {
u32 S[8], W[64], t0, t1; u32 S[8], W[64], t0, t1;
u32 t; u32 t;
@@ -2181,7 +2181,7 @@ static int sha256_compress(struct sha256_state *md, unsigned char *buf)
} }
/* Initialize the hash state */ /* Initialize the hash state */
static void sha256_init(struct sha256_state *md) static void rtw_sha256_init(struct rtw_sha256_state *md)
{ {
md->curlen = 0; md->curlen = 0;
md->length = 0; md->length = 0;
@@ -2202,7 +2202,7 @@ static void sha256_init(struct sha256_state *md)
@param inlen The length of the data (octets) @param inlen The length of the data (octets)
@return CRYPT_OK if successful @return CRYPT_OK if successful
*/ */
static int sha256_process(struct sha256_state *md, unsigned char *in, static int rtw_sha256_process(struct rtw_sha256_state *md, unsigned char *in,
unsigned long inlen) unsigned long inlen)
{ {
unsigned long n; unsigned long n;
@@ -2213,7 +2213,7 @@ static int sha256_process(struct sha256_state *md, unsigned char *in,
while (inlen > 0) { while (inlen > 0) {
if (md->curlen == 0 && inlen >= block_size) { if (md->curlen == 0 && inlen >= block_size) {
if (sha256_compress(md, (unsigned char *) in) < 0) if (rtw_sha256_compress(md, (unsigned char *) in) < 0)
return -1; return -1;
md->length += block_size * 8; md->length += block_size * 8;
in += block_size; in += block_size;
@@ -2225,7 +2225,7 @@ static int sha256_process(struct sha256_state *md, unsigned char *in,
in += n; in += n;
inlen -= n; inlen -= n;
if (md->curlen == block_size) { if (md->curlen == block_size) {
if (sha256_compress(md, md->buf) < 0) if (rtw_sha256_compress(md, md->buf) < 0)
return -1; return -1;
md->length += 8 * block_size; md->length += 8 * block_size;
md->curlen = 0; md->curlen = 0;
@@ -2243,7 +2243,7 @@ static int sha256_process(struct sha256_state *md, unsigned char *in,
@param out [out] The destination of the hash (32 bytes) @param out [out] The destination of the hash (32 bytes)
@return CRYPT_OK if successful @return CRYPT_OK if successful
*/ */
static int sha256_done(struct sha256_state *md, unsigned char *out) static int rtw_sha256_done(struct rtw_sha256_state *md, unsigned char *out)
{ {
int i; int i;
@@ -2263,7 +2263,7 @@ static int sha256_done(struct sha256_state *md, unsigned char *out)
if (md->curlen > 56) { if (md->curlen > 56) {
while (md->curlen < 64) while (md->curlen < 64)
md->buf[md->curlen++] = (unsigned char) 0; md->buf[md->curlen++] = (unsigned char) 0;
sha256_compress(md, md->buf); rtw_sha256_compress(md, md->buf);
md->curlen = 0; md->curlen = 0;
} }
@@ -2273,7 +2273,7 @@ static int sha256_done(struct sha256_state *md, unsigned char *out)
/* store length */ /* store length */
WPA_PUT_BE64(md->buf + 56, md->length); WPA_PUT_BE64(md->buf + 56, md->length);
sha256_compress(md, md->buf); rtw_sha256_compress(md, md->buf);
/* copy output */ /* copy output */
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
@@ -2290,17 +2290,17 @@ static int sha256_done(struct sha256_state *md, unsigned char *out)
* @mac: Buffer for the hash * @mac: Buffer for the hash
* Returns: 0 on success, -1 of failure * Returns: 0 on success, -1 of failure
*/ */
static int sha256_vector(size_t num_elem, u8 *addr[], size_t *len, static int rtw_sha256_vector(size_t num_elem, u8 *addr[], size_t *len,
u8 *mac) u8 *mac)
{ {
struct sha256_state ctx; struct rtw_sha256_state ctx;
size_t i; size_t i;
sha256_init(&ctx); rtw_sha256_init(&ctx);
for (i = 0; i < num_elem; i++) for (i = 0; i < num_elem; i++)
if (sha256_process(&ctx, addr[i], len[i])) if (rtw_sha256_process(&ctx, addr[i], len[i]))
return -1; return -1;
if (sha256_done(&ctx, mac)) if (rtw_sha256_done(&ctx, mac))
return -1; return -1;
return 0; return 0;
} }
@@ -2362,7 +2362,7 @@ static void hmac_sha256_vector(u8 *key, size_t key_len, size_t num_elem,
/* if key is longer than 64 bytes reset it to key = SHA256(key) */ /* if key is longer than 64 bytes reset it to key = SHA256(key) */
if (key_len > 64) { if (key_len > 64) {
sha256_vector(1, &key, &key_len, tk); rtw_sha256_vector(1, &key, &key_len, tk);
key = tk; key = tk;
key_len = 32; key_len = 32;
} }
@@ -2390,7 +2390,7 @@ static void hmac_sha256_vector(u8 *key, size_t key_len, size_t num_elem,
_addr[i + 1] = addr[i]; _addr[i + 1] = addr[i];
_len[i + 1] = len[i]; _len[i + 1] = len[i];
} }
sha256_vector(1 + num_elem, _addr, _len, mac); rtw_sha256_vector(1 + num_elem, _addr, _len, mac);
_rtw_memset(k_pad, 0, sizeof(k_pad)); _rtw_memset(k_pad, 0, sizeof(k_pad));
_rtw_memcpy(k_pad, key, key_len); _rtw_memcpy(k_pad, key, key_len);
@@ -2403,7 +2403,7 @@ static void hmac_sha256_vector(u8 *key, size_t key_len, size_t num_elem,
_len[0] = 64; _len[0] = 64;
_addr[1] = mac; _addr[1] = mac;
_len[1] = 32; _len[1] = 32;
sha256_vector(2, _addr, _len, mac); rtw_sha256_vector(2, _addr, _len, mac);
} }
#endif /* CONFIG_TDLS */ #endif /* CONFIG_TDLS */
#endif /* PLATFORM_FREEBSD */ #endif /* PLATFORM_FREEBSD */
@@ -2422,7 +2422,7 @@ static void hmac_sha256_vector(u8 *key, size_t key_len, size_t num_elem,
*/ */
#ifndef PLATFORM_FREEBSD /* Baron */ #ifndef PLATFORM_FREEBSD /* Baron */
#if defined(CONFIG_TDLS) #if defined(CONFIG_TDLS)
static void sha256_prf(u8 *key, size_t key_len, char *label, static void rtw_sha256_prf(u8 *key, size_t key_len, char *label,
u8 *data, size_t data_len, u8 *buf, size_t buf_len) u8 *data, size_t data_len, u8 *buf, size_t buf_len)
{ {
u16 counter = 1; u16 counter = 1;
@@ -2446,10 +2446,10 @@ static void sha256_prf(u8 *key, size_t key_len, char *label,
while (pos < buf_len) { while (pos < buf_len) {
plen = buf_len - pos; plen = buf_len - pos;
WPA_PUT_LE16(counter_le, counter); WPA_PUT_LE16(counter_le, counter);
if (plen >= SHA256_MAC_LEN) { if (plen >= RTW_SHA256_MAC_LEN) {
hmac_sha256_vector(key, key_len, 4, addr, len, hmac_sha256_vector(key, key_len, 4, addr, len,
&buf[pos]); &buf[pos]);
pos += SHA256_MAC_LEN; pos += RTW_SHA256_MAC_LEN;
} else { } else {
hmac_sha256_vector(key, key_len, 4, addr, len, hash); hmac_sha256_vector(key, key_len, 4, addr, len, hash);
_rtw_memcpy(&buf[pos], hash, plen); _rtw_memcpy(&buf[pos], hash, plen);
@@ -3108,7 +3108,7 @@ void wpa_tdls_generate_tpk(_adapter *padapter, void *sta)
nonce[1] = SNonce; nonce[1] = SNonce;
} }
sha256_vector(2, nonce, len, key_input); rtw_sha256_vector(2, nonce, len, key_input);
/* /*
* TPK-Key-Data = KDF-N_KEY(TPK-Key-Input, "TDLS PMK", * TPK-Key-Data = KDF-N_KEY(TPK-Key-Input, "TDLS PMK",
@@ -3127,7 +3127,7 @@ void wpa_tdls_generate_tpk(_adapter *padapter, void *sta)
} }
_rtw_memcpy(data + 2 * ETH_ALEN, get_bssid(pmlmepriv), ETH_ALEN); _rtw_memcpy(data + 2 * ETH_ALEN, get_bssid(pmlmepriv), ETH_ALEN);
sha256_prf(key_input, SHA256_MAC_LEN, "TDLS PMK", data, sizeof(data), (u8 *) &psta->tpk, sizeof(psta->tpk)); rtw_sha256_prf(key_input, RTW_SHA256_MAC_LEN, "TDLS PMK", data, sizeof(data), (u8 *) &psta->tpk, sizeof(psta->tpk));
} }
+1 -1
View File
@@ -1,5 +1,5 @@
PACKAGE_NAME="realtek-rtl8188eus" PACKAGE_NAME="realtek-rtl8188eus"
PACKAGE_VERSION="5.3.9~20200316" PACKAGE_VERSION="5.3.9~20221105"
CLEAN="'make' clean" CLEAN="'make' clean"
BUILT_MODULE_NAME[0]=8188eu BUILT_MODULE_NAME[0]=8188eu
PROCS_NUM=`nproc` PROCS_NUM=`nproc`
+1 -1
View File
@@ -24,7 +24,7 @@
*****************************************************************************/ *****************************************************************************/
#ifndef __HALRF_FEATURES_H__ #ifndef __HALRF_FEATURES_H__
#define __HALRF_FEATURES #define __HALRF_FEATURES_H__
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
+1 -1
View File
@@ -25,7 +25,7 @@
#ifndef __PHYDMKFREE_H__ #ifndef __PHYDMKFREE_H__
#define __PHYDKFREE_H__ #define __PHYDMKFREE_H__
#define KFREE_VERSION "1.0" #define KFREE_VERSION "1.0"
+1 -4
View File
@@ -52,12 +52,10 @@ phydm_rx_statistic_cal(
phydm->phy_dbg_info.ht_pkt_not_zero = true; phydm->phy_dbg_info.ht_pkt_not_zero = true;
if (phydm->support_ic_type & PHYSTS_2ND_TYPE_IC) { if (phydm->support_ic_type & PHYSTS_2ND_TYPE_IC) {
if ((bw_idx == *phydm->band_width)) { if (bw_idx == *phydm->band_width) {
phydm->phy_dbg_info.num_qry_ht_pkt[date_rate - ODM_RATEMCS0]++; phydm->phy_dbg_info.num_qry_ht_pkt[date_rate - ODM_RATEMCS0]++;
} else if (bw_idx == CHANNEL_WIDTH_20) { } else if (bw_idx == CHANNEL_WIDTH_20) {
phydm->phy_dbg_info.num_qry_pkt_sc_20m[date_rate - ODM_RATEMCS0]++; phydm->phy_dbg_info.num_qry_pkt_sc_20m[date_rate - ODM_RATEMCS0]++;
phydm->phy_dbg_info.low_bw_20_occur = true; phydm->phy_dbg_info.low_bw_20_occur = true;
} }
@@ -81,7 +79,6 @@ phydm_rx_statistic_cal(
#endif #endif
{ {
phydm->phy_dbg_info.vht_pkt_not_zero = true; phydm->phy_dbg_info.vht_pkt_not_zero = true;
if (phydm->support_ic_type & PHYSTS_2ND_TYPE_IC) { if (phydm->support_ic_type & PHYSTS_2ND_TYPE_IC) {
if ((bw_idx == *phydm->band_width)) { if ((bw_idx == *phydm->band_width)) {
phydm->phy_dbg_info.num_qry_vht_pkt[date_rate - ODM_RATEVHTSS1MCS0]++; phydm->phy_dbg_info.num_qry_vht_pkt[date_rate - ODM_RATEVHTSS1MCS0]++;
+19
View File
@@ -1529,6 +1529,7 @@ enum ieee80211_state {
(((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ (((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \
(((Addr[5]) & 0xff) == 0xff)) (((Addr[5]) & 0xff) == 0xff))
#else #else
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 00))
extern __inline int is_multicast_mac_addr(const u8 *addr) extern __inline int is_multicast_mac_addr(const u8 *addr)
{ {
return (addr[0] != 0xff) && (0x01 & addr[0]); return (addr[0] != 0xff) && (0x01 & addr[0]);
@@ -1545,6 +1546,24 @@ extern __inline int is_zero_mac_addr(const u8 *addr)
return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \
(addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00));
} }
#else
static __inline int is_multicast_mac_addr(const u8 *addr)
{
return (addr[0] != 0xff) && (0x01 & addr[0]);
}
static __inline int is_broadcast_mac_addr(const u8 *addr)
{
return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \
(addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
}
static __inline int is_zero_mac_addr(const u8 *addr)
{
return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \
(addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00));
}
#endif /* LINUX_VERSION_CODE */
#endif /* PLATFORM_FREEBSD */ #endif /* PLATFORM_FREEBSD */
#define CFG_IEEE80211_RESERVE_FCS (1<<0) #define CFG_IEEE80211_RESERVE_FCS (1<<0)
+2 -2
View File
@@ -41,7 +41,7 @@ const char *security_type_str(u8 value);
#define _WPA_IE_ID_ 0xdd #define _WPA_IE_ID_ 0xdd
#define _WPA2_IE_ID_ 0x30 #define _WPA2_IE_ID_ 0x30
#define SHA256_MAC_LEN 32 #define RTW_SHA256_MAC_LEN 32
#define AES_BLOCK_SIZE 16 #define AES_BLOCK_SIZE 16
#define AES_PRIV_SIZE (4 * 44) #define AES_PRIV_SIZE (4 * 44)
@@ -249,7 +249,7 @@ struct security_priv {
#define SEC_IS_BIP_KEY_INSTALLED(sec) _FALSE #define SEC_IS_BIP_KEY_INSTALLED(sec) _FALSE
#endif #endif
struct sha256_state { struct rtw_sha256_state {
u64 length; u64 length;
u32 state[8], curlen; u32 state[8], curlen;
u8 buf[64]; u8 buf[64];
+52 -40
View File
@@ -27,7 +27,7 @@
#define DBG_RTW_CFG80211_MESH_CONF 0 #define DBG_RTW_CFG80211_MESH_CONF 0
#endif #endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0) || defined(RHEL79))
#define STATION_INFO_INACTIVE_TIME BIT(NL80211_STA_INFO_INACTIVE_TIME) #define STATION_INFO_INACTIVE_TIME BIT(NL80211_STA_INFO_INACTIVE_TIME)
#define STATION_INFO_LLID BIT(NL80211_STA_INFO_LLID) #define STATION_INFO_LLID BIT(NL80211_STA_INFO_LLID)
#define STATION_INFO_PLID BIT(NL80211_STA_INFO_PLID) #define STATION_INFO_PLID BIT(NL80211_STA_INFO_PLID)
@@ -289,7 +289,7 @@ static const char *nl80211_chan_width_str(enum nl80211_chan_width cwidth)
return "80+80"; return "80+80";
case NL80211_CHAN_WIDTH_160: case NL80211_CHAN_WIDTH_160:
return "160"; return "160";
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) || defined(RHEL79))
case NL80211_CHAN_WIDTH_5: case NL80211_CHAN_WIDTH_5:
return "5"; return "5";
case NL80211_CHAN_WIDTH_10: case NL80211_CHAN_WIDTH_10:
@@ -390,7 +390,7 @@ static void rtw_get_chbw_from_cfg80211_chan_def(struct cfg80211_chan_def *chdef,
*ch = chan->hw_value; *ch = chan->hw_value;
break; break;
case NL80211_CHAN_WIDTH_80P80: case NL80211_CHAN_WIDTH_80P80:
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) || defined(RHEL79))
case NL80211_CHAN_WIDTH_5: case NL80211_CHAN_WIDTH_5:
case NL80211_CHAN_WIDTH_10: case NL80211_CHAN_WIDTH_10:
#endif #endif
@@ -417,7 +417,11 @@ u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset, u8
if (ret != _SUCCESS) if (ret != _SUCCESS)
goto exit; goto exit;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 0))
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0);
#else
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef); cfg80211_ch_switch_notify(adapter->pnetdev, &chdef);
#endif
#else #else
int freq = rtw_ch2freq(ch); int freq = rtw_ch2freq(ch);
@@ -686,18 +690,12 @@ static int rtw_cfg80211_sync_iftype(_adapter *adapter)
static u64 rtw_get_systime_us(void) static u64 rtw_get_systime_us(void)
{ {
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0))
struct timespec64 ts;
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39))
struct timespec ts; struct timespec ts;
#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); get_monotonic_boottime(&ts);
#endif
return ((u64)ts.tv_sec * 1000000) + ts.tv_nsec / 1000; return ((u64)ts.tv_sec * 1000000) + ts.tv_nsec / 1000;
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0))
return ktime_to_us(ktime_get_boottime());
#else #else
struct timeval tv; struct timeval tv;
do_gettimeofday(&tv); do_gettimeofday(&tv);
@@ -950,7 +948,7 @@ void rtw_cfg80211_ibss_indicate_connect(_adapter *padapter)
struct wlan_network *cur_network = &(pmlmepriv->cur_network); struct wlan_network *cur_network = &(pmlmepriv->cur_network);
struct wireless_dev *pwdev = padapter->rtw_wdev; struct wireless_dev *pwdev = padapter->rtw_wdev;
struct cfg80211_bss *bss = NULL; struct cfg80211_bss *bss = NULL;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) || defined(RHEL79))
struct wiphy *wiphy = pwdev->wiphy; struct wiphy *wiphy = pwdev->wiphy;
int freq = 2412; int freq = 2412;
struct ieee80211_channel *notify_channel; struct ieee80211_channel *notify_channel;
@@ -1008,7 +1006,7 @@ void rtw_cfg80211_ibss_indicate_connect(_adapter *padapter)
RTW_PRINT(FUNC_ADPT_FMT" BSS not found !!\n", FUNC_ADPT_ARG(padapter)); RTW_PRINT(FUNC_ADPT_FMT" BSS not found !!\n", FUNC_ADPT_ARG(padapter));
} }
/* notify cfg80211 that device joined an IBSS */ /* notify cfg80211 that device joined an IBSS */
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) || defined(RHEL79))
notify_channel = ieee80211_get_channel(wiphy, freq); notify_channel = ieee80211_get_channel(wiphy, freq);
cfg80211_ibss_joined(padapter->pnetdev, cur_network->network.MacAddress, notify_channel, GFP_ATOMIC); cfg80211_ibss_joined(padapter->pnetdev, cur_network->network.MacAddress, notify_channel, GFP_ATOMIC);
#else #else
@@ -1096,7 +1094,7 @@ check_bss:
struct ieee80211_channel *notify_channel; struct ieee80211_channel *notify_channel;
u32 freq; u32 freq;
u16 channel = cur_network->network.Configuration.DSConfig; u16 channel = cur_network->network.Configuration.DSConfig;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) || defined(RHEL79))
struct cfg80211_roam_info roam_info; struct cfg80211_roam_info roam_info;
#endif #endif
@@ -1104,8 +1102,12 @@ check_bss:
notify_channel = ieee80211_get_channel(wiphy, freq); notify_channel = ieee80211_get_channel(wiphy, freq);
#endif #endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) || defined(RHEL79))
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 0, 0))
roam_info.links[0].bssid = cur_network->network.MacAddress;
#else
roam_info.bssid = cur_network->network.MacAddress; roam_info.bssid = cur_network->network.MacAddress;
#endif
roam_info.req_ie = pmlmepriv->assoc_req + sizeof(struct rtw_ieee80211_hdr_3addr) + 2; roam_info.req_ie = pmlmepriv->assoc_req + sizeof(struct rtw_ieee80211_hdr_3addr) + 2;
roam_info.req_ie_len = pmlmepriv->assoc_req_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 2; roam_info.req_ie_len = pmlmepriv->assoc_req_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 2;
roam_info.resp_ie = pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6; roam_info.resp_ie = pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6;
@@ -1132,7 +1134,7 @@ check_bss:
rtw_ft_set_status(padapter, RTW_FT_ASSOCIATED_STA); rtw_ft_set_status(padapter, RTW_FT_ASSOCIATED_STA);
#endif #endif
} else { } else {
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE) #if !defined(RHEL79) && (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE))
RTW_INFO("pwdev->sme_state(b)=%d\n", pwdev->sme_state); RTW_INFO("pwdev->sme_state(b)=%d\n", pwdev->sme_state);
#endif #endif
@@ -1143,7 +1145,7 @@ check_bss:
, pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6 , pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6
, pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6 , pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6
, WLAN_STATUS_SUCCESS, GFP_ATOMIC); , WLAN_STATUS_SUCCESS, GFP_ATOMIC);
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE) #if defined(RHEL79) && (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE))
RTW_INFO("pwdev->sme_state(a)=%d\n", pwdev->sme_state); RTW_INFO("pwdev->sme_state(a)=%d\n", pwdev->sme_state);
#endif #endif
} }
@@ -1199,7 +1201,7 @@ void rtw_cfg80211_indicate_disconnect(_adapter *padapter, u16 reason, u8 locally
_enter_critical_bh(&pwdev_priv->connect_req_lock, &irqL); _enter_critical_bh(&pwdev_priv->connect_req_lock, &irqL);
if (padapter->ndev_unregistering || !rtw_wdev_not_indic_disco(pwdev_priv)) { if (padapter->ndev_unregistering || !rtw_wdev_not_indic_disco(pwdev_priv)) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE) #if (!defined(RHEL79) && (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE)))
RTW_INFO("pwdev->sme_state(b)=%d\n", pwdev->sme_state); RTW_INFO("pwdev->sme_state(b)=%d\n", pwdev->sme_state);
if (pwdev->sme_state == CFG80211_SME_CONNECTING) { if (pwdev->sme_state == CFG80211_SME_CONNECTING) {
@@ -2454,7 +2456,7 @@ void rtw_cfg80211_indicate_scan_done(_adapter *adapter, bool aborted)
struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(adapter); struct rtw_wdev_priv *pwdev_priv = adapter_wdev_data(adapter);
_irqL irqL; _irqL irqL;
#if (KERNEL_VERSION(4, 7, 0) <= LINUX_VERSION_CODE) #if (KERNEL_VERSION(4, 7, 0) <= LINUX_VERSION_CODE || defined(RHEL79))
struct cfg80211_scan_info info; struct cfg80211_scan_info info;
memset(&info, 0, sizeof(info)); memset(&info, 0, sizeof(info));
@@ -2471,7 +2473,7 @@ void rtw_cfg80211_indicate_scan_done(_adapter *adapter, bool aborted)
if (pwdev_priv->scan_request->wiphy != pwdev_priv->rtw_wdev->wiphy) if (pwdev_priv->scan_request->wiphy != pwdev_priv->rtw_wdev->wiphy)
RTW_INFO("error wiphy compare\n"); RTW_INFO("error wiphy compare\n");
else else
#if (KERNEL_VERSION(4, 7, 0) <= LINUX_VERSION_CODE) #if (KERNEL_VERSION(4, 7, 0) <= LINUX_VERSION_CODE || defined(RHEL79))
cfg80211_scan_done(pwdev_priv->scan_request, &info); cfg80211_scan_done(pwdev_priv->scan_request, &info);
#else #else
cfg80211_scan_done(pwdev_priv->scan_request, aborted); cfg80211_scan_done(pwdev_priv->scan_request, aborted);
@@ -3061,7 +3063,7 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy
check_need_indicate_scan_done: check_need_indicate_scan_done:
if (_TRUE == need_indicate_scan_done) { if (_TRUE == need_indicate_scan_done) {
#if (KERNEL_VERSION(4, 7, 0) <= LINUX_VERSION_CODE) #if (KERNEL_VERSION(4, 7, 0) <= LINUX_VERSION_CODE || defined(RHEL79))
struct cfg80211_scan_info info; struct cfg80211_scan_info info;
memset(&info, 0, sizeof(info)); memset(&info, 0, sizeof(info));
@@ -3069,7 +3071,7 @@ check_need_indicate_scan_done:
#endif #endif
_rtw_cfg80211_surveydone_event_callback(padapter, request); _rtw_cfg80211_surveydone_event_callback(padapter, request);
#if (KERNEL_VERSION(4, 7, 0) <= LINUX_VERSION_CODE) #if (KERNEL_VERSION(4, 7, 0) <= LINUX_VERSION_CODE || defined(RHEL79))
cfg80211_scan_done(request, &info); cfg80211_scan_done(request, &info);
#else #else
cfg80211_scan_done(request, 0); cfg80211_scan_done(request, 0);
@@ -4466,6 +4468,12 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name,
goto out; goto out;
} }
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0))
mon_ndev->min_mtu = WLAN_MIN_ETHFRM_LEN;
mon_ndev->mtu = WLAN_DATA_MAXLEN;
mon_ndev->max_mtu = WLAN_DATA_MAXLEN;
#endif
mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP; mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP;
strncpy(mon_ndev->name, name, IFNAMSIZ); strncpy(mon_ndev->name, name, IFNAMSIZ);
mon_ndev->name[IFNAMSIZ - 1] = 0; mon_ndev->name[IFNAMSIZ - 1] = 0;
@@ -4876,7 +4884,11 @@ static int cfg80211_rtw_change_beacon(struct wiphy *wiphy, struct net_device *nd
return ret; return ret;
} }
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 0))
static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev, unsigned int link_id)
#else
static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev) static int cfg80211_rtw_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
#endif
{ {
_adapter *adapter = (_adapter *)rtw_netdev_priv(ndev); _adapter *adapter = (_adapter *)rtw_netdev_priv(ndev);
@@ -7094,6 +7106,11 @@ exit:
return ret; return ret;
} }
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
static void cfg80211_rtw_update_mgmt_frame_register(struct wiphy *wiphy,
struct wireless_dev *wdev,
struct mgmt_frame_regs *upd)
#else
static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy, static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy,
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0))
struct wireless_dev *wdev, struct wireless_dev *wdev,
@@ -7101,12 +7118,12 @@ static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy,
struct net_device *ndev, struct net_device *ndev,
#endif #endif
u16 frame_type, bool reg) u16 frame_type, bool reg)
#endif
{ {
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0))
struct net_device *ndev = wdev_to_ndev(wdev); struct net_device *ndev = wdev_to_ndev(wdev);
#endif #endif
_adapter *adapter; _adapter *adapter;
struct rtw_wdev_priv *pwdev_priv; struct rtw_wdev_priv *pwdev_priv;
if (ndev == NULL) if (ndev == NULL)
@@ -7120,20 +7137,6 @@ static void cfg80211_rtw_mgmt_frame_register(struct wiphy *wiphy,
frame_type, reg); frame_type, reg);
#endif #endif
/* Wait QC Verify */
return;
switch (frame_type) {
case IEEE80211_STYPE_PROBE_REQ: /* 0x0040 */
SET_CFG80211_REPORT_MGMT(pwdev_priv, IEEE80211_STYPE_PROBE_REQ, reg);
break;
case IEEE80211_STYPE_ACTION: /* 0x00D0 */
SET_CFG80211_REPORT_MGMT(pwdev_priv, IEEE80211_STYPE_ACTION, reg);
break;
default:
break;
}
exit: exit:
return; return;
} }
@@ -9121,7 +9124,8 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy)
#endif #endif
#if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0) && \ #if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0) && \
LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)) LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) && \
!defined(RHEL79))
wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN;
#ifdef CONFIG_PNO_SUPPORT #ifdef CONFIG_PNO_SUPPORT
wiphy->max_sched_scan_ssids = MAX_PNO_LIST_COUNT; wiphy->max_sched_scan_ssids = MAX_PNO_LIST_COUNT;
@@ -9132,7 +9136,7 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy)
#endif #endif
#if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) #if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0))
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0)) #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) && !defined(RHEL79))
wiphy->wowlan = wowlan_stub; wiphy->wowlan = wowlan_stub;
#else #else
wiphy->wowlan = &wowlan_stub; wiphy->wowlan = &wowlan_stub;
@@ -9438,7 +9442,11 @@ static struct cfg80211_ops rtw_cfg80211_ops = {
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE)
.mgmt_tx = cfg80211_rtw_mgmt_tx, .mgmt_tx = cfg80211_rtw_mgmt_tx,
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
.update_mgmt_frame_registrations = cfg80211_rtw_update_mgmt_frame_register,
#else
.mgmt_frame_register = cfg80211_rtw_mgmt_frame_register, .mgmt_frame_register = cfg80211_rtw_mgmt_frame_register,
#endif
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34) && LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34) && LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35))
.action = cfg80211_rtw_mgmt_tx, .action = cfg80211_rtw_mgmt_tx,
#endif #endif
@@ -9638,7 +9646,11 @@ void rtw_wdev_unregister(struct wireless_dev *wdev)
rtw_cfg80211_indicate_scan_done(adapter, _TRUE); rtw_cfg80211_indicate_scan_done(adapter, _TRUE);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) || defined(COMPAT_KERNEL_RELEASE) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)) || defined(COMPAT_KERNEL_RELEASE)
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 0))
if (wdev->connected) {
#else
if (wdev->current_bss) { if (wdev->current_bss) {
#endif
RTW_INFO(FUNC_ADPT_FMT" clear current_bss by cfg80211_disconnected\n", FUNC_ADPT_ARG(adapter)); RTW_INFO(FUNC_ADPT_FMT" clear current_bss by cfg80211_disconnected\n", FUNC_ADPT_ARG(adapter));
rtw_cfg80211_indicate_disconnect(adapter, 0, 1); rtw_cfg80211_indicate_disconnect(adapter, 0, 1);
} }
+6 -2
View File
@@ -168,6 +168,10 @@ struct rtw_wdev_priv {
bool block_scan; bool block_scan;
bool power_mgmt; bool power_mgmt;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)
u32 mgmt_mask;
#endif
/* report mgmt_frame registered */ /* report mgmt_frame registered */
u16 report_mgmt; u16 report_mgmt;
@@ -358,7 +362,7 @@ void rtw_cfg80211_deinit_rfkill(struct wiphy *wiphy);
#define rtw_cfg80211_connect_result(wdev, bssid, req_ie, req_ie_len, resp_ie, resp_ie_len, status, gfp) cfg80211_connect_result(wdev_to_ndev(wdev), bssid, req_ie, req_ie_len, resp_ie, resp_ie_len, status, gfp) #define rtw_cfg80211_connect_result(wdev, bssid, req_ie, req_ie_len, resp_ie, resp_ie_len, status, gfp) cfg80211_connect_result(wdev_to_ndev(wdev), bssid, req_ie, req_ie_len, resp_ie, resp_ie_len, status, gfp)
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0)) #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) && !defined(RHEL79))
#define rtw_cfg80211_disconnected(wdev, reason, ie, ie_len, locally_generated, gfp) cfg80211_disconnected(wdev_to_ndev(wdev), reason, ie, ie_len, gfp) #define rtw_cfg80211_disconnected(wdev, reason, ie, ie_len, locally_generated, gfp) cfg80211_disconnected(wdev_to_ndev(wdev), reason, ie, ie_len, gfp)
#else #else
#define rtw_cfg80211_disconnected(wdev, reason, ie, ie_len, locally_generated, gfp) cfg80211_disconnected(wdev_to_ndev(wdev), reason, ie, ie_len, locally_generated, gfp) #define rtw_cfg80211_disconnected(wdev, reason, ie, ie_len, locally_generated, gfp) cfg80211_disconnected(wdev_to_ndev(wdev), reason, ie, ie_len, locally_generated, gfp)
@@ -380,7 +384,7 @@ void rtw_cfg80211_deinit_rfkill(struct wiphy *wiphy);
u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset, u8 ht); u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset, u8 ht);
#endif #endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26)) && (LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26)) && (LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0) && !defined(RHEL79) )
#define NL80211_BAND_2GHZ IEEE80211_BAND_2GHZ #define NL80211_BAND_2GHZ IEEE80211_BAND_2GHZ
#define NL80211_BAND_5GHZ IEEE80211_BAND_5GHZ #define NL80211_BAND_5GHZ IEEE80211_BAND_5GHZ
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0))
+14
View File
@@ -1199,7 +1199,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 */ _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 */ _rtw_memcpy(pnetdev->dev_addr, sa->sa_data, ETH_ALEN); /* set mac addr to net_device */
#endif
#if 0 #if 0
if (rtw_is_hw_init_completed(padapter)) { if (rtw_is_hw_init_completed(padapter)) {
@@ -1513,6 +1517,12 @@ struct net_device *rtw_init_netdev(_adapter *old_padapter)
if (!pnetdev) if (!pnetdev)
return NULL; return NULL;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0))
pnetdev->min_mtu = WLAN_MIN_ETHFRM_LEN;
pnetdev->mtu = WLAN_DATA_MAXLEN;
pnetdev->max_mtu = WLAN_DATA_MAXLEN;
#endif
padapter = rtw_netdev_priv(pnetdev); padapter = rtw_netdev_priv(pnetdev);
padapter->pnetdev = pnetdev; padapter->pnetdev = pnetdev;
@@ -1622,7 +1632,11 @@ int rtw_os_ndev_register(_adapter *adapter, const char *name)
/* alloc netdev name */ /* alloc netdev name */
rtw_init_netdev_name(ndev, 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); _rtw_memcpy(ndev->dev_addr, adapter_mac_addr(adapter), ETH_ALEN);
#endif
#if defined(CONFIG_NET_NS) #if defined(CONFIG_NET_NS)
dev_net_set(ndev, wiphy_net(adapter_to_wiphy(adapter))); dev_net_set(ndev, wiphy_net(adapter_to_wiphy(adapter)));
#endif //defined(CONFIG_NET_NS) #endif //defined(CONFIG_NET_NS)
+4
View File
@@ -354,7 +354,11 @@ static int napi_recv(_adapter *padapter, int budget)
#ifdef CONFIG_RTW_GRO #ifdef CONFIG_RTW_GRO
if (pregistrypriv->en_gro) { if (pregistrypriv->en_gro) {
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 12, 0))
if (rtw_napi_gro_receive(&padapter->napi, pskb) != GRO_DROP) if (rtw_napi_gro_receive(&padapter->napi, pskb) != GRO_DROP)
#else
if (rtw_napi_gro_receive(&padapter->napi, pskb) != GRO_MERGED_FREE)
#endif
rx_ok = _TRUE; rx_ok = _TRUE;
goto next; goto next;
} }
+4
View File
@@ -45,6 +45,10 @@ inline struct proc_dir_entry *get_rtw_drv_proc(void)
#define get_proc_net init_net.proc_net #define get_proc_net init_net.proc_net
#endif #endif
#if(LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0))
#define PDE_DATA(inode) pde_data(inode)
#endif
inline struct proc_dir_entry *rtw_proc_create_dir(const char *name, struct proc_dir_entry *parent, void *data) inline struct proc_dir_entry *rtw_proc_create_dir(const char *name, struct proc_dir_entry *parent, void *data)
{ {
struct proc_dir_entry *entry; struct proc_dir_entry *entry;
+2
View File
@@ -158,7 +158,9 @@ static struct usb_device_id rtw_usb_id_tbl[] = {
{USB_DEVICE(0x2001, 0x330F), .driver_info = RTL8188E}, /* DLink DWA-125 REV D1 */ {USB_DEVICE(0x2001, 0x330F), .driver_info = RTL8188E}, /* DLink DWA-125 REV D1 */
{USB_DEVICE(0x2001, 0x3310), .driver_info = RTL8188E}, /* Dlink DWA-123 REV D1 */ {USB_DEVICE(0x2001, 0x3310), .driver_info = RTL8188E}, /* Dlink DWA-123 REV D1 */
{USB_DEVICE(0x2001, 0x3311), .driver_info = RTL8188E}, /* DLink GO-USB-N150 REV B1 */ {USB_DEVICE(0x2001, 0x3311), .driver_info = RTL8188E}, /* DLink GO-USB-N150 REV B1 */
{USB_DEVICE(0x2001, 0x331B), .driver_info = RTL8188E}, /* DLink DWA-121 REV B1 */
{USB_DEVICE(0x056E, 0x4008), .driver_info = RTL8188E}, /* Elecom WDC-150SU2M */ {USB_DEVICE(0x056E, 0x4008), .driver_info = RTL8188E}, /* Elecom WDC-150SU2M */
{USB_DEVICE(0x7392, 0xB811), .driver_info = RTL8188E}, /* Edimax EW-7811UN v2 */
#endif #endif
#ifdef CONFIG_RTL8812A #ifdef CONFIG_RTL8812A
+3 -3
View File
@@ -294,7 +294,7 @@ void rtw_regd_apply_flags(struct wiphy *wiphy)
&& rtw_odm_dfs_domain_unknown(padapter) && rtw_odm_dfs_domain_unknown(padapter)
#endif #endif
) { ) {
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) && !defined(RHEL79))
ch->flags = (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN); ch->flags = (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN);
#else #else
ch->flags = IEEE80211_CHAN_NO_IR; ch->flags = IEEE80211_CHAN_NO_IR;
@@ -309,7 +309,7 @@ void rtw_regd_apply_flags(struct wiphy *wiphy)
#endif #endif
) { ) {
ch->flags |= IEEE80211_CHAN_RADAR; ch->flags |= IEEE80211_CHAN_RADAR;
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) && !defined(RHEL79))
ch->flags |= (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN); ch->flags |= (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN);
#else #else
ch->flags |= IEEE80211_CHAN_NO_IR; ch->flags |= IEEE80211_CHAN_NO_IR;
@@ -374,7 +374,7 @@ static void _rtw_regd_init_wiphy(struct rtw_regulatory *reg, struct wiphy *wiphy
wiphy->reg_notifier = rtw_reg_notifier; wiphy->reg_notifier = rtw_reg_notifier;
#endif #endif
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) && !defined(RHEL79))
wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY;
wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY; wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY;
wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS; wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS;
+34 -1
View File
@@ -1268,8 +1268,12 @@ u32 _rtw_down_sema(_sema *sema)
inline void thread_exit(_completion *comp) inline void thread_exit(_completion *comp)
{ {
#ifdef PLATFORM_LINUX #ifdef PLATFORM_LINUX
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0))
kthread_complete_and_exit(comp, 0);
#else
complete_and_exit(comp, 0); complete_and_exit(comp, 0);
#endif #endif
#endif
#ifdef PLATFORM_FREEBSD #ifdef PLATFORM_FREEBSD
printf("%s", "RTKTHREAD_exit"); printf("%s", "RTKTHREAD_exit");
@@ -2139,15 +2143,19 @@ static int isFileReadable(const char *path, u32 *sz)
{ {
struct file *fp; struct file *fp;
int ret = 0; int ret = 0;
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
mm_segment_t oldfs; mm_segment_t oldfs;
#endif
char buf; char buf;
fp = filp_open(path, O_RDONLY, 0); fp = filp_open(path, O_RDONLY, 0);
if (IS_ERR(fp)) if (IS_ERR(fp))
ret = PTR_ERR(fp); ret = PTR_ERR(fp);
else { else {
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
oldfs = get_fs(); oldfs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#endif
if (1 != readFile(fp, &buf, 1)) if (1 != readFile(fp, &buf, 1))
ret = PTR_ERR(fp); ret = PTR_ERR(fp);
@@ -2159,8 +2167,9 @@ static int isFileReadable(const char *path, u32 *sz)
*sz = i_size_read(fp->f_dentry->d_inode); *sz = i_size_read(fp->f_dentry->d_inode);
#endif #endif
} }
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
set_fs(oldfs); set_fs(oldfs);
#endif
filp_close(fp, NULL); filp_close(fp, NULL);
} }
return ret; return ret;
@@ -2176,7 +2185,9 @@ static int isFileReadable(const char *path, u32 *sz)
static int retriveFromFile(const char *path, u8 *buf, u32 sz) static int retriveFromFile(const char *path, u8 *buf, u32 sz)
{ {
int ret = -1; int ret = -1;
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
mm_segment_t oldfs; mm_segment_t oldfs;
#endif
struct file *fp; struct file *fp;
if (path && buf) { if (path && buf) {
@@ -2184,10 +2195,14 @@ static int retriveFromFile(const char *path, u8 *buf, u32 sz)
if (0 == ret) { if (0 == ret) {
RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp); RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp);
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
oldfs = get_fs(); oldfs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#endif
ret = readFile(fp, buf, sz); ret = readFile(fp, buf, sz);
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
set_fs(oldfs); set_fs(oldfs);
#endif
closeFile(fp); closeFile(fp);
RTW_INFO("%s readFile, ret:%d\n", __FUNCTION__, ret); RTW_INFO("%s readFile, ret:%d\n", __FUNCTION__, ret);
@@ -2211,7 +2226,9 @@ static int retriveFromFile(const char *path, u8 *buf, u32 sz)
static int storeToFile(const char *path, u8 *buf, u32 sz) static int storeToFile(const char *path, u8 *buf, u32 sz)
{ {
int ret = 0; int ret = 0;
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
mm_segment_t oldfs; mm_segment_t oldfs;
#endif
struct file *fp; struct file *fp;
if (path && buf) { if (path && buf) {
@@ -2219,10 +2236,14 @@ static int storeToFile(const char *path, u8 *buf, u32 sz)
if (0 == ret) { if (0 == ret) {
RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp); RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp);
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
oldfs = get_fs(); oldfs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
#endif
ret = writeFile(fp, buf, sz); ret = writeFile(fp, buf, sz);
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
set_fs(oldfs); set_fs(oldfs);
#endif
closeFile(fp); closeFile(fp);
RTW_INFO("%s writeFile, ret:%d\n", __FUNCTION__, ret); RTW_INFO("%s writeFile, ret:%d\n", __FUNCTION__, ret);
@@ -2324,6 +2345,12 @@ struct net_device *rtw_alloc_etherdev_with_old_priv(int sizeof_priv, void *old_p
if (!pnetdev) if (!pnetdev)
goto RETURN; goto RETURN;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0))
pnetdev->min_mtu = WLAN_MIN_ETHFRM_LEN;
pnetdev->mtu = WLAN_MAX_ETHFRM_LEN;
pnetdev->max_mtu = WLAN_DATA_MAXLEN;
#endif
pnpi = netdev_priv(pnetdev); pnpi = netdev_priv(pnetdev);
pnpi->priv = old_priv; pnpi->priv = old_priv;
pnpi->sizeof_priv = sizeof_priv; pnpi->sizeof_priv = sizeof_priv;
@@ -2345,6 +2372,12 @@ struct net_device *rtw_alloc_etherdev(int sizeof_priv)
if (!pnetdev) if (!pnetdev)
goto RETURN; goto RETURN;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0))
pnetdev->min_mtu = WLAN_MIN_ETHFRM_LEN;
pnetdev->mtu = WLAN_MAX_ETHFRM_LEN;
pnetdev->max_mtu = WLAN_DATA_MAXLEN;
#endif
pnpi = netdev_priv(pnetdev); pnpi = netdev_priv(pnetdev);
pnpi->priv = rtw_zvmalloc(sizeof_priv); pnpi->priv = rtw_zvmalloc(sizeof_priv);