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