summaryrefslogtreecommitdiff
path: root/network/wlan/WDI/COMMON/P2PSvc_Internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'network/wlan/WDI/COMMON/P2PSvc_Internal.h')
-rw-r--r--network/wlan/WDI/COMMON/P2PSvc_Internal.h980
1 files changed, 980 insertions, 0 deletions
diff --git a/network/wlan/WDI/COMMON/P2PSvc_Internal.h b/network/wlan/WDI/COMMON/P2PSvc_Internal.h
new file mode 100644
index 00000000..b8e67198
--- /dev/null
+++ b/network/wlan/WDI/COMMON/P2PSvc_Internal.h
@@ -0,0 +1,980 @@
+//---------------------------------------------------------------------------
+//
+// Copyright (c) 2013 Realtek Semiconductor, Inc. All rights reserved.
+//
+//---------------------------------------------------------------------------
+// Description:
+// P2P Service interface for internal implementation
+//
+
+//
+// The P2PSvc code is arranged as the following (regarding to visibility):
+//
+// --------------------------------
+// Other part of the driver
+// --------------------------------
+// P2PSvc.h
+// --------------------------------
+// P2PSvc.c
+// --------------------------------
+// P2PSvc_Internal.h
+// --------------------------------
+// ActionInfo, Construct, Object, ParamSpec, PD, SD, SearchResult,...
+//
+// P2PSvcType.h is visible to all P2PSvc modules.
+//
+
+
+#ifndef __INC_P2P_SVC_INTERNAL_H
+#define __INC_P2P_SVC_INTERNAL_H
+
+#include "P2PSvcType.h"
+#include "p2p.h"
+#include "P2P_Internal.h"
+
+#if (P2P_SUPPORT != 1)
+// Note:
+// P2P Services depends on P2P function.
+#undef P2PSVC_SUPPORT
+#endif
+
+#define P2PSVC_DATA_SEC
+#define P2PSVC_LOCAL_FUNC_SEC
+#define P2PSVC_PUBLIC_FUNC_SEC
+
+#define P2PSVC_LEAST_PROBE_RSP_TIME_uS 1000000 // 1000 ms
+#define P2PSVC_LEAST_SD_RSP_TIME_uS 300000 // 300 ms
+#define P2PSVC_TIMEOUT_WAIT_SD_RSP_uS 500000 // 1000 ms
+#define P2PSVC_TIMEOUT_PD_SESSION_TIMEOUT_uS 120000000 // 120000 ms
+
+typedef struct _P2PSVC_INFO
+{
+ u4Byte curVer;
+ BOOLEAN bEnabled;
+ RT_SPIN_LOCK lock;
+
+ // A list of P2PSVC_REQ_INFO_ENTRY each
+ // representing an advertised service
+ RT_LIST_ENTRY advSvcList;
+ u4Byte advSvcListCnt;
+
+ // A list of P2PSVC_REQ_INFO_ENTRY each
+ // representing a seek request
+ RT_LIST_ENTRY seekReqList;
+ u4Byte seekReqListCnt;
+
+ // A list of P2PSVC_SEARCH_RESULT_LIST_ENTRY each
+ // representing the search result of a device
+ RT_LIST_ENTRY searchResultList;
+ u4Byte searchResultListCnt;
+
+ // A list of P2PSVC_PD_ENTRY each
+ // representing a provision discovery session
+ RT_LIST_ENTRY pdSessionList;
+ u4Byte pdSessionListCnt;
+
+ // The SSID that will be used for starting
+ // P2P Group
+ u1Byte goSsidBuf[32];
+ u1Byte goSsidLen;
+
+ // Connection capability bitmap, bit0: new, bit1: cli, bit2: GO
+ u1Byte connCap;
+
+ // The adapter this P2PSVC_INFO is attached to
+ PADAPTER pAdapter;
+}P2PSVC_INFO, *PP2PSVC_INFO;
+
+#define P2PSVC_GET_INFO(__pAdapter) ((PP2PSVC_INFO)((GET_P2P_INFO((__pAdapter)))->pP2PSvcInfo))
+#define P2PSVC_ENABLED(__pP2PSvcInfo) (((PP2PSVC_INFO)(__pP2PSvcInfo))->bEnabled)
+
+// P2PSVC request handler prototype
+typedef RT_STATUS (*P2PSvc_ReqHdlr)(
+ IN PADAPTER pAdapter,
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ IN u4Byte outBufLen,
+ OUT pu4Byte pBytesWritten,
+ OUT pu4Byte pBytesRead,
+ OUT pu4Byte pBytesNeeded
+ );
+
+typedef struct _P2PSVC_REQUEST_ID_MAP
+{
+ const u4Byte type; // Request Type
+ const u4Byte id; // Request ID
+ const u4Byte minVer; // The minimum supported version, 0 means don't care.
+ const u4Byte maxVer; // The maxmum supported version, 0 means don't care.
+ const P2PSvc_ReqHdlr reqHdlr; // Handler function for this combination of Request ID, bSet, minVer, and maxVer.
+}P2PSVC_REQUEST_ID_MAP, *PP2PSVC_REQUEST_ID_MAP;
+
+typedef struct _P2PSVC_REQ_INFO_ENTRY
+{
+ RT_LIST_ENTRY List;
+ u4Byte P2PSvcReqId;
+ P2PSVC_OBJ_LIST objList;
+}P2PSVC_REQ_INFO_ENTRY, *PP2PSVC_REQ_INFO_ENTRY;
+
+#define P2PSVC_REQ_INFO_LIST_LEN(__pReqInfo) \
+ (FIELD_OFFSET(P2PSVC_REQ_INFO_ENTRY, objList) + P2PSVC_OBJ_LIST_LEN(&((__pReqInfo)->objList)))
+
+#define P2PSVC_MAX_ACTION_PARAM_ID P2PSVC_MAX_OBJ_LIST_ENTRIES - 1 // minus 1 for sentinel
+typedef struct _P2PSVC_ACTION_SPEC_ENTRY
+{
+ u4Byte actId;
+ u4Byte paramList[P2PSVC_MAX_OBJ_LIST_ENTRIES]; // reserve 1 for sentinel
+}P2PSVC_ACTION_SPEC_ENTRY, *PP2PSVC_ACTION_SPEC_ENTRY;
+
+typedef struct _P2PSVC_PARAM_SPEC_ENTRY
+{
+ u4Byte paramId;
+ u4Byte minLen;
+ u4Byte maxLen;
+}P2PSVC_PARAM_SPEC_ENTRY, *PP2PSVC_PARAM_SPEC_ENTRY;
+
+typedef struct _P2PSVC_SR_LIST_ENTRY
+{
+ RT_LIST_ENTRY List;
+ u8Byte probeRspRxTime;
+ u8Byte sdReqTxTime;
+ u8Byte sdRspRxTime;
+ BOOLEAN bDirty;
+ P2PSVC_OBJ_LIST srObjList;
+}P2PSVC_SR_LIST_ENTRY, *PP2PSVC_SR_LIST_ENTRY;
+
+#define P2PSVC_SR_LIST_LEN(__srEntry) \
+ (FIELD_OFFSET(P2PSVC_SR_LIST_ENTRY, srObjList) + P2PSVC_OBJ_LIST_VAR_LEN(&((__srEntry)->srObjList)))
+
+typedef struct _P2PSVC_GROUP_INFO
+{
+ u1Byte grpDevAddr[6];
+ u1Byte grpIntfAddr[6];
+ u1Byte ssidLen;
+ u1Byte ssidBuf[32];
+ u1Byte opChnl;
+}P2PSVC_GROUP_INFO, *PP2PSVC_GROUP_INFO;
+
+typedef struct _P2PSVC_PD_CONN_TOPOLOGY
+{
+ BOOLEAN bInitor;
+ BOOLEAN bDeferred;
+ BOOLEAN bPersistent;
+ u4Byte connAction;
+ P2PSVC_GROUP_INFO grpInfo;
+}P2PSVC_PD_CONN_TOPOLOGY, *PP2PSVC_PD_CONN_TOPOLOGY;
+
+typedef struct _P2PSVC_PD_ENTRY
+{
+ RT_LIST_ENTRY List;
+
+ BOOLEAN bInitor;
+ BOOLEAN bDeferred;
+ u8Byte createTime;
+
+ //
+ // If bDone, we have status from the last PD rsp,
+ // and if the status is success, we have the topology,
+ // which records how we are going to connect with the
+ // peer dev.
+ //
+ BOOLEAN bDone;
+ P2P_STATUS_CODE status;
+ u1Byte connCap; // the resulting connCap
+ P2PSVC_PD_CONN_TOPOLOGY connTopology;
+
+ u4Byte sessionId;
+ u1Byte peerDevAddr[6];
+ u4Byte advId;
+
+ // If initor, the conn cap sent in the PD req
+ // If rspdor, the conn cap in the recvd PD req
+ u1Byte pdReqConnCap;
+
+ // The connCap from P2PSvcInfo.
+ // Filled when session is created.
+ u1Byte selfConnCap;
+
+ P2PSVC_GROUP_INFO selfGrpInfo;
+
+}P2PSVC_PD_ENTRY, *PP2PSVC_PD_ENTRY;
+
+typedef struct _P2PSVC_INITOR_PD_ENTRY
+{
+ // Common info shared by all PD sessions
+ P2PSVC_PD_ENTRY super;
+
+ // PD req info
+ u2Byte pdReqConfigMethod;
+
+ // PD rsp info
+ u8Byte pdRspRxTime; // time the initor recvs the PD rsp
+ P2P_STATUS_CODE pdRspStatus; // the status in PD rsp
+ u1Byte pdRspConnCap; // conn cap in recvd PD rsp
+
+ // FOPD info, valid if bDeferred is true
+ u8Byte fopdReqRxTime; // time the initor recvs the FOPD req
+ P2P_STATUS_CODE fopdReqStatus; // the status in FOPD req, shall be either accept or reject
+ u1Byte fopdReqConnCap; // conn cap in recvd FOPD req, valid only when FOPD req status is success
+
+ P2P_STATUS_CODE fopdRspStatus; // the status to be sent in FOPD rsp
+ u1Byte fopdRspConnCap; // the conn cap to be sent in FOPD rsp, valid only when FOPD rsp status is success
+
+ P2PSVC_REASON rxBadPDRspReason;
+ P2PSVC_REASON rxBadFOPDReqReason;
+
+ // If initor, this member contains the obj list from the upper layer (P2PSvc_AddPDInitorData)
+ P2PSVC_OBJ_LIST objList;
+}P2PSVC_INITOR_PD_ENTRY, *PP2PSVC_INITOR_PD_ENTRY;
+
+typedef struct _P2PSVC_RSPDOR_PD_ENTRY
+{
+ // Common info shared by all PD sessions
+ P2PSVC_PD_ENTRY super;
+
+ // PD req info
+ u2Byte configMethod; // config method from PD req
+ u8Byte pdReqRxTime; // time the rspdor recvs the PD req
+
+ // PD rsp info
+ P2P_STATUS_CODE pdRspStatus; // the status to be sent in PD rsp
+ u1Byte pdRspConnCap; // the conn cap to be sent in PD rsp, valid only when PD rsp is success
+
+ // FOPD info, valid if bDeferred is true
+ u8Byte fopdRspRxTime; // time the rspdor recvs the FOPD rsp
+
+ P2P_STATUS_CODE fopdReqStatus;
+
+ // the status to be sent in FOPD req
+ u1Byte fopdReqConnCap; // the conn cap to be sent in FOPD req, valid only whe FOPD req status is success
+
+ P2P_STATUS_CODE fopdRspStatus; // the status in recvd FOPD rsp
+ u1Byte fopdRspConnCap; // the conn cap in recvd FOPD rsp, valid only when FOPD rsp status is success
+
+ P2PSVC_REASON rxBadPDReqReason;
+ P2PSVC_REASON rxBadFOPDRspReason;
+
+ // If rspdor, this member contains the info parsed from thd requested svc (P2PSvc_AddPDRspdorData)
+ P2PSVC_OBJ_LIST objList;
+}P2PSVC_RSPDOR_PD_ENTRY, *PP2PSVC_RSPDOR_PD_ENTRY;
+
+typedef struct _P2PSVC_CONN_CAP_MAP_ENTRY
+{
+ u1Byte reqConnCap;
+ u1Byte selfConnCap;
+ u1Byte rspConnCap;
+ pu1Byte pDesc;
+}P2PSVC_CONN_CAP_MAP_ENTRY, *PP2PSVC_CONN_CAP_MAP_ENTRY;
+
+//-----------------------------------------------------------------------------
+// P2PSvc.c
+//-----------------------------------------------------------------------------
+
+
+//-----------------------------------------------------------------------------
+// P2PSvc_Utility.c
+//-----------------------------------------------------------------------------
+
+#define P2PSVC_FUNC_IN(__level) RT_TRACE(COMP_P2P, (__level), ("===> %s\n", __FUNCTION__))
+#define P2PSVC_FUNC_OUT(__level, __rtStatus) RT_TRACE(COMP_P2P, (__level), ("<=== %s(0x%08x)\n", __FUNCTION__, (__rtStatus)))
+#define P2PSVC_CHECK_NULL(__ptr) RT_ASSERT((__ptr), ("%s(): %s is NULL!!!\n", __FUNCTION__, #__ptr));
+
+extern u4Byte gP2PSvcMemAllocCount;
+extern u4Byte gP2PSvcMemFreeCount;
+
+RT_STATUS
+P2PSvc_AllocMem(
+ IN PVOID Adapter,
+ OUT PVOID *ppPtr,
+ IN u4Byte len
+ );
+
+VOID
+P2PSvc_FreeMem(
+ IN PVOID pPtr,
+ IN u4Byte len
+ );
+
+RT_STATUS
+P2PSvc_GetAdvSvcByAdvId(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN u4Byte advId,
+ OUT PP2PSVC_REQ_INFO_ENTRY *ppAdvSvcEntry
+ );
+
+BOOLEAN
+P2PSvc_GetP2PAttr(
+ IN POCTET_STRING posP2PAttrs,
+ IN u1Byte attrId,
+ IN u4Byte minLen,
+ OUT POCTET_STRING posAttr
+ );
+
+RT_STATUS
+P2PSvc_Indicate(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN u4Byte bufLen,
+ IN PVOID pvBuf
+ );
+
+RT_STATUS
+P2PSvc_IndicateFrameSent(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN u4Byte id,
+ IN pu1Byte peerMac,
+ IN u2Byte attrLen,
+ IN pu1Byte pAttrs
+ );
+
+RT_STATUS
+P2PSvc_Notify(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN u4Byte id
+ );
+
+BOOLEAN
+P2PSvc_SeekReqIsBcst(
+ IN PP2PSVC_OBJ_LIST pObjList
+ );
+
+BOOLEAN
+P2PSvc_MatchSubstring(
+ IN pu1Byte targetBuf,
+ IN u4Byte targetBufLen,
+ IN pu1Byte patternBuf,
+ IN u4Byte patternBufLen
+ );
+
+RT_STATUS
+P2PSvc_GetDevNameFromDevInfoAttr(
+ IN POCTET_STRING posP2PAttrs,
+ OUT POCTET_STRING posDevName
+ );
+
+//-----------------------------------------------------------------------------
+// P2PSvc_Object.c
+//-----------------------------------------------------------------------------
+
+u4Byte
+P2PSvc_MakeObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u4Byte id,
+ IN u4Byte bufLEn,
+ IN PVOID pBuf
+ );
+
+u4Byte
+P2PSvc_MakeSvcDescObjList(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ OUT PP2PSVC_OBJ_LIST *ppSvcDescObjList
+ );
+
+u4Byte
+P2PSvc_MakeTimeObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u4Byte paramId,
+ IN u8Byte time
+ );
+
+u4Byte
+P2PSvc_MakeSearchIdObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN PP2PSVC_REQ_INFO_ENTRY pSeekInfoEntry,
+ OUT pu1Byte pSearchId
+ );
+
+u4Byte
+P2PSvc_MakeDevAddrObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN pu1Byte pDevAddr
+ );
+
+u4Byte
+P2PSvc_MakeDevNameObj_FromP2PAttrs(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN POCTET_STRING posP2PAttrs
+ );
+
+u4Byte
+P2PSvc_MakeDevNameObj_FromDevNameOctet(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN OCTET_STRING osDevName
+ );
+
+u4Byte
+P2PSvc_MakeAdvIdObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u4Byte advId
+ );
+
+u4Byte
+P2PSvc_MakeSessionIdObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u4Byte sessionId
+ );
+
+u4Byte
+P2PSvc_MakeSvcNameObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u1Byte svcNameBufLen,
+ IN pu1Byte pSvcNameBuf
+ );
+
+u4Byte
+P2PSvc_MakeSvcInfoObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u2Byte svcInfoBufLen,
+ IN pu1Byte pSvcInfoBuf
+ );
+
+u4Byte
+P2PSvc_MakeAutoAcceptObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN BOOLEAN bAutoAccept
+ );
+
+u4Byte
+P2PSvc_MakeSvcStatusObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u1Byte svcStatus
+ );
+
+u4Byte
+P2PSvc_MakeUserAcceptedObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN BOOLEAN bUserAccepted
+ );
+
+u4Byte
+P2PSvc_MakeSvcCountObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u1Byte svcCount
+ );
+
+u4Byte
+P2PSvc_MakeP2PStatusObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN P2P_STATUS_CODE P2PStatus
+ );
+
+u4Byte
+P2PSvc_MakeSsidObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u1Byte ssidLen,
+ IN pu1Byte ssidBuf
+ );
+
+u4Byte
+P2PSvc_MakeIntfAddrObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN pu1Byte intfAddr
+ );
+
+u4Byte
+P2PSvc_MakeOpChannelObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u1Byte opChannel
+ );
+
+u4Byte
+P2PSvc_MakeConfigMethodObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u2Byte configMethod
+ );
+
+u4Byte
+P2PSvc_MakeP2PAttrsObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u2Byte attrLen,
+ IN pu1Byte pAttrs
+ );
+
+u4Byte
+P2PSvc_MakeDeferredObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN BOOLEAN bDeferred
+ );
+
+u4Byte
+P2PSvc_MakeIsSDDoneObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN BOOLEAN bSDDone
+ );
+
+
+u4Byte
+P2PSvc_MakeIsPersistentObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN BOOLEAN bPersistent
+ );
+
+u4Byte
+P2PSvc_MakeConnActionObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u4Byte connAction
+ );
+
+u4Byte
+P2PSvc_MakeReasonObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN P2PSVC_REASON reason
+ );
+
+u4Byte
+P2PSvc_MakeSessionInfoDataInfoObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN OCTET_STRING osSessionInfoDataInfo
+ );
+
+u4Byte
+P2PSvc_MakeGrpDevAddrObj(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN pu1Byte pGrpDevAddr
+ );
+
+//-----------------------------------------------------------------------------
+// P2PSvc_Construct.c
+//-----------------------------------------------------------------------------
+
+RT_STATUS
+P2PSvc_MakeAdvSvcInfo(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN POCTET_STRING posSvcNameHash,
+ OUT FRAME_BUF *pBuf
+ );
+
+RT_STATUS
+P2PSvc_MakeSvcNameHash(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ OUT FRAME_BUF *pBuf
+ );
+
+RT_STATUS
+P2PSvc_MakeInitorPDReqIE(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ OUT FRAME_BUF *pBuf
+ );
+
+RT_STATUS
+P2PSvc_MakeRspdorFOPDReqIE(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ OUT FRAME_BUF *pBuf
+ );
+
+RT_STATUS
+P2PSvc_MakeInitorFOPDRspIE(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ IN POCTET_STRING posP2PAttrs,
+ OUT FRAME_BUF *pBuf
+ );
+
+RT_STATUS
+P2PSvc_MakeRspdorPDRspIE(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ IN POCTET_STRING posP2PAttrs,
+ OUT FRAME_BUF *pBuf
+ );
+
+RT_STATUS
+P2PSvc_MakeSvcInfoDesc(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_REQ_INFO_ENTRY pAdvInfoEntry,
+ IN u1Byte svcInfoReqLen,
+ IN pu1Byte pSvcInfoReqBuf,
+ OUT FRAME_BUF *pBuf
+ );
+
+//-----------------------------------------------------------------------------
+// P2PSvc_ParamSpec.c
+//-----------------------------------------------------------------------------
+
+PP2PSVC_PARAM_SPEC_ENTRY
+P2PSvc_GetParamSpec(
+ IN u4Byte actId
+ );
+
+RT_STATUS
+P2PSvc_ValidateReqInfo(
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ OUT pu4Byte pBytesNeeded
+ );
+
+RT_STATUS
+P2PSvc_ValidateActionParam(
+ IN u4Byte id,
+ IN PP2PSVC_OBJ_LIST pObjList
+ );
+
+RT_STATUS
+P2PSvc_ValidateParamContent(
+ IN PP2PSVC_OBJ_LIST pObjList
+ );
+
+PRT_OBJECT_HEADER
+P2PSvc_GetParam(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u4Byte paramId,
+ IN u4Byte fromIdx
+ );
+
+RT_STATUS
+P2PSvc_UpdateParam(
+ IN PP2PSVC_OBJ_LIST pObjList,
+ IN u4Byte paramId,
+ IN u4Byte fromIdx,
+ IN u4Byte bufLen,
+ IN PVOID pBuf
+ );
+
+//-----------------------------------------------------------------------------
+// P2PSvc_PD.c
+//-----------------------------------------------------------------------------
+
+VOID
+P2PSvc_DeterminePDSessionGOSsid(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ OUT pu1Byte ssidBuf,
+ OUT pu1Byte pSsidLen
+ );
+
+PP2PSVC_OBJ_LIST
+P2PSvc_Get_PDEntryObjList(
+ IN PP2PSVC_PD_ENTRY pPDEntry
+ );
+
+VOID
+P2PSvc_Free_PDSessionListEntry(
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ IN pu4Byte pListCnt
+ );
+
+VOID
+P2PSvc_Free_PDSessionList(
+ IN PRT_LIST_ENTRY pListHead,
+ IN pu4Byte pListCnt
+ );
+
+
+BOOLEAN
+P2PSvc_PDSessionInProgress(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ OUT PP2PSVC_PD_ENTRY *ppPDEntry
+ );
+
+RT_STATUS
+P2PSvc_AddPDInitorData(
+ IN PADAPTER pAdapter,
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ IN u4Byte outBufLen
+ );
+
+RT_STATUS
+P2PSvc_AddPDRspdorData(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN pu1Byte devAddr,
+ IN u2Byte configMethod,
+ IN POCTET_STRING posP2PAttrs
+ );
+
+RT_STATUS
+P2PSvc_RspdorSetFOPDReq(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ IN BOOLEAN bAccepted
+ );
+
+RT_STATUS
+P2PSvc_InitorOnPDRsp(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN pu1Byte devAddr,
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ IN u2Byte reqConfigMethod,
+ IN u2Byte rspConfigMethod,
+ IN POCTET_STRING posP2PAttrs
+ );
+
+RT_STATUS
+P2PSvc_InitorOnFOPDReq(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN pu1Byte devAddr,
+ IN u2Byte configMethod,
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ IN POCTET_STRING posP2PAttrs
+ );
+
+RT_STATUS
+P2PSvc_RspdorOnFOPDRsp(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN pu1Byte devAddr,
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ IN u2Byte reqConfigMethod,
+ IN u2Byte rspConfigMethod,
+ IN POCTET_STRING posP2PAttrs
+ );
+
+RT_STATUS
+P2PSvc_InitorOnSendPDReqFailure(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ IN u1Byte p2pStatus
+ );
+
+RT_STATUS
+P2PSvc_RspdorOnSendFOPDReqFailure(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_PD_ENTRY pPDEntry,
+ IN u1Byte p2pStatus
+ );
+
+BOOLEAN
+P2PSvc_IsLegacyPD(
+ IN POCTET_STRING posP2PAttrs
+ );
+
+VOID
+P2PSvc_PDSessionSucceeded(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_PD_ENTRY pPDEntry
+ );
+
+VOID
+P2PSvc_PDSessionFailed(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_PD_ENTRY pPDEntry
+ );
+
+VOID
+P2PSvc_PDSessionAgeFunc(
+ IN PP2PSVC_INFO pP2PSvcInfo
+ );
+
+//-----------------------------------------------------------------------------
+// P2PSvc_SD.c
+//-----------------------------------------------------------------------------
+
+RT_STATUS
+P2PSvc_ParseAnqpQueryReq(
+ IN PP2P_SERVICE_REQ_TLV pAnqpQueryReq,
+ OUT pu1Byte pSvcNameLen,
+ OUT pu1Byte *ppSvcNameBuf,
+ OUT pu1Byte pSvcInfoReqLen,
+ OUT pu1Byte *ppSvcInfoReqBuf
+ );
+
+RT_STATUS
+P2PSvc_ParseAnqpQueryRsp(
+ IN PP2P_SERVICE_RSP_TLV pAnqpQueryRsp,
+ IN u1Byte index,
+ OUT pu1Byte pSvcNameLen,
+ OUT pu1Byte *ppSvcNameBuf,
+ OUT pu4Byte pAdvId,
+ OUT pu1Byte pSvcStatus,
+ OUT pu2Byte pSvcInfoLen,
+ OUT pu1Byte *ppSvcInfoBuf
+ );
+
+RT_STATUS
+P2PSvc_SDReq(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN pu1Byte devAddr,
+ IN PP2PSVC_REQ_INFO_ENTRY pSeekInfoEntry,
+ IN PRT_OBJECT_HEADER pSvcInfoReqObj,
+ IN u1Byte searchId
+ );
+
+RT_STATUS
+P2PSvc_SDRsp(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN pu1Byte devAddr,
+ IN u1Byte dlgToken,
+ IN u1Byte transactionId,
+ IN u1Byte nSvcInfoDesc,
+ IN FRAME_BUF *pSvcInfoDescBuf
+ );
+
+BOOLEAN
+P2PSvc_SDMatchSvcName(
+ IN PP2PSVC_REQ_INFO_ENTRY pAdvInfoEntry,
+ IN u1Byte svcNameLen,
+ IN pu1Byte svcNameBuf
+ );
+
+BOOLEAN
+P2PSvc_ToProcessSDRsp(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN u1Byte searchId,
+ IN pu1Byte devAddr
+ );
+
+//-----------------------------------------------------------------------------
+// P2PSvc_SearchResult.c
+//-----------------------------------------------------------------------------
+
+VOID
+P2PSvc_Free_SearchResultObjList(
+ IN PRT_LIST_ENTRY pListHead,
+ IN pu4Byte pListCnt
+ );
+
+BOOLEAN
+P2PSvc_ToProcessProbeRsp(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN u1Byte searchId,
+ IN pu1Byte devAddr
+ );
+
+RT_STATUS
+P2PSvc_GetSearchResult(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN u1Byte searchId,
+ IN pu1Byte devAddr,
+ OUT PP2PSVC_SR_LIST_ENTRY *ppSREntry
+ );
+
+BOOLEAN
+P2PSvc_SeekReqNeedSD(
+ IN PP2PSVC_OBJ_LIST pSeekObjList,
+ IN PP2PSVC_SR_LIST_ENTRY pSREntryInList,
+ OUT PRT_OBJECT_HEADER *ppSvcInfoReqObj
+ );
+
+RT_STATUS
+P2PSvc_UpdateSearchResult(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN u1Byte searchId,
+ IN pu1Byte devAddr,
+ IN PP2PSVC_SR_LIST_ENTRY pSREntryToUpdate,
+ OUT PBOOLEAN pbDuplicatedEntry,
+ OUT PP2PSVC_SR_LIST_ENTRY *ppSREntryOut
+ );
+
+RT_STATUS
+P2PSvc_MakeSearchResultDataFromProbeRsp(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN PP2PSVC_REQ_INFO_ENTRY pSeekInfoEntry,
+ IN pu1Byte devAddr,
+ IN POCTET_STRING posP2PAttrs,
+ IN OCTET_STRING osAdvSvcInfo,
+ OUT PP2PSVC_SR_LIST_ENTRY *ppSREntryOut
+ );
+
+RT_STATUS
+P2PSvc_MakeSearchResultDataFromSDRsp(
+ IN PP2PSVC_INFO pP2PSvcInfo,
+ IN u1Byte searchId,
+ IN pu1Byte devAddr,
+ IN PP2P_SERVICE_RSP_TLV pSvcRspTlv,
+ OUT PP2PSVC_SR_LIST_ENTRY *ppSREntryOut
+ );
+
+//-----------------------------------------------------------------------------
+// P2PSvc_ActionInfo.c
+//-----------------------------------------------------------------------------
+BOOLEAN
+P2PSvc_Free_AdvSvcList(
+ IN PRT_LIST_ENTRY pListHead,
+ IN pu4Byte pListCnt,
+ IN u4Byte advId
+ );
+
+BOOLEAN
+P2PSvc_Free_SeekReqList(
+ IN PRT_LIST_ENTRY pListHead,
+ IN pu4Byte pListCnt,
+ IN u1Byte seekId
+ );
+
+RT_STATUS
+P2PSvc_Set_AdvSvc(
+ IN PADAPTER pAdapter,
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ IN u4Byte outBufLen,
+ OUT pu4Byte pBytesWritten,
+ OUT pu4Byte pBytesRead,
+ OUT pu4Byte pBytesNeeded
+ );
+
+RT_STATUS
+P2PSvc_Set_CancelAdvSvc(
+ IN PADAPTER pAdapter,
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ IN u4Byte outBufLen,
+ OUT pu4Byte pBytesWritten,
+ OUT pu4Byte pBytesRead,
+ OUT pu4Byte pBytesNeeded
+ );
+
+RT_STATUS
+P2PSvc_Set_SvcStatus(
+ IN PADAPTER pAdapter,
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ IN u4Byte outBufLen,
+ OUT pu4Byte pBytesWritten,
+ OUT pu4Byte pBytesRead,
+ OUT pu4Byte pBytesNeeded
+ );
+
+RT_STATUS
+P2PSvc_Set_Seek(
+ IN PADAPTER pAdapter,
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ IN u4Byte outBufLen,
+ OUT pu4Byte pBytesWritten,
+ OUT pu4Byte pBytesRead,
+ OUT pu4Byte pBytesNeeded
+ );
+
+RT_STATUS
+P2PSvc_Set_CancelSeek(
+ IN PADAPTER pAdapter,
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ IN u4Byte outBufLen,
+ OUT pu4Byte pBytesWritten,
+ OUT pu4Byte pBytesRead,
+ OUT pu4Byte pBytesNeeded
+ );
+
+RT_STATUS
+P2PSvc_Set_ConnCap(
+ IN PADAPTER pAdapter,
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ IN u4Byte outBufLen,
+ OUT pu4Byte pBytesWritten,
+ OUT pu4Byte pBytesRead,
+ OUT pu4Byte pBytesNeeded
+ );
+
+RT_STATUS
+P2PSvc_Set_PDReq(
+ IN PADAPTER pAdapter,
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ IN u4Byte outBufLen,
+ OUT pu4Byte pBytesWritten,
+ OUT pu4Byte pBytesRead,
+ OUT pu4Byte pBytesNeeded
+ );
+
+RT_STATUS
+P2PSvc_Set_RspdorFOPDReq(
+ IN PADAPTER pAdapter,
+ IN PVOID infoBuf,
+ IN u4Byte inBufLen,
+ IN u4Byte outBufLen,
+ OUT pu4Byte pBytesWritten,
+ OUT pu4Byte pBytesRead,
+ OUT pu4Byte pBytesNeeded
+ );
+
+#endif // #ifndef __INC_P2P_SVC_INTERNAL_H