summaryrefslogtreecommitdiff
path: root/network/wlan/WDI/COMMON/HTGen.h
diff options
context:
space:
mode:
authorDaiqian Hu <[email protected]>2016-11-21 08:54:24 +0800
committerDaiqian Hu <[email protected]>2016-11-21 08:54:24 +0800
commita95eaad088f61aa55da9d73015cf1ed86e64a67e (patch)
tree15b498a08a4aee4b7f8b1627d39c965b3aa3ba98 /network/wlan/WDI/COMMON/HTGen.h
parent1aa0338ec5418345ea0c383e92b4fa19f7c98425 (diff)
Re-submit for WDI sample driver to GitHub
Submit WDI sample driver to GitHub for RS1.
Diffstat (limited to 'network/wlan/WDI/COMMON/HTGen.h')
-rw-r--r--network/wlan/WDI/COMMON/HTGen.h306
1 files changed, 306 insertions, 0 deletions
diff --git a/network/wlan/WDI/COMMON/HTGen.h b/network/wlan/WDI/COMMON/HTGen.h
new file mode 100644
index 00000000..1ed55dfa
--- /dev/null
+++ b/network/wlan/WDI/COMMON/HTGen.h
@@ -0,0 +1,306 @@
+#ifndef __INC_HTGEN_H
+#define __INC_HTGEN_H
+
+extern u1Byte MCS_FILTER_ALL[16];
+extern u1Byte MCS_FILTER_1SS[16];
+
+/* 2007/07/11 MH Modify the macro. Becaus STA may link with a N-AP. If we set
+ STA in A/B/G mode and AP is still in N mode. The macro will be wrong. We have
+ to add a macro to judge wireless mode. */
+#define PICK_RATE(_nLegacyRate, _nMcsRate) \
+ (_nMcsRate==0)?(_nLegacyRate&0x7f):(_nMcsRate)
+
+/* 2007/07/12 MH We only define legacy and HT wireless mode now. */
+#define LEGACY_WIRELESS_MODE (WIRELESS_MODE_A|\
+ WIRELESS_MODE_B|\
+ WIRELESS_MODE_G)
+
+#define CURRENT_RATE(WirelessMode, LegacyRate, HTRate) \
+ ((WirelessMode & LEGACY_WIRELESS_MODE)!=0)?\
+ (LegacyRate):\
+ (PICK_RATE(LegacyRate, HTRate))
+
+
+#define RATE_ADPT_MCS32_MASK 0x01
+
+#define GET_HT_INFO(_pMgntInfo) ((PRT_HIGH_THROUGHPUT)((_pMgntInfo)->pHTInfo))
+
+#define IS_UNDER_11N_AES_MODE(_ADAPTER) ((_ADAPTER->MgntInfo.pHTInfo->bCurrentHTSupport==TRUE) &&\
+ (_ADAPTER->MgntInfo.SecurityInfo.PairwiseEncAlgorithm==RT_ENC_ALG_AESCCMP))
+
+#define HT_MGNT_SET_AMSDU(_ADAPTER, _MODE)\
+ _ADAPTER->MgntInfo.pHTInfo->ForcedAMSDUMode = \
+ (PLATFORM_LIMITED_TX_BUF_SIZE(_ADAPTER))?_ADAPTER->MgntInfo.pHTInfo->ForcedAMSDUMode:_MODE
+
+
+typedef enum _AMSDU_SIZE{
+ AMSDU_SIZE_UNSPECIFED = 0,
+ HT_AMSDU_SIZE_4K = 3839,
+ HT_AMSDU_SIZE_8K = 7935,
+ VHT_AMSDU_SIZE_4K = 3895,
+ VHT_AMSDU_SIZE_8K = 7991,
+ VHT_AMSDU_SIZE_11K = 11454,
+}AMSDU_SIZE;
+
+
+typedef enum AGGRE_SIZE{
+ HT_AGG_SIZE_8K = 0,
+ HT_AGG_SIZE_16K = 1,
+ HT_AGG_SIZE_32K = 2,
+ HT_AGG_SIZE_64K = 3,
+ VHT_AGG_SIZE_128K = 4,
+ VHT_AGG_SIZE_256K = 5,
+ VHT_AGG_SIZE_512K = 6,
+ VHT_AGG_SIZE_1024K = 7,
+}AGGRE_SIZE_E, *PAGGRE_SIZE_E;
+
+
+// Determines the minimum timing between the start of adjacent MPDUs within an AMPDU, measured at the PHY-SAP.
+typedef enum _HT_MPDU_DENSITY{
+ HT_DENSITY_NO_RESTRICTION = 0,
+ HT_DENSITY_1_4US = 1, // 1/4us
+ HT_DENSITY_1_2US = 2, // 1/2us
+ HT_DENSITY_1US = 3, // 1us
+ HT_DENSITY_2US = 4, // 2us
+ HT_DENSITY_4US = 5, // 4us
+ HT_DENSITY_8US = 6, // 8us
+ HT_DENSITY_16US = 7, // 16s
+}HT_MPDU_DENSITY, *PHT_MPDU_DENSITY;
+
+
+// Indicate different AP vendor for IOT issue.
+typedef enum _HT_IOT_PEER
+{
+ HT_IOT_PEER_UNKNOWN = 0,
+ HT_IOT_PEER_REALTEK = 1,
+ HT_IOT_PEER_REALTEK_92SE = 2,
+ HT_IOT_PEER_BROADCOM = 3,
+ HT_IOT_PEER_RALINK = 4,
+ HT_IOT_PEER_ATHEROS = 5,
+ HT_IOT_PEER_CISCO = 6,
+ HT_IOT_PEER_MERU = 7,
+ HT_IOT_PEER_MARVELL = 8,
+ HT_IOT_PEER_REALTEK_SOFTAP = 9,// peer is RealTek SOFT_AP, by Bohn, 2009.12.17
+ HT_IOT_PEER_SELF_SOFTAP = 10, // Self is SoftAP
+ HT_IOT_PEER_AIRGO = 11,
+ HT_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 12,
+ HT_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 13,
+ HT_IOT_PEER_CMW500 = 14,
+ HT_IOT_PEER_MAX,
+}HT_IOT_PEER_E, *PHTIOT_PEER_E;
+
+typedef enum _HT_IOT_PEER_SUBTYPE
+{
+ HT_IOT_PEER_ATHEROS_DIR635 = 0,
+ HT_IOT_PEER_ATHEROS_DIR655 = 1,
+ HT_IOT_PEER_ATHEROS_NETGEAR_WNDAP3200 = 3,
+ HT_IOT_PEER_BROADCOM_NETGEAR_WNDAP4500 = 4,
+ HT_IOT_PEER_ATHEROS_NETGEAR_WNDAP3500 = 5,
+ HT_IOT_PEER_LINKSYS_E4200_V1 = 6,
+ HT_IOT_PEER_TPLINK_AC1750 = 7,
+ HT_IOT_PEER_RALINK_DIR300 = 8,
+}HT_IOT_PEER_SUBTYPE_E, *PHTIOT_PEER_SUBTYPE_E;
+
+
+// IOT Action for different AP
+typedef enum _HT_IOT_ACTION{
+ HT_IOT_ACT_AMSDU_ENABLE = 0x00000002,
+ HT_IOT_ACT_AMSDU_AMPDU = 0x00000004,
+
+ HT_IOT_ACT_DISABLE_EDCA_TURBO = 0x00000010,
+ HT_IOT_ACT_MGNT_USE_CCK_6M = 0x00000020,
+ HT_IOT_ACT_FORCED_DATA_RATE = 0x00000040,
+
+ HT_IOT_ACT_FORCED_CTS2SELF = 0x00000200,
+ HT_IOT_ACT_FORCED_RTS = 0x00000400,
+
+ HT_IOT_ACT_REJECT_ADDBA_REQ = 0x00001000,
+ HT_IOT_ACT_EDCA_BIAS_ON_RX = 0x00004000,
+
+ // Joseph add temporarily.
+ HT_IOT_ACT_DISABLE_HIGH_POWER = 0x00040000,
+ HT_IOT_ACT_DISABLE_TX_40_MHZ = 0x00080000,
+
+ HT_IOT_ACT_TX_NO_AGGREGATION = 0x00100000,
+ HT_IOT_ACT_DISABLE_TX_2SS = 0x00200000,
+ HT_IOT_ACT_DISABLE_ALL_2SS = 0x00400000,
+ HT_IOT_ACT_NULL_DATA_POWER_SAVING = 0x00800000,
+
+ // Roger sync 91su branch to trunk
+ HT_IOT_ACT_DISABLE_CCK_RATE = 0x01000000,
+ HT_IOT_ACT_FORCED_ENABLE_BE_TXOP = 0x02000000,
+ HT_IOT_ACT_WA_IOT_Broadcom = 0x04000000,
+ HT_IOT_ACT_DISABLE_RX_40MHZ_SHORT_GI = 0x08000000,
+
+ HT_IOT_ACT_BCM_AP_RX_FAIL_RELINK = 0x10000000,
+ HT_IOT_ACT_DISABLE_RX_20MHZ_SHORT_GI = 0x20000000,
+ // 2011/11/03 MH Disable extension channel bandwidth indication( No combinaton in primary & ext channel).
+ HT_IOT_ACT_DISABLE_EXT_CHNL_COMBINE = 0x40000000,
+ // 2011/11/28 MH Disable ALL AC TXOP for WNDAP4500 3T3R broadcom ap.
+ HT_IOT_ACT_DISABLE_AC_TXOP = 0x80000000,
+}HT_IOT_ACTION_E, *PHT_IOT_ACTION_E;
+
+
+typedef enum _RT_HT_INF0_CAP{
+ RT_HT_CAP_USE_TURBO_AGGR = 0x01,
+ RT_HT_CAP_USE_LONG_PREAMBLE = 0x02,
+ RT_HT_CAP_USE_AMPDU = 0x04,
+ RT_HT_CAP_USE_WOW = 0x8,
+ RT_HT_CAP_USE_SOFTAP = 0x10,
+ RT_HT_CAP_USE_92SE = 0x20,
+ RT_HT_CAP_USE_88C_92C = 0x40,
+ RT_HT_CAP_USE_AP_CLIENT_MODE = 0x80, // AP team request to reserve this bit, by Emily
+}RT_HT_INF0_CAPBILITY, *PRT_HT_INF0_CAPBILITY;
+
+
+typedef enum _RT_HT_INF1_CAP{
+ RT_HT_CAP_USE_VIDEO_CLIENT = 0x01,
+ RT_HT_CAP_USE_JAGUAR_BCUT = 0x02,
+ RT_HT_CAP_USE_JAGUAR_CCUT = 0x04,
+}RT_HT_INF1_CAPBILITY, *PRT_HT_INF1_CAPBILITY;
+
+u2Byte
+HTMcsToDataRate(
+ PADAPTER Adapter,
+ u2Byte nMcsRate
+ );
+
+u2Byte
+HTPeerMcsToDataRate(
+ PADAPTER Adapter,
+ PRT_WLAN_STA pEntry,
+ u1Byte nMcsRate
+ );
+
+VOID
+HTSetCCKSupport(
+ PADAPTER Adapter,
+ BOOLEAN bStarter,
+ pu1Byte pPeerHTCap
+ );
+
+VOID
+HTConstructInfoElement(
+ PADAPTER Adapter,
+ POCTET_STRING posHTCap);
+
+VOID
+HTConstructCapabilityElement(
+ PADAPTER Adapter,
+ POCTET_STRING posHTInfo,
+ BOOLEAN bAssoc);
+
+
+VOID
+HTOnAssocRsp(
+ IN PADAPTER Adapter,
+ IN OCTET_STRING asocpdu);
+
+VOID
+HTInitializeHTInfo(
+ PADAPTER Adapter);
+
+VOID
+HTInitializeBssDesc(
+ IN PBSS_HT pBssHT
+ );
+
+VOID
+HTParsingHTCapElement(
+ PADAPTER Adapter,
+ OCTET_STRING HTCapIE,
+ PRT_WLAN_BSS pBssDesc);
+
+VOID
+HTParsingHTInfoElement(
+ PADAPTER Adapter,
+ OCTET_STRING HTInfoIE,
+ PRT_WLAN_BSS pBssDesc);
+
+VOID
+HTGetValueFromBeaconOrProbeRsp(
+ PADAPTER Adapter,
+ POCTET_STRING pSRCmmpdu,
+ PRT_WLAN_BSS BssDesc);
+
+VOID
+ResetIOTSetting(
+ PMGNT_INFO pMgntInfo);
+
+VOID
+HTResetSelfAndSavePeerSetting(
+ PADAPTER Adapter,
+ PRT_WLAN_BSS pBssDesc);
+
+VOID
+HTUpdateSelfAndPeerSetting(
+ PADAPTER Adapter,
+ PRT_WLAN_BSS pBssDesc
+ );
+
+VOID
+HTUseDefaultSetting(
+ PADAPTER Adapter
+);
+
+BOOLEAN
+HTFilterMCSRate(
+ IN PADAPTER Adapter,
+ IN pu1Byte pSupportMCS,
+ OUT pu1Byte pOperateMCS
+);
+
+VOID
+HT_PickMCSRate(
+ IN PADAPTER Adapter,
+ OUT pu1Byte pOperateMCS
+ );
+
+u1Byte
+HTGetHighestMCSRate(
+ IN PADAPTER Adapter,
+ IN pu1Byte pMCSRateSet,
+ IN pu1Byte pMCSFilter
+ );
+
+BOOLEAN
+HTCCheck(
+ PADAPTER Adapter,
+ PRT_RFD pRfd,
+ POCTET_STRING pFrame
+ );
+
+VOID
+HTCheckHTCap(
+ IN PADAPTER Adapter,
+ IN PRT_WLAN_STA pEntry,
+ IN pu1Byte pHTCap
+);
+
+
+BOOLEAN
+HTIOTActIsCCDFsync(
+ PADAPTER Adapter,
+ PRT_WLAN_BSS pBssDesc
+ );
+
+
+BOOLEAN
+HTIOTActIsForcedAMSDU8K(
+ PADAPTER Adapter,
+ PRT_WLAN_BSS pBssDesc
+ );
+
+
+VOID
+IOTPeerDetermine(
+ PADAPTER Adapter,
+ PRT_WLAN_BSS pBssDesc
+);
+
+VOID
+HTRecoverBWTo40MHz(
+ IN PADAPTER Adapter
+);
+
+#endif