p2p.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. /*
  2. ** Id: //Department/DaVinci/TRUNK/WiFi_P2P_Driver/include/nic/p2p.h#3
  3. */
  4. /*
  5. ** Log: p2p.h
  6. **
  7. ** 03 16 2015 eason.tsai
  8. ** [ALPS01985239] [Need Patch] [Volunteer Patch]
  9. ** enlarge the time to avoid deauth packet stucking in the driver
  10. **
  11. ** 07 25 2014 eason.tsai
  12. ** AOSP
  13. **
  14. ** 10 08 2013 yuche.tsai
  15. ** [ALPS01065606] [Volunteer Patch][MT6630][Wi-Fi Direct][Driver] MT6630 Wi-Fi Direct Driver Patch
  16. ** Update Wi-Fi Direct Source.
  17. **
  18. ** 08 28 2013 yuche.tsai
  19. ** [BORA00002761] [MT6630][Wi-Fi Direct][Driver] Group Interface formation
  20. ** Fix Wi-Fi Direct channel width & RX channel indication issue.
  21. **
  22. ** 08 22 2013 yuche.tsai
  23. ** [BORA00002761] [MT6630][Wi-Fi Direct][Driver] Group Interface formation
  24. ** [BORA00000779] [MT6620] Emulation For TX Code Check In
  25. ** Make P2P group interface formation success.
  26. **
  27. ** 08 13 2013 yuche.tsai
  28. ** [BORA00002398] [MT6630][Volunteer Patch] P2P Driver Re-Design for Multiple BSS support
  29. ** Update driver for P2P scan & listen.
  30. **
  31. ** 07 19 2013 yuche.tsai
  32. ** [BORA00002398] [MT6630][Volunteer Patch] P2P Driver Re-Design for Multiple BSS support
  33. ** Code update for P2P.
  34. **
  35. ** 02 27 2013 yuche.tsai
  36. ** [BORA00002398] [MT6630][Volunteer Patch] P2P Driver Re-Design for Multiple BSS support
  37. ** Add p2p_rlm.c, p2p_rlm_obss.c, fix compile warning & error.
  38. **
  39. ** 02 27 2013 yuche.tsai
  40. ** [BORA00002398] [MT6630][Volunteer Patch] P2P Driver Re-Design for Multiple BSS support
  41. ** Add new code, fix compile warning.
  42. **
  43. ** 09 17 2012 cm.chang
  44. ** [BORA00002149] [MT6630 Wi-Fi] Initial software development
  45. ** Duplicate source from MT6620 v2.3 driver branch
  46. ** (Davinci label: MT6620_WIFI_Driver_V2_3_120913_1942_As_MT6630_Base)
  47. *
  48. * 07 17 2012 yuche.tsai
  49. * NULL
  50. * Compile no error before trial run.
  51. *
  52. * 10 20 2010 wh.su
  53. * [WCXRP00000124] [MT6620 Wi-Fi] [Driver] Support the dissolve P2P Group
  54. * Add the code to support disconnect p2p group
  55. *
  56. * 09 21 2010 kevin.huang
  57. * [WCXRP00000054] [MT6620 Wi-Fi][Driver] Restructure driver for second Interface
  58. * Isolate P2P related function for Hardware Software Bundle
  59. *
  60. * 08 03 2010 cp.wu
  61. * NULL
  62. * [Wi-Fi Direct] add framework for driver hooks
  63. *
  64. * 07 08 2010 cp.wu
  65. *
  66. * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
  67. *
  68. * 06 23 2010 cp.wu
  69. * [WPD00003833][MT6620 and MT5931] Driver migration
  70. * p2p interface revised to be sync. with HAL
  71. *
  72. * 06 06 2010 kevin.huang
  73. * [WPD00003832][MT6620 5931] Create driver base
  74. * [MT6620 5931] Create driver base
  75. *
  76. * 05 18 2010 cp.wu
  77. * [WPD00003831][MT6620 Wi-Fi] Add framework for Wi-Fi Direct support
  78. * add parameter to control:
  79. * 1) auto group owner
  80. * 2) P2P-PS parameter (CTWindow, NoA descriptors)
  81. *
  82. * 05 18 2010 cp.wu
  83. * [WPD00003831][MT6620 Wi-Fi] Add framework for Wi-Fi Direct support
  84. * correct WPS Device Password ID definition.
  85. *
  86. * 05 17 2010 cp.wu
  87. * [WPD00003831][MT6620 Wi-Fi] Add framework for Wi-Fi Direct support
  88. * implement get scan result.
  89. *
  90. * 05 17 2010 cp.wu
  91. * [WPD00003831][MT6620 Wi-Fi] Add framework for Wi-Fi Direct support
  92. * add basic handling framework for wireless extension ioctls.
  93. *
  94. * 05 14 2010 cp.wu
  95. * [WPD00003831][MT6620 Wi-Fi] Add framework for Wi-Fi Direct support
  96. * add ioctl framework for Wi-Fi Direct by reusing wireless extension ioctls as well
  97. *
  98. * 05 11 2010 cp.wu
  99. * [WPD00003831][MT6620 Wi-Fi] Add framework for Wi-Fi Direct support
  100. * p2p ioctls revised.
  101. *
  102. * 05 10 2010 cp.wu
  103. * [WPD00003831][MT6620 Wi-Fi] Add framework for Wi-Fi Direct support
  104. * implement basic wi-fi direct framework
  105. *
  106. * 05 07 2010 cp.wu
  107. * [WPD00003831][MT6620 Wi-Fi] Add framework for Wi-Fi Direct support
  108. * add basic framework for implementating P2P driver hook.
  109. *
  110. *
  111. */
  112. #ifndef _P2P_H
  113. #define _P2P_H
  114. /*******************************************************************************
  115. * C O M P I L E R F L A G S
  116. ********************************************************************************
  117. */
  118. /*******************************************************************************
  119. * E X T E R N A L R E F E R E N C E S
  120. ********************************************************************************
  121. */
  122. /*******************************************************************************
  123. * C O N S T A N T S
  124. ********************************************************************************
  125. */
  126. /* refer to 'Config Methods' in WPS */
  127. #define WPS_CONFIG_USBA 0x0001
  128. #define WPS_CONFIG_ETHERNET 0x0002
  129. #define WPS_CONFIG_LABEL 0x0004
  130. #define WPS_CONFIG_DISPLAY 0x0008
  131. #define WPS_CONFIG_EXT_NFC 0x0010
  132. #define WPS_CONFIG_INT_NFC 0x0020
  133. #define WPS_CONFIG_NFC 0x0040
  134. #define WPS_CONFIG_PBC 0x0080
  135. #define WPS_CONFIG_KEYPAD 0x0100
  136. /* refer to 'Device Password ID' in WPS */
  137. #define WPS_DEV_PASSWORD_ID_PIN 0x0000
  138. #define WPS_DEV_PASSWORD_ID_USER 0x0001
  139. #define WPS_DEV_PASSWORD_ID_MACHINE 0x0002
  140. #define WPS_DEV_PASSWORD_ID_REKEY 0x0003
  141. #define WPS_DEV_PASSWORD_ID_PUSHBUTTON 0x0004
  142. #define WPS_DEV_PASSWORD_ID_REGISTRAR 0x0005
  143. #define P2P_DEVICE_TYPE_NUM 2
  144. #define P2P_DEVICE_NAME_LENGTH 32
  145. #define P2P_NETWORK_NUM 8
  146. #define P2P_MEMBER_NUM 8
  147. /* Device Capability Definition. */
  148. #define P2P_MAXIMUM_CLIENT_COUNT 10
  149. #define P2P_MAXIMUM_NOA_COUNT 8
  150. #define P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE 51 /* Contains 6 sub-band. */
  151. /* Memory Size Definition. */
  152. #define P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE 768
  153. #define WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE 300
  154. #define P2P_WILDCARD_SSID "DIRECT-"
  155. /* Device Charactoristic. */
  156. #define P2P_AP_CHNL_HOLD_TIME_MS 5000 /* 1000 is too short , the deauth would block in the queue */
  157. #define P2P_DEFAULT_LISTEN_CHANNEL 1
  158. /*******************************************************************************
  159. * M A C R O S
  160. ********************************************************************************
  161. */
  162. #if DBG
  163. #define ASSERT_BREAK(_exp) \
  164. { \
  165. if (!(_exp)) { \
  166. ASSERT(FALSE); \
  167. break; \
  168. } \
  169. }
  170. #else
  171. #define ASSERT_BREAK(_exp)
  172. #endif
  173. #define p2pChangeMediaState(_prAdapter, _prP2pBssInfo, _eNewMediaState) \
  174. (_prP2pBssInfo->eConnectionState = (_eNewMediaState))
  175. /*******************************************************************************
  176. * D A T A T Y P E S
  177. ********************************************************************************
  178. */
  179. struct _P2P_INFO_T {
  180. UINT_32 u4DeviceNum;
  181. EVENT_P2P_DEV_DISCOVER_RESULT_T arP2pDiscoverResult[CFG_MAX_NUM_BSS_LIST];
  182. PUINT_8 pucCurrIePtr;
  183. UINT_8 aucCommIePool[CFG_MAX_COMMON_IE_BUF_LEN]; /* A common pool for IE of all
  184. *scan results. */
  185. };
  186. typedef enum {
  187. ENUM_P2P_PEER_GROUP,
  188. ENUM_P2P_PEER_DEVICE,
  189. ENUM_P2P_PEER_NUM
  190. } ENUM_P2P_PEER_TYPE, *P_ENUM_P2P_PEER_TYPE;
  191. typedef struct _P2P_DEVICE_INFO {
  192. UINT_8 aucDevAddr[PARAM_MAC_ADDR_LEN];
  193. UINT_8 aucIfAddr[PARAM_MAC_ADDR_LEN];
  194. UINT_8 ucDevCapabilityBitmap;
  195. INT_32 i4ConfigMethod;
  196. UINT_8 aucPrimaryDeviceType[8];
  197. UINT_8 aucSecondaryDeviceType[8];
  198. UINT_8 aucDeviceName[P2P_DEVICE_NAME_LENGTH];
  199. } P2P_DEVICE_INFO, *P_P2P_DEVICE_INFO;
  200. typedef struct _P2P_GROUP_INFO {
  201. PARAM_SSID_T rGroupID;
  202. P2P_DEVICE_INFO rGroupOwnerInfo;
  203. UINT_8 ucMemberNum;
  204. P2P_DEVICE_INFO arMemberInfo[P2P_MEMBER_NUM];
  205. } P2P_GROUP_INFO, *P_P2P_GROUP_INFO;
  206. typedef struct _P2P_NETWORK_INFO {
  207. ENUM_P2P_PEER_TYPE eNodeType;
  208. union {
  209. P2P_GROUP_INFO rGroupInfo;
  210. P2P_DEVICE_INFO rDeviceInfo;
  211. } node;
  212. } P2P_NETWORK_INFO, *P_P2P_NETWORK_INFO;
  213. typedef struct _P2P_NETWORK_LIST {
  214. UINT_8 ucNetworkNum;
  215. P2P_NETWORK_INFO rP2PNetworkInfo[P2P_NETWORK_NUM];
  216. } P2P_NETWORK_LIST, *P_P2P_NETWORK_LIST;
  217. typedef struct _P2P_DISCONNECT_INFO {
  218. UINT_8 ucRole;
  219. UINT_8 ucRsv[3];
  220. } P2P_DISCONNECT_INFO, *P_P2P_DISCONNECT_INFO;
  221. typedef struct _P2P_SSID_STRUCT_T {
  222. UINT_8 aucSsid[32];
  223. UINT_8 ucSsidLen;
  224. } P2P_SSID_STRUCT_T, *P_P2P_SSID_STRUCT_T;
  225. typedef struct _P2P_SCAN_REQ_INFO_T {
  226. ENUM_SCAN_TYPE_T eScanType;
  227. ENUM_SCAN_CHANNEL eChannelSet;
  228. UINT_16 u2PassiveDewellTime;
  229. UINT_8 ucSeqNumOfScnMsg;
  230. BOOLEAN fgIsAbort;
  231. BOOLEAN fgIsScanRequest;
  232. UINT_8 ucNumChannelList;
  233. RF_CHANNEL_INFO_T arScanChannelList[MAXIMUM_OPERATION_CHANNEL_LIST];
  234. UINT_32 u4BufLength;
  235. UINT_8 aucIEBuf[MAX_IE_LENGTH];
  236. UINT_8 ucSsidNum;
  237. P2P_SSID_STRUCT_T arSsidStruct[SCN_SSID_MAX_NUM]; /* Currently we can only take one SSID scan request */
  238. } P2P_SCAN_REQ_INFO_T, *P_P2P_SCAN_REQ_INFO_T;
  239. typedef struct _P2P_CHNL_REQ_INFO_T {
  240. LINK_T rP2pChnlReqLink;
  241. BOOLEAN fgIsChannelRequested;
  242. UINT_8 ucSeqNumOfChReq;
  243. UINT_64 u8Cookie;
  244. UINT_8 ucReqChnlNum;
  245. ENUM_BAND_T eBand;
  246. ENUM_CHNL_EXT_T eChnlSco;
  247. UINT_8 ucOriChnlNum;
  248. ENUM_CHANNEL_WIDTH_T eChannelWidth; /*VHT operation ie */
  249. UINT_8 ucCenterFreqS1;
  250. UINT_8 ucCenterFreqS2;
  251. ENUM_BAND_T eOriBand;
  252. ENUM_CHNL_EXT_T eOriChnlSco;
  253. UINT_32 u4MaxInterval;
  254. ENUM_CH_REQ_TYPE_T eChnlReqType;
  255. #if CFG_SUPPORT_NFC_BEAM_PLUS
  256. UINT_32 NFC_BEAM; /*NFC Beam + Indication */
  257. #endif
  258. } P2P_CHNL_REQ_INFO_T, *P_P2P_CHNL_REQ_INFO_T;
  259. /* Glubal Connection Settings. */
  260. struct _P2P_CONNECTION_SETTINGS_T {
  261. UINT_8 ucRfChannelListSize;
  262. #if P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE
  263. UINT_8 aucChannelEntriesField[P2P_MAX_SUPPORTED_CHANNEL_LIST_SIZE];
  264. #endif
  265. BOOLEAN fgIsApMode;
  266. #if CFG_SUPPORT_HOTSPOT_WPS_MANAGER
  267. BOOLEAN fgIsWPSMode;
  268. #endif
  269. };
  270. typedef struct _NOA_TIMING_T {
  271. BOOLEAN fgIsInUse; /* Indicate if this entry is in use or not */
  272. UINT_8 ucCount; /* Count */
  273. UINT_8 aucReserved[2];
  274. UINT_32 u4Duration; /* Duration */
  275. UINT_32 u4Interval; /* Interval */
  276. UINT_32 u4StartTime; /* Start Time */
  277. } NOA_TIMING_T, *P_NOA_TIMING_T;
  278. struct _P2P_SPECIFIC_BSS_INFO_T {
  279. /* For GO(AP) Mode - Compose TIM IE */
  280. UINT_16 u2SmallestAID;
  281. UINT_16 u2LargestAID;
  282. UINT_8 ucBitmapCtrl;
  283. /* UINT_8 aucPartialVirtualBitmap[MAX_LEN_TIM_PARTIAL_BMP]; */
  284. /* For GC/GO OppPS */
  285. BOOLEAN fgEnableOppPS;
  286. UINT_16 u2CTWindow;
  287. /* For GC/GO NOA */
  288. UINT_8 ucNoAIndex;
  289. UINT_8 ucNoATimingCount; /* Number of NoA Timing */
  290. NOA_TIMING_T arNoATiming[P2P_MAXIMUM_NOA_COUNT];
  291. BOOLEAN fgIsNoaAttrExisted;
  292. /* For P2P Device */
  293. UINT_8 ucRegClass; /* Regulatory Class for channel. */
  294. UINT_8 ucListenChannel; /* Linten Channel only on channels 1, 6 and 11
  295. *in the 2.4 GHz. */
  296. UINT_8 ucPreferredChannel; /* Operating Channel, should be one of channel
  297. *list in p2p connection settings. */
  298. ENUM_CHNL_EXT_T eRfSco;
  299. ENUM_BAND_T eRfBand;
  300. /* Extended Listen Timing. */
  301. UINT_16 u2AvailabilityPeriod;
  302. UINT_16 u2AvailabilityInterval;
  303. UINT_16 u2AttributeLen;
  304. UINT_8 aucAttributesCache[P2P_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
  305. UINT_16 u2WscAttributeLen;
  306. UINT_8 aucWscAttributesCache[WPS_MAXIMUM_ATTRIBUTES_CACHE_SIZE];
  307. UINT_8 aucGroupID[MAC_ADDR_LEN];
  308. UINT_16 u2GroupSsidLen;
  309. UINT_8 aucGroupSsid[ELEM_MAX_LEN_SSID];
  310. PARAM_CUSTOM_NOA_PARAM_STRUCT_T rNoaParam;
  311. PARAM_CUSTOM_OPPPS_PARAM_STRUCT_T rOppPsParam;
  312. UINT_16 u2WpaIeLen;
  313. UINT_8 aucWpaIeBuffer[ELEM_HDR_LEN + ELEM_MAX_LEN_WPA];
  314. };
  315. /*******************************************************************************
  316. * P U B L I C D A T A
  317. ********************************************************************************
  318. */
  319. /*******************************************************************************
  320. * P R I V A T E D A T A
  321. ********************************************************************************
  322. */
  323. /*******************************************************************************
  324. * F U N C T I O N D E C L A R A T I O N S
  325. ********************************************************************************
  326. */
  327. #endif /*_P2P_H */