prima: WLAN Driver Release 3.1.7.9
This is the initial release of the Prima WLAN Driver
diff --git a/CORE/SME/inc/p2p_Api.h b/CORE/SME/inc/p2p_Api.h
new file mode 100644
index 0000000..13276de
--- /dev/null
+++ b/CORE/SME/inc/p2p_Api.h
@@ -0,0 +1,527 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/******************************************************************************
+*
+* Name: p2p_Api.h
+*
+* Description: P2P FSM defines.
+*
+* Copyright 2008 (c) Qualcomm, Incorporated. All Rights Reserved.
+* Qualcomm Confidential and Proprietary.
+*
+******************************************************************************/
+
+#ifndef __P2P_API_H__
+#define __P2P_API_H__
+
+#include "vos_types.h"
+#include "halTypes.h"
+#include "palTimer.h"
+#include "vos_lock.h"
+
+typedef struct sP2pPsConfig{
+ tANI_U8 opp_ps;
+ tANI_U32 ctWindow;
+ tANI_U8 count;
+ tANI_U32 duration;
+ tANI_U32 interval;
+ tANI_U32 single_noa_duration;
+ tANI_U8 psSelection;
+ tANI_U8 sessionid;
+}tP2pPsConfig,*tpP2pPsConfig;
+
+typedef eHalStatus (*remainOnChanCallback)( tHalHandle, void* context,
+ eHalStatus status );
+
+typedef struct sRemainOnChn{
+ tANI_U8 chn;
+ tANI_U32 duration;
+ remainOnChanCallback callback;
+ void *pCBContext;
+}tRemainOnChn, tpRemainOnChn;
+
+#ifdef WLAN_FEATURE_P2P_INTERNAL
+
+#define MAX_SOCIAL_CHANNELS 3
+#define P2P_OPERATING_CHANNEL 6
+#define P2P_MAX_GROUP_LIMIT 5
+#define P2P_MAC_ADDRESS_LEN 6
+#define MAX_LISTEN_SEARCH_CYCLE 3
+#define P2P_LISTEN_TIMEOUT_AUTO 500 //0.5 sec
+#define P2P_LISTEN_TIMEOUT_HIGH 200 //0.4 sec
+#define P2P_LISTEN_TIMEOUT 1000 //1 sec
+#define P2P_REMAIN_ON_CHAN_TIMEOUT 300
+#define P2P_REMAIN_ON_CHAN_TIMEOUT_HIGH 1000
+#define P2P_REMAIN_ON_CHAN_TIMEOUT_LOW 100
+#define ACTION_FRAME_RETRY_TIMEOUT 50
+#define P2P_COUNTRY_CODE_LEN 3
+
+#define P2P_CLEAR_POWERSAVE 0
+#define P2P_OPPORTUNISTIC_PS 1
+#define P2P_PERIODIC_NOA 2
+#define P2P_SINGLE_NOA 4
+
+
+/* Wi-Fi Direct Device Discovery Type */
+typedef enum ep2pDiscoverType {
+ /** Driver must perform device discovery only using the scan phase*/
+ WFD_DISCOVER_TYPE_SCAN_ONLY = 1,
+ /** Driver must perform device discovery only using the find phase*/
+ WFD_DISCOVER_TYPE_FIND_ONLY = 2,
+ /** Driver can use either use scan phase or find phase to discovery
+ P2P devices. In our case Driver uses scan phase */
+ WFD_DISCOVER_TYPE_AUTO = 3,
+ /*Scan only social channel*/
+ WFD_DISCOVER_SCAN_ONLY_SOCIAL_CHN,
+ /** If it is set, driver must perform a complete discovery,
+ If it is false, it can do partial discovery.*/
+ WFD_DISCOVER_TYPE_FORCED = 0x80000000
+} ep2pDiscoverType, *ePp2pDiscoverType;
+
+//bit mask for what to discover
+#define QCWLAN_P2P_DISCOVER_DEVICE 0x1
+#define QCWLAN_P2P_DISCOVER_GO 0x2
+#define QCWLAN_P2P_DISCOVER_ANY 0x8
+
+#define P2P_DISCOVER_SCAN_ONLY(t) ( (WFD_DISCOVER_TYPE_SCAN_ONLY == (t)) \
+ || (WFD_DISCOVER_SCAN_ONLY_SOCIAL_CHN == (t)) )
+
+/* Scan Type */
+typedef enum ep2pScanType {
+ P2P_SCAN_TYPE_ACTIVE = 1, /** device should perform active scans for the scan phase of device discovery */
+ P2P_SCAN_TYPE_PASSIVE = 2, /** device should perform passive scanning for the scan phase of device discovery */
+ P2P_SCAN_TYPE_AUTO = 3 /** The selection of the scan type is upto the driver */
+} ep2pScanType, * ePp2pScanType;
+
+/** Listen State Discoverability */
+typedef enum ep2pListenStateDiscoverability {
+ P2P_DEVICE_NOT_DISCOVERABLE, /** Wi-Fi Direct Device Port must not make itself discoverable */
+ P2P_DEVICE_AUTO_AVAILABILITY, /** Wi-Fi Direct Device Port must periodically put itself in the listen state to become discoverable*/
+ P2P_DEVICE_HIGH_AVAILABILITY /** Wi-Fi Direct Device Port must be frequently put itself in the listen state
+ to increase the speed and reliability of remote devices discovering it */
+} ep2pListenStateDiscoverability, * ePp2pListenStateDiscoverability;
+
+typedef enum ep2pOperatingMode {
+ OPERATION_MODE_INVALID,
+ OPERATION_MODE_P2P_DEVICE,
+ OPERATION_MODE_P2P_GROUP_OWNER,
+ OPERATION_MODE_P2P_CLIENT
+}ep2pOperatingMode;
+
+typedef struct _tp2pDiscoverDeviceFilter{
+ tSirMacAddr DeviceID;
+ v_UCHAR_t ucBitmask;
+ tSirMacSSid GroupSSID;
+} tp2pDiscoverDeviceFilter;
+
+typedef struct _tp2pDiscoverRequest {
+ ep2pDiscoverType discoverType;
+ ep2pScanType scanType;
+ tANI_U32 uDiscoverTimeout;
+ tANI_U32 uNumDeviceFilters;
+ tp2pDiscoverDeviceFilter *pDeviceFilters;
+ tANI_BOOLEAN bForceScanLegacyNetworks;
+ tANI_U32 uNumOfLegacySSIDs;
+ tANI_U8 *pLegacySSIDs;
+ tANI_U32 uIELen;
+ tANI_U8 *pIEField;
+} tP2PDiscoverRequest;
+
+typedef enum _eP2PDiscoverStatus {
+ eP2P_DISCOVER_SUCCESS,
+ eP2P_DISCOVER_FAILURE,
+ eP2P_DISCOVER_ABORT,
+ eP2P_DIRECTED_DISCOVER
+} eP2PDiscoverStatus;
+
+typedef eHalStatus (*p2pDiscoverCompleteCallback)(tHalHandle hHal, void *pContext, eP2PDiscoverStatus discoverStatus);
+
+typedef struct sP2PGroupId {
+ tANI_U8 present;
+ tANI_U8 deviceAddress[6];
+ tANI_U8 num_ssid;
+ tANI_U8 ssid[32];
+} tP2PGroupId;
+
+typedef struct sP2PGroupBssid {
+ tANI_U8 present;
+ tANI_U8 P2PGroupBssid[6];
+} tP2PGroupBssid;
+
+typedef struct sP2PChannel {
+ tANI_U8 present;
+ tANI_U8 countryString[P2P_COUNTRY_CODE_LEN];
+ tANI_U8 regulatoryClass;
+ tANI_U8 channel;
+} tP2P_OperatingChannel, tP2P_ListenChannel;
+
+/** Structure contains parameters required for Wi-Fi Direct Device functionality such as device discovery, Group Owner Negotiation */
+typedef enum P2PFrameType {
+ eP2P_INVALID_FRM,
+ eP2P_PROBE_REQ,
+ eP2P_PROBE_RSP,
+ eP2P_GONEGO_REQ,
+ eP2P_GONEGO_RES,
+ eP2P_GONEGO_CNF,
+ eP2P_PROVISION_DISCOVERY_REQUEST,
+ eP2P_PROVISION_DISCOVERY_RESPONSE,
+ eP2P_BEACON,
+ eP2P_GROUP_ID,
+ eP2P_ASSOC_REQ,
+ eP2P_INVITATION_REQ,
+ eP2P_INVITATION_RSP,
+ eP2P_DEVICE_DISCOVERY_REQ,
+ eP2P_DEVICE_DISCOVERY_RSP,
+} eP2PFrameType;
+
+typedef enum P2PRequest {
+ eWFD_DISCOVER_REQUEST,
+ eWFD_DEVICE_ID,
+ eWFD_DEVICE_CAPABILITY,
+ eWFD_GROUP_OWNER_CAPABILITY,
+ eWFD_DEVICE_INFO,
+ eWFD_SECONDARY_DEVICE_TYPE_LIST,
+ eWFD_ADDITIONAL_IE,
+ eWFD_GROUP_ID,
+ eWFD_SEND_GO_NEGOTIATION_REQUEST,
+ eWFD_SEND_GO_NEGOTIATION_RESPONSE,
+ eWFD_SEND_GO_NEGOTIATION_CONFIRMATION,
+ eWFD_SEND_PROVISION_DISCOVERY_REQUEST,
+ eWFD_SEND_PROVISION_DISCOVERY_RESPONSE,
+ eWFD_SEND_INVITATION_REQUEST,
+ eWFD_SEND_INVITATION_RESPONSE,
+ eWFD_OPERATING_CHANNEL,
+ eWFD_LISTEN_CHANNEL
+} eP2PRequest;
+
+typedef struct _p2p_device_capability_config {
+ tANI_BOOLEAN bServiceDiscoveryEnabled;
+ tANI_BOOLEAN bClientDiscoverabilityEnabled;
+ tANI_BOOLEAN bConcurrentOperationSupported;
+ tANI_BOOLEAN bInfrastructureManagementEnabled;
+ tANI_BOOLEAN bDeviceLimitReached;
+ tANI_BOOLEAN bInvitationProcedureEnabled;
+ tANI_U32 WPSVersionsEnabled;
+} tp2p_device_capability_config;
+
+typedef struct _p2p_group_owner_capability_config {
+ tANI_BOOLEAN bPersistentGroupEnabled;
+ tANI_BOOLEAN bIntraBSSDistributionSupported;
+ tANI_BOOLEAN bCrossConnectionSupported;
+ tANI_BOOLEAN bPersistentReconnectSupported;
+ tANI_BOOLEAN bGroupFormationEnabled;
+ tANI_U32 uMaximumGroupLimit;
+} tp2p_group_owner_capability_config;
+
+typedef struct _tP2P_ProvDiscoveryReq {
+ tANI_U8 dialogToken;
+ tANI_U8 PeerDeviceAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U32 uSendTimeout;
+ tANI_U8 GroupCapability;
+ tP2PGroupId GroupId;
+ tANI_BOOLEAN bUseGroupID;
+ tANI_U32 uIELength;
+ tANI_U8 *IEdata;
+} tP2P_ProvDiscoveryReq;
+
+typedef struct _tP2P_ProvDiscoveryRes {
+ tANI_U8 dialogToken;
+ tANI_U8 ReceiverDeviceAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U32 uSendTimeout;
+ tANI_U32 uIELength;
+ tANI_U8 *IEdata;
+} tP2P_ProvDiscoveryRes;
+
+typedef struct p2p_go_request {
+ tANI_U8 dialogToken;
+ tANI_U8 peerDeviceAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U32 uSendTimeout;
+ tANI_U8 GoIntent;
+ tANI_U32 GoTimeout;
+ tANI_U32 ClientTimeout;
+ tANI_U8 IntendedInterfaceAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U8 GroupCapability;
+ tANI_U32 uIELength;
+ tANI_U8 *IEdata;
+} tP2P_go_request;
+
+typedef struct p2p_go_confirm {
+ tANI_U8 peerDeviceAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U8 dialog_token;
+ tANI_U32 uSendTimeout;
+ tANI_U8 status;
+ tANI_U8 GroupCapability;
+ tP2PGroupId GroupId;
+ tANI_BOOLEAN bUsedGroupId;
+ tANI_U32 uIELength;
+ tANI_U8 *IEdata;
+} tP2P_go_confirm;
+
+typedef struct p2p_go_response {
+ tANI_U8 peerDeviceAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U8 dialog_token;
+ tANI_U32 uSendTimeout;
+ tANI_U8 status;
+ tANI_U8 GoIntent;
+ tANI_U32 GoTimeout;
+ tANI_U32 ClientTimeout;
+ tANI_U8 IntendedInterfaceAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U8 GroupCapability;
+ tP2PGroupId GroupId;
+ tANI_BOOLEAN bUsedGroupId;
+ tANI_U32 uIELength;
+ tANI_U8 *IEdata;
+} tP2P_go_response;
+
+//Invitation Req parameters
+typedef struct p2p_invitation_request {
+ tANI_U8 DialogToken;
+ tANI_U8 PeerDeviceAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U32 uSendTimeout;
+ tANI_U32 GoTimeout;
+ tANI_U32 ClientTimeout;
+ tANI_U8 InvitationFlags;
+ tP2PGroupBssid GroupBSSID;
+ tP2P_OperatingChannel OperatingChannel;
+ tP2PGroupId GroupID;
+ tANI_U32 uIELength;
+ tANI_U8 *IEdata;
+} tP2P_invitation_request;
+
+
+//Invitation Response parameters
+typedef struct p2p_invitation_response {
+ tANI_U8 ReceiverDeviceAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U8 DialogToken;
+ void* RequestContext;
+ tANI_U32 uSendTimeout;
+ tANI_U8 status;
+ tANI_U32 GoTimeout;
+ tANI_U32 ClientTimeout;
+ tP2PGroupBssid GroupBSSID;
+ tP2P_OperatingChannel OperatingChannel;
+ tANI_U32 uIELength;
+ tANI_U8 *IEdata;
+} tP2P_invitation_response;
+
+typedef enum eOUISubType {
+ eOUI_P2P_GONEGO_REQ,
+ eOUI_P2P_GONEGO_RES,
+ eOUI_P2P_GONEGO_CNF,
+ eOUI_P2P_INVITATION_REQ,
+ eOUI_P2P_INVITATION_RES,
+ eOUI_P2P_DEVICE_DISCOVERABILITY_REQ,
+ eOUI_P2P_DEVICE_DISCOVERABILITY_RES,
+ eOUI_P2P_PROVISION_DISCOVERY_REQ,
+ eOUI_P2P_PROVISION_DISCOVERY_RES,
+ eOUI_P2P_INVALID
+}eOUISubType;
+
+typedef enum _eP2PPort {
+ eP2PPortDevice,
+ eP2PPortGroupOwner,
+ eP2PPortClient
+} eP2PPort;
+
+typedef enum eListenDiscoverableState {
+ eStateDisabled,
+ eStateEnabled,
+
+}eListenDiscoverableState;
+
+typedef enum P2PRemainOnChnReason
+{
+ eP2PRemainOnChnReasonUnknown,
+ eP2PRemainOnChnReasonDiscovery, //Part of the discovery (search and listen)
+ eP2PRemainOnChnReasonSendFrame, //Found peer and before sending request frame
+ eP2PRemainOnChnReasonListen, //In listen-only mode
+}eP2PRemainOnChnReason;
+
+typedef struct sGroupFormationReq {
+ tCsrBssid deviceAddress;
+ tANI_U8 targetListenChannel;
+ tANI_U8 persistent_group;
+ tANI_U8 group_limit; /* may be internal */
+ tANI_U8 GO_config_timeout;
+ tANI_U8 CL_config_timeout;
+ tANI_U8 GO_intent;
+ tANI_U16 devicePasswdId;
+ tSirMacAddr groupBssid;
+ tSirMacSSid groupSsid;
+}tGroupFormationReq;
+
+typedef struct tP2PConfigParam
+{
+ v_U32_t P2POperatingChannel;
+ v_U32_t P2PListenChannel;
+ v_U32_t P2PPSSelection;
+ v_U32_t P2POpPSCTWindow;
+ v_U32_t P2PNoADuration;
+ v_U32_t P2PNoACount;
+ v_U32_t P2PNoAInterval;
+}tP2PConfigParam;
+
+#endif
+
+typedef struct sp2pContext
+{
+ v_CONTEXT_t vosContext;
+ tHalHandle hHal;
+ tANI_U8 sessionId; //Session id corresponding to P2P. On windows it is same as HDD sessionid not sme sessionid.
+ tANI_U8 SMEsessionId;
+ tANI_U8 probeReqForwarding;
+ tANI_U8 *probeRspIe;
+ tANI_U32 probeRspIeLength;
+#ifdef WLAN_FEATURE_P2P_INTERNAL
+ tANI_U8 numClients;
+ tANI_U32 maxGroupLimit;
+ ep2pOperatingMode operatingmode;
+ tANI_U8 state;
+ tANI_U8 socialChannel[MAX_SOCIAL_CHANNELS];
+ tANI_U8 currentSearchIndex;
+ tANI_U8 listenIndex;
+ tANI_U8 dialogToken;
+ tANI_U8 receivedDialogToken;
+ eOUISubType actionFrameOUI;
+ eP2PFrameType actionFrameType;
+ tANI_BOOLEAN actionFrameTimeout;
+ tANI_U8 *pSentActionFrame;
+ tANI_U32 ActionFrameLen;
+ tANI_U32 ActionFrameSendTimeout;
+ eListenDiscoverableState listenDiscoverableState;
+ tPalTimerHandle listenTimerHandler;
+ tPalTimerHandle WPSRegistrarCheckTimerHandler;
+ tANI_U32 WPSRegistrarSet;
+ tANI_U8 bWaitForWPSReady;
+ tANI_U8 bInGroupFormation;
+ tPalTimerHandle discoverTimer;
+ tPalTimerHandle retryActionFrameTimer;
+ tPalTimerHandle actionFrameTimer;
+ tPalTimerHandle nextActionFrameTimer;
+ tANI_U8 peerMacAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U8 selfMacAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U8 ReceiverDeviceAddress[P2P_MAC_ADDRESS_LEN];
+ tANI_U8 listen_search_cycle;
+ ep2pDiscoverType discoverType;
+ ep2pScanType scanType;
+ tANI_U32 uDiscoverTimeout;
+ tp2pDiscoverDeviceFilter *directedDiscoveryFilter;
+ tANI_U32 uNumDeviceFilters;
+ //Number of deviceFilter directedDiscoveryFilter holds
+ tANI_U32 uNumDeviceFilterAllocated;
+ tGroupFormationReq formationReq;
+ tANI_U8 GroupFormationPending;
+ tANI_BOOLEAN PeerFound;
+ tANI_BOOLEAN directedDiscovery;
+ tANI_U32 listenDuration;
+ tANI_U32 expire_time;
+ p2pDiscoverCompleteCallback p2pDiscoverCBFunc;
+ void *pContext;
+ tANI_BOOLEAN bForceScanLegacyNetworks;
+ tANI_U8 *DiscoverReqIeField;
+ tANI_U32 DiscoverReqIeLength;
+ tANI_U8 *GoNegoReqIeField;
+ tANI_U32 GoNegoReqIeLength;
+ tANI_U8 *GoNegoResIeField;
+ tANI_U32 GoNegoResIeLength;
+ tANI_U8 *GoNegoCnfIeField;
+ tANI_U32 GoNegoCnfIeLength;
+ tANI_U8 *ProvDiscReqIeField;
+ tANI_U32 ProvDiscReqIeLength;
+ tANI_U8 *ProvDiscResIeField;
+ tANI_U32 ProvDiscResIeLength;
+ tANI_U8 *InvitationReqIeField;
+ tANI_U32 InvitationReqIeLength;
+ tANI_U8 *InvitationResIeField;
+ tANI_U32 InvitationResIeLength;
+ tANI_U32 DiscoverableCfg;
+ vos_spin_lock_t lState;
+ tANI_U8 *pNextActionFrm;
+ tANI_U32 nNextFrmLen;
+ tANI_U32 nNextFrameTimeOut;
+ eP2PFrameType NextActionFrameType;
+ tANI_U8 ssid[32];
+ v_U32_t P2PListenChannel;
+ v_U32_t P2POperatingChannel;
+ tP2pPsConfig pNoA;
+ tANI_U8 OriginalGroupCapability;
+#endif
+} tp2pContext, *tPp2pContext;
+
+
+eHalStatus sme_RemainOnChannel( tHalHandle hHal, tANI_U8 sessionId,
+ tANI_U8 channel, tANI_U32 duration,
+ remainOnChanCallback callback,
+ void *pContext );
+eHalStatus sme_ReportProbeReq( tHalHandle hHal, tANI_U8 flag );
+eHalStatus sme_updateP2pIe( tHalHandle hHal, void *p2pIe,
+ tANI_U32 p2pIeLength );
+eHalStatus sme_sendAction( tHalHandle hHal, tANI_U8 sessionId,
+ const tANI_U8 *pBuf, tANI_U32 len );
+eHalStatus sme_CancelRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId );
+eHalStatus sme_p2pOpen( tHalHandle hHal );
+eHalStatus p2pStop( tHalHandle hHal );
+eHalStatus sme_p2pClose( tHalHandle hHal );
+eHalStatus sme_p2pSetPs( tHalHandle hHal, tP2pPsConfig * data );
+#ifdef WLAN_FEATURE_P2P_INTERNAL
+eHalStatus p2pRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId,
+ tANI_U8 channel, tANI_U32 duration,
+ remainOnChanCallback callback, void *pContext,
+ eP2PRemainOnChnReason reason);
+#else
+eHalStatus p2pRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId,
+ tANI_U8 channel, tANI_U32 duration,
+ remainOnChanCallback callback, void *pContext);
+#endif
+eHalStatus p2pSendAction( tHalHandle hHal, tANI_U8 sessionId,
+ const tANI_U8 *pBuf, tANI_U32 len );
+eHalStatus p2pCancelRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId );
+eHalStatus p2pSetPs( tHalHandle hHal, tP2pPsConfig *pNoA );
+#ifdef WLAN_FEATURE_P2P_INTERNAL
+eHalStatus p2pRemainOnChannelCallback(tHalHandle halHandle, void *pContext, eHalStatus scan_status);
+eHalStatus P2P_DiscoverRequest(tHalHandle hHal, tANI_U8 SessionID, tP2PDiscoverRequest *pDiscoverRequest,
+ p2pDiscoverCompleteCallback callback, void *pContext);
+tANI_U8 p2pGetDialogToken(tHalHandle hHal, tANI_U8 SessionID, eP2PFrameType actionFrameType);
+eHalStatus P2P_ListenStateDiscoverable(tHalHandle hHal, tANI_U8 sessionId, ep2pListenStateDiscoverability listenState);
+eHalStatus p2pCreateSendActionFrame(tHalHandle hHal, tANI_U8 SessionID,
+ void *p2pactionframe, eP2PFrameType actionFrameType, tANI_U32 timeout);
+eHalStatus p2pScanRequest(tp2pContext *p2pContext, p2pDiscoverCompleteCallback callback, void *pContext);
+void p2pActionFrameTimerHandler(void *pContext);
+void p2pListenDiscoverTimerHandler(void *pContext);
+void p2pDiscoverTimerHandler(void *pContext);
+void p2pRetryActionFrameTimerHandler(void *pContext);
+eHalStatus p2pGrpFormationRemainOnChanRspCallback(tHalHandle halHandle, void *pContext, tANI_U32 scanId, eCsrScanStatus scan_status);
+eHalStatus p2pChangeDefaultConfigParam(tHalHandle hHal, tP2PConfigParam *pParam);
+eHalStatus p2pGetConfigParam(tHalHandle hHal, tP2PConfigParam *pParam);
+eHalStatus p2pPS(tHalHandle hHal, tANI_U8 sessionId);
+eHalStatus p2pCloseSession(tHalHandle hHal, tANI_U8 SessionID);
+eHalStatus p2pSetSessionId(tHalHandle hHal, tANI_U8 SessionID, tANI_U8 SmeSessionId);
+tANI_BOOLEAN p2pIsOperatingChannEqualListenChann(tHalHandle hHal, tANI_U8 SessionID);
+eHalStatus p2pGetListenChannel(tHalHandle hHal, tANI_U8 SessionID, tANI_U8 *channel);
+eHalStatus p2pSetListenChannel(tHalHandle hHal, tANI_U8 SessionID, tANI_U8 channel);
+eHalStatus p2pStopDiscovery(tHalHandle hHal, tANI_U8 SessionID);
+tANI_U8 getP2PSessionIdFromSMESessionId(tHalHandle hHal, tANI_U8 SessionID);
+void p2pCallDiscoverCallback(tp2pContext *p2pContext, eP2PDiscoverStatus statusCode);
+eHalStatus p2pGetResultFilter(tp2pContext *pP2pContext,
+ tCsrScanResultFilter *pFilter);
+#endif//INTERNAL
+#endif //__P2P_API_H__