| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654 |
- /*
- ** Id: //Department/DaVinci/TRUNK/WiFi_P2P_Driver/include/mgmt/p2p_fsm.h#23
- */
- /*! \file p2p_fsm.h
- * \brief Declaration of functions and finite state machine for P2P Module.
- *
- * Declaration of functions and finite state machine for P2P Module.
- */
- /*
- ** Log: p2p_fsm.h
- **
- ** 07 25 2014 eason.tsai
- ** AOSP
- **
- ** 02 27 2013 yuche.tsai
- ** [BORA00002398] [MT6630][Volunteer Patch] P2P Driver Re-Design for Multiple BSS support
- ** Add p2p_rlm.c, p2p_rlm_obss.c, fix compile warning & error.
- **
- ** 02 27 2013 yuche.tsai
- ** [BORA00002398] [MT6630][Volunteer Patch] P2P Driver Re-Design for Multiple BSS support
- ** Add new code, fix compile warning.
- **
- ** 01 30 2013 yuche.tsai
- ** [BORA00002398] [MT6630][Volunteer Patch] P2P Driver Re-Design for Multiple BSS support
- ** Code first update.
- **
- ** 01 17 2013 cm.chang
- ** [BORA00002149] [MT6630 Wi-Fi] Initial software development
- ** Use ucBssIndex to replace eNetworkTypeIndex
- **
- ** 09 17 2012 cm.chang
- ** [BORA00002149] [MT6630 Wi-Fi] Initial software development
- ** Duplicate source from MT6620 v2.3 driver branch
- ** (Davinci label: MT6620_WIFI_Driver_V2_3_120913_1942_As_MT6630_Base)
- **
- ** 08 24 2012 yuche.tsai
- ** NULL
- ** Fix bug of invitation request.
- **
- ** 07 31 2012 yuche.tsai
- ** NULL
- ** Update Active/Deactive network policy for P2P network.
- ** Highly related to power saving.
- **
- ** 07 25 2012 yuche.tsai
- ** NULL
- ** Bug fix for TX mgmt frame.
- **
- ** 07 24 2012 yuche.tsai
- ** NULL
- ** Bug fix for JB.
- **
- ** 07 19 2012 yuche.tsai
- ** NULL
- ** Code update for JB.
- *
- * 07 18 2012 yuche.tsai
- * NULL
- * add one file.
- *
- * 12 02 2011 yuche.tsai
- * NULL
- * Resolve class 3 error issue under AP mode.
- *
- * data frame may TX before Assoc Response TX.
- *
- * 11 11 2011 yuche.tsai
- * NULL
- * Fix work thread cancel issue.
- *
- * 11 11 2011 yuche.tsai
- * NULL
- * Fix default device name issue.
- *
- * 11 09 2011 yuche.tsai
- * [WCXRP00001093] [Need Patch][Volunteer Patch] Service Discovery 2.0 state transition issue.
- * Fix SD2.0 issue which may cause KE. (Monkey test)
- *
- * 11 08 2011 yuche.tsai
- *[WCXRP00001094][Volunteer Patch][Driver] Driver version & supplicant version.
- * query & set support for service discovery version check.
- * Add support for driver version query & p2p supplicant verseion set.
- * For new service discovery mechanism sync.
- *
- * 10 18 2011 yuche.tsai
- * [WCXRP00001045] [WiFi Direct][Driver] Check 2.1 branch.
- * Support Channel Query.
- *
- * 10 18 2011 yuche.tsai
- * [WCXRP00001045] [WiFi Direct][Driver] Check 2.1 branch.
- * New 2.1 branch
- *
- *
- * 09 01 2011 yuche.tsai
- * NULL
- * Fix channel stay interval.
- * Sync channel stay interval & channel request interval under AP mode..
- *
- * 08 30 2011 yuche.tsai
- * [WCXRP00000953] [Volunteer Patch][Driver] Hot Spot Channel ASSERT issue.
- * Fix hot spot FW assert issue when under concurrent case. (DBG enable only)
- *
- * 08 16 2011 cp.wu
- * [WCXRP00000934] [MT6620 Wi-Fi][Driver][P2P] Wi-Fi hot spot with auto sparse channel residence
- * auto channel decision for 2.4GHz hot spot mode
- *
- * 08 16 2011 yuche.tsai
- * NULL
- * Fix scan policy for Active LISTEN scan.
- *
- * 08 09 2011 yuche.tsai
- * [WCXRP00000919] [Volunteer Patch][WiFi Direct][Driver] Invitation New Feature.
- * Invitation Feature add on.
- *
- * 08 02 2011 yuche.tsai
- *[WCXRP00000896][Volunteer Patch][WiFi Direct][Driver] GO with multiple client.
- * TX deauth to a disconnecting device issue.
- * Support TX Deauth Issue.
- *
- * 07 26 2011 yuche.tsai
- * [WCXRP00000875] [Volunteer Patch][WiFi Direct][Driver] MT6620 IOT issue with realtek test bed solution.
- * Turn off persistent group support for V2.0 release.
- *
- * 07 18 2011 yuche.tsai
- * [WCXRP00000856] [Volunteer Patch][WiFi Direct][Driver] MT6620 WiFi Direct IOT Issue with BCM solution.
- * Fix compile error.
- *
- * 07 18 2011 yuche.tsai
- * [WCXRP00000856] [Volunteer Patch][WiFi Direct][Driver] MT6620 WiFi Direct IOT Issue with BCM solution.
- * Fix MT6620 WiFi Direct IOT Issue with BCM solution.
- *
- * 07 11 2011 yuche.tsai
- * [WCXRP00000845] [Volunteer Patch][WiFi Direct] WiFi Direct Device Connection Robustness
- * Enhance Connection Robustness.
- *
- * 07 08 2011 yuche.tsai
- * [WCXRP00000841] [Volunteer Patch][WiFi Direct] Group Owner Setting.
- * Update GO configure parameter.
- *
- * 07 05 2011 yuche.tsai
- * [WCXRP00000821] [Volunteer Patch][WiFi Direct][Driver] WiFi Direct Connection Speed Issue
- * Disable enhancement II for debugging.
- *
- * 07 05 2011 yuche.tsai
- * [WCXRP00000821] [Volunteer Patch][WiFi Direct][Driver] WiFi Direct Connection Speed Issue
- * Refine compile flag.
- *
- * 07 05 2011 yuche.tsai
- * [WCXRP00000821] [Volunteer Patch][WiFi Direct][Driver] WiFi Direct Connection Speed Issue
- * Add wifi direct connection enhancement method I, II & VI.
- *
- * 06 20 2011 yuche.tsai
- * [WCXRP00000799] [Volunteer Patch][MT6620][Driver] Connection Indication Twice Issue.
- * Fix connection indication twice issue.
- *
- * 06 07 2011 yuche.tsai
- * [WCXRP00000763] [Volunteer Patch][MT6620][Driver] RX Service Discovery Frame under AP mode Issue
- * Fix RX SD request under AP mode issue.
- *
- * 05 04 2011 yuche.tsai
- * NULL
- * Support partial persistent group function.
- *
- * 04 20 2011 terry.wu
- * [WCXRP00000660] [MT6620 Wi-Fi][Driver] Remove flag CFG_WIFI_DIRECT_MOVED
- * Remove CFG_WIFI_DIRECT_MOVED.
- *
- * 04 08 2011 yuche.tsai
- * [WCXRP00000624] [Volunteer Patch][MT6620][Driver] Add device discoverability support for GO.
- * Add device discoverability support.
- *
- * 03 25 2011 yuche.tsai
- * NULL
- * Improve some error handleing.
- *
- * 03 22 2011 george.huang
- * [WCXRP00000504] [MT6620 Wi-Fi][FW] Support Sigma CAPI for power saving related command
- * link with supplicant commands
- *
- * 03 22 2011 yuche.tsai
- * NULL
- * 1.Shorten the LISTEN interval.
- * 2. Fix IF address issue when we are GO
- * 3. Fix LISTEN channel issue.
- *
- * 03 21 2011 yuche.tsai
- * NULL
- * Change P2P Connection Request Flow.
- *
- * 03 19 2011 yuche.tsai
- * [WCXRP00000584] [Volunteer Patch][MT6620][Driver] Add beacon timeout support for WiFi Direct.
- * Add beacon timeout support.
- *
- * 03 19 2011 yuche.tsai
- * [WCXRP00000581] [Volunteer Patch][MT6620][Driver] P2P IE in Assoc Req Issue
- * Append P2P IE in Assoc Req, so that GC can be discovered in probe response of GO.
- *
- * 03 18 2011 yuche.tsai
- * [WCXRP00000574] [Volunteer Patch][MT6620][Driver] Modify P2P FSM Connection Flow
- * Modify connection flow after Group Formation Complete, or device connect to a GO.
- * Instead of request channel & connect directly, we use scan to allocate channel bandwidth & connect after RX BCN.
- *
- * 03 15 2011 yuche.tsai
- * [WCXRP00000560] [Volunteer Patch][MT6620][Driver] P2P Connection from UI using KEY/DISPLAY issue
- * Fix some configure method issue.
- *
- * 03 10 2011 yuche.tsai
- * NULL
- * Add P2P API.
- *
- * 03 07 2011 yuche.tsai
- * [WCXRP00000502] [Volunteer Patch][MT6620][Driver] Fix group ID issue when doing Group Formation.
- * .
- *
- * 03 07 2011 wh.su
- * [WCXRP00000506] [MT6620 Wi-Fi][Driver][FW] Add Security check related code
- * rename the define to anti_pviracy.
- *
- * 03 05 2011 wh.su
- * [WCXRP00000506] [MT6620 Wi-Fi][Driver][FW] Add Security check related code
- * add the code to get the check rsponse and indicate to app.
- *
- * 03 01 2011 yuche.tsai
- * [WCXRP00000501] [Volunteer Patch][MT6620][Driver] No common channel issue when doing GO formation
- * Update channel issue when doing GO formation..
- *
- * 03 01 2011 yuche.tsai
- * [WCXRP00000245] 1. Invitation Request/Response.
- * 2. Provision Discovery Request/Response
- *
- * Update Service Discovery Related wlanoid function.
- *
- * 02 18 2011 wh.su
- * [WCXRP00000471] [MT6620 Wi-Fi][Driver] Add P2P Provison discovery append Config Method attribute at WSC IE
- * fixed the ioctl setting that index not map to spec defined config method.
- *
- * 02 18 2011 yuche.tsai
- * [WCXRP00000480] [Volunteer Patch][MT6620][Driver] WCS IE format issue
- * Fix WSC IE BE format issue.
- *
- * 02 17 2011 wh.su
- * [WCXRP00000471] [MT6620 Wi-Fi][Driver] Add P2P Provison discovery append Config Method attribute at WSC IE
- * append the WSC IE config method attribute at provision discovery request.
- *
- * 02 11 2011 yuche.tsai
- * [WCXRP00000431] [Volunteer Patch][MT6620][Driver] Add MLME support for deauthentication under AP(Hot-Spot) mode.
- * Add two function prototype.
- *
- * 02 10 2011 yuche.tsai
- * [WCXRP00000431] [Volunteer Patch][MT6620][Driver] Add MLME support for deauthentication under AP(Hot-Spot) mode.
- * Support Disassoc & Deauthentication for Hot-Spot.
- *
- * 02 09 2011 yuche.tsai
- * [WCXRP00000245] 1. Invitation Request/Response.
- *
- * 2. Provision Discovery Request/Response
- *
- * Add Service Discovery Indication Related code.
- *
- * 02 09 2011 yuche.tsai
- * [WCXRP00000431] [Volunteer Patch][MT6620][Driver] Add MLME support for deauthentication under AP(Hot-Spot) mode.
- * Add Support for MLME deauthentication for Hot-Spot.
- *
- * 02 09 2011 yuche.tsai
- * [WCXRP00000429] [Volunteer Patch][MT6620][Driver] Hot Spot Client Limit Issue
- * Fix Client Limit Issue.
- *
- * 01 26 2011 yuche.tsai
- * [WCXRP00000245] 1. Invitation Request/Response.
- *
- * 2. Provision Discovery Request/Response
- *
- * Add Service Discovery Function.
- *
- * 01 25 2011 terry.wu
- * [WCXRP00000393] [MT6620 Wi-Fi][Driver] Add new module insert parameter
- * Add a new module parameter to indicate current runnig mode, P2P or AP.
- *
- * 01 19 2011 george.huang
- * [WCXRP00000355] [MT6620 Wi-Fi] Set WMM-PS related setting with qualifying AP capability
- * Null NOA attribute setting when no related parameters.
- *
- * 01 12 2011 yuche.tsai
- * [WCXRP00000352] [Volunteer Patch][MT6620][Driver] P2P Statsion Record Client List Issue
- * Modify some behavior of AP mode.
- *
- * 12 22 2010 yuche.tsai
- * [WCXRP00000245] 1. Invitation Request/Response.
- * 2. Provision Discovery Request/Response
- *
- * Fix Compile Error.
- *
- * 12 15 2010 yuche.tsai
- * [WCXRP00000245] 1. Invitation Request/Response.
- * 2. Provision Discovery Request/Response
- *
- * Refine Connection Flow.
- *
- * 12 08 2010 yuche.tsai
- * [WCXRP00000244] [MT6620][Driver] Add station record type for each client when in AP mode.
- * 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.
- *
- * 12 02 2010 yuche.tsai
- * NULL
- * Update P2P Connection Policy for Invitation.
- *
- * 12 02 2010 yuche.tsai
- * NULL
- * Update P2P Connection Policy for Invitation & Provision Discovery.
- *
- * 11 30 2010 yuche.tsai
- * NULL
- * Invitation & Provision Discovery Indication.
- *
- * 11 30 2010 yuche.tsai
- * NULL
- * Update Configure Method indication & selection for Provision Discovery & GO_NEGO_REQ
- *
- * 11 29 2010 yuche.tsai
- * NULL
- * Update P2P related function for INVITATION & PROVISION DISCOVERY.
- *
- * 11 26 2010 george.huang
- * [WCXRP00000152] [MT6620 Wi-Fi] AP mode power saving function
- * Update P2P PS for NOA function.
- *
- * 11 25 2010 yuche.tsai
- * NULL
- * Update Code for Invitation Related Function.
- *
- * 11 17 2010 wh.su
- *[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
- * fixed some ASSERT check.
- *
- * 11 04 2010 wh.su
- * [WCXRP00000164] [MT6620 Wi-Fi][Driver] Support the p2p random SSID
- * adding the p2p random ssid support.
- *
- * 10 20 2010 wh.su
- * [WCXRP00000124] [MT6620 Wi-Fi] [Driver] Support the dissolve P2P Group
- * Add the code to support disconnect p2p group
- *
- * 10 08 2010 wh.su
- * [WCXRP00000085] [MT6620 Wif-Fi] [Driver] update the modified p2p state machine
- * update the frog's new p2p state machine.
- *
- * 10 04 2010 wh.su
- * [WCXRP00000081] [MT6620][Driver] Fix the compiling error at WinXP while enable P2P
- * fixed compiling error while enable p2p.
- *
- * 09 21 2010 kevin.huang
- * [WCXRP00000054] [MT6620 Wi-Fi][Driver] Restructure driver for second Interface
- * Isolate P2P related function for Hardware Software Bundle
- *
- * 09 10 2010 wh.su
- * NULL
- * fixed the compiling error at WinXP.
- *
- * 09 07 2010 wh.su
- * NULL
- * adding the code for beacon/probe req/ probe rsp wsc ie at p2p.
- *
- * 09 03 2010 kevin.huang
- * NULL
- * Refine #include sequence and solve recursive/nested #include issue
- *
- * 08 26 2010 yuche.tsai
- * NULL
- * Add connection abort message event prototype.
- *
- * 08 20 2010 kevin.huang
- * NULL
- * Modify AAA Module for changing STA STATE 3 at p2p/bowRunEventAAAComplete()
- *
- * 08 16 2010 yuche.tsai
- * NULL
- * Fix P2P Intended Interface Address Bug.
- * Extend GO Nego Timeout Time.
- *
- * 08 16 2010 yuche.tsai
- * NULL
- * Extend Listen Interval default value & remove deprecated variable.
- *
- * 08 16 2010 kevin.huang
- * NULL
- * Refine AAA functions
- *
- * 08 12 2010 kevin.huang
- * NULL
- * Refine bssProcessProbeRequest() and bssSendBeaconProbeResponse()
- *
- * 08 12 2010 yuche.tsai
- * NULL
- * Add function prototype for join complete.
- *
- * 08 11 2010 yuche.tsai
- * NULL
- * Add some function proto type for P2P FSM under provisioning phase..
- *
- * 08 11 2010 yuche.tsai
- * NULL
- * Change P2P data structure for supporting
- * 1. P2P Device discovery.
- * 2. P2P Group Negotiation.
- * 3. P2P JOIN
- *
- * 08 05 2010 yuche.tsai
- * NULL
- * Check-in P2P Device Discovery Feature.
- *
- * 08 03 2010 george.huang
- * NULL
- * handle event for updating NOA parameters indicated from FW
- *
- * 08 02 2010 yuche.tsai
- * NULL
- * P2P Group Negotiation Code Check in.
- *
- * 07 26 2010 yuche.tsai
- *
- * Update P2P FSM header file.
- *
- * 07 23 2010 cp.wu
- *
- * P2P/RSN/WAPI IEs need to be declared with compact structure.
- *
- * 07 21 2010 yuche.tsai
- *
- * Add for P2P Scan Result Parsing & Saving.
- *
- * 07 19 2010 yuche.tsai
- *
- * Update P2P FSM header file.
- *
- * 07 08 2010 cp.wu
- *
- * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
- *
- * 06 21 2010 yuche.tsai
- * [WPD00003839][MT6620 5931][P2P] Feature migration
- * Fix some P2P function prototype.
- *
- * 06 17 2010 yuche.tsai
- * [WPD00003839][MT6620 5931][P2P] Feature migration
- * First draft for migration P2P FSM from FW to Driver.
- *
- * 03 18 2010 kevin.huang
- * [BORA00000663][WIFISYS][New Feature] AdHoc Mode Support
- * Rename CFG flag for P2P
- *
- * 02 26 2010 kevin.huang
- * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
- * Modify parameter of p2pStartGO
- *
- * 02 23 2010 kevin.huang
- * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
- * Add Wi-Fi Direct SSID and P2P GO Test Mode
- *
- * 02 04 2010 kevin.huang
- * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
- * Add AAA Module Support, Revise Net Type to Net Type Index for array lookup
- */
- #ifndef _P2P_FSM_H
- #define _P2P_FSM_H
- /*******************************************************************************
- * C O M P I L E R F L A G S
- ********************************************************************************
- */
- #define CID52_53_54 0
- /*******************************************************************************
- * E X T E R N A L R E F E R E N C E S
- ********************************************************************************
- */
- /*******************************************************************************
- * C O N S T A N T S
- ********************************************************************************
- */
- /*******************************************************************************
- * D A T A T Y P E S
- ********************************************************************************
- */
- typedef enum _ENUM_P2P_STATE_T {
- P2P_STATE_IDLE = 0,
- P2P_STATE_SCAN,
- P2P_STATE_AP_CHANNEL_DETECT,
- P2P_STATE_REQING_CHANNEL,
- P2P_STATE_CHNL_ON_HAND, /* Requesting Channel to Send Specific Frame. */
- P2P_STATE_GC_JOIN, /* Sending Specific Frame. May extending channel by other event. */
- P2P_STATE_NUM
- } ENUM_P2P_STATE_T, *P_ENUM_P2P_STATE_T;
- struct _P2P_FSM_INFO_T {
- /* State related. */
- ENUM_P2P_STATE_T ePreviousState;
- ENUM_P2P_STATE_T eCurrentState;
- /* Channel related. */
- P2P_CHNL_REQ_INFO_T rChnlReqInfo;
- /* Scan related. */
- P2P_SCAN_REQ_INFO_T rScanReqInfo;
- /* Connection related. */
- P2P_CONNECTION_REQ_INFO_T rConnReqInfo;
- /* Mgmt tx related. */
- P2P_MGMT_TX_REQ_INFO_T rMgmtTxInfo;
- /* Beacon related. */
- P2P_BEACON_UPDATE_INFO_T rBcnContentInfo;
- /* Probe Response related. */
- P2P_PROBE_RSP_UPDATE_INFO_T rProbeRspContentInfo;
- /* Assoc Rsp related. */
- P2P_ASSOC_RSP_UPDATE_INFO_T rAssocRspContentInfo;
- /* GC Join related. */
- P2P_JOIN_INFO_T rJoinInfo;
- /* FSM Timer */
- TIMER_T rP2pFsmTimeoutTimer;
- /* GC Target BSS. */
- P_BSS_DESC_T prTargetBss;
- /* GC Connection Request. */
- BOOLEAN fgIsConnectionRequested;
- BOOLEAN fgIsApMode;
- /* Channel grant interval. */
- UINT_32 u4GrantInterval;
- /* Packet filter for P2P module. */
- UINT_32 u4P2pPacketFilter;
- /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv Prepare for use vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
- /* Msg event queue. */
- LINK_T rMsgEventQueue;
- };
- /*---------------- Messages -------------------*/
- /*******************************************************************************
- * F U N C T I O N D E C L A R A T I O N S
- ********************************************************************************
- */
- VOID p2pFsmStateTransition(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN ENUM_P2P_STATE_T eNextState);
- VOID p2pFsmRunEventAbort(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo);
- VOID p2pFsmRunEventScanRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventMgmtFrameTx(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventStartAP(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventBeaconUpdate(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventStopAP(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventChannelRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventChannelAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventDissolve(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- WLAN_STATUS
- p2pFsmRunEventMgmtFrameTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T
- rTxDoneStatus);
- VOID p2pFsmRunEventMgmtFrameRegister(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- /*3 --------------- WFA P2P DEFAULT PARAMETERS --------------- */
- #define P2P_WILDCARD_SSID "DIRECT-"
- #define P2P_WILDCARD_SSID_LEN 7
- #define P2P_GROUP_ID_LEN 9
- #define P2P_DRIVER_VERSION 2 /* Update when needed. */
- #define P2P_DEFAULT_DEV_NAME "Wireless Client"
- #define P2P_DEFAULT_DEV_NAME_LEN 15
- #define P2P_DEFAULT_PRIMARY_CATEGORY_ID 10
- #define P2P_DEFAULT_PRIMARY_SUB_CATEGORY_ID 5
- #define P2P_DEFAULT_CONFIG_METHOD (WPS_ATTRI_CFG_METHOD_PUSH_BUTTON | WPS_ATTRI_CFG_METHOD_KEYPAD | \
- WPS_ATTRI_CFG_METHOD_DISPLAY)
- #define P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT 0 /* NOTE(Kevin): Shall <= 16 */
- #define P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT 13
- #define P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE 51 /* Contains 6 sub-band. */
- #define P2P_GC_MAX_CACHED_SEC_DEV_TYPE_COUNT 8 /* NOTE(Kevin): Shall <= 16 */
- #define P2P_CTWINDOW_DEFAULT 25 /* in TU=(1024usec) */
- /* P2P 3.1.2.1.3 - Find Phase */
- #define P2P_MAX_DISCOVERABLE_INTERVAL 8 /* 3 */
- #define P2P_MIN_DISCOVERABLE_INTERVAL 5 /* 1 */
- #define P2P_LISTEN_SCAN_UNIT 100 /* MS */
- /* FSM Time Related constrain. */
- #define P2P_SERACH_STATE_PERIOD_MS 1000 /* Deprecated. */
- #define P2P_GO_CHANNEL_STAY_INTERVAL 1000
- #define P2P_GO_NEGO_TIMEOUT_MS 500
- #define P2P_CONNECTION_TIMEOUT_SEC 120
- #define P2P_INVITAION_TIMEOUT_MS 500 /* Timeout Wait Invitation Resonse. */
- #define P2P_PROVISION_DISCOVERY_TIMEOUT_MS 500 /* Timeout Wait Provision Discovery Resonse. */
- /* 3 */
- /*#define P2P_ATTRI_MAX_LEN_NOTICE_OF_ABSENCE 2 + (n* (13)) */ /* 12 */
- #define P2P_ATTRI_MAX_LEN_NOTICE_OF_ABSENCE (2 + (P2P_MAXIMUM_NOA_COUNT * (13))) /* 12 */
- #define P2P_ATTRI_MAX_LEN_P2P_DEV_INFO (17 + (8 * (8)) + 36) /* 13 */
- /* #define P2P_ATTRI_MAX_LEN_P2P_GROUP_INFO n* (25 + (m* (8)) + 32) */ /* 14 */
- #define P2P_ATTRI_MAX_LEN_P2P_GROUP_ID 38 /* 15 */
- #define P2P_ATTRI_MAX_LEN_P2P_INTERFACE 253 /* 7 + 6* [0~41] */ /* 16 */
- #if CID52_53_54
- #define P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL 5 /* 17 */
- #else
- #define P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL 5 /* 17 */
- #endif
- #define P2P_ATTRI_MAX_LEN_INVITATION_FLAGS 1 /* 18 */
- /* P2P 4.1.3 - P2P Minor Reason Code definitions */
- #define P2P_REASON_SUCCESS 0
- #define P2P_REASON_DISASSOCIATED_DUE_CROSS_CONNECTION 1
- #define P2P_REASON_DISASSOCIATED_DUE_UNMANAGEABLE 2
- #define P2P_REASON_DISASSOCIATED_DUE_NO_P2P_COEXIST_PARAM 3
- #define P2P_REASON_DISASSOCIATED_DUE_MANAGEABLE 4
- /* P2P 4.1.4 - Device Capability Bitmap definitions */
- #define P2P_DEV_CAPABILITY_SERVICE_DISCOVERY BIT(0)
- #define P2P_DEV_CAPABILITY_CLIENT_DISCOVERABILITY BIT(1)
- #define P2P_DEV_CAPABILITY_CONCURRENT_OPERATION BIT(2)
- #define P2P_DEV_CAPABILITY_P2P_INFRA_MANAGED BIT(3)
- #define P2P_DEV_CAPABILITY_P2P_DEVICE_LIMIT BIT(4)
- #define P2P_DEV_CAPABILITY_P2P_INVITATION_PROCEDURE BIT(5)
- /* P2P 4.1.4 - Group Capability Bitmap definitions */
- #define P2P_GROUP_CAPABILITY_P2P_GROUP_OWNER BIT(0)
- #define P2P_GROUP_CAPABILITY_PERSISTENT_P2P_GROUP BIT(1)
- #define P2P_GROUP_CAPABILITY_P2P_GROUP_LIMIT BIT(2)
- #define P2P_GROUP_CAPABILITY_INTRA_BSS_DISTRIBUTION BIT(3)
- #define P2P_GROUP_CAPABILITY_CROSS_CONNECTION BIT(4)
- #define P2P_GROUP_CAPABILITY_PERSISTENT_RECONNECT BIT(5)
- #define P2P_GROUP_CAPABILITY_GROUP_FORMATION BIT(6)
- /* P2P 4.1.6 - GO Intent field definitions */
- #define P2P_GO_INTENT_TIE_BREAKER_FIELD BIT(0)
- #define P2P_GO_INTENT_VALUE_MASK BITS(1, 7)
- #define P2P_GO_INTENT_VALUE_OFFSET 1
- /* P2P 4.1.12 - Manageability Bitmap definitions */
- #define P2P_DEVICE_MANAGEMENT BIT(0)
- /* P2P 4.1.14 - CTWindow and OppPS Parameters definitions */
- #define P2P_CTW_OPPPS_PARAM_OPPPS_FIELD BIT(7)
- #define P2P_CTW_OPPPS_PARAM_CTWINDOW_MASK BITS(0, 6)
- #define ELEM_MAX_LEN_P2P_FOR_PROBE_REQ \
- (P2P_OUI_TYPE_LEN + \
- (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_CAPABILITY) + \
- (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_DEV_ID) + \
- (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_LISTEN_CHANNEL) + \
- (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL))
- #define ELEM_MAX_LEN_P2P_FOR_ASSOC_REQ \
- (P2P_OUI_TYPE_LEN + \
- (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_CAPABILITY) + \
- (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_EXT_LISTEN_TIMING) + \
- (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_DEV_INFO))
- /* P2P 4.1.16 - P2P Client Infor Descriptor */
- #define P2P_CLIENT_INFO_DESC_HDR_LEN 1 /* Length(1 octets) */
- /* P2P 4.1.20 - P2P Invitation Flags Attribute*/
- #define P2P_INVITATION_FLAGS_INVITATION_TYPE BIT(0)
- #define P2P_INVITATION_TYPE_INVITATION 0
- #define P2P_INVITATION_TYPE_REINVOKE 1
- /* 3 */
- /* WPS 11 - Data Element Definitions */
- #define WPS_ATTRI_ID_VERSION 0x104A
- #define WPS_ATTRI_ID_CONFIGURATION_METHODS 0x1008
- #define WPS_ATTRI_ID_DEVICE_PASSWORD 0x1012
- #define WPS_ATTRI_ID_DEVICE_NAME 0x1011
- #define WPS_ATTRI_ID_PRI_DEVICE_TYPE 0x1054
- #define WPS_ATTRI_ID_SEC_DEVICE_TYPE 0x1055
- #define WPS_ATTRI_MAX_LEN_DEVICE_NAME 32 /* 0x1011 */
- #define WPS_ATTRI_CFG_METHOD_USBA BIT(0)
- #define WPS_ATTRI_CFG_METHOD_ETHERNET BIT(1)
- #define WPS_ATTRI_CFG_METHOD_LABEL BIT(2)
- #define WPS_ATTRI_CFG_METHOD_DISPLAY BIT(3)
- #define WPS_ATTRI_CFG_METHOD_EXT_NFC BIT(4)
- #define WPS_ATTRI_CFG_METHOD_INT_NFC BIT(5)
- #define WPS_ATTRI_CFG_METHOD_NFC_IF BIT(6)
- #define WPS_ATTRI_CFG_METHOD_PUSH_BUTTON BIT(7)
- #define WPS_ATTRI_CFG_METHOD_KEYPAD BIT(8)
- #define P2P_FLAGS_PROVISION_COMPLETE 0x00000001
- #define P2P_FLAGS_PROVISION_DISCOVERY_COMPLETE 0x00000002
- #define P2P_FLAGS_PROVISION_DISCOVERY_WAIT_RESPONSE 0x00000004
- #define P2P_FLAGS_PROVISION_DISCOVERY_RESPONSE_WAIT 0x00000008
- #define P2P_FLAGS_MASK_PROVISION 0x00000017
- #define P2P_FLAGS_MASK_PROVISION_COMPLETE 0x00000015
- #define P2P_FLAGS_PROVISION_DISCOVERY_INDICATED 0x00000010
- #define P2P_FLAGS_INVITATION_TOBE_GO 0x00000100
- #define P2P_FLAGS_INVITATION_TOBE_GC 0x00000200
- #define P2P_FLAGS_INVITATION_SUCCESS 0x00000400
- #define P2P_FLAGS_INVITATION_WAITING_TARGET 0x00000800
- #define P2P_FLAGS_MASK_INVITATION 0x00000F00
- #define P2P_FLAGS_FORMATION_ON_GOING 0x00010000
- #define P2P_FLAGS_FORMATION_LOCAL_PWID_RDY 0x00020000
- #define P2P_FLAGS_FORMATION_TARGET_PWID_RDY 0x00040000
- #define P2P_FLAGS_FORMATION_COMPLETE 0x00080000
- #define P2P_FLAGS_MASK_FORMATION 0x000F0000
- #define P2P_FLAGS_DEVICE_DISCOVER_REQ 0x00100000
- #define P2P_FLAGS_DEVICE_DISCOVER_DONE 0x00200000
- #define P2P_FLAGS_DEVICE_INVITATION_WAIT 0x00400000
- #define P2P_FLAGS_DEVICE_SERVICE_DISCOVER_WAIT 0x00800000
- #define P2P_FLAGS_MASK_DEVICE_DISCOVER 0x00F00000
- #define P2P_FLAGS_DEVICE_FORMATION_REQUEST 0x01000000
- /* MACRO for flag operation */
- #define SET_FLAGS(_FlagsVar, _BitsToSet) \
- {(_FlagsVar) = ((_FlagsVar) | (_BitsToSet))}
- #define TEST_FLAGS(_FlagsVar, _BitsToCheck) \
- (((_FlagsVar) & (_BitsToCheck)) == (_BitsToCheck))
- #define CLEAR_FLAGS(_FlagsVar, _BitsToClear) \
- {(_FlagsVar) &= ~(_BitsToClear)}
- #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_I 0
- #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_II 0
- #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_III 0
- #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_IV 0
- #define CFG_DISABLE_DELAY_PROVISION_DISCOVERY 0
- #define CFG_CONNECTION_POLICY_2_0 0
- /* Device Password ID */
- enum wps_dev_password_id {
- DEV_PW_DEFAULT = 0x0000,
- DEV_PW_USER_SPECIFIED = 0x0001,
- DEV_PW_MACHINE_SPECIFIED = 0x0002,
- DEV_PW_REKEY = 0x0003,
- DEV_PW_PUSHBUTTON = 0x0004,
- DEV_PW_REGISTRAR_SPECIFIED = 0x0005
- };
- /*******************************************************************************
- * D A T A T Y P E S
- ********************************************************************************
- */
- #if defined(WINDOWS_DDK) || defined(WINDOWS_CE)
- #pragma pack(1)
- #endif
- /* 3 */
- #if 0
- /* P2P 4.1.1 - General P2P Attribute */
- typedef struct _P2P_ATTRIBUTE_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 aucBody[1]; /* Body field */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRIBUTE_T, ATTRIBUTE_HDR_T, *P_P2P_ATTRIBUTE_T, *P_ATTRIBUTE_HDR_T;
- #endif
- /* P2P 4.1.3 - P2P Minor Reason Code Attribute */
- typedef struct _P2P_ATTRI_REASON_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 ucMinorReasonCode; /* Minor Reason Code */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_REASON_T, *P_P2P_ATTRI_REASON_T;
- /* P2P 4.1.4 - P2P Capability Attribute */
- typedef struct _P2P_ATTRI_CAPABILITY_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 ucDeviceCap; /* Device Capability Bitmap */
- UINT_8 ucGroupCap; /* Group Capability Bitmap */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CAPABILITY_T, *P_P2P_ATTRI_CAPABILITY_T;
- /* P2P 4.1.5 - P2P Device ID Attribute */
- typedef struct _P2P_ATTRI_DEV_ID_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_DEV_ID_T, *P_P2P_ATTRI_DEV_ID_T;
- /* P2P 4.1.6 - Group Owner Intent Attribute */
- typedef struct _P2P_ATTRI_GO_INTENT_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 ucGOIntent; /* Group Owner Intent */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GO_INTENT_T, *P_P2P_ATTRI_GO_INTENT_T;
- /* P2P 4.1.7 - Configuration Timeout Attribute */
- typedef struct _P2P_ATTRI_CFG_TIMEOUT_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 ucGOCfgTimeout; /* GO Configuration Timeout */
- UINT_8 ucClientCfgTimeout; /* Client Configuration Timeout */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CFG_TIMEOUT_T, *P_P2P_ATTRI_CFG_TIMEOUT_T;
- /* P2P 4.1.8 - Listen Channel Attribute */
- typedef struct _P2P_ATTRI_LISTEN_CHANNEL_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 aucCountryString[3]; /* Country String */
- UINT_8 ucOperatingClass; /* Operating Class from 802.11 Annex J/P802.11 REVmb 3.0 */
- UINT_8 ucChannelNumber; /* Channel Number */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_LISTEN_CHANNEL_T, *P_P2P_ATTRI_LISTEN_CHANNEL_T;
- /* P2P 4.1.9 - P2P Group BSSID Attribute */
- typedef struct _P2P_ATTRI_GROUP_BSSID_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 aucBssid[MAC_ADDR_LEN]; /* P2P Group BSSID */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_BSSID_T, *P_P2P_ATTRI_GROUP_BSSID_T;
- /* P2P 4.1.11 - Intended P2P Interface Address Attribute */
- typedef struct _P2P_ATTRI_INTENDED_IF_ADDR_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 aucIfAddr[MAC_ADDR_LEN]; /* P2P Interface Address */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INTENDED_IF_ADDR_T, *P_P2P_ATTRI_INTENDED_IF_ADDR_T;
- /* P2P 4.1.12 - P2P Manageability Attribute */
- typedef struct _P2P_ATTRI_MANAGEABILITY_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 ucManageability; /* P2P Manageability Bitmap */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_MANAGEABILITY_T, *P_P2P_ATTRI_MANAGEABILITY_T;
- /* P2P 4.1.13 - Channel List Attribute */
- typedef struct _P2P_ATTRI_CHANNEL_LIST_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 aucCountryString[3]; /* Country String */
- UINT_8 aucChannelEntry[1]; /* Channel Entry List */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CHANNEL_T, *P_P2P_ATTRI_CHANNEL_T;
- /* P2P 4.1.14 - Notice of Absence Attribute */
- typedef struct _P2P_ATTRI_NOA_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 ucIndex; /* Index */
- UINT_8 ucCTWOppPSParam; /* CTWindow and OppPS Parameters */
- UINT_8 aucNoADesc[1]; /* NoA Descriptor */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_NOA_T, *P_P2P_ATTRI_NOA_T;
- typedef struct _NOA_DESCRIPTOR_T {
- UINT_8 ucCountType; /* Count/Type */
- UINT_32 u4Duration; /* Duration */
- UINT_32 u4Interval; /* Interval */
- UINT_32 u4StartTime; /* Start Time */
- } __KAL_ATTRIB_PACKED__ NOA_DESCRIPTOR_T, *P_NOA_DESCRIPTOR_T;
- typedef struct _P2P_ATTRI_DEV_INFO_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
- UINT_16 u2ConfigMethodsBE; /* Config Method */
- DEVICE_TYPE_T rPrimaryDevTypeBE; /* Primary Device Type */
- UINT_8 ucNumOfSecondaryDevType; /* Number of Secondary Device Types */
- DEVICE_TYPE_T arSecondaryDevTypeListBE[1]; /* Secondary Device Type List */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_DEV_INFO_T, *P_P2P_ATTRI_DEV_INFO_T;
- /* WPS 7.1 & 11 WPS TLV Data Format - Device Name */
- typedef struct _DEVICE_NAME_TLV_T {
- UINT_16 u2Id; /* WPS Attribute Type */
- UINT_16 u2Length; /* Data Length */
- UINT_8 aucName[32]; /* Device Name *//* TODO : Fixme */
- } __KAL_ATTRIB_PACKED__ DEVICE_NAME_TLV_T, *P_DEVICE_NAME_TLV_T;
- /* P2P 4.1.16 - P2P Group Info Attribute */
- typedef struct _P2P_CLIENT_INFO_DESC_T {
- UINT_8 ucLength; /* Length */
- UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
- UINT_8 aucIfAddr[MAC_ADDR_LEN]; /* P2P Interface Address */
- UINT_8 ucDeviceCap; /* Device Capability Bitmap */
- UINT_16 u2ConfigMethodsBE; /* Config Method */
- DEVICE_TYPE_T rPrimaryDevTypeBE; /* Primary Device Type */
- UINT_8 ucNumOfSecondaryDevType; /* Number of Secondary Device Types */
- DEVICE_TYPE_T arSecondaryDevTypeListBE[1]; /* Secondary Device Type List */
- } __KAL_ATTRIB_PACKED__ P2P_CLIENT_INFO_DESC_T, *P_P2P_CLIENT_INFO_DESC_T;
- typedef struct _P2P_ATTRI_GROUP_INFO_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- P2P_CLIENT_INFO_DESC_T arClientDesc[1]; /* P2P Client Info Descriptors */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_INFO_T, *P_P2P_ATTRI_GROUP_INFO_T;
- /* P2P 4.1.17 - P2P Group ID Attribute */
- typedef struct _P2P_ATTRI_GROUP_ID_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
- UINT_8 aucSSID[ELEM_MAX_LEN_SSID]; /* SSID */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_ID_T, *P_P2P_ATTRI_GROUP_ID_T;
- /* P2P 4.1.18 - P2P Interface Attribute */
- typedef struct _P2P_ATTRI_INTERFACE_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
- UINT_8 ucIfAddrCount; /* P2P Interface Address Count */
- UINT_8 aucIfAddrList[MAC_ADDR_LEN]; /* P2P Interface Address List */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INTERFACE_T, *P_P2P_ATTRI_INTERFACE_T;
- /* P2P 4.1.19 - Operating Channel Attribute */
- typedef struct _P2P_ATTRI_OPERATING_CHANNEL_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 aucCountryString[3]; /* Country String */
- UINT_8 ucOperatingClass; /* Operating Class from 802.11 Annex J/P802.11 REVmb 3.0 */
- UINT_8 ucChannelNumber; /* Channel Number */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_OPERATING_CHANNEL_T, *P_P2P_ATTRI_OPERATING_CHANNEL_T;
- /* P2P 4.1.20 - Invitation Flags Attribute */
- typedef struct _P2P_ATTRI_INVITATION_FLAG_T {
- UINT_8 ucId; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 ucInviteFlagsBitmap; /* Invitation Flags Bitmap */
- } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INVITATION_FLAG_T, *P_P2P_ATTRI_INVITATION_FLAG_T;
- /* WSC 1.0 Table 28 */
- typedef struct _WSC_ATTRI_VERSION_T {
- UINT_16 u2Id; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_8 ucVersion; /* Version 1.0 or 1.1 */
- } __KAL_ATTRIB_PACKED__ WSC_ATTRI_VERSION_T, *P_WSC_ATTRI_VERSION_T;
- typedef struct _WSC_ATTRI_DEVICE_PASSWORD_ID_T {
- UINT_16 u2Id; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_16 u2DevPasswordId; /* Device Password ID */
- } __KAL_ATTRIB_PACKED__ WSC_ATTRI_DEVICE_PASSWORD_ID_T, *P_WSC_ATTRI_DEVICE_PASSWORD_ID_T;
- typedef struct _WSC_ATTRI_CONFIGURATION_METHOD_T {
- UINT_16 u2Id; /* Attribute ID */
- UINT_16 u2Length; /* Length */
- UINT_16 u2ConfigMethods; /* Configure Methods */
- } __KAL_ATTRIB_PACKED__ WSC_ATTRI_CONFIGURATION_METHOD_T, *P_WSC_ATTRI_CONFIGURATION_METHOD_T;
- #if defined(WINDOWS_DDK) || defined(WINDOWS_CE)
- #pragma pack()
- #endif
- /* 3 --------------- WFA P2P Attributes Handler prototype --------------- */
- typedef UINT_32(*PFN_APPEND_ATTRI_FUNC) (P_ADAPTER_T, BOOLEAN, PUINT_16, PUINT_8, UINT_16);
- typedef VOID(*PFN_HANDLE_ATTRI_FUNC) (P_SW_RFB_T, P_P2P_ATTRIBUTE_T);
- typedef VOID(*PFN_VERIFY_ATTRI_FUNC) (P_SW_RFB_T, P_P2P_ATTRIBUTE_T, PUINT_16);
- typedef UINT_32(*PFN_CALCULATE_VAR_ATTRI_LEN_FUNC) (P_ADAPTER_T, P_STA_RECORD_T);
- typedef enum _ENUM_CONFIG_METHOD_SEL {
- ENUM_CONFIG_METHOD_SEL_AUTO,
- ENUM_CONFIG_METHOD_SEL_USER,
- ENUM_CONFIG_METHOD_SEL_NUM
- } ENUM_CONFIG_METHOD_SEL, *P_ENUM_CONFIG_METHOD_SEL;
- typedef enum _ENUM_P2P_FORMATION_POLICY {
- ENUM_P2P_FORMATION_POLICY_AUTO = 0,
- ENUM_P2P_FORMATION_POLICY_PASSIVE, /* Device would wait GO NEGO REQ instead of sending it actively. */
- ENUM_P2P_FORMATION_POLICY_NUM
- } ENUM_P2P_FORMATION_POLICY, P_ENUM_P2P_FORMATION_POLICY;
- typedef enum _ENUM_P2P_INVITATION_POLICY {
- ENUM_P2P_INVITATION_POLICY_USER = 0,
- ENUM_P2P_INVITATION_POLICY_ACCEPT_FIRST,
- ENUM_P2P_INVITATION_POLICY_DENY_ALL,
- ENUM_P2P_INVITATION_POLICY_NUM
- } ENUM_P2P_INVITATION_POLICY, P_ENUM_P2P_INVITATION_POLICY;
- /* 3 --------------- Data Structure for P2P Operation --------------- */
- /* 3 Session for CONNECTION SETTINGS of P2P */
- struct _P2P_CONNECTION_SETTINGS_T {
- UINT_8 ucDevNameLen;
- UINT_8 aucDevName[WPS_ATTRI_MAX_LEN_DEVICE_NAME];
- DEVICE_TYPE_T rPrimaryDevTypeBE;
- ENUM_P2P_FORMATION_POLICY eFormationPolicy; /* Formation Policy. */
- /*------------WSC Related Param---------------*/
- UINT_16 u2ConfigMethodsSupport; /* Preferred configure method.
- * Some device may not have keypad.
- */
- ENUM_CONFIG_METHOD_SEL eConfigMethodSelType;
- UINT_16 u2TargetConfigMethod; /* Configure method selected by user or auto. */
- UINT_16 u2LocalConfigMethod; /* Configure method of target. */
- BOOLEAN fgIsPasswordIDRdy;
- /*------------WSC Related Param---------------*/
- UINT_8 ucClientConfigTimeout;
- UINT_8 ucGoConfigTimeout;
- UINT_8 ucSecondaryDevTypeCount;
- #if P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT
- DEVICE_TYPE_T arSecondaryDevTypeBE[P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT];
- #endif
- #if 0
- UINT_8 ucRfChannelListCount;
- #if P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT
- UINT_8 aucChannelList[P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT]; /* Channel Numbering
- *depends on 802.11mb
- *Annex J. */
- #endif
- #else
- UINT_8 ucRfChannelListSize;
- #if P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE
- UINT_8 aucChannelEntriesField[P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE];
- #endif
- #endif
- /* Go Intent */
- UINT_8 ucTieBreaker;
- UINT_8 ucGoIntent;
- /* For Device Capability */
- BOOLEAN fgSupportServiceDiscovery;
- BOOLEAN fgSupportClientDiscoverability;
- BOOLEAN fgSupportConcurrentOperation;
- BOOLEAN fgSupportInfraManaged;
- BOOLEAN fgSupportInvitationProcedure;
- /* For Group Capability */
- BOOLEAN fgSupportPersistentP2PGroup;
- BOOLEAN fgSupportIntraBSSDistribution;
- BOOLEAN fgSupportCrossConnection;
- BOOLEAN fgSupportPersistentReconnect;
- BOOLEAN fgP2pGroupLimit;
- BOOLEAN fgSupportOppPS;
- UINT_16 u2CTWindow;
- BOOLEAN fgIsScanReqIssued;
- BOOLEAN fgIsServiceDiscoverIssued;
- /*============ Target Device Connection Settings ============*/
- /* Discover Target Device Info. */
- BOOLEAN fgIsDevId;
- BOOLEAN fgIsDevType;
- /* Encryption mode of Target Device */
- ENUM_PARAM_AUTH_MODE_T eAuthMode;
- /* SSID
- * 1. AP Mode, this is the desired SSID user specified.
- * 2. Client Mode, this is the target SSID to be connected to.
- */
- UINT_8 aucSSID[ELEM_MAX_LEN_SSID];
- UINT_8 ucSSIDLen;
- /* Operating channel requested. */
- UINT_8 ucOperatingChnl;
- ENUM_BAND_T eBand;
- /* Linten channel requested. */
- UINT_8 ucListenChnl;
- /* For device discover address/type. */
- UINT_8 aucTargetDevAddr[MAC_ADDR_LEN]; /* P2P Device Address, for P2P Device Discovery
- *& P2P Connection. */
- #if CFG_ENABLE_WIFI_DIRECT
- P_P2P_DEVICE_DESC_T prTargetP2pDesc;
- #endif
- UINT_8 ucLastStatus; /* P2P FSM would append status attribute according to this
- *field. */
- #if !CFG_DISABLE_DELAY_PROVISION_DISCOVERY
- UINT_8 ucLastDialogToken;
- UINT_8 aucIndicateDevAddr[MAC_ADDR_LEN];
- #endif
- #if 0
- UINT_8 ucTargetRfChannelListCount;
- #if P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT
- UINT_8 aucTargetChannelList[P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT]; /* Channel
- *Numbering
- *depends on
- *802.11mb Annex
- *J. */
- #endif
- #endif
- };
- typedef enum _ENUM_P2P_IOCTL_T {
- P2P_IOCTL_IDLE = 0,
- P2P_IOCTL_DEV_DISCOVER,
- P2P_IOCTL_INVITATION_REQ,
- P2P_IOCTL_SERV_DISCOVER,
- P2P_IOCTL_WAITING,
- P2P_IOCTL_NUM
- } ENUM_P2P_IOCTL_T;
- /*---------------- Service Discovery Related -------------------*/
- typedef enum _ENUM_SERVICE_TX_TYPE_T {
- ENUM_SERVICE_TX_TYPE_BY_DA,
- ENUM_SERVICE_TX_TYPE_BY_CHNL,
- ENUM_SERVICE_TX_TYPE_NUM
- } ENUM_SERVICE_TX_TYPE_T;
- typedef struct _SERVICE_DISCOVERY_FRAME_DATA_T {
- QUE_ENTRY_T rQueueEntry;
- P_MSDU_INFO_T prSDFrame;
- ENUM_SERVICE_TX_TYPE_T eServiceType;
- UINT_8 ucSeqNum;
- union {
- UINT_8 ucChannelNum;
- UINT_8 aucPeerAddr[MAC_ADDR_LEN];
- } uTypeData;
- BOOLEAN fgIsTxDoneIndicate;
- } SERVICE_DISCOVERY_FRAME_DATA_T, *P_SERVICE_DISCOVERY_FRAME_DATA_T;
- struct _P2P_FSM_INFO_T_DEPRECATED {
- /* P2P FSM State */
- ENUM_P2P_STATE_T eCurrentState;
- /* Channel */
- BOOLEAN fgIsChannelRequested;
- ENUM_P2P_STATE_T ePreviousState;
- ENUM_P2P_STATE_T eReturnState; /* Return state after current activity finished or
- *abort. */
- UINT_8 aucTargetIfAddr[PARAM_MAC_ADDR_LEN];
- P_BSS_DESC_T prTargetBss; /* BSS of target P2P Device. For Connection/Service
- *Discovery */
- P_STA_RECORD_T prTargetStaRec;
- BOOLEAN fgIsRsponseProbe; /* Indicate if P2P FSM can response probe
- *request frame. */
- /* Sequence number of requested message. */
- UINT_8 ucSeqNumOfReqMsg; /* Used for SAA FSM request message. */
- /* Channel Privilege */
- UINT_8 ucSeqNumOfChReq; /* Used for Channel Request message. */
- UINT_8 ucSeqNumOfScnMsg; /* Used for SCAN FSM request message. */
- UINT_8 ucSeqNumOfCancelMsg;
- UINT_8 ucDialogToken;
- UINT_8 ucRxDialogToken;
- /* Timer */
- TIMER_T rDeviceDiscoverTimer; /* For device discovery time of each discovery
- *request from user. */
- TIMER_T rOperationListenTimer; /* For Find phase under operational state. */
- TIMER_T rFSMTimer; /* A timer used for Action frame timeout usage.
- **/
- TIMER_T rRejoinTimer; /* A timer used for Action frame timeout usage.
- **/
- /* Flag to indicate Provisioning */
- BOOLEAN fgIsConnectionRequested;
- /* Current IOCTL. */
- ENUM_P2P_IOCTL_T eP2pIOCTL;
- UINT_8 ucAvailableAuthTypes; /* Used for AUTH_MODE_AUTO_SWITCH */
- /*--------SERVICE DISCOVERY--------*/
- QUE_T rQueueGASRx; /* Input Request/Response. */
- QUE_T rQueueGASTx; /* Output Response. */
- P_SERVICE_DISCOVERY_FRAME_DATA_T prSDRequest;
- UINT_8 ucVersionNum; /* GAS packet sequence number for...Action Frame? */
- UINT_8 ucGlobalSeqNum; /* Sequence Number of RX SD packet. */
- /*--------Service DISCOVERY--------*/
- /*--------DEVICE DISCOVERY---------*/
- UINT_8 aucTargetGroupID[PARAM_MAC_ADDR_LEN];
- UINT_16 u2TargetGroupSsidLen;
- UINT_8 aucTargetSsid[32];
- UINT_8 aucSearchingP2pDevice[PARAM_MAC_ADDR_LEN];
- UINT_8 ucDLToken;
- /*----------------------------------*/
- /* Indicating Peer Status. */
- UINT_32 u4Flags;
- /*Indicating current running mode. */
- BOOLEAN fgIsApMode;
- /*------------INVITATION------------*/
- ENUM_P2P_INVITATION_POLICY eInvitationRspPolicy;
- /*----------------------------------*/
- };
- struct _P2P_SPECIFIC_BSS_INFO_T {
- /* For GO(AP) Mode - Compose TIM IE */
- UINT_16 u2SmallestAID;
- UINT_16 u2LargestAID;
- UINT_8 ucBitmapCtrl;
- /* UINT_8 aucPartialVirtualBitmap[MAX_LEN_TIM_PARTIAL_BMP]; */
- /* For GC/GO OppPS */
- BOOLEAN fgEnableOppPS;
- UINT_16 u2CTWindow;
- /* For GC/GO NOA */
- UINT_8 ucNoAIndex;
- UINT_8 ucNoATimingCount; /* Number of NoA Timing */
- NOA_TIMING_T arNoATiming[P2P_MAXIMUM_NOA_COUNT];
- BOOLEAN fgIsNoaAttrExisted;
- /* For P2P Device */
- UINT_8 ucRegClass; /* Regulatory Class for channel. */
- UINT_8 ucListenChannel; /* Linten Channel only on channels 1, 6 and 11
- *in the 2.4 GHz. */
- UINT_8 ucPreferredChannel; /* Operating Channel, should be one of channel
- *list in p2p connection settings. */
- ENUM_CHNL_EXT_T eRfSco;
- ENUM_BAND_T eRfBand;
- /* Extended Listen Timing. */
- UINT_16 u2AvailabilityPeriod;
- UINT_16 u2AvailabilityInterval;
- #if 0 /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) */
- UINT_16 u2IELenForBCN;
- UINT_8 aucBeaconIECache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE + WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
- /* UINT_16 u2IELenForProbeRsp; */
- /* UINT_8 aucProbeRspIECache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE + WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE]; */
- UINT_16 u2IELenForAssocRsp;
- UINT_8 aucAssocRspIECache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE + WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
- #else
- UINT_16 u2AttributeLen;
- UINT_8 aucAttributesCache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
- UINT_16 u2WscAttributeLen;
- UINT_8 aucWscAttributesCache[WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
- #endif
- UINT_8 aucGroupID[MAC_ADDR_LEN];
- UINT_16 u2GroupSsidLen;
- UINT_8 aucGroupSsid[ELEM_MAX_LEN_SSID];
- PARAM_CUSTOM_NOA_PARAM_STRUCT_T rNoaParam;
- PARAM_CUSTOM_OPPPS_PARAM_STRUCT_T rOppPsParam;
- #if 0 /* CL2055022 */
- UINT_16 u2WpaIeLen;
- UINT_8 aucWpaIeBuffer[ELEM_HDR_LEN + ELEM_MAX_LEN_WPA];
- #endif
- };
- typedef struct _MSG_P2P_DEVICE_DISCOVER_T {
- MSG_HDR_T rMsgHdr; /* Must be the first member */
- UINT_32 u4DevDiscoverTime; /* 0: Infinite, 1~X: in unit of MS. */
- BOOLEAN fgIsSpecificType;
- #if CFG_ENABLE_WIFI_DIRECT
- P2P_DEVICE_TYPE_T rTargetDeviceType;
- #endif
- UINT_8 aucTargetDeviceID[MAC_ADDR_LEN];
- } MSG_P2P_DEVICE_DISCOVER_T, *P_MSG_P2P_DEVICE_DISCOVER_T;
- typedef struct _MSG_P2P_INVITATION_REQUEST_T {
- MSG_HDR_T rMsgHdr; /* Must be the first member */
- UINT_8 aucDeviceID[MAC_ADDR_LEN]; /* Target Device ID to be invited. */
- } MSG_P2P_INVITATION_REQUEST_T, *P_MSG_P2P_INVITATION_REQUEST_T;
- typedef struct _MSG_P2P_FUNCTION_SWITCH_T {
- MSG_HDR_T rMsgHdr; /* Must be the first member */
- BOOLEAN fgIsFuncOn;
- } MSG_P2P_FUNCTION_SWITCH_T, *P_MSG_P2P_FUNCTION_SWITCH_T;
- typedef struct _MSG_P2P_SERVICE_DISCOVERY_REQUEST_T {
- MSG_HDR_T rMsgHdr; /* Must be the first member */
- UINT_8 aucDeviceID[MAC_ADDR_LEN];
- BOOLEAN fgNeedTxDoneIndicate;
- UINT_8 ucSeqNum;
- } MSG_P2P_SERVICE_DISCOVERY_REQUEST_T, *P_MSG_P2P_SERVICE_DISCOVERY_REQUEST_T;
- /*******************************************************************************
- * P U B L I C D A T A
- ********************************************************************************
- */
- /*******************************************************************************
- * P R I V A T E D A T A
- ********************************************************************************
- */
- /*******************************************************************************
- * M A C R O S
- ********************************************************************************
- */
- /*******************************************************************************
- * F U N C T I O N D E C L A R A T I O N S
- ********************************************************************************
- */
- /*======P2P State======*/
- VOID
- p2pStateInit_LISTEN(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN P_P2P_SPECIFIC_BSS_INFO_T
- prSP2pBssInfo, IN UINT_8 ucListenChannel);
- VOID p2pStateAbort_LISTEN(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsChannelExtenstion);
- VOID p2pStateAbort_SEARCH_SCAN(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsChannelExtenstion);
- VOID p2pStateAbort_GO_OPERATION(IN P_ADAPTER_T prAdapter);
- VOID p2pStateAbort_GC_OPERATION(IN P_ADAPTER_T prAdapter);
- VOID
- p2pStateInit_CONFIGURATION(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN P_BSS_INFO_T prP2pBssInfo, IN
- P_P2P_SPECIFIC_BSS_INFO_T prP2pSpecBssInfo);
- VOID p2pStateAbort_CONFIGURATION(IN P_ADAPTER_T prAdapter);
- VOID p2pStateInit_JOIN(IN P_ADAPTER_T prAdapter);
- VOID p2pStateAbort_JOIN(IN P_ADAPTER_T prAdapter);
- /*====== P2P Functions ======*/
- VOID p2pFuncInitGO(IN P_ADAPTER_T prAdapter);
- VOID
- p2pFuncDisconnect(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN BOOLEAN fgSendDeauth, IN UINT_16
- u2ReasonCode);
- VOID p2pFuncRunEventProvisioningComplete(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- WLAN_STATUS p2pFuncSetGroupID(IN P_ADAPTER_T prAdapter, IN PUINT_8 pucGroupID, IN PUINT_8 pucSsid, IN UINT_8 ucSsidLen);
- WLAN_STATUS
- p2pFuncSendDeviceDiscoverabilityReqFrame(IN P_ADAPTER_T prAdapter, IN UINT_8 aucDestAddr[], IN UINT_8 ucDialogToken);
- WLAN_STATUS
- p2pFuncSendDeviceDiscoverabilityRspFrame(IN P_ADAPTER_T prAdapter, IN UINT_8 aucDestAddr[], IN UINT_8 ucDialogToken);
- UINT_8 p2pFuncGetVersionNumOfSD(IN P_ADAPTER_T prAdapter);
- /*====== P2P FSM ======*/
- VOID p2pFsmRunEventConnectionRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventDeviceDiscoveryRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventDeviceDiscoveryAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventRxGroupNegotiationReqFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
- WLAN_STATUS
- p2pFsmRunEventGroupNegotiationRequestTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN
- ENUM_TX_RESULT_CODE_T rTxDoneStatus);
- WLAN_STATUS
- p2pFsmRunEventGroupNegotiationResponseTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN
- ENUM_TX_RESULT_CODE_T rTxDoneStatus);
- WLAN_STATUS
- p2pFsmRunEventGroupNegotiationConfirmTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN
- ENUM_TX_RESULT_CODE_T rTxDoneStatus);
- WLAN_STATUS
- p2pFsmRunEventProvisionDiscoveryRequestTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN
- ENUM_TX_RESULT_CODE_T rTxDoneStatus);
- WLAN_STATUS
- p2pFsmRunEventProvisionDiscoveryResponseTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN
- ENUM_TX_RESULT_CODE_T rTxDoneStatus);
- WLAN_STATUS
- p2pFsmRunEventInvitationRequestTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T
- rTxDoneStatus);
- VOID p2pFsmRunEventRxDeauthentication(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prSwRfb);
- VOID p2pFsmRunEventRxDisassociation(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prSwRfb);
- VOID p2pFsmRunEventBeaconTimeout(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prP2pBssInfo);
- WLAN_STATUS
- p2pFsmRunEventDeauthTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T
- rTxDoneStatus);
- #if 1
- #endif
- /* //////////////////////////////////////////////////////////////////////// */
- /* //////////////////////////////////////////////////////////////////////// */
- /* //////////////////////////////////////////////////////////////////////// */
- /* //////////////////////////////////////////////////////////////////////// */
- /* //////////////////////////////////////////////////////////////////////// */
- /* //////////////////////////////////////////////////////////////////////// */
- /* //////////////////////////////////////////////////////////////////////// */
- /* //////////////////////////////////////////////////////////////////////// */
- /* //////////////////////////////////////////////////////////////////////// */
- /* //////////////////////////////////////////////////////////////////////// */
- /* //////////////////////////////////////////////////////////////////////// */
- /*======Mail Box Event Message=====*/
- VOID p2pFsmRunEventConnectionAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventConnectionTrigger(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventP2PFunctionSwitch(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventChGrant(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventJoinComplete(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventConnectionPause(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID
- p2pIndicationOfMediaStateToHost(IN P_ADAPTER_T prAdapter, IN ENUM_PARAM_MEDIA_STATE_T eConnectionState, IN UINT_8
- aucTargetAddr[]);
- VOID p2pUpdateBssInfoForJOIN(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prAssocRspSwRfb);
- /*======Mail Box Event Message=====*/
- VOID p2pFsmInit(IN P_ADAPTER_T prAdapter);
- VOID p2pFsmUninit(IN P_ADAPTER_T prAdapter);
- VOID p2pFsmSteps(IN P_ADAPTER_T prAdapter, IN ENUM_P2P_STATE_T eNextState);
- VOID p2pStartGO(IN P_ADAPTER_T prAdapter);
- VOID p2pAssignSsid(IN PUINT_8 pucSsid, IN PUINT_8 pucSsidLen);
- VOID p2pFsmRunEventIOReqTimeout(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Param);
- VOID p2pFsmRunEventSearchPeriodTimeout(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Param);
- VOID p2pFsmRunEventFsmTimeout(IN P_ADAPTER_T prAdapter, IN ULONG ulParamPtr);
- VOID p2pFsmRunEventRejoinTimeout(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Parm);
- /*=============== P2P Function Related ================*/
- /*=============== P2P Function Related ================*/
- #if CFG_TEST_WIFI_DIRECT_GO
- VOID p2pTest(IN P_ADAPTER_T prAdapter);
- #endif /* CFG_TEST_WIFI_DIRECT_GO */
- VOID p2pGenerateP2P_IEForBeacon(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
- VOID p2pGenerateP2P_IEForAssocReq(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
- VOID p2pGenerateP2P_IEForAssocRsp(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
- VOID
- p2pGenerateP2P_IEForProbeReq(IN P_ADAPTER_T prAdapter, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
- UINT_32 p2pCalculateP2P_IELenForBeacon(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec);
- UINT_32 p2pCalculateP2P_IELenForAssocRsp(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec);
- UINT_32 p2pCalculateP2P_IELenForProbeReq(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec);
- VOID p2pGenerateWSC_IEForProbeResp(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
- VOID
- p2pGenerateWSC_IEForProbeReq(IN P_ADAPTER_T prAdapter, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
- UINT_16 p2pCalculateWSC_IELenForProbeReq(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex);
- UINT_32 p2pCalculateWSC_IELenForProbeResp(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec);
- UINT_32
- p2pAppendAttriStatus(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN
- UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriCapability(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
- IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriGoIntent(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN
- UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriCfgTimeout(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
- IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriGroupBssid(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
- IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriDeviceIDForBeacon(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
- pucBuf, IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriDeviceIDForProbeReq(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
- pucBuf, IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriDeviceIDForDeviceDiscoveryReq(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset,
- IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriListenChannel(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
- pucBuf, IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriIntendP2pIfAddr(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
- pucBuf, IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriChannelList(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
- IN UINT_16 u2BufSize);
- UINT_32 p2pCalculateAttriLenChannelList(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
- UINT_32
- p2pAppendAttriNoA(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN
- UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriDeviceInfo(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
- IN UINT_16 u2BufSize);
- UINT_32 p2pCalculateAttriLenDeviceInfo(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
- UINT_32
- p2pAppendAttriGroupInfo(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
- IN UINT_16 u2BufSize);
- UINT_32 p2pCalculateAttriLenGroupInfo(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
- UINT_32
- p2pAppendAttriP2pGroupID(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
- IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriOperatingChannel(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
- pucBuf, IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriInvitationFlag(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
- pucBuf, IN UINT_16 u2BufSize);
- VOID
- p2pGenerateWscIE(IN P_ADAPTER_T prAdapter, IN UINT_8 ucOuiType, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN
- PUINT_8 pucBuf, IN UINT_16 u2BufSize, IN APPEND_VAR_ATTRI_ENTRY_T arAppendAttriTable[],
- IN UINT_32 u4AttriTableSize);
- UINT_32
- p2pAppendAttriWSCConfigMethod(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
- pucBuf, IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriWSCVersion(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
- IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriWSCGONegReqDevPasswordId(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN
- PUINT_8 pucBuf, IN UINT_16 u2BufSize);
- UINT_32
- p2pAppendAttriWSCGONegRspDevPasswordId(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN
- PUINT_8 pucBuf, IN UINT_16 u2BufSize);
- WLAN_STATUS
- p2pGetWscAttriList(IN P_ADAPTER_T prAdapter, IN UINT_8 ucOuiType, IN PUINT_8 pucIE, IN UINT_16 u2IELength, OUT PPUINT_8
- ppucAttriList, OUT PUINT_16 pu2AttriListLen);
- WLAN_STATUS
- p2pGetAttriList(IN P_ADAPTER_T prAdapter, IN UINT_8 ucOuiType, IN PUINT_8 pucIE, IN UINT_16 u2IELength, OUT PPUINT_8
- ppucAttriList, OUT PUINT_16 pu2AttriListLen);
- VOID p2pRunEventAAATxFail(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
- WLAN_STATUS p2pRunEventAAASuccess(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
- WLAN_STATUS p2pRunEventAAAComplete(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
- WLAN_STATUS p2pSendProbeResponseFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
- BOOLEAN p2pFsmRunEventRxProbeRequestFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
- VOID p2pFsmRunEventRxProbeResponseFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb, IN P_BSS_DESC_T prBssDesc);
- WLAN_STATUS p2pRxPublicActionFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
- WLAN_STATUS p2pRxActionFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
- VOID p2pFsmRunEventRxGroupNegotiationRspFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
- VOID p2pFsmRunEventRxGroupNegotiationCfmFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
- #if 0 /* frog */
- BOOLEAN scanMatchFilterOfP2P(IN P_SW_RFB_T prSWRfb, IN PP_BSS_DESC_T pprBssDesc);
- #endif /* frog */
- VOID
- p2pProcessEvent_UpdateNOAParam(IN P_ADAPTER_T prAdapter, UINT_8 ucNetTypeIndex, P_EVENT_UPDATE_NOA_PARAMS_T
- prEventUpdateNoaParam);
- VOID p2pFuncCompleteIOCTL(IN P_ADAPTER_T prAdapter, IN WLAN_STATUS rWlanStatus);
- /*******************************************************************************
- * F U N C T I O N S
- ********************************************************************************
- */
- #ifndef _lint
- /* Kevin: we don't have to call following function to inspect the data structure.
- * It will check automatically while at compile time.
- * We'll need this for porting driver to different RTOS.
- */
- static __KAL_INLINE__ VOID p2pDataTypeCheck(VOID)
- {
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(IE_P2P_T) == (2 + 4 + 1)); /* all UINT_8 */
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRIBUTE_T) == (3 + 1));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_STATUS_T) == (3 + 1));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_REASON_T) == (3 + 1));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CAPABILITY_T) == (3 + 2));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_DEV_ID_T) == (3 + 6));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GO_INTENT_T) == (3 + 1));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CFG_TIMEOUT_T) == (3 + 2));
- #if CID52_53_54
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_LISTEN_CHANNEL_T) == (3 + 5));
- #else
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_LISTEN_CHANNEL_T) == (3 + 5));
- #endif
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_BSSID_T) == (3 + 6));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_EXT_LISTEN_TIMING_T) == (3 + 4));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_INTENDED_IF_ADDR_T) == (3 + 6));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_MANAGEABILITY_T) == (3 + 1));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CHANNEL_T) == (3 + 4));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(CHANNEL_ENTRY_FIELD_T) == 3);
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_NOA_T) == (3 + 3));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(NOA_DESCRIPTOR_T) == 13);
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(DEVICE_TYPE_T) == 8);
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_DEV_INFO_T) == (3 + 6 + 2 + 8 + 1 + 8));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(DEVICE_NAME_TLV_T) == (4 + 32));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_CLIENT_INFO_DESC_T) == (1 + 6 + 6 + 1 + 2 + 8 + 1 + 8));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_INFO_T) == (3 + (1 + 6 + 6 + 1 + 2 + 8 + 1 + 8)));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_ID_T) == (3 + 38));
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_INTERFACE_T) == (3 + 13));
- #if CID52_53_54
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_OPERATING_CHANNEL_T) == (3 + 5));
- #else
- DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_OPERATING_CHANNEL_T) == (3 + 5));
- #endif
- }
- #endif /* _lint */
- #endif /* _P2P_FSM_H */
|