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__
