Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
staging
csr
unifiio.h
Go to the documentation of this file.
1
/*
2
* ---------------------------------------------------------------------------
3
*
4
* FILE: unifiio.h
5
*
6
* Public definitions for the UniFi linux driver.
7
* This is mostly ioctl command values and structs.
8
*
9
* Include <sys/ioctl.h> or similar before this file
10
*
11
* Copyright (C) 2005-2009 by Cambridge Silicon Radio Ltd.
12
*
13
* Refer to LICENSE.txt included with this source code for details on
14
* the license terms.
15
*
16
* ---------------------------------------------------------------------------
17
*/
18
#ifndef __UNIFIIO_H__
19
#define __UNIFIIO_H__
20
21
#include <linux/types.h>
22
23
#define UNIFI_GET_UDI_ENABLE _IOR('u', 1, int)
24
#define UNIFI_SET_UDI_ENABLE _IOW('u', 2, int)
25
/* Values for UDI_ENABLE */
26
#define UDI_ENABLE_DATA 0x1
27
#define UDI_ENABLE_CONTROL 0x2
28
29
/* MIB set/get. Arg is a pointer to a varbind */
30
#define UNIFI_GET_MIB _IOWR('u', 3, unsigned char *)
31
#define UNIFI_SET_MIB _IOW ('u', 4, unsigned char *)
32
#define MAX_VARBIND_LENGTH 127
33
34
/* Private IOCTLs */
35
#define SIOCIWS80211POWERSAVEPRIV SIOCIWFIRSTPRIV
36
#define SIOCIWG80211POWERSAVEPRIV SIOCIWFIRSTPRIV + 1
37
#define SIOCIWS80211RELOADDEFAULTSPRIV SIOCIWFIRSTPRIV + 2
38
#define SIOCIWSCONFWAPIPRIV SIOCIWFIRSTPRIV + 4
39
#define SIOCIWSWAPIKEYPRIV SIOCIWFIRSTPRIV + 6
40
#define SIOCIWSSMEDEBUGPRIV SIOCIWFIRSTPRIV + 8
41
#define SIOCIWSAPCFGPRIV SIOCIWFIRSTPRIV + 10
42
#define SIOCIWSAPSTARTPRIV SIOCIWFIRSTPRIV + 12
43
#define SIOCIWSAPSTOPPRIV SIOCIWFIRSTPRIV + 14
44
#define SIOCIWSFWRELOADPRIV SIOCIWFIRSTPRIV + 16
45
#define SIOCIWSSTACKSTART SIOCIWFIRSTPRIV + 18
46
#define SIOCIWSSTACKSTOP SIOCIWFIRSTPRIV + 20
47
48
49
50
#define IWPRIV_POWER_SAVE_MAX_STRING 32
51
#define IWPRIV_SME_DEBUG_MAX_STRING 32
52
#define IWPRIV_SME_MAX_STRING 120
53
54
55
/* Private configuration commands */
56
#define UNIFI_CFG _IOWR('u', 5, unsigned char *)
57
/*
58
* <------------------ Read/Write Buffer -------------------->
59
* _____________________________________________________________
60
* | Cmd | Arg | ... Buffer (opt) ... |
61
* -------------------------------------------------------------
62
* <-- uint --><-- uint --><----- unsigned char buffer ------>
63
*
64
* Cmd: A unifi_cfg_command_t command.
65
* Arg: Out:Length if Cmd==UNIFI_CFG_GET
66
* In:PowerOnOff if Cmd==UNIFI_CFG_POWER
67
* In:PowerMode if Cmd==UNIFI_CFG_POWERSAVE
68
* In:Length if Cmd==UNIFI_CFG_FILTER
69
* In:WMM Qos Info if Cmd==UNIFI_CFG_WMM_QOS_INFO
70
* Buffer: Out:Data if Cmd==UNIFI_CFG_GET
71
* NULL if Cmd==UNIFI_CFG_POWER
72
* NULL if Cmd==UNIFI_CFG_POWERSAVE
73
* In:Filters if Cmd==UNIFI_CFG_FILTER
74
*
75
* where Filters is a uf_cfg_bcast_packet_filter_t structure
76
* followed by 0 - n tclas_t structures. The length of the tclas_t
77
* structures is obtained by uf_cfg_bcast_packet_filter_t::tclas_ies_length.
78
*/
79
80
81
#define UNIFI_PUTEST _IOWR('u', 6, unsigned char *)
82
/*
83
* <------------------ Read/Write Buffer -------------------->
84
* _____________________________________________________________
85
* | Cmd | Arg | ... Buffer (opt) ... |
86
* -------------------------------------------------------------
87
* <-- uint --><-- uint --><----- unsigned char buffer ------>
88
*
89
* Cmd: A unifi_putest_command_t command.
90
* Arg: N/A if Cmd==UNIFI_PUTEST_START
91
* N/A if Cmd==UNIFI_PUTEST_STOP
92
* In:int (Clock Speed) if Cmd==UNIFI_PUTEST_SET_SDIO_CLOCK
93
* In/Out:sizeof(unifi_putest_cmd52) if Cmd==UNIFI_PUTEST_CMD52_READ
94
* In:sizeof(unifi_putest_cmd52) if Cmd==UNIFI_PUTEST_CMD52_WRITE
95
* In:uint (f/w file name length) if Cmd==UNIFI_PUTEST_DL_FW
96
* Buffer: NULL if Cmd==UNIFI_PUTEST_START
97
* NULL if Cmd==UNIFI_PUTEST_STOP
98
* NULL if Cmd==UNIFI_PUTEST_SET_SDIO_CLOCK
99
* In/Out:unifi_putest_cmd52 if Cmd==UNIFI_PUTEST_CMD52_READ
100
* In:unifi_putest_cmd52 if Cmd==UNIFI_PUTEST_CMD52_WRITE
101
* In:f/w file name if Cmd==UNIFI_PUTEST_DL_FW
102
*/
103
104
#define UNIFI_BUILD_TYPE _IOWR('u', 7, unsigned char)
105
#define UNIFI_BUILD_NME 1
106
#define UNIFI_BUILD_WEXT 2
107
#define UNIFI_BUILD_AP 3
108
109
/* debugging */
110
#define UNIFI_KICK _IO ('u', 0x10)
111
#define UNIFI_SET_DEBUG _IO ('u', 0x11)
112
#define UNIFI_SET_TRACE _IO ('u', 0x12)
113
114
#define UNIFI_GET_INIT_STATUS _IOR ('u', 0x15, int)
115
#define UNIFI_SET_UDI_LOG_MASK _IOR('u', 0x18, unifiio_filter_t)
116
#define UNIFI_SET_UDI_SNAP_MASK _IOW('u', 0x1a, unifiio_snap_filter_t)
117
#define UNIFI_SET_AMP_ENABLE _IOWR('u', 0x1b, int)
118
119
#define UNIFI_INIT_HW _IOR ('u', 0x13, unsigned char)
120
#define UNIFI_INIT_NETDEV _IOW ('u', 0x14, unsigned char[6])
121
#define UNIFI_SME_PRESENT _IOW ('u', 0x19, int)
122
123
#define UNIFI_CFG_PERIOD_TRAFFIC _IOW ('u', 0x21, unsigned char *)
124
#define UNIFI_CFG_UAPSD_TRAFFIC _IOW ('u', 0x22, unsigned char)
125
126
#define UNIFI_COREDUMP_GET_REG _IOWR('u', 0x23, unifiio_coredump_req_t)
127
128
129
/*
130
* Following reset, f/w may only be downloaded using CMD52.
131
* This is slow, so there is a facility to download a secondary
132
* loader first which supports CMD53.
133
* If loader_len is > 0, then loader_data is assumed to point to
134
* a suitable secondary loader that can be used to download the
135
* main image.
136
*
137
* The driver will run the host protocol initialisation sequence
138
* after downloading the image.
139
*
140
* If both lengths are zero, then the f/w is assumed to have been
141
* booted from Flash and the host protocol initialisation sequence
142
* is run.
143
*/
144
typedef
struct
{
145
146
/* Number of bytes in the image */
147
int
img_len
;
148
149
/* Pointer to image data. */
150
unsigned
char
*
img_data
;
151
152
153
/* Number of bytes in the loader image */
154
int
loader_len
;
155
156
/* Pointer to loader image data. */
157
unsigned
char
*
loader_data
;
158
159
}
unifiio_img_t
;
160
161
162
/* Structure of data read from the unifi device. */
163
typedef
struct
164
{
165
/* Length (in bytes) of entire structure including appended bulk data */
166
int
length
;
167
168
/* System time (in milliseconds) that signal was transferred */
169
int
timestamp
;
170
171
/* Direction in which signal was transferred. */
172
int
direction
;
173
#define UDI_FROM_HOST 0
174
#define UDI_TO_HOST 1
175
#define UDI_CONFIG_IND 2
176
177
/* The length of the signal (in bytes) not including bulk data */
178
int
signal_length
;
179
180
/* Signal body follows, then any bulk data */
181
182
}
udi_msg_t
;
183
184
185
typedef
enum
186
{
187
UfSigFil_AllOn
= 0,
/* Log all signal IDs */
188
UfSigFil_AllOff
= 1,
/* Don't log any signal IDs */
189
UfSigFil_SelectOn
= 2,
/* Log these signal IDs */
190
UfSigFil_SelectOff
= 3
/* Don't log these signal IDs */
191
}
uf_sigfilter_action_t
;
192
193
typedef
struct
{
194
195
/* Number of 16-bit ints in the sig_ids array */
196
int
num_sig_ids
;
197
/* The action to perform */
198
uf_sigfilter_action_t
action
;
199
/* List of signal IDs to pass or block */
200
unsigned
short
*
sig_ids
;
201
202
}
unifiio_filter_t
;
203
204
205
typedef
struct
{
206
/* Number of 16-bit ints in the protocols array */
207
u16
count
;
208
/* List of protocol ids to pass */
209
u16
*
protocols
;
210
}
unifiio_snap_filter_t
;
211
212
213
214
typedef
u8
unifi_putest_command_t
;
215
216
#define UNIFI_PUTEST_START 0
217
#define UNIFI_PUTEST_STOP 1
218
#define UNIFI_PUTEST_SET_SDIO_CLOCK 2
219
#define UNIFI_PUTEST_CMD52_READ 3
220
#define UNIFI_PUTEST_CMD52_WRITE 4
221
#define UNIFI_PUTEST_DL_FW 5
222
#define UNIFI_PUTEST_DL_FW_BUFF 6
223
#define UNIFI_PUTEST_CMD52_BLOCK_READ 7
224
#define UNIFI_PUTEST_COREDUMP_PREPARE 8
225
#define UNIFI_PUTEST_GP_READ16 9
226
#define UNIFI_PUTEST_GP_WRITE16 10
227
228
229
struct
unifi_putest_cmd52
{
230
int
funcnum
;
231
unsigned
long
addr
;
232
unsigned
char
data
;
233
};
234
235
236
struct
unifi_putest_block_cmd52_r
{
237
int
funcnum
;
238
unsigned
long
addr
;
239
unsigned
int
length
;
240
unsigned
char
*
data
;
241
};
242
243
struct
unifi_putest_gp_rw16
{
244
unsigned
long
addr
;
/* generic address */
245
unsigned
short
data
;
246
};
247
248
typedef
enum
unifi_cfg_command
{
249
UNIFI_CFG_GET
,
250
UNIFI_CFG_POWER
,
251
UNIFI_CFG_POWERSAVE
,
252
UNIFI_CFG_FILTER
,
253
UNIFI_CFG_POWERSUPPLY
,
254
UNIFI_CFG_WMM_QOSINFO
,
255
UNIFI_CFG_WMM_ADDTS
,
256
UNIFI_CFG_WMM_DELTS
,
257
UNIFI_CFG_STRICT_DRAFT_N
,
258
UNIFI_CFG_ENABLE_OKC
,
259
UNIFI_CFG_SET_AP_CONFIG
,
260
UNIFI_CFG_CORE_DUMP
/* request to take a fw core dump */
261
}
unifi_cfg_command_t
;
262
263
typedef
enum
unifi_cfg_power
{
264
UNIFI_CFG_POWER_UNSPECIFIED
,
265
UNIFI_CFG_POWER_OFF
,
266
UNIFI_CFG_POWER_ON
267
}
unifi_cfg_power_t
;
268
269
typedef
enum
unifi_cfg_powersupply
{
270
UNIFI_CFG_POWERSUPPLY_UNSPECIFIED
,
271
UNIFI_CFG_POWERSUPPLY_MAINS
,
272
UNIFI_CFG_POWERSUPPLY_BATTERIES
273
}
unifi_cfg_powersupply_t
;
274
275
typedef
enum
unifi_cfg_powersave
{
276
UNIFI_CFG_POWERSAVE_UNSPECIFIED
,
277
UNIFI_CFG_POWERSAVE_NONE
,
278
UNIFI_CFG_POWERSAVE_FAST
,
279
UNIFI_CFG_POWERSAVE_FULL
,
280
UNIFI_CFG_POWERSAVE_AUTO
281
}
unifi_cfg_powersave_t
;
282
283
typedef
enum
unifi_cfg_get
{
284
UNIFI_CFG_GET_COEX
,
285
UNIFI_CFG_GET_POWER_MODE
,
286
UNIFI_CFG_GET_VERSIONS
,
287
UNIFI_CFG_GET_POWER_SUPPLY
,
288
UNIFI_CFG_GET_INSTANCE
,
289
UNIFI_CFG_GET_AP_CONFIG
290
}
unifi_cfg_get_t
;
291
292
#define UNIFI_CFG_FILTER_NONE 0x0000
293
#define UNIFI_CFG_FILTER_DHCP 0x0001
294
#define UNIFI_CFG_FILTER_ARP 0x0002
295
#define UNIFI_CFG_FILTER_NBNS 0x0004
296
#define UNIFI_CFG_FILTER_NBDS 0x0008
297
#define UNIFI_CFG_FILTER_CUPS 0x0010
298
#define UNIFI_CFG_FILTER_ALL 0xFFFF
299
300
301
typedef
struct
uf_cfg_bcast_packet_filter
302
{
303
unsigned
long
filter_mode
;
//as defined by HIP protocol
304
unsigned
char
arp_filter
;
305
unsigned
char
dhcp_filter
;
306
unsigned
long
tclas_ies_length
;
// length of tclas_ies in bytes
307
unsigned
char
tclas_ies
[1];
// variable length depending on above field
308
}
uf_cfg_bcast_packet_filter_t
;
309
310
typedef
struct
uf_cfg_ap_config
311
{
312
u8
phySupportedBitmap
;
313
u8
channel
;
314
u16
beaconInterval
;
315
u8
dtimPeriod
;
316
u8
wmmEnabled
;
317
u8
shortSlotTimeEnabled
;
318
u16
groupkeyTimeout
;
319
u8
strictGtkRekeyEnabled
;
320
u16
gmkTimeout
;
321
u16
responseTimeout
;
322
u8
retransLimit
;
323
u8
rxStbc
;
324
u8
rifsModeAllowed
;
325
u8
dualCtsProtection
;
326
u8
ctsProtectionType
;
327
u16
maxListenInterval
;
328
}
uf_cfg_ap_config_t
;
329
330
typedef
struct
tcpic_clsfr
331
{
332
__u8
cls_fr_type
;
333
__u8
cls_fr_mask
;
334
__u8
version
;
335
__u8
source_ip_addr
[4];
336
__u8
dest_ip_addr
[4];
337
__u16
source_port
;
338
__u16
dest_port
;
339
__u8
dscp
;
340
__u8
protocol
;
341
__u8
reserved
;
342
}
__attribute__
((packed)) tcpip_clsfr_t;
343
344
typedef
struct
tclas
{
345
__u8
element_id
;
346
__u8
length
;
347
__u8
user_priority
;
348
tcpip_clsfr_t
tcp_ip_cls_fr
;
349
}
__attribute__
((packed)) tclas_t;
350
351
352
#define CONFIG_IND_ERROR 0x01
353
#define CONFIG_IND_EXIT 0x02
354
#define CONFIG_SME_NOT_PRESENT 0x10
355
#define CONFIG_SME_PRESENT 0x20
356
357
/* WAPI Key */
358
typedef
struct
359
{
360
u8
unicastKey
;
361
/* If non zero, then unicast key otherwise group key */
362
u8
keyIndex
;
363
u8
keyRsc[16];
364
u8
authenticator
;
365
/* If non zero, then authenticator otherwise supplicant */
366
u8
address
[6];
367
u8
key
[32];
368
}
unifiio_wapi_key_t
;
369
370
/* Values describing XAP memory regions captured by the mini-coredump system */
371
typedef
enum
unifiio_coredump_space
{
372
UNIFIIO_COREDUMP_MAC_REG
,
373
UNIFIIO_COREDUMP_PHY_REG
,
374
UNIFIIO_COREDUMP_SH_DMEM
,
375
UNIFIIO_COREDUMP_MAC_DMEM
,
376
UNIFIIO_COREDUMP_PHY_DMEM
,
377
UNIFIIO_COREDUMP_TRIGGER_MAGIC
= 0xFEED
378
}
unifiio_coredump_space_t
;
379
380
/* Userspace tool uses this structure to retrieve a register value from a
381
* mini-coredump buffer previously saved by the HIP
382
*/
383
typedef
struct
unifiio_coredump_req
{
384
/* From user */
385
int
index
;
/* 0=newest, -1=oldest */
386
unsigned
int
offset
;
/* register offset in space */
387
unifiio_coredump_space_t
space
;
/* memory space */
388
/* Filled by driver */
389
unsigned
int
drv_build
;
/* driver build id */
390
unsigned
int
chip_ver
;
/* chip version */
391
unsigned
int
fw_ver
;
/* firmware version */
392
int
requestor
;
/* requestor: 0=auto dump, 1=manual */
393
unsigned
int
timestamp
;
/* time of capture by driver */
394
unsigned
int
serial
;
/* capture serial number */
395
int
value
;
/* 16 bit register value, -ve for error */
396
}
unifiio_coredump_req_t
;
/* Core-dumped register value request */
397
398
#endif
/* __UNIFIIO_H__ */
Generated on Thu Jan 10 2013 14:28:02 for Linux Kernel by
1.8.2