import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / connectivity / combo / drv_wlan / mt6620 / wlan / include / wlan_p2p.h
1 /*
2 ** $Id: //Department/DaVinci/TRUNK/WiFi_P2P_Driver/include/wlan_p2p.h#3 $
3 */
4
5 /*! \file "wlan_p2p.h"
6 \brief This file contains the declairations of Wi-Fi Direct command
7 processing routines for MediaTek Inc. 802.11 Wireless LAN Adapters.
8 */
9
10
11
12 /*
13 ** $Log: wlan_p2p.h $
14 *
15 * 07 17 2012 yuche.tsai
16 * NULL
17 * Compile no error before trial run.
18 *
19 * 11 19 2011 yuche.tsai
20 * NULL
21 * Add RSSI support for P2P network.
22 *
23 * 11 08 2011 yuche.tsai
24 * [WCXRP00001094] [Volunteer Patch][Driver] Driver version & supplicant version query & set support for service discovery version check.
25 * Add support for driver version query & p2p supplicant verseion set.
26 * For new service discovery mechanism sync.
27 *
28 * 10 18 2011 yuche.tsai
29 * [WCXRP00001045] [WiFi Direct][Driver] Check 2.1 branch.
30 * Support Channle Query.
31 *
32 * 10 18 2011 yuche.tsai
33 * [WCXRP00001045] [WiFi Direct][Driver] Check 2.1 branch.
34 * New 2.1 branch
35
36 *
37 * 04 27 2011 george.huang
38 * [WCXRP00000684] [MT6620 Wi-Fi][Driver] Support P2P setting ARP filter
39 * Support P2P ARP filter setting on early suspend/ late resume
40 *
41 * 04 08 2011 george.huang
42 * [WCXRP00000621] [MT6620 Wi-Fi][Driver] Support P2P supplicant to set power mode
43 * separate settings of P2P and AIS
44 *
45 * 03 22 2011 george.huang
46 * [WCXRP00000504] [MT6620 Wi-Fi][FW] Support Sigma CAPI for power saving related command
47 * link with supplicant commands
48 *
49 * 03 07 2011 wh.su
50 * [WCXRP00000506] [MT6620 Wi-Fi][Driver][FW] Add Security check related code
51 * rename the define to anti_pviracy.
52 *
53 * 03 02 2011 wh.su
54 * [WCXRP00000506] [MT6620 Wi-Fi][Driver][FW] Add Security check related code
55 * Add Security check related code.
56 *
57 * 01 05 2011 cp.wu
58 * [WCXRP00000283] [MT6620 Wi-Fi][Driver][Wi-Fi Direct] Implementation of interface for supporting Wi-Fi Direct Service Discovery
59 * ioctl implementations for P2P Service Discovery
60 *
61 * 12 22 2010 cp.wu
62 * [WCXRP00000283] [MT6620 Wi-Fi][Driver][Wi-Fi Direct] Implementation of interface for supporting Wi-Fi Direct Service Discovery
63 * 1. header file restructure for more clear module isolation
64 * 2. add function interface definition for implementing Service Discovery callbacks
65 *
66 * 09 21 2010 kevin.huang
67 * [WCXRP00000054] [MT6620 Wi-Fi][Driver] Restructure driver for second Interface
68 * Isolate P2P related function for Hardware Software Bundle
69 *
70 * 08 16 2010 cp.wu
71 * NULL
72 * add subroutines for P2P to set multicast list.
73 *
74 * 08 16 2010 george.huang
75 * NULL
76 * support wlanoidSetP2pPowerSaveProfile() in P2P
77 *
78 * 08 16 2010 george.huang
79 * NULL
80 * Support wlanoidSetNetworkAddress() for P2P
81 *
82 * 07 08 2010 cp.wu
83 *
84 * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
85 *
86 * 06 06 2010 kevin.huang
87 * [WPD00003832][MT6620 5931] Create driver base
88 * [MT6620 5931] Create driver base
89 *
90 * 05 17 2010 cp.wu
91 * [WPD00001943]Create WiFi test driver framework on WinXP
92 * MT6620 is not supporting NDIS_PACKET_TYPE_PROMISCUOUS.
93 *
94
95 *
96 **
97 */
98
99 #ifndef _WLAN_P2P_H
100 #define _WLAN_P2P_H
101
102 /*******************************************************************************
103 * C O M P I L E R F L A G S
104 ********************************************************************************
105 */
106
107 /*******************************************************************************
108 * E X T E R N A L R E F E R E N C E S
109 ********************************************************************************
110 */
111
112 #if CFG_ENABLE_WIFI_DIRECT
113 /*******************************************************************************
114 * C O N S T A N T S
115 ********************************************************************************
116 */
117
118 /*******************************************************************************
119 * P U B L I C D A T A
120 ********************************************************************************
121 */
122
123 /* Service Discovery */
124 typedef struct _PARAM_P2P_SEND_SD_RESPONSE {
125 PARAM_MAC_ADDRESS rReceiverAddr;
126 UINT_8 fgNeedTxDoneIndication;
127 UINT_8 ucChannelNum;
128 UINT_16 u2PacketLength;
129 UINT_8 aucPacketContent[0]; /*native 802.11 */
130 } PARAM_P2P_SEND_SD_RESPONSE, *P_PARAM_P2P_SEND_SD_RESPONSE;
131
132 typedef struct _PARAM_P2P_GET_SD_REQUEST {
133 PARAM_MAC_ADDRESS rTransmitterAddr;
134 UINT_16 u2PacketLength;
135 UINT_8 aucPacketContent[0]; /*native 802.11 */
136 } PARAM_P2P_GET_SD_REQUEST, *P_PARAM_P2P_GET_SD_REQUEST;
137
138 typedef struct _PARAM_P2P_GET_SD_REQUEST_EX {
139 PARAM_MAC_ADDRESS rTransmitterAddr;
140 UINT_16 u2PacketLength;
141 UINT_8 ucChannelNum; /* Channel Number Where SD Request is received. */
142 UINT_8 ucSeqNum; /* Get SD Request by sequence number. */
143 UINT_8 aucPacketContent[0]; /*native 802.11 */
144 } PARAM_P2P_GET_SD_REQUEST_EX, *P_PARAM_P2P_GET_SD_REQUEST_EX;
145
146 typedef struct _PARAM_P2P_SEND_SD_REQUEST {
147 PARAM_MAC_ADDRESS rReceiverAddr;
148 UINT_8 fgNeedTxDoneIndication;
149 UINT_8 ucVersionNum; /* Indicate the Service Discovery Supplicant Version. */
150 UINT_16 u2PacketLength;
151 UINT_8 aucPacketContent[0]; /*native 802.11 */
152 } PARAM_P2P_SEND_SD_REQUEST, *P_PARAM_P2P_SEND_SD_REQUEST;
153
154 /* Service Discovery 1.0. */
155 typedef struct _PARAM_P2P_GET_SD_RESPONSE {
156 PARAM_MAC_ADDRESS rTransmitterAddr;
157 UINT_16 u2PacketLength;
158 UINT_8 aucPacketContent[0]; /*native 802.11 */
159 } PARAM_P2P_GET_SD_RESPONSE, *P_PARAM_P2P_GET_SD_RESPONSE;
160
161 /* Service Discovery 2.0. */
162 typedef struct _PARAM_P2P_GET_SD_RESPONSE_EX {
163 PARAM_MAC_ADDRESS rTransmitterAddr;
164 UINT_16 u2PacketLength;
165 UINT_8 ucSeqNum; /* Get SD Response by sequence number. */
166 UINT_8 aucPacketContent[0]; /*native 802.11 */
167 } PARAM_P2P_GET_SD_RESPONSE_EX, *P_PARAM_P2P_GET_SD_RESPONSE_EX;
168
169
170 typedef struct _PARAM_P2P_TERMINATE_SD_PHASE {
171 PARAM_MAC_ADDRESS rPeerAddr;
172 } PARAM_P2P_TERMINATE_SD_PHASE, *P_PARAM_P2P_TERMINATE_SD_PHASE;
173
174
175 /*! \brief Key mapping of BSSID */
176 typedef struct _P2P_PARAM_KEY_T {
177 UINT_32 u4Length; /*!< Length of structure */
178 UINT_32 u4KeyIndex; /*!< KeyID */
179 UINT_32 u4KeyLength; /*!< Key length in bytes */
180 PARAM_MAC_ADDRESS arBSSID; /*!< MAC address */
181 PARAM_KEY_RSC rKeyRSC;
182 UINT_8 aucKeyMaterial[32]; /*!< Key content by above setting */
183 } P2P_PARAM_KEY_T, *P_P2P_PARAM_KEY_T;
184
185 #if CONFIG_NL80211_TESTMODE
186
187 typedef struct _NL80211_DRIVER_TEST_PRE_PARAMS {
188 UINT_16 idx_mode;
189 UINT_16 idx;
190 UINT_32 value;
191 } NL80211_DRIVER_TEST_PRE_PARAMS, *P_NL80211_DRIVER_TEST_PRE_PARAMS;
192
193
194 typedef struct _NL80211_DRIVER_TEST_PARAMS {
195 UINT_32 index;
196 UINT_32 buflen;
197 } NL80211_DRIVER_TEST_PARAMS, *P_NL80211_DRIVER_TEST_PARAMS;
198
199
200 /* P2P Sigma*/
201 typedef struct _NL80211_DRIVER_P2P_SIGMA_PARAMS {
202 NL80211_DRIVER_TEST_PARAMS hdr;
203 UINT_32 idx;
204 UINT_32 value;
205 } NL80211_DRIVER_P2P_SIGMA_PARAMS, *P_NL80211_DRIVER_P2P_SIGMA_PARAMS;
206
207
208 /* Hotspot Client Management */
209 typedef struct _NL80211_DRIVER_HOTSPOT_BLOCK_PARAMS {
210 NL80211_DRIVER_TEST_PARAMS hdr;
211 UINT_8 ucblocked;
212 UINT_8 aucBssid[MAC_ADDR_LEN];
213 } NL80211_DRIVER_HOTSPOT_BLOCK_PARAMS, *P_NL80211_DRIVER_HOTSPOT_BLOCK_PARAMS;
214
215
216 #if CFG_SUPPORT_WFD
217 typedef struct _NL80211_DRIVER_WFD_PARAMS {
218 NL80211_DRIVER_TEST_PARAMS hdr;
219 UINT_32 WfdCmdType;
220 UINT_8 WfdEnable;
221 UINT_8 WfdCoupleSinkStatus;
222 UINT_8 WfdSessionAvailable;
223 UINT_8 WfdSigmaMode;
224 UINT_16 WfdDevInfo;
225 UINT_16 WfdControlPort;
226 UINT_16 WfdMaximumTp;
227 UINT_16 WfdExtendCap;
228 UINT_8 WfdCoupleSinkAddress[MAC_ADDR_LEN];
229 UINT_8 WfdAssociatedBssid[MAC_ADDR_LEN];
230 UINT_8 WfdVideoIp[4];
231 UINT_8 WfdAudioIp[4];
232 UINT_16 WfdVideoPort;
233 UINT_16 WfdAudioPort;
234 UINT_32 WfdFlag;
235 UINT_32 WfdPolicy;
236 UINT_32 WfdState;
237 UINT_8 WfdSessionInformationIE[24 * 8]; /* Include Subelement ID, length */
238 UINT_16 WfdSessionInformationIELen;
239 UINT_8 aucReserved1[2];
240 UINT_8 aucWfdPrimarySinkMac[MAC_ADDR_LEN];
241 UINT_8 aucWfdSecondarySinkMac[MAC_ADDR_LEN];
242 UINT_32 WfdAdvanceFlag;
243 UINT_8 aucWfdLocalIp[4];
244 UINT_8 aucReserved2[64];
245 UINT_8 aucReserved3[64];
246 UINT_8 aucReserved4[64];
247 } NL80211_DRIVER_WFD_PARAMS, *P_NL80211_DRIVER_WFD_PARAMS;
248 #endif
249
250
251
252 #endif
253
254
255 /*******************************************************************************
256 * P R I V A T E D A T A
257 ********************************************************************************
258 */
259
260 /*******************************************************************************
261 * M A C R O S
262 ********************************************************************************
263 */
264
265 /*******************************************************************************
266 * F U N C T I O N D E C L A R A T I O N S
267 ********************************************************************************
268 */
269
270 /*--------------------------------------------------------------*/
271 /* Routines to handle command */
272 /*--------------------------------------------------------------*/
273 WLAN_STATUS
274 wlanoidSetAddP2PKey(IN P_ADAPTER_T prAdapter,
275 IN PVOID pvSetBuffer, IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
276
277 WLAN_STATUS
278 wlanoidSetRemoveP2PKey(IN P_ADAPTER_T prAdapter,
279 IN PVOID pvSetBuffer, IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
280
281 WLAN_STATUS
282 wlanoidSetNetworkAddress(IN P_ADAPTER_T prAdapter,
283 IN PVOID pvSetBuffer,
284 IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
285
286 WLAN_STATUS
287 wlanoidSetP2PMulticastList(IN P_ADAPTER_T prAdapter,
288 IN PVOID pvSetBuffer,
289 IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
290
291 /*--------------------------------------------------------------*/
292 /* Service Discovery Subroutines */
293 /*--------------------------------------------------------------*/
294 WLAN_STATUS
295 wlanoidSendP2PSDRequest(IN P_ADAPTER_T prAdapter,
296 IN PVOID pvSetBuffer,
297 IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
298
299 WLAN_STATUS
300 wlanoidSendP2PSDResponse(IN P_ADAPTER_T prAdapter,
301 IN PVOID pvSetBuffer,
302 IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
303
304 WLAN_STATUS
305 wlanoidGetP2PSDRequest(IN P_ADAPTER_T prAdapter,
306 IN PVOID pvSetBuffer, IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
307
308 WLAN_STATUS
309 wlanoidGetP2PSDResponse(IN P_ADAPTER_T prAdapter,
310 IN PVOID pvQueryBuffer,
311 IN UINT_32 u4QueryBufferLen, OUT PUINT_32 puQueryInfoLen);
312
313 WLAN_STATUS
314 wlanoidSetP2PTerminateSDPhase(IN P_ADAPTER_T prAdapter,
315 IN PVOID pvQueryBuffer,
316 IN UINT_32 u4QueryBufferLen, OUT PUINT_32 pu4QueryInfoLen);
317
318 #if CFG_SUPPORT_ANTI_PIRACY
319 WLAN_STATUS
320 wlanoidSetSecCheckRequest(IN P_ADAPTER_T prAdapter,
321 IN PVOID pvSetBuffer,
322 IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
323
324 WLAN_STATUS
325 wlanoidGetSecCheckResponse(IN P_ADAPTER_T prAdapter,
326 IN PVOID pvQueryBuffer,
327 IN UINT_32 u4QueryBufferLen, OUT PUINT_32 pu4QueryInfoLen);
328 #endif
329
330 WLAN_STATUS
331 wlanoidSetNoaParam(IN P_ADAPTER_T prAdapter,
332 IN PVOID pvSetBuffer, IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
333
334 WLAN_STATUS
335 wlanoidSetOppPsParam(IN P_ADAPTER_T prAdapter,
336 IN PVOID pvSetBuffer, IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
337
338 WLAN_STATUS
339 wlanoidSetUApsdParam(IN P_ADAPTER_T prAdapter,
340 IN PVOID pvSetBuffer, IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
341
342 WLAN_STATUS
343 wlanoidQueryP2pPowerSaveProfile(IN P_ADAPTER_T prAdapter,
344 IN PVOID pvQueryBuffer,
345 IN UINT_32 u4QueryBufferLen, OUT PUINT_32 pu4QueryInfoLen);
346
347 WLAN_STATUS
348 wlanoidSetP2pPowerSaveProfile(IN P_ADAPTER_T prAdapter,
349 IN PVOID pvSetBuffer,
350 IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
351
352 WLAN_STATUS
353 wlanoidSetP2pSetNetworkAddress(IN P_ADAPTER_T prAdapter,
354 IN PVOID pvSetBuffer,
355 IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
356
357 WLAN_STATUS
358 wlanoidQueryP2pOpChannel(IN P_ADAPTER_T prAdapter,
359 IN PVOID pvQueryBuffer,
360 IN UINT_32 u4QueryBufferLen, OUT PUINT_32 pu4QueryInfoLen);
361
362 WLAN_STATUS
363 wlanoidQueryP2pVersion(IN P_ADAPTER_T prAdapter,
364 IN PVOID pvQueryBuffer,
365 IN UINT_32 u4QueryBufferLen, OUT PUINT_32 pu4QueryInfoLen);
366
367 WLAN_STATUS
368 wlanoidSetP2pSupplicantVersion(IN P_ADAPTER_T prAdapter,
369 IN PVOID pvSetBuffer,
370 IN UINT_32 u4SetBufferLen, OUT PUINT_32 pu4SetInfoLen);
371
372 WLAN_STATUS
373 wlanoidSetP2pWPSmode(IN P_ADAPTER_T prAdapter,
374 IN PVOID pvQueryBuffer,
375 IN UINT_32 u4QueryBufferLen, OUT PUINT_32 pu4QueryInfoLen);
376
377 #if CFG_SUPPORT_P2P_RSSI_QUERY
378 WLAN_STATUS
379 wlanoidQueryP2pRssi(IN P_ADAPTER_T prAdapter,
380 IN PVOID pvQueryBuffer,
381 IN UINT_32 u4QueryBufferLen, OUT PUINT_32 pu4QueryInfoLen);
382 #endif
383
384
385 /*--------------------------------------------------------------*/
386 /* Callbacks for event indication */
387 /*--------------------------------------------------------------*/
388
389 /*******************************************************************************
390 * F U N C T I O N S
391 ********************************************************************************
392 */
393
394 #endif
395 #endif /* _WLAN_P2P_H */