support different wifi bt chip auto compatible
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / mt5931_kk / drv_wlan / os / linux / include / gl_wext_priv.h
1 /*
2 ** $Id: //Department/DaVinci/BRANCHES/MT662X_593X_WIFI_DRIVER_V2_3/os/linux/include/gl_wext_priv.h#1 $
3 */
4
5 /*! \file   gl_wext_priv.h
6     \brief  This file includes private ioctl support.
7 */
8
9 /*******************************************************************************
10 * Copyright (c) 2007 MediaTek Inc.
11 *
12 * All rights reserved. Copying, compilation, modification, distribution
13 * or any other use whatsoever of this material is strictly prohibited
14 * except in accordance with a Software License Agreement with
15 * MediaTek Inc.
16 ********************************************************************************
17 */
18
19 /*******************************************************************************
20 * LEGAL DISCLAIMER
21 *
22 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
23 * AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK
24 * SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
25 * PROVIDED TO BUYER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY
26 * DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
27 * LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
28 * PARTICULAR PURPOSE OR NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE
29 * ANY WARRANTY WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY
30 * WHICH MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK
31 * SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY
32 * WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE
33 * FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S SPECIFICATION OR TO
34 * CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
35 *
36 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
37 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL
38 * BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT
39 * ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY
40 * BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
41 *
42 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
43 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT
44 * OF LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING
45 * THEREOF AND RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN
46 * FRANCISCO, CA, UNDER THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE
47 * (ICC).
48 ********************************************************************************
49 */
50
51 /*
52 ** $Log: gl_wext_priv.h $
53  *
54  * 01 16 2012 wh.su
55  * [WCXRP00001170] [MT6620 Wi-Fi][Driver] Adding the related code for set/get band ioctl
56  * Adding the template code for set / get band IOCTL (with ICS supplicant_6)..
57  *
58  * 01 05 2012 wh.su
59  * [WCXRP00001153] [MT6620 Wi-Fi][Driver] Adding the get_ch_list and set_tx_power proto type function
60  * Adding the related ioctl / wlan oid function to set the Tx power cfg.
61  *
62  * 01 02 2012 wh.su
63  * [WCXRP00001153] [MT6620 Wi-Fi][Driver] Adding the get_ch_list and set_tx_power proto type function
64  * Adding the proto type function for set_int set_tx_power and get int get_ch_list.
65  *
66  * 11 08 2011 yuche.tsai
67  * [WCXRP00001094] [Volunteer Patch][Driver] Driver version & supplicant version query & set support for service discovery version check.
68  * Add a CMD ID for P2P driver version query.
69  *
70  * 03 17 2011 chinglan.wang
71  * [WCXRP00000570] [MT6620 Wi-Fi][Driver] Add Wi-Fi Protected Setup v2.0 feature
72  * .
73  *
74  * 03 02 2011 wh.su
75  * [WCXRP00000506] [MT6620 Wi-Fi][Driver][FW] Add Security check related code
76  * Add security check code.
77  *
78  * 01 27 2011 cm.chang
79  * [WCXRP00000402] [MT6620 Wi-Fi][Driver] Enable MCR read/write by iwpriv by default
80  * .
81  *
82  * 01 20 2011 eddie.chen
83  * [WCXRP00000374] [MT6620 Wi-Fi][DRV] SW debug control
84  * Add Oid for sw control debug command
85  *
86  * 01 07 2011 cm.chang
87  * [WCXRP00000336] [MT6620 Wi-Fi][Driver] Add test mode commands in normal phone operation
88  * Add a new compiling option to control if MCR read/write is permitted
89  *
90  * 12 31 2010 cm.chang
91  * [WCXRP00000336] [MT6620 Wi-Fi][Driver] Add test mode commands in normal phone operation
92  * Add some iwpriv commands to support test mode operation
93  *
94  * 11 08 2010 wh.su
95  * [WCXRP00000171] [MT6620 Wi-Fi][Driver] Add message check code same behavior as mt5921
96  * add the message check code from mt5921.
97  *
98  * 10 18 2010 cp.wu
99  * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check[WCXRP00000086] [MT6620 Wi-Fi][Driver] The mac address is all zero at android
100  * complete implementation of Android NVRAM access
101  *
102  * 09 23 2010 cp.wu
103  * [WCXRP00000056] [MT6620 Wi-Fi][Driver] NVRAM implementation with Version Check
104  * add skeleton for NVRAM integration
105  *
106  * 08 04 2010 cp.wu
107  * NULL
108  * revert changelist #15371, efuse read/write access will be done by RF test approach
109  *
110  * 08 04 2010 cp.wu
111  * NULL
112  * add OID definitions for EFUSE read/write access.
113  *
114  * 07 08 2010 cp.wu
115  *
116  * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
117  *
118  * 06 06 2010 kevin.huang
119  * [WPD00003832][MT6620 5931] Create driver base
120  * [MT6620 5931] Create driver base
121  *
122  * 03 31 2010 wh.su
123  * [WPD00003816][MT6620 Wi-Fi] Adding the security support
124  * modify the wapi related code for new driver's design.
125  *
126  * 03 24 2010 jeffrey.chang
127  * [WPD00003826]Initial import for Linux port
128  * initial import for Linux port
129 **  \main\maintrunk.MT5921\16 2009-09-29 16:47:23 GMT mtk01090
130 **  Remove unused functions
131 **  \main\maintrunk.MT5921\15 2009-09-28 20:19:31 GMT mtk01090
132 **  Add private ioctl to carry OID structures. Restructure public/private ioctl interfaces to Linux kernel.
133 **  \main\maintrunk.MT5921\14 2009-05-07 22:26:06 GMT mtk01089
134 **  add private IO control for Linux BWCS
135 **  \main\maintrunk.MT5921\13 2008-08-29 14:55:20 GMT mtk01088
136 **  adjust the code to meet coding style
137 **  \main\maintrunk.MT5921\12 2008-07-16 15:23:45 GMT mtk01104
138 **  Support GPIO2 mode
139 **  \main\maintrunk.MT5921\11 2008-07-14 13:55:58 GMT mtk01104
140 **  Support PRIV_CMD_BT_COEXIST
141 **  \main\maintrunk.MT5921\10 2008-07-09 00:20:24 GMT mtk01461
142 **  Add priv oid to support WMM_PS_TEST
143 **  \main\maintrunk.MT5921\9 2008-05-30 20:27:24 GMT mtk01461
144 **  Add POWER_MODE Private IOCTL cmd
145 **  \main\maintrunk.MT5921\8 2008-04-17 23:06:44 GMT mtk01461
146 **  Add iwpriv support for AdHocMode setting
147 **  \main\maintrunk.MT5921\7 2008-03-31 21:01:24 GMT mtk01461
148 **  Add priv IOCTL for VOIP settings
149 **  \main\maintrunk.MT5921\6 2008-03-31 13:49:47 GMT mtk01461
150 **  add priv ioctl arg definition for turning on / off roaming
151 **  \main\maintrunk.MT5921\5 2008-03-26 15:35:09 GMT mtk01461
152 **  Add CSUM offload priv ioctl for Linux
153 **  \main\maintrunk.MT5921\4 2008-03-11 14:51:11 GMT mtk01461
154 **  Refine private IOCTL functions
155 **  \main\maintrunk.MT5921\3 2007-11-06 19:36:25 GMT mtk01088
156 **  add the WPS related code
157 */
158
159 #ifndef _GL_WEXT_PRIV_H
160 #define _GL_WEXT_PRIV_H
161 /*******************************************************************************
162 *                         C O M P I L E R   F L A G S
163 ********************************************************************************
164 */
165 /* If it is set to 1, iwpriv will support register read/write */
166 #define CFG_SUPPORT_PRIV_MCR_RW         1
167
168 /*******************************************************************************
169 *                    E X T E R N A L   R E F E R E N C E S
170 ********************************************************************************
171 */
172
173 /*******************************************************************************
174 *                              C O N S T A N T S
175 ********************************************************************************
176 */
177 /* New wireless extensions API - SET/GET convention (even ioctl numbers are
178  * root only)
179  */
180 #define IOCTL_SET_INT                   (SIOCIWFIRSTPRIV + 0)
181 #define IOCTL_GET_INT                   (SIOCIWFIRSTPRIV + 1)
182
183 #define IOCTL_SET_ADDRESS               (SIOCIWFIRSTPRIV + 2)
184 #define IOCTL_GET_ADDRESS               (SIOCIWFIRSTPRIV + 3)
185 #define IOCTL_SET_STR                   (SIOCIWFIRSTPRIV + 4)
186 #define IOCTL_GET_STR                   (SIOCIWFIRSTPRIV + 5)
187 #define IOCTL_SET_KEY                   (SIOCIWFIRSTPRIV + 6)
188 #define IOCTL_GET_KEY                   (SIOCIWFIRSTPRIV + 7)
189 #define IOCTL_SET_STRUCT                (SIOCIWFIRSTPRIV + 8)
190 #define IOCTL_GET_STRUCT                (SIOCIWFIRSTPRIV + 9)
191 #define IOCTL_SET_STRUCT_FOR_EM         (SIOCIWFIRSTPRIV + 11)
192 #define IOCTL_SET_INTS                  (SIOCIWFIRSTPRIV + 12)
193 #define IOCTL_GET_INTS                  (SIOCIWFIRSTPRIV + 13)
194
195 #define PRIV_CMD_REG_DOMAIN             0
196 #define PRIV_CMD_BEACON_PERIOD          1
197 #define PRIV_CMD_ADHOC_MODE             2
198
199 #if CFG_TCP_IP_CHKSUM_OFFLOAD
200     #define PRIV_CMD_CSUM_OFFLOAD       3
201 #endif /* CFG_TCP_IP_CHKSUM_OFFLOAD */
202
203 #define PRIV_CMD_ROAMING                4
204 #define PRIV_CMD_VOIP_DELAY             5
205 #define PRIV_CMD_POWER_MODE             6
206
207 #define PRIV_CMD_WMM_PS                 7
208 #define PRIV_CMD_BT_COEXIST             8
209 #define PRIV_GPIO2_MODE                 9
210
211 #define PRIV_CUSTOM_SET_PTA                     10
212 #define PRIV_CUSTOM_CONTINUOUS_POLL     11
213 #define PRIV_CUSTOM_SINGLE_ANTENNA              12
214 #define PRIV_CUSTOM_BWCS_CMD                    13
215 #define PRIV_CUSTOM_DISABLE_BEACON_DETECTION    14//later
216 #define PRIV_CMD_OID                    15
217 #define PRIV_SEC_MSG_OID                16
218
219 #define PRIV_CMD_TEST_MODE              17
220 #define PRIV_CMD_TEST_CMD               18
221 #define PRIV_CMD_ACCESS_MCR             19
222 #define PRIV_CMD_SW_CTRL                20
223
224 #if 1 /* ANTI_PRIVCY */
225 #define PRIV_SEC_CHECK_OID              21
226 #endif
227
228 #define PRIV_CMD_WSC_PROBE_REQ          22
229
230 #define PRIV_CMD_P2P_VERSION                   23
231
232 #define PRIV_CMD_GET_CH_LIST            24
233
234 #define PRIV_CMD_SET_TX_POWER           25
235
236 #define PRIV_CMD_BAND_CONFIG            26
237
238 #define PRIV_CMD_DUMP_MEM               27
239
240 #define PRIV_CMD_P2P_MODE               28
241
242 #define PRIV_CMD_GET_BUILD_DATE_CODE    29
243
244 /* 802.3 Objects (Ethernet) */
245 #define OID_802_3_CURRENT_ADDRESS           0x01010102
246
247 /* IEEE 802.11 OIDs */
248 #define OID_802_11_SUPPORTED_RATES              0x0D01020E
249 #define OID_802_11_CONFIGURATION                0x0D010211
250
251 /* PnP and PM OIDs, NDIS default OIDS */
252 #define OID_PNP_SET_POWER                               0xFD010101
253
254 #define OID_CUSTOM_OID_INTERFACE_VERSION                0xFFA0C000
255
256 /* MT5921 specific OIDs */
257 #define OID_CUSTOM_BT_COEXIST_CTRL                      0xFFA0C580
258 #define OID_CUSTOM_POWER_MANAGEMENT_PROFILE             0xFFA0C581
259 #define OID_CUSTOM_PATTERN_CONFIG                       0xFFA0C582
260 #define OID_CUSTOM_BG_SSID_SEARCH_CONFIG                0xFFA0C583
261 #define OID_CUSTOM_VOIP_SETUP                           0xFFA0C584
262 #define OID_CUSTOM_ADD_TS                               0xFFA0C585
263 #define OID_CUSTOM_DEL_TS                               0xFFA0C586
264 #define OID_CUSTOM_SLT                               0xFFA0C587
265 #define OID_CUSTOM_ROAMING_EN                           0xFFA0C588
266 #define OID_CUSTOM_WMM_PS_TEST                          0xFFA0C589
267 #define OID_CUSTOM_COUNTRY_STRING                       0xFFA0C58A
268 #define OID_CUSTOM_MULTI_DOMAIN_CAPABILITY              0xFFA0C58B
269 #define OID_CUSTOM_GPIO2_MODE                           0xFFA0C58C
270 #define OID_CUSTOM_CONTINUOUS_POLL                      0xFFA0C58D
271 #define OID_CUSTOM_DISABLE_BEACON_DETECTION             0xFFA0C58E
272
273 /* CR1460, WPS privacy bit check disable */
274 #define OID_CUSTOM_DISABLE_PRIVACY_CHECK                0xFFA0C600
275
276 /* Precedent OIDs */
277 #define OID_CUSTOM_MCR_RW                               0xFFA0C801
278 #define OID_CUSTOM_EEPROM_RW                            0xFFA0C803
279 #define OID_CUSTOM_SW_CTRL                              0xFFA0C805
280 #define OID_CUSTOM_MEM_DUMP                             0xFFA0C807
281
282
283 /* RF Test specific OIDs */
284 #define OID_CUSTOM_TEST_MODE                            0xFFA0C901
285 #define OID_CUSTOM_TEST_RX_STATUS                       0xFFA0C903
286 #define OID_CUSTOM_TEST_TX_STATUS                       0xFFA0C905
287 #define OID_CUSTOM_ABORT_TEST_MODE                      0xFFA0C906
288 #define OID_CUSTOM_MTK_WIFI_TEST                        0xFFA0C911
289
290 /* BWCS */
291 #define OID_CUSTOM_BWCS_CMD                             0xFFA0C931
292 #define OID_CUSTOM_SINGLE_ANTENNA                       0xFFA0C932
293 #define OID_CUSTOM_SET_PTA                              0xFFA0C933
294
295 /* NVRAM */
296 #define OID_CUSTOM_MTK_NVRAM_RW                         0xFFA0C941
297 #define OID_CUSTOM_CFG_SRC_TYPE                         0xFFA0C942
298 #define OID_CUSTOM_EEPROM_TYPE                          0xFFA0C943
299
300
301 #if CFG_SUPPORT_WAPI
302 #define OID_802_11_WAPI_MODE                            0xFFA0CA00
303 #define OID_802_11_WAPI_ASSOC_INFO                      0xFFA0CA01
304 #define OID_802_11_SET_WAPI_KEY                         0xFFA0CA02
305 #endif
306
307 #if CFG_SUPPORT_WPS2
308 #define OID_802_11_WSC_ASSOC_INFO                       0xFFA0CB00
309 #endif
310
311
312 /* Define magic key of test mode (Don't change it for future compatibity) */
313 #define PRIV_CMD_TEST_MAGIC_KEY                         2011
314
315 /*******************************************************************************
316 *                             D A T A   T Y P E S
317 ********************************************************************************
318 */
319 /* NIC BBCR configuration entry structure */
320 typedef struct _PRIV_CONFIG_ENTRY {
321     UINT_8      ucOffset;
322     UINT_8      ucValue;
323 } PRIV_CONFIG_ENTRY, *PPRIV_CONFIG_ENTRY;
324
325 typedef WLAN_STATUS (*PFN_OID_HANDLER_FUNC_REQ) (
326     IN  PVOID       prAdapter,
327     IN OUT PVOID    pvBuf,
328     IN  UINT_32     u4BufLen,
329     OUT PUINT_32    pu4OutInfoLen
330     );
331
332 typedef enum _ENUM_OID_METHOD_T {
333     ENUM_OID_GLUE_ONLY,
334     ENUM_OID_GLUE_EXTENSION,
335     ENUM_OID_DRIVER_CORE
336 } ENUM_OID_METHOD_T, *P_ENUM_OID_METHOD_T;
337
338 /* OID set/query processing entry */
339 typedef struct _WLAN_REQ_ENTRY {
340     UINT_32            rOid;            /* OID */
341     PUINT_8             pucOidName;      /* OID name text */
342     BOOLEAN             fgQryBufLenChecking;
343     BOOLEAN             fgSetBufLenChecking;
344     ENUM_OID_METHOD_T   eOidMethod;
345     UINT_32             u4InfoBufLen;
346     PFN_OID_HANDLER_FUNC_REQ    pfOidQueryHandler; /*  PFN_OID_HANDLER_FUNC*/
347     PFN_OID_HANDLER_FUNC_REQ    pfOidSetHandler; /* PFN_OID_HANDLER_FUNC */
348 } WLAN_REQ_ENTRY, *P_WLAN_REQ_ENTRY;
349
350 typedef struct _NDIS_TRANSPORT_STRUCT {
351     UINT_32 ndisOidCmd;
352     UINT_32 inNdisOidlength;
353     UINT_32 outNdisOidLength;
354     UINT_8 ndisOidContent[16];
355 } NDIS_TRANSPORT_STRUCT, *P_NDIS_TRANSPORT_STRUCT;
356
357 /*******************************************************************************
358 *                            P U B L I C   D A T A
359 ********************************************************************************
360 */
361
362 /*******************************************************************************
363 *                           P R I V A T E   D A T A
364 ********************************************************************************
365 */
366
367 /*******************************************************************************
368 *                                 M A C R O S
369 ********************************************************************************
370 */
371
372 /*******************************************************************************
373 *                  F U N C T I O N   D E C L A R A T I O N S
374 ********************************************************************************
375 */
376
377 int
378 priv_set_int(
379     IN struct net_device *prNetDev,
380     IN struct iw_request_info *prIwReqInfo,
381     IN union iwreq_data *prIwReqData,
382     IN char *pcExtra
383     );
384
385 int
386 priv_get_int(
387     IN struct net_device *prNetDev,
388     IN struct iw_request_info *prIwReqInfo,
389     IN union iwreq_data *prIwReqData,
390     IN OUT char *pcExtra
391     );
392
393 int
394 priv_set_ints(
395     IN struct net_device *prNetDev,
396     IN struct iw_request_info *prIwReqInfo,
397     IN union iwreq_data *prIwReqData,
398     IN char *pcExtra
399     );
400
401 int
402 priv_get_ints(
403     IN struct net_device *prNetDev,
404     IN struct iw_request_info *prIwReqInfo,
405     IN union iwreq_data *prIwReqData,
406     IN OUT char *pcExtra
407     );
408
409 int
410 priv_set_struct(
411     IN struct net_device *prNetDev,
412     IN struct iw_request_info *prIwReqInfo,
413     IN union iwreq_data *prIwReqData,
414     IN char *pcExtra
415     );
416
417 int
418 priv_get_struct (
419     IN struct net_device *prNetDev,
420     IN struct iw_request_info *prIwReqInfo,
421     IN union iwreq_data *prIwReqData,
422     IN OUT char *pcExtra
423     );
424
425 int
426 priv_support_ioctl (
427     IN struct net_device *prDev,
428     IN OUT struct ifreq *prReq,
429     IN int i4Cmd
430     );
431
432 /*******************************************************************************
433 *                              F U N C T I O N S
434 ********************************************************************************
435 */
436
437 #endif /* _GL_WEXT_PRIV_H */
438