2 ** $Id: //Department/DaVinci/BRANCHES/WIFI_P2P_DRIVER_V2_2/include/mgmt/p2p_fsm.h#11 $
6 \brief Declaration of functions and finite state machine for P2P Module.
8 Declaration of functions and finite state machine for P2P Module.
11 /*******************************************************************************
12 * Copyright (c) 2010 MediaTek Inc.
14 * All rights reserved. Copying, compilation, modification, distribution
15 * or any other use whatsoever of this material is strictly prohibited
16 * except in accordance with a Software License Agreement with
18 ********************************************************************************
21 /*******************************************************************************
24 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
25 * AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK
26 * SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
27 * PROVIDED TO BUYER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY
28 * DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
29 * LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
30 * PARTICULAR PURPOSE OR NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE
31 * ANY WARRANTY WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY
32 * WHICH MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK
33 * SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY
34 * WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE
35 * FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S SPECIFICATION OR TO
36 * CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
38 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
39 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL
40 * BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT
41 * ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY
42 * BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
44 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
45 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT
46 * OF LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING
47 * THEREOF AND RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN
48 * FRANCISCO, CA, UNDER THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE
50 ********************************************************************************
56 * 02 24 2012 yuche.tsai
57 * [ALPS00240756] [WiFi direct]After accept PBC request,DVT pops Kernel Defect.Powering off DVT causes DVT reboots automatcially and pops up KE(once)
58 * Fix GO dissolving issue to avoid FW assert.
60 * 02 22 2012 yuche.tsai
61 * [ALPS00240483] [Wifi P2P]Run Sigma tool of A69. Always run fail on 5.1.2. No get correct connection from Realtek.
62 * Fix assoc response without P2P IE issue for Sigma test.
64 * 02 14 2012 yuche.tsai
65 * [ALPS00118350] [ALPS.ICS][WiFi Direct] Dirver update for wifi direct connection
66 * Replace Beacon/Probe Response IE by driver generating instead of from supplicant.
68 * 01 27 2012 yuche.tsai
70 * Update for GC connection .
72 * 01 18 2012 yuche.tsai
74 * Add get station info API.
75 * TX deauth before start beacon.
77 * 01 17 2012 yuche.tsai
79 * Update mgmt frame filter setting.
80 * Please also update FW 2.1
82 * 01 16 2012 yuche.tsai
84 * Update Driver for wifi driect gc join IE update issue.
86 * 01 16 2012 yuche.tsai
90 * 01 16 2012 yuche.tsai
92 * Update P2P driver code for GC Join.
94 * 01 15 2012 yuche.tsai
96 * ICS P2P Driver Update.
98 * 01 15 2012 yuche.tsai
102 * 01 13 2012 yuche.tsai
104 * WiFi Direct Driver Update for ICS.
106 * 01 13 2012 yuche.tsai
108 * WiFi Hot Spot Tethering for ICS ALPHA testing version.
110 * 12 02 2011 yuche.tsai
112 * Resolve class 3 error issue under AP mode.
114 * data frame may TX before Assoc Response TX.
116 * 11 11 2011 yuche.tsai
118 * Fix work thread cancel issue.
120 * 11 11 2011 yuche.tsai
122 * Fix default device name issue.
124 * 11 09 2011 yuche.tsai
125 * [WCXRP00001093] [Need Patch][Volunteer Patch] Service Discovery 2.0 state transition issue.
126 * Fix SD2.0 issue which may cause KE. (Monkey test)
128 * 11 08 2011 yuche.tsai
129 * [WCXRP00001094] [Volunteer Patch][Driver] Driver version & supplicant version query & set support for service discovery version check.
130 * Add support for driver version query & p2p supplicant verseion set.
131 * For new service discovery mechanism sync.
133 * 10 18 2011 yuche.tsai
134 * [WCXRP00001045] [WiFi Direct][Driver] Check 2.1 branch.
135 * Support Channle Query.
137 * 10 18 2011 yuche.tsai
138 * [WCXRP00001045] [WiFi Direct][Driver] Check 2.1 branch.
142 * 09 01 2011 yuche.tsai
144 * Fix channel stay interval.
145 * Sync channel stay interval & channel request interval under AP mode..
147 * 08 30 2011 yuche.tsai
148 * [WCXRP00000953] [Volunteer Patch][Driver] Hot Spot Channel ASSERT issue.
149 * Fix hot spot FW assert issue when under concurrent case. (DBG enable only)
152 * [WCXRP00000934] [MT6620 Wi-Fi][Driver][P2P] Wi-Fi hot spot with auto sparse channel residence
153 * auto channel decision for 2.4GHz hot spot mode
155 * 08 16 2011 yuche.tsai
157 * Fix scan policy for Active LISTEN scan.
159 * 08 09 2011 yuche.tsai
160 * [WCXRP00000919] [Volunteer Patch][WiFi Direct][Driver] Invitation New Feature.
161 * Invitation Feature add on.
163 * 08 02 2011 yuche.tsai
164 * [WCXRP00000896] [Volunteer Patch][WiFi Direct][Driver] GO with multiple client, TX deauth to a disconnecting device issue.
165 * Support TX Deauth Issue.
167 * 07 26 2011 yuche.tsai
168 * [WCXRP00000875] [Volunteer Patch][WiFi Direct][Driver] MT6620 IOT issue with realtek test bed solution.
169 * Turn off persistent group support for V2.0 release.
171 * 07 18 2011 yuche.tsai
172 * [WCXRP00000856] [Volunteer Patch][WiFi Direct][Driver] MT6620 WiFi Direct IOT Issue with BCM solution.
175 * 07 18 2011 yuche.tsai
176 * [WCXRP00000856] [Volunteer Patch][WiFi Direct][Driver] MT6620 WiFi Direct IOT Issue with BCM solution.
177 * Fix MT6620 WiFi Direct IOT Issue with BCM solution.
179 * 07 11 2011 yuche.tsai
180 * [WCXRP00000845] [Volunteer Patch][WiFi Direct] WiFi Direct Device Connection Robustness
181 * Enhance Connection Robustness.
183 * 07 08 2011 yuche.tsai
184 * [WCXRP00000841] [Volunteer Patch][WiFi Direct] Group Owner Setting.
185 * Update GO configure parameter.
187 * 07 05 2011 yuche.tsai
188 * [WCXRP00000821] [Volunteer Patch][WiFi Direct][Driver] WiFi Direct Connection Speed Issue
189 * Disable enhancement II for debugging.
191 * 07 05 2011 yuche.tsai
192 * [WCXRP00000821] [Volunteer Patch][WiFi Direct][Driver] WiFi Direct Connection Speed Issue
193 * Refine compile flag.
195 * 07 05 2011 yuche.tsai
196 * [WCXRP00000821] [Volunteer Patch][WiFi Direct][Driver] WiFi Direct Connection Speed Issue
197 * Add WiFi Direct Connection Enhancement.
199 * 06 20 2011 yuche.tsai
200 * [WCXRP00000799] [Volunteer Patch][MT6620][Driver] Connection Indication Twice Issue.
201 * Fix connection indication twice issue.
203 * 06 07 2011 yuche.tsai
204 * [WCXRP00000763] [Volunteer Patch][MT6620][Driver] RX Service Discovery Frame under AP mode Issue
205 * Fix RX SD request under AP mode issue.
207 * 05 04 2011 yuche.tsai
209 * Support partial persistent group function.
211 * 04 20 2011 terry.wu
212 * [WCXRP00000660] [MT6620 Wi-Fi][Driver] Remove flag CFG_WIFI_DIRECT_MOVED
213 * Remove CFG_WIFI_DIRECT_MOVED.
215 * 04 10 2011 yuche.tsai
216 * [WCXRP00000624] [Volunteer Patch][MT6620][Driver] Add device discoverability support for GO.
217 * Add device discoverability support. (Phase I)
219 * 03 25 2011 yuche.tsai
221 * Improve some error handleing.
223 * 03 22 2011 george.huang
224 * [WCXRP00000504] [MT6620 Wi-Fi][FW] Support Sigma CAPI for power saving related command
225 * link with supplicant commands
227 * 03 22 2011 yuche.tsai
229 * 1. Fix formation policy issue.
230 * 2. Fix LISTEN channel issue.
231 * 3. Fix Target IF address in-correct issue when being GO.
233 * 03 21 2011 yuche.tsai
235 * Connection Flow Modification.
237 * 03 19 2011 terry.wu
238 * [WCXRP00000577] [MT6620 Wi-Fi][Driver][FW] Create V2.0 branch for firmware and driver
239 * create V2.0 p2p driver release based on label "MT6620_WIFI_P2P_DRIVER_V2_0_2100_0319_2011" from main trunk.
241 * 03 19 2011 yuche.tsai
242 * [WCXRP00000584] [Volunteer Patch][MT6620][Driver] Add beacon timeout support for WiFi Direct.
243 * Add beacon timeout support.
245 * 03 19 2011 yuche.tsai
246 * [WCXRP00000581] [Volunteer Patch][MT6620][Driver] P2P IE in Assoc Req Issue
247 * Append P2P IE in Assoc Req, so that GC can be discovered in probe response of GO.
249 * 03 18 2011 yuche.tsai
250 * [WCXRP00000574] [Volunteer Patch][MT6620][Driver] Modify P2P FSM Connection Flow
251 * Modify connection flow after Group Formation Complete, or device connect to a GO.
252 * Instead of request channel & connect directly, we use scan to allocate channel bandwidth & connect after RX BCN.
254 * 03 15 2011 yuche.tsai
255 * [WCXRP00000560] [Volunteer Patch][MT6620][Driver] P2P Connection from UI using KEY/DISPLAY issue
256 * Fix some configure method issue.
258 * 03 10 2011 yuche.tsai
262 * 03 07 2011 yuche.tsai
263 * [WCXRP00000502] [Volunteer Patch][MT6620][Driver] Fix group ID issue when doing Group Formation.
267 * [WCXRP00000506] [MT6620 Wi-Fi][Driver][FW] Add Security check related code
268 * rename the define to anti_pviracy.
271 * [WCXRP00000506] [MT6620 Wi-Fi][Driver][FW] Add Security check related code
272 * add the code to get the check rsponse and indicate to app.
274 * 03 01 2011 yuche.tsai
275 * [WCXRP00000501] [Volunteer Patch][MT6620][Driver] No common channel issue when doing GO formation
276 * Update channel issue when doing GO formation..
278 * 03 01 2011 yuche.tsai
279 * [WCXRP00000245] 1. Invitation Request/Response.
280 2. Provision Discovery Request/Response
282 * Update Service Discovery Related wlanoid function.
285 * [WCXRP00000471] [MT6620 Wi-Fi][Driver] Add P2P Provison discovery append Config Method attribute at WSC IE
286 * fixed the ioctl setting that index not map to spec defined config method.
288 * 02 18 2011 yuche.tsai
289 * [WCXRP00000480] [Volunteer Patch][MT6620][Driver] WCS IE format issue
290 * Fix WSC IE BE format issue.
293 * [WCXRP00000471] [MT6620 Wi-Fi][Driver] Add P2P Provison discovery append Config Method attribute at WSC IE
294 * append the WSC IE config method attribute at provision discovery request.
296 * 02 11 2011 yuche.tsai
297 * [WCXRP00000431] [Volunteer Patch][MT6620][Driver] Add MLME support for deauthentication under AP(Hot-Spot) mode.
298 * Add two function prototype.
300 * 02 10 2011 yuche.tsai
301 * [WCXRP00000431] [Volunteer Patch][MT6620][Driver] Add MLME support for deauthentication under AP(Hot-Spot) mode.
302 * Support Disassoc & Deauthentication for Hot-Spot.
304 * 02 09 2011 yuche.tsai
305 * [WCXRP00000245] 1. Invitation Request/Response.
307 2. Provision Discovery Request/Response
309 * Add Service Discovery Indication Related code.
311 * 02 09 2011 yuche.tsai
312 * [WCXRP00000431] [Volunteer Patch][MT6620][Driver] Add MLME support for deauthentication under AP(Hot-Spot) mode.
313 * Add Support for MLME deauthentication for Hot-Spot.
315 * 02 09 2011 yuche.tsai
316 * [WCXRP00000429] [Volunteer Patch][MT6620][Driver] Hot Spot Client Limit Issue
317 * Fix Client Limit Issue.
319 * 01 26 2011 yuche.tsai
320 * [WCXRP00000245] 1. Invitation Request/Response.
322 2. Provision Discovery Request/Response
324 * Add Service Discovery Function.
326 * 01 25 2011 terry.wu
327 * [WCXRP00000393] [MT6620 Wi-Fi][Driver] Add new module insert parameter
328 * Add a new module parameter to indicate current runnig mode, P2P or AP.
330 * 01 19 2011 george.huang
331 * [WCXRP00000355] [MT6620 Wi-Fi] Set WMM-PS related setting with qualifying AP capability
332 * Null NOA attribute setting when no related parameters.
334 * 01 12 2011 yuche.tsai
335 * [WCXRP00000352] [Volunteer Patch][MT6620][Driver] P2P Statsion Record Client List Issue
336 * Modify some behavior of AP mode.
338 * 12 22 2010 yuche.tsai
339 * [WCXRP00000245] 1. Invitation Request/Response.
340 2. Provision Discovery Request/Response
344 * 12 15 2010 yuche.tsai
345 * [WCXRP00000245] 1. Invitation Request/Response.
346 2. Provision Discovery Request/Response
348 * Refine Connection Flow.
350 * 12 08 2010 yuche.tsai
351 * [WCXRP00000244] [MT6620][Driver] Add station record type for each client when in AP mode.
352 * Change STA Type under AP mode. We would tell if client is a P2P device or a legacy client by checking the P2P IE in assoc req frame.
354 * 12 02 2010 yuche.tsai
356 * Update P2P Connection Policy for Invitation.
358 * 12 02 2010 yuche.tsai
360 * Update P2P Connection Policy for Invitation & Provision Discovery.
362 * 11 30 2010 yuche.tsai
364 * Invitation & Provision Discovery Indication.
366 * 11 30 2010 yuche.tsai
368 * Update Configure Method indication & selection for Provision Discovery & GO_NEGO_REQ
370 * 11 29 2010 yuche.tsai
372 * Update P2P related function for INVITATION & PROVISION DISCOVERY.
374 * 11 26 2010 george.huang
375 * [WCXRP00000152] [MT6620 Wi-Fi] AP mode power saving function
376 * Update P2P PS for NOA function.
378 * 11 25 2010 yuche.tsai
380 * Update Code for Invitation Related Function.
383 * [WCXRP00000164] [MT6620 Wi-Fi][Driver] Support the p2p random SSID[WCXRP00000179] [MT6620 Wi-Fi][FW] Set the Tx lowest rate at wlan table for normal operation
384 * fixed some ASSERT check.
387 * [WCXRP00000164] [MT6620 Wi-Fi][Driver] Support the p2p random SSID
388 * adding the p2p random ssid support.
391 * [WCXRP00000124] [MT6620 Wi-Fi] [Driver] Support the dissolve P2P Group
392 * Add the code to support disconnect p2p group
395 * [WCXRP00000085] [MT6620 Wif-Fi] [Driver] update the modified p2p state machine
396 * update the frog's new p2p state machine.
399 * [WCXRP00000081] [MT6620][Driver] Fix the compiling error at WinXP while enable P2P
400 * fixed compiling error while enable p2p.
402 * 09 21 2010 kevin.huang
403 * [WCXRP00000054] [MT6620 Wi-Fi][Driver] Restructure driver for second Interface
404 * Isolate P2P related function for Hardware Software Bundle
408 * fixed the compiling error at WinXP.
412 * adding the code for beacon/probe req/ probe rsp wsc ie at p2p.
414 * 09 03 2010 kevin.huang
416 * Refine #include sequence and solve recursive/nested #include issue
418 * 08 26 2010 yuche.tsai
420 * Add connection abort message event prototype.
422 * 08 20 2010 kevin.huang
424 * Modify AAA Module for changing STA STATE 3 at p2p/bowRunEventAAAComplete()
426 * 08 16 2010 yuche.tsai
428 * Fix P2P Intended Interface Address Bug.
429 * Extend GO Nego Timeout Time.
431 * 08 16 2010 yuche.tsai
433 * Extend Listen Interval default value & remove deprecated variable.
435 * 08 16 2010 kevin.huang
437 * Refine AAA functions
439 * 08 12 2010 kevin.huang
441 * Refine bssProcessProbeRequest() and bssSendBeaconProbeResponse()
443 * 08 12 2010 yuche.tsai
445 * Add function prototype for join complete.
447 * 08 11 2010 yuche.tsai
449 * Add some function proto type for P2P FSM under provisioning phase..
451 * 08 11 2010 yuche.tsai
453 * Change P2P data structure for supporting
454 * 1. P2P Device discovery.
455 * 2. P2P Group Negotiation.
458 * 08 05 2010 yuche.tsai
460 * Check-in P2P Device Discovery Feature.
462 * 08 03 2010 george.huang
464 * handle event for updating NOA parameters indicated from FW
466 * 08 02 2010 yuche.tsai
468 * P2P Group Negotiation Code Check in.
470 * 07 26 2010 yuche.tsai
472 * Update P2P FSM header file.
476 * P2P/RSN/WAPI IEs need to be declared with compact structure.
478 * 07 21 2010 yuche.tsai
480 * Add for P2P Scan Result Parsing & Saving.
482 * 07 19 2010 yuche.tsai
484 * Update P2P FSM header file.
488 * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
490 * 06 21 2010 yuche.tsai
491 * [WPD00003839][MT6620 5931][P2P] Feature migration
492 * Fix some P2P function prototype.
494 * 06 17 2010 yuche.tsai
495 * [WPD00003839][MT6620 5931][P2P] Feature migration
496 * First draft for migration P2P FSM from FW to Driver.
498 * 03 18 2010 kevin.huang
499 * [BORA00000663][WIFISYS][New Feature] AdHoc Mode Support
500 * Rename CFG flag for P2P
502 * 02 26 2010 kevin.huang
503 * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
504 * Modify parameter of p2pStartGO
506 * 02 23 2010 kevin.huang
507 * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
508 * Add Wi-Fi Direct SSID and P2P GO Test Mode
510 * 02 04 2010 kevin.huang
511 * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
512 * Add AAA Module Support, Revise Net Type to Net Type Index for array lookup
519 /*******************************************************************************
520 * C O M P I L E R F L A G S
521 ********************************************************************************
523 #define CID52_53_54 0
526 /*******************************************************************************
527 * E X T E R N A L R E F E R E N C E S
528 ********************************************************************************
531 /*******************************************************************************
533 ********************************************************************************
540 /*******************************************************************************
542 ********************************************************************************
544 typedef enum _ENUM_P2P_STATE_T {
547 P2P_STATE_AP_CHANNEL_DETECT,
548 P2P_STATE_REQING_CHANNEL,
549 P2P_STATE_CHNL_ON_HAND, /* Requesting Channel to Send Specific Frame. */
550 P2P_STATE_GC_JOIN, /* Sending Specific Frame. May extending channel by other event. */
552 } ENUM_P2P_STATE_T, *P_ENUM_P2P_STATE_T;
555 typedef enum _ENUM_CHANNEL_REQ_TYPE_T {
556 CHANNEL_REQ_TYPE_REMAIN_ON_CHANNEL,
557 CHANNEL_REQ_TYPE_GC_JOIN_REQ,
558 CHANNEL_REQ_TYPE_GO_START_BSS
560 ENUM_CHANNEL_REQ_TYPE_T, *P_ENUM_CHANNEL_REQ_TYPE_T;
563 typedef struct _P2P_SSID_STRUCT_T {
566 } P2P_SSID_STRUCT_T, *P_P2P_SSID_STRUCT_T;
568 typedef struct _P2P_STATION_INFO_T {
569 UINT_32 u4InactiveTime;
570 UINT_32 u4RxBytes; // TODO:
571 UINT_32 u4TxBytes; // TODO:
572 UINT_32 u4RxPackets; // TODO:
573 UINT_32 u4TxPackets; // TODO:
574 // TODO: Add more for requirement.
576 P2P_STATION_INFO_T, *P_P2P_STATION_INFO_T;
579 /*-------------------- P2P FSM ACTION STRUCT ---------------------*/
580 typedef struct _P2P_CHNL_REQ_INFO_T {
581 BOOLEAN fgIsChannelRequested;
582 UINT_8 ucSeqNumOfChReq;
586 ENUM_CHNL_EXT_T eChnlSco;
587 UINT_32 u4MaxInterval;
588 ENUM_CHANNEL_REQ_TYPE_T eChannelReqType;
589 } P2P_CHNL_REQ_INFO_T, *P_P2P_CHNL_REQ_INFO_T;
591 typedef struct _P2P_SCAN_REQ_INFO_T {
592 ENUM_SCAN_TYPE_T eScanType;
593 ENUM_SCAN_CHANNEL eChannelSet;
594 UINT_16 u2PassiveDewellTime;
595 UINT_8 ucSeqNumOfScnMsg;
597 BOOLEAN fgIsScanRequest;
598 UINT_8 ucNumChannelList;
599 RF_CHANNEL_INFO_T arScanChannelList[MAXIMUM_OPERATION_CHANNEL_LIST];
601 UINT_8 aucIEBuf[MAX_IE_LENGTH];
602 P2P_SSID_STRUCT_T rSsidStruct; // Currently we can only take one SSID scan request
604 P2P_SCAN_REQ_INFO_T, *P_P2P_SCAN_REQ_INFO_T;
606 typedef struct _P2P_CONNECTION_REQ_INFO_T {
608 BOOLEAN fgIsConnRequest;
609 P2P_SSID_STRUCT_T rSsidStruct;
610 UINT_8 aucBssid[MAC_ADDR_LEN];
613 UINT_8 aucIEBuf[MAX_IE_LENGTH];
614 } P2P_CONNECTION_REQ_INFO_T, *P_P2P_CONNECTION_REQ_INFO_T;
616 typedef struct _P2P_MGMT_TX_REQ_INFO_T {
617 BOOLEAN fgIsMgmtTxRequested;
618 P_MSDU_INFO_T prMgmtTxMsdu;
620 } P2P_MGMT_TX_REQ_INFO_T, *P_P2P_MGMT_TX_REQ_INFO_T;
622 typedef struct _P2P_BEACON_UPDATE_INFO_T {
626 UINT_32 u4BcnBodyLen;
628 P2P_BEACON_UPDATE_INFO_T, *P_P2P_BEACON_UPDATE_INFO_T;
630 typedef struct _P2P_JOIN_INFO_T {
631 UINT_32 ucSeqNumOfReqMsg;
632 UINT_8 ucAvailableAuthTypes;
633 P_STA_RECORD_T prTargetStaRec;
634 P2P_SSID_STRUCT_T rSsidStruct;
635 BOOLEAN fgIsJoinComplete;
638 UINT_8 aucIEBuf[MAX_IE_LENGTH];
640 P2P_JOIN_INFO_T, *P_P2P_JOIN_INFO_T;
642 struct _P2P_FSM_INFO_T {
644 ENUM_P2P_STATE_T ePreviousState;
645 ENUM_P2P_STATE_T eCurrentState;
647 /* Channel related. */
648 P2P_CHNL_REQ_INFO_T rChnlReqInfo;
651 P2P_SCAN_REQ_INFO_T rScanReqInfo;
653 /* Connection related. */
654 P2P_CONNECTION_REQ_INFO_T rConnReqInfo;
656 /* Mgmt tx related. */
657 P2P_MGMT_TX_REQ_INFO_T rMgmtTxInfo;
659 /* Beacon related. */
660 P2P_BEACON_UPDATE_INFO_T rBcnContentInfo;
662 /* GC Join related. */
663 P2P_JOIN_INFO_T rJoinInfo;
666 TIMER_T rP2pFsmTimeoutTimer;
670 P_BSS_DESC_T prTargetBss;
672 /* GC Connection Request. */
673 BOOLEAN fgIsConnectionRequested;
677 /* Channel grant interval. */
678 UINT_32 u4GrantInterval;
680 /* Packet filter for P2P module. */
681 UINT_32 u4P2pPacketFilter;
683 //vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv Prepare for use vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
684 /* Msg event queue. */
685 LINK_T rMsgEventQueue;
690 /*---------------- Messages -------------------*/
691 typedef struct _MSG_P2P_SCAN_REQUEST_T {
692 MSG_HDR_T rMsgHdr; /* Must be the first member */
693 P_P2P_SSID_STRUCT_T prSSID;
695 UINT_32 u4NumChannel;
699 RF_CHANNEL_INFO_T arChannelListInfo[1];
700 } MSG_P2P_SCAN_REQUEST_T, *P_MSG_P2P_SCAN_REQUEST_T;
702 typedef struct _MSG_P2P_CHNL_REQUEST_T {
703 MSG_HDR_T rMsgHdr; /* Must be the first member */
706 ENUM_CHNL_EXT_T eChnlSco;
707 RF_CHANNEL_INFO_T rChannelInfo;
708 } MSG_P2P_CHNL_REQUEST_T, *P_MSG_P2P_CHNL_REQUEST_T;
710 typedef struct _MSG_P2P_CHNL_ABORT_T {
711 MSG_HDR_T rMsgHdr; /* Must be the first member */
713 } MSG_P2P_CHNL_ABORT_T, *P_MSG_P2P_CHNL_ABORT_T;
716 typedef struct _MSG_P2P_CONNECTION_REQUEST_T {
717 MSG_HDR_T rMsgHdr; /* Must be the first member */
718 P2P_SSID_STRUCT_T rSsid;
719 UINT_8 aucBssid[MAC_ADDR_LEN];
720 ENUM_CHNL_EXT_T eChnlSco;
721 RF_CHANNEL_INFO_T rChannelInfo;
724 // TODO: Auth Type, OPEN, SHARED, FT, EAP...
725 } MSG_P2P_CONNECTION_REQUEST_T, *P_MSG_P2P_CONNECTION_REQUEST_T;
728 typedef struct _MSG_P2P_CONNECTION_ABORT_T {
729 MSG_HDR_T rMsgHdr; /* Must be the first member. */
730 UINT_8 aucTargetID[MAC_ADDR_LEN];
731 UINT_16 u2ReasonCode;
732 BOOLEAN fgSendDeauth;
733 } MSG_P2P_CONNECTION_ABORT_T, *P_MSG_P2P_CONNECTION_ABORT_T;
735 typedef struct _MSG_P2P_MGMT_TX_REQUEST_T {
737 P_MSDU_INFO_T prMgmtMsduInfo;
738 UINT_64 u8Cookie; /* For indication. */
739 } MSG_P2P_MGMT_TX_REQUEST_T, *P_MSG_P2P_MGMT_TX_REQUEST_T;
742 typedef struct _MSG_P2P_BEACON_UPDATE_T {
744 UINT_32 u4DtimPeriod;
745 UINT_32 u4BcnInterval;
747 UINT_32 u4BcnBodyLen;
750 UINT_8 aucBuffer[1]; /* Header & Body are put here. */
752 MSG_P2P_BEACON_UPDATE_T, *P_MSG_P2P_BEACON_UPDATE_T;
754 typedef struct _MSG_P2P_SWITCH_OP_MODE_T {
755 MSG_HDR_T rMsgHdr; /* Must be the first member */
756 ENUM_OP_MODE_T eOpMode;
757 } MSG_P2P_SWITCH_OP_MODE_T, *P_MSG_P2P_SWITCH_OP_MODE_T;
759 typedef struct _MSG_P2P_MGMT_FRAME_REGISTER_T {
760 MSG_HDR_T rMsgHdr; /* Must be the first member */
762 BOOLEAN fgIsRegister;
764 MSG_P2P_MGMT_FRAME_REGISTER_T, *P_MSG_P2P_MGMT_FRAME_REGISTER_T;
766 /*******************************************************************************
767 * F U N C T I O N D E C L A R A T I O N S
768 ********************************************************************************
775 IN P_ADAPTER_T prAdapter,
776 IN P_P2P_FSM_INFO_T prP2pFsmInfo
781 p2pFsmRunEventScanRequest(
782 IN P_ADAPTER_T prAdapter,
783 IN P_MSG_HDR_T prMsgHdr
787 p2pFsmRunEventMgmtFrameTx(
788 IN P_ADAPTER_T prAdapter,
789 IN P_MSG_HDR_T prMsgHdr
793 p2pFsmRunEventBeaconUpdate(
794 IN P_ADAPTER_T prAdapter,
795 IN P_MSG_HDR_T prMsgHdr
800 p2pFsmRunEventBeaconAbort(
801 IN P_ADAPTER_T prAdapter,
802 IN P_MSG_HDR_T prMsgHdr
806 p2pFsmRunEventChannelRequest(
807 IN P_ADAPTER_T prAdapter,
808 IN P_MSG_HDR_T prMsgHdr
813 p2pFsmRunEventChannelAbort(
814 IN P_ADAPTER_T prAdapter,
815 IN P_MSG_HDR_T prMsgHdr
820 p2pFsmRunEventDissolve(
821 IN P_ADAPTER_T prAdapter,
822 IN P_MSG_HDR_T prMsgHdr
827 p2pFsmRunEventSwitchOPMode(
828 IN P_ADAPTER_T prAdapter,
829 IN P_MSG_HDR_T prMsgHdr
834 p2pFsmRunEventMgmtFrameTxDone(
835 IN P_ADAPTER_T prAdapter,
836 IN P_MSDU_INFO_T prMsduInfo,
837 IN ENUM_TX_RESULT_CODE_T rTxDoneStatus
842 p2pFsmRunEventMgmtFrameRegister(
843 IN P_ADAPTER_T prAdapter,
844 IN P_MSG_HDR_T prMsgHdr
849 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
850 ///////////////////////////////////////////////////////////////////////////////////////
851 ///////////////////////////////////////////////////////////////////////////////////////
852 ///////////////////////////////////////////////////////////////////////////////////////
853 ///////////////////////////////////////////////////////////////////////////////////////
854 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
857 //3 /* --------------- WFA P2P DEFAULT PARAMETERS --------------- */
858 #define P2P_WILDCARD_SSID "DIRECT-"
859 #define P2P_WILDCARD_SSID_LEN 7
860 #define P2P_GROUP_ID_LEN 9
862 #define P2P_DRIVER_VERSION 2 /* Update when needed. */
864 #define P2P_DEFAULT_DEV_NAME "Wireless Client"
865 #define P2P_DEFAULT_DEV_NAME_LEN 15
866 #define P2P_DEFAULT_PRIMARY_CATEGORY_ID 10
867 #define P2P_DEFAULT_PRIMARY_SUB_CATEGORY_ID 5
868 #define P2P_DEFAULT_CONFIG_METHOD (WPS_ATTRI_CFG_METHOD_PUSH_BUTTON | WPS_ATTRI_CFG_METHOD_KEYPAD | WPS_ATTRI_CFG_METHOD_DISPLAY)
869 #define P2P_DEFAULT_LISTEN_CHANNEL 1
871 #define P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT 0 /* NOTE(Kevin): Shall <= 16 */
872 #define P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT 13
874 #define P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE 51 /* Contains 6 sub-band. */
876 #define P2P_GC_MAX_CACHED_SEC_DEV_TYPE_COUNT 8 /* NOTE(Kevin): Shall <= 16 */
878 #define P2P_MAXIMUM_CLIENT_COUNT 8
879 #define P2P_MAXIMUM_NOA_COUNT 8
882 #define P2P_MAXIMUM_ATTRIBUTE_LEN 251
884 #define P2P_CTWINDOW_DEFAULT 25 /* in TU=(1024usec) */
886 #define P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE 768
888 /* P2P 3.1.2.1.3 - Find Phase */
889 #define P2P_MAX_DISCOVERABLE_INTERVAL 8 //3//3
890 #define P2P_MIN_DISCOVERABLE_INTERVAL 5 // 1
892 #define P2P_LISTEN_SCAN_UNIT 100 // MS
894 /* FSM Time Related constrain. */
895 #define P2P_SERACH_STATE_PERIOD_MS 1000 // Deprecated.
897 #define P2P_GO_CHANNEL_STAY_INTERVAL 1000
899 #define P2P_GO_NEGO_TIMEOUT_MS 500
900 #define P2P_CONNECTION_TIMEOUT_SEC 120
902 #define P2P_INVITAION_TIMEOUT_MS 500 /* Timeout Wait Invitation Resonse. */
903 #define P2P_PROVISION_DISCOVERY_TIMEOUT_MS 500 /* Timeout Wait Provision Discovery Resonse. */
905 //3 /* --------------- WFA P2P IE --------------- */
906 /* P2P 4.1.1 - P2P IE format */
907 #define P2P_OUI_TYPE_LEN 4
908 #define P2P_IE_OUI_HDR (ELEM_HDR_LEN + P2P_OUI_TYPE_LEN) /* == OFFSET_OF(IE_P2P_T, aucP2PAttributes[0]) */
910 /* P2P 4.1.1 - General P2P Attribute */
911 #define P2P_ATTRI_HDR_LEN 3 /* ID(1 octet) + Length(2 octets) */
913 /* P2P 4.1.1 - P2P Attribute ID definitions */
914 #define P2P_ATTRI_ID_STATUS 0
915 #define P2P_ATTRI_ID_REASON_CODE 1
916 #define P2P_ATTRI_ID_P2P_CAPABILITY 2
917 #define P2P_ATTRI_ID_P2P_DEV_ID 3
918 #define P2P_ATTRI_ID_GO_INTENT 4
919 #define P2P_ATTRI_ID_CFG_TIMEOUT 5
920 #define P2P_ATTRI_ID_LISTEN_CHANNEL 6
921 #define P2P_ATTRI_ID_P2P_GROUP_BSSID 7
922 #define P2P_ATTRI_ID_EXT_LISTEN_TIMING 8
923 #define P2P_ATTRI_ID_INTENDED_P2P_IF_ADDR 9
924 #define P2P_ATTRI_ID_P2P_MANAGEABILITY 10
925 #define P2P_ATTRI_ID_CHANNEL_LIST 11
926 #define P2P_ATTRI_ID_NOTICE_OF_ABSENCE 12
927 #define P2P_ATTRI_ID_P2P_DEV_INFO 13
928 #define P2P_ATTRI_ID_P2P_GROUP_INFO 14
929 #define P2P_ATTRI_ID_P2P_GROUP_ID 15
930 #define P2P_ATTRI_ID_P2P_INTERFACE 16
931 #define P2P_ATTRI_ID_OPERATING_CHANNEL 17
932 #define P2P_ATTRI_ID_INVITATION_FLAG 18
933 #define P2P_ATTRI_ID_VENDOR_SPECIFIC 221
935 /* Maximum Length of P2P Attributes */
936 #define P2P_ATTRI_MAX_LEN_STATUS 1 /* 0 */
937 #define P2P_ATTRI_MAX_LEN_REASON_CODE 1 /* 1 */
938 #define P2P_ATTRI_MAX_LEN_P2P_CAPABILITY 2 /* 2 */
939 #define P2P_ATTRI_MAX_LEN_P2P_DEV_ID 6 /* 3 */
940 #define P2P_ATTRI_MAX_LEN_GO_INTENT 1 /* 4 */
941 #define P2P_ATTRI_MAX_LEN_CFG_TIMEOUT 2 /* 5 */
943 #define P2P_ATTRI_MAX_LEN_LISTEN_CHANNEL 5 /* 6 */
945 #define P2P_ATTRI_MAX_LEN_LISTEN_CHANNEL 5 /* 6 */
947 #define P2P_ATTRI_MAX_LEN_P2P_GROUP_BSSID 6 /* 7 */
948 #define P2P_ATTRI_MAX_LEN_EXT_LISTEN_TIMING 4 /* 8 */
949 #define P2P_ATTRI_MAX_LEN_INTENDED_P2P_IF_ADDR 6 /* 9 */
950 #define P2P_ATTRI_MAX_LEN_P2P_MANAGEABILITY 1 /* 10 */
951 //#define P2P_ATTRI_MAX_LEN_CHANNEL_LIST 3 + (n* (2 + num_of_ch)) /* 11 */
952 #define P2P_ATTRI_LEN_CHANNEL_LIST 3 /* 11 */
953 #define P2P_ATTRI_LEN_CHANNEL_ENTRY 2 /* 11 */
956 //#define P2P_ATTRI_MAX_LEN_NOTICE_OF_ABSENCE 2 + (n* (13)) /* 12 */
957 #define P2P_ATTRI_MAX_LEN_NOTICE_OF_ABSENCE (2 + (P2P_MAXIMUM_NOA_COUNT*(13))) /* 12 */
959 #define P2P_ATTRI_MAX_LEN_P2P_DEV_INFO 17 + (8 * (8)) + 36 /* 13 */
960 //#define P2P_ATTRI_MAX_LEN_P2P_GROUP_INFO n* (25 + (m* (8)) + 32) /* 14 */
961 #define P2P_ATTRI_MAX_LEN_P2P_GROUP_ID 38 /* 15 */
962 #define P2P_ATTRI_MAX_LEN_P2P_INTERFACE 253 // 7 + 6* [0~41] /* 16 */
964 #define P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL 5 /* 17 */
966 #define P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL 5 /* 17 */
968 #define P2P_ATTRI_MAX_LEN_INVITATION_FLAGS 1 /* 18 */
970 /* P2P 4.1.2 - P2P Status definitions */
971 #define P2P_STATUS_SUCCESS 0
972 #define P2P_STATUS_FAIL_INFO_IS_CURRENTLY_UNAVAILABLE 1
973 #define P2P_STATUS_FAIL_INCOMPATIBLE_PARAM 2
974 #define P2P_STATUS_FAIL_LIMIT_REACHED 3
975 #define P2P_STATUS_FAIL_INVALID_PARAM 4
976 #define P2P_STATUS_FAIL_UNABLE_ACCOMMODATE_REQ 5
977 #define P2P_STATUS_FAIL_PREVIOUS_PROTOCOL_ERR 6
978 #define P2P_STATUS_FAIL_NO_COMMON_CHANNELS 7
979 #define P2P_STATUS_FAIL_UNKNOWN_P2P_GROUP 8
980 #define P2P_STATUS_FAIL_SAME_INTENT_VALUE_15 9
981 #define P2P_STATUS_FAIL_INCOMPATIBLE_PROVISION_METHOD 10
982 #define P2P_STATUS_FAIL_REJECTED_BY_USER 11
985 /* P2P 4.1.3 - P2P Minor Reason Code definitions */
986 #define P2P_REASON_SUCCESS 0
987 #define P2P_REASON_DISASSOCIATED_DUE_CROSS_CONNECTION 1
988 #define P2P_REASON_DISASSOCIATED_DUE_UNMANAGEABLE 2
989 #define P2P_REASON_DISASSOCIATED_DUE_NO_P2P_COEXIST_PARAM 3
990 #define P2P_REASON_DISASSOCIATED_DUE_MANAGEABLE 4
993 /* P2P 4.1.4 - Device Capability Bitmap definitions */
994 #define P2P_DEV_CAPABILITY_SERVICE_DISCOVERY BIT(0)
995 #define P2P_DEV_CAPABILITY_CLIENT_DISCOVERABILITY BIT(1)
996 #define P2P_DEV_CAPABILITY_CONCURRENT_OPERATION BIT(2)
997 #define P2P_DEV_CAPABILITY_P2P_INFRA_MANAGED BIT(3)
998 #define P2P_DEV_CAPABILITY_P2P_DEVICE_LIMIT BIT(4)
999 #define P2P_DEV_CAPABILITY_P2P_INVITATION_PROCEDURE BIT(5)
1002 /* P2P 4.1.4 - Group Capability Bitmap definitions */
1003 #define P2P_GROUP_CAPABILITY_P2P_GROUP_OWNER BIT(0)
1004 #define P2P_GROUP_CAPABILITY_PERSISTENT_P2P_GROUP BIT(1)
1005 #define P2P_GROUP_CAPABILITY_P2P_GROUP_LIMIT BIT(2)
1006 #define P2P_GROUP_CAPABILITY_INTRA_BSS_DISTRIBUTION BIT(3)
1007 #define P2P_GROUP_CAPABILITY_CROSS_CONNECTION BIT(4)
1008 #define P2P_GROUP_CAPABILITY_PERSISTENT_RECONNECT BIT(5)
1009 #define P2P_GROUP_CAPABILITY_GROUP_FORMATION BIT(6)
1011 /* P2P 4.1.6 - GO Intent field definitions */
1012 #define P2P_GO_INTENT_TIE_BREAKER_FIELD BIT(0)
1013 #define P2P_GO_INTENT_VALUE_MASK BITS(1,7)
1014 #define P2P_GO_INTENT_VALUE_OFFSET 1
1016 /* P2P 4.1.12 - Manageability Bitmap definitions */
1017 #define P2P_DEVICE_MANAGEMENT BIT(0)
1019 /* P2P 4.1.14 - CTWindow and OppPS Parameters definitions */
1020 #define P2P_CTW_OPPPS_PARAM_OPPPS_FIELD BIT(7)
1021 #define P2P_CTW_OPPPS_PARAM_CTWINDOW_MASK BITS(0,6)
1024 #define ELEM_MAX_LEN_P2P_FOR_PROBE_REQ \
1025 (P2P_OUI_TYPE_LEN + \
1026 (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_CAPABILITY) + \
1027 (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_DEV_ID) + \
1028 (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_LISTEN_CHANNEL) + \
1029 (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL))
1031 #define ELEM_MAX_LEN_P2P_FOR_ASSOC_REQ \
1032 (P2P_OUI_TYPE_LEN + \
1033 (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_CAPABILITY) + \
1034 (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_EXT_LISTEN_TIMING) + \
1035 (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_DEV_INFO))
1038 /* P2P 4.1.16 - P2P Client Infor Descriptor */
1039 #define P2P_CLIENT_INFO_DESC_HDR_LEN 1 /* Length(1 octets) */
1041 /* P2P 4.1.20 - P2P Invitation Flags Attribute*/
1042 #define P2P_INVITATION_FLAGS_INVITATION_TYPE BIT(0)
1043 #define P2P_INVITATION_TYPE_INVITATION 0
1044 #define P2P_INVITATION_TYPE_REINVOKE 1
1045 //3 /* --------------- WPS Data Element Definitions --------------- */
1046 /* P2P 4.2.2 - General WSC Attribute */
1047 #define WSC_ATTRI_HDR_LEN 4 /* ID(2 octet) + Length(2 octets) */
1048 #define WSC_ATTRI_MAX_LEN_VERSION 1
1049 #define WSC_ATTRI_MAX_LEN_DEVICE_PASSWORD_ID 2
1050 #define WSC_ATTRI_LEN_CONFIG_METHOD 2
1052 /* WPS 11 - Data Element Definitions */
1053 #define WPS_ATTRI_ID_VERSION 0x104A
1054 #define WPS_ATTRI_ID_CONFIGURATION_METHODS 0x1008
1055 #define WPS_ATTRI_ID_DEVICE_PASSWORD 0x1012
1056 #define WPS_ATTRI_ID_DEVICE_NAME 0x1011
1057 #define WPS_ATTRI_ID_PRI_DEVICE_TYPE 0x1054
1058 #define WPS_ATTRI_ID_SEC_DEVICE_TYPE 0x1055
1060 #define WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE 300
1062 #define WPS_ATTRI_MAX_LEN_DEVICE_NAME 32 /* 0x1011 */
1064 #define WPS_ATTRI_CFG_METHOD_USBA BIT(0)
1065 #define WPS_ATTRI_CFG_METHOD_ETHERNET BIT(1)
1066 #define WPS_ATTRI_CFG_METHOD_LABEL BIT(2)
1067 #define WPS_ATTRI_CFG_METHOD_DISPLAY BIT(3)
1068 #define WPS_ATTRI_CFG_METHOD_EXT_NFC BIT(4)
1069 #define WPS_ATTRI_CFG_METHOD_INT_NFC BIT(5)
1070 #define WPS_ATTRI_CFG_METHOD_NFC_IF BIT(6)
1071 #define WPS_ATTRI_CFG_METHOD_PUSH_BUTTON BIT(7)
1072 #define WPS_ATTRI_CFG_METHOD_KEYPAD BIT(8)
1075 #define P2P_FLAGS_PROVISION_COMPLETE 0x00000001
1076 #define P2P_FLAGS_PROVISION_DISCOVERY_COMPLETE 0x00000002
1077 #define P2P_FLAGS_PROVISION_DISCOVERY_WAIT_RESPONSE 0x00000004
1078 #define P2P_FLAGS_PROVISION_DISCOVERY_RESPONSE_WAIT 0x00000008
1079 #define P2P_FLAGS_MASK_PROVISION 0x00000017
1080 #define P2P_FLAGS_MASK_PROVISION_COMPLETE 0x00000015
1081 #define P2P_FLAGS_PROVISION_DISCOVERY_INDICATED 0x00000010
1082 #define P2P_FLAGS_INVITATION_TOBE_GO 0x00000100
1083 #define P2P_FLAGS_INVITATION_TOBE_GC 0x00000200
1084 #define P2P_FLAGS_INVITATION_SUCCESS 0x00000400
1085 #define P2P_FLAGS_INVITATION_WAITING_TARGET 0x00000800
1086 #define P2P_FLAGS_MASK_INVITATION 0x00000F00
1087 #define P2P_FLAGS_FORMATION_ON_GOING 0x00010000
1088 #define P2P_FLAGS_FORMATION_LOCAL_PWID_RDY 0x00020000
1089 #define P2P_FLAGS_FORMATION_TARGET_PWID_RDY 0x00040000
1090 #define P2P_FLAGS_FORMATION_COMPLETE 0x00080000
1091 #define P2P_FLAGS_MASK_FORMATION 0x000F0000
1092 #define P2P_FLAGS_DEVICE_DISCOVER_REQ 0x00100000
1093 #define P2P_FLAGS_DEVICE_DISCOVER_DONE 0x00200000
1094 #define P2P_FLAGS_DEVICE_INVITATION_WAIT 0x00400000
1095 #define P2P_FLAGS_DEVICE_SERVICE_DISCOVER_WAIT 0x00800000
1096 #define P2P_FLAGS_MASK_DEVICE_DISCOVER 0x00F00000
1098 #define P2P_FLAGS_DEVICE_FORMATION_REQUEST 0x01000000
1101 /* MACRO for flag operation */
1102 #define SET_FLAGS(_FlagsVar, _BitsToSet) \
1103 (_FlagsVar) = ((_FlagsVar) | (_BitsToSet))
1105 #define TEST_FLAGS(_FlagsVar, _BitsToCheck) \
1106 (((_FlagsVar) & (_BitsToCheck)) == (_BitsToCheck))
1108 #define CLEAR_FLAGS(_FlagsVar, _BitsToClear) \
1109 (_FlagsVar) &= ~(_BitsToClear)
1113 #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_I 0
1115 #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_II 0
1117 #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_III 0
1119 #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_IV 0
1121 #define CFG_DISABLE_DELAY_PROVISION_DISCOVERY 0
1123 #define CFG_CONNECTION_POLICY_2_0 0
1125 /* Device Password ID */
1126 enum wps_dev_password_id {
1127 DEV_PW_DEFAULT = 0x0000,
1128 DEV_PW_USER_SPECIFIED = 0x0001,
1129 DEV_PW_MACHINE_SPECIFIED = 0x0002,
1130 DEV_PW_REKEY = 0x0003,
1131 DEV_PW_PUSHBUTTON = 0x0004,
1132 DEV_PW_REGISTRAR_SPECIFIED = 0x0005
1135 /*******************************************************************************
1137 ********************************************************************************
1139 #if defined(WINDOWS_DDK) || defined(WINDOWS_CE)
1143 //3 /* --------------- WFA P2P IE and Attributes --------------- */
1145 /* P2P 4.1.1 - P2P Information Element */
1146 typedef struct _IE_P2P_T {
1147 UINT_8 ucId; /* Element ID */
1148 UINT_8 ucLength; /* Length */
1149 UINT_8 aucOui[3]; /* OUI */
1150 UINT_8 ucOuiType; /* OUI Type */
1151 UINT_8 aucP2PAttributes[1]; /* P2P Attributes */
1152 } __KAL_ATTRIB_PACKED__ IE_P2P_T, *P_IE_P2P_T;
1154 /* P2P 4.1.1 - General P2P Attribute */
1155 typedef struct _P2P_ATTRIBUTE_T {
1156 UINT_8 ucId; /* Attribute ID */
1157 UINT_16 u2Length; /* Length */
1158 UINT_8 aucBody[1]; /* Body field */
1159 } __KAL_ATTRIB_PACKED__ P2P_ATTRIBUTE_T, *P_P2P_ATTRIBUTE_T;
1162 /* P2P 4.1.2 - P2P Status Attribute */
1163 typedef struct _P2P_ATTRI_STATUS_T {
1164 UINT_8 ucId; /* Attribute ID */
1165 UINT_16 u2Length; /* Length */
1166 UINT_8 ucStatusCode; /* Status Code */
1167 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_STATUS_T, *P_P2P_ATTRI_STATUS_T;
1170 /* P2P 4.1.3 - P2P Minor Reason Code Attribute */
1171 typedef struct _P2P_ATTRI_REASON_T {
1172 UINT_8 ucId; /* Attribute ID */
1173 UINT_16 u2Length; /* Length */
1174 UINT_8 ucMinorReasonCode; /* Minor Reason Code */
1175 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_REASON_T, *P_P2P_ATTRI_REASON_T;
1178 /* P2P 4.1.4 - P2P Capability Attribute */
1179 typedef struct _P2P_ATTRI_CAPABILITY_T {
1180 UINT_8 ucId; /* Attribute ID */
1181 UINT_16 u2Length; /* Length */
1182 UINT_8 ucDeviceCap; /* Device Capability Bitmap */
1183 UINT_8 ucGroupCap; /* Group Capability Bitmap */
1184 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CAPABILITY_T, *P_P2P_ATTRI_CAPABILITY_T;
1187 /* P2P 4.1.5 - P2P Device ID Attribute */
1188 typedef struct _P2P_ATTRI_DEV_ID_T {
1189 UINT_8 ucId; /* Attribute ID */
1190 UINT_16 u2Length; /* Length */
1191 UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
1192 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_DEV_ID_T, *P_P2P_ATTRI_DEV_ID_T;
1195 /* P2P 4.1.6 - Group Owner Intent Attribute */
1196 typedef struct _P2P_ATTRI_GO_INTENT_T {
1197 UINT_8 ucId; /* Attribute ID */
1198 UINT_16 u2Length; /* Length */
1199 UINT_8 ucGOIntent; /* Group Owner Intent */
1200 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GO_INTENT_T, *P_P2P_ATTRI_GO_INTENT_T;
1203 /* P2P 4.1.7 - Configuration Timeout Attribute */
1204 typedef struct _P2P_ATTRI_CFG_TIMEOUT_T {
1205 UINT_8 ucId; /* Attribute ID */
1206 UINT_16 u2Length; /* Length */
1207 UINT_8 ucGOCfgTimeout; /* GO Configuration Timeout */
1208 UINT_8 ucClientCfgTimeout; /* Client Configuration Timeout */
1209 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CFG_TIMEOUT_T, *P_P2P_ATTRI_CFG_TIMEOUT_T;
1212 /* P2P 4.1.8 - Listen Channel Attribute */
1213 typedef struct _P2P_ATTRI_LISTEN_CHANNEL_T {
1214 UINT_8 ucId; /* Attribute ID */
1215 UINT_16 u2Length; /* Length */
1216 UINT_8 aucCountryString[3]; /* Country String */
1217 UINT_8 ucOperatingClass; /* Operating Class from 802.11 Annex J/P802.11 REVmb 3.0 */
1218 UINT_8 ucChannelNumber; /* Channel Number */
1219 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_LISTEN_CHANNEL_T, *P_P2P_ATTRI_LISTEN_CHANNEL_T;
1222 /* P2P 4.1.9 - P2P Group BSSID Attribute */
1223 typedef struct _P2P_ATTRI_GROUP_BSSID_T {
1224 UINT_8 ucId; /* Attribute ID */
1225 UINT_16 u2Length; /* Length */
1226 UINT_8 aucBssid[MAC_ADDR_LEN]; /* P2P Group BSSID */
1227 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_BSSID_T, *P_P2P_ATTRI_GROUP_BSSID_T;
1230 /* P2P 4.1.10 - Extended Listen Timing Attribute */
1231 typedef struct _P2P_ATTRI_EXT_LISTEN_TIMING_T {
1232 UINT_8 ucId; /* Attribute ID */
1233 UINT_16 u2Length; /* Length */
1234 UINT_16 u2AvailPeriod; /* Availability Period */
1235 UINT_16 u2AvailInterval; /* Availability Interval */
1236 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_EXT_LISTEN_TIMING_T, *P_P2P_ATTRI_EXT_LISTEN_TIMING_T;
1239 /* P2P 4.1.11 - Intended P2P Interface Address Attribute */
1240 typedef struct _P2P_ATTRI_INTENDED_IF_ADDR_T {
1241 UINT_8 ucId; /* Attribute ID */
1242 UINT_16 u2Length; /* Length */
1243 UINT_8 aucIfAddr[MAC_ADDR_LEN];/* P2P Interface Address */
1244 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INTENDED_IF_ADDR_T, *P_P2P_ATTRI_INTENDED_IF_ADDR_T;
1247 /* P2P 4.1.12 - P2P Manageability Attribute */
1248 typedef struct _P2P_ATTRI_MANAGEABILITY_T {
1249 UINT_8 ucId; /* Attribute ID */
1250 UINT_16 u2Length; /* Length */
1251 UINT_8 ucManageability; /* P2P Manageability Bitmap */
1252 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_MANAGEABILITY_T, *P_P2P_ATTRI_MANAGEABILITY_T;
1255 /* P2P 4.1.13 - Channel List Attribute */
1256 typedef struct _P2P_ATTRI_CHANNEL_LIST_T {
1257 UINT_8 ucId; /* Attribute ID */
1258 UINT_16 u2Length; /* Length */
1259 UINT_8 aucCountryString[3]; /* Country String */
1260 UINT_8 aucChannelEntry[1]; /* Channel Entry List */
1261 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CHANNEL_T, *P_P2P_ATTRI_CHANNEL_T;
1263 typedef struct _CHANNEL_ENTRY_FIELD_T {
1264 UINT_8 ucRegulatoryClass; /* Regulatory Class */
1265 UINT_8 ucNumberOfChannels; /* Number Of Channels */
1266 UINT_8 aucChannelList[1]; /* Channel List */
1267 } __KAL_ATTRIB_PACKED__ CHANNEL_ENTRY_FIELD_T, *P_CHANNEL_ENTRY_FIELD_T;
1270 /* P2P 4.1.14 - Notice of Absence Attribute */
1271 typedef struct _P2P_ATTRI_NOA_T {
1272 UINT_8 ucId; /* Attribute ID */
1273 UINT_16 u2Length; /* Length */
1274 UINT_8 ucIndex; /* Index */
1275 UINT_8 ucCTWOppPSParam; /* CTWindow and OppPS Parameters */
1276 UINT_8 aucNoADesc[1]; /* NoA Descriptor */
1277 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_NOA_T, *P_P2P_ATTRI_NOA_T;
1279 typedef struct _NOA_DESCRIPTOR_T {
1280 UINT_8 ucCountType; /* Count/Type */
1281 UINT_32 u4Duration; /* Duration */
1282 UINT_32 u4Interval; /* Interval */
1283 UINT_32 u4StartTime; /* Start Time */
1284 } __KAL_ATTRIB_PACKED__ NOA_DESCRIPTOR_T, *P_NOA_DESCRIPTOR_T;
1286 typedef struct _P2P_ATTRI_DEV_INFO_T {
1287 UINT_8 ucId; /* Attribute ID */
1288 UINT_16 u2Length; /* Length */
1289 UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
1290 UINT_16 u2ConfigMethodsBE; /* Config Method */
1291 DEVICE_TYPE_T rPrimaryDevTypeBE; /* Primary Device Type */
1292 UINT_8 ucNumOfSecondaryDevType; /* Number of Secondary Device Types */
1293 DEVICE_TYPE_T arSecondaryDevTypeListBE[1]; /* Secondary Device Type List */
1294 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_DEV_INFO_T, *P_P2P_ATTRI_DEV_INFO_T;
1296 /* WPS 7.1 & 11 WPS TLV Data Format - Device Name */
1297 typedef struct _DEVICE_NAME_TLV_T {
1298 UINT_16 u2Id; /* WPS Attribute Type */
1299 UINT_16 u2Length; /* Data Length */
1300 UINT_8 aucName[32]; /* Device Name */ // TODO: Fixme
1301 } __KAL_ATTRIB_PACKED__ DEVICE_NAME_TLV_T, *P_DEVICE_NAME_TLV_T;
1304 /* P2P 4.1.16 - P2P Group Info Attribute */
1305 typedef struct _P2P_CLIENT_INFO_DESC_T {
1306 UINT_8 ucLength; /* Length */
1307 UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
1308 UINT_8 aucIfAddr[MAC_ADDR_LEN]; /* P2P Interface Address */
1309 UINT_8 ucDeviceCap; /* Device Capability Bitmap */
1310 UINT_16 u2ConfigMethodsBE; /* Config Method */
1311 DEVICE_TYPE_T rPrimaryDevTypeBE; /* Primary Device Type */
1312 UINT_8 ucNumOfSecondaryDevType; /* Number of Secondary Device Types */
1313 DEVICE_TYPE_T arSecondaryDevTypeListBE[1]; /* Secondary Device Type List */
1314 } __KAL_ATTRIB_PACKED__ P2P_CLIENT_INFO_DESC_T, *P_P2P_CLIENT_INFO_DESC_T;
1316 typedef struct _P2P_ATTRI_GROUP_INFO_T {
1317 UINT_8 ucId; /* Attribute ID */
1318 UINT_16 u2Length; /* Length */
1319 P2P_CLIENT_INFO_DESC_T arClientDesc[1]; /* P2P Client Info Descriptors */
1320 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_INFO_T, *P_P2P_ATTRI_GROUP_INFO_T;
1323 /* P2P 4.1.17 - P2P Group ID Attribute */
1324 typedef struct _P2P_ATTRI_GROUP_ID_T {
1325 UINT_8 ucId; /* Attribute ID */
1326 UINT_16 u2Length; /* Length */
1327 UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
1328 UINT_8 aucSSID[ELEM_MAX_LEN_SSID]; /* SSID */
1329 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_ID_T, *P_P2P_ATTRI_GROUP_ID_T;
1332 /* P2P 4.1.18 - P2P Interface Attribute */
1333 typedef struct _P2P_ATTRI_INTERFACE_T {
1334 UINT_8 ucId; /* Attribute ID */
1335 UINT_16 u2Length; /* Length */
1336 UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
1337 UINT_8 ucIfAddrCount; /* P2P Interface Address Count */
1338 UINT_8 aucIfAddrList[MAC_ADDR_LEN];/* P2P Interface Address List */
1339 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INTERFACE_T, *P_P2P_ATTRI_INTERFACE_T;
1342 /* P2P 4.1.19 - Operating Channel Attribute */
1343 typedef struct _P2P_ATTRI_OPERATING_CHANNEL_T {
1344 UINT_8 ucId; /* Attribute ID */
1345 UINT_16 u2Length; /* Length */
1346 UINT_8 aucCountryString[3]; /* Country String */
1347 UINT_8 ucOperatingClass; /* Operating Class from 802.11 Annex J/P802.11 REVmb 3.0 */
1348 UINT_8 ucChannelNumber; /* Channel Number */
1349 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_OPERATING_CHANNEL_T, *P_P2P_ATTRI_OPERATING_CHANNEL_T;
1351 /* P2P 4.1.20 - Invitation Flags Attribute */
1352 typedef struct _P2P_ATTRI_INVITATION_FLAG_T {
1353 UINT_8 ucId; /* Attribute ID */
1354 UINT_16 u2Length; /* Length */
1355 UINT_8 ucInviteFlagsBitmap; /* Invitation Flags Bitmap */
1356 } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INVITATION_FLAG_T, *P_P2P_ATTRI_INVITATION_FLAG_T;
1360 /* P2P 4.1.1 - General WSC Attribute */
1361 typedef struct _WSC_ATTRIBUTE_T {
1362 UINT_16 u2Id; /* Attribute ID */
1363 UINT_16 u2Length; /* Length */
1364 UINT_8 aucBody[1]; /* Body field */
1365 } __KAL_ATTRIB_PACKED__ WSC_ATTRIBUTE_T, *P_WSC_ATTRIBUTE_T;
1367 /* WSC 1.0 Table 28 */
1368 typedef struct _WSC_ATTRI_VERSION_T {
1369 UINT_16 u2Id; /* Attribute ID */
1370 UINT_16 u2Length; /* Length */
1371 UINT_8 ucVersion; /* Version 1.0 or 1.1 */
1372 } __KAL_ATTRIB_PACKED__ WSC_ATTRI_VERSION_T, *P_WSC_ATTRI_VERSION_T;
1374 typedef struct _WSC_ATTRI_DEVICE_PASSWORD_ID_T {
1375 UINT_16 u2Id; /* Attribute ID */
1376 UINT_16 u2Length; /* Length */
1377 UINT_16 u2DevPasswordId; /* Device Password ID */
1378 } __KAL_ATTRIB_PACKED__ WSC_ATTRI_DEVICE_PASSWORD_ID_T, *P_WSC_ATTRI_DEVICE_PASSWORD_ID_T;
1381 typedef struct _WSC_ATTRI_CONFIGURATION_METHOD_T {
1382 UINT_16 u2Id; /* Attribute ID */
1383 UINT_16 u2Length; /* Length */
1384 UINT_16 u2ConfigMethods; /* Configure Methods */
1385 } __KAL_ATTRIB_PACKED__ WSC_ATTRI_CONFIGURATION_METHOD_T, *P_WSC_ATTRI_CONFIGURATION_METHOD_T;
1389 #if defined(WINDOWS_DDK) || defined(WINDOWS_CE)
1394 //3 /* --------------- WFA P2P Attributes Handler prototype --------------- */
1395 typedef UINT_32 (*PFN_APPEND_ATTRI_FUNC)(P_ADAPTER_T, BOOLEAN, PUINT_16, PUINT_8, UINT_16);
1397 typedef VOID (*PFN_HANDLE_ATTRI_FUNC)(P_SW_RFB_T, P_P2P_ATTRIBUTE_T);
1399 typedef VOID (*PFN_VERIFY_ATTRI_FUNC)(P_SW_RFB_T, P_P2P_ATTRIBUTE_T, PUINT_16);
1401 typedef UINT_32 (*PFN_CALCULATE_VAR_ATTRI_LEN_FUNC)(P_ADAPTER_T, P_STA_RECORD_T);
1404 typedef struct _APPEND_VAR_ATTRI_ENTRY_T {
1405 UINT_16 u2EstimatedFixedAttriLen; /* For fixed length */
1406 PFN_CALCULATE_VAR_ATTRI_LEN_FUNC pfnCalculateVariableAttriLen;
1407 PFN_APPEND_ATTRI_FUNC pfnAppendAttri;
1408 } APPEND_VAR_ATTRI_ENTRY_T, *P_APPEND_VAR_ATTRI_ENTRY_T;
1410 typedef enum _ENUM_CONFIG_METHOD_SEL {
1411 ENUM_CONFIG_METHOD_SEL_AUTO,
1412 ENUM_CONFIG_METHOD_SEL_USER,
1413 ENUM_CONFIG_METHOD_SEL_NUM
1414 } ENUM_CONFIG_METHOD_SEL, *P_ENUM_CONFIG_METHOD_SEL;
1416 typedef enum _ENUM_P2P_FORMATION_POLICY {
1417 ENUM_P2P_FORMATION_POLICY_AUTO = 0,
1418 ENUM_P2P_FORMATION_POLICY_PASSIVE, /* Device would wait GO NEGO REQ instead of sending it actively. */
1419 ENUM_P2P_FORMATION_POLICY_NUM
1420 } ENUM_P2P_FORMATION_POLICY, P_ENUM_P2P_FORMATION_POLICY;
1422 typedef enum _ENUM_P2P_INVITATION_POLICY {
1423 ENUM_P2P_INVITATION_POLICY_USER = 0,
1424 ENUM_P2P_INVITATION_POLICY_ACCEPT_FIRST,
1425 ENUM_P2P_INVITATION_POLICY_DENY_ALL,
1426 ENUM_P2P_INVITATION_POLICY_NUM
1427 } ENUM_P2P_INVITATION_POLICY, P_ENUM_P2P_INVITATION_POLICY;
1429 //3 /* --------------- Data Structure for P2P Operation --------------- */
1430 //3 /* Session for CONNECTION SETTINGS of P2P */
1431 struct _P2P_CONNECTION_SETTINGS_T {
1432 UINT_8 ucDevNameLen;
1433 UINT_8 aucDevName[WPS_ATTRI_MAX_LEN_DEVICE_NAME];
1435 DEVICE_TYPE_T rPrimaryDevTypeBE;
1437 ENUM_P2P_FORMATION_POLICY eFormationPolicy; /* Formation Policy. */
1439 /*------------WSC Related Param---------------*/
1440 UINT_16 u2ConfigMethodsSupport; /* Prefered configure method.
1441 * Some device may not have keypad.
1443 ENUM_CONFIG_METHOD_SEL eConfigMethodSelType;
1444 UINT_16 u2TargetConfigMethod; /* Configure method selected by user or auto. */
1445 UINT_16 u2LocalConfigMethod; /* Configure method of target. */
1446 BOOLEAN fgIsPasswordIDRdy;
1447 /*------------WSC Related Param---------------*/
1449 UINT_8 ucClientConfigTimeout;
1450 UINT_8 ucGoConfigTimeout;
1452 UINT_8 ucSecondaryDevTypeCount;
1453 #if P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT
1454 DEVICE_TYPE_T arSecondaryDevTypeBE[P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT];
1459 UINT_8 ucRfChannelListCount;
1460 #if P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT
1461 UINT_8 aucChannelList[P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT]; /* Channel Numbering depends on 802.11mb Annex J. */
1465 UINT_8 ucRfChannelListSize;
1466 #if P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE
1467 UINT_8 aucChannelEntriesField[P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE];
1472 UINT_8 ucTieBreaker;
1475 /* For Device Capability */
1476 BOOLEAN fgSupportServiceDiscovery;
1477 BOOLEAN fgSupportClientDiscoverability;
1478 BOOLEAN fgSupportConcurrentOperation;
1479 BOOLEAN fgSupportInfraManaged;
1480 BOOLEAN fgSupportInvitationProcedure;
1482 /* For Group Capability */
1483 BOOLEAN fgSupportPersistentP2PGroup;
1484 BOOLEAN fgSupportIntraBSSDistribution;
1485 BOOLEAN fgSupportCrossConnection;
1486 BOOLEAN fgSupportPersistentReconnect;
1488 BOOLEAN fgP2pGroupLimit;
1490 BOOLEAN fgSupportOppPS;
1493 BOOLEAN fgIsScanReqIssued;
1494 BOOLEAN fgIsServiceDiscoverIssued;
1497 /*============ Target Device Connection Settings ============*/
1499 /* Discover Target Device Info. */
1501 BOOLEAN fgIsDevType;
1503 /* Encryption mode of Target Device */
1504 ENUM_PARAM_AUTH_MODE_T eAuthMode;
1507 * 1. AP Mode, this is the desired SSID user specified.
1508 * 2. Client Mode, this is the target SSID to be connected to.
1510 UINT_8 aucSSID[ELEM_MAX_LEN_SSID];
1513 /* Operating channel requested. */
1514 UINT_8 ucOperatingChnl;
1517 /* Linten channel requested. */
1518 UINT_8 ucListenChnl;
1520 /* For device discover address/type. */
1521 UINT_8 aucTargetDevAddr[MAC_ADDR_LEN]; /* P2P Device Address, for P2P Device Discovery & P2P Connection. */
1523 #if CFG_ENABLE_WIFI_DIRECT
1524 P_P2P_DEVICE_DESC_T prTargetP2pDesc;
1527 UINT_8 ucLastStatus; /* P2P FSM would append status attribute according to this field. */
1530 #if !CFG_DISABLE_DELAY_PROVISION_DISCOVERY
1531 UINT_8 ucLastDialogToken;
1532 UINT_8 aucIndicateDevAddr[MAC_ADDR_LEN];
1536 UINT_8 ucTargetRfChannelListCount;
1537 #if P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT
1538 UINT_8 aucTargetChannelList[P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT]; /* Channel Numbering depends on 802.11mb Annex J. */
1545 typedef struct _NOA_TIMING_T {
1546 BOOLEAN fgIsInUse; /* Indicate if this entry is in use or not */
1547 UINT_8 ucCount; /* Count */
1549 UINT_8 aucReserved[2];
1551 UINT_32 u4Duration; /* Duration */
1552 UINT_32 u4Interval; /* Interval */
1553 UINT_32 u4StartTime; /* Start Time */
1554 } NOA_TIMING_T, *P_NOA_TIMING_T;
1556 typedef enum _ENUM_P2P_IOCTL_T {
1558 P2P_IOCTL_DEV_DISCOVER,
1559 P2P_IOCTL_INVITATION_REQ,
1560 P2P_IOCTL_SERV_DISCOVER,
1567 /*---------------- Service Discovery Related -------------------*/
1568 typedef enum _ENUM_SERVICE_TX_TYPE_T {
1569 ENUM_SERVICE_TX_TYPE_BY_DA,
1570 ENUM_SERVICE_TX_TYPE_BY_CHNL,
1571 ENUM_SERVICE_TX_TYPE_NUM
1572 } ENUM_SERVICE_TX_TYPE_T;
1575 typedef struct _SERVICE_DISCOVERY_FRAME_DATA_T {
1576 QUE_ENTRY_T rQueueEntry;
1577 P_MSDU_INFO_T prSDFrame;
1578 ENUM_SERVICE_TX_TYPE_T eServiceType;
1582 UINT_8 ucChannelNum;
1583 UINT_8 aucPeerAddr[MAC_ADDR_LEN];
1585 BOOLEAN fgIsTxDoneIndicate;
1586 } SERVICE_DISCOVERY_FRAME_DATA_T, *P_SERVICE_DISCOVERY_FRAME_DATA_T;
1591 struct _P2P_FSM_INFO_T_DEPRECATED {
1593 ENUM_P2P_STATE_T eCurrentState;
1596 BOOLEAN fgIsChannelRequested;
1607 ENUM_P2P_STATE_T ePreviousState;
1609 ENUM_P2P_STATE_T eReturnState; /* Return state after current activity finished or abort. */
1611 UINT_8 aucTargetIfAddr[PARAM_MAC_ADDR_LEN];
1612 P_BSS_DESC_T prTargetBss; /* BSS of target P2P Device. For Connection/Service Discovery */
1614 P_STA_RECORD_T prTargetStaRec;
1616 BOOLEAN fgIsRsponseProbe; /* Indicate if P2P FSM can response probe request frame. */
1618 /* Sequence number of requested message. */
1619 UINT_8 ucSeqNumOfReqMsg; /* Used for SAA FSM request message. */
1621 /* Channel Privilege */
1622 UINT_8 ucSeqNumOfChReq; /* Used for Channel Request message. */
1625 UINT_8 ucSeqNumOfScnMsg; /* Used for SCAN FSM request message. */
1626 UINT_8 ucSeqNumOfCancelMsg;
1628 UINT_8 ucDialogToken;
1629 UINT_8 ucRxDialogToken;
1632 TIMER_T rDeviceDiscoverTimer; /* For device discovery time of each discovery request from user.*/
1633 TIMER_T rOperationListenTimer; /* For Find phase under operational state. */
1634 TIMER_T rFSMTimer; /* A timer used for Action frame timeout usage. */
1636 TIMER_T rRejoinTimer; /* A timer used for Action frame timeout usage. */
1639 /* Flag to indicate Provisioning */
1640 BOOLEAN fgIsConnectionRequested;
1642 /* Current IOCTL. */
1643 ENUM_P2P_IOCTL_T eP2pIOCTL;
1645 UINT_8 ucAvailableAuthTypes; /* Used for AUTH_MODE_AUTO_SWITCH */
1647 /*--------SERVICE DISCOVERY--------*/
1648 QUE_T rQueueGASRx; /* Input Request/Response. */
1649 QUE_T rQueueGASTx; /* Output Response. */
1650 P_SERVICE_DISCOVERY_FRAME_DATA_T prSDRequest;
1651 UINT_8 ucVersionNum; /* GAS packet sequence number for...Action Frame? */
1652 UINT_8 ucGlobalSeqNum; /* Sequence Number of RX SD packet. */
1653 /*--------Service DISCOVERY--------*/
1655 /*--------DEVICE DISCOVERY---------*/
1656 UINT_8 aucTargetGroupID[PARAM_MAC_ADDR_LEN];
1657 UINT_16 u2TargetGroupSsidLen;
1658 UINT_8 aucTargetSsid[32];
1659 UINT_8 aucSearchingP2pDevice[PARAM_MAC_ADDR_LEN];
1661 /*----------------------------------*/
1663 /* Indicating Peer Status. */
1666 /*Indicating current running mode.*/
1670 /*------------INVITATION------------*/
1671 ENUM_P2P_INVITATION_POLICY eInvitationRspPolicy;
1672 /*----------------------------------*/
1678 struct _P2P_SPECIFIC_BSS_INFO_T {
1679 /* For GO(AP) Mode - Compose TIM IE */
1680 UINT_16 u2SmallestAID;
1681 UINT_16 u2LargestAID;
1682 UINT_8 ucBitmapCtrl;
1683 //UINT_8 aucPartialVirtualBitmap[MAX_LEN_TIM_PARTIAL_BMP];
1685 /* For GC/GO OppPS */
1686 BOOLEAN fgEnableOppPS;
1691 UINT_8 ucNoATimingCount; /* Number of NoA Timing */
1692 NOA_TIMING_T arNoATiming[P2P_MAXIMUM_NOA_COUNT];
1694 BOOLEAN fgIsNoaAttrExisted;
1696 /* For P2P Device */
1697 UINT_8 ucRegClass; /* Regulatory Class for channel. */
1698 UINT_8 ucListenChannel; /* Linten Channel only on channels 1, 6 and 11 in the 2.4 GHz. */
1700 UINT_8 ucPreferredChannel; /* Operating Channel, should be one of channel list in p2p connection settings. */
1701 ENUM_CHNL_EXT_T eRfSco;
1702 ENUM_BAND_T eRfBand;
1704 /* Extened Listen Timing. */
1705 UINT_16 u2AvailabilityPeriod;
1706 UINT_16 u2AvailabilityInterval;
1708 UINT_16 u2AttributeLen;
1709 UINT_8 aucAttributesCache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
1711 UINT_16 u2WscAttributeLen;
1712 UINT_8 aucWscAttributesCache[WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
1714 UINT_8 aucGroupID[MAC_ADDR_LEN];
1715 UINT_16 u2GroupSsidLen;
1716 UINT_8 aucGroupSsid[ELEM_MAX_LEN_SSID];
1718 PARAM_CUSTOM_NOA_PARAM_STRUC_T rNoaParam;
1719 PARAM_CUSTOM_OPPPS_PARAM_STRUC_T rOppPsParam;
1729 typedef struct _MSG_P2P_DEVICE_DISCOVER_T {
1730 MSG_HDR_T rMsgHdr; /* Must be the first member */
1731 UINT_32 u4DevDiscoverTime; /* 0: Infinite, 1~X: in unit of MS. */
1732 BOOLEAN fgIsSpecificType;
1733 #if CFG_ENABLE_WIFI_DIRECT
1734 P2P_DEVICE_TYPE_T rTargetDeviceType;
1736 UINT_8 aucTargetDeviceID[MAC_ADDR_LEN];
1737 } MSG_P2P_DEVICE_DISCOVER_T, *P_MSG_P2P_DEVICE_DISCOVER_T;
1741 typedef struct _MSG_P2P_INVITATION_REQUEST_T {
1742 MSG_HDR_T rMsgHdr; /* Must be the first member */
1743 UINT_8 aucDeviceID[MAC_ADDR_LEN]; /* Target Device ID to be invited. */
1744 } MSG_P2P_INVITATION_REQUEST_T, *P_MSG_P2P_INVITATION_REQUEST_T;
1746 typedef struct _MSG_P2P_FUNCTION_SWITCH_T {
1747 MSG_HDR_T rMsgHdr; /* Must be the first member */
1749 } MSG_P2P_FUNCTION_SWITCH_T, *P_MSG_P2P_FUNCTION_SWITCH_T;
1751 typedef struct _MSG_P2P_SERVICE_DISCOVERY_REQUEST_T {
1752 MSG_HDR_T rMsgHdr; /* Must be the first member */
1753 UINT_8 aucDeviceID[MAC_ADDR_LEN];
1754 BOOLEAN fgNeedTxDoneIndicate;
1756 } MSG_P2P_SERVICE_DISCOVERY_REQUEST_T, *P_MSG_P2P_SERVICE_DISCOVERY_REQUEST_T;
1760 /*******************************************************************************
1761 * P U B L I C D A T A
1762 ********************************************************************************
1765 /*******************************************************************************
1766 * P R I V A T E D A T A
1767 ********************************************************************************
1770 /*******************************************************************************
1772 ********************************************************************************
1774 #define p2pChangeMediaState(_prAdapter, _eNewMediaState) \
1775 (_prAdapter->rWifiVar.arBssInfo[NETWORK_TYPE_P2P_INDEX].eConnectionState = (_eNewMediaState));
1777 #define ATTRI_ID(_fp) (((P_P2P_ATTRIBUTE_T) _fp)->ucId)
1778 #define ATTRI_LEN(_fp) \
1779 (((UINT_16) ((PUINT_8)&((P_P2P_ATTRIBUTE_T) _fp)->u2Length)[0]) | \
1780 ((UINT_16) ((PUINT_8)&((P_P2P_ATTRIBUTE_T) _fp)->u2Length)[1] << 8))
1783 #define ATTRI_SIZE(_fp) (P2P_ATTRI_HDR_LEN + ATTRI_LEN(_fp))
1785 #define ATTRI_FOR_EACH(_pucAttriBuf, _u2AttriBufLen, _u2Offset) \
1786 for ((_u2Offset) = 0; ((_u2Offset) < (_u2AttriBufLen)); \
1787 (_u2Offset) += ATTRI_SIZE(_pucAttriBuf), ((_pucAttriBuf) += ATTRI_SIZE(_pucAttriBuf)) )
1790 #define P2P_IE(_fp) ((P_IE_P2P_T) _fp)
1793 #define WSC_ATTRI_ID(_fp) \
1794 (((UINT_16) ((PUINT_8)&((P_WSC_ATTRIBUTE_T) _fp)->u2Id)[0] << 8) | \
1795 ((UINT_16) ((PUINT_8)&((P_WSC_ATTRIBUTE_T) _fp)->u2Id)[1]))
1797 #define WSC_ATTRI_LEN(_fp) \
1798 (((UINT_16) ((PUINT_8)&((P_WSC_ATTRIBUTE_T) _fp)->u2Length)[0] << 8) | \
1799 ((UINT_16) ((PUINT_8)&((P_WSC_ATTRIBUTE_T) _fp)->u2Length)[1]))
1802 #define WSC_ATTRI_SIZE(_fp) (WSC_ATTRI_HDR_LEN + WSC_ATTRI_LEN(_fp))
1804 #define WSC_ATTRI_FOR_EACH(_pucAttriBuf, _u2AttriBufLen, _u2Offset) \
1805 for ((_u2Offset) = 0; ((_u2Offset) < (_u2AttriBufLen)); \
1806 (_u2Offset) += WSC_ATTRI_SIZE(_pucAttriBuf), ((_pucAttriBuf) += WSC_ATTRI_SIZE(_pucAttriBuf)) )
1808 #define WSC_IE(_fp) ((P_IE_P2P_T) _fp)
1813 #define ASSERT_BREAK(_exp) \
1822 #define ASSERT_BREAK(_exp)
1826 /*******************************************************************************
1827 * F U N C T I O N D E C L A R A T I O N S
1828 ********************************************************************************
1831 /*======P2P State======*/
1833 p2pStateInit_LISTEN(
1834 IN P_ADAPTER_T prAdapter,
1835 IN P_P2P_FSM_INFO_T prP2pFsmInfo,
1836 IN P_P2P_SPECIFIC_BSS_INFO_T prSP2pBssInfo,
1837 IN UINT_8 ucListenChannel
1841 p2pStateAbort_LISTEN(
1842 IN P_ADAPTER_T prAdapter,
1843 IN BOOLEAN fgIsChannelExtenstion
1847 p2pStateAbort_SEARCH_SCAN(
1848 IN P_ADAPTER_T prAdapter,
1849 IN BOOLEAN fgIsChannelExtenstion
1853 p2pStateAbort_GO_OPERATION(
1854 IN P_ADAPTER_T prAdapter
1858 p2pStateAbort_GC_OPERATION(
1859 IN P_ADAPTER_T prAdapter
1863 p2pStateInit_CONFIGURATION(
1864 IN P_ADAPTER_T prAdapter,
1865 IN P_P2P_FSM_INFO_T prP2pFsmInfo,
1866 IN P_BSS_INFO_T prP2pBssInfo,
1867 IN P_P2P_SPECIFIC_BSS_INFO_T prP2pSpecBssInfo
1871 p2pStateAbort_CONFIGURATION(
1872 IN P_ADAPTER_T prAdapter
1877 IN P_ADAPTER_T prAdapter
1882 IN P_ADAPTER_T prAdapter
1885 /*====== P2P Functions ======*/
1890 IN P_ADAPTER_T prAdapter
1899 IN P_ADAPTER_T prAdapter,
1900 IN P_STA_RECORD_T prStaRec,
1901 IN BOOLEAN fgSendDeauth,
1902 IN UINT_16 u2ReasonCode
1906 p2pFuncSwitchOPMode(
1907 IN P_ADAPTER_T prAdapter,
1908 IN P_BSS_INFO_T prP2pBssInfo,
1909 IN ENUM_OP_MODE_T eOpMode,
1910 IN BOOLEAN fgSyncToFW
1914 p2pFuncRunEventProvisioningComplete(
1915 IN P_ADAPTER_T prAdapter,
1916 IN P_MSG_HDR_T prMsgHdr
1921 IN P_ADAPTER_T prAdapter,
1922 IN PUINT_8 pucGroupID,
1929 p2pFuncSendDeviceDiscoverabilityReqFrame(
1930 IN P_ADAPTER_T prAdapter,
1931 IN UINT_8 aucDestAddr[],
1932 IN UINT_8 ucDialogToken
1936 p2pFuncSendDeviceDiscoverabilityRspFrame(
1937 IN P_ADAPTER_T prAdapter,
1938 IN UINT_8 aucDestAddr[],
1939 IN UINT_8 ucDialogToken
1944 p2pFuncGetVersionNumOfSD(
1945 IN P_ADAPTER_T prAdapter
1948 /*====== P2P FSM ======*/
1950 p2pFsmRunEventConnectionRequest(
1951 IN P_ADAPTER_T prAdapter,
1952 IN P_MSG_HDR_T prMsgHdr
1956 p2pFsmRunEventDeviceDiscoveryRequest(
1957 IN P_ADAPTER_T prAdapter,
1958 IN P_MSG_HDR_T prMsgHdr
1962 p2pFsmRunEventDeviceDiscoveryAbort(
1963 IN P_ADAPTER_T prAdapter,
1964 IN P_MSG_HDR_T prMsgHdr
1968 p2pFsmRunEventRxGroupNegotiationReqFrame(
1969 IN P_ADAPTER_T prAdapter,
1970 IN P_SW_RFB_T prSwRfb
1974 p2pFsmRunEventGroupNegotiationRequestTxDone(
1975 IN P_ADAPTER_T prAdapter,
1976 IN P_MSDU_INFO_T prMsduInfo,
1977 IN ENUM_TX_RESULT_CODE_T rTxDoneStatus
1981 p2pFsmRunEventGroupNegotiationResponseTxDone(
1982 IN P_ADAPTER_T prAdapter,
1983 IN P_MSDU_INFO_T prMsduInfo,
1984 IN ENUM_TX_RESULT_CODE_T rTxDoneStatus
1988 p2pFsmRunEventGroupNegotiationConfirmTxDone(
1989 IN P_ADAPTER_T prAdapter,
1990 IN P_MSDU_INFO_T prMsduInfo,
1991 IN ENUM_TX_RESULT_CODE_T rTxDoneStatus
1995 p2pFsmRunEventProvisionDiscoveryRequestTxDone(
1996 IN P_ADAPTER_T prAdapter,
1997 IN P_MSDU_INFO_T prMsduInfo,
1998 IN ENUM_TX_RESULT_CODE_T rTxDoneStatus
2002 p2pFsmRunEventProvisionDiscoveryResponseTxDone(
2003 IN P_ADAPTER_T prAdapter,
2004 IN P_MSDU_INFO_T prMsduInfo,
2005 IN ENUM_TX_RESULT_CODE_T rTxDoneStatus
2010 p2pFsmRunEventInvitationRequestTxDone (
2011 IN P_ADAPTER_T prAdapter,
2012 IN P_MSDU_INFO_T prMsduInfo,
2013 IN ENUM_TX_RESULT_CODE_T rTxDoneStatus
2019 p2pFsmRunEventRxDeauthentication(
2020 IN P_ADAPTER_T prAdapter,
2021 IN P_STA_RECORD_T prStaRec,
2022 IN P_SW_RFB_T prSwRfb
2026 p2pFsmRunEventRxDisassociation(
2027 IN P_ADAPTER_T prAdapter,
2028 IN P_STA_RECORD_T prStaRec,
2029 IN P_SW_RFB_T prSwRfb
2033 p2pFsmRunEventBeaconTimeout(
2034 IN P_ADAPTER_T prAdapter
2040 p2pFsmRunEventDeauthTxDone(
2041 IN P_ADAPTER_T prAdapter,
2042 IN P_MSDU_INFO_T prMsduInfo,
2043 IN ENUM_TX_RESULT_CODE_T rTxDoneStatus
2051 //////////////////////////////////////////////////////////////////////////
2052 //////////////////////////////////////////////////////////////////////////
2053 //////////////////////////////////////////////////////////////////////////
2054 //////////////////////////////////////////////////////////////////////////
2055 //////////////////////////////////////////////////////////////////////////
2056 //////////////////////////////////////////////////////////////////////////
2057 //////////////////////////////////////////////////////////////////////////
2058 //////////////////////////////////////////////////////////////////////////
2059 //////////////////////////////////////////////////////////////////////////
2060 //////////////////////////////////////////////////////////////////////////
2061 //////////////////////////////////////////////////////////////////////////
2062 /*======Mail Box Event Message=====*/
2066 p2pFsmRunEventConnectionAbort(
2067 IN P_ADAPTER_T prAdapter,
2068 IN P_MSG_HDR_T prMsgHdr
2072 p2pFsmRunEventConnectionTrigger(
2073 IN P_ADAPTER_T prAdapter,
2074 IN P_MSG_HDR_T prMsgHdr
2079 p2pFsmRunEventP2PFunctionSwitch(
2080 IN P_ADAPTER_T prAdapter,
2081 IN P_MSG_HDR_T prMsgHdr
2085 p2pFsmRunEventChGrant(
2086 IN P_ADAPTER_T prAdapter,
2087 IN P_MSG_HDR_T prMsgHdr
2091 p2pFsmRunEventJoinComplete(
2092 IN P_ADAPTER_T prAdapter,
2093 IN P_MSG_HDR_T prMsgHdr
2097 p2pFsmRunEventConnectionPause(
2098 IN P_ADAPTER_T prAdapter,
2099 IN P_MSG_HDR_T prMsgHdr
2103 p2pIndicationOfMediaStateToHost(
2104 IN P_ADAPTER_T prAdapter,
2105 IN ENUM_PARAM_MEDIA_STATE_T eConnectionState,
2106 IN UINT_8 aucTargetAddr[]
2110 p2pUpdateBssInfoForJOIN(
2111 IN P_ADAPTER_T prAdapter,
2112 IN P_STA_RECORD_T prStaRec,
2113 IN P_SW_RFB_T prAssocRspSwRfb
2116 /*======Mail Box Event Message=====*/
2121 IN P_ADAPTER_T prAdapter
2126 IN P_ADAPTER_T prAdapter
2131 IN P_ADAPTER_T prAdapter,
2132 IN ENUM_P2P_STATE_T eNextState
2137 IN P_ADAPTER_T prAdapter
2143 IN PUINT_8 pucSsidLen
2147 p2pFsmRunEventScanDone(
2148 IN P_ADAPTER_T prAdapter,
2149 IN P_MSG_HDR_T prMsgHdr
2153 p2pFsmRunEventIOReqTimeout(
2154 IN P_ADAPTER_T prAdapter,
2159 p2pFsmRunEventSearchPeriodTimeout(
2160 IN P_ADAPTER_T prAdapter,
2165 p2pFsmRunEventFsmTimeout(
2166 IN P_ADAPTER_T prAdapter,
2171 p2pFsmRunEventRejoinTimeout(
2172 IN P_ADAPTER_T prAdapter,
2179 /*=============== P2P Function Related ================*/
2181 /*=============== P2P Function Related ================*/
2184 #if CFG_TEST_WIFI_DIRECT_GO
2187 IN P_ADAPTER_T prAdapter
2189 #endif /* CFG_TEST_WIFI_DIRECT_GO */
2195 p2pGenerateP2P_IEForBeacon(
2196 IN P_ADAPTER_T prAdapter,
2197 IN P_MSDU_INFO_T prMsduInfo
2201 p2pGenerateP2P_IEForAssocReq(
2202 IN P_ADAPTER_T prAdapter,
2203 IN P_MSDU_INFO_T prMsduInfo
2207 p2pGenerateP2P_IEForAssocRsp(
2208 IN P_ADAPTER_T prAdapter,
2209 IN P_MSDU_INFO_T prMsduInfo
2214 p2pGenerateP2P_IEForProbeReq(
2215 IN P_ADAPTER_T prAdapter,
2216 IN PUINT_16 pu2Offset,
2218 IN UINT_16 u2BufSize
2225 p2pCalculateP2P_IELenForBeacon(
2226 IN P_ADAPTER_T prAdapter,
2227 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
2228 IN P_STA_RECORD_T prStaRec
2232 p2pCalculateP2P_IELenForAssocRsp(
2233 IN P_ADAPTER_T prAdapter,
2234 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
2235 IN P_STA_RECORD_T prStaRec
2240 p2pCalculateP2P_IELenForProbeReq(
2241 IN P_ADAPTER_T prAdapter,
2242 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
2243 IN P_STA_RECORD_T prStaRec
2249 p2pGenerateWSC_IEForProbeResp(
2250 IN P_ADAPTER_T prAdapter,
2251 IN P_MSDU_INFO_T prMsduInfo
2255 p2pGenerateWSC_IEForProbeReq(
2256 IN P_ADAPTER_T prAdapter,
2257 IN PUINT_16 pu2Offset,
2259 IN UINT_16 u2BufSize
2265 p2pCalculateWSC_IELenForProbeReq(
2266 IN P_ADAPTER_T prAdapter,
2267 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex
2271 p2pCalculateWSC_IELenForProbeResp(
2272 IN P_ADAPTER_T prAdapter,
2273 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
2274 IN P_STA_RECORD_T prStaRec
2278 p2pAppendAttriStatus(
2279 IN P_ADAPTER_T prAdapter,
2280 IN BOOLEAN fgIsAssocFrame,
2281 IN PUINT_16 pu2Offset,
2283 IN UINT_16 u2BufSize
2289 p2pAppendAttriCapability(
2290 IN P_ADAPTER_T prAdapter,
2291 IN BOOLEAN fgIsAssocFrame,
2292 IN PUINT_16 pu2Offset,
2294 IN UINT_16 u2BufSize
2298 p2pAppendAttriGoIntent(
2299 IN P_ADAPTER_T prAdapter,
2300 IN BOOLEAN fgIsAssocFrame,
2301 IN PUINT_16 pu2Offset,
2303 IN UINT_16 u2BufSize
2307 p2pAppendAttriCfgTimeout(
2308 IN P_ADAPTER_T prAdapter,
2309 IN BOOLEAN fgIsAssocFrame,
2310 IN PUINT_16 pu2Offset,
2312 IN UINT_16 u2BufSize
2316 p2pAppendAttriGroupBssid(
2317 IN P_ADAPTER_T prAdapter,
2318 IN BOOLEAN fgIsAssocFrame,
2319 IN PUINT_16 pu2Offset,
2321 IN UINT_16 u2BufSize
2326 p2pAppendAttriDeviceIDForBeacon(
2327 IN P_ADAPTER_T prAdapter,
2328 IN BOOLEAN fgIsAssocFrame,
2329 IN PUINT_16 pu2Offset,
2331 IN UINT_16 u2BufSize
2335 p2pAppendAttriDeviceIDForProbeReq(
2336 IN P_ADAPTER_T prAdapter,
2337 IN BOOLEAN fgIsAssocFrame,
2338 IN PUINT_16 pu2Offset,
2340 IN UINT_16 u2BufSize
2344 p2pAppendAttriDeviceIDForDeviceDiscoveryReq(
2345 IN P_ADAPTER_T prAdapter,
2346 IN BOOLEAN fgIsAssocFrame,
2347 IN PUINT_16 pu2Offset,
2349 IN UINT_16 u2BufSize
2353 p2pAppendAttriListenChannel(
2354 IN P_ADAPTER_T prAdapter,
2355 IN BOOLEAN fgIsAssocFrame,
2356 IN PUINT_16 pu2Offset,
2358 IN UINT_16 u2BufSize
2362 p2pAppendAttriIntendP2pIfAddr(
2363 IN P_ADAPTER_T prAdapter,
2364 IN BOOLEAN fgIsAssocFrame,
2365 IN PUINT_16 pu2Offset,
2367 IN UINT_16 u2BufSize
2372 p2pAppendAttriChannelList(
2373 IN P_ADAPTER_T prAdapter,
2374 IN BOOLEAN fgIsAssocFrame,
2375 IN PUINT_16 pu2Offset,
2377 IN UINT_16 u2BufSize
2381 p2pCalculateAttriLenChannelList(
2382 IN P_ADAPTER_T prAdapter,
2383 IN P_STA_RECORD_T prStaRec
2388 IN P_ADAPTER_T prAdapter,
2389 IN BOOLEAN fgIsAssocFrame,
2390 IN PUINT_16 pu2Offset,
2392 IN UINT_16 u2BufSize
2396 p2pAppendAttriDeviceInfo(
2397 IN P_ADAPTER_T prAdapter,
2398 IN BOOLEAN fgIsAssocFrame,
2399 IN PUINT_16 pu2Offset,
2401 IN UINT_16 u2BufSize
2405 p2pCalculateAttriLenDeviceInfo(
2406 IN P_ADAPTER_T prAdapter,
2407 IN P_STA_RECORD_T prStaRec
2411 p2pAppendAttriGroupInfo(
2412 IN P_ADAPTER_T prAdapter,
2413 IN BOOLEAN fgIsAssocFrame,
2414 IN PUINT_16 pu2Offset,
2416 IN UINT_16 u2BufSize
2420 p2pCalculateAttriLenGroupInfo(
2421 IN P_ADAPTER_T prAdapter,
2422 IN P_STA_RECORD_T prStaRec
2427 p2pAppendAttriP2pGroupID(
2428 IN P_ADAPTER_T prAdapter,
2429 IN BOOLEAN fgIsAssocFrame,
2430 IN PUINT_16 pu2Offset,
2432 IN UINT_16 u2BufSize
2436 p2pAppendAttriOperatingChannel(
2437 IN P_ADAPTER_T prAdapter,
2438 IN BOOLEAN fgIsAssocFrame,
2439 IN PUINT_16 pu2Offset,
2441 IN UINT_16 u2BufSize
2445 p2pAppendAttriInvitationFlag(
2446 IN P_ADAPTER_T prAdapter,
2447 IN BOOLEAN fgIsAssocFrame,
2448 IN PUINT_16 pu2Offset,
2450 IN UINT_16 u2BufSize
2456 IN P_ADAPTER_T prAdapter,
2457 IN UINT_8 ucOuiType,
2458 IN BOOLEAN fgIsAssocFrame,
2459 IN PUINT_16 pu2Offset,
2461 IN UINT_16 u2BufSize,
2462 IN APPEND_VAR_ATTRI_ENTRY_T arAppendAttriTable[],
2463 IN UINT_32 u4AttriTableSize
2467 p2pAppendAttriWSCConfigMethod (
2468 IN P_ADAPTER_T prAdapter,
2469 IN BOOLEAN fgIsAssocFrame,
2470 IN PUINT_16 pu2Offset,
2472 IN UINT_16 u2BufSize
2476 p2pAppendAttriWSCVersion (
2477 IN P_ADAPTER_T prAdapter,
2478 IN BOOLEAN fgIsAssocFrame,
2479 IN PUINT_16 pu2Offset,
2481 IN UINT_16 u2BufSize
2485 p2pAppendAttriWSCGONegReqDevPasswordId (
2486 IN P_ADAPTER_T prAdapter,
2487 IN BOOLEAN fgIsAssocFrame,
2488 IN PUINT_16 pu2Offset,
2490 IN UINT_16 u2BufSize
2494 p2pAppendAttriWSCGONegRspDevPasswordId (
2495 IN P_ADAPTER_T prAdapter,
2496 IN BOOLEAN fgIsAssocFrame,
2497 IN PUINT_16 pu2Offset,
2499 IN UINT_16 u2BufSize
2504 IN P_ADAPTER_T prAdapter,
2505 IN UINT_8 ucOuiType,
2507 IN UINT_16 u2IELength,
2508 OUT PPUINT_8 ppucAttriList,
2509 OUT PUINT_16 pu2AttriListLen
2514 IN P_ADAPTER_T prAdapter,
2515 IN UINT_8 ucOuiType,
2517 IN UINT_16 u2IELength,
2518 OUT PPUINT_8 ppucAttriList,
2519 OUT PUINT_16 pu2AttriListLen
2523 p2pRunEventAAATxFail (
2524 IN P_ADAPTER_T prAdapter,
2525 IN P_STA_RECORD_T prStaRec
2529 p2pRunEventAAASuccess (
2530 IN P_ADAPTER_T prAdapter,
2531 IN P_STA_RECORD_T prStaRec
2536 p2pRunEventAAAComplete (
2537 IN P_ADAPTER_T prAdapter,
2538 IN P_STA_RECORD_T prStaRec
2542 p2pSendProbeResponseFrame(
2543 IN P_ADAPTER_T prAdapter,
2544 IN P_SW_RFB_T prSwRfb
2548 p2pFsmRunEventRxProbeRequestFrame(
2549 IN P_ADAPTER_T prAdapter,
2550 IN P_SW_RFB_T prSwRfb
2554 p2pFsmRunEventRxProbeResponseFrame(
2555 IN P_ADAPTER_T prAdapter,
2556 IN P_SW_RFB_T prSwRfb,
2557 IN P_BSS_DESC_T prBssDesc
2561 p2pRxPublicActionFrame(
2562 IN P_ADAPTER_T prAdapter,
2563 IN P_SW_RFB_T prSwRfb
2568 IN P_ADAPTER_T prAdapter,
2569 IN P_SW_RFB_T prSwRfb
2573 p2pFsmRunEventRxGroupNegotiationRspFrame(
2574 IN P_ADAPTER_T prAdapter,
2575 IN P_SW_RFB_T prSwRfb
2579 p2pFsmRunEventRxGroupNegotiationCfmFrame(
2580 IN P_ADAPTER_T prAdapter,
2581 IN P_SW_RFB_T prSwRfb
2587 scanMatchFilterOfP2P (
2588 IN P_SW_RFB_T prSWRfb,
2589 IN PP_BSS_DESC_T pprBssDesc
2594 p2pProcessEvent_UpdateNOAParam (
2595 IN P_ADAPTER_T prAdapter,
2596 UINT_8 ucNetTypeIndex,
2597 P_EVENT_UPDATE_NOA_PARAMS_T prEventUpdateNoaParam
2601 p2pFuncCompleteIOCTL(
2602 IN P_ADAPTER_T prAdapter,
2603 IN WLAN_STATUS rWlanStatus
2606 /*******************************************************************************
2608 ********************************************************************************
2611 /* Kevin: we don't have to call following function to inspect the data structure.
2612 * It will check automatically while at compile time.
2613 * We'll need this for porting driver to different RTOS.
2620 DATA_STRUC_INSPECTING_ASSERT(sizeof(IE_P2P_T) == (2+4+1)); // all UINT_8
2621 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRIBUTE_T) == (3+1));
2622 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_STATUS_T) == (3+1));
2623 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_REASON_T) == (3+1));
2624 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CAPABILITY_T) == (3+2));
2625 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_DEV_ID_T) == (3+6));
2626 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GO_INTENT_T) == (3+1));
2627 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CFG_TIMEOUT_T) == (3+2));
2629 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_LISTEN_CHANNEL_T) == (3+5));
2631 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_LISTEN_CHANNEL_T) == (3+5));
2633 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_BSSID_T) == (3+6));
2634 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_EXT_LISTEN_TIMING_T) == (3+4));
2635 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_INTENDED_IF_ADDR_T) == (3+6));
2636 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_MANAGEABILITY_T) == (3+1));
2638 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CHANNEL_T) == (3+4));
2639 DATA_STRUC_INSPECTING_ASSERT(sizeof(CHANNEL_ENTRY_FIELD_T) == 3);
2640 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_NOA_T) == (3+3));
2641 DATA_STRUC_INSPECTING_ASSERT(sizeof(NOA_DESCRIPTOR_T) == 13);
2642 DATA_STRUC_INSPECTING_ASSERT(sizeof(DEVICE_TYPE_T) == 8);
2643 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_DEV_INFO_T) == (3+6+2+8+1+8));
2644 DATA_STRUC_INSPECTING_ASSERT(sizeof(DEVICE_NAME_TLV_T) == (4+32));
2645 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_CLIENT_INFO_DESC_T) == (1+6+6+1+2+8+1+8));
2646 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_INFO_T) == (3+(1+6+6+1+2+8+1+8)));
2647 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_ID_T) == (3+38));
2648 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_INTERFACE_T) == (3+13));
2650 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_OPERATING_CHANNEL_T) == (3+5));
2652 DATA_STRUC_INSPECTING_ASSERT(sizeof(P2P_ATTRI_OPERATING_CHANNEL_T) == (3+5));
2660 #endif /* _P2P_FSM_H */