Murat Demirtas 612db32659 FIXED
2016-10-30 14:40:00 +00:00

899 lines
18 KiB
C

/****************************************************************************
* Ralink Tech Inc.
* 4F, No. 2 Technology 5th Rd.
* Science-based Industrial Park
* Hsin-chu, Taiwan, R.O.C.
* (c) Copyright 2002, Ralink Technology, Inc.
*
* All rights reserved. Ralink's source code is an unpublished work and the
* use of a copyright notice does not imply otherwise. This source code
* contains confidential trade secret material of Ralink Tech. Any attemp
* or participation in deciphering, decoding, reverse engineering or in any
* way altering the source code is stricitly prohibited, unless the prior
* written consent of Ralink Technology, Inc. is obtained.
****************************************************************************
Module Name:
tdls.h
Abstract:
Revision History:
Who When What
--------- ---------- ----------------------------------------------
Arvin Tai 17-04-2009 created for 802.11z
*/
#ifdef DOT11Z_TDLS_SUPPORT
#ifndef __TDLS_H
#define __TDLS_H
#include "dot11z_tdls.h"
//#include "dot11r_ft.h"
#define LENGTH_TDLS_H 24
#define LENGTH_TDLS_PAYLOAD_H 3 /* payload type(1 byte) + category(1 byte) + action(1 byte) */
#define TDLS_TIMEOUT 5000 // unit: msec
#define TDLS_DISCOVERY_TRY_COUNT 2
#define TDLS_AUTO_DISCOVERY_INTERVAL 600 /* unit: msec */
#define TDLS_RSSI_MEASUREMENT_PERIOD 10 /* unit: sec */
#define TDLS_AUTO_DISCOVERY_PERIOD 120 /* unit: sec */
#define TDLS_DISABLE_PERIOD_BY_TEARDOWN 120 /* unit: sec */
#define TDLS_AUTO_SETUP_RSSI_THRESHOLD -70 /* unit: dbm */
#define TDLS_AUTO_TEARDOWN_RSSI_THRESHOLD -75 /* unit: dbm */
#define TDLS_AUTO_DISCOVERY_TRY_COUNT 2
extern UCHAR CipherSuiteTDLSWpa2PskAes[];
extern UCHAR CipherSuiteTDLSLen;
#define IS_TDLS_SUPPORT(_P) \
((_P)->StaCfg.TdlsInfo.bTDLSCapable == TRUE)
// TDLS State
typedef enum _TDLS_STATE {
TDLS_MODE_NONE, /* Init state */
TDLS_MODE_WAIT_RESPONSE, /* Wait a response from the Responder */
TDLS_MODE_WAIT_CONFIRM, /* Wait an confirm from the Initiator */
TDLS_MODE_CONNECTED, /* Tunneled Direct Link estabilished */
/* TDLS_MODE_SWITCH_CHANNEL, */
/* TDLS_MODE_PSM, */
/* TDLS_MODE_UAPSD */
} TDLS_STATE;
// TDLS State
typedef enum _TDLS_CHANNEL_SWITCH_STATE {
TDLS_CHANNEL_SWITCH_NONE, // Init state
TDLS_CHANNEL_SWITCH_WAIT_RSP, // Wait a response from the Responder
TDLS_CHANNEL_SWITCH_DONE, // Channel Switch Finish
} TDLS_CHANNEL_SWITCH_STATE;
typedef struct _MLME_TDLS_REQ_STRUCT {
PRT_802_11_TDLS pTDLS;
USHORT Reason;
UCHAR Action;
BOOLEAN IsViaAP;
} MLME_TDLS_REQ_STRUCT, *PMLME_TDLS_REQ_STRUCT;
typedef struct _MLME_TDLS_DISCOVERY_STRUCT {
UCHAR BSSID[MAC_ADDR_LEN];
UCHAR InitiatorAddr[MAC_ADDR_LEN];
UCHAR ResponderAddr[MAC_ADDR_LEN];
UINT8 DialogToken;
} MLME_TDLS_DISCOVERY_STRUCT, *PMLME_TDLS_DISCOVERY_STRUCT;
typedef struct _MLME_TDLS_CH_SWITCH_STRUCT {
UCHAR PeerMacAddr[MAC_ADDR_LEN];
//UINT8 DialogToken;
UINT8 TargetChannel;
UINT8 TargetChannelBW;
} MLME_TDLS_CH_SWITCH_STRUCT, *PMLME_TDLS_CH_SWITCH_STRUCT;
#define TDLS_DISCOVERY_PEER_ENTRY_SIZE 32
typedef struct _TDLS_DISCOVERY_ENTRY {
struct _TDLS_DISCOVERY_ENTRY *pNext;
ULONG InitRefTime;
UCHAR Responder[MAC_ADDR_LEN];
UCHAR RetryCount;
UCHAR DialogToken;
TDLS_CTRL_STATE CurrentState;
CHAR AvgRssi0;
BOOLEAN bTDLSCapable;
BOOLEAN bConnected;
BOOLEAN bFirstTime;
BOOLEAN bConnectedFirstTime;
} TDLS_DISCOVERY_ENTRY, *PTDLS_DISCOVERY_ENTRY;
typedef struct _TDLS_BLACK_ENTRY {
struct _TDLS_BLACK_ENTRY *pNext;
ULONG InitRefTime;
UCHAR MacAddr[MAC_ADDR_LEN];
UCHAR CurrentState;
} TDLS_BLACK_ENTRY, *PTDLS_BLACK_ENTRY;
VOID
TDLS_Table_Init(
IN PRTMP_ADAPTER pAd);
VOID
TDLS_Table_Destory(
IN PRTMP_ADAPTER pAd);
VOID
TDLS_SearchTabMaintain(
IN PRTMP_ADAPTER pAd);
VOID
TDLS_StateMachineInit(
IN PRTMP_ADAPTER pAd,
IN STATE_MACHINE *Sm,
OUT STATE_MACHINE_FUNC Trans[]);
VOID
TDLS_CntlOidTDLSRequestProc(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
INT
TDLS_SearchLinkId(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pAddr);
VOID
TDLS_MlmeParmFill(
IN PRTMP_ADAPTER pAd,
IN OUT MLME_TDLS_REQ_STRUCT *pTdlsReq,
IN PRT_802_11_TDLS pTdls,
IN USHORT Reason,
IN BOOLEAN IsViaAP);
INT Set_TdlsCapableProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT Set_TdlsSetupProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT Set_TdlsTearDownProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT
Set_TdlsDiscoveryReqProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
#ifdef WFD_SUPPORT
INT Set_TdlsTunneledReqProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
#endif /* WFD_SUPPORT */
INT
Set_TdlsTPKLifeTimeProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
#ifdef TDLS_AUTOLINK_SUPPORT
INT
Set_TdlsAutoLinkProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT
Set_TdlsRssiMeasurementPeriodProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT
Set_TdlsAutoDiscoveryPeriodProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT
Set_TdlsAutoSetupRssiThresholdProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT
Set_TdlsDisabledPeriodByTeardownProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT
Set_TdlsAutoTeardownRssiThresholdProc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
#endif /* TDLS_AUTOLINK_SUPPORT */
NDIS_STATUS
TDLS_SetupRequestAction(
IN PRTMP_ADAPTER pAd,
IN PRT_802_11_TDLS pTDLS);
NDIS_STATUS
TDLS_SetupResponseAction(
IN PRTMP_ADAPTER pAd,
IN PRT_802_11_TDLS pTDLS,
IN UCHAR RsnLen,
IN PUCHAR pRsnIe,
IN UCHAR FTLen,
IN PUCHAR pFTIe,
IN UCHAR TILen,
IN PUCHAR pTIIe,
IN UINT16 StatusCode);
NDIS_STATUS
TDLS_SetupConfirmAction(
IN PRTMP_ADAPTER pAd,
IN PRT_802_11_TDLS pTDLS,
IN UCHAR RsnLen,
IN PUCHAR pRsnIe,
IN UCHAR FTLen,
IN PUCHAR pFTIe,
IN UCHAR TILen,
IN PUCHAR pTIIe,
IN UINT16 StatusCode);
NDIS_STATUS
TDLS_DiscoveryReqAction(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pMacAddr);
#ifdef WFD_SUPPORT
NDIS_STATUS
TDLS_TunneledProbeRequest(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pMacAddr);
NDIS_STATUS
TDLS_TunneledProbeResponse(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pMacAddr);
#endif /* WFD_SUPPORT */
NDIS_STATUS
TDLS_DiscoveryRspAction(
IN PRTMP_ADAPTER pAd,
IN UCHAR PeerToken,
IN PUCHAR pPeerMac);
VOID
TDLS_DiscoveryRspPublicAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem,
IN VOID *Msg,
IN ULONG MsgLen);
#ifdef TDLS_AUTOLINK_SUPPORT
VOID
TDLS_ClearEntryList(
IN PLIST_HEADER pTdlsEnList);
PTDLS_DISCOVERY_ENTRY
TDLS_FindDiscoveryEntry(
IN PLIST_HEADER pTdlsEnList,
IN PUCHAR pMacAddr);
BOOLEAN
TDLS_InsertDiscoveryPeerEntryByMAC(
IN PLIST_HEADER pTdlsEnList,
IN PUCHAR pMacAddr,
IN BOOLEAN bConnected);
VOID
TDLS_DelDiscoveryEntryByMAC(
IN PLIST_HEADER pTdlsEnList,
IN PUCHAR pMacAddr);
VOID
TDLS_MaintainDiscoveryEntryList(
IN PRTMP_ADAPTER pAd);
PTDLS_BLACK_ENTRY
TDLS_FindBlackEntry(
IN PLIST_HEADER pTdlsEnList,
IN PUCHAR pMacAddr);
VOID
TDLS_InsertBlackEntryByMAC(
IN PLIST_HEADER pTdlsEnList,
IN PUCHAR pMacAddr,
IN UCHAR CurrentState);
VOID
TDLS_DelBlackEntryByMAC(
IN PLIST_HEADER pTdlsEnList,
IN PUCHAR pMacAddr);
VOID
TDLS_MaintainBlackList(
IN PRTMP_ADAPTER pAd,
IN PLIST_HEADER pTdlsBlackenList);
#endif // TDLS_AUTOLINK_SUPPORT //
VOID
TDLS_InitPeerEntryRateCapability(
IN PRTMP_ADAPTER pAd,
IN MAC_TABLE_ENTRY *pEntry,
IN USHORT *pCapabilityInfo,
IN UCHAR SupportRateLens,
IN UCHAR *pSupportRates,
IN UCHAR HtCapabilityLen,
IN HT_CAPABILITY_IE *pHtCapability);
VOID
TDLS_BuildSetupRequest(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN PRT_802_11_TDLS pTDLS);
VOID
TDLS_BuildSetupResponse(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN PRT_802_11_TDLS pTDLS,
IN UCHAR RsnLen,
IN PUCHAR pRsnIe,
IN UCHAR FTLen,
IN PUCHAR pFTIe,
IN UCHAR TILen,
IN PUCHAR pTIIe,
IN UINT16 StatusCode);
VOID
TDLS_BuildSetupConfirm(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN PRT_802_11_TDLS pTDLS,
IN UCHAR RsnLen,
IN PUCHAR pRsnIe,
IN UCHAR FTLen,
IN PUCHAR pFTIe,
IN UCHAR TILen,
IN PUCHAR pTIIe,
IN UINT16 StatusCode);
VOID
TDLS_BuildTeardown(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN PRT_802_11_TDLS pTDLS,
IN UINT16 ReasonCode);
VOID
TDLS_InsertActField(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN UINT8 Category,
IN UINT8 ActCode);
VOID
TDLS_InsertStatusCode(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN UINT16 StatusCode);
VOID
TDLS_InsertReasonCode(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN UINT16 ReasonCode);
VOID
TDLS_InsertDialogToken(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN UINT8 DialogToken);
VOID
TDLS_InsertLinkIdentifierIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN PUCHAR pInitAddr,
IN PUCHAR pPeerAddr);
VOID
TDLS_InsertCapIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
VOID
TDLS_InsertSSIDIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
VOID
TDLS_InsertSupportRateIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
VOID
TDLS_InsertCountryIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
VOID
TDLS_InsertSupportChannelIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
VOID
TDLS_InsertExtRateIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
VOID
TDLS_InsertQosCapIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
VOID
TDLS_InsertEDCAParameterSetIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN PRT_802_11_TDLS pTDLS);
VOID
TDLS_InsertWMMIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN BOOLEAN bEnable);
VOID
TDLS_InsertWMMParameterIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
#ifdef DOT11_N_SUPPORT
VOID
TDLS_InsertHtCapIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
#ifdef DOT11N_DRAFT3
VOID
TDLS_InsertBSSCoexistenceIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
#endif /* DOT11N_DRAFT3 */
#endif /* DOT11_N_SUPPORT */
VOID
TDLS_InsertExtCapIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
VOID
TDLS_InsertFTIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN UINT8 Length,
IN FT_MIC_CTR_FIELD MICCtr,
IN PUINT8 pMic,
IN PUINT8 pANonce,
IN PUINT8 pSNonce);
VOID
TDLS_InsertTimeoutIntervalIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN FT_TIMEOUT_INTERVAL_TYPE Type,
IN UINT32 TimeOutValue);
VOID
TDLS_InsertTargetChannel(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN UINT8 TargetCh);
VOID
TDLS_InsertRegulatoryClass(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN UINT8 TargetCh,
IN UINT8 ChWidth);
VOID
TDLS_InsertSecondaryChOffsetIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN UCHAR ChOffset);
VOID
TDLS_SupportedRegulatoryClasses(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen);
VOID
TDLS_InsertChannelSwitchTimingIE(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN USHORT SwitchTime,
IN USHORT SwitchTimeOut);
UCHAR
TDLS_GetRegulatoryClass(
IN PRTMP_ADAPTER pAd,
IN UCHAR ChannelWidth,
IN UCHAR TargetChannel);
VOID
TDLS_InsertPuBufferStatus(
IN PRTMP_ADAPTER pAd,
OUT PUCHAR pFrameBuf,
OUT PULONG pFrameLen,
IN UCHAR *pPeerMac);
VOID
TDLS_PeerSetupReqAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
VOID
TDLS_PeerSetupRspAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
VOID
TDLS_PeerSetupConfAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
VOID
TDLS_MlmeTearDownAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
VOID
TDLS_PeerTearDownAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
#ifdef WFD_SUPPORT
VOID TDLS_MlmeTunneledReqAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
VOID TDLS_PeerTunneledReqRspAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
#endif /* WFD_SUPPORT */
VOID
TDLS_MlmeDiscoveryReqAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
VOID
TDLS_PeerDiscoveryReqAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
BOOLEAN
TDLS_MsgTypeSubst(
IN UCHAR TDLSActionType,
OUT INT *MsgType);
BOOLEAN
TDLS_CheckTDLSframe(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pData,
IN ULONG DataByteCount);
VOID
TDLS_LinkTearDown(
IN PRTMP_ADAPTER pAd,
IN BOOLEAN bDirect);
VOID
TDLS_TearDownPeerLink(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pPeerAddr,
IN BOOLEAN bDirect);
ULONG
PeerTdlsBasicSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen,
IN BOOLEAN bInitiator,
OUT UCHAR *pToken,
OUT UCHAR *pSA);
BOOLEAN
PeerTdlsSetupReqSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen,
#ifdef WFD_SUPPORT
OUT ULONG *pWfdSubelementLen,
OUT PUCHAR pWfdSubelement,
#endif /* WFD_SUPPORT */
OUT UCHAR *pToken,
OUT UCHAR *pSA,
OUT USHORT *pCapabilityInfo,
OUT UCHAR *pSupRateLen,
OUT UCHAR SupRate[],
OUT UCHAR *pExtRateLen,
OUT UCHAR ExtRate[],
OUT BOOLEAN *pbWmmCapable,
OUT UCHAR *pQosCapability,
OUT UCHAR *pHtCapLen,
OUT HT_CAPABILITY_IE *pHtCap,
OUT UCHAR *pExtCapLen,
OUT EXT_CAP_INFO_ELEMENT *pExtCap,
OUT UCHAR *pRsnLen,
OUT UCHAR RsnIe[],
OUT UCHAR *pFTLen,
OUT UCHAR FTIe[],
OUT UCHAR *pTILen,
OUT UCHAR TIIe[],
OUT UCHAR *pLinkIdentLen,
OUT TDLS_LINK_IDENT_ELEMENT *pLinkIdent);
BOOLEAN
PeerTdlsSetupRspSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen,
#ifdef WFD_SUPPORT
OUT ULONG *pWfdSubelementLen,
OUT PUCHAR pWfdSubelement,
#endif /* WFD_SUPPORT */
OUT UCHAR *pToken,
OUT UCHAR *pSA,
OUT USHORT *pCapabilityInfo,
OUT UCHAR *pSupRateLen,
OUT UCHAR SupRate[],
OUT UCHAR *pExtRateLen,
OUT UCHAR ExtRate[],
OUT BOOLEAN *pbWmmCapable,
OUT UCHAR *pQosCapability,
OUT UCHAR *pHtCapLen,
OUT HT_CAPABILITY_IE *pHtCap,
OUT UCHAR *pExtCapLen,
OUT EXT_CAP_INFO_ELEMENT *pExtCap,
OUT USHORT *pStatusCode,
OUT UCHAR *pRsnLen,
OUT UCHAR RsnIe[],
OUT UCHAR *pFTLen,
OUT UCHAR FTIe[],
OUT UCHAR *pTILen,
OUT UCHAR TIIe[],
OUT UCHAR *pLinkIdentLen,
OUT TDLS_LINK_IDENT_ELEMENT *pLinkIdent);
BOOLEAN
PeerTdlsSetupConfSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen,
OUT UCHAR *pToken,
OUT UCHAR *pSA,
OUT USHORT *pCapabilityInfo,
OUT EDCA_PARM *pEdcaParm,
OUT USHORT *pStatusCode,
OUT UCHAR *pRsnLen,
OUT UCHAR RsnIe[],
OUT UCHAR *pFTLen,
OUT UCHAR FTIe[],
OUT UCHAR *pTILen,
OUT UCHAR TIIe[],
OUT UCHAR *pLinkIdentLen,
OUT TDLS_LINK_IDENT_ELEMENT *pLinkIdent,
OUT UCHAR *pAddHtInfoLen,
OUT ADD_HT_INFO_IE *pAddHtInfo);
BOOLEAN
PeerTdlsTearDownSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen,
OUT UCHAR *pSA,
OUT BOOLEAN *pIsInitator,
OUT USHORT *pReasonCode,
OUT UCHAR *pFTLen,
OUT UCHAR FTIe[],
OUT UCHAR *pLinkIdentLen,
OUT TDLS_LINK_IDENT_ELEMENT *pLinkIdent);
BOOLEAN
PeerTdlsDiscovReqSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen,
OUT UCHAR *pSA,
OUT UCHAR *pToken);
BOOLEAN
PeerTdlsDiscovRspSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen,
OUT UCHAR *pToken,
OUT UCHAR *pSA,
OUT USHORT *pCapabilityInfo,
OUT UCHAR *pSupRateLen,
OUT UCHAR SupRate[],
OUT UCHAR *pExtRateLen,
OUT UCHAR ExtRate[],
OUT UCHAR *pHtCapLen,
OUT HT_CAPABILITY_IE *pHtCap,
OUT UCHAR *pTdlsExtCapLen,
OUT EXT_CAP_INFO_ELEMENT *pTdlsExtCap,
OUT UCHAR *pRsnLen,
OUT UCHAR RsnIe[],
OUT UCHAR *pFTLen,
OUT UCHAR FTIe[],
OUT UCHAR *pTILen,
OUT UCHAR TIIe[],
OUT UCHAR *pLinkIdentLen,
OUT TDLS_LINK_IDENT_ELEMENT *pLinkIdent);
VOID
TDLS_TimeoutAction(
IN PVOID SystemSpecific1,
IN PVOID FunctionContext,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3);
VOID
TDLS_FTDeriveTPK(
IN PUCHAR mac_i,
IN PUCHAR mac_r,
IN PUCHAR a_nonce,
IN PUCHAR s_nonce,
IN PUCHAR bssid,
IN UINT key_len,
OUT PUCHAR tpk,
OUT PUCHAR tpk_name);
USHORT
TDLS_TPKMsg1Process(
IN PRTMP_ADAPTER pAd,
#ifdef WFD_SUPPORT
IN ULONG WfdSubelementLen,
#endif /* WFD_SUPPORT */
IN PRT_802_11_TDLS pTDLS,
IN PUCHAR pRsnIe,
IN UCHAR RsnLen,
IN PUCHAR pFTIe,
IN UCHAR FTLen,
IN PUCHAR pTIIe,
IN UCHAR TILen);
USHORT
TDLS_TPKMsg2Process(
IN PRTMP_ADAPTER pAd,
IN PRT_802_11_TDLS pTDLS,
IN PUCHAR pRsnIe,
IN UCHAR RsnLen,
IN PUCHAR pFTIe,
IN UCHAR FTLen,
IN PUCHAR pTIIe,
IN UCHAR TILen,
OUT PUCHAR pTPK,
OUT PUCHAR pTPKName);
USHORT
TDLS_TPKMsg3Process(
IN PRTMP_ADAPTER pAd,
IN PRT_802_11_TDLS pTDLS,
IN PUCHAR pRsnIe,
IN UCHAR RsnLen,
IN PUCHAR pFTIe,
IN UCHAR FTLen,
IN PUCHAR pTIIe,
IN UCHAR TILen);
NDIS_STATUS
TDLS_TearDownAction(
IN PRTMP_ADAPTER pAd,
IN PRT_802_11_TDLS pTDLS,
IN UINT16 ReasonCode,
IN BOOLEAN bDirect);
BOOLEAN
MlmeTdlsReqSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen,
OUT PRT_802_11_TDLS *pTDLS,
OUT PUINT16 pReason,
OUT BOOLEAN *pIsViaAP);
VOID
TDLS_SendNullFrame(
IN PRTMP_ADAPTER pAd,
IN UCHAR TxRate,
IN BOOLEAN bQosNull);
VOID
TDLS_LinkMaintenance(
IN PRTMP_ADAPTER pAd);
INT
Set_TdlsEntryInfo_Display_Proc(
IN PRTMP_ADAPTER pAd,
IN PUCHAR arg);
VOID
TDLS_MlmeSetupReqAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
VOID
TDLS_LinkTimeoutAction(
IN PVOID SystemSpecific1,
IN PVOID FunctionContext,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3);
VOID
TDLS_InitChannelRelatedValue(
IN PRTMP_ADAPTER pAd,
IN HT_CAPABILITY_IE *pHtCapability);
#ifdef TDLS_AUTOLINK_SUPPORT
UCHAR
TDLS_ValidIdLookup(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pAddr);
VOID
TDLS_AutoSetupByRcvFrame(
IN PRTMP_ADAPTER pAd,
IN PHEADER_802_11 pHeader);
#endif // TDLS_AUTOLINK_SUPPORT //
#ifdef WFD_SUPPORT
BOOLEAN TDLS_PeerTunneledProbeReqRspSanity(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen,
OUT PUCHAR pAddr2,
OUT CHAR Ssid[],
OUT UCHAR *pSsidLen,
OUT ULONG *Peerip,
OUT UCHAR *pChannel,
OUT ULONG *P2PSubelementLen,
OUT PUCHAR pP2pSubelement,
OUT ULONG *pWfdSubelementLen,
OUT PUCHAR pWfdSubelement);
#endif /* WFD_SUPPORT */
#endif /* __TDLS_H */
#endif /* DOT11Z_TDLS_SUPPORT */