| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422 |
- /*
- ** Id: include/tdls.h#1
- */
- /*! \file "tdls.h"
- \brief This file contains the internal used in TDLS modules
- for MediaTek Inc. 802.11 Wireless LAN Adapters.
- */
- /*
- ** Log: tdls.h
- *
- * 11 18 2013 vend_samp.lin
- * NULL
- * Initial version.
- *
- **
- */
- #ifndef _TDLS_H
- #define _TDLS_H
- #if CFG_SUPPORT_TDLS
- /*******************************************************************************
- * C O M P I L E R F L A G S
- ********************************************************************************
- */
- #define TDLS_CFG_CMD_TEST
- /*******************************************************************************
- * M A C R O S
- ********************************************************************************
- */
- /* assign station record idx for the packet */
- #define TDLSEX_STA_REC_IDX_GET(__prAdapter__, __MsduInfo__) \
- { \
- STA_RECORD_T *__StaRec__; \
- __MsduInfo__->ucStaRecIndex = STA_REC_INDEX_NOT_FOUND; \
- __StaRec__ = cnmGetStaRecByAddress(__prAdapter__, \
- (UINT_8) NETWORK_TYPE_AIS_INDEX,\
- __MsduInfo__->aucEthDestAddr); \
- if ((__StaRec__ != NULL) && (IS_DLS_STA(__StaRec__))) \
- __MsduInfo__->ucStaRecIndex = __StaRec__->ucIndex; \
- }
- /* fill wiphy flag */
- #define TDLSEX_WIPHY_FLAGS_INIT(__fgFlag__) \
- { \
- __fgFlag__ |= (WIPHY_FLAG_SUPPORTS_TDLS | WIPHY_FLAG_TDLS_EXTERNAL_SETUP);\
- }
- #define LR_TDLS_FME_FIELD_FILL(__Len) \
- { \
- pPkt += __Len; \
- u4PktLen += __Len; \
- }
- /*******************************************************************************
- * E X T E R N A L R E F E R E N C E S
- ********************************************************************************
- */
- extern int wlanHardStartXmit(struct sk_buff *prSkb, struct net_device *prDev);
- /*******************************************************************************
- * C O N S T A N T S
- ********************************************************************************
- */
- /* Status code */
- #define TDLS_STATUS WLAN_STATUS
- #define TDLS_STATUS_SUCCESS WLAN_STATUS_SUCCESS
- #define TDLS_STATUS_FAIL WLAN_STATUS_FAILURE
- #define TDLS_STATUS_INVALID_LENGTH WLAN_STATUS_INVALID_LENGTH
- #define TDLS_STATUS_RESOURCES WLAN_STATUS_RESOURCES
- #define TDLS_FME_MAC_ADDR_LEN 6
- #define TDLS_EX_CAP_PEER_UAPSD BIT(0)
- #define TDLS_EX_CAP_CHAN_SWITCH BIT(1)
- #define TDLS_EX_CAP_TDLS BIT(2)
- #define TDLS_CMD_PEER_UPDATE_EXT_CAP_MAXLEN 5
- #define TDLS_CMD_PEER_UPDATE_SUP_RATE_MAX 50
- #define TDLS_CMD_PEER_UPDATE_SUP_CHAN_MAX 50
- #define MAXNUM_TDLS_PEER 4
- /* command */
- typedef enum _TDLS_CMD_ID {
- TDLS_CMD_TEST_TX_FRAME = 0x00,
- TDLS_CMD_TEST_RCV_FRAME,
- TDLS_CMD_TEST_PEER_ADD,
- TDLS_CMD_TEST_PEER_UPDATE,
- TDLS_CMD_TEST_DATA_FRAME,
- TDLS_CMD_TEST_RCV_NULL
- } TDLS_CMD_ID;
- /* protocol */
- #define TDLS_FRM_PROT_TYPE 0x890d
- /* payload specific type in the LLC/SNAP header */
- #define TDLS_FRM_PAYLOAD_TYPE 2
- #define TDLS_FRM_CATEGORY 12
- typedef enum _TDLS_FRM_ACTION_ID {
- TDLS_FRM_ACTION_SETUP_REQ = 0x00,
- TDLS_FRM_ACTION_SETUP_RSP,
- TDLS_FRM_ACTION_CONFIRM,
- TDLS_FRM_ACTION_TEARDOWN,
- TDLS_FRM_ACTION_PTI,
- TDLS_FRM_ACTION_CHAN_SWITCH_REQ,
- TDLS_FRM_ACTION_CHAN_SWITCH_RSP,
- TDLS_FRM_ACTION_PEER_PSM_REQ,
- TDLS_FRM_ACTION_PEER_PSM_RSP,
- TDLS_FRM_ACTION_PTI_RSP,
- TDLS_FRM_ACTION_DISCOVERY_REQ,
- TDLS_FRM_ACTION_DISCOVERY_RSP = 0x0e,
- TDLS_FRM_ACTION_EVENT_TEAR_DOWN_TO_SUPPLICANT = 0x30
- } TDLS_FRM_ACTION_ID;
- /* 7.3.2.62 Link Identifier element */
- #define ELEM_ID_LINK_IDENTIFIER 101
- typedef struct _IE_LINK_IDENTIFIER_T {
- UINT_8 ucId;
- UINT_8 ucLength;
- UINT_8 aBSSID[6];
- UINT_8 aInitiator[6];
- UINT_8 aResponder[6];
- } __KAL_ATTRIB_PACKED__ IE_LINK_IDENTIFIER_T;
- #define TDLS_LINK_IDENTIFIER_IE(__ie__) ((IE_LINK_IDENTIFIER_T *)(__ie__))
- /*******************************************************************************
- * D A T A T Y P E S
- ********************************************************************************
- */
- typedef struct _STATION_PRARAMETERS {
- const u8 *supported_rates;
- struct net_device *vlan;
- u32 sta_flags_mask, sta_flags_set;
- u32 sta_modify_mask;
- int listen_interval;
- u16 aid;
- u8 supported_rates_len;
- u8 plink_action;
- u8 plink_state;
- const struct ieee80211_ht_cap *ht_capa;
- const struct ieee80211_vht_cap *vht_capa;
- u8 uapsd_queues;
- u8 max_sp;
- /* enum nl80211_mesh_power_mode local_pm; */
- u16 capability;
- const u8 *ext_capab;
- u8 ext_capab_len;
- } STATION_PRARAMETERS, P_STATION_PRARAMETERS;
- /* test command use */
- typedef struct _PARAM_CUSTOM_TDLS_CMD_STRUCT_T {
- UINT_8 ucFmeType; /* TDLS_FRM_ACTION_ID */
- UINT_8 ucToken;
- UINT_8 ucCap;
- /* bit0: TDLS, bit1: Peer U-APSD Buffer, bit2: Channel Switching */
- UINT_8 ucExCap;
- UINT_8 arSupRate[4];
- UINT_8 arSupChan[4];
- UINT_32 u4Timeout;
- UINT_8 arRspAddr[TDLS_FME_MAC_ADDR_LEN];
- UINT_8 arBssid[TDLS_FME_MAC_ADDR_LEN];
- /* Linux Kernel-3.10 */
- struct ieee80211_ht_cap rHtCapa;
- struct ieee80211_vht_cap rVhtCapa;
- /* struct */
- STATION_PRARAMETERS rPeerInfo;
- } PARAM_CUSTOM_TDLS_CMD_STRUCT_T;
- typedef enum _ENUM_TDLS_LINK_OPER {
- TDLS_DISCOVERY_REQ,
- TDLS_SETUP,
- TDLS_TEARDOWN,
- TDLS_ENABLE_LINK,
- TDLS_DISABLE_LINK
- } ENUM_TDLS_LINK_OPER;
- typedef struct _TDLS_CMD_LINK_OPER_T {
- UINT_8 aucPeerMac[6];
- ENUM_TDLS_LINK_OPER oper;
- } TDLS_CMD_LINK_OPER_T;
- typedef struct _TDLS_CMD_LINK_MGT_T {
- UINT_8 aucPeer[6];
- UINT_8 ucActionCode;
- UINT_8 ucDialogToken;
- UINT_16 u2StatusCode;
- UINT_32 u4SecBufLen;
- UINT_8 aucSecBuf[1000];
- } TDLS_CMD_LINK_MGT_T;
- typedef struct _TDLS_CMD_PEER_ADD_T {
- UINT_8 aucPeerMac[6];
- ENUM_STA_TYPE_T eStaType;
- } TDLS_CMD_PEER_ADD_T;
- typedef struct _TDLS_CMD_PEER_UPDATE_HT_CAP_MCS_INFO_T {
- UINT_8 arRxMask[SUP_MCS_RX_BITMASK_OCTET_NUM];
- UINT_16 u2RxHighest;
- UINT_8 ucTxParams;
- UINT_8 Reserved[3];
- } TDLS_CMD_PEER_UPDATE_HT_CAP_MCS_INFO_T;
- typedef struct _TDLS_CMD_PEER_UPDATE_VHT_CAP_MCS_INFO_T {
- UINT_8 arRxMask[SUP_MCS_RX_BITMASK_OCTET_NUM];
- } TDLS_CMD_PEER_UPDATE_VHT_CAP_MCS_INFO_T;
- typedef struct _TDLS_CMD_PEER_UPDATE_HT_CAP_T {
- UINT_16 u2CapInfo;
- UINT_8 ucAmpduParamsInfo;
- /* 16 bytes MCS information */
- TDLS_CMD_PEER_UPDATE_HT_CAP_MCS_INFO_T rMCS;
- UINT_16 u2ExtHtCapInfo;
- UINT_32 u4TxBfCapInfo;
- UINT_8 ucAntennaSelInfo;
- } TDLS_CMD_PEER_UPDATE_HT_CAP_T;
- typedef struct _TDLS_CMD_PEER_UPDATE_VHT_CAP_T {
- UINT_16 u2CapInfo;
- /* 16 bytes MCS information */
- TDLS_CMD_PEER_UPDATE_VHT_CAP_MCS_INFO_T rVMCS;
- } TDLS_CMD_PEER_UPDATE_VHT_CAP_T;
- typedef struct _TDLS_CMD_PEER_UPDATE_T {
- UINT_8 aucPeerMac[6];
- UINT_8 aucSupChan[TDLS_CMD_PEER_UPDATE_SUP_CHAN_MAX];
- UINT_16 u2StatusCode;
- UINT_8 aucSupRate[TDLS_CMD_PEER_UPDATE_SUP_RATE_MAX];
- UINT_16 u2SupRateLen;
- UINT_8 UapsdBitmap;
- UINT_8 UapsdMaxSp; /* MAX_SP */
- UINT_16 u2Capability;
- UINT_8 aucExtCap[TDLS_CMD_PEER_UPDATE_EXT_CAP_MAXLEN];
- UINT_16 u2ExtCapLen;
- TDLS_CMD_PEER_UPDATE_HT_CAP_T rHtCap;
- TDLS_CMD_PEER_UPDATE_VHT_CAP_T rVHtCap;
- BOOLEAN fgIsSupHt;
- ENUM_STA_TYPE_T eStaType;
- } TDLS_CMD_PEER_UPDATE_T;
- /* Command to TDLS core module */
- typedef enum _TDLS_CMD_CORE_ID {
- TDLS_CORE_CMD_TEST_NULL_RCV = 0x00
- } TDLS_CMD_CORE_ID;
- typedef struct _TDLS_CMD_CORE_TEST_NULL_RCV_T {
- UINT_32 u4PM;
- } TDLS_CMD_CORE_TEST_NULL_RCV_T;
- typedef struct _TDLS_CMD_CORE_T {
- UINT_32 u4Command;
- UINT_8 aucPeerMac[6];
- #define TDLS_CMD_CORE_RESERVED_SIZE 50
- union {
- TDLS_CMD_CORE_TEST_NULL_RCV_T rCmdNullRcv;
- UINT_8 Reserved[TDLS_CMD_CORE_RESERVED_SIZE];
- } Content;
- } TDLS_CMD_CORE_T;
- typedef enum _TDLS_EVENT_HOST_ID {
- TDLS_HOST_EVENT_TEAR_DOWN = 0x00,
- TDLS_HOST_EVENT_TX_DONE
- } TDLS_EVENT_HOST_ID;
- typedef enum _TDLS_EVENT_HOST_SUBID_TEAR_DOWN {
- TDLS_HOST_EVENT_TD_PTI_TIMEOUT = 0x00,
- TDLS_HOST_EVENT_TD_AGE_TIMEOUT,
- TDLS_HOST_EVENT_TD_PTI_SEND_FAIL,
- TDLS_HOST_EVENT_TD_PTI_SEND_MAX_FAIL,
- TDLS_HOST_EVENT_TD_WRONG_NETWORK_IDX,
- TDLS_HOST_EVENT_TD_NON_STATE3,
- TDLS_HOST_EVENT_TD_LOST_TEAR_DOWN
- } TDLS_EVENT_HOST_SUBID_TEAR_DOWN;
- typedef enum _TDLS_REASON_CODE {
- TDLS_REASON_CODE_UNREACHABLE = 25,
- TDLS_REASON_CODE_UNSPECIFIED = 26,
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_UNKNOWN = 0x80, /* 128 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_WIFI_OFF = 0x81, /* 129 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_ROAMING = 0x82, /* 130 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_PTI_TIMEOUT = 0x83, /* 131 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_AGE_TIMEOUT = 0x84, /* 132 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_REKEY = 0x85, /* 133 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_PTI_SEND_FAIL = 0x86, /* 134 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_PTI_SEND_MAX_FAIL = 0x87, /* 135 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_WRONG_NETWORK_IDX = 0x88, /* 136 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_NON_STATE3 = 0x89, /* 137 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_TX_QUOTA_EMPTY = 0x8a, /* 138 */
- TDLS_REASON_CODE_MTK_DIS_BY_US_DUE_TO_LOST_TEAR_DOWN = 0x8b /* 139 */
- } TDLS_REASON_CODE;
- /*******************************************************************************
- * P U B L I C D A T A
- ********************************************************************************
- */
- /*******************************************************************************
- * P R I V A T E D A T A
- ********************************************************************************
- */
- /*******************************************************************************
- * M A C R O S
- ********************************************************************************
- */
- /*******************************************************************************
- * F U N C T I O N D E C L A R A T I O N S
- ********************************************************************************
- */
- UINT_32 TdlsFrameGeneralIeAppend(ADAPTER_T *prAdapter, STA_RECORD_T *prStaRec, UINT_8 *pPkt);
- WLAN_STATUS /* TDLS_STATUS */
- TdlsDataFrameSend_TearDown(ADAPTER_T *prAdapter,
- STA_RECORD_T *prStaRec,
- UINT_8 *pPeerMac,
- UINT_8 ucActionCode,
- UINT_8 ucDialogToken, UINT_16 u2StatusCode, UINT_8 *pAppendIe, UINT_32 AppendIeLen);
- WLAN_STATUS /* TDLS_STATUS */
- TdlsDataFrameSend_CONFIRM(ADAPTER_T *prAdapter,
- STA_RECORD_T *prStaRec,
- UINT_8 *pPeerMac,
- UINT_8 ucActionCode,
- UINT_8 ucDialogToken, UINT_16 u2StatusCode, UINT_8 *pAppendIe, UINT_32 AppendIeLen);
- WLAN_STATUS /* TDLS_STATUS */
- TdlsDataFrameSend_SETUP_REQ(ADAPTER_T *prAdapter,
- STA_RECORD_T *prStaRec,
- UINT_8 *pPeerMac,
- UINT_8 ucActionCode,
- UINT_8 ucDialogToken, UINT_16 u2StatusCode, UINT_8 *pAppendIe, UINT_32 AppendIeLen);
- WLAN_STATUS /* TDLS_STATUS */
- TdlsDataFrameSend_DISCOVERY_REQ(ADAPTER_T *prAdapter,
- STA_RECORD_T *prStaRec,
- UINT_8 *pPeerMac,
- UINT_8 ucActionCode,
- UINT_8 ucDialogToken, UINT_16 u2StatusCode, UINT_8 *pAppendIe, UINT_32 AppendIeLen);
- WLAN_STATUS /* TDLS_STATUS */
- TdlsDataFrameSend_SETUP_RSP(ADAPTER_T *prAdapter,
- STA_RECORD_T *prStaRec,
- UINT_8 *pPeerMac,
- UINT_8 ucActionCode,
- UINT_8 ucDialogToken, UINT_16 u2StatusCode, UINT_8 *pAppendIe, UINT_32 AppendIeLen);
- WLAN_STATUS /* TDLS_STATUS */
- TdlsDataFrameSend_DISCOVERY_RSP(ADAPTER_T *prAdapter,
- STA_RECORD_T *prStaRec,
- UINT_8 *pPeerMac,
- UINT_8 ucActionCode,
- UINT_8 ucDialogToken, UINT_16 u2StatusCode, UINT_8 *pAppendIe, UINT_32 AppendIeLen);
- UINT_32 TdlsexLinkOper(P_ADAPTER_T prAdapter, PVOID pvSetBuffer, UINT_32 u4SetBufferLen, PUINT_32 pu4SetInfoLen);
- UINT_32 TdlsexLinkMgt(P_ADAPTER_T prAdapter, PVOID pvSetBuffer, UINT_32 u4SetBufferLen, PUINT_32 pu4SetInfoLen);
- VOID TdlsexEventHandle(P_GLUE_INFO_T prGlueInfo, UINT_8 *prInBuf, UINT_32 u4InBufLen);
- VOID TdlsEventTearDown(GLUE_INFO_T *prGlueInfo, UINT_8 *prInBuf, UINT_32 u4InBufLen);
- VOID TdlsBssExtCapParse(P_STA_RECORD_T prStaRec, P_UINT_8 pucIE);
- WLAN_STATUS
- TdlsSendChSwControlCmd(P_ADAPTER_T prAdapter, PVOID pvSetBuffer, UINT_32 u4SetBufferLen, PUINT_32 pu4SetInfoLen);
- /*******************************************************************************
- * F U N C T I O N S
- ********************************************************************************
- */
- #endif /* CFG_SUPPORT_TDLS */
- #endif /* _TDLS_H */
|