blob: 5e38b73836a54ab48f6cda235a6552660ab8fd27 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lamc9a03d22014-02-19 00:32:59 -08002 * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -080020 */
Kiet Lamc9a03d22014-02-19 00:32:59 -080021
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028/******************************************************************************
29*
30* Name: p2p_Api.h
31*
32* Description: P2P FSM defines.
33*
Jeff Johnson295189b2012-06-20 16:38:30 -070034*
35******************************************************************************/
36
37#ifndef __P2P_API_H__
38#define __P2P_API_H__
39
40#include "vos_types.h"
41#include "halTypes.h"
42#include "palTimer.h"
43#include "vos_lock.h"
44
45typedef struct sP2pPsConfig{
46 tANI_U8 opp_ps;
47 tANI_U32 ctWindow;
48 tANI_U8 count;
49 tANI_U32 duration;
50 tANI_U32 interval;
51 tANI_U32 single_noa_duration;
52 tANI_U8 psSelection;
53 tANI_U8 sessionid;
54}tP2pPsConfig,*tpP2pPsConfig;
55
56typedef eHalStatus (*remainOnChanCallback)( tHalHandle, void* context,
57 eHalStatus status );
58
59typedef struct sRemainOnChn{
60 tANI_U8 chn;
61 tANI_U32 duration;
62 remainOnChanCallback callback;
63 void *pCBContext;
64}tRemainOnChn, tpRemainOnChn;
65
Madan Mohan Koyyalamudi666d33a2012-11-29 11:32:59 -080066#define SIZE_OF_NOA_DESCRIPTOR 13
67#define MAX_NOA_PERIOD_IN_MICROSECS 3000000
68
Viral Modi9dc288a2012-12-10 13:09:21 -080069#define P2P_CLEAR_POWERSAVE 0
70#define P2P_OPPORTUNISTIC_PS 1
71#define P2P_PERIODIC_NOA 2
72#define P2P_SINGLE_NOA 4
73
Jeff Johnson295189b2012-06-20 16:38:30 -070074#ifdef WLAN_FEATURE_P2P_INTERNAL
75
76#define MAX_SOCIAL_CHANNELS 3
77#define P2P_OPERATING_CHANNEL 6
78#define P2P_MAX_GROUP_LIMIT 5
79#define P2P_MAC_ADDRESS_LEN 6
80#define MAX_LISTEN_SEARCH_CYCLE 3
81#define P2P_LISTEN_TIMEOUT_AUTO 500 //0.5 sec
82#define P2P_LISTEN_TIMEOUT_HIGH 200 //0.4 sec
83#define P2P_LISTEN_TIMEOUT 1000 //1 sec
84#define P2P_REMAIN_ON_CHAN_TIMEOUT 300
85#define P2P_REMAIN_ON_CHAN_TIMEOUT_HIGH 1000
86#define P2P_REMAIN_ON_CHAN_TIMEOUT_LOW 100
87#define ACTION_FRAME_RETRY_TIMEOUT 50
88#define P2P_COUNTRY_CODE_LEN 3
89
Jeff Johnson295189b2012-06-20 16:38:30 -070090/* Wi-Fi Direct Device Discovery Type */
91typedef enum ep2pDiscoverType {
92 /** Driver must perform device discovery only using the scan phase*/
93 WFD_DISCOVER_TYPE_SCAN_ONLY = 1,
94 /** Driver must perform device discovery only using the find phase*/
95 WFD_DISCOVER_TYPE_FIND_ONLY = 2,
96 /** Driver can use either use scan phase or find phase to discovery
97 P2P devices. In our case Driver uses scan phase */
98 WFD_DISCOVER_TYPE_AUTO = 3,
99 /*Scan only social channel*/
100 WFD_DISCOVER_SCAN_ONLY_SOCIAL_CHN,
101 /** If it is set, driver must perform a complete discovery,
102 If it is false, it can do partial discovery.*/
103 WFD_DISCOVER_TYPE_FORCED = 0x80000000
104} ep2pDiscoverType, *ePp2pDiscoverType;
105
106//bit mask for what to discover
107#define QCWLAN_P2P_DISCOVER_DEVICE 0x1
108#define QCWLAN_P2P_DISCOVER_GO 0x2
109#define QCWLAN_P2P_DISCOVER_ANY 0x8
110
111#define P2P_DISCOVER_SCAN_ONLY(t) ( (WFD_DISCOVER_TYPE_SCAN_ONLY == (t)) \
112 || (WFD_DISCOVER_SCAN_ONLY_SOCIAL_CHN == (t)) )
113
114/* Scan Type */
115typedef enum ep2pScanType {
116 P2P_SCAN_TYPE_ACTIVE = 1, /** device should perform active scans for the scan phase of device discovery */
117 P2P_SCAN_TYPE_PASSIVE = 2, /** device should perform passive scanning for the scan phase of device discovery */
118 P2P_SCAN_TYPE_AUTO = 3 /** The selection of the scan type is upto the driver */
119} ep2pScanType, * ePp2pScanType;
120
121/** Listen State Discoverability */
122typedef enum ep2pListenStateDiscoverability {
123 P2P_DEVICE_NOT_DISCOVERABLE, /** Wi-Fi Direct Device Port must not make itself discoverable */
124 P2P_DEVICE_AUTO_AVAILABILITY, /** Wi-Fi Direct Device Port must periodically put itself in the listen state to become discoverable*/
125 P2P_DEVICE_HIGH_AVAILABILITY /** Wi-Fi Direct Device Port must be frequently put itself in the listen state
126 to increase the speed and reliability of remote devices discovering it */
127} ep2pListenStateDiscoverability, * ePp2pListenStateDiscoverability;
128
129typedef enum ep2pOperatingMode {
130 OPERATION_MODE_INVALID,
131 OPERATION_MODE_P2P_DEVICE,
132 OPERATION_MODE_P2P_GROUP_OWNER,
133 OPERATION_MODE_P2P_CLIENT
134}ep2pOperatingMode;
135
136typedef struct _tp2pDiscoverDeviceFilter{
137 tSirMacAddr DeviceID;
138 v_UCHAR_t ucBitmask;
139 tSirMacSSid GroupSSID;
140} tp2pDiscoverDeviceFilter;
141
142typedef struct _tp2pDiscoverRequest {
143 ep2pDiscoverType discoverType;
144 ep2pScanType scanType;
145 tANI_U32 uDiscoverTimeout;
146 tANI_U32 uNumDeviceFilters;
147 tp2pDiscoverDeviceFilter *pDeviceFilters;
148 tANI_BOOLEAN bForceScanLegacyNetworks;
149 tANI_U32 uNumOfLegacySSIDs;
150 tANI_U8 *pLegacySSIDs;
151 tANI_U32 uIELen;
152 tANI_U8 *pIEField;
153} tP2PDiscoverRequest;
154
155typedef enum _eP2PDiscoverStatus {
156 eP2P_DISCOVER_SUCCESS,
157 eP2P_DISCOVER_FAILURE,
158 eP2P_DISCOVER_ABORT,
159 eP2P_DIRECTED_DISCOVER
160} eP2PDiscoverStatus;
161
162typedef eHalStatus (*p2pDiscoverCompleteCallback)(tHalHandle hHal, void *pContext, eP2PDiscoverStatus discoverStatus);
163
164typedef struct sP2PGroupId {
165 tANI_U8 present;
166 tANI_U8 deviceAddress[6];
167 tANI_U8 num_ssid;
168 tANI_U8 ssid[32];
169} tP2PGroupId;
170
171typedef struct sP2PGroupBssid {
172 tANI_U8 present;
173 tANI_U8 P2PGroupBssid[6];
174} tP2PGroupBssid;
175
176typedef struct sP2PChannel {
177 tANI_U8 present;
178 tANI_U8 countryString[P2P_COUNTRY_CODE_LEN];
179 tANI_U8 regulatoryClass;
180 tANI_U8 channel;
181} tP2P_OperatingChannel, tP2P_ListenChannel;
182
183/** Structure contains parameters required for Wi-Fi Direct Device functionality such as device discovery, Group Owner Negotiation */
184typedef enum P2PFrameType {
185 eP2P_INVALID_FRM,
186 eP2P_PROBE_REQ,
187 eP2P_PROBE_RSP,
188 eP2P_GONEGO_REQ,
189 eP2P_GONEGO_RES,
190 eP2P_GONEGO_CNF,
191 eP2P_PROVISION_DISCOVERY_REQUEST,
192 eP2P_PROVISION_DISCOVERY_RESPONSE,
193 eP2P_BEACON,
194 eP2P_GROUP_ID,
195 eP2P_ASSOC_REQ,
196 eP2P_INVITATION_REQ,
197 eP2P_INVITATION_RSP,
198 eP2P_DEVICE_DISCOVERY_REQ,
199 eP2P_DEVICE_DISCOVERY_RSP,
200} eP2PFrameType;
201
202typedef enum P2PRequest {
203 eWFD_DISCOVER_REQUEST,
204 eWFD_DEVICE_ID,
205 eWFD_DEVICE_CAPABILITY,
206 eWFD_GROUP_OWNER_CAPABILITY,
207 eWFD_DEVICE_INFO,
208 eWFD_SECONDARY_DEVICE_TYPE_LIST,
209 eWFD_ADDITIONAL_IE,
210 eWFD_GROUP_ID,
211 eWFD_SEND_GO_NEGOTIATION_REQUEST,
212 eWFD_SEND_GO_NEGOTIATION_RESPONSE,
213 eWFD_SEND_GO_NEGOTIATION_CONFIRMATION,
214 eWFD_SEND_PROVISION_DISCOVERY_REQUEST,
215 eWFD_SEND_PROVISION_DISCOVERY_RESPONSE,
216 eWFD_SEND_INVITATION_REQUEST,
217 eWFD_SEND_INVITATION_RESPONSE,
218 eWFD_OPERATING_CHANNEL,
219 eWFD_LISTEN_CHANNEL
220} eP2PRequest;
221
222typedef struct _p2p_device_capability_config {
223 tANI_BOOLEAN bServiceDiscoveryEnabled;
224 tANI_BOOLEAN bClientDiscoverabilityEnabled;
225 tANI_BOOLEAN bConcurrentOperationSupported;
226 tANI_BOOLEAN bInfrastructureManagementEnabled;
227 tANI_BOOLEAN bDeviceLimitReached;
228 tANI_BOOLEAN bInvitationProcedureEnabled;
229 tANI_U32 WPSVersionsEnabled;
230} tp2p_device_capability_config;
231
232typedef struct _p2p_group_owner_capability_config {
233 tANI_BOOLEAN bPersistentGroupEnabled;
234 tANI_BOOLEAN bIntraBSSDistributionSupported;
235 tANI_BOOLEAN bCrossConnectionSupported;
236 tANI_BOOLEAN bPersistentReconnectSupported;
237 tANI_BOOLEAN bGroupFormationEnabled;
238 tANI_U32 uMaximumGroupLimit;
239} tp2p_group_owner_capability_config;
240
241typedef struct _tP2P_ProvDiscoveryReq {
242 tANI_U8 dialogToken;
243 tANI_U8 PeerDeviceAddress[P2P_MAC_ADDRESS_LEN];
244 tANI_U32 uSendTimeout;
245 tANI_U8 GroupCapability;
246 tP2PGroupId GroupId;
247 tANI_BOOLEAN bUseGroupID;
248 tANI_U32 uIELength;
249 tANI_U8 *IEdata;
250} tP2P_ProvDiscoveryReq;
251
252typedef struct _tP2P_ProvDiscoveryRes {
253 tANI_U8 dialogToken;
254 tANI_U8 ReceiverDeviceAddress[P2P_MAC_ADDRESS_LEN];
255 tANI_U32 uSendTimeout;
256 tANI_U32 uIELength;
257 tANI_U8 *IEdata;
258} tP2P_ProvDiscoveryRes;
259
260typedef struct p2p_go_request {
261 tANI_U8 dialogToken;
262 tANI_U8 peerDeviceAddress[P2P_MAC_ADDRESS_LEN];
263 tANI_U32 uSendTimeout;
264 tANI_U8 GoIntent;
265 tANI_U32 GoTimeout;
266 tANI_U32 ClientTimeout;
267 tANI_U8 IntendedInterfaceAddress[P2P_MAC_ADDRESS_LEN];
268 tANI_U8 GroupCapability;
269 tANI_U32 uIELength;
270 tANI_U8 *IEdata;
271} tP2P_go_request;
272
273typedef struct p2p_go_confirm {
274 tANI_U8 peerDeviceAddress[P2P_MAC_ADDRESS_LEN];
275 tANI_U8 dialog_token;
276 tANI_U32 uSendTimeout;
277 tANI_U8 status;
278 tANI_U8 GroupCapability;
279 tP2PGroupId GroupId;
280 tANI_BOOLEAN bUsedGroupId;
281 tANI_U32 uIELength;
282 tANI_U8 *IEdata;
283} tP2P_go_confirm;
284
285typedef struct p2p_go_response {
286 tANI_U8 peerDeviceAddress[P2P_MAC_ADDRESS_LEN];
287 tANI_U8 dialog_token;
288 tANI_U32 uSendTimeout;
289 tANI_U8 status;
290 tANI_U8 GoIntent;
291 tANI_U32 GoTimeout;
292 tANI_U32 ClientTimeout;
293 tANI_U8 IntendedInterfaceAddress[P2P_MAC_ADDRESS_LEN];
294 tANI_U8 GroupCapability;
295 tP2PGroupId GroupId;
296 tANI_BOOLEAN bUsedGroupId;
297 tANI_U32 uIELength;
298 tANI_U8 *IEdata;
299} tP2P_go_response;
300
301//Invitation Req parameters
302typedef struct p2p_invitation_request {
303 tANI_U8 DialogToken;
304 tANI_U8 PeerDeviceAddress[P2P_MAC_ADDRESS_LEN];
305 tANI_U32 uSendTimeout;
306 tANI_U32 GoTimeout;
307 tANI_U32 ClientTimeout;
308 tANI_U8 InvitationFlags;
309 tP2PGroupBssid GroupBSSID;
310 tP2P_OperatingChannel OperatingChannel;
311 tP2PGroupId GroupID;
312 tANI_U32 uIELength;
313 tANI_U8 *IEdata;
314} tP2P_invitation_request;
315
316
317//Invitation Response parameters
318typedef struct p2p_invitation_response {
319 tANI_U8 ReceiverDeviceAddress[P2P_MAC_ADDRESS_LEN];
320 tANI_U8 DialogToken;
321 void* RequestContext;
322 tANI_U32 uSendTimeout;
323 tANI_U8 status;
324 tANI_U32 GoTimeout;
325 tANI_U32 ClientTimeout;
326 tP2PGroupBssid GroupBSSID;
327 tP2P_OperatingChannel OperatingChannel;
328 tANI_U32 uIELength;
329 tANI_U8 *IEdata;
330} tP2P_invitation_response;
331
332typedef enum eOUISubType {
333 eOUI_P2P_GONEGO_REQ,
334 eOUI_P2P_GONEGO_RES,
335 eOUI_P2P_GONEGO_CNF,
336 eOUI_P2P_INVITATION_REQ,
337 eOUI_P2P_INVITATION_RES,
338 eOUI_P2P_DEVICE_DISCOVERABILITY_REQ,
339 eOUI_P2P_DEVICE_DISCOVERABILITY_RES,
340 eOUI_P2P_PROVISION_DISCOVERY_REQ,
341 eOUI_P2P_PROVISION_DISCOVERY_RES,
342 eOUI_P2P_INVALID
343}eOUISubType;
344
345typedef enum _eP2PPort {
346 eP2PPortDevice,
347 eP2PPortGroupOwner,
348 eP2PPortClient
349} eP2PPort;
350
351typedef enum eListenDiscoverableState {
352 eStateDisabled,
353 eStateEnabled,
354
355}eListenDiscoverableState;
356
357typedef enum P2PRemainOnChnReason
358{
359 eP2PRemainOnChnReasonUnknown,
360 eP2PRemainOnChnReasonDiscovery, //Part of the discovery (search and listen)
361 eP2PRemainOnChnReasonSendFrame, //Found peer and before sending request frame
362 eP2PRemainOnChnReasonListen, //In listen-only mode
363}eP2PRemainOnChnReason;
364
365typedef struct sGroupFormationReq {
366 tCsrBssid deviceAddress;
367 tANI_U8 targetListenChannel;
368 tANI_U8 persistent_group;
369 tANI_U8 group_limit; /* may be internal */
370 tANI_U8 GO_config_timeout;
371 tANI_U8 CL_config_timeout;
372 tANI_U8 GO_intent;
373 tANI_U16 devicePasswdId;
374 tSirMacAddr groupBssid;
375 tSirMacSSid groupSsid;
376}tGroupFormationReq;
377
378typedef struct tP2PConfigParam
379{
380 v_U32_t P2POperatingChannel;
381 v_U32_t P2PListenChannel;
382 v_U32_t P2PPSSelection;
383 v_U32_t P2POpPSCTWindow;
384 v_U32_t P2PNoADuration;
385 v_U32_t P2PNoACount;
386 v_U32_t P2PNoAInterval;
387}tP2PConfigParam;
388
389#endif
390
391typedef struct sp2pContext
392{
393 v_CONTEXT_t vosContext;
394 tHalHandle hHal;
395 tANI_U8 sessionId; //Session id corresponding to P2P. On windows it is same as HDD sessionid not sme sessionid.
396 tANI_U8 SMEsessionId;
397 tANI_U8 probeReqForwarding;
398 tANI_U8 *probeRspIe;
399 tANI_U32 probeRspIeLength;
400#ifdef WLAN_FEATURE_P2P_INTERNAL
401 tANI_U8 numClients;
402 tANI_U32 maxGroupLimit;
403 ep2pOperatingMode operatingmode;
404 tANI_U8 state;
405 tANI_U8 socialChannel[MAX_SOCIAL_CHANNELS];
406 tANI_U8 currentSearchIndex;
407 tANI_U8 listenIndex;
408 tANI_U8 dialogToken;
409 tANI_U8 receivedDialogToken;
410 eOUISubType actionFrameOUI;
411 eP2PFrameType actionFrameType;
412 tANI_BOOLEAN actionFrameTimeout;
413 tANI_U8 *pSentActionFrame;
414 tANI_U32 ActionFrameLen;
415 tANI_U32 ActionFrameSendTimeout;
416 eListenDiscoverableState listenDiscoverableState;
Madan Mohan Koyyalamudi0dea29e2013-07-11 12:01:37 +0530417 vos_timer_t listenTimerHandler;
418 vos_timer_t WPSRegistrarCheckTimerHandler;
Jeff Johnson295189b2012-06-20 16:38:30 -0700419 tANI_U32 WPSRegistrarSet;
420 tANI_U8 bWaitForWPSReady;
421 tANI_U8 bInGroupFormation;
Madan Mohan Koyyalamudi0dea29e2013-07-11 12:01:37 +0530422 vos_timer_t discoverTimer;
423 vos_timer_t retryActionFrameTimer;
424 vos_timer_t actionFrameTimer;
Jeff Johnson295189b2012-06-20 16:38:30 -0700425 tPalTimerHandle nextActionFrameTimer;
426 tANI_U8 peerMacAddress[P2P_MAC_ADDRESS_LEN];
427 tANI_U8 selfMacAddress[P2P_MAC_ADDRESS_LEN];
428 tANI_U8 ReceiverDeviceAddress[P2P_MAC_ADDRESS_LEN];
429 tANI_U8 listen_search_cycle;
430 ep2pDiscoverType discoverType;
431 ep2pScanType scanType;
432 tANI_U32 uDiscoverTimeout;
433 tp2pDiscoverDeviceFilter *directedDiscoveryFilter;
434 tANI_U32 uNumDeviceFilters;
435 //Number of deviceFilter directedDiscoveryFilter holds
436 tANI_U32 uNumDeviceFilterAllocated;
437 tGroupFormationReq formationReq;
438 tANI_U8 GroupFormationPending;
439 tANI_BOOLEAN PeerFound;
440 tANI_BOOLEAN directedDiscovery;
441 tANI_U32 listenDuration;
442 tANI_U32 expire_time;
443 p2pDiscoverCompleteCallback p2pDiscoverCBFunc;
444 void *pContext;
445 tANI_BOOLEAN bForceScanLegacyNetworks;
446 tANI_U8 *DiscoverReqIeField;
447 tANI_U32 DiscoverReqIeLength;
448 tANI_U8 *GoNegoReqIeField;
449 tANI_U32 GoNegoReqIeLength;
450 tANI_U8 *GoNegoResIeField;
451 tANI_U32 GoNegoResIeLength;
452 tANI_U8 *GoNegoCnfIeField;
453 tANI_U32 GoNegoCnfIeLength;
454 tANI_U8 *ProvDiscReqIeField;
455 tANI_U32 ProvDiscReqIeLength;
456 tANI_U8 *ProvDiscResIeField;
457 tANI_U32 ProvDiscResIeLength;
458 tANI_U8 *InvitationReqIeField;
459 tANI_U32 InvitationReqIeLength;
460 tANI_U8 *InvitationResIeField;
461 tANI_U32 InvitationResIeLength;
462 tANI_U32 DiscoverableCfg;
463 vos_spin_lock_t lState;
464 tANI_U8 *pNextActionFrm;
465 tANI_U32 nNextFrmLen;
466 tANI_U32 nNextFrameTimeOut;
467 eP2PFrameType NextActionFrameType;
468 tANI_U8 ssid[32];
469 v_U32_t P2PListenChannel;
470 v_U32_t P2POperatingChannel;
471 tP2pPsConfig pNoA;
472 tANI_U8 OriginalGroupCapability;
473#endif
474} tp2pContext, *tPp2pContext;
475
Jeff Johnson295189b2012-06-20 16:38:30 -0700476eHalStatus sme_RemainOnChannel( tHalHandle hHal, tANI_U8 sessionId,
477 tANI_U8 channel, tANI_U32 duration,
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +0530478 remainOnChanCallback callback,
479 void *pContext,
480 tANI_U8 isP2PProbeReqAllowed);
Jeff Johnson295189b2012-06-20 16:38:30 -0700481eHalStatus sme_ReportProbeReq( tHalHandle hHal, tANI_U8 flag );
482eHalStatus sme_updateP2pIe( tHalHandle hHal, void *p2pIe,
483 tANI_U32 p2pIeLength );
484eHalStatus sme_sendAction( tHalHandle hHal, tANI_U8 sessionId,
Jeff Johnsone7245742012-09-05 17:12:55 -0700485 const tANI_U8 *pBuf, tANI_U32 len,
486 tANI_U16 wait, tANI_BOOLEAN noack);
Jeff Johnson295189b2012-06-20 16:38:30 -0700487eHalStatus sme_CancelRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId );
488eHalStatus sme_p2pOpen( tHalHandle hHal );
489eHalStatus p2pStop( tHalHandle hHal );
490eHalStatus sme_p2pClose( tHalHandle hHal );
491eHalStatus sme_p2pSetPs( tHalHandle hHal, tP2pPsConfig * data );
492#ifdef WLAN_FEATURE_P2P_INTERNAL
493eHalStatus p2pRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId,
494 tANI_U8 channel, tANI_U32 duration,
495 remainOnChanCallback callback, void *pContext,
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +0530496 tANI_U8 isP2PProbeReqAllowed,
Jeff Johnson295189b2012-06-20 16:38:30 -0700497 eP2PRemainOnChnReason reason);
498#else
499eHalStatus p2pRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId,
500 tANI_U8 channel, tANI_U32 duration,
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +0530501 remainOnChanCallback callback,
502 void *pContext,
503 tANI_U8 isP2PProbeReqAllowed);
Jeff Johnson295189b2012-06-20 16:38:30 -0700504#endif
505eHalStatus p2pSendAction( tHalHandle hHal, tANI_U8 sessionId,
Jeff Johnsone7245742012-09-05 17:12:55 -0700506 const tANI_U8 *pBuf, tANI_U32 len,
507 tANI_U16 wait, tANI_BOOLEAN noack);
Jeff Johnson295189b2012-06-20 16:38:30 -0700508eHalStatus p2pCancelRemainOnChannel( tHalHandle hHal, tANI_U8 sessionId );
509eHalStatus p2pSetPs( tHalHandle hHal, tP2pPsConfig *pNoA );
Srinivas Girigowda9a1c4ce2013-03-21 12:34:46 -0700510tSirRFBand GetRFBand(tANI_U8 channel);
Jeff Johnson295189b2012-06-20 16:38:30 -0700511#ifdef WLAN_FEATURE_P2P_INTERNAL
512eHalStatus p2pRemainOnChannelCallback(tHalHandle halHandle, void *pContext, eHalStatus scan_status);
513eHalStatus P2P_DiscoverRequest(tHalHandle hHal, tANI_U8 SessionID, tP2PDiscoverRequest *pDiscoverRequest,
514 p2pDiscoverCompleteCallback callback, void *pContext);
515tANI_U8 p2pGetDialogToken(tHalHandle hHal, tANI_U8 SessionID, eP2PFrameType actionFrameType);
516eHalStatus P2P_ListenStateDiscoverable(tHalHandle hHal, tANI_U8 sessionId, ep2pListenStateDiscoverability listenState);
517eHalStatus p2pCreateSendActionFrame(tHalHandle hHal, tANI_U8 SessionID,
518 void *p2pactionframe, eP2PFrameType actionFrameType, tANI_U32 timeout);
519eHalStatus p2pScanRequest(tp2pContext *p2pContext, p2pDiscoverCompleteCallback callback, void *pContext);
520void p2pActionFrameTimerHandler(void *pContext);
521void p2pListenDiscoverTimerHandler(void *pContext);
522void p2pDiscoverTimerHandler(void *pContext);
523void p2pRetryActionFrameTimerHandler(void *pContext);
524eHalStatus p2pGrpFormationRemainOnChanRspCallback(tHalHandle halHandle, void *pContext, tANI_U32 scanId, eCsrScanStatus scan_status);
525eHalStatus p2pChangeDefaultConfigParam(tHalHandle hHal, tP2PConfigParam *pParam);
526eHalStatus p2pGetConfigParam(tHalHandle hHal, tP2PConfigParam *pParam);
527eHalStatus p2pPS(tHalHandle hHal, tANI_U8 sessionId);
528eHalStatus p2pCloseSession(tHalHandle hHal, tANI_U8 SessionID);
529eHalStatus p2pSetSessionId(tHalHandle hHal, tANI_U8 SessionID, tANI_U8 SmeSessionId);
530tANI_BOOLEAN p2pIsOperatingChannEqualListenChann(tHalHandle hHal, tANI_U8 SessionID);
531eHalStatus p2pGetListenChannel(tHalHandle hHal, tANI_U8 SessionID, tANI_U8 *channel);
532eHalStatus p2pSetListenChannel(tHalHandle hHal, tANI_U8 SessionID, tANI_U8 channel);
533eHalStatus p2pStopDiscovery(tHalHandle hHal, tANI_U8 SessionID);
534tANI_U8 getP2PSessionIdFromSMESessionId(tHalHandle hHal, tANI_U8 SessionID);
535void p2pCallDiscoverCallback(tp2pContext *p2pContext, eP2PDiscoverStatus statusCode);
536eHalStatus p2pGetResultFilter(tp2pContext *pP2pContext,
537 tCsrScanResultFilter *pFilter);
538#endif//INTERNAL
539#endif //__P2P_API_H__