From cba97ddc90feb721da1a4b3e358e70aa23f241e6 Mon Sep 17 00:00:00 2001 From: kimocoder Date: Tue, 4 May 2021 13:57:01 +0200 Subject: [PATCH] add config flag CONFIG_WIFI_DATA_AES_SW_DECRYPTION_DISABLED to disable sw AES decryption for slow devices --- Makefile | 7 +++++++ core/rtw_recv.c | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/Makefile b/Makefile index abe343c..02c5549 100755 --- a/Makefile +++ b/Makefile @@ -77,6 +77,9 @@ CONFIG_RTW_NETIF_SG = y CONFIG_RTW_IPCAM_APPLICATION = n CONFIG_RTW_REPEATER_SON = n CONFIG_RTW_WIFI_HAL = y +CONFIG_ICMP_VOQ = n +CONFIG_IP_R_MONITOR = n #arp VOQ and high rate +CONFIG_WIFI_DATA_AES_SW_DECRYPTION_DISABLED = n ########################## Debug ########################### CONFIG_RTW_DEBUG = n # default log level is _DRV_INFO_ = 4, @@ -1004,6 +1007,10 @@ ifeq ($(CONFIG_RTW_NETIF_SG), y) EXTRA_CFLAGS += -DCONFIG_RTW_NETIF_SG endif +ifeq ($(CONFIG_WIFI_DATA_AES_SW_DECRYPTION_DISABLED), y) +EXTRA_CFLAGS += -DCONFIG_WIFI_DATA_AES_SW_DECRYPTION_DISABLED +endif + ifeq ($(CONFIG_RTW_WIFI_HAL), y) #EXTRA_CFLAGS += -DCONFIG_RTW_WIFI_HAL_DEBUG EXTRA_CFLAGS += -DCONFIG_RTW_WIFI_HAL diff --git a/core/rtw_recv.c b/core/rtw_recv.c index 106c6db..6563119 100644 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -623,6 +623,46 @@ union recv_frame *decryptor(_adapter *padapter, union recv_frame *precv_frame) res = rtw_tkip_decrypt(padapter, (u8 *)precv_frame); break; case _AES_: +#ifdef CONFIG_WIFI_DATA_AES_SW_DECRYPTION_DISABLED + if (GetFrameType(get_recvframe_data(precv_frame)) == WIFI_DATA) { +#ifdef CONFIG_RTW_DEBUG + if (prxattrib->seq_num % 100 == 0) { + struct sta_info *stainfo; + u8 *prwskey; + + stainfo = rtw_get_stainfo(&padapter->stapriv , &prxattrib->ta[0]); + prwskey = &stainfo->dot118021x_UncstKey.skey[0]; + + if(stainfo != NULL) { + RTW_INFO("[%s:%d]: dropping encrypted data frame: key="KEY_FMT" busetkipkey=%d seq_num=%d src="MAC_FMT" dst="MAC_FMT" ta="MAC_FMT" ra="MAC_FMT"\n", + __FUNCTION__, + __LINE__, + KEY_ARG(prwskey), + psecuritypriv->busetkipkey, + prxattrib->seq_num, + MAC_ARG(prxattrib->src), + MAC_ARG(prxattrib->dst), + MAC_ARG(prxattrib->ta), + MAC_ARG(prxattrib->ra) + ); + } else { + RTW_INFO("[%s:%d]: dropping encrypted data frame: stainfo==NULL busetkipkey=%d seq_num=%d src="MAC_FMT" dst="MAC_FMT" ta="MAC_FMT" ra="MAC_FMT"\n", + __FUNCTION__, + __LINE__, + psecuritypriv->busetkipkey, + prxattrib->seq_num, + MAC_ARG(prxattrib->src), + MAC_ARG(prxattrib->dst), + MAC_ARG(prxattrib->ta), + MAC_ARG(prxattrib->ra) + ); + } + } +#endif // CONFIG_RTW_DEBUG + res = _FAIL; + break; + } +#endif // CONFIG_WIFI_DATA_AES_SW_DECRYPTION_DISABLED DBG_COUNTER(padapter->rx_logs.core_rx_post_decrypt_aes); res = rtw_aes_decrypt(padapter, (u8 *)precv_frame); break;