p2p_fsm.h 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654
  1. /*
  2. ** Id: //Department/DaVinci/TRUNK/WiFi_P2P_Driver/include/mgmt/p2p_fsm.h#23
  3. */
  4. /*! \file p2p_fsm.h
  5. * \brief Declaration of functions and finite state machine for P2P Module.
  6. *
  7. * Declaration of functions and finite state machine for P2P Module.
  8. */
  9. /*
  10. ** Log: p2p_fsm.h
  11. **
  12. ** 07 25 2014 eason.tsai
  13. ** AOSP
  14. **
  15. ** 02 27 2013 yuche.tsai
  16. ** [BORA00002398] [MT6630][Volunteer Patch] P2P Driver Re-Design for Multiple BSS support
  17. ** Add p2p_rlm.c, p2p_rlm_obss.c, fix compile warning & error.
  18. **
  19. ** 02 27 2013 yuche.tsai
  20. ** [BORA00002398] [MT6630][Volunteer Patch] P2P Driver Re-Design for Multiple BSS support
  21. ** Add new code, fix compile warning.
  22. **
  23. ** 01 30 2013 yuche.tsai
  24. ** [BORA00002398] [MT6630][Volunteer Patch] P2P Driver Re-Design for Multiple BSS support
  25. ** Code first update.
  26. **
  27. ** 01 17 2013 cm.chang
  28. ** [BORA00002149] [MT6630 Wi-Fi] Initial software development
  29. ** Use ucBssIndex to replace eNetworkTypeIndex
  30. **
  31. ** 09 17 2012 cm.chang
  32. ** [BORA00002149] [MT6630 Wi-Fi] Initial software development
  33. ** Duplicate source from MT6620 v2.3 driver branch
  34. ** (Davinci label: MT6620_WIFI_Driver_V2_3_120913_1942_As_MT6630_Base)
  35. **
  36. ** 08 24 2012 yuche.tsai
  37. ** NULL
  38. ** Fix bug of invitation request.
  39. **
  40. ** 07 31 2012 yuche.tsai
  41. ** NULL
  42. ** Update Active/Deactive network policy for P2P network.
  43. ** Highly related to power saving.
  44. **
  45. ** 07 25 2012 yuche.tsai
  46. ** NULL
  47. ** Bug fix for TX mgmt frame.
  48. **
  49. ** 07 24 2012 yuche.tsai
  50. ** NULL
  51. ** Bug fix for JB.
  52. **
  53. ** 07 19 2012 yuche.tsai
  54. ** NULL
  55. ** Code update for JB.
  56. *
  57. * 07 18 2012 yuche.tsai
  58. * NULL
  59. * add one file.
  60. *
  61. * 12 02 2011 yuche.tsai
  62. * NULL
  63. * Resolve class 3 error issue under AP mode.
  64. *
  65. * data frame may TX before Assoc Response TX.
  66. *
  67. * 11 11 2011 yuche.tsai
  68. * NULL
  69. * Fix work thread cancel issue.
  70. *
  71. * 11 11 2011 yuche.tsai
  72. * NULL
  73. * Fix default device name issue.
  74. *
  75. * 11 09 2011 yuche.tsai
  76. * [WCXRP00001093] [Need Patch][Volunteer Patch] Service Discovery 2.0 state transition issue.
  77. * Fix SD2.0 issue which may cause KE. (Monkey test)
  78. *
  79. * 11 08 2011 yuche.tsai
  80. *[WCXRP00001094][Volunteer Patch][Driver] Driver version & supplicant version.
  81. * query & set support for service discovery version check.
  82. * Add support for driver version query & p2p supplicant verseion set.
  83. * For new service discovery mechanism sync.
  84. *
  85. * 10 18 2011 yuche.tsai
  86. * [WCXRP00001045] [WiFi Direct][Driver] Check 2.1 branch.
  87. * Support Channel Query.
  88. *
  89. * 10 18 2011 yuche.tsai
  90. * [WCXRP00001045] [WiFi Direct][Driver] Check 2.1 branch.
  91. * New 2.1 branch
  92. *
  93. *
  94. * 09 01 2011 yuche.tsai
  95. * NULL
  96. * Fix channel stay interval.
  97. * Sync channel stay interval & channel request interval under AP mode..
  98. *
  99. * 08 30 2011 yuche.tsai
  100. * [WCXRP00000953] [Volunteer Patch][Driver] Hot Spot Channel ASSERT issue.
  101. * Fix hot spot FW assert issue when under concurrent case. (DBG enable only)
  102. *
  103. * 08 16 2011 cp.wu
  104. * [WCXRP00000934] [MT6620 Wi-Fi][Driver][P2P] Wi-Fi hot spot with auto sparse channel residence
  105. * auto channel decision for 2.4GHz hot spot mode
  106. *
  107. * 08 16 2011 yuche.tsai
  108. * NULL
  109. * Fix scan policy for Active LISTEN scan.
  110. *
  111. * 08 09 2011 yuche.tsai
  112. * [WCXRP00000919] [Volunteer Patch][WiFi Direct][Driver] Invitation New Feature.
  113. * Invitation Feature add on.
  114. *
  115. * 08 02 2011 yuche.tsai
  116. *[WCXRP00000896][Volunteer Patch][WiFi Direct][Driver] GO with multiple client.
  117. * TX deauth to a disconnecting device issue.
  118. * Support TX Deauth Issue.
  119. *
  120. * 07 26 2011 yuche.tsai
  121. * [WCXRP00000875] [Volunteer Patch][WiFi Direct][Driver] MT6620 IOT issue with realtek test bed solution.
  122. * Turn off persistent group support for V2.0 release.
  123. *
  124. * 07 18 2011 yuche.tsai
  125. * [WCXRP00000856] [Volunteer Patch][WiFi Direct][Driver] MT6620 WiFi Direct IOT Issue with BCM solution.
  126. * Fix compile error.
  127. *
  128. * 07 18 2011 yuche.tsai
  129. * [WCXRP00000856] [Volunteer Patch][WiFi Direct][Driver] MT6620 WiFi Direct IOT Issue with BCM solution.
  130. * Fix MT6620 WiFi Direct IOT Issue with BCM solution.
  131. *
  132. * 07 11 2011 yuche.tsai
  133. * [WCXRP00000845] [Volunteer Patch][WiFi Direct] WiFi Direct Device Connection Robustness
  134. * Enhance Connection Robustness.
  135. *
  136. * 07 08 2011 yuche.tsai
  137. * [WCXRP00000841] [Volunteer Patch][WiFi Direct] Group Owner Setting.
  138. * Update GO configure parameter.
  139. *
  140. * 07 05 2011 yuche.tsai
  141. * [WCXRP00000821] [Volunteer Patch][WiFi Direct][Driver] WiFi Direct Connection Speed Issue
  142. * Disable enhancement II for debugging.
  143. *
  144. * 07 05 2011 yuche.tsai
  145. * [WCXRP00000821] [Volunteer Patch][WiFi Direct][Driver] WiFi Direct Connection Speed Issue
  146. * Refine compile flag.
  147. *
  148. * 07 05 2011 yuche.tsai
  149. * [WCXRP00000821] [Volunteer Patch][WiFi Direct][Driver] WiFi Direct Connection Speed Issue
  150. * Add wifi direct connection enhancement method I, II & VI.
  151. *
  152. * 06 20 2011 yuche.tsai
  153. * [WCXRP00000799] [Volunteer Patch][MT6620][Driver] Connection Indication Twice Issue.
  154. * Fix connection indication twice issue.
  155. *
  156. * 06 07 2011 yuche.tsai
  157. * [WCXRP00000763] [Volunteer Patch][MT6620][Driver] RX Service Discovery Frame under AP mode Issue
  158. * Fix RX SD request under AP mode issue.
  159. *
  160. * 05 04 2011 yuche.tsai
  161. * NULL
  162. * Support partial persistent group function.
  163. *
  164. * 04 20 2011 terry.wu
  165. * [WCXRP00000660] [MT6620 Wi-Fi][Driver] Remove flag CFG_WIFI_DIRECT_MOVED
  166. * Remove CFG_WIFI_DIRECT_MOVED.
  167. *
  168. * 04 08 2011 yuche.tsai
  169. * [WCXRP00000624] [Volunteer Patch][MT6620][Driver] Add device discoverability support for GO.
  170. * Add device discoverability support.
  171. *
  172. * 03 25 2011 yuche.tsai
  173. * NULL
  174. * Improve some error handleing.
  175. *
  176. * 03 22 2011 george.huang
  177. * [WCXRP00000504] [MT6620 Wi-Fi][FW] Support Sigma CAPI for power saving related command
  178. * link with supplicant commands
  179. *
  180. * 03 22 2011 yuche.tsai
  181. * NULL
  182. * 1.Shorten the LISTEN interval.
  183. * 2. Fix IF address issue when we are GO
  184. * 3. Fix LISTEN channel issue.
  185. *
  186. * 03 21 2011 yuche.tsai
  187. * NULL
  188. * Change P2P Connection Request Flow.
  189. *
  190. * 03 19 2011 yuche.tsai
  191. * [WCXRP00000584] [Volunteer Patch][MT6620][Driver] Add beacon timeout support for WiFi Direct.
  192. * Add beacon timeout support.
  193. *
  194. * 03 19 2011 yuche.tsai
  195. * [WCXRP00000581] [Volunteer Patch][MT6620][Driver] P2P IE in Assoc Req Issue
  196. * Append P2P IE in Assoc Req, so that GC can be discovered in probe response of GO.
  197. *
  198. * 03 18 2011 yuche.tsai
  199. * [WCXRP00000574] [Volunteer Patch][MT6620][Driver] Modify P2P FSM Connection Flow
  200. * Modify connection flow after Group Formation Complete, or device connect to a GO.
  201. * Instead of request channel & connect directly, we use scan to allocate channel bandwidth & connect after RX BCN.
  202. *
  203. * 03 15 2011 yuche.tsai
  204. * [WCXRP00000560] [Volunteer Patch][MT6620][Driver] P2P Connection from UI using KEY/DISPLAY issue
  205. * Fix some configure method issue.
  206. *
  207. * 03 10 2011 yuche.tsai
  208. * NULL
  209. * Add P2P API.
  210. *
  211. * 03 07 2011 yuche.tsai
  212. * [WCXRP00000502] [Volunteer Patch][MT6620][Driver] Fix group ID issue when doing Group Formation.
  213. * .
  214. *
  215. * 03 07 2011 wh.su
  216. * [WCXRP00000506] [MT6620 Wi-Fi][Driver][FW] Add Security check related code
  217. * rename the define to anti_pviracy.
  218. *
  219. * 03 05 2011 wh.su
  220. * [WCXRP00000506] [MT6620 Wi-Fi][Driver][FW] Add Security check related code
  221. * add the code to get the check rsponse and indicate to app.
  222. *
  223. * 03 01 2011 yuche.tsai
  224. * [WCXRP00000501] [Volunteer Patch][MT6620][Driver] No common channel issue when doing GO formation
  225. * Update channel issue when doing GO formation..
  226. *
  227. * 03 01 2011 yuche.tsai
  228. * [WCXRP00000245] 1. Invitation Request/Response.
  229. * 2. Provision Discovery Request/Response
  230. *
  231. * Update Service Discovery Related wlanoid function.
  232. *
  233. * 02 18 2011 wh.su
  234. * [WCXRP00000471] [MT6620 Wi-Fi][Driver] Add P2P Provison discovery append Config Method attribute at WSC IE
  235. * fixed the ioctl setting that index not map to spec defined config method.
  236. *
  237. * 02 18 2011 yuche.tsai
  238. * [WCXRP00000480] [Volunteer Patch][MT6620][Driver] WCS IE format issue
  239. * Fix WSC IE BE format issue.
  240. *
  241. * 02 17 2011 wh.su
  242. * [WCXRP00000471] [MT6620 Wi-Fi][Driver] Add P2P Provison discovery append Config Method attribute at WSC IE
  243. * append the WSC IE config method attribute at provision discovery request.
  244. *
  245. * 02 11 2011 yuche.tsai
  246. * [WCXRP00000431] [Volunteer Patch][MT6620][Driver] Add MLME support for deauthentication under AP(Hot-Spot) mode.
  247. * Add two function prototype.
  248. *
  249. * 02 10 2011 yuche.tsai
  250. * [WCXRP00000431] [Volunteer Patch][MT6620][Driver] Add MLME support for deauthentication under AP(Hot-Spot) mode.
  251. * Support Disassoc & Deauthentication for Hot-Spot.
  252. *
  253. * 02 09 2011 yuche.tsai
  254. * [WCXRP00000245] 1. Invitation Request/Response.
  255. *
  256. * 2. Provision Discovery Request/Response
  257. *
  258. * Add Service Discovery Indication Related code.
  259. *
  260. * 02 09 2011 yuche.tsai
  261. * [WCXRP00000431] [Volunteer Patch][MT6620][Driver] Add MLME support for deauthentication under AP(Hot-Spot) mode.
  262. * Add Support for MLME deauthentication for Hot-Spot.
  263. *
  264. * 02 09 2011 yuche.tsai
  265. * [WCXRP00000429] [Volunteer Patch][MT6620][Driver] Hot Spot Client Limit Issue
  266. * Fix Client Limit Issue.
  267. *
  268. * 01 26 2011 yuche.tsai
  269. * [WCXRP00000245] 1. Invitation Request/Response.
  270. *
  271. * 2. Provision Discovery Request/Response
  272. *
  273. * Add Service Discovery Function.
  274. *
  275. * 01 25 2011 terry.wu
  276. * [WCXRP00000393] [MT6620 Wi-Fi][Driver] Add new module insert parameter
  277. * Add a new module parameter to indicate current runnig mode, P2P or AP.
  278. *
  279. * 01 19 2011 george.huang
  280. * [WCXRP00000355] [MT6620 Wi-Fi] Set WMM-PS related setting with qualifying AP capability
  281. * Null NOA attribute setting when no related parameters.
  282. *
  283. * 01 12 2011 yuche.tsai
  284. * [WCXRP00000352] [Volunteer Patch][MT6620][Driver] P2P Statsion Record Client List Issue
  285. * Modify some behavior of AP mode.
  286. *
  287. * 12 22 2010 yuche.tsai
  288. * [WCXRP00000245] 1. Invitation Request/Response.
  289. * 2. Provision Discovery Request/Response
  290. *
  291. * Fix Compile Error.
  292. *
  293. * 12 15 2010 yuche.tsai
  294. * [WCXRP00000245] 1. Invitation Request/Response.
  295. * 2. Provision Discovery Request/Response
  296. *
  297. * Refine Connection Flow.
  298. *
  299. * 12 08 2010 yuche.tsai
  300. * [WCXRP00000244] [MT6620][Driver] Add station record type for each client when in AP mode.
  301. * 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
  302. *assoc req frame.
  303. *
  304. * 12 02 2010 yuche.tsai
  305. * NULL
  306. * Update P2P Connection Policy for Invitation.
  307. *
  308. * 12 02 2010 yuche.tsai
  309. * NULL
  310. * Update P2P Connection Policy for Invitation & Provision Discovery.
  311. *
  312. * 11 30 2010 yuche.tsai
  313. * NULL
  314. * Invitation & Provision Discovery Indication.
  315. *
  316. * 11 30 2010 yuche.tsai
  317. * NULL
  318. * Update Configure Method indication & selection for Provision Discovery & GO_NEGO_REQ
  319. *
  320. * 11 29 2010 yuche.tsai
  321. * NULL
  322. * Update P2P related function for INVITATION & PROVISION DISCOVERY.
  323. *
  324. * 11 26 2010 george.huang
  325. * [WCXRP00000152] [MT6620 Wi-Fi] AP mode power saving function
  326. * Update P2P PS for NOA function.
  327. *
  328. * 11 25 2010 yuche.tsai
  329. * NULL
  330. * Update Code for Invitation Related Function.
  331. *
  332. * 11 17 2010 wh.su
  333. *[WCXRP00000164][MT6620 Wi-Fi][Driver] Support the p2p random SSID[WCXRP00000179][MT6620 Wi-Fi][FW]
  334. * Set the Tx lowest rate at wlan table for normal operation
  335. * fixed some ASSERT check.
  336. *
  337. * 11 04 2010 wh.su
  338. * [WCXRP00000164] [MT6620 Wi-Fi][Driver] Support the p2p random SSID
  339. * adding the p2p random ssid support.
  340. *
  341. * 10 20 2010 wh.su
  342. * [WCXRP00000124] [MT6620 Wi-Fi] [Driver] Support the dissolve P2P Group
  343. * Add the code to support disconnect p2p group
  344. *
  345. * 10 08 2010 wh.su
  346. * [WCXRP00000085] [MT6620 Wif-Fi] [Driver] update the modified p2p state machine
  347. * update the frog's new p2p state machine.
  348. *
  349. * 10 04 2010 wh.su
  350. * [WCXRP00000081] [MT6620][Driver] Fix the compiling error at WinXP while enable P2P
  351. * fixed compiling error while enable p2p.
  352. *
  353. * 09 21 2010 kevin.huang
  354. * [WCXRP00000054] [MT6620 Wi-Fi][Driver] Restructure driver for second Interface
  355. * Isolate P2P related function for Hardware Software Bundle
  356. *
  357. * 09 10 2010 wh.su
  358. * NULL
  359. * fixed the compiling error at WinXP.
  360. *
  361. * 09 07 2010 wh.su
  362. * NULL
  363. * adding the code for beacon/probe req/ probe rsp wsc ie at p2p.
  364. *
  365. * 09 03 2010 kevin.huang
  366. * NULL
  367. * Refine #include sequence and solve recursive/nested #include issue
  368. *
  369. * 08 26 2010 yuche.tsai
  370. * NULL
  371. * Add connection abort message event prototype.
  372. *
  373. * 08 20 2010 kevin.huang
  374. * NULL
  375. * Modify AAA Module for changing STA STATE 3 at p2p/bowRunEventAAAComplete()
  376. *
  377. * 08 16 2010 yuche.tsai
  378. * NULL
  379. * Fix P2P Intended Interface Address Bug.
  380. * Extend GO Nego Timeout Time.
  381. *
  382. * 08 16 2010 yuche.tsai
  383. * NULL
  384. * Extend Listen Interval default value & remove deprecated variable.
  385. *
  386. * 08 16 2010 kevin.huang
  387. * NULL
  388. * Refine AAA functions
  389. *
  390. * 08 12 2010 kevin.huang
  391. * NULL
  392. * Refine bssProcessProbeRequest() and bssSendBeaconProbeResponse()
  393. *
  394. * 08 12 2010 yuche.tsai
  395. * NULL
  396. * Add function prototype for join complete.
  397. *
  398. * 08 11 2010 yuche.tsai
  399. * NULL
  400. * Add some function proto type for P2P FSM under provisioning phase..
  401. *
  402. * 08 11 2010 yuche.tsai
  403. * NULL
  404. * Change P2P data structure for supporting
  405. * 1. P2P Device discovery.
  406. * 2. P2P Group Negotiation.
  407. * 3. P2P JOIN
  408. *
  409. * 08 05 2010 yuche.tsai
  410. * NULL
  411. * Check-in P2P Device Discovery Feature.
  412. *
  413. * 08 03 2010 george.huang
  414. * NULL
  415. * handle event for updating NOA parameters indicated from FW
  416. *
  417. * 08 02 2010 yuche.tsai
  418. * NULL
  419. * P2P Group Negotiation Code Check in.
  420. *
  421. * 07 26 2010 yuche.tsai
  422. *
  423. * Update P2P FSM header file.
  424. *
  425. * 07 23 2010 cp.wu
  426. *
  427. * P2P/RSN/WAPI IEs need to be declared with compact structure.
  428. *
  429. * 07 21 2010 yuche.tsai
  430. *
  431. * Add for P2P Scan Result Parsing & Saving.
  432. *
  433. * 07 19 2010 yuche.tsai
  434. *
  435. * Update P2P FSM header file.
  436. *
  437. * 07 08 2010 cp.wu
  438. *
  439. * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
  440. *
  441. * 06 21 2010 yuche.tsai
  442. * [WPD00003839][MT6620 5931][P2P] Feature migration
  443. * Fix some P2P function prototype.
  444. *
  445. * 06 17 2010 yuche.tsai
  446. * [WPD00003839][MT6620 5931][P2P] Feature migration
  447. * First draft for migration P2P FSM from FW to Driver.
  448. *
  449. * 03 18 2010 kevin.huang
  450. * [BORA00000663][WIFISYS][New Feature] AdHoc Mode Support
  451. * Rename CFG flag for P2P
  452. *
  453. * 02 26 2010 kevin.huang
  454. * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
  455. * Modify parameter of p2pStartGO
  456. *
  457. * 02 23 2010 kevin.huang
  458. * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
  459. * Add Wi-Fi Direct SSID and P2P GO Test Mode
  460. *
  461. * 02 04 2010 kevin.huang
  462. * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
  463. * Add AAA Module Support, Revise Net Type to Net Type Index for array lookup
  464. */
  465. #ifndef _P2P_FSM_H
  466. #define _P2P_FSM_H
  467. /*******************************************************************************
  468. * C O M P I L E R F L A G S
  469. ********************************************************************************
  470. */
  471. #define CID52_53_54 0
  472. /*******************************************************************************
  473. * E X T E R N A L R E F E R E N C E S
  474. ********************************************************************************
  475. */
  476. /*******************************************************************************
  477. * C O N S T A N T S
  478. ********************************************************************************
  479. */
  480. /*******************************************************************************
  481. * D A T A T Y P E S
  482. ********************************************************************************
  483. */
  484. typedef enum _ENUM_P2P_STATE_T {
  485. P2P_STATE_IDLE = 0,
  486. P2P_STATE_SCAN,
  487. P2P_STATE_AP_CHANNEL_DETECT,
  488. P2P_STATE_REQING_CHANNEL,
  489. P2P_STATE_CHNL_ON_HAND, /* Requesting Channel to Send Specific Frame. */
  490. P2P_STATE_GC_JOIN, /* Sending Specific Frame. May extending channel by other event. */
  491. P2P_STATE_NUM
  492. } ENUM_P2P_STATE_T, *P_ENUM_P2P_STATE_T;
  493. struct _P2P_FSM_INFO_T {
  494. /* State related. */
  495. ENUM_P2P_STATE_T ePreviousState;
  496. ENUM_P2P_STATE_T eCurrentState;
  497. /* Channel related. */
  498. P2P_CHNL_REQ_INFO_T rChnlReqInfo;
  499. /* Scan related. */
  500. P2P_SCAN_REQ_INFO_T rScanReqInfo;
  501. /* Connection related. */
  502. P2P_CONNECTION_REQ_INFO_T rConnReqInfo;
  503. /* Mgmt tx related. */
  504. P2P_MGMT_TX_REQ_INFO_T rMgmtTxInfo;
  505. /* Beacon related. */
  506. P2P_BEACON_UPDATE_INFO_T rBcnContentInfo;
  507. /* Probe Response related. */
  508. P2P_PROBE_RSP_UPDATE_INFO_T rProbeRspContentInfo;
  509. /* Assoc Rsp related. */
  510. P2P_ASSOC_RSP_UPDATE_INFO_T rAssocRspContentInfo;
  511. /* GC Join related. */
  512. P2P_JOIN_INFO_T rJoinInfo;
  513. /* FSM Timer */
  514. TIMER_T rP2pFsmTimeoutTimer;
  515. /* GC Target BSS. */
  516. P_BSS_DESC_T prTargetBss;
  517. /* GC Connection Request. */
  518. BOOLEAN fgIsConnectionRequested;
  519. BOOLEAN fgIsApMode;
  520. /* Channel grant interval. */
  521. UINT_32 u4GrantInterval;
  522. /* Packet filter for P2P module. */
  523. UINT_32 u4P2pPacketFilter;
  524. /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv Prepare for use vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
  525. /* Msg event queue. */
  526. LINK_T rMsgEventQueue;
  527. };
  528. /*---------------- Messages -------------------*/
  529. /*******************************************************************************
  530. * F U N C T I O N D E C L A R A T I O N S
  531. ********************************************************************************
  532. */
  533. VOID p2pFsmStateTransition(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN ENUM_P2P_STATE_T eNextState);
  534. VOID p2pFsmRunEventAbort(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo);
  535. VOID p2pFsmRunEventScanRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  536. VOID p2pFsmRunEventMgmtFrameTx(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  537. VOID p2pFsmRunEventStartAP(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  538. VOID p2pFsmRunEventBeaconUpdate(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  539. VOID p2pFsmRunEventStopAP(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  540. VOID p2pFsmRunEventChannelRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  541. VOID p2pFsmRunEventChannelAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  542. VOID p2pFsmRunEventDissolve(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  543. WLAN_STATUS
  544. p2pFsmRunEventMgmtFrameTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T
  545. rTxDoneStatus);
  546. VOID p2pFsmRunEventMgmtFrameRegister(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  547. /*3 --------------- WFA P2P DEFAULT PARAMETERS --------------- */
  548. #define P2P_WILDCARD_SSID "DIRECT-"
  549. #define P2P_WILDCARD_SSID_LEN 7
  550. #define P2P_GROUP_ID_LEN 9
  551. #define P2P_DRIVER_VERSION 2 /* Update when needed. */
  552. #define P2P_DEFAULT_DEV_NAME "Wireless Client"
  553. #define P2P_DEFAULT_DEV_NAME_LEN 15
  554. #define P2P_DEFAULT_PRIMARY_CATEGORY_ID 10
  555. #define P2P_DEFAULT_PRIMARY_SUB_CATEGORY_ID 5
  556. #define P2P_DEFAULT_CONFIG_METHOD (WPS_ATTRI_CFG_METHOD_PUSH_BUTTON | WPS_ATTRI_CFG_METHOD_KEYPAD | \
  557. WPS_ATTRI_CFG_METHOD_DISPLAY)
  558. #define P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT 0 /* NOTE(Kevin): Shall <= 16 */
  559. #define P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT 13
  560. #define P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE 51 /* Contains 6 sub-band. */
  561. #define P2P_GC_MAX_CACHED_SEC_DEV_TYPE_COUNT 8 /* NOTE(Kevin): Shall <= 16 */
  562. #define P2P_CTWINDOW_DEFAULT 25 /* in TU=(1024usec) */
  563. /* P2P 3.1.2.1.3 - Find Phase */
  564. #define P2P_MAX_DISCOVERABLE_INTERVAL 8 /* 3 */
  565. #define P2P_MIN_DISCOVERABLE_INTERVAL 5 /* 1 */
  566. #define P2P_LISTEN_SCAN_UNIT 100 /* MS */
  567. /* FSM Time Related constrain. */
  568. #define P2P_SERACH_STATE_PERIOD_MS 1000 /* Deprecated. */
  569. #define P2P_GO_CHANNEL_STAY_INTERVAL 1000
  570. #define P2P_GO_NEGO_TIMEOUT_MS 500
  571. #define P2P_CONNECTION_TIMEOUT_SEC 120
  572. #define P2P_INVITAION_TIMEOUT_MS 500 /* Timeout Wait Invitation Resonse. */
  573. #define P2P_PROVISION_DISCOVERY_TIMEOUT_MS 500 /* Timeout Wait Provision Discovery Resonse. */
  574. /* 3 */
  575. /*#define P2P_ATTRI_MAX_LEN_NOTICE_OF_ABSENCE 2 + (n* (13)) */ /* 12 */
  576. #define P2P_ATTRI_MAX_LEN_NOTICE_OF_ABSENCE (2 + (P2P_MAXIMUM_NOA_COUNT * (13))) /* 12 */
  577. #define P2P_ATTRI_MAX_LEN_P2P_DEV_INFO (17 + (8 * (8)) + 36) /* 13 */
  578. /* #define P2P_ATTRI_MAX_LEN_P2P_GROUP_INFO n* (25 + (m* (8)) + 32) */ /* 14 */
  579. #define P2P_ATTRI_MAX_LEN_P2P_GROUP_ID 38 /* 15 */
  580. #define P2P_ATTRI_MAX_LEN_P2P_INTERFACE 253 /* 7 + 6* [0~41] */ /* 16 */
  581. #if CID52_53_54
  582. #define P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL 5 /* 17 */
  583. #else
  584. #define P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL 5 /* 17 */
  585. #endif
  586. #define P2P_ATTRI_MAX_LEN_INVITATION_FLAGS 1 /* 18 */
  587. /* P2P 4.1.3 - P2P Minor Reason Code definitions */
  588. #define P2P_REASON_SUCCESS 0
  589. #define P2P_REASON_DISASSOCIATED_DUE_CROSS_CONNECTION 1
  590. #define P2P_REASON_DISASSOCIATED_DUE_UNMANAGEABLE 2
  591. #define P2P_REASON_DISASSOCIATED_DUE_NO_P2P_COEXIST_PARAM 3
  592. #define P2P_REASON_DISASSOCIATED_DUE_MANAGEABLE 4
  593. /* P2P 4.1.4 - Device Capability Bitmap definitions */
  594. #define P2P_DEV_CAPABILITY_SERVICE_DISCOVERY BIT(0)
  595. #define P2P_DEV_CAPABILITY_CLIENT_DISCOVERABILITY BIT(1)
  596. #define P2P_DEV_CAPABILITY_CONCURRENT_OPERATION BIT(2)
  597. #define P2P_DEV_CAPABILITY_P2P_INFRA_MANAGED BIT(3)
  598. #define P2P_DEV_CAPABILITY_P2P_DEVICE_LIMIT BIT(4)
  599. #define P2P_DEV_CAPABILITY_P2P_INVITATION_PROCEDURE BIT(5)
  600. /* P2P 4.1.4 - Group Capability Bitmap definitions */
  601. #define P2P_GROUP_CAPABILITY_P2P_GROUP_OWNER BIT(0)
  602. #define P2P_GROUP_CAPABILITY_PERSISTENT_P2P_GROUP BIT(1)
  603. #define P2P_GROUP_CAPABILITY_P2P_GROUP_LIMIT BIT(2)
  604. #define P2P_GROUP_CAPABILITY_INTRA_BSS_DISTRIBUTION BIT(3)
  605. #define P2P_GROUP_CAPABILITY_CROSS_CONNECTION BIT(4)
  606. #define P2P_GROUP_CAPABILITY_PERSISTENT_RECONNECT BIT(5)
  607. #define P2P_GROUP_CAPABILITY_GROUP_FORMATION BIT(6)
  608. /* P2P 4.1.6 - GO Intent field definitions */
  609. #define P2P_GO_INTENT_TIE_BREAKER_FIELD BIT(0)
  610. #define P2P_GO_INTENT_VALUE_MASK BITS(1, 7)
  611. #define P2P_GO_INTENT_VALUE_OFFSET 1
  612. /* P2P 4.1.12 - Manageability Bitmap definitions */
  613. #define P2P_DEVICE_MANAGEMENT BIT(0)
  614. /* P2P 4.1.14 - CTWindow and OppPS Parameters definitions */
  615. #define P2P_CTW_OPPPS_PARAM_OPPPS_FIELD BIT(7)
  616. #define P2P_CTW_OPPPS_PARAM_CTWINDOW_MASK BITS(0, 6)
  617. #define ELEM_MAX_LEN_P2P_FOR_PROBE_REQ \
  618. (P2P_OUI_TYPE_LEN + \
  619. (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_CAPABILITY) + \
  620. (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_DEV_ID) + \
  621. (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_LISTEN_CHANNEL) + \
  622. (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_OPERATING_CHANNEL))
  623. #define ELEM_MAX_LEN_P2P_FOR_ASSOC_REQ \
  624. (P2P_OUI_TYPE_LEN + \
  625. (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_CAPABILITY) + \
  626. (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_EXT_LISTEN_TIMING) + \
  627. (P2P_ATTRI_HDR_LEN + P2P_ATTRI_MAX_LEN_P2P_DEV_INFO))
  628. /* P2P 4.1.16 - P2P Client Infor Descriptor */
  629. #define P2P_CLIENT_INFO_DESC_HDR_LEN 1 /* Length(1 octets) */
  630. /* P2P 4.1.20 - P2P Invitation Flags Attribute*/
  631. #define P2P_INVITATION_FLAGS_INVITATION_TYPE BIT(0)
  632. #define P2P_INVITATION_TYPE_INVITATION 0
  633. #define P2P_INVITATION_TYPE_REINVOKE 1
  634. /* 3 */
  635. /* WPS 11 - Data Element Definitions */
  636. #define WPS_ATTRI_ID_VERSION 0x104A
  637. #define WPS_ATTRI_ID_CONFIGURATION_METHODS 0x1008
  638. #define WPS_ATTRI_ID_DEVICE_PASSWORD 0x1012
  639. #define WPS_ATTRI_ID_DEVICE_NAME 0x1011
  640. #define WPS_ATTRI_ID_PRI_DEVICE_TYPE 0x1054
  641. #define WPS_ATTRI_ID_SEC_DEVICE_TYPE 0x1055
  642. #define WPS_ATTRI_MAX_LEN_DEVICE_NAME 32 /* 0x1011 */
  643. #define WPS_ATTRI_CFG_METHOD_USBA BIT(0)
  644. #define WPS_ATTRI_CFG_METHOD_ETHERNET BIT(1)
  645. #define WPS_ATTRI_CFG_METHOD_LABEL BIT(2)
  646. #define WPS_ATTRI_CFG_METHOD_DISPLAY BIT(3)
  647. #define WPS_ATTRI_CFG_METHOD_EXT_NFC BIT(4)
  648. #define WPS_ATTRI_CFG_METHOD_INT_NFC BIT(5)
  649. #define WPS_ATTRI_CFG_METHOD_NFC_IF BIT(6)
  650. #define WPS_ATTRI_CFG_METHOD_PUSH_BUTTON BIT(7)
  651. #define WPS_ATTRI_CFG_METHOD_KEYPAD BIT(8)
  652. #define P2P_FLAGS_PROVISION_COMPLETE 0x00000001
  653. #define P2P_FLAGS_PROVISION_DISCOVERY_COMPLETE 0x00000002
  654. #define P2P_FLAGS_PROVISION_DISCOVERY_WAIT_RESPONSE 0x00000004
  655. #define P2P_FLAGS_PROVISION_DISCOVERY_RESPONSE_WAIT 0x00000008
  656. #define P2P_FLAGS_MASK_PROVISION 0x00000017
  657. #define P2P_FLAGS_MASK_PROVISION_COMPLETE 0x00000015
  658. #define P2P_FLAGS_PROVISION_DISCOVERY_INDICATED 0x00000010
  659. #define P2P_FLAGS_INVITATION_TOBE_GO 0x00000100
  660. #define P2P_FLAGS_INVITATION_TOBE_GC 0x00000200
  661. #define P2P_FLAGS_INVITATION_SUCCESS 0x00000400
  662. #define P2P_FLAGS_INVITATION_WAITING_TARGET 0x00000800
  663. #define P2P_FLAGS_MASK_INVITATION 0x00000F00
  664. #define P2P_FLAGS_FORMATION_ON_GOING 0x00010000
  665. #define P2P_FLAGS_FORMATION_LOCAL_PWID_RDY 0x00020000
  666. #define P2P_FLAGS_FORMATION_TARGET_PWID_RDY 0x00040000
  667. #define P2P_FLAGS_FORMATION_COMPLETE 0x00080000
  668. #define P2P_FLAGS_MASK_FORMATION 0x000F0000
  669. #define P2P_FLAGS_DEVICE_DISCOVER_REQ 0x00100000
  670. #define P2P_FLAGS_DEVICE_DISCOVER_DONE 0x00200000
  671. #define P2P_FLAGS_DEVICE_INVITATION_WAIT 0x00400000
  672. #define P2P_FLAGS_DEVICE_SERVICE_DISCOVER_WAIT 0x00800000
  673. #define P2P_FLAGS_MASK_DEVICE_DISCOVER 0x00F00000
  674. #define P2P_FLAGS_DEVICE_FORMATION_REQUEST 0x01000000
  675. /* MACRO for flag operation */
  676. #define SET_FLAGS(_FlagsVar, _BitsToSet) \
  677. {(_FlagsVar) = ((_FlagsVar) | (_BitsToSet))}
  678. #define TEST_FLAGS(_FlagsVar, _BitsToCheck) \
  679. (((_FlagsVar) & (_BitsToCheck)) == (_BitsToCheck))
  680. #define CLEAR_FLAGS(_FlagsVar, _BitsToClear) \
  681. {(_FlagsVar) &= ~(_BitsToClear)}
  682. #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_I 0
  683. #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_II 0
  684. #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_III 0
  685. #define CFG_DISABLE_WIFI_DIRECT_ENHANCEMENT_IV 0
  686. #define CFG_DISABLE_DELAY_PROVISION_DISCOVERY 0
  687. #define CFG_CONNECTION_POLICY_2_0 0
  688. /* Device Password ID */
  689. enum wps_dev_password_id {
  690. DEV_PW_DEFAULT = 0x0000,
  691. DEV_PW_USER_SPECIFIED = 0x0001,
  692. DEV_PW_MACHINE_SPECIFIED = 0x0002,
  693. DEV_PW_REKEY = 0x0003,
  694. DEV_PW_PUSHBUTTON = 0x0004,
  695. DEV_PW_REGISTRAR_SPECIFIED = 0x0005
  696. };
  697. /*******************************************************************************
  698. * D A T A T Y P E S
  699. ********************************************************************************
  700. */
  701. #if defined(WINDOWS_DDK) || defined(WINDOWS_CE)
  702. #pragma pack(1)
  703. #endif
  704. /* 3 */
  705. #if 0
  706. /* P2P 4.1.1 - General P2P Attribute */
  707. typedef struct _P2P_ATTRIBUTE_T {
  708. UINT_8 ucId; /* Attribute ID */
  709. UINT_16 u2Length; /* Length */
  710. UINT_8 aucBody[1]; /* Body field */
  711. } __KAL_ATTRIB_PACKED__ P2P_ATTRIBUTE_T, ATTRIBUTE_HDR_T, *P_P2P_ATTRIBUTE_T, *P_ATTRIBUTE_HDR_T;
  712. #endif
  713. /* P2P 4.1.3 - P2P Minor Reason Code Attribute */
  714. typedef struct _P2P_ATTRI_REASON_T {
  715. UINT_8 ucId; /* Attribute ID */
  716. UINT_16 u2Length; /* Length */
  717. UINT_8 ucMinorReasonCode; /* Minor Reason Code */
  718. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_REASON_T, *P_P2P_ATTRI_REASON_T;
  719. /* P2P 4.1.4 - P2P Capability Attribute */
  720. typedef struct _P2P_ATTRI_CAPABILITY_T {
  721. UINT_8 ucId; /* Attribute ID */
  722. UINT_16 u2Length; /* Length */
  723. UINT_8 ucDeviceCap; /* Device Capability Bitmap */
  724. UINT_8 ucGroupCap; /* Group Capability Bitmap */
  725. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CAPABILITY_T, *P_P2P_ATTRI_CAPABILITY_T;
  726. /* P2P 4.1.5 - P2P Device ID Attribute */
  727. typedef struct _P2P_ATTRI_DEV_ID_T {
  728. UINT_8 ucId; /* Attribute ID */
  729. UINT_16 u2Length; /* Length */
  730. UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
  731. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_DEV_ID_T, *P_P2P_ATTRI_DEV_ID_T;
  732. /* P2P 4.1.6 - Group Owner Intent Attribute */
  733. typedef struct _P2P_ATTRI_GO_INTENT_T {
  734. UINT_8 ucId; /* Attribute ID */
  735. UINT_16 u2Length; /* Length */
  736. UINT_8 ucGOIntent; /* Group Owner Intent */
  737. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GO_INTENT_T, *P_P2P_ATTRI_GO_INTENT_T;
  738. /* P2P 4.1.7 - Configuration Timeout Attribute */
  739. typedef struct _P2P_ATTRI_CFG_TIMEOUT_T {
  740. UINT_8 ucId; /* Attribute ID */
  741. UINT_16 u2Length; /* Length */
  742. UINT_8 ucGOCfgTimeout; /* GO Configuration Timeout */
  743. UINT_8 ucClientCfgTimeout; /* Client Configuration Timeout */
  744. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CFG_TIMEOUT_T, *P_P2P_ATTRI_CFG_TIMEOUT_T;
  745. /* P2P 4.1.8 - Listen Channel Attribute */
  746. typedef struct _P2P_ATTRI_LISTEN_CHANNEL_T {
  747. UINT_8 ucId; /* Attribute ID */
  748. UINT_16 u2Length; /* Length */
  749. UINT_8 aucCountryString[3]; /* Country String */
  750. UINT_8 ucOperatingClass; /* Operating Class from 802.11 Annex J/P802.11 REVmb 3.0 */
  751. UINT_8 ucChannelNumber; /* Channel Number */
  752. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_LISTEN_CHANNEL_T, *P_P2P_ATTRI_LISTEN_CHANNEL_T;
  753. /* P2P 4.1.9 - P2P Group BSSID Attribute */
  754. typedef struct _P2P_ATTRI_GROUP_BSSID_T {
  755. UINT_8 ucId; /* Attribute ID */
  756. UINT_16 u2Length; /* Length */
  757. UINT_8 aucBssid[MAC_ADDR_LEN]; /* P2P Group BSSID */
  758. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_BSSID_T, *P_P2P_ATTRI_GROUP_BSSID_T;
  759. /* P2P 4.1.11 - Intended P2P Interface Address Attribute */
  760. typedef struct _P2P_ATTRI_INTENDED_IF_ADDR_T {
  761. UINT_8 ucId; /* Attribute ID */
  762. UINT_16 u2Length; /* Length */
  763. UINT_8 aucIfAddr[MAC_ADDR_LEN]; /* P2P Interface Address */
  764. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INTENDED_IF_ADDR_T, *P_P2P_ATTRI_INTENDED_IF_ADDR_T;
  765. /* P2P 4.1.12 - P2P Manageability Attribute */
  766. typedef struct _P2P_ATTRI_MANAGEABILITY_T {
  767. UINT_8 ucId; /* Attribute ID */
  768. UINT_16 u2Length; /* Length */
  769. UINT_8 ucManageability; /* P2P Manageability Bitmap */
  770. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_MANAGEABILITY_T, *P_P2P_ATTRI_MANAGEABILITY_T;
  771. /* P2P 4.1.13 - Channel List Attribute */
  772. typedef struct _P2P_ATTRI_CHANNEL_LIST_T {
  773. UINT_8 ucId; /* Attribute ID */
  774. UINT_16 u2Length; /* Length */
  775. UINT_8 aucCountryString[3]; /* Country String */
  776. UINT_8 aucChannelEntry[1]; /* Channel Entry List */
  777. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_CHANNEL_T, *P_P2P_ATTRI_CHANNEL_T;
  778. /* P2P 4.1.14 - Notice of Absence Attribute */
  779. typedef struct _P2P_ATTRI_NOA_T {
  780. UINT_8 ucId; /* Attribute ID */
  781. UINT_16 u2Length; /* Length */
  782. UINT_8 ucIndex; /* Index */
  783. UINT_8 ucCTWOppPSParam; /* CTWindow and OppPS Parameters */
  784. UINT_8 aucNoADesc[1]; /* NoA Descriptor */
  785. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_NOA_T, *P_P2P_ATTRI_NOA_T;
  786. typedef struct _NOA_DESCRIPTOR_T {
  787. UINT_8 ucCountType; /* Count/Type */
  788. UINT_32 u4Duration; /* Duration */
  789. UINT_32 u4Interval; /* Interval */
  790. UINT_32 u4StartTime; /* Start Time */
  791. } __KAL_ATTRIB_PACKED__ NOA_DESCRIPTOR_T, *P_NOA_DESCRIPTOR_T;
  792. typedef struct _P2P_ATTRI_DEV_INFO_T {
  793. UINT_8 ucId; /* Attribute ID */
  794. UINT_16 u2Length; /* Length */
  795. UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
  796. UINT_16 u2ConfigMethodsBE; /* Config Method */
  797. DEVICE_TYPE_T rPrimaryDevTypeBE; /* Primary Device Type */
  798. UINT_8 ucNumOfSecondaryDevType; /* Number of Secondary Device Types */
  799. DEVICE_TYPE_T arSecondaryDevTypeListBE[1]; /* Secondary Device Type List */
  800. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_DEV_INFO_T, *P_P2P_ATTRI_DEV_INFO_T;
  801. /* WPS 7.1 & 11 WPS TLV Data Format - Device Name */
  802. typedef struct _DEVICE_NAME_TLV_T {
  803. UINT_16 u2Id; /* WPS Attribute Type */
  804. UINT_16 u2Length; /* Data Length */
  805. UINT_8 aucName[32]; /* Device Name *//* TODO : Fixme */
  806. } __KAL_ATTRIB_PACKED__ DEVICE_NAME_TLV_T, *P_DEVICE_NAME_TLV_T;
  807. /* P2P 4.1.16 - P2P Group Info Attribute */
  808. typedef struct _P2P_CLIENT_INFO_DESC_T {
  809. UINT_8 ucLength; /* Length */
  810. UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
  811. UINT_8 aucIfAddr[MAC_ADDR_LEN]; /* P2P Interface Address */
  812. UINT_8 ucDeviceCap; /* Device Capability Bitmap */
  813. UINT_16 u2ConfigMethodsBE; /* Config Method */
  814. DEVICE_TYPE_T rPrimaryDevTypeBE; /* Primary Device Type */
  815. UINT_8 ucNumOfSecondaryDevType; /* Number of Secondary Device Types */
  816. DEVICE_TYPE_T arSecondaryDevTypeListBE[1]; /* Secondary Device Type List */
  817. } __KAL_ATTRIB_PACKED__ P2P_CLIENT_INFO_DESC_T, *P_P2P_CLIENT_INFO_DESC_T;
  818. typedef struct _P2P_ATTRI_GROUP_INFO_T {
  819. UINT_8 ucId; /* Attribute ID */
  820. UINT_16 u2Length; /* Length */
  821. P2P_CLIENT_INFO_DESC_T arClientDesc[1]; /* P2P Client Info Descriptors */
  822. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_INFO_T, *P_P2P_ATTRI_GROUP_INFO_T;
  823. /* P2P 4.1.17 - P2P Group ID Attribute */
  824. typedef struct _P2P_ATTRI_GROUP_ID_T {
  825. UINT_8 ucId; /* Attribute ID */
  826. UINT_16 u2Length; /* Length */
  827. UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
  828. UINT_8 aucSSID[ELEM_MAX_LEN_SSID]; /* SSID */
  829. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_GROUP_ID_T, *P_P2P_ATTRI_GROUP_ID_T;
  830. /* P2P 4.1.18 - P2P Interface Attribute */
  831. typedef struct _P2P_ATTRI_INTERFACE_T {
  832. UINT_8 ucId; /* Attribute ID */
  833. UINT_16 u2Length; /* Length */
  834. UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */
  835. UINT_8 ucIfAddrCount; /* P2P Interface Address Count */
  836. UINT_8 aucIfAddrList[MAC_ADDR_LEN]; /* P2P Interface Address List */
  837. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INTERFACE_T, *P_P2P_ATTRI_INTERFACE_T;
  838. /* P2P 4.1.19 - Operating Channel Attribute */
  839. typedef struct _P2P_ATTRI_OPERATING_CHANNEL_T {
  840. UINT_8 ucId; /* Attribute ID */
  841. UINT_16 u2Length; /* Length */
  842. UINT_8 aucCountryString[3]; /* Country String */
  843. UINT_8 ucOperatingClass; /* Operating Class from 802.11 Annex J/P802.11 REVmb 3.0 */
  844. UINT_8 ucChannelNumber; /* Channel Number */
  845. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_OPERATING_CHANNEL_T, *P_P2P_ATTRI_OPERATING_CHANNEL_T;
  846. /* P2P 4.1.20 - Invitation Flags Attribute */
  847. typedef struct _P2P_ATTRI_INVITATION_FLAG_T {
  848. UINT_8 ucId; /* Attribute ID */
  849. UINT_16 u2Length; /* Length */
  850. UINT_8 ucInviteFlagsBitmap; /* Invitation Flags Bitmap */
  851. } __KAL_ATTRIB_PACKED__ P2P_ATTRI_INVITATION_FLAG_T, *P_P2P_ATTRI_INVITATION_FLAG_T;
  852. /* WSC 1.0 Table 28 */
  853. typedef struct _WSC_ATTRI_VERSION_T {
  854. UINT_16 u2Id; /* Attribute ID */
  855. UINT_16 u2Length; /* Length */
  856. UINT_8 ucVersion; /* Version 1.0 or 1.1 */
  857. } __KAL_ATTRIB_PACKED__ WSC_ATTRI_VERSION_T, *P_WSC_ATTRI_VERSION_T;
  858. typedef struct _WSC_ATTRI_DEVICE_PASSWORD_ID_T {
  859. UINT_16 u2Id; /* Attribute ID */
  860. UINT_16 u2Length; /* Length */
  861. UINT_16 u2DevPasswordId; /* Device Password ID */
  862. } __KAL_ATTRIB_PACKED__ WSC_ATTRI_DEVICE_PASSWORD_ID_T, *P_WSC_ATTRI_DEVICE_PASSWORD_ID_T;
  863. typedef struct _WSC_ATTRI_CONFIGURATION_METHOD_T {
  864. UINT_16 u2Id; /* Attribute ID */
  865. UINT_16 u2Length; /* Length */
  866. UINT_16 u2ConfigMethods; /* Configure Methods */
  867. } __KAL_ATTRIB_PACKED__ WSC_ATTRI_CONFIGURATION_METHOD_T, *P_WSC_ATTRI_CONFIGURATION_METHOD_T;
  868. #if defined(WINDOWS_DDK) || defined(WINDOWS_CE)
  869. #pragma pack()
  870. #endif
  871. /* 3 --------------- WFA P2P Attributes Handler prototype --------------- */
  872. typedef UINT_32(*PFN_APPEND_ATTRI_FUNC) (P_ADAPTER_T, BOOLEAN, PUINT_16, PUINT_8, UINT_16);
  873. typedef VOID(*PFN_HANDLE_ATTRI_FUNC) (P_SW_RFB_T, P_P2P_ATTRIBUTE_T);
  874. typedef VOID(*PFN_VERIFY_ATTRI_FUNC) (P_SW_RFB_T, P_P2P_ATTRIBUTE_T, PUINT_16);
  875. typedef UINT_32(*PFN_CALCULATE_VAR_ATTRI_LEN_FUNC) (P_ADAPTER_T, P_STA_RECORD_T);
  876. typedef enum _ENUM_CONFIG_METHOD_SEL {
  877. ENUM_CONFIG_METHOD_SEL_AUTO,
  878. ENUM_CONFIG_METHOD_SEL_USER,
  879. ENUM_CONFIG_METHOD_SEL_NUM
  880. } ENUM_CONFIG_METHOD_SEL, *P_ENUM_CONFIG_METHOD_SEL;
  881. typedef enum _ENUM_P2P_FORMATION_POLICY {
  882. ENUM_P2P_FORMATION_POLICY_AUTO = 0,
  883. ENUM_P2P_FORMATION_POLICY_PASSIVE, /* Device would wait GO NEGO REQ instead of sending it actively. */
  884. ENUM_P2P_FORMATION_POLICY_NUM
  885. } ENUM_P2P_FORMATION_POLICY, P_ENUM_P2P_FORMATION_POLICY;
  886. typedef enum _ENUM_P2P_INVITATION_POLICY {
  887. ENUM_P2P_INVITATION_POLICY_USER = 0,
  888. ENUM_P2P_INVITATION_POLICY_ACCEPT_FIRST,
  889. ENUM_P2P_INVITATION_POLICY_DENY_ALL,
  890. ENUM_P2P_INVITATION_POLICY_NUM
  891. } ENUM_P2P_INVITATION_POLICY, P_ENUM_P2P_INVITATION_POLICY;
  892. /* 3 --------------- Data Structure for P2P Operation --------------- */
  893. /* 3 Session for CONNECTION SETTINGS of P2P */
  894. struct _P2P_CONNECTION_SETTINGS_T {
  895. UINT_8 ucDevNameLen;
  896. UINT_8 aucDevName[WPS_ATTRI_MAX_LEN_DEVICE_NAME];
  897. DEVICE_TYPE_T rPrimaryDevTypeBE;
  898. ENUM_P2P_FORMATION_POLICY eFormationPolicy; /* Formation Policy. */
  899. /*------------WSC Related Param---------------*/
  900. UINT_16 u2ConfigMethodsSupport; /* Preferred configure method.
  901. * Some device may not have keypad.
  902. */
  903. ENUM_CONFIG_METHOD_SEL eConfigMethodSelType;
  904. UINT_16 u2TargetConfigMethod; /* Configure method selected by user or auto. */
  905. UINT_16 u2LocalConfigMethod; /* Configure method of target. */
  906. BOOLEAN fgIsPasswordIDRdy;
  907. /*------------WSC Related Param---------------*/
  908. UINT_8 ucClientConfigTimeout;
  909. UINT_8 ucGoConfigTimeout;
  910. UINT_8 ucSecondaryDevTypeCount;
  911. #if P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT
  912. DEVICE_TYPE_T arSecondaryDevTypeBE[P2P_MAX_SUPPORTED_SEC_DEV_TYPE_COUNT];
  913. #endif
  914. #if 0
  915. UINT_8 ucRfChannelListCount;
  916. #if P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT
  917. UINT_8 aucChannelList[P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT]; /* Channel Numbering
  918. *depends on 802.11mb
  919. *Annex J. */
  920. #endif
  921. #else
  922. UINT_8 ucRfChannelListSize;
  923. #if P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE
  924. UINT_8 aucChannelEntriesField[P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE];
  925. #endif
  926. #endif
  927. /* Go Intent */
  928. UINT_8 ucTieBreaker;
  929. UINT_8 ucGoIntent;
  930. /* For Device Capability */
  931. BOOLEAN fgSupportServiceDiscovery;
  932. BOOLEAN fgSupportClientDiscoverability;
  933. BOOLEAN fgSupportConcurrentOperation;
  934. BOOLEAN fgSupportInfraManaged;
  935. BOOLEAN fgSupportInvitationProcedure;
  936. /* For Group Capability */
  937. BOOLEAN fgSupportPersistentP2PGroup;
  938. BOOLEAN fgSupportIntraBSSDistribution;
  939. BOOLEAN fgSupportCrossConnection;
  940. BOOLEAN fgSupportPersistentReconnect;
  941. BOOLEAN fgP2pGroupLimit;
  942. BOOLEAN fgSupportOppPS;
  943. UINT_16 u2CTWindow;
  944. BOOLEAN fgIsScanReqIssued;
  945. BOOLEAN fgIsServiceDiscoverIssued;
  946. /*============ Target Device Connection Settings ============*/
  947. /* Discover Target Device Info. */
  948. BOOLEAN fgIsDevId;
  949. BOOLEAN fgIsDevType;
  950. /* Encryption mode of Target Device */
  951. ENUM_PARAM_AUTH_MODE_T eAuthMode;
  952. /* SSID
  953. * 1. AP Mode, this is the desired SSID user specified.
  954. * 2. Client Mode, this is the target SSID to be connected to.
  955. */
  956. UINT_8 aucSSID[ELEM_MAX_LEN_SSID];
  957. UINT_8 ucSSIDLen;
  958. /* Operating channel requested. */
  959. UINT_8 ucOperatingChnl;
  960. ENUM_BAND_T eBand;
  961. /* Linten channel requested. */
  962. UINT_8 ucListenChnl;
  963. /* For device discover address/type. */
  964. UINT_8 aucTargetDevAddr[MAC_ADDR_LEN]; /* P2P Device Address, for P2P Device Discovery
  965. *& P2P Connection. */
  966. #if CFG_ENABLE_WIFI_DIRECT
  967. P_P2P_DEVICE_DESC_T prTargetP2pDesc;
  968. #endif
  969. UINT_8 ucLastStatus; /* P2P FSM would append status attribute according to this
  970. *field. */
  971. #if !CFG_DISABLE_DELAY_PROVISION_DISCOVERY
  972. UINT_8 ucLastDialogToken;
  973. UINT_8 aucIndicateDevAddr[MAC_ADDR_LEN];
  974. #endif
  975. #if 0
  976. UINT_8 ucTargetRfChannelListCount;
  977. #if P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT
  978. UINT_8 aucTargetChannelList[P2P_MAX_SUPPORTED_CHANNEL_LIST_COUNT]; /* Channel
  979. *Numbering
  980. *depends on
  981. *802.11mb Annex
  982. *J. */
  983. #endif
  984. #endif
  985. };
  986. typedef enum _ENUM_P2P_IOCTL_T {
  987. P2P_IOCTL_IDLE = 0,
  988. P2P_IOCTL_DEV_DISCOVER,
  989. P2P_IOCTL_INVITATION_REQ,
  990. P2P_IOCTL_SERV_DISCOVER,
  991. P2P_IOCTL_WAITING,
  992. P2P_IOCTL_NUM
  993. } ENUM_P2P_IOCTL_T;
  994. /*---------------- Service Discovery Related -------------------*/
  995. typedef enum _ENUM_SERVICE_TX_TYPE_T {
  996. ENUM_SERVICE_TX_TYPE_BY_DA,
  997. ENUM_SERVICE_TX_TYPE_BY_CHNL,
  998. ENUM_SERVICE_TX_TYPE_NUM
  999. } ENUM_SERVICE_TX_TYPE_T;
  1000. typedef struct _SERVICE_DISCOVERY_FRAME_DATA_T {
  1001. QUE_ENTRY_T rQueueEntry;
  1002. P_MSDU_INFO_T prSDFrame;
  1003. ENUM_SERVICE_TX_TYPE_T eServiceType;
  1004. UINT_8 ucSeqNum;
  1005. union {
  1006. UINT_8 ucChannelNum;
  1007. UINT_8 aucPeerAddr[MAC_ADDR_LEN];
  1008. } uTypeData;
  1009. BOOLEAN fgIsTxDoneIndicate;
  1010. } SERVICE_DISCOVERY_FRAME_DATA_T, *P_SERVICE_DISCOVERY_FRAME_DATA_T;
  1011. struct _P2P_FSM_INFO_T_DEPRECATED {
  1012. /* P2P FSM State */
  1013. ENUM_P2P_STATE_T eCurrentState;
  1014. /* Channel */
  1015. BOOLEAN fgIsChannelRequested;
  1016. ENUM_P2P_STATE_T ePreviousState;
  1017. ENUM_P2P_STATE_T eReturnState; /* Return state after current activity finished or
  1018. *abort. */
  1019. UINT_8 aucTargetIfAddr[PARAM_MAC_ADDR_LEN];
  1020. P_BSS_DESC_T prTargetBss; /* BSS of target P2P Device. For Connection/Service
  1021. *Discovery */
  1022. P_STA_RECORD_T prTargetStaRec;
  1023. BOOLEAN fgIsRsponseProbe; /* Indicate if P2P FSM can response probe
  1024. *request frame. */
  1025. /* Sequence number of requested message. */
  1026. UINT_8 ucSeqNumOfReqMsg; /* Used for SAA FSM request message. */
  1027. /* Channel Privilege */
  1028. UINT_8 ucSeqNumOfChReq; /* Used for Channel Request message. */
  1029. UINT_8 ucSeqNumOfScnMsg; /* Used for SCAN FSM request message. */
  1030. UINT_8 ucSeqNumOfCancelMsg;
  1031. UINT_8 ucDialogToken;
  1032. UINT_8 ucRxDialogToken;
  1033. /* Timer */
  1034. TIMER_T rDeviceDiscoverTimer; /* For device discovery time of each discovery
  1035. *request from user. */
  1036. TIMER_T rOperationListenTimer; /* For Find phase under operational state. */
  1037. TIMER_T rFSMTimer; /* A timer used for Action frame timeout usage.
  1038. **/
  1039. TIMER_T rRejoinTimer; /* A timer used for Action frame timeout usage.
  1040. **/
  1041. /* Flag to indicate Provisioning */
  1042. BOOLEAN fgIsConnectionRequested;
  1043. /* Current IOCTL. */
  1044. ENUM_P2P_IOCTL_T eP2pIOCTL;
  1045. UINT_8 ucAvailableAuthTypes; /* Used for AUTH_MODE_AUTO_SWITCH */
  1046. /*--------SERVICE DISCOVERY--------*/
  1047. QUE_T rQueueGASRx; /* Input Request/Response. */
  1048. QUE_T rQueueGASTx; /* Output Response. */
  1049. P_SERVICE_DISCOVERY_FRAME_DATA_T prSDRequest;
  1050. UINT_8 ucVersionNum; /* GAS packet sequence number for...Action Frame? */
  1051. UINT_8 ucGlobalSeqNum; /* Sequence Number of RX SD packet. */
  1052. /*--------Service DISCOVERY--------*/
  1053. /*--------DEVICE DISCOVERY---------*/
  1054. UINT_8 aucTargetGroupID[PARAM_MAC_ADDR_LEN];
  1055. UINT_16 u2TargetGroupSsidLen;
  1056. UINT_8 aucTargetSsid[32];
  1057. UINT_8 aucSearchingP2pDevice[PARAM_MAC_ADDR_LEN];
  1058. UINT_8 ucDLToken;
  1059. /*----------------------------------*/
  1060. /* Indicating Peer Status. */
  1061. UINT_32 u4Flags;
  1062. /*Indicating current running mode. */
  1063. BOOLEAN fgIsApMode;
  1064. /*------------INVITATION------------*/
  1065. ENUM_P2P_INVITATION_POLICY eInvitationRspPolicy;
  1066. /*----------------------------------*/
  1067. };
  1068. struct _P2P_SPECIFIC_BSS_INFO_T {
  1069. /* For GO(AP) Mode - Compose TIM IE */
  1070. UINT_16 u2SmallestAID;
  1071. UINT_16 u2LargestAID;
  1072. UINT_8 ucBitmapCtrl;
  1073. /* UINT_8 aucPartialVirtualBitmap[MAX_LEN_TIM_PARTIAL_BMP]; */
  1074. /* For GC/GO OppPS */
  1075. BOOLEAN fgEnableOppPS;
  1076. UINT_16 u2CTWindow;
  1077. /* For GC/GO NOA */
  1078. UINT_8 ucNoAIndex;
  1079. UINT_8 ucNoATimingCount; /* Number of NoA Timing */
  1080. NOA_TIMING_T arNoATiming[P2P_MAXIMUM_NOA_COUNT];
  1081. BOOLEAN fgIsNoaAttrExisted;
  1082. /* For P2P Device */
  1083. UINT_8 ucRegClass; /* Regulatory Class for channel. */
  1084. UINT_8 ucListenChannel; /* Linten Channel only on channels 1, 6 and 11
  1085. *in the 2.4 GHz. */
  1086. UINT_8 ucPreferredChannel; /* Operating Channel, should be one of channel
  1087. *list in p2p connection settings. */
  1088. ENUM_CHNL_EXT_T eRfSco;
  1089. ENUM_BAND_T eRfBand;
  1090. /* Extended Listen Timing. */
  1091. UINT_16 u2AvailabilityPeriod;
  1092. UINT_16 u2AvailabilityInterval;
  1093. #if 0 /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) */
  1094. UINT_16 u2IELenForBCN;
  1095. UINT_8 aucBeaconIECache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE + WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
  1096. /* UINT_16 u2IELenForProbeRsp; */
  1097. /* UINT_8 aucProbeRspIECache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE + WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE]; */
  1098. UINT_16 u2IELenForAssocRsp;
  1099. UINT_8 aucAssocRspIECache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE + WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
  1100. #else
  1101. UINT_16 u2AttributeLen;
  1102. UINT_8 aucAttributesCache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
  1103. UINT_16 u2WscAttributeLen;
  1104. UINT_8 aucWscAttributesCache[WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
  1105. #endif
  1106. UINT_8 aucGroupID[MAC_ADDR_LEN];
  1107. UINT_16 u2GroupSsidLen;
  1108. UINT_8 aucGroupSsid[ELEM_MAX_LEN_SSID];
  1109. PARAM_CUSTOM_NOA_PARAM_STRUCT_T rNoaParam;
  1110. PARAM_CUSTOM_OPPPS_PARAM_STRUCT_T rOppPsParam;
  1111. #if 0 /* CL2055022 */
  1112. UINT_16 u2WpaIeLen;
  1113. UINT_8 aucWpaIeBuffer[ELEM_HDR_LEN + ELEM_MAX_LEN_WPA];
  1114. #endif
  1115. };
  1116. typedef struct _MSG_P2P_DEVICE_DISCOVER_T {
  1117. MSG_HDR_T rMsgHdr; /* Must be the first member */
  1118. UINT_32 u4DevDiscoverTime; /* 0: Infinite, 1~X: in unit of MS. */
  1119. BOOLEAN fgIsSpecificType;
  1120. #if CFG_ENABLE_WIFI_DIRECT
  1121. P2P_DEVICE_TYPE_T rTargetDeviceType;
  1122. #endif
  1123. UINT_8 aucTargetDeviceID[MAC_ADDR_LEN];
  1124. } MSG_P2P_DEVICE_DISCOVER_T, *P_MSG_P2P_DEVICE_DISCOVER_T;
  1125. typedef struct _MSG_P2P_INVITATION_REQUEST_T {
  1126. MSG_HDR_T rMsgHdr; /* Must be the first member */
  1127. UINT_8 aucDeviceID[MAC_ADDR_LEN]; /* Target Device ID to be invited. */
  1128. } MSG_P2P_INVITATION_REQUEST_T, *P_MSG_P2P_INVITATION_REQUEST_T;
  1129. typedef struct _MSG_P2P_FUNCTION_SWITCH_T {
  1130. MSG_HDR_T rMsgHdr; /* Must be the first member */
  1131. BOOLEAN fgIsFuncOn;
  1132. } MSG_P2P_FUNCTION_SWITCH_T, *P_MSG_P2P_FUNCTION_SWITCH_T;
  1133. typedef struct _MSG_P2P_SERVICE_DISCOVERY_REQUEST_T {
  1134. MSG_HDR_T rMsgHdr; /* Must be the first member */
  1135. UINT_8 aucDeviceID[MAC_ADDR_LEN];
  1136. BOOLEAN fgNeedTxDoneIndicate;
  1137. UINT_8 ucSeqNum;
  1138. } MSG_P2P_SERVICE_DISCOVERY_REQUEST_T, *P_MSG_P2P_SERVICE_DISCOVERY_REQUEST_T;
  1139. /*******************************************************************************
  1140. * P U B L I C D A T A
  1141. ********************************************************************************
  1142. */
  1143. /*******************************************************************************
  1144. * P R I V A T E D A T A
  1145. ********************************************************************************
  1146. */
  1147. /*******************************************************************************
  1148. * M A C R O S
  1149. ********************************************************************************
  1150. */
  1151. /*******************************************************************************
  1152. * F U N C T I O N D E C L A R A T I O N S
  1153. ********************************************************************************
  1154. */
  1155. /*======P2P State======*/
  1156. VOID
  1157. p2pStateInit_LISTEN(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN P_P2P_SPECIFIC_BSS_INFO_T
  1158. prSP2pBssInfo, IN UINT_8 ucListenChannel);
  1159. VOID p2pStateAbort_LISTEN(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsChannelExtenstion);
  1160. VOID p2pStateAbort_SEARCH_SCAN(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsChannelExtenstion);
  1161. VOID p2pStateAbort_GO_OPERATION(IN P_ADAPTER_T prAdapter);
  1162. VOID p2pStateAbort_GC_OPERATION(IN P_ADAPTER_T prAdapter);
  1163. VOID
  1164. p2pStateInit_CONFIGURATION(IN P_ADAPTER_T prAdapter, IN P_P2P_FSM_INFO_T prP2pFsmInfo, IN P_BSS_INFO_T prP2pBssInfo, IN
  1165. P_P2P_SPECIFIC_BSS_INFO_T prP2pSpecBssInfo);
  1166. VOID p2pStateAbort_CONFIGURATION(IN P_ADAPTER_T prAdapter);
  1167. VOID p2pStateInit_JOIN(IN P_ADAPTER_T prAdapter);
  1168. VOID p2pStateAbort_JOIN(IN P_ADAPTER_T prAdapter);
  1169. /*====== P2P Functions ======*/
  1170. VOID p2pFuncInitGO(IN P_ADAPTER_T prAdapter);
  1171. VOID
  1172. p2pFuncDisconnect(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN BOOLEAN fgSendDeauth, IN UINT_16
  1173. u2ReasonCode);
  1174. VOID p2pFuncRunEventProvisioningComplete(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  1175. WLAN_STATUS p2pFuncSetGroupID(IN P_ADAPTER_T prAdapter, IN PUINT_8 pucGroupID, IN PUINT_8 pucSsid, IN UINT_8 ucSsidLen);
  1176. WLAN_STATUS
  1177. p2pFuncSendDeviceDiscoverabilityReqFrame(IN P_ADAPTER_T prAdapter, IN UINT_8 aucDestAddr[], IN UINT_8 ucDialogToken);
  1178. WLAN_STATUS
  1179. p2pFuncSendDeviceDiscoverabilityRspFrame(IN P_ADAPTER_T prAdapter, IN UINT_8 aucDestAddr[], IN UINT_8 ucDialogToken);
  1180. UINT_8 p2pFuncGetVersionNumOfSD(IN P_ADAPTER_T prAdapter);
  1181. /*====== P2P FSM ======*/
  1182. VOID p2pFsmRunEventConnectionRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  1183. VOID p2pFsmRunEventDeviceDiscoveryRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  1184. VOID p2pFsmRunEventDeviceDiscoveryAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  1185. VOID p2pFsmRunEventRxGroupNegotiationReqFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
  1186. WLAN_STATUS
  1187. p2pFsmRunEventGroupNegotiationRequestTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN
  1188. ENUM_TX_RESULT_CODE_T rTxDoneStatus);
  1189. WLAN_STATUS
  1190. p2pFsmRunEventGroupNegotiationResponseTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN
  1191. ENUM_TX_RESULT_CODE_T rTxDoneStatus);
  1192. WLAN_STATUS
  1193. p2pFsmRunEventGroupNegotiationConfirmTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN
  1194. ENUM_TX_RESULT_CODE_T rTxDoneStatus);
  1195. WLAN_STATUS
  1196. p2pFsmRunEventProvisionDiscoveryRequestTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN
  1197. ENUM_TX_RESULT_CODE_T rTxDoneStatus);
  1198. WLAN_STATUS
  1199. p2pFsmRunEventProvisionDiscoveryResponseTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN
  1200. ENUM_TX_RESULT_CODE_T rTxDoneStatus);
  1201. WLAN_STATUS
  1202. p2pFsmRunEventInvitationRequestTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T
  1203. rTxDoneStatus);
  1204. VOID p2pFsmRunEventRxDeauthentication(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prSwRfb);
  1205. VOID p2pFsmRunEventRxDisassociation(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prSwRfb);
  1206. VOID p2pFsmRunEventBeaconTimeout(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prP2pBssInfo);
  1207. WLAN_STATUS
  1208. p2pFsmRunEventDeauthTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T
  1209. rTxDoneStatus);
  1210. #if 1
  1211. #endif
  1212. /* //////////////////////////////////////////////////////////////////////// */
  1213. /* //////////////////////////////////////////////////////////////////////// */
  1214. /* //////////////////////////////////////////////////////////////////////// */
  1215. /* //////////////////////////////////////////////////////////////////////// */
  1216. /* //////////////////////////////////////////////////////////////////////// */
  1217. /* //////////////////////////////////////////////////////////////////////// */
  1218. /* //////////////////////////////////////////////////////////////////////// */
  1219. /* //////////////////////////////////////////////////////////////////////// */
  1220. /* //////////////////////////////////////////////////////////////////////// */
  1221. /* //////////////////////////////////////////////////////////////////////// */
  1222. /* //////////////////////////////////////////////////////////////////////// */
  1223. /*======Mail Box Event Message=====*/
  1224. VOID p2pFsmRunEventConnectionAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  1225. VOID p2pFsmRunEventConnectionTrigger(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  1226. VOID p2pFsmRunEventP2PFunctionSwitch(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  1227. VOID p2pFsmRunEventChGrant(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  1228. VOID p2pFsmRunEventJoinComplete(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  1229. VOID p2pFsmRunEventConnectionPause(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
  1230. VOID
  1231. p2pIndicationOfMediaStateToHost(IN P_ADAPTER_T prAdapter, IN ENUM_PARAM_MEDIA_STATE_T eConnectionState, IN UINT_8
  1232. aucTargetAddr[]);
  1233. VOID p2pUpdateBssInfoForJOIN(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prAssocRspSwRfb);
  1234. /*======Mail Box Event Message=====*/
  1235. VOID p2pFsmInit(IN P_ADAPTER_T prAdapter);
  1236. VOID p2pFsmUninit(IN P_ADAPTER_T prAdapter);
  1237. VOID p2pFsmSteps(IN P_ADAPTER_T prAdapter, IN ENUM_P2P_STATE_T eNextState);
  1238. VOID p2pStartGO(IN P_ADAPTER_T prAdapter);
  1239. VOID p2pAssignSsid(IN PUINT_8 pucSsid, IN PUINT_8 pucSsidLen);
  1240. VOID p2pFsmRunEventIOReqTimeout(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Param);
  1241. VOID p2pFsmRunEventSearchPeriodTimeout(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Param);
  1242. VOID p2pFsmRunEventFsmTimeout(IN P_ADAPTER_T prAdapter, IN ULONG ulParamPtr);
  1243. VOID p2pFsmRunEventRejoinTimeout(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Parm);
  1244. /*=============== P2P Function Related ================*/
  1245. /*=============== P2P Function Related ================*/
  1246. #if CFG_TEST_WIFI_DIRECT_GO
  1247. VOID p2pTest(IN P_ADAPTER_T prAdapter);
  1248. #endif /* CFG_TEST_WIFI_DIRECT_GO */
  1249. VOID p2pGenerateP2P_IEForBeacon(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
  1250. VOID p2pGenerateP2P_IEForAssocReq(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
  1251. VOID p2pGenerateP2P_IEForAssocRsp(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
  1252. VOID
  1253. p2pGenerateP2P_IEForProbeReq(IN P_ADAPTER_T prAdapter, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
  1254. UINT_32 p2pCalculateP2P_IELenForBeacon(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec);
  1255. UINT_32 p2pCalculateP2P_IELenForAssocRsp(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec);
  1256. UINT_32 p2pCalculateP2P_IELenForProbeReq(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec);
  1257. VOID p2pGenerateWSC_IEForProbeResp(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
  1258. VOID
  1259. p2pGenerateWSC_IEForProbeReq(IN P_ADAPTER_T prAdapter, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
  1260. UINT_16 p2pCalculateWSC_IELenForProbeReq(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex);
  1261. UINT_32 p2pCalculateWSC_IELenForProbeResp(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec);
  1262. UINT_32
  1263. p2pAppendAttriStatus(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN
  1264. UINT_16 u2BufSize);
  1265. UINT_32
  1266. p2pAppendAttriCapability(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
  1267. IN UINT_16 u2BufSize);
  1268. UINT_32
  1269. p2pAppendAttriGoIntent(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN
  1270. UINT_16 u2BufSize);
  1271. UINT_32
  1272. p2pAppendAttriCfgTimeout(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
  1273. IN UINT_16 u2BufSize);
  1274. UINT_32
  1275. p2pAppendAttriGroupBssid(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
  1276. IN UINT_16 u2BufSize);
  1277. UINT_32
  1278. p2pAppendAttriDeviceIDForBeacon(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
  1279. pucBuf, IN UINT_16 u2BufSize);
  1280. UINT_32
  1281. p2pAppendAttriDeviceIDForProbeReq(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
  1282. pucBuf, IN UINT_16 u2BufSize);
  1283. UINT_32
  1284. p2pAppendAttriDeviceIDForDeviceDiscoveryReq(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset,
  1285. IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
  1286. UINT_32
  1287. p2pAppendAttriListenChannel(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
  1288. pucBuf, IN UINT_16 u2BufSize);
  1289. UINT_32
  1290. p2pAppendAttriIntendP2pIfAddr(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
  1291. pucBuf, IN UINT_16 u2BufSize);
  1292. UINT_32
  1293. p2pAppendAttriChannelList(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
  1294. IN UINT_16 u2BufSize);
  1295. UINT_32 p2pCalculateAttriLenChannelList(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
  1296. UINT_32
  1297. p2pAppendAttriNoA(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN
  1298. UINT_16 u2BufSize);
  1299. UINT_32
  1300. p2pAppendAttriDeviceInfo(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
  1301. IN UINT_16 u2BufSize);
  1302. UINT_32 p2pCalculateAttriLenDeviceInfo(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
  1303. UINT_32
  1304. p2pAppendAttriGroupInfo(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
  1305. IN UINT_16 u2BufSize);
  1306. UINT_32 p2pCalculateAttriLenGroupInfo(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
  1307. UINT_32
  1308. p2pAppendAttriP2pGroupID(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
  1309. IN UINT_16 u2BufSize);
  1310. UINT_32
  1311. p2pAppendAttriOperatingChannel(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
  1312. pucBuf, IN UINT_16 u2BufSize);
  1313. UINT_32
  1314. p2pAppendAttriInvitationFlag(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
  1315. pucBuf, IN UINT_16 u2BufSize);
  1316. VOID
  1317. p2pGenerateWscIE(IN P_ADAPTER_T prAdapter, IN UINT_8 ucOuiType, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN
  1318. PUINT_8 pucBuf, IN UINT_16 u2BufSize, IN APPEND_VAR_ATTRI_ENTRY_T arAppendAttriTable[],
  1319. IN UINT_32 u4AttriTableSize);
  1320. UINT_32
  1321. p2pAppendAttriWSCConfigMethod(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8
  1322. pucBuf, IN UINT_16 u2BufSize);
  1323. UINT_32
  1324. p2pAppendAttriWSCVersion(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf,
  1325. IN UINT_16 u2BufSize);
  1326. UINT_32
  1327. p2pAppendAttriWSCGONegReqDevPasswordId(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN
  1328. PUINT_8 pucBuf, IN UINT_16 u2BufSize);
  1329. UINT_32
  1330. p2pAppendAttriWSCGONegRspDevPasswordId(IN P_ADAPTER_T prAdapter, IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN
  1331. PUINT_8 pucBuf, IN UINT_16 u2BufSize);
  1332. WLAN_STATUS
  1333. p2pGetWscAttriList(IN P_ADAPTER_T prAdapter, IN UINT_8 ucOuiType, IN PUINT_8 pucIE, IN UINT_16 u2IELength, OUT PPUINT_8
  1334. ppucAttriList, OUT PUINT_16 pu2AttriListLen);
  1335. WLAN_STATUS
  1336. p2pGetAttriList(IN P_ADAPTER_T prAdapter, IN UINT_8 ucOuiType, IN PUINT_8 pucIE, IN UINT_16 u2IELength, OUT PPUINT_8
  1337. ppucAttriList, OUT PUINT_16 pu2AttriListLen);
  1338. VOID p2pRunEventAAATxFail(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
  1339. WLAN_STATUS p2pRunEventAAASuccess(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
  1340. WLAN_STATUS p2pRunEventAAAComplete(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
  1341. WLAN_STATUS p2pSendProbeResponseFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
  1342. BOOLEAN p2pFsmRunEventRxProbeRequestFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
  1343. VOID p2pFsmRunEventRxProbeResponseFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb, IN P_BSS_DESC_T prBssDesc);
  1344. WLAN_STATUS p2pRxPublicActionFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
  1345. WLAN_STATUS p2pRxActionFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
  1346. VOID p2pFsmRunEventRxGroupNegotiationRspFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
  1347. VOID p2pFsmRunEventRxGroupNegotiationCfmFrame(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prSwRfb);
  1348. #if 0 /* frog */
  1349. BOOLEAN scanMatchFilterOfP2P(IN P_SW_RFB_T prSWRfb, IN PP_BSS_DESC_T pprBssDesc);
  1350. #endif /* frog */
  1351. VOID
  1352. p2pProcessEvent_UpdateNOAParam(IN P_ADAPTER_T prAdapter, UINT_8 ucNetTypeIndex, P_EVENT_UPDATE_NOA_PARAMS_T
  1353. prEventUpdateNoaParam);
  1354. VOID p2pFuncCompleteIOCTL(IN P_ADAPTER_T prAdapter, IN WLAN_STATUS rWlanStatus);
  1355. /*******************************************************************************
  1356. * F U N C T I O N S
  1357. ********************************************************************************
  1358. */
  1359. #ifndef _lint
  1360. /* Kevin: we don't have to call following function to inspect the data structure.
  1361. * It will check automatically while at compile time.
  1362. * We'll need this for porting driver to different RTOS.
  1363. */
  1364. static __KAL_INLINE__ VOID p2pDataTypeCheck(VOID)
  1365. {
  1366. DATA_STRUCT_INSPECTING_ASSERT(sizeof(IE_P2P_T) == (2 + 4 + 1)); /* all UINT_8 */
  1367. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRIBUTE_T) == (3 + 1));
  1368. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_STATUS_T) == (3 + 1));
  1369. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_REASON_T) == (3 + 1));
  1370. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CAPABILITY_T) == (3 + 2));
  1371. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_DEV_ID_T) == (3 + 6));
  1372. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GO_INTENT_T) == (3 + 1));
  1373. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CFG_TIMEOUT_T) == (3 + 2));
  1374. #if CID52_53_54
  1375. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_LISTEN_CHANNEL_T) == (3 + 5));
  1376. #else
  1377. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_LISTEN_CHANNEL_T) == (3 + 5));
  1378. #endif
  1379. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_BSSID_T) == (3 + 6));
  1380. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_EXT_LISTEN_TIMING_T) == (3 + 4));
  1381. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_INTENDED_IF_ADDR_T) == (3 + 6));
  1382. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_MANAGEABILITY_T) == (3 + 1));
  1383. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_CHANNEL_T) == (3 + 4));
  1384. DATA_STRUCT_INSPECTING_ASSERT(sizeof(CHANNEL_ENTRY_FIELD_T) == 3);
  1385. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_NOA_T) == (3 + 3));
  1386. DATA_STRUCT_INSPECTING_ASSERT(sizeof(NOA_DESCRIPTOR_T) == 13);
  1387. DATA_STRUCT_INSPECTING_ASSERT(sizeof(DEVICE_TYPE_T) == 8);
  1388. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_DEV_INFO_T) == (3 + 6 + 2 + 8 + 1 + 8));
  1389. DATA_STRUCT_INSPECTING_ASSERT(sizeof(DEVICE_NAME_TLV_T) == (4 + 32));
  1390. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_CLIENT_INFO_DESC_T) == (1 + 6 + 6 + 1 + 2 + 8 + 1 + 8));
  1391. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_INFO_T) == (3 + (1 + 6 + 6 + 1 + 2 + 8 + 1 + 8)));
  1392. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_GROUP_ID_T) == (3 + 38));
  1393. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_INTERFACE_T) == (3 + 13));
  1394. #if CID52_53_54
  1395. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_OPERATING_CHANNEL_T) == (3 + 5));
  1396. #else
  1397. DATA_STRUCT_INSPECTING_ASSERT(sizeof(P2P_ATTRI_OPERATING_CHANNEL_T) == (3 + 5));
  1398. #endif
  1399. }
  1400. #endif /* _lint */
  1401. #endif /* _P2P_FSM_H */