mirror of
https://github.com/abperiasamy/rtl8812AU_8821AU_linux.git
synced 2025-10-19 17:11:09 +02:00
merge new version v4.3.14 from https://github.com/ptpt52/rtl8812au (#160)
This commit is contained in:
committed by
Harshavardhana
parent
c962f7a88d
commit
00aedbde5c
@@ -1,7 +1,7 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
@@ -29,9 +29,13 @@
|
||||
#define _WEP104_ 0x5
|
||||
#define _WEP_WPA_MIXED_ 0x07 // WEP + WPA
|
||||
#define _SMS4_ 0x06
|
||||
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
#define _BIP_ 0x8
|
||||
#endif //CONFIG_IEEE80211W
|
||||
#define is_wep_enc(alg) (((alg) == _WEP40_) || ((alg) == _WEP104_))
|
||||
|
||||
const char *security_type_str(u8 value);
|
||||
|
||||
#define _WPA_IE_ID_ 0xdd
|
||||
#define _WPA2_IE_ID_ 0x30
|
||||
|
||||
@@ -39,6 +43,10 @@
|
||||
#define AES_BLOCK_SIZE 16
|
||||
#define AES_PRIV_SIZE (4 * 44)
|
||||
|
||||
#define RTW_KEK_LEN 16
|
||||
#define RTW_KCK_LEN 16
|
||||
#define RTW_REPLAY_CTR_LEN 8
|
||||
|
||||
typedef enum {
|
||||
ENCRYP_PROTOCOL_OPENSYS, //open system
|
||||
ENCRYP_PROTOCOL_WEP, //WEP
|
||||
@@ -46,7 +54,7 @@ typedef enum {
|
||||
ENCRYP_PROTOCOL_WPA2, //WPA2
|
||||
ENCRYP_PROTOCOL_WAPI, //WAPI: Not support in this version
|
||||
ENCRYP_PROTOCOL_MAX
|
||||
}ENCRYP_PROTOCOL_E;
|
||||
} ENCRYP_PROTOCOL_E;
|
||||
|
||||
|
||||
#ifndef Ndis802_11AuthModeWPA2
|
||||
@@ -57,48 +65,47 @@ typedef enum {
|
||||
#define Ndis802_11AuthModeWPA2PSK (Ndis802_11AuthModeWPANone + 2)
|
||||
#endif
|
||||
|
||||
union pn48 {
|
||||
|
||||
union pn48 {
|
||||
|
||||
u64 val;
|
||||
|
||||
|
||||
#ifdef CONFIG_LITTLE_ENDIAN
|
||||
|
||||
struct {
|
||||
u8 TSC0;
|
||||
u8 TSC1;
|
||||
u8 TSC2;
|
||||
u8 TSC3;
|
||||
u8 TSC4;
|
||||
u8 TSC5;
|
||||
u8 TSC6;
|
||||
u8 TSC7;
|
||||
} _byte_;
|
||||
|
||||
struct {
|
||||
u8 TSC0;
|
||||
u8 TSC1;
|
||||
u8 TSC2;
|
||||
u8 TSC3;
|
||||
u8 TSC4;
|
||||
u8 TSC5;
|
||||
u8 TSC6;
|
||||
u8 TSC7;
|
||||
} _byte_;
|
||||
|
||||
#elif defined(CONFIG_BIG_ENDIAN)
|
||||
|
||||
struct {
|
||||
u8 TSC7;
|
||||
u8 TSC6;
|
||||
u8 TSC5;
|
||||
u8 TSC4;
|
||||
u8 TSC3;
|
||||
u8 TSC2;
|
||||
u8 TSC1;
|
||||
u8 TSC0;
|
||||
} _byte_;
|
||||
|
||||
struct {
|
||||
u8 TSC7;
|
||||
u8 TSC6;
|
||||
u8 TSC5;
|
||||
u8 TSC4;
|
||||
u8 TSC3;
|
||||
u8 TSC2;
|
||||
u8 TSC1;
|
||||
u8 TSC0;
|
||||
} _byte_;
|
||||
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
union Keytype {
|
||||
u8 skey[16];
|
||||
u32 lkey[4];
|
||||
u8 skey[16];
|
||||
u32 lkey[4];
|
||||
};
|
||||
|
||||
|
||||
typedef struct _RT_PMKID_LIST
|
||||
{
|
||||
typedef struct _RT_PMKID_LIST {
|
||||
u8 bUsed;
|
||||
u8 Bssid[6];
|
||||
u8 PMKID[16];
|
||||
@@ -108,49 +115,60 @@ typedef struct _RT_PMKID_LIST
|
||||
} RT_PMKID_LIST, *PRT_PMKID_LIST;
|
||||
|
||||
|
||||
struct security_priv
|
||||
{
|
||||
u32 dot11AuthAlgrthm; // 802.11 auth, could be open, shared, 8021x and authswitch
|
||||
struct security_priv {
|
||||
u32 dot11AuthAlgrthm; // 802.11 auth, could be open, shared, 8021x and authswitch
|
||||
u32 dot11PrivacyAlgrthm; // This specify the privacy for shared auth. algorithm.
|
||||
|
||||
/* WEP */
|
||||
u32 dot11PrivacyKeyIndex; // this is only valid for legendary wep, 0~3 for key id. (tx key index)
|
||||
union Keytype dot11DefKey[4]; // this is only valid for def. key
|
||||
union Keytype dot11DefKey[4]; // this is only valid for def. key
|
||||
u32 dot11DefKeylen[4];
|
||||
u8 key_mask; /* use to restore wep key after hal_init */
|
||||
|
||||
u32 dot118021XGrpPrivacy; // This specify the privacy algthm. used for Grp key
|
||||
u32 dot118021XGrpPrivacy; // This specify the privacy algthm. used for Grp key
|
||||
u32 dot118021XGrpKeyid; // key id used for Grp Key ( tx key index)
|
||||
union Keytype dot118021XGrpKey[4]; // 802.1x Group Key, for inx0 and inx1
|
||||
union Keytype dot118021XGrpKey[4]; // 802.1x Group Key, for inx0 and inx1
|
||||
union Keytype dot118021XGrptxmickey[4];
|
||||
union Keytype dot118021XGrprxmickey[4];
|
||||
union pn48 dot11Grptxpn; // PN48 used for Grp Key xmit.
|
||||
union pn48 dot11Grprxpn; // PN48 used for Grp Key recv.
|
||||
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
u32 dot11wBIPKeyid; // key id used for BIP Key ( tx key index)
|
||||
union Keytype dot11wBIPKey[6]; // BIP Key, for index4 and index5
|
||||
union pn48 dot11wBIPtxpn; // PN48 used for Grp Key xmit.
|
||||
union pn48 dot11wBIPrxpn; // PN48 used for Grp Key recv.
|
||||
#endif //CONFIG_IEEE80211W
|
||||
#ifdef CONFIG_AP_MODE
|
||||
//extend security capabilities for AP_MODE
|
||||
//extend security capabilities for AP_MODE
|
||||
unsigned int dot8021xalg;//0:disable, 1:psk, 2:802.1x
|
||||
unsigned int wpa_psk;//0:disable, bit(0): WPA, bit(1):WPA2
|
||||
unsigned int wpa_group_cipher;
|
||||
unsigned int wpa2_group_cipher;
|
||||
unsigned int wpa_pairwise_cipher;
|
||||
unsigned int wpa2_pairwise_cipher;
|
||||
unsigned int wpa2_pairwise_cipher;
|
||||
#endif
|
||||
|
||||
u8 wps_ie[MAX_WPS_IE_LEN];//added in assoc req
|
||||
int wps_ie_len;
|
||||
|
||||
|
||||
|
||||
|
||||
u8 binstallGrpkey;
|
||||
#ifdef CONFIG_GTK_OL
|
||||
u8 binstallKCK_KEK;
|
||||
#endif //CONFIG_GTK_OL
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
u8 binstallBIPkey;
|
||||
#endif //CONFIG_IEEE80211W
|
||||
u8 busetkipkey;
|
||||
//_timer tkip_timer;
|
||||
u8 bcheck_grpkey;
|
||||
u8 bgrpkey_handshake;
|
||||
|
||||
|
||||
//u8 packet_cnt;//unused, removed
|
||||
|
||||
|
||||
s32 sw_encrypt;//from registry_priv
|
||||
s32 sw_decrypt;//from registry_priv
|
||||
|
||||
|
||||
s32 hw_decrypted;//if the rx packets is hw_decrypted==_FALSE, it means the hw has not been ready.
|
||||
|
||||
|
||||
@@ -173,7 +191,7 @@ struct security_priv
|
||||
|
||||
|
||||
//for tkip countermeasure
|
||||
u32 last_mic_err_time;
|
||||
u32 last_mic_err_time;
|
||||
u8 btkip_countermeasure;
|
||||
u8 btkip_wait_report;
|
||||
u32 btkip_countermeasure_time;
|
||||
@@ -189,6 +207,30 @@ struct security_priv
|
||||
//u8 szCapability[256]; // For WPA2-PSK using zero-config, by Annie, 2005-09-20.
|
||||
|
||||
u8 bWepDefaultKeyIdxSet;
|
||||
|
||||
#define DBG_SW_SEC_CNT
|
||||
#ifdef DBG_SW_SEC_CNT
|
||||
u64 wep_sw_enc_cnt_bc;
|
||||
u64 wep_sw_enc_cnt_mc;
|
||||
u64 wep_sw_enc_cnt_uc;
|
||||
u64 wep_sw_dec_cnt_bc;
|
||||
u64 wep_sw_dec_cnt_mc;
|
||||
u64 wep_sw_dec_cnt_uc;
|
||||
|
||||
u64 tkip_sw_enc_cnt_bc;
|
||||
u64 tkip_sw_enc_cnt_mc;
|
||||
u64 tkip_sw_enc_cnt_uc;
|
||||
u64 tkip_sw_dec_cnt_bc;
|
||||
u64 tkip_sw_dec_cnt_mc;
|
||||
u64 tkip_sw_dec_cnt_uc;
|
||||
|
||||
u64 aes_sw_enc_cnt_bc;
|
||||
u64 aes_sw_enc_cnt_mc;
|
||||
u64 aes_sw_enc_cnt_uc;
|
||||
u64 aes_sw_dec_cnt_bc;
|
||||
u64 aes_sw_dec_cnt_mc;
|
||||
u64 aes_sw_dec_cnt_uc;
|
||||
#endif /* DBG_SW_SEC_CNT */
|
||||
};
|
||||
|
||||
struct sha256_state {
|
||||
@@ -218,6 +260,7 @@ do{\
|
||||
}\
|
||||
}while(0)
|
||||
|
||||
#define _AES_IV_LEN_ 8
|
||||
|
||||
#define SET_ICE_IV_LEN( iv_len, icv_len, encrypt)\
|
||||
do{\
|
||||
@@ -262,8 +305,7 @@ do{\
|
||||
#define ROL32( A, n ) ( ((A) << (n)) | ( ((A)>>(32-(n))) & ( (1UL << (n)) - 1 ) ) )
|
||||
#define ROR32( A, n ) ROL32( (A), 32-(n) )
|
||||
|
||||
struct mic_data
|
||||
{
|
||||
struct mic_data {
|
||||
u32 K0, K1; // Key
|
||||
u32 L, R; // Current state
|
||||
u32 M; // Message accumulator (single word)
|
||||
@@ -353,7 +395,7 @@ static inline u32 rotr(u32 val, int bits)
|
||||
(a)[6] = (u8) (((u64) (val)) >> 8); \
|
||||
(a)[7] = (u8) (((u64) (val)) & 0xff); \
|
||||
} while (0)
|
||||
|
||||
|
||||
/* ===== start - public domain SHA256 implementation ===== */
|
||||
|
||||
/* This is based on SHA256 implementation in LibTomCrypt that was released into
|
||||
@@ -382,7 +424,7 @@ static const unsigned long K[64] = {
|
||||
( ((((unsigned long) (x) & 0xFFFFFFFFUL) >> (unsigned long) ((y) & 31)) | \
|
||||
((unsigned long) (x) << (unsigned long) (32 - ((y) & 31)))) & 0xFFFFFFFFUL)
|
||||
#define Ch(x,y,z) (z ^ (x & (y ^ z)))
|
||||
#define Maj(x,y,z) (((x | y) & z) | (x & y))
|
||||
#define Maj(x,y,z) (((x | y) & z) | (x & y))
|
||||
#define S(x, n) RORc((x), (n))
|
||||
#define R(x, n) (((x)&0xFFFFFFFFUL)>>(n))
|
||||
#define Sigma0(x) (S(x, 2) ^ S(x, 13) ^ S(x, 22))
|
||||
@@ -392,19 +434,21 @@ static const unsigned long K[64] = {
|
||||
#ifndef MIN
|
||||
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
int omac1_aes_128(u8 *key, u8 *data, size_t data_len, u8 *mac);
|
||||
#endif //CONFIG_IEEE80211W
|
||||
void rtw_secmicsetkey(struct mic_data *pmicdata, u8 * key );
|
||||
void rtw_secmicappendbyte(struct mic_data *pmicdata, u8 b );
|
||||
void rtw_secmicappend(struct mic_data *pmicdata, u8 * src, u32 nBytes );
|
||||
void rtw_secgetmic(struct mic_data *pmicdata, u8 * dst );
|
||||
|
||||
void rtw_seccalctkipmic(
|
||||
u8 * key,
|
||||
u8 *header,
|
||||
u8 *data,
|
||||
u32 data_len,
|
||||
u8 *Miccode,
|
||||
u8 priority);
|
||||
u8 * key,
|
||||
u8 *header,
|
||||
u8 *data,
|
||||
u32 data_len,
|
||||
u8 *Miccode,
|
||||
u8 priority);
|
||||
|
||||
u32 rtw_aes_encrypt(_adapter *padapter, u8 *pxmitframe);
|
||||
u32 rtw_tkip_encrypt(_adapter *padapter, u8 *pxmitframe);
|
||||
@@ -413,17 +457,22 @@ void rtw_wep_encrypt(_adapter *padapter, u8 *pxmitframe);
|
||||
u32 rtw_aes_decrypt(_adapter *padapter, u8 *precvframe);
|
||||
u32 rtw_tkip_decrypt(_adapter *padapter, u8 *precvframe);
|
||||
void rtw_wep_decrypt(_adapter *padapter, u8 *precvframe);
|
||||
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
u32 rtw_BIP_verify(_adapter *padapter, u8 *precvframe);
|
||||
#endif //CONFIG_IEEE80211W
|
||||
#ifdef CONFIG_TDLS
|
||||
void wpa_tdls_generate_tpk(_adapter *padapter, struct sta_info *psta);
|
||||
int wpa_tdls_ftie_mic(u8 *kck, u8 trans_seq,
|
||||
u8 *lnkid, u8 *rsnie, u8 *timeoutie, u8 *ftie,
|
||||
u8 *mic);
|
||||
int tdls_verify_mic(u8 *kck, u8 trans_seq,
|
||||
u8 *lnkid, u8 *rsnie, u8 *timeoutie, u8 *ftie);
|
||||
void wpa_tdls_generate_tpk(_adapter *padapter, PVOID sta);
|
||||
int wpa_tdls_ftie_mic(u8 *kck, u8 trans_seq,
|
||||
u8 *lnkid, u8 *rsnie, u8 *timeoutie, u8 *ftie,
|
||||
u8 *mic);
|
||||
int tdls_verify_mic(u8 *kck, u8 trans_seq,
|
||||
u8 *lnkid, u8 *rsnie, u8 *timeoutie, u8 *ftie);
|
||||
#endif //CONFIG_TDLS
|
||||
|
||||
void rtw_use_tkipkey_handler(RTW_TIMER_HDL_ARGS);
|
||||
|
||||
void rtw_sec_restore_wep_key(_adapter *adapter);
|
||||
u8 rtw_handle_tkip_countermeasure(_adapter* adapter, const char *caller);
|
||||
|
||||
#endif //__RTL871X_SECURITY_H_
|
||||
|
||||
|
Reference in New Issue
Block a user