| /****************************************************************************** |
| * |
| * This file is provided under a dual license. When you use or |
| * distribute this software, you may choose to be licensed under |
| * version 2 of the GNU General Public License ("GPLv2 License") |
| * or BSD License. |
| * |
| * GPLv2 License |
| * |
| * Copyright(C) 2016 MediaTek Inc. |
| * |
| * 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. |
| * |
| * This program is distributed in the hope that it will be useful, but |
| * WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| * See http://www.gnu.org/licenses/gpl-2.0.html for more details. |
| * |
| * BSD LICENSE |
| * |
| * Copyright(C) 2016 MediaTek Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * * Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * * Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * * Neither the name of the copyright holder nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| * |
| *****************************************************************************/ |
| /* |
| ** Id: //Department/DaVinci/TRUNK/WiFi_P2P_Driver/include/mgmt/p2p_fsm.h#23 |
| */ |
| |
| /*! \file p2p_fsm.h |
| * \brief Declaration of functions and finite state machine for P2P Module. |
| * |
| * Declaration of functions and finite state machine for P2P Module. |
| */ |
| |
| |
| #ifndef _P2P_FSM_H |
| #define _P2P_FSM_H |
| |
| /******************************************************************************* |
| * C O M P I L E R F L A G S |
| ******************************************************************************** |
| */ |
| #define CID52_53_54 0 |
| |
| /******************************************************************************* |
| * E X T E R N A L R E F E R E N C E S |
| ******************************************************************************** |
| */ |
| |
| /******************************************************************************* |
| * C O N S T A N T S |
| ******************************************************************************** |
| */ |
| |
| /******************************************************************************* |
| * D A T A T Y P E S |
| ******************************************************************************** |
| */ |
| typedef enum _ENUM_P2P_STATE_T { |
| P2P_STATE_IDLE = 0, |
| P2P_STATE_SCAN, |
| P2P_STATE_AP_CHANNEL_DETECT, |
| P2P_STATE_REQING_CHANNEL, |
| P2P_STATE_CHNL_ON_HAND, /* Requesting Channel to Send Specific Frame. */ |
| P2P_STATE_GC_JOIN, /* Sending Specific Frame. May extending channel by other event. */ |
| P2P_STATE_NUM |
| } ENUM_P2P_STATE_T, *P_ENUM_P2P_STATE_T; |
| |
| struct _P2P_FSM_INFO_T { |
| /* State related. */ |
| ENUM_P2P_STATE_T ePreviousState; |
| ENUM_P2P_STATE_T eCurrentState; |
| |
| /* Channel related. */ |
| P2P_CHNL_REQ_INFO_T rChnlReqInfo; |
| |
| /* Scan related. */ |
| P2P_SCAN_REQ_INFO_T rScanReqInfo; |
| |
| /* Connection related. */ |
| P2P_CONNECTION_REQ_INFO_T rConnReqInfo; |
| |
| /* Mgmt tx related. */ |
| P2P_MGMT_TX_REQ_INFO_T rMgmtTxInfo; |
| |
| /* Beacon related. */ |
| P2P_BEACON_UPDATE_INFO_T rBcnContentInfo; |
| |
| /* Probe Response related. */ |
| P2P_PROBE_RSP_UPDATE_INFO_T rProbeRspContentInfo; |
| |
| /* Assoc Rsp related. */ |
| P2P_ASSOC_RSP_UPDATE_INFO_T rAssocRspContentInfo; |
| |
| /* GC Join related. */ |
| P2P_JOIN_INFO_T rJoinInfo; |
| |
| /* FSM Timer */ |
| TIMER_T rP2pFsmTimeoutTimer; |
| |
| /* GC Target BSS. */ |
| P_BSS_DESC_T prTargetBss; |
| |
| /* GC Connection Request. */ |
| BOOLEAN fgIsConnectionRequested; |
| |
| BOOLEAN fgIsApMode; |
| |
| /* Channel grant interval. */ |
| UINT_32 u4GrantInterval; |
| |
| /* Packet filter for P2P module. */ |
| UINT_32 u4P2pPacketFilter; |
| |
| /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv Prepare for use vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
| /* Msg event queue. */ |
| LINK_T rMsgEventQueue; |
| }; |
| |
| /*---------------- Messages -------------------*/ |
| |
| /******************************************************************************* |
| * F U N C T I O N D E C L A R A T I O N S |
| ******************************************************************************** |
| */ |
| VOID p2pFsmStateTransition(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN ENUM_P2P_STATE_T eNextState); |
| |
| VOID p2pFsmRunEventAbort(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo); |
| |
| VOID p2pFsmRunEventScanRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventMgmtFrameTx(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventStartAP(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventBeaconUpdate(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventStopAP(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventChannelRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventChannelAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventDissolve(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| WLAN_STATUS |
| p2pFsmRunEventMgmtFrameTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T |
| rTxDoneStatus); |
| |
| VOID p2pFsmRunEventMgmtFrameRegister(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| /*3 --------------- WFA P2P DEFAULT PARAMETERS --------------- */ |
| #define P2P_WILDCARD_SSID "DIRECT-" |
| #define P2P_WILDCARD_SSID_LEN 7 |
| #define P2P_GROUP_ID_LEN 9 |
| #define P2P_DRIVER_VERSION 2 /* Update when needed. */ |
| #define P2P_DEFAULT_DEV_NAME "Wireless Client" |
| #define P2P_DEFAULT_DEV_NAME_LEN 15 |
| #define P2P_DEFAULT_PRIMARY_CATEGORY_ID 10 |
| #define P2P_DEFAULT_PRIMARY_SUB_CATEGORY_ID 5 |
| #define P2P_DEFAULT_CONFIG_METHOD (WPS_ATTRI_CFG_METHOD_PUSH_BUTTON | WPS_ATTRI_CFG_METHOD_KEYPAD | \ |
| WPS_ATTRI_CFG_METHOD_DISPLAY) |
| #define P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT 0 /* NOTE(Kevin): Shall <= 16 */ |
| #define P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT 13 |
| #define P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE 51 /* Contains 6 sub-band. */ |
| #define P2P_GC_MAX_CACHED_SEC_DEV_TYPE_COUNT 8 /* NOTE(Kevin): Shall <= 16 */ |
| #define P2P_CTWINDOW_DEFAULT 25 /* in TU=(1024usec) */ |
| /* P2P 3.1.2.1.3 - Find Phase */ |
| #define P2P_MAX_DISCOVERABLE_INTERVAL 8 /* 3 */ |
| #define P2P_MIN_DISCOVERABLE_INTERVAL 5 /* 1 */ |
| #define P2P_LISTEN_SCAN_UNIT 100 /* MS */ |
| /* FSM Time Related constrain. */ |
| #define P2P_SERACH_STATE_PERIOD_MS 1000 /* Deprecated. */ |
| #define P2P_GO_CHANNEL_STAY_INTERVAL 1000 |
| #define P2P_GO_NEGO_TIMEOUT_MS 500 |
| #define P2P_CONNECTION_TIMEOUT_SEC 120 |
| #define P2P_INVITAION_TIMEOUT_MS 500 /* Timeout Wait Invitation Resonse. */ |
| #define P2P_PROVISION_DISCOVERY_TIMEOUT_MS 500 /* Timeout Wait Provision Discovery Resonse. */ |
| /* 3 */ |
| /*#define P2P_ATTRI_MAX_LEN_NOTICE_OF_ABSENCE 2 + (n* (13)) *//* 12 */ |
| #define P2P_ATTRI_MAX_LEN_NOTICE_OF_ABSENCE (2 + (P2P_MAXIMUM_NOA_COUNT * (13))) /* 12 */ |
| #define P2P_ATTRI_MAX_LEN_P2P_DEV_INFO (17 + (8 * (8)) + 36) /* 13 */ |
| /* #define P2P_ATTRI_MAX_LEN_P2P_GROUP_INFO n* (25 + (m* (8)) + 32) *//* 14 */ |
| #define P2P_ATTRI_MAX_LEN_P2P_GROUP_ID 38 /* 15 */ |
| #define P2P_ATTRI_MAX_LEN_P2P_INTERFACE 253 /* 7 + 6* [0~41] */ /* 16 */ |
| #if CID52_53_54 |
| #define P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL 5 /* 17 */ |
| #else |
| #define P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL 5 /* 17 */ |
| #endif |
| #define P2P_ATTRI_MAX_LEN_INVITATION_FLAGS 1 /* 18 */ |
| /* P2P 4.1.3 - P2P Minor Reason Code definitions */ |
| #define P2P_REASON_SUCCESS 0 |
| #define P2P_REASON_DISASSOCIATED_DUE_CROSS_CONNECTION 1 |
| #define P2P_REASON_DISASSOCIATED_DUE_UNMANAGEABLE 2 |
| #define P2P_REASON_DISASSOCIATED_DUE_NO_P2P_COEXIST_PARAM 3 |
| #define P2P_REASON_DISASSOCIATED_DUE_MANAGEABLE 4 |
| /* P2P 4.1.4 - Device Capability Bitmap definitions */ |
| #define P2P_DEV_CAPABILITY_SERVICE_DISCOVERY BIT(0) |
| #define P2P_DEV_CAPABILITY_CLIENT_DISCOVERABILITY BIT(1) |
| #define P2P_DEV_CAPABILITY_CONCURRENT_OPERATION BIT(2) |
| #define P2P_DEV_CAPABILITY_P2P_INFRA_MANAGED BIT(3) |
| #define P2P_DEV_CAPABILITY_P2P_DEVICE_LIMIT BIT(4) |
| #define P2P_DEV_CAPABILITY_P2P_INVITATION_PROCEDURE BIT(5) |
| /* P2P 4.1.4 - Group Capability Bitmap definitions */ |
| #define P2P_GROUP_CAPABILITY_P2P_GROUP_OWNER BIT(0) |
| #define P2P_GROUP_CAPABILITY_PERSISTENT_P2P_GROUP BIT(1) |
| #define P2P_GROUP_CAPABILITY_P2P_GROUP_LIMIT BIT(2) |
| #define P2P_GROUP_CAPABILITY_INTRA_BSS_DISTRIBUTION BIT(3) |
| #define P2P_GROUP_CAPABILITY_CROSS_CONNECTION BIT(4) |
| #define P2P_GROUP_CAPABILITY_PERSISTENT_RECONNECT BIT(5) |
| #define P2P_GROUP_CAPABILITY_GROUP_FORMATION BIT(6) |
| /* P2P 4.1.6 - GO Intent field definitions */ |
| #define P2P_GO_INTENT_TIE_BREAKER_FIELD BIT(0) |
| #define P2P_GO_INTENT_VALUE_MASK BITS(1, 7) |
| #define P2P_GO_INTENT_VALUE_OFFSET 1 |
| /* P2P 4.1.12 - Manageability Bitmap definitions */ |
| #define P2P_DEVICE_MANAGEMENT BIT(0) |
| /* P2P 4.1.14 - CTWindow and OppPS Parameters definitions */ |
| #define P2P_CTW_OPPPS_PARAM_OPPPS_FIELD BIT(7) |
| #define P2P_CTW_OPPPS_PARAM_CTWINDOW_MASK BITS(0, 6) |
| #define ELEM_MAX_LEN_P2P_FOR_PROBE_REQ \ |
| (P2P_OUI_TYPE_LEN + \ |
| (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_CAPABILITY) + \ |
| (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_DEV_ID) + \ |
| (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_LISTEN_CHANNEL) + \ |
| (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL)) |
| #define ELEM_MAX_LEN_P2P_FOR_ASSOC_REQ \ |
| (P2P_OUI_TYPE_LEN + \ |
| (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_CAPABILITY) + \ |
| (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_EXT_LISTEN_TIMING) + \ |
| (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_DEV_INFO)) |
| /* P2P 4.1.16 - P2P Client Infor Descriptor */ |
| #define P2P_CLIENT_INFO_DESC_HDR_LEN 1 /* Length(1 octets) */ |
| /* P2P 4.1.20 - P2P Invitation Flags Attribute*/ |
| #define P2P_INVITATION_FLAGS_INVITATION_TYPE BIT(0) |
| #define P2P_INVITATION_TYPE_INVITATION 0 |
| #define P2P_INVITATION_TYPE_REINVOKE 1 |
| /* 3 */ |
| /* WPS 11 - Data Element Definitions */ |
| #define WPS_ATTRI_ID_VERSION 0x104A |
| #define WPS_ATTRI_ID_CONFIGURATION_METHODS 0x1008 |
| #define WPS_ATTRI_ID_DEVICE_PASSWORD 0x1012 |
| #define WPS_ATTRI_ID_DEVICE_NAME 0x1011 |
| #define WPS_ATTRI_ID_PRI_DEVICE_TYPE 0x1054 |
| #define WPS_ATTRI_ID_SEC_DEVICE_TYPE 0x1055 |
| #define WPS_ATTRI_MAX_LEN_DEVICE_NAME 32 /* 0x1011 */ |
| #define WPS_ATTRI_CFG_METHOD_USBA BIT(0) |
| #define WPS_ATTRI_CFG_METHOD_ETHERNET BIT(1) |
| #define WPS_ATTRI_CFG_METHOD_LABEL BIT(2) |
| #define WPS_ATTRI_CFG_METHOD_DISPLAY BIT(3) |
| #define WPS_ATTRI_CFG_METHOD_EXT_NFC BIT(4) |
| #define WPS_ATTRI_CFG_METHOD_INT_NFC BIT(5) |
| #define WPS_ATTRI_CFG_METHOD_NFC_IF BIT(6) |
| #define WPS_ATTRI_CFG_METHOD_PUSH_BUTTON BIT(7) |
| #define WPS_ATTRI_CFG_METHOD_KEYPAD BIT(8) |
| #define P2P_FLAGS_PROVISION_COMPLETE 0x00000001 |
| #define P2P_FLAGS_PROVISION_DISCOVERY_COMPLETE 0x00000002 |
| #define P2P_FLAGS_PROVISION_DISCOVERY_WAIT_RESPONSE 0x00000004 |
| #define P2P_FLAGS_PROVISION_DISCOVERY_RESPONSE_WAIT 0x00000008 |
| #define P2P_FLAGS_MASK_PROVISION 0x00000017 |
| #define P2P_FLAGS_MASK_PROVISION_COMPLETE 0x00000015 |
| #define P2P_FLAGS_PROVISION_DISCOVERY_INDICATED 0x00000010 |
| #define P2P_FLAGS_INVITATION_TOBE_GO 0x00000100 |
| #define P2P_FLAGS_INVITATION_TOBE_GC 0x00000200 |
| #define P2P_FLAGS_INVITATION_SUCCESS 0x00000400 |
| #define P2P_FLAGS_INVITATION_WAITING_TARGET 0x00000800 |
| #define P2P_FLAGS_MASK_INVITATION 0x00000F00 |
| #define P2P_FLAGS_FORMATION_ON_GOING 0x00010000 |
| #define P2P_FLAGS_FORMATION_LOCAL_PWID_RDY 0x00020000 |
| #define P2P_FLAGS_FORMATION_TARGET_PWID_RDY 0x00040000 |
| #define P2P_FLAGS_FORMATION_COMPLETE 0x00080000 |
| #define P2P_FLAGS_MASK_FORMATION 0x000F0000 |
| #define P2P_FLAGS_DEVICE_DISCOVER_REQ 0x00100000 |
| #define P2P_FLAGS_DEVICE_DISCOVER_DONE 0x00200000 |
| #define P2P_FLAGS_DEVICE_INVITATION_WAIT 0x00400000 |
| #define P2P_FLAGS_DEVICE_SERVICE_DISCOVER_WAIT 0x00800000 |
| #define P2P_FLAGS_MASK_DEVICE_DISCOVER 0x00F00000 |
| #define P2P_FLAGS_DEVICE_FORMATION_REQUEST 0x01000000 |
| /* MACRO for flag operation */ |
| #define SET_FLAGS(_FlagsVar, _BitsToSet) \ |
| {(_FlagsVar) = ((_FlagsVar) | (_BitsToSet))} |
| |
| #define TEST_FLAGS(_FlagsVar, _BitsToCheck) \ |
| (((_FlagsVar) & (_BitsToCheck)) == (_BitsToCheck)) |
| #define CLEAR_FLAGS(_FlagsVar, _BitsToClear) \ |
| {(_FlagsVar) &= ~(_BitsToClear)} |
| |
| #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_I 0 |
| #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_II 0 |
| #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_III 0 |
| #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_IV 0 |
| #define CFG_DISABLE_DELAY_PROVISION_DISCOVERY 0 |
| #define CFG_CONNECTION_POLICY_2_0 0 |
| /* Device Password ID */ |
| enum wps_dev_password_id { |
| DEV_PW_DEFAULT = 0x0000, |
| DEV_PW_USER_SPECIFIED = 0x0001, |
| DEV_PW_MACHINE_SPECIFIED = 0x0002, |
| DEV_PW_REKEY = 0x0003, |
| DEV_PW_PUSHBUTTON = 0x0004, |
| DEV_PW_REGISTRAR_SPECIFIED = 0x0005 |
| }; |
| |
| /******************************************************************************* |
| * D A T A T Y P E S |
| ******************************************************************************** |
| */ |
| #if defined(WINDOWS_DDK) || defined(WINDOWS_CE) |
| #pragma pack(1) |
| #endif |
| |
| /* 3 */ |
| |
| #if 0 |
| /* P2P 4.1.1 - General P2P Attribute */ |
| typedef struct _P2P_ATTRIBUTE_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 aucBody[1]; /* Body field */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRIBUTE_T, ATTRIBUTE_HDR_T, *P_P2P_ATTRIBUTE_T, *P_ATTRIBUTE_HDR_T; |
| #endif |
| |
| /* P2P 4.1.3 - P2P Minor Reason Code Attribute */ |
| typedef struct _P2P_ATTRI_REASON_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 ucMinorReasonCode; /* Minor Reason Code */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_REASON_T, *P_P2P_ATTRI_REASON_T; |
| |
| /* P2P 4.1.4 - P2P Capability Attribute */ |
| typedef struct _P2P_ATTRI_CAPABILITY_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 ucDeviceCap; /* Device Capability Bitmap */ |
| UINT_8 ucGroupCap; /* Group Capability Bitmap */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CAPABILITY_T, *P_P2P_ATTRI_CAPABILITY_T; |
| |
| /* P2P 4.1.5 - P2P Device ID Attribute */ |
| typedef struct _P2P_ATTRI_DEV_ID_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_DEV_ID_T, *P_P2P_ATTRI_DEV_ID_T; |
| |
| /* P2P 4.1.6 - Group Owner Intent Attribute */ |
| typedef struct _P2P_ATTRI_GO_INTENT_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 ucGOIntent; /* Group Owner Intent */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GO_INTENT_T, *P_P2P_ATTRI_GO_INTENT_T; |
| |
| /* P2P 4.1.7 - Configuration Timeout Attribute */ |
| typedef struct _P2P_ATTRI_CFG_TIMEOUT_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 ucGOCfgTimeout; /* GO Configuration Timeout */ |
| UINT_8 ucClientCfgTimeout; /* Client Configuration Timeout */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CFG_TIMEOUT_T, *P_P2P_ATTRI_CFG_TIMEOUT_T; |
| |
| /* P2P 4.1.8 - Listen Channel Attribute */ |
| typedef struct _P2P_ATTRI_LISTEN_CHANNEL_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 aucCountryString[3]; /* Country String */ |
| UINT_8 ucOperatingClass; /* Operating Class from 802.11 Annex J/P802.11 REVmb 3.0 */ |
| UINT_8 ucChannelNumber; /* Channel Number */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_LISTEN_CHANNEL_T, *P_P2P_ATTRI_LISTEN_CHANNEL_T; |
| |
| /* P2P 4.1.9 - P2P Group BSSID Attribute */ |
| typedef struct _P2P_ATTRI_GROUP_BSSID_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 aucBssid[MAC_ADDR_LEN]; /* P2P Group BSSID */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_BSSID_T, *P_P2P_ATTRI_GROUP_BSSID_T; |
| |
| /* P2P 4.1.11 - Intended P2P Interface Address Attribute */ |
| typedef struct _P2P_ATTRI_INTENDED_IF_ADDR_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 aucIfAddr[MAC_ADDR_LEN]; /* P2P Interface Address */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INTENDED_IF_ADDR_T, *P_P2P_ATTRI_INTENDED_IF_ADDR_T; |
| |
| /* P2P 4.1.12 - P2P Manageability Attribute */ |
| typedef struct _P2P_ATTRI_MANAGEABILITY_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 ucManageability; /* P2P Manageability Bitmap */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_MANAGEABILITY_T, *P_P2P_ATTRI_MANAGEABILITY_T; |
| |
| /* P2P 4.1.13 - Channel List Attribute */ |
| typedef struct _P2P_ATTRI_CHANNEL_LIST_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 aucCountryString[3]; /* Country String */ |
| UINT_8 aucChannelEntry[1]; /* Channel Entry List */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CHANNEL_T, *P_P2P_ATTRI_CHANNEL_T; |
| |
| /* P2P 4.1.14 - Notice of Absence Attribute */ |
| typedef struct _P2P_ATTRI_NOA_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 ucIndex; /* Index */ |
| UINT_8 ucCTWOppPSParam; /* CTWindow and OppPS Parameters */ |
| UINT_8 aucNoADesc[1]; /* NoA Descriptor */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_NOA_T, *P_P2P_ATTRI_NOA_T; |
| |
| typedef struct _NOA_DESCRIPTOR_T { |
| UINT_8 ucCountType; /* Count/Type */ |
| UINT_32 u4Duration; /* Duration */ |
| UINT_32 u4Interval; /* Interval */ |
| UINT_32 u4StartTime; /* Start Time */ |
| } __KAL_ATTRIB_PACKED__ NOA_DESCRIPTOR_T, *P_NOA_DESCRIPTOR_T; |
| |
| typedef struct _P2P_ATTRI_DEV_INFO_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */ |
| UINT_16 u2ConfigMethodsBE; /* Config Method */ |
| DEVICE_TYPE_T rPrimaryDevTypeBE; /* Primary Device Type */ |
| UINT_8 ucNumOfSecondaryDevType; /* Number of Secondary Device Types */ |
| DEVICE_TYPE_T arSecondaryDevTypeListBE[1]; /* Secondary Device Type List */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_DEV_INFO_T, *P_P2P_ATTRI_DEV_INFO_T; |
| |
| /* WPS 7.1 & 11 WPS TLV Data Format - Device Name */ |
| typedef struct _DEVICE_NAME_TLV_T { |
| UINT_16 u2Id; /* WPS Attribute Type */ |
| UINT_16 u2Length; /* Data Length */ |
| UINT_8 aucName[32]; /* Device Name *//* TODO : Fixme */ |
| } __KAL_ATTRIB_PACKED__ DEVICE_NAME_TLV_T, *P_DEVICE_NAME_TLV_T; |
| |
| /* P2P 4.1.16 - P2P Group Info Attribute */ |
| typedef struct _P2P_CLIENT_INFO_DESC_T { |
| UINT_8 ucLength; /* Length */ |
| UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */ |
| UINT_8 aucIfAddr[MAC_ADDR_LEN]; /* P2P Interface Address */ |
| UINT_8 ucDeviceCap; /* Device Capability Bitmap */ |
| UINT_16 u2ConfigMethodsBE; /* Config Method */ |
| DEVICE_TYPE_T rPrimaryDevTypeBE; /* Primary Device Type */ |
| UINT_8 ucNumOfSecondaryDevType; /* Number of Secondary Device Types */ |
| DEVICE_TYPE_T arSecondaryDevTypeListBE[1]; /* Secondary Device Type List */ |
| } __KAL_ATTRIB_PACKED__ P2P_CLIENT_INFO_DESC_T, *P_P2P_CLIENT_INFO_DESC_T; |
| |
| typedef struct _P2P_ATTRI_GROUP_INFO_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| P2P_CLIENT_INFO_DESC_T arClientDesc[1]; /* P2P Client Info Descriptors */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_INFO_T, *P_P2P_ATTRI_GROUP_INFO_T; |
| |
| /* P2P 4.1.17 - P2P Group ID Attribute */ |
| typedef struct _P2P_ATTRI_GROUP_ID_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */ |
| UINT_8 aucSSID[ELEM_MAX_LEN_SSID]; /* SSID */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_ID_T, *P_P2P_ATTRI_GROUP_ID_T; |
| |
| /* P2P 4.1.18 - P2P Interface Attribute */ |
| typedef struct _P2P_ATTRI_INTERFACE_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */ |
| UINT_8 ucIfAddrCount; /* P2P Interface Address Count */ |
| UINT_8 aucIfAddrList[MAC_ADDR_LEN]; /* P2P Interface Address List */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INTERFACE_T, *P_P2P_ATTRI_INTERFACE_T; |
| |
| /* P2P 4.1.19 - Operating Channel Attribute */ |
| typedef struct _P2P_ATTRI_OPERATING_CHANNEL_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 aucCountryString[3]; /* Country String */ |
| UINT_8 ucOperatingClass; /* Operating Class from 802.11 Annex J/P802.11 REVmb 3.0 */ |
| UINT_8 ucChannelNumber; /* Channel Number */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_OPERATING_CHANNEL_T, *P_P2P_ATTRI_OPERATING_CHANNEL_T; |
| |
| /* P2P 4.1.20 - Invitation Flags Attribute */ |
| typedef struct _P2P_ATTRI_INVITATION_FLAG_T { |
| UINT_8 ucId; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 ucInviteFlagsBitmap; /* Invitation Flags Bitmap */ |
| } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INVITATION_FLAG_T, *P_P2P_ATTRI_INVITATION_FLAG_T; |
| |
| /* WSC 1.0 Table 28 */ |
| typedef struct _WSC_ATTRI_VERSION_T { |
| UINT_16 u2Id; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_8 ucVersion; /* Version 1.0 or 1.1 */ |
| } __KAL_ATTRIB_PACKED__ WSC_ATTRI_VERSION_T, *P_WSC_ATTRI_VERSION_T; |
| |
| typedef struct _WSC_ATTRI_DEVICE_PASSWORD_ID_T { |
| UINT_16 u2Id; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_16 u2DevPasswordId; /* Device Password ID */ |
| } __KAL_ATTRIB_PACKED__ WSC_ATTRI_DEVICE_PASSWORD_ID_T, *P_WSC_ATTRI_DEVICE_PASSWORD_ID_T; |
| |
| typedef struct _WSC_ATTRI_CONFIGURATION_METHOD_T { |
| UINT_16 u2Id; /* Attribute ID */ |
| UINT_16 u2Length; /* Length */ |
| UINT_16 u2ConfigMethods; /* Configure Methods */ |
| } __KAL_ATTRIB_PACKED__ WSC_ATTRI_CONFIGURATION_METHOD_T, *P_WSC_ATTRI_CONFIGURATION_METHOD_T; |
| |
| #if defined(WINDOWS_DDK) || defined(WINDOWS_CE) |
| #pragma pack() |
| #endif |
| |
| /* 3 --------------- WFA P2P Attributes Handler prototype --------------- */ |
| typedef UINT_32(*PFN_APPEND_ATTRI_FUNC) (P_ADAPTER_T, BOOLEAN, PUINT_16, PUINT_8, UINT_16); |
| |
| typedef VOID(*PFN_HANDLE_ATTRI_FUNC) (P_SW_RFB_T, P_P2P_ATTRIBUTE_T); |
| |
| typedef VOID(*PFN_VERIFY_ATTRI_FUNC) (P_SW_RFB_T, P_P2P_ATTRIBUTE_T, PUINT_16); |
| |
| typedef UINT_32(*PFN_CALCULATE_VAR_ATTRI_LEN_FUNC) (P_ADAPTER_T, P_STA_RECORD_T); |
| |
| typedef enum _ENUM_CONFIG_METHOD_SEL { |
| ENUM_CONFIG_METHOD_SEL_AUTO, |
| ENUM_CONFIG_METHOD_SEL_USER, |
| ENUM_CONFIG_METHOD_SEL_NUM |
| } ENUM_CONFIG_METHOD_SEL, *P_ENUM_CONFIG_METHOD_SEL; |
| |
| typedef enum _ENUM_P2P_FORMATION_POLICY { |
| ENUM_P2P_FORMATION_POLICY_AUTO = 0, |
| ENUM_P2P_FORMATION_POLICY_PASSIVE, /* Device would wait GO NEGO REQ instead of sending it actively. */ |
| ENUM_P2P_FORMATION_POLICY_NUM |
| } ENUM_P2P_FORMATION_POLICY, P_ENUM_P2P_FORMATION_POLICY; |
| |
| typedef enum _ENUM_P2P_INVITATION_POLICY { |
| ENUM_P2P_INVITATION_POLICY_USER = 0, |
| ENUM_P2P_INVITATION_POLICY_ACCEPT_FIRST, |
| ENUM_P2P_INVITATION_POLICY_DENY_ALL, |
| ENUM_P2P_INVITATION_POLICY_NUM |
| } ENUM_P2P_INVITATION_POLICY, P_ENUM_P2P_INVITATION_POLICY; |
| |
| /* 3 --------------- Data Structure for P2P Operation --------------- */ |
| /* 3 Session for CONNECTION SETTINGS of P2P */ |
| struct _P2P_CONNECTION_SETTINGS_T { |
| UINT_8 ucDevNameLen; |
| UINT_8 aucDevName[WPS_ATTRI_MAX_LEN_DEVICE_NAME]; |
| |
| DEVICE_TYPE_T rPrimaryDevTypeBE; |
| |
| ENUM_P2P_FORMATION_POLICY eFormationPolicy; /* Formation Policy. */ |
| |
| /*------------WSC Related Param---------------*/ |
| UINT_16 u2ConfigMethodsSupport; /* Preferred configure method. |
| * Some device may not have keypad. |
| */ |
| ENUM_CONFIG_METHOD_SEL eConfigMethodSelType; |
| UINT_16 u2TargetConfigMethod; /* Configure method selected by user or auto. */ |
| UINT_16 u2LocalConfigMethod; /* Configure method of target. */ |
| BOOLEAN fgIsPasswordIDRdy; |
| /*------------WSC Related Param---------------*/ |
| |
| UINT_8 ucClientConfigTimeout; |
| UINT_8 ucGoConfigTimeout; |
| |
| UINT_8 ucSecondaryDevTypeCount; |
| #if P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT |
| DEVICE_TYPE_T arSecondaryDevTypeBE[P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT]; |
| #endif |
| |
| #if 0 |
| UINT_8 ucRfChannelListCount; |
| #if P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT |
| /* Channel Numbering |
| * depends on 802.11mb |
| * Annex J. |
| */ |
| UINT_8 aucChannelList[P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT]; |
| |
| #endif |
| #else |
| UINT_8 ucRfChannelListSize; |
| #if P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE |
| UINT_8 aucChannelEntriesField[P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE]; |
| #endif |
| #endif |
| |
| /* Go Intent */ |
| UINT_8 ucTieBreaker; |
| UINT_8 ucGoIntent; |
| |
| /* For Device Capability */ |
| BOOLEAN fgSupportServiceDiscovery; |
| BOOLEAN fgSupportClientDiscoverability; |
| BOOLEAN fgSupportConcurrentOperation; |
| BOOLEAN fgSupportInfraManaged; |
| BOOLEAN fgSupportInvitationProcedure; |
| |
| /* For Group Capability */ |
| BOOLEAN fgSupportPersistentP2PGroup; |
| BOOLEAN fgSupportIntraBSSDistribution; |
| BOOLEAN fgSupportCrossConnection; |
| BOOLEAN fgSupportPersistentReconnect; |
| |
| BOOLEAN fgP2pGroupLimit; |
| |
| BOOLEAN fgSupportOppPS; |
| UINT_16 u2CTWindow; |
| |
| BOOLEAN fgIsScanReqIssued; |
| BOOLEAN fgIsServiceDiscoverIssued; |
| |
| /*============ Target Device Connection Settings ============*/ |
| |
| /* Discover Target Device Info. */ |
| BOOLEAN fgIsDevId; |
| BOOLEAN fgIsDevType; |
| |
| /* Encryption mode of Target Device */ |
| ENUM_PARAM_AUTH_MODE_T eAuthMode; |
| |
| /* SSID |
| * 1. AP Mode, this is the desired SSID user specified. |
| * 2. Client Mode, this is the target SSID to be connected to. |
| */ |
| UINT_8 aucSSID[ELEM_MAX_LEN_SSID]; |
| UINT_8 ucSSIDLen; |
| |
| /* Operating channel requested. */ |
| UINT_8 ucOperatingChnl; |
| ENUM_BAND_T eBand; |
| |
| /* Linten channel requested. */ |
| UINT_8 ucListenChnl; |
| |
| /* For device discover address/type. */ |
| UINT_8 aucTargetDevAddr[MAC_ADDR_LEN]; /* P2P Device Address, for P2P Device Discovery */ |
| /*& P2P Connection. */ |
| |
| #if CFG_ENABLE_WIFI_DIRECT |
| P_P2P_DEVICE_DESC_T prTargetP2pDesc; |
| #endif |
| |
| UINT_8 ucLastStatus; /* P2P FSM would append status attribute according to this */ |
| /*field. */ |
| |
| #if !CFG_DISABLE_DELAY_PROVISION_DISCOVERY |
| UINT_8 ucLastDialogToken; |
| UINT_8 aucIndicateDevAddr[MAC_ADDR_LEN]; |
| #endif |
| |
| #if 0 |
| UINT_8 ucTargetRfChannelListCount; |
| #if P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT |
| /* Channel |
| *Numbering |
| *depends on |
| *802.11mb Annex |
| *J. |
| */ |
| UINT_8 aucTargetChannelList[P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT]; |
| #endif |
| #endif |
| }; |
| |
| typedef enum _ENUM_P2P_IOCTL_T { |
| P2P_IOCTL_IDLE = 0, |
| P2P_IOCTL_DEV_DISCOVER, |
| P2P_IOCTL_INVITATION_REQ, |
| P2P_IOCTL_SERV_DISCOVER, |
| P2P_IOCTL_WAITING, |
| P2P_IOCTL_NUM |
| } ENUM_P2P_IOCTL_T; |
| |
| /*---------------- Service Discovery Related -------------------*/ |
| typedef enum _ENUM_SERVICE_TX_TYPE_T { |
| ENUM_SERVICE_TX_TYPE_BY_DA, |
| ENUM_SERVICE_TX_TYPE_BY_CHNL, |
| ENUM_SERVICE_TX_TYPE_NUM |
| } ENUM_SERVICE_TX_TYPE_T; |
| |
| typedef struct _SERVICE_DISCOVERY_FRAME_DATA_T { |
| QUE_ENTRY_T rQueueEntry; |
| P_MSDU_INFO_T prSDFrame; |
| ENUM_SERVICE_TX_TYPE_T eServiceType; |
| UINT_8 ucSeqNum; |
| union { |
| UINT_8 ucChannelNum; |
| UINT_8 aucPeerAddr[MAC_ADDR_LEN]; |
| } uTypeData; |
| BOOLEAN fgIsTxDoneIndicate; |
| } SERVICE_DISCOVERY_FRAME_DATA_T, *P_SERVICE_DISCOVERY_FRAME_DATA_T; |
| |
| struct _P2P_FSM_INFO_T_DEPRECATED { |
| /* P2P FSM State */ |
| ENUM_P2P_STATE_T eCurrentState; |
| |
| /* Channel */ |
| BOOLEAN fgIsChannelRequested; |
| |
| ENUM_P2P_STATE_T ePreviousState; |
| |
| ENUM_P2P_STATE_T eReturnState; /* Return state after current activity finished or */ |
| /* abort. */ |
| |
| UINT_8 aucTargetIfAddr[PARAM_MAC_ADDR_LEN]; |
| P_BSS_DESC_T prTargetBss; /* BSS of target P2P Device. For Connection/Service */ |
| /* Discovery */ |
| |
| P_STA_RECORD_T prTargetStaRec; |
| |
| BOOLEAN fgIsRsponseProbe; /* Indicate if P2P FSM can response probe */ |
| /* request frame. */ |
| |
| /* Sequence number of requested message. */ |
| UINT_8 ucSeqNumOfReqMsg; /* Used for SAA FSM request message. */ |
| |
| /* Channel Privilege */ |
| UINT_8 ucSeqNumOfChReq; /* Used for Channel Request message. */ |
| |
| UINT_8 ucSeqNumOfScnMsg; /* Used for SCAN FSM request message. */ |
| UINT_8 ucSeqNumOfCancelMsg; |
| |
| UINT_8 ucDialogToken; |
| UINT_8 ucRxDialogToken; |
| |
| /* Timer */ |
| TIMER_T rDeviceDiscoverTimer; /* For device discovery time of each discovery */ |
| /*request from user. */ |
| TIMER_T rOperationListenTimer; /* For Find phase under operational state. */ |
| TIMER_T rFSMTimer; /* A timer used for Action frame timeout usage.*/ |
| |
| TIMER_T rRejoinTimer; /* A timer used for Action frame timeout usage. */ |
| |
| /* Flag to indicate Provisioning */ |
| BOOLEAN fgIsConnectionRequested; |
| |
| /* Current IOCTL. */ |
| ENUM_P2P_IOCTL_T eP2pIOCTL; |
| |
| UINT_8 ucAvailableAuthTypes; /* Used for AUTH_MODE_AUTO_SWITCH */ |
| |
| /*--------SERVICE DISCOVERY--------*/ |
| QUE_T rQueueGASRx; /* Input Request/Response. */ |
| QUE_T rQueueGASTx; /* Output Response. */ |
| P_SERVICE_DISCOVERY_FRAME_DATA_T prSDRequest; |
| UINT_8 ucVersionNum; /* GAS packet sequence number for...Action Frame? */ |
| UINT_8 ucGlobalSeqNum; /* Sequence Number of RX SD packet. */ |
| /*--------Service DISCOVERY--------*/ |
| |
| /*--------DEVICE DISCOVERY---------*/ |
| UINT_8 aucTargetGroupID[PARAM_MAC_ADDR_LEN]; |
| UINT_16 u2TargetGroupSsidLen; |
| UINT_8 aucTargetSsid[32]; |
| UINT_8 aucSearchingP2pDevice[PARAM_MAC_ADDR_LEN]; |
| UINT_8 ucDLToken; |
| /*----------------------------------*/ |
| |
| /* Indicating Peer Status. */ |
| UINT_32 u4Flags; |
| |
| /*Indicating current running mode. */ |
| BOOLEAN fgIsApMode; |
| |
| /*------------INVITATION------------*/ |
| ENUM_P2P_INVITATION_POLICY eInvitationRspPolicy; |
| /*----------------------------------*/ |
| }; |
| |
| struct _P2P_SPECIFIC_BSS_INFO_T { |
| /* For GO(AP) Mode - Compose TIM IE */ |
| UINT_16 u2SmallestAID; |
| UINT_16 u2LargestAID; |
| UINT_8 ucBitmapCtrl; |
| /* UINT_8 aucPartialVirtualBitmap[MAX_LEN_TIM_PARTIAL_BMP]; */ |
| |
| /* For GC/GO OppPS */ |
| BOOLEAN fgEnableOppPS; |
| UINT_16 u2CTWindow; |
| |
| /* For GC/GO NOA */ |
| UINT_8 ucNoAIndex; |
| UINT_8 ucNoATimingCount; /* Number of NoA Timing */ |
| NOA_TIMING_T arNoATiming[P2P_MAXIMUM_NOA_COUNT]; |
| |
| BOOLEAN fgIsNoaAttrExisted; |
| |
| /* For P2P Device */ |
| UINT_8 ucRegClass; /* Regulatory Class for channel. */ |
| UINT_8 ucListenChannel; /* Linten Channel only on channels 1, 6 and 11 */ |
| /*in the 2.4 GHz. */ |
| |
| UINT_8 ucPreferredChannel; /* Operating Channel, should be one of channel */ |
| /*list in p2p connection settings. */ |
| ENUM_CHNL_EXT_T eRfSco; |
| ENUM_BAND_T eRfBand; |
| |
| /* Extended Listen Timing. */ |
| UINT_16 u2AvailabilityPeriod; |
| UINT_16 u2AvailabilityInterval; |
| |
| #if 0 /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) */ |
| UINT_16 u2IELenForBCN; |
| UINT_8 aucBeaconIECache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE + WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE]; |
| |
| /* UINT_16 u2IELenForProbeRsp; */ |
| /* UINT_8 aucProbeRspIECache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE + WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE]; */ |
| |
| UINT_16 u2IELenForAssocRsp; |
| UINT_8 aucAssocRspIECache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE + WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE]; |
| |
| #else |
| UINT_16 u2AttributeLen; |
| UINT_8 aucAttributesCache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE]; |
| |
| UINT_16 u2WscAttributeLen; |
| UINT_8 aucWscAttributesCache[WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE]; |
| #endif |
| UINT_8 aucGroupID[MAC_ADDR_LEN]; |
| UINT_16 u2GroupSsidLen; |
| UINT_8 aucGroupSsid[ELEM_MAX_LEN_SSID]; |
| |
| PARAM_CUSTOM_NOA_PARAM_STRUCT_T rNoaParam; |
| PARAM_CUSTOM_OPPPS_PARAM_STRUCT_T rOppPsParam; |
| |
| #if 0 /* CL2055022 */ |
| UINT_16 u2WpaIeLen; |
| UINT_8 aucWpaIeBuffer[ELEM_HDR_LEN + ELEM_MAX_LEN_WPA]; |
| #endif |
| }; |
| |
| typedef struct _MSG_P2P_DEVICE_DISCOVER_T { |
| MSG_HDR_T rMsgHdr; /* Must be the first member */ |
| UINT_32 u4DevDiscoverTime; /* 0: Infinite, 1~X: in unit of MS. */ |
| BOOLEAN fgIsSpecificType; |
| #if CFG_ENABLE_WIFI_DIRECT |
| P2P_DEVICE_TYPE_T rTargetDeviceType; |
| #endif |
| UINT_8 aucTargetDeviceID[MAC_ADDR_LEN]; |
| } MSG_P2P_DEVICE_DISCOVER_T, *P_MSG_P2P_DEVICE_DISCOVER_T; |
| |
| typedef struct _MSG_P2P_INVITATION_REQUEST_T { |
| MSG_HDR_T rMsgHdr; /* Must be the first member */ |
| UINT_8 aucDeviceID[MAC_ADDR_LEN]; /* Target Device ID to be invited. */ |
| } MSG_P2P_INVITATION_REQUEST_T, *P_MSG_P2P_INVITATION_REQUEST_T; |
| |
| typedef struct _MSG_P2P_FUNCTION_SWITCH_T { |
| MSG_HDR_T rMsgHdr; /* Must be the first member */ |
| BOOLEAN fgIsFuncOn; |
| } MSG_P2P_FUNCTION_SWITCH_T, *P_MSG_P2P_FUNCTION_SWITCH_T; |
| |
| typedef struct _MSG_P2P_SERVICE_DISCOVERY_REQUEST_T { |
| MSG_HDR_T rMsgHdr; /* Must be the first member */ |
| UINT_8 aucDeviceID[MAC_ADDR_LEN]; |
| BOOLEAN fgNeedTxDoneIndicate; |
| UINT_8 ucSeqNum; |
| } MSG_P2P_SERVICE_DISCOVERY_REQUEST_T, *P_MSG_P2P_SERVICE_DISCOVERY_REQUEST_T; |
| |
| /******************************************************************************* |
| * 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 |
| ******************************************************************************** |
| */ |
| |
| /*======P2P State======*/ |
| VOID |
| p2pStateInit_LISTEN(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN P_P2P_SPECIFIC_BSS_INFO_T |
| prSP2pBssInfo, IN UINT_8 ucListenChannel); |
| |
| VOID p2pStateAbort_LISTEN(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsChannelExtenstion); |
| |
| VOID p2pStateAbort_SEARCH_SCAN(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsChannelExtenstion); |
| |
| VOID p2pStateAbort_GO_OPERATION(IN P_ADAPTER_T prAdapter); |
| |
| VOID p2pStateAbort_GC_OPERATION(IN P_ADAPTER_T prAdapter); |
| |
| VOID |
| p2pStateInit_CONFIGURATION(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN P_BSS_INFO_T prP2pBssInfo, IN |
| P_P2P_SPECIFIC_BSS_INFO_T prP2pSpecBssInfo); |
| |
| VOID p2pStateAbort_CONFIGURATION(IN P_ADAPTER_T prAdapter); |
| |
| VOID p2pStateInit_JOIN(IN P_ADAPTER_T prAdapter); |
| |
| VOID p2pStateAbort_JOIN(IN P_ADAPTER_T prAdapter); |
| |
| /*====== P2P Functions ======*/ |
| |
| VOID p2pFuncInitGO(IN P_ADAPTER_T prAdapter); |
| |
| VOID |
| p2pFuncDisconnect(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN BOOLEAN fgSendDeauth, IN UINT_16 |
| u2ReasonCode); |
| |
| VOID p2pFuncRunEventProvisioningComplete(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| WLAN_STATUS p2pFuncSetGroupID(IN P_ADAPTER_T prAdapter, IN PUINT_8 pucGroupID, IN PUINT_8 pucSsid, IN UINT_8 ucSsidLen); |
| |
| WLAN_STATUS |
| p2pFuncSendDeviceDiscoverabilityReqFrame(IN P_ADAPTER_T prAdapter, IN UINT_8 aucDestAddr[], IN UINT_8 ucDialogToken); |
| |
| WLAN_STATUS |
| p2pFuncSendDeviceDiscoverabilityRspFrame(IN P_ADAPTER_T prAdapter, IN UINT_8 aucDestAddr[], IN UINT_8 ucDialogToken); |
| |
| UINT_8 p2pFuncGetVersionNumOfSD(IN P_ADAPTER_T prAdapter); |
| |
| /*====== P2P FSM ======*/ |
| VOID p2pFsmRunEventConnectionRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventDeviceDiscoveryRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventDeviceDiscoveryAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventRxGroupNegotiationReqFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb); |
| |
| WLAN_STATUS |
| p2pFsmRunEventGroupNegotiationRequestTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN |
| ENUM_TX_RESULT_CODE_T rTxDoneStatus); |
| |
| WLAN_STATUS |
| p2pFsmRunEventGroupNegotiationResponseTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN |
| ENUM_TX_RESULT_CODE_T rTxDoneStatus); |
| |
| WLAN_STATUS |
| p2pFsmRunEventGroupNegotiationConfirmTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN |
| ENUM_TX_RESULT_CODE_T rTxDoneStatus); |
| |
| WLAN_STATUS |
| p2pFsmRunEventProvisionDiscoveryRequestTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN |
| ENUM_TX_RESULT_CODE_T rTxDoneStatus); |
| |
| WLAN_STATUS |
| p2pFsmRunEventProvisionDiscoveryResponseTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN |
| ENUM_TX_RESULT_CODE_T rTxDoneStatus); |
| |
| WLAN_STATUS |
| p2pFsmRunEventInvitationRequestTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T |
| rTxDoneStatus); |
| |
| VOID p2pFsmRunEventRxDeauthentication(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prSwRfb); |
| |
| VOID p2pFsmRunEventRxDisassociation(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prSwRfb); |
| |
| VOID p2pFsmRunEventBeaconTimeout(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prP2pBssInfo); |
| |
| WLAN_STATUS |
| p2pFsmRunEventDeauthTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T |
| rTxDoneStatus); |
| |
| #if 1 |
| #endif |
| |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /* //////////////////////////////////////////////////////////////////////// */ |
| /*======Mail Box Event Message=====*/ |
| |
| VOID p2pFsmRunEventConnectionAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventConnectionTrigger(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventP2PFunctionSwitch(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventChGrant(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventJoinComplete(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID p2pFsmRunEventConnectionPause(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); |
| |
| VOID |
| p2pIndicationOfMediaStateToHost(IN P_ADAPTER_T prAdapter, IN ENUM_PARAM_MEDIA_STATE_T eConnectionState, IN UINT_8 |
| aucTargetAddr[]); |
| |
| VOID p2pUpdateBssInfoForJOIN(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prAssocRspSwRfb); |
| |
| /*======Mail Box Event Message=====*/ |
| |
| VOID p2pFsmInit(IN P_ADAPTER_T prAdapter); |
| |
| VOID p2pFsmUninit(IN P_ADAPTER_T prAdapter); |
| |
| VOID p2pFsmSteps(IN P_ADAPTER_T prAdapter, IN ENUM_P2P_STATE_T eNextState); |
| |
| VOID p2pStartGO(IN P_ADAPTER_T prAdapter); |
| |
| VOID p2pAssignSsid(IN PUINT_8 pucSsid, IN PUINT_8 pucSsidLen); |
| |
| VOID p2pFsmRunEventIOReqTimeout(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Param); |
| |
| VOID p2pFsmRunEventSearchPeriodTimeout(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Param); |
| |
| VOID p2pFsmRunEventFsmTimeout(IN P_ADAPTER_T prAdapter, IN ULONG ulParamPtr); |
| |
| VOID p2pFsmRunEventRejoinTimeout(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Parm); |
| |
| /*=============== P2P Function Related ================*/ |
| |
| /*=============== P2P Function Related ================*/ |
| |
| #if CFG_TEST_WIFI_DIRECT_GO |
| VOID p2pTest(IN P_ADAPTER_T prAdapter); |
| #endif /* CFG_TEST_WIFI_DIRECT_GO */ |
| |
| VOID p2pGenerateP2P_IEForBeacon(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo); |
| |
| VOID p2pGenerateP2P_IEForAssocReq(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo); |
| |
| VOID p2pGenerateP2P_IEForAssocRsp(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo); |
| |
| VOID |
| p2pGenerateP2P_IEForProbeReq(IN P_ADAPTER_T prAdapter, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize); |
| |
| UINT_32 p2pCalculateP2P_IELenForBeacon(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec); |
| |
| UINT_32 p2pCalculateP2P_IELenForAssocRsp(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec); |
| |
| UINT_32 p2pCalculateP2P_IELenForProbeReq(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec); |
| |
| VOID p2pGenerateWSC_IEForProbeResp(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo); |
| |
| VOID |
| p2pGenerateWSC_IEForProbeReq(IN P_ADAPTER_T prAdapter, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize); |
| |
| UINT_16 p2pCalculateWSC_IELenForProbeReq(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex); |
| |
| UINT_32 p2pCalculateWSC_IELenForProbeResp(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec); |
| |
| UINT_32 |
| p2pAppendAttriStatus(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN |
| UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriCapability(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, |
| IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriGoIntent(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN |
| UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriCfgTimeout(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, |
| IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriGroupBssid(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, |
| IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriDeviceIDForBeacon(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 |
| pucBuf, IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriDeviceIDForProbeReq(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 |
| pucBuf, IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriDeviceIDForDeviceDiscoveryReq(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, |
| IN PUINT_8 pucBuf, IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriListenChannel(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 |
| pucBuf, IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriIntendP2pIfAddr(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 |
| pucBuf, IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriChannelList(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, |
| IN UINT_16 u2BufSize); |
| |
| UINT_32 p2pCalculateAttriLenChannelList(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec); |
| |
| UINT_32 |
| p2pAppendAttriNoA(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN |
| UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriDeviceInfo(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, |
| IN UINT_16 u2BufSize); |
| |
| UINT_32 p2pCalculateAttriLenDeviceInfo(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec); |
| |
| UINT_32 |
| p2pAppendAttriGroupInfo(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, |
| IN UINT_16 u2BufSize); |
| |
| UINT_32 p2pCalculateAttriLenGroupInfo(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec); |
| |
| UINT_32 |
| p2pAppendAttriP2pGroupID(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, |
| IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriOperatingChannel(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 |
| pucBuf, IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriInvitationFlag(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 |
| pucBuf, IN UINT_16 u2BufSize); |
| |
| VOID |
| p2pGenerateWscIE(IN P_ADAPTER_T prAdapter, IN UINT_8 ucOuiType, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN |
| PUINT_8 pucBuf, IN UINT_16 u2BufSize, IN APPEND_VAR_ATTRI_ENTRY_T arAppendAttriTable[], |
| IN UINT_32 u4AttriTableSize); |
| |
| UINT_32 |
| p2pAppendAttriWSCConfigMethod(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 |
| pucBuf, IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriWSCVersion(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, |
| IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriWSCGONegReqDevPasswordId(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN |
| PUINT_8 pucBuf, IN UINT_16 u2BufSize); |
| |
| UINT_32 |
| p2pAppendAttriWSCGONegRspDevPasswordId(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN |
| PUINT_8 pucBuf, IN UINT_16 u2BufSize); |
| |
| WLAN_STATUS |
| p2pGetWscAttriList(IN P_ADAPTER_T prAdapter, IN UINT_8 ucOuiType, IN PUINT_8 pucIE, IN UINT_16 u2IELength, OUT PPUINT_8 |
| ppucAttriList, OUT PUINT_16 pu2AttriListLen); |
| |
| WLAN_STATUS |
| p2pGetAttriList(IN P_ADAPTER_T prAdapter, IN UINT_8 ucOuiType, IN PUINT_8 pucIE, IN UINT_16 u2IELength, OUT PPUINT_8 |
| ppucAttriList, OUT PUINT_16 pu2AttriListLen); |
| |
| VOID p2pRunEventAAATxFail(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec); |
| |
| WLAN_STATUS p2pRunEventAAASuccess(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec); |
| |
| WLAN_STATUS p2pRunEventAAAComplete(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec); |
| |
| WLAN_STATUS p2pSendProbeResponseFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb); |
| |
| BOOLEAN p2pFsmRunEventRxProbeRequestFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb); |
| |
| VOID p2pFsmRunEventRxProbeResponseFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb, IN P_BSS_DESC_T prBssDesc); |
| |
| WLAN_STATUS p2pRxPublicActionFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb); |
| |
| WLAN_STATUS p2pRxActionFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb); |
| |
| VOID p2pFsmRunEventRxGroupNegotiationRspFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb); |
| |
| VOID p2pFsmRunEventRxGroupNegotiationCfmFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb); |
| |
| #if 0 /* frog */ |
| BOOLEAN scanMatchFilterOfP2P(IN P_SW_RFB_T prSWRfb, IN PP_BSS_DESC_T pprBssDesc); |
| #endif /* frog */ |
| |
| VOID |
| p2pProcessEvent_UpdateNOAParam(IN P_ADAPTER_T prAdapter, UINT_8 ucNetTypeIndex, P_EVENT_UPDATE_NOA_PARAMS_T |
| prEventUpdateNoaParam); |
| |
| VOID p2pFuncCompleteIOCTL(IN P_ADAPTER_T prAdapter, IN WLAN_STATUS rWlanStatus); |
| |
| /******************************************************************************* |
| * F U N C T I O N S |
| ******************************************************************************** |
| */ |
| #ifndef _lint |
| /* Kevin: we don't have to call following function to inspect the data structure. |
| * It will check automatically while at compile time. |
| * We'll need this for porting driver to different RTOS. |
| */ |
| static __KAL_INLINE__ VOID p2pDataTypeCheck(VOID) |
| { |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(IE_P2P_T) == (2 + 4 + 1)); /* all UINT_8 */ |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRIBUTE_T) == (3 + 1)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_STATUS_T) == (3 + 1)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_REASON_T) == (3 + 1)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CAPABILITY_T) == (3 + 2)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_DEV_ID_T) == (3 + 6)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GO_INTENT_T) == (3 + 1)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CFG_TIMEOUT_T) == (3 + 2)); |
| #if CID52_53_54 |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_LISTEN_CHANNEL_T) == (3 + 5)); |
| #else |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_LISTEN_CHANNEL_T) == (3 + 5)); |
| #endif |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_BSSID_T) == (3 + 6)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_EXT_LISTEN_TIMING_T) == (3 + 4)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_INTENDED_IF_ADDR_T) == (3 + 6)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_MANAGEABILITY_T) == (3 + 1)); |
| |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CHANNEL_T) == (3 + 4)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(CHANNEL_ENTRY_FIELD_T) == 3); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_NOA_T) == (3 + 3)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(NOA_DESCRIPTOR_T) == 13); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(DEVICE_TYPE_T) == 8); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_DEV_INFO_T) == (3 + 6 + 2 + 8 + 1 + 8)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(DEVICE_NAME_TLV_T) == (4 + 32)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_CLIENT_INFO_DESC_T) == (1 + 6 + 6 + 1 + 2 + 8 + 1 + 8)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_INFO_T) == (3 + (1 + 6 + 6 + 1 + 2 + 8 + 1 + 8))); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_ID_T) == (3 + 38)); |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_INTERFACE_T) == (3 + 13)); |
| #if CID52_53_54 |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_OPERATING_CHANNEL_T) == (3 + 5)); |
| #else |
| DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_OPERATING_CHANNEL_T) == (3 + 5)); |
| #endif |
| } |
| #endif /* _lint */ |
| |
| #endif /* _P2P_FSM_H */ |