summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-05-03 09:40:07 (UTC)
committer mickeyl <mickeyl>2004-05-03 09:40:07 (UTC)
commitfb6f93892d4d0e0471d62f5b5ab6d9bdef0a5e76 (patch) (unidiff)
tree9ff1498eddd22a29df1639abb66b863ac5d36931
parentd65575b75d8b755e27a1b7c655ad464fc417d093 (diff)
downloadopie-fb6f93892d4d0e0471d62f5b5ab6d9bdef0a5e76.zip
opie-fb6f93892d4d0e0471d62f5b5ab6d9bdef0a5e76.tar.gz
opie-fb6f93892d4d0e0471d62f5b5ab6d9bdef0a5e76.tar.bz2
remove the OPIE_WE_VERSION crap. this was a step into the wrong direction.
remove the wireless.h user headers also. we are doomed to use the kernel ones until Jean himself provides user headers. As a nice side effect, the automatic WE_VERSION detected has been removed. It was too weak anyway, since e.g. the handhelds.org community updated kernel 2.4.19 to WE V16 about 14 months ago...
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--config.in11
-rw-r--r--libopie2/opienet/onetwork.h31
-rw-r--r--libopie2/opienet/ostation.cpp0
-rw-r--r--libopie2/opienet/wireless.15.h705
-rw-r--r--libopie2/opienet/wireless.16.h740
5 files changed, 9 insertions, 1478 deletions
diff --git a/config.in b/config.in
index 5c23904..99341e6 100644
--- a/config.in
+++ b/config.in
@@ -139,35 +139,24 @@ config USE_FILE_NOTIFICATION
139 boolean "Substitute (some) polling interfaces with OFileNotifier" 139 boolean "Substitute (some) polling interfaces with OFileNotifier"
140 default y 140 default y
141 141
142config OPIE_NEW_ALLOC 142config OPIE_NEW_ALLOC
143 boolean "Use malloc and free for the implementation" 143 boolean "Use malloc and free for the implementation"
144 default y if TARGET_RAMSES || TARGET_IPAQ || TARGET_SIMPAD || TARGET_SHARP 144 default y if TARGET_RAMSES || TARGET_IPAQ || TARGET_SIMPAD || TARGET_SHARP
145 default n if ! (TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP) 145 default n if ! (TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP)
146 146
147config OPIE_NO_SOUND_PCM_READ_BITS 147config OPIE_NO_SOUND_PCM_READ_BITS
148 boolean "There is not a pcm_read_bits io control" 148 boolean "There is not a pcm_read_bits io control"
149 default y if TARGET_SHARP 149 default y if TARGET_SHARP
150 default n if ! TARGET_SHARP 150 default n if ! TARGET_SHARP
151
152config OPIE_WE_VERSION_OVERRIDE
153 boolean "Override autodetection of wireless extension (WE) version"
154 default n
155
156config OPIE_WE_VERSION
157 depends OPIE_WE_VERSION_OVERRIDE
158 string "The wireless extension (WE) version to build against"
159 default "15" if ! TARGET_X86
160 default "16" if TARGET_X86
161
162endmenu 151endmenu
163 152
164menu "Dependencies" 153menu "Dependencies"
165 source dependencies.in 154 source dependencies.in
166endmenu 155endmenu
167 156
168menu "Base" 157menu "Base"
169 choice 158 choice
170 prompt "Qpe Library Selection" 159 prompt "Qpe Library Selection"
171 default LIBQPE 160 default LIBQPE
172 source library/config.in 161 source library/config.in
173 source x11/config.in 162 source x11/config.in
diff --git a/libopie2/opienet/onetwork.h b/libopie2/opienet/onetwork.h
index a49c8fb..057b1a0 100644
--- a/libopie2/opienet/onetwork.h
+++ b/libopie2/opienet/onetwork.h
@@ -22,59 +22,46 @@
22 -.   .:....=;==+<; You should have received a copy of the GNU 22 -.   .:....=;==+<; You should have received a copy of the GNU
23  -_. . .   )=.  = Library General Public License along with 23  -_. . .   )=.  = Library General Public License along with
24    --        :-=` this library; see the file COPYING.LIB. 24    --        :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28 28
29*/ 29*/
30 30
31#ifndef ONETWORK_H 31#ifndef ONETWORK_H
32#define ONETWORK_H 32#define ONETWORK_H
33 33
34#if !defined( OPIE_WE_VERSION )
35 #warning No wireless extension specified; autodetecting...
36 #include <linux/version.h>
37 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)
38 #define OPIE_WE_VERSION 15
39 #else
40 #define OPIE_WE_VERSION 16
41 #endif // LINUX_VERSION_CODE < KERNEL_VERSION(2.4.23)
42#endif // !defined( OPIE_WE_VERSION )
43
44#if OPIE_WE_VERSION == 15
45#include "wireless.15.h"
46#warning Using WE V15
47#endif
48#if OPIE_WE_VERSION == 16
49#include "wireless.16.h"
50#warning Using WE V16
51#endif
52
53/* OPIE */ 34/* OPIE */
54
55#include <opie2/onetutils.h> 35#include <opie2/onetutils.h>
56#include <opie2/ostation.h> 36#include <opie2/ostation.h>
57 37
58/* QT */ 38/* QT */
59
60#include <qvaluelist.h> 39#include <qvaluelist.h>
61#include <qdict.h> 40#include <qdict.h>
62#include <qmap.h> 41#include <qmap.h>
63#include <qobject.h> 42#include <qobject.h>
64#include <qhostaddress.h> 43#include <qhostaddress.h>
65 44
45/* STD */
46// hacky workaround until we have a user space wireless.h
47#include <net/if.h>
48#define _LINUX_IF_H
49#include <linux/wireless.h>
50#ifndef IW_MAX_PRIV_DEF
51#define IW_MAX_PRIV_DEF 128
52#endif
53
66namespace Opie { 54namespace Opie {
67namespace Net { 55namespace Net {
68
69class ONetworkInterface; 56class ONetworkInterface;
70class OWirelessNetworkInterface; 57class OWirelessNetworkInterface;
71class OChannelHopper; 58class OChannelHopper;
72class OMonitoringInterface; 59class OMonitoringInterface;
73 60
74/*====================================================================================== 61/*======================================================================================
75 * ONetwork 62 * ONetwork
76 *======================================================================================*/ 63 *======================================================================================*/
77 64
78/** 65/**
79 * @brief A container class for all network interfaces 66 * @brief A container class for all network interfaces
80 * 67 *
diff --git a/libopie2/opienet/ostation.cpp b/libopie2/opienet/ostation.cpp
index 140b924..ce0995b 100644
--- a/libopie2/opienet/ostation.cpp
+++ b/libopie2/opienet/ostation.cpp
diff --git a/libopie2/opienet/wireless.15.h b/libopie2/opienet/wireless.15.h
deleted file mode 100644
index 8135e97..0000000
--- a/libopie2/opienet/wireless.15.h
+++ b/dev/null
@@ -1,705 +0,0 @@
1/*
2 * This file define a set of standard wireless extensions
3 *
4 * Version : 1512.7.02
5 *
6 * Authors :Jean Tourrilhes - HPL - <jt@hpl.hp.com>
7 * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
8 */
9
10#ifndef _LINUX_WIRELESS_H
11#define _LINUX_WIRELESS_H
12
13/************************** DOCUMENTATION **************************/
14/*
15 * Initial APIs (1996 -> onward) :
16 * -----------------------------
17 * Basically, the wireless extensions are for now a set of standard ioctl
18 * call + /proc/net/wireless
19 *
20 * The entry /proc/net/wireless give statistics and information on the
21 * driver.
22 * This is better than having each driver having its entry because
23 * its centralised and we may remove the driver module safely.
24 *
25 * Ioctl are used to configure the driver and issue commands. This is
26 * better than command line options of insmod because we may want to
27 * change dynamically (while the driver is running) some parameters.
28 *
29 * The ioctl mechanimsm are copied from standard devices ioctl.
30 * We have the list of command plus a structure descibing the
31 * data exchanged...
32 * Note that to add these ioctl, I was obliged to modify :
33 *# net/core/dev.c (two place + add include)
34 *# net/ipv4/af_inet.c (one place + add include)
35 *
36 * /proc/net/wireless is a copy of /proc/net/dev.
37 * We have a structure for data passed from the driver to /proc/net/wireless
38 * Too add this, I've modified :
39 *# net/core/dev.c (two other places)
40 *# include/linux/netdevice.h (one place)
41 *# include/linux/proc_fs.h (one place)
42 *
43 * New driver API (2002 -> onward) :
44 * -------------------------------
45 * This file is only concerned with the user space API and common definitions.
46 * The new driver API is defined and documented in :
47 *# include/net/iw_handler.h
48 *
49 * Note as well that /proc/net/wireless implementation has now moved in :
50 *# include/linux/wireless.c
51 *
52 * Wireless Events (2002 -> onward) :
53 * --------------------------------
54 * Events are defined at the end of this file, and implemented in :
55 *# include/linux/wireless.c
56 *
57 * Other comments :
58 * --------------
59 * Do not add here things that are redundant with other mechanisms
60 * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
61 * wireless specific.
62 *
63 * These wireless extensions are not magic : each driver has to provide
64 * support for them...
65 *
66 * IMPORTANT NOTE : As everything in the kernel, this is very much a
67 * work in progress. Contact me if you have ideas of improvements...
68 */
69
70/***************************** INCLUDES *****************************/
71
72#include <sys/types.h>
73#include <net/if.h>
74#include <linux/types.h>
75
76#ifndef IFNAMSIZ
77#define IFNAMSIZ 16
78#endif
79#ifndef IW_MAX_PRIV_DEF
80#define IW_MAX_PRIV_DEF 128
81#endif
82
83/***************************** VERSION *****************************/
84/*
85 * This constant is used to know the availability of the wireless
86 * extensions and to know which version of wireless extensions it is
87 * (there is some stuff that will be added in the future...)
88 * I just plan to increment with each new version.
89 */
90 #define WIRELESS_EXT15
91
92/*
93 * Changes :
94 *
95 * V2 to V3
96 * --------
97 *Alan Cox start some incompatibles changes. I've integrated a bit more.
98 *- Encryption renamed to Encode to avoid US regulation problems
99 *- Frequency changed from float to struct to avoid problems on old 386
100 *
101 * V3 to V4
102 * --------
103 *- Add sensitivity
104 *
105 * V4 to V5
106 * --------
107 *- Missing encoding definitions in range
108 *- Access points stuff
109 *
110 * V5 to V6
111 * --------
112 *- 802.11 support (ESSID ioctls)
113 *
114 * V6 to V7
115 * --------
116 *- define IW_ESSID_MAX_SIZE and IW_MAX_AP
117 *
118 * V7 to V8
119 * --------
120 *- Changed my e-mail address
121 *- More 802.11 support (nickname, rate, rts, frag)
122 *- List index in frequencies
123 *
124 * V8 to V9
125 * --------
126 *- Support for 'mode of operation' (ad-hoc, managed...)
127 *- Support for unicast and multicast power saving
128 *- Change encoding to support larger tokens (>64 bits)
129 *- Updated iw_params (disable, flags) and use it for NWID
130 *- Extracted iw_point from iwreq for clarity
131 *
132 * V9 to V10
133 * ---------
134 *- Add PM capability to range structure
135 *- Add PM modifier : MAX/MIN/RELATIVE
136 *- Add encoding option : IW_ENCODE_NOKEY
137 *- Add TxPower ioctls (work like TxRate)
138 *
139 * V10 to V11
140 * ----------
141 *- Add WE version in range (help backward/forward compatibility)
142 *- Add retry ioctls (work like PM)
143 *
144 * V11 to V12
145 * ----------
146 *- Add SIOCSIWSTATS to get /proc/net/wireless programatically
147 *- Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space
148 *- Add new statistics (frag, retry, beacon)
149 *- Add average quality (for user space calibration)
150 *
151 * V12 to V13
152 * ----------
153 *- Document creation of new driver API.
154 *- Extract union iwreq_data from struct iwreq (for new driver API).
155 *- Rename SIOCSIWNAME as SIOCSIWCOMMIT
156 *
157 * V13 to V14
158 * ----------
159 *- Wireless Events support : define struct iw_event
160 *- Define additional specific event numbers
161 *- Add "addr" and "param" fields in union iwreq_data
162 *- AP scanning stuff (SIOCSIWSCAN and friends)
163 *
164 * V14 to V15
165 * ----------
166 *- Add IW_PRIV_TYPE_ADDR for struct sockaddr private arg
167 *- Make struct iw_freq signed (both m & e), add explicit padding
168 *- Add IWEVCUSTOM for driver specific event/scanning token
169 *- Add IW_MAX_GET_SPY for driver returning a lot of addresses
170 *- Add IW_TXPOW_RANGE for range of Tx Powers
171 *- Add IWEVREGISTERED & IWEVEXPIRED events for Access Points
172 *- Add IW_MODE_MONITOR for passive monitor
173 */
174
175/**************************** CONSTANTS ****************************/
176
177/* -------------------------- IOCTL LIST -------------------------- */
178
179/* Wireless Identification */
180 #define SIOCSIWCOMMIT 0x8B00 /* Commit pending changes to driver */
181 #define SIOCGIWNAME 0x8B01 /* get name == wireless protocol */
182/* SIOCGIWNAME is used to verify the presence of Wireless Extensions.
183 * Common values : "IEEE 802.11-DS", "IEEE 802.11-FH", "IEEE 802.11b"...
184 * Don't put the name of your driver there, it's useless. */
185
186/* Basic operations */
187 #define SIOCSIWNWID 0x8B02 /* set network id (pre-802.11) */
188 #define SIOCGIWNWID 0x8B03 /* get network id (the cell) */
189 #define SIOCSIWFREQ 0x8B04 /* set channel/frequency (Hz) */
190 #define SIOCGIWFREQ 0x8B05 /* get channel/frequency (Hz) */
191 #define SIOCSIWMODE 0x8B06 /* set operation mode */
192 #define SIOCGIWMODE 0x8B07 /* get operation mode */
193 #define SIOCSIWSENS 0x8B08 /* set sensitivity (dBm) */
194 #define SIOCGIWSENS 0x8B09 /* get sensitivity (dBm) */
195
196/* Informative stuff */
197 #define SIOCSIWRANGE 0x8B0A /* Unused */
198 #define SIOCGIWRANGE 0x8B0B /* Get range of parameters */
199 #define SIOCSIWPRIV 0x8B0C /* Unused */
200 #define SIOCGIWPRIV 0x8B0D /* get private ioctl interface info */
201 #define SIOCSIWSTATS 0x8B0E /* Unused */
202 #define SIOCGIWSTATS 0x8B0F /* Get /proc/net/wireless stats */
203/* SIOCGIWSTATS is strictly used between user space and the kernel, and
204 * is never passed to the driver (i.e. the driver will never see it). */
205
206/* Mobile IP support (statistics per MAC address) */
207 #define SIOCSIWSPY 0x8B10 /* set spy addresses */
208 #define SIOCGIWSPY 0x8B11 /* get spy info (quality of link) */
209
210/* Access Point manipulation */
211 #define SIOCSIWAP 0x8B14 /* set access point MAC addresses */
212 #define SIOCGIWAP 0x8B15 /* get access point MAC addresses */
213 #define SIOCGIWAPLIST 0x8B17 /* Deprecated in favor of scanning */
214 #define SIOCSIWSCAN 0x8B18 /* trigger scanning (list cells) */
215 #define SIOCGIWSCAN 0x8B19 /* get scanning results */
216
217/* 802.11 specific support */
218 #define SIOCSIWESSID 0x8B1A /* set ESSID (network name) */
219 #define SIOCGIWESSID 0x8B1B /* get ESSID */
220 #define SIOCSIWNICKN 0x8B1C /* set node name/nickname */
221 #define SIOCGIWNICKN 0x8B1D /* get node name/nickname */
222/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
223 * within the 'iwreq' structure, so we need to use the 'data' member to
224 * point to a string in user space, like it is done for RANGE... */
225
226/* Other parameters useful in 802.11 and some other devices */
227 #define SIOCSIWRATE 0x8B20 /* set default bit rate (bps) */
228 #define SIOCGIWRATE 0x8B21 /* get default bit rate (bps) */
229 #define SIOCSIWRTS 0x8B22 /* set RTS/CTS threshold (bytes) */
230 #define SIOCGIWRTS 0x8B23 /* get RTS/CTS threshold (bytes) */
231 #define SIOCSIWFRAG 0x8B24 /* set fragmentation thr (bytes) */
232 #define SIOCGIWFRAG 0x8B25 /* get fragmentation thr (bytes) */
233 #define SIOCSIWTXPOW 0x8B26 /* set transmit power (dBm) */
234 #define SIOCGIWTXPOW 0x8B27 /* get transmit power (dBm) */
235 #define SIOCSIWRETRY 0x8B28 /* set retry limits and lifetime */
236 #define SIOCGIWRETRY 0x8B29 /* get retry limits and lifetime */
237
238/* Encoding stuff (scrambling, hardware security, WEP...) */
239 #define SIOCSIWENCODE 0x8B2A /* set encoding token & mode */
240 #define SIOCGIWENCODE 0x8B2B /* get encoding token & mode */
241/* Power saving stuff (power management, unicast and multicast) */
242 #define SIOCSIWPOWER 0x8B2C /* set Power Management settings */
243 #define SIOCGIWPOWER 0x8B2D /* get Power Management settings */
244
245/* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
246
247/* These 16 ioctl are wireless device private.
248 * Each driver is free to use them for whatever purpose it chooses,
249 * however the driver *must* export the description of those ioctls
250 * with SIOCGIWPRIV and *must* use arguments as defined below.
251 * If you don't follow those rules, DaveM is going to hate you (reason :
252 * it make mixed 32/64bit operation impossible).
253 */
254 #define SIOCIWFIRSTPRIV0x8BE0
255 #define SIOCIWLASTPRIV0x8BFF
256/* Previously, we were using SIOCDEVPRIVATE, but we now have our
257 * separate range because of collisions with other tools such as
258 * 'mii-tool'.
259 * We now have 32 commands, so a bit more space ;-).
260 * Also, all 'odd' commands are only usable by root and don't return the
261 * content of ifr/iwr to user (but you are not obliged to use the set/get
262 * convention, just use every other two command).
263 * And I repeat : you are not obliged to use them with iwspy, but you
264 * must be compliant with it.
265 */
266
267/* ------------------------- IOCTL STUFF ------------------------- */
268
269/* The first and the last (range) */
270 #define SIOCIWFIRST0x8B00
271 #define SIOCIWLAST SIOCIWLASTPRIV /* 0x8BFF */
272
273/* Even : get (world access), odd : set (root access) */
274 #define IW_IS_SET(cmd)(!((cmd) & 0x1))
275 #define IW_IS_GET(cmd)((cmd) & 0x1)
276
277/* ----------------------- WIRELESS EVENTS ----------------------- */
278/* Those are *NOT* ioctls, do not issue request on them !!! */
279/* Most events use the same identifier as ioctl requests */
280
281 #define IWEVTXDROP 0x8C00 /* Packet dropped to excessive retry */
282 #define IWEVQUAL 0x8C01 /* Quality part of statistics (scan) */
283 #define IWEVCUSTOM 0x8C02 /* Driver specific ascii string */
284 #define IWEVREGISTERED 0x8C03 /* Discovered a new node (AP mode) */
285 #define IWEVEXPIRED 0x8C04 /* Expired a node (AP mode) */
286
287 #define IWEVFIRST0x8C00
288
289/* ------------------------- PRIVATE INFO ------------------------- */
290/*
291 * The following is used with SIOCGIWPRIV. It allow a driver to define
292 * the interface (name, type of data) for its private ioctl.
293 * Privates ioctl are SIOCIWFIRSTPRIV -> SIOCIWLASTPRIV
294 */
295
296 #define IW_PRIV_TYPE_MASK 0x7000/* Type of arguments */
297 #define IW_PRIV_TYPE_NONE0x0000
298 #define IW_PRIV_TYPE_BYTE 0x1000/* Char as number */
299 #define IW_PRIV_TYPE_CHAR 0x2000/* Char as character */
300 #define IW_PRIV_TYPE_INT 0x4000/* 32 bits int */
301 #define IW_PRIV_TYPE_FLOAT 0x5000/* struct iw_freq */
302 #define IW_PRIV_TYPE_ADDR 0x6000/* struct sockaddr */
303
304 #define IW_PRIV_SIZE_FIXED 0x0800/* Variable or fixed nuber of args */
305
306 #define IW_PRIV_SIZE_MASK 0x07FF/* Max number of those args */
307
308/*
309 * Note : if the number of args is fixed and the size < 16 octets,
310 * instead of passing a pointer we will put args in the iwreq struct...
311 */
312
313/* ----------------------- OTHER CONSTANTS ----------------------- */
314
315/* Maximum frequencies in the range struct */
316 #define IW_MAX_FREQUENCIES16
317/* Note : if you have something like 80 frequencies,
318 * don't increase this constant and don't fill the frequency list.
319 * The user will be able to set by channel anyway... */
320
321/* Maximum bit rates in the range struct */
322 #define IW_MAX_BITRATES 8
323
324/* Maximum tx powers in the range struct */
325 #define IW_MAX_TXPOWER 8
326/* Note : if you more than 8 TXPowers, just set the max and min or
327 * a few of them in the struct iw_range. */
328
329/* Maximum of address that you may set with SPY */
330 #define IW_MAX_SPY 8/* set */
331 #define IW_MAX_GET_SPY 64/* get */
332
333/* Maximum of address that you may get in the
334 list of access points in range */
335 #define IW_MAX_AP 64
336
337/* Maximum size of the ESSID and NICKN strings */
338 #define IW_ESSID_MAX_SIZE32
339
340/* Modes of operation */
341 #define IW_MODE_AUTO 0/* Let the driver decides */
342 #define IW_MODE_ADHOC 1/* Single cell network */
343 #define IW_MODE_INFRA 2/* Multi cell network, roaming, ... */
344 #define IW_MODE_MASTER 3/* Synchronisation master or Access Point */
345 #define IW_MODE_REPEAT 4/* Wireless Repeater (forwarder) */
346 #define IW_MODE_SECOND 5/* Secondary master/repeater (backup) */
347 #define IW_MODE_MONITOR 6/* Passive monitor (listen only) */
348
349/* Maximum number of size of encoding token available
350 * they are listed in the range structure */
351 #define IW_MAX_ENCODING_SIZES8
352
353/* Maximum size of the encoding token in bytes */
354 #define IW_ENCODING_TOKEN_MAX 32/* 256 bits (for now) */
355
356/* Flags for encoding (along with the token) */
357 #define IW_ENCODE_INDEX 0x00FF/* Token index (if needed) */
358 #define IW_ENCODE_FLAGS 0xFF00/* Flags defined below */
359 #define IW_ENCODE_MODE 0xF000/* Modes defined below */
360 #define IW_ENCODE_DISABLED 0x8000/* Encoding disabled */
361 #define IW_ENCODE_ENABLED 0x0000/* Encoding enabled */
362 #define IW_ENCODE_RESTRICTED 0x4000/* Refuse non-encoded packets */
363 #define IW_ENCODE_OPEN 0x2000/* Accept non-encoded packets */
364#define IW_ENCODE_NOKEY 0x0800 /* Key is write only, so not present */
365
366/* Power management flags available (along with the value, if any) */
367 #define IW_POWER_ON 0x0000/* No details... */
368 #define IW_POWER_TYPE 0xF000/* Type of parameter */
369 #define IW_POWER_PERIOD 0x1000/* Value is a period/duration of */
370 #define IW_POWER_TIMEOUT 0x2000/* Value is a timeout (to go asleep) */
371 #define IW_POWER_MODE 0x0F00/* Power Management mode */
372 #define IW_POWER_UNICAST_R 0x0100/* Receive only unicast messages */
373 #define IW_POWER_MULTICAST_R 0x0200/* Receive only multicast messages */
374 #define IW_POWER_ALL_R 0x0300/* Receive all messages though PM */
375 #define IW_POWER_FORCE_S 0x0400/* Force PM procedure for sending unicast */
376 #define IW_POWER_REPEATER 0x0800/* Repeat broadcast messages in PM period */
377 #define IW_POWER_MODIFIER 0x000F/* Modify a parameter */
378 #define IW_POWER_MIN 0x0001/* Value is a minimum */
379 #define IW_POWER_MAX 0x0002/* Value is a maximum */
380 #define IW_POWER_RELATIVE 0x0004/* Value is not in seconds/ms/us */
381
382/* Transmit Power flags available */
383 #define IW_TXPOW_TYPE 0x00FF/* Type of value */
384 #define IW_TXPOW_DBM 0x0000/* Value is in dBm */
385 #define IW_TXPOW_MWATT 0x0001/* Value is in mW */
386 #define IW_TXPOW_RANGE 0x1000/* Range of value between min/max */
387
388/* Retry limits and lifetime flags available */
389 #define IW_RETRY_ON 0x0000/* No details... */
390 #define IW_RETRY_TYPE 0xF000/* Type of parameter */
391 #define IW_RETRY_LIMIT 0x1000/* Maximum number of retries*/
392 #define IW_RETRY_LIFETIME 0x2000/* Maximum duration of retries in us */
393 #define IW_RETRY_MODIFIER 0x000F/* Modify a parameter */
394 #define IW_RETRY_MIN 0x0001/* Value is a minimum */
395 #define IW_RETRY_MAX 0x0002/* Value is a maximum */
396 #define IW_RETRY_RELATIVE 0x0004/* Value is not in seconds/ms/us */
397
398/* Scanning request flags */
399 #define IW_SCAN_DEFAULT 0x0000/* Default scan of the driver */
400 #define IW_SCAN_ALL_ESSID 0x0001/* Scan all ESSIDs */
401 #define IW_SCAN_THIS_ESSID 0x0002/* Scan only this ESSID */
402 #define IW_SCAN_ALL_FREQ 0x0004/* Scan all Frequencies */
403 #define IW_SCAN_THIS_FREQ 0x0008/* Scan only this Frequency */
404 #define IW_SCAN_ALL_MODE 0x0010/* Scan all Modes */
405 #define IW_SCAN_THIS_MODE 0x0020/* Scan only this Mode */
406 #define IW_SCAN_ALL_RATE 0x0040/* Scan all Bit-Rates */
407 #define IW_SCAN_THIS_RATE 0x0080/* Scan only this Bit-Rate */
408/* Maximum size of returned data */
409 #define IW_SCAN_MAX_DATA 4096/* In bytes */
410
411/* Max number of char in custom event - use multiple of them if needed */
412 #define IW_CUSTOM_MAX 256/* In bytes */
413
414/****************************** TYPES ******************************/
415
416/* --------------------------- SUBTYPES --------------------------- */
417/*
418 *Generic format for most parameters that fit in an int
419 */
420 structiw_param
421{
422 __s32 value; /* The value of the parameter itself */
423 __u8 fixed; /* Hardware should not use auto select */
424 __u8 disabled;/* Disable the feature */
425 __u16 flags; /* Various specifc flags (if any) */
426};
427
428/*
429 *For all data larger than 16 octets, we need to use a
430 *pointer to memory allocated in user space.
431 */
432 structiw_point
433{
434 caddr_t pointer;/* Pointer to the data (in user space) */
435 __u16 length; /* number of fields or size in bytes */
436 __u16 flags; /* Optional params */
437};
438
439/*
440 *A frequency
441 *For numbers lower than 10^9, we encode the number in 'm' and
442 *set 'e' to 0
443 *For number greater than 10^9, we divide it by the lowest power
444 *of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
445 *The power of 10 is in 'e', the result of the division is in 'm'.
446 */
447 structiw_freq
448{
449 __s32 m; /* Mantissa */
450 __s16 e; /* Exponent */
451 __u8 i; /* List index (when in range struct) */
452 __u8 pad; /* Unused - just for alignement */
453};
454
455/*
456 *Quality of the link
457 */
458 structiw_quality
459{
460 __u8 qual; /* link quality (%retries, SNR,
461 %missed beacons or better...) */
462 __u8 level; /* signal level (dBm) */
463 __u8 noise; /* noise level (dBm) */
464 __u8 updated;/* Flags to know if updated */
465};
466
467/*
468 *Packet discarded in the wireless adapter due to
469 *"wireless" specific problems...
470 *Note : the list of counter and statistics in net_device_stats
471 *is already pretty exhaustive, and you should use that first.
472 *This is only additional stats...
473 */
474 structiw_discarded
475{
476 __u32 nwid; /* Rx : Wrong nwid/essid */
477 __u32 code; /* Rx : Unable to code/decode (WEP) */
478 __u32 fragment;/* Rx : Can't perform MAC reassembly */
479 __u32 retries;/* Tx : Max MAC retries num reached */
480 __u32 misc; /* Others cases */
481};
482
483/*
484 *Packet/Time period missed in the wireless adapter due to
485 *"wireless" specific problems...
486 */
487 structiw_missed
488{
489 __u32 beacon; /* Missed beacons/superframe */
490};
491
492/* ------------------------ WIRELESS STATS ------------------------ */
493/*
494 * Wireless statistics (used for /proc/net/wireless)
495 */
496 structiw_statistics
497{
498 __u16 status; /* Status
499 * - device dependent for now */
500
501 struct iw_quality qual; /* Quality of the link
502 * (instant/mean/max) */
503 struct iw_discarded discard;/* Packet discarded counts */
504 struct iw_missed miss; /* Packet missed counts */
505};
506
507/* ------------------------ IOCTL REQUEST ------------------------ */
508/*
509 * This structure defines the payload of an ioctl, and is used
510 * below.
511 *
512 * Note that this structure should fit on the memory footprint
513 * of iwreq (which is the same as ifreq), which mean a max size of
514 * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
515 * You should check this when increasing the structures defined
516 * above in this file...
517 */
518 unioniwreq_data
519{
520 /* Config - generic */
521 char name[IFNAMSIZ];
522 /* Name : used to verify the presence of wireless extensions.
523 * Name of the protocol/provider... */
524
525 struct iw_point essid; /* Extended network name */
526 struct iw_param nwid; /* network id (or domain - the cell) */
527 struct iw_freq freq; /* frequency or channel :
528 * 0-1000 = channel
529 * > 1000 = frequency in Hz */
530
531 struct iw_param sens; /* signal level threshold */
532 struct iw_param bitrate;/* default bit rate */
533 struct iw_param txpower;/* default transmit power */
534 struct iw_param rts; /* RTS threshold threshold */
535 struct iw_param frag; /* Fragmentation threshold */
536 __u32 mode; /* Operation mode */
537 struct iw_param retry; /* Retry limits & lifetime */
538
539 struct iw_point encoding;/* Encoding stuff : tokens */
540 struct iw_param power; /* PM duration/timeout */
541 struct iw_quality qual; /* Quality part of statistics */
542
543 struct sockaddr ap_addr;/* Access point address */
544 struct sockaddr addr; /* Destination address (hw) */
545
546 struct iw_param param; /* Other small parameters */
547 struct iw_point data; /* Other large parameters */
548};
549
550/*
551 * The structure to exchange data for ioctl.
552 * This structure is the same as 'struct ifreq', but (re)defined for
553 * convenience...
554 * Do I need to remind you about structure size (32 octets) ?
555 */
556 structiwreq
557{
558 union
559 {
560 char ifrn_name[IFNAMSIZ];/* if name, e.g. "eth0" */
561 } ifr_ifrn;
562
563 /* Data part (defined just above) */
564 union iwreq_datau;
565};
566
567/* -------------------------- IOCTL DATA -------------------------- */
568/*
569 *For those ioctl which want to exchange mode data that what could
570 *fit in the above structure...
571 */
572
573/*
574 *Range of parameters
575 */
576
577 structiw_range
578{
579 /* Informative stuff (to choose between different interface) */
580 __u32 throughput;/* To give an idea... */
581 /* In theory this value should be the maximum benchmarked
582 * TCP/IP throughput, because with most of these devices the
583 * bit rate is meaningless (overhead an co) to estimate how
584 * fast the connection will go and pick the fastest one.
585 * I suggest people to play with Netperf or any benchmark...
586 */
587
588 /* NWID (or domain id) */
589 __u32 min_nwid;/* Minimal NWID we are able to set */
590 __u32 max_nwid;/* Maximal NWID we are able to set */
591
592 /* Frequency */
593 __u16 num_channels;/* Number of channels [0; num - 1] */
594 __u8 num_frequency;/* Number of entry in the list */
595 struct iw_freq freq[IW_MAX_FREQUENCIES];/* list */
596 /* Note : this frequency list doesn't need to fit channel numbers */
597
598 /* signal level threshold range */
599 __s32sensitivity;
600
601 /* Quality of link & SNR stuff */
602 struct iw_quality max_qual;/* Quality of the link */
603
604 /* Rates */
605 __u8 num_bitrates;/* Number of entries in the list */
606 __s32 bitrate[IW_MAX_BITRATES];/* list, in bps */
607
608 /* RTS threshold */
609 __s32 min_rts;/* Minimal RTS threshold */
610 __s32 max_rts;/* Maximal RTS threshold */
611
612 /* Frag threshold */
613 __s32 min_frag;/* Minimal frag threshold */
614 __s32 max_frag;/* Maximal frag threshold */
615
616 /* Power Management duration & timeout */
617 __s32 min_pmp;/* Minimal PM period */
618 __s32 max_pmp;/* Maximal PM period */
619 __s32 min_pmt;/* Minimal PM timeout */
620 __s32 max_pmt;/* Maximal PM timeout */
621 __u16 pmp_flags;/* How to decode max/min PM period */
622 __u16 pmt_flags;/* How to decode max/min PM timeout */
623 __u16 pm_capa;/* What PM options are supported */
624
625 /* Encoder stuff */
626 __u16 encoding_size[IW_MAX_ENCODING_SIZES];/* Different token sizes */
627 __u8 num_encoding_sizes;/* Number of entry in the list */
628 __u8 max_encoding_tokens;/* Max number of tokens */
629
630 /* Transmit power */
631 __u16 txpower_capa;/* What options are supported */
632 __u8 num_txpower;/* Number of entries in the list */
633 __s32 txpower[IW_MAX_TXPOWER];/* list, in bps */
634
635 /* Wireless Extension version info */
636 __u8 we_version_compiled;/* Must be WIRELESS_EXT */
637 __u8 we_version_source;/* Last update of source */
638
639 /* Retry limits and lifetime */
640 __u16 retry_capa;/* What retry options are supported */
641 __u16 retry_flags;/* How to decode max/min retry limit */
642 __u16 r_time_flags;/* How to decode max/min retry life */
643 __s32 min_retry;/* Minimal number of retries */
644 __s32 max_retry;/* Maximal number of retries */
645 __s32 min_r_time;/* Minimal retry lifetime */
646 __s32 max_r_time;/* Maximal retry lifetime */
647
648 /* Average quality of link & SNR */
649 struct iw_quality avg_qual;/* Quality of the link */
650 /* This should contain the average/typical values of the quality
651 * indicator. This should be the threshold between a "good" and
652 * a "bad" link (example : monitor going from green to orange).
653 * Currently, user space apps like quality monitors don't have any
654 * way to calibrate the measurement. With this, they can split
655 * the range between 0 and max_qual in different quality level
656 * (using a geometric subdivision centered on the average).
657 * I expect that people doing the user space apps will feedback
658 * us on which value we need to put in each driver...
659 */
660};
661
662/*
663 * Private ioctl interface information
664 */
665
666 structiw_priv_args
667{
668 __u32 cmd; /* Number of the ioctl to issue */
669 __u16 set_args;/* Type and number of args */
670 __u16 get_args;/* Type and number of args */
671 char name[IFNAMSIZ];/* Name of the extension */
672};
673
674/* ----------------------- WIRELESS EVENTS ----------------------- */
675/*
676 * Wireless events are carried through the rtnetlink socket to user
677 * space. They are encapsulated in the IFLA_WIRELESS field of
678 * a RTM_NEWLINK message.
679 */
680
681/*
682 * A Wireless Event. Contains basically the same data as the ioctl...
683 */
684struct iw_event
685{
686 __u16 len; /* Real lenght of this stuff */
687 __u16 cmd; /* Wireless IOCTL */
688 union iwreq_data u; /* IOCTL fixed payload */
689};
690
691/* Size of the Event prefix (including padding and alignement junk) */
692 #define IW_EV_LCP_LEN(sizeof(struct iw_event) - sizeof(union iwreq_data))
693/* Size of the various events */
694 #define IW_EV_CHAR_LEN(IW_EV_LCP_LEN + IFNAMSIZ)
695 #define IW_EV_UINT_LEN(IW_EV_LCP_LEN + sizeof(__u32))
696 #define IW_EV_FREQ_LEN(IW_EV_LCP_LEN + sizeof(struct iw_freq))
697 #define IW_EV_POINT_LEN(IW_EV_LCP_LEN + sizeof(struct iw_point))
698 #define IW_EV_PARAM_LEN(IW_EV_LCP_LEN + sizeof(struct iw_param))
699 #define IW_EV_ADDR_LEN(IW_EV_LCP_LEN + sizeof(struct sockaddr))
700 #define IW_EV_QUAL_LEN(IW_EV_LCP_LEN + sizeof(struct iw_quality))
701
702/* Note : in the case of iw_point, the extra data will come at the
703 * end of the event */
704
705 #endif/* _LINUX_WIRELESS_H */
diff --git a/libopie2/opienet/wireless.16.h b/libopie2/opienet/wireless.16.h
deleted file mode 100644
index 9a9accd..0000000
--- a/libopie2/opienet/wireless.16.h
+++ b/dev/null
@@ -1,740 +0,0 @@
1/*
2 * This file define a set of standard wireless extensions
3 *
4 * Version : 162.4.03
5 *
6 * Authors :Jean Tourrilhes - HPL - <jt@hpl.hp.com>
7 * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
8 */
9
10#ifndef _LINUX_WIRELESS_H
11#define _LINUX_WIRELESS_H
12
13/************************** DOCUMENTATION **************************/
14/*
15 * Initial APIs (1996 -> onward) :
16 * -----------------------------
17 * Basically, the wireless extensions are for now a set of standard ioctl
18 * call + /proc/net/wireless
19 *
20 * The entry /proc/net/wireless give statistics and information on the
21 * driver.
22 * This is better than having each driver having its entry because
23 * its centralised and we may remove the driver module safely.
24 *
25 * Ioctl are used to configure the driver and issue commands. This is
26 * better than command line options of insmod because we may want to
27 * change dynamically (while the driver is running) some parameters.
28 *
29 * The ioctl mechanimsm are copied from standard devices ioctl.
30 * We have the list of command plus a structure descibing the
31 * data exchanged...
32 * Note that to add these ioctl, I was obliged to modify :
33 *# net/core/dev.c (two place + add include)
34 *# net/ipv4/af_inet.c (one place + add include)
35 *
36 * /proc/net/wireless is a copy of /proc/net/dev.
37 * We have a structure for data passed from the driver to /proc/net/wireless
38 * Too add this, I've modified :
39 *# net/core/dev.c (two other places)
40 *# include/linux/netdevice.h (one place)
41 *# include/linux/proc_fs.h (one place)
42 *
43 * New driver API (2002 -> onward) :
44 * -------------------------------
45 * This file is only concerned with the user space API and common definitions.
46 * The new driver API is defined and documented in :
47 *# include/net/iw_handler.h
48 *
49 * Note as well that /proc/net/wireless implementation has now moved in :
50 *# include/linux/wireless.c
51 *
52 * Wireless Events (2002 -> onward) :
53 * --------------------------------
54 * Events are defined at the end of this file, and implemented in :
55 *# include/linux/wireless.c
56 *
57 * Other comments :
58 * --------------
59 * Do not add here things that are redundant with other mechanisms
60 * (drivers init, ifconfig, /proc/net/dev, ...) and with are not
61 * wireless specific.
62 *
63 * These wireless extensions are not magic : each driver has to provide
64 * support for them...
65 *
66 * IMPORTANT NOTE : As everything in the kernel, this is very much a
67 * work in progress. Contact me if you have ideas of improvements...
68 */
69
70/***************************** INCLUDES *****************************/
71
72/* To minimise problems in user space, I might remove those headers
73 * at some point. Jean II */
74#include <sys/types.h>
75#include <net/if.h>
76#include <linux/types.h>
77
78#ifndef IFNAMSIZ
79#define IFNAMSIZ 16
80#endif
81#ifndef IW_MAX_PRIV_DEF
82#define IW_MAX_PRIV_DEF 128
83#endif
84
85/***************************** VERSION *****************************/
86/*
87 * This constant is used to know the availability of the wireless
88 * extensions and to know which version of wireless extensions it is
89 * (there is some stuff that will be added in the future...)
90 * I just plan to increment with each new version.
91 */
92 #define WIRELESS_EXT16
93
94/*
95 * Changes :
96 *
97 * V2 to V3
98 * --------
99 *Alan Cox start some incompatibles changes. I've integrated a bit more.
100 *- Encryption renamed to Encode to avoid US regulation problems
101 *- Frequency changed from float to struct to avoid problems on old 386
102 *
103 * V3 to V4
104 * --------
105 *- Add sensitivity
106 *
107 * V4 to V5
108 * --------
109 *- Missing encoding definitions in range
110 *- Access points stuff
111 *
112 * V5 to V6
113 * --------
114 *- 802.11 support (ESSID ioctls)
115 *
116 * V6 to V7
117 * --------
118 *- define IW_ESSID_MAX_SIZE and IW_MAX_AP
119 *
120 * V7 to V8
121 * --------
122 *- Changed my e-mail address
123 *- More 802.11 support (nickname, rate, rts, frag)
124 *- List index in frequencies
125 *
126 * V8 to V9
127 * --------
128 *- Support for 'mode of operation' (ad-hoc, managed...)
129 *- Support for unicast and multicast power saving
130 *- Change encoding to support larger tokens (>64 bits)
131 *- Updated iw_params (disable, flags) and use it for NWID
132 *- Extracted iw_point from iwreq for clarity
133 *
134 * V9 to V10
135 * ---------
136 *- Add PM capability to range structure
137 *- Add PM modifier : MAX/MIN/RELATIVE
138 *- Add encoding option : IW_ENCODE_NOKEY
139 *- Add TxPower ioctls (work like TxRate)
140 *
141 * V10 to V11
142 * ----------
143 *- Add WE version in range (help backward/forward compatibility)
144 *- Add retry ioctls (work like PM)
145 *
146 * V11 to V12
147 * ----------
148 *- Add SIOCSIWSTATS to get /proc/net/wireless programatically
149 *- Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space
150 *- Add new statistics (frag, retry, beacon)
151 *- Add average quality (for user space calibration)
152 *
153 * V12 to V13
154 * ----------
155 *- Document creation of new driver API.
156 *- Extract union iwreq_data from struct iwreq (for new driver API).
157 *- Rename SIOCSIWNAME as SIOCSIWCOMMIT
158 *
159 * V13 to V14
160 * ----------
161 *- Wireless Events support : define struct iw_event
162 *- Define additional specific event numbers
163 *- Add "addr" and "param" fields in union iwreq_data
164 *- AP scanning stuff (SIOCSIWSCAN and friends)
165 *
166 * V14 to V15
167 * ----------
168 *- Add IW_PRIV_TYPE_ADDR for struct sockaddr private arg
169 *- Make struct iw_freq signed (both m & e), add explicit padding
170 *- Add IWEVCUSTOM for driver specific event/scanning token
171 *- Add IW_MAX_GET_SPY for driver returning a lot of addresses
172 *- Add IW_TXPOW_RANGE for range of Tx Powers
173 *- Add IWEVREGISTERED & IWEVEXPIRED events for Access Points
174 *- Add IW_MODE_MONITOR for passive monitor
175 *
176 * V15 to V16
177 * ----------
178 *- Increase the number of bitrates in iw_range to 32 (for 802.11g)
179 *- Increase the number of frequencies in iw_range to 32 (for 802.11b+a)
180 *- Reshuffle struct iw_range for increases, add filler
181 *- Increase IW_MAX_AP to 64 for driver returning a lot of addresses
182 *- Remove IW_MAX_GET_SPY because conflict with enhanced spy support
183 *- Add SIOCSIWTHRSPY/SIOCGIWTHRSPY and "struct iw_thrspy"
184 *- Add IW_ENCODE_TEMP and iw_range->encoding_login_index
185 */
186
187/**************************** CONSTANTS ****************************/
188
189/* -------------------------- IOCTL LIST -------------------------- */
190
191/* Wireless Identification */
192 #define SIOCSIWCOMMIT 0x8B00 /* Commit pending changes to driver */
193 #define SIOCGIWNAME 0x8B01 /* get name == wireless protocol */
194/* SIOCGIWNAME is used to verify the presence of Wireless Extensions.
195 * Common values : "IEEE 802.11-DS", "IEEE 802.11-FH", "IEEE 802.11b"...
196 * Don't put the name of your driver there, it's useless. */
197
198/* Basic operations */
199 #define SIOCSIWNWID 0x8B02 /* set network id (pre-802.11) */
200 #define SIOCGIWNWID 0x8B03 /* get network id (the cell) */
201 #define SIOCSIWFREQ 0x8B04 /* set channel/frequency (Hz) */
202 #define SIOCGIWFREQ 0x8B05 /* get channel/frequency (Hz) */
203 #define SIOCSIWMODE 0x8B06 /* set operation mode */
204 #define SIOCGIWMODE 0x8B07 /* get operation mode */
205 #define SIOCSIWSENS 0x8B08 /* set sensitivity (dBm) */
206 #define SIOCGIWSENS 0x8B09 /* get sensitivity (dBm) */
207
208/* Informative stuff */
209 #define SIOCSIWRANGE 0x8B0A /* Unused */
210 #define SIOCGIWRANGE 0x8B0B /* Get range of parameters */
211 #define SIOCSIWPRIV 0x8B0C /* Unused */
212 #define SIOCGIWPRIV 0x8B0D /* get private ioctl interface info */
213 #define SIOCSIWSTATS 0x8B0E /* Unused */
214 #define SIOCGIWSTATS 0x8B0F /* Get /proc/net/wireless stats */
215/* SIOCGIWSTATS is strictly used between user space and the kernel, and
216 * is never passed to the driver (i.e. the driver will never see it). */
217
218/* Spy support (statistics per MAC address - used for Mobile IP support) */
219 #define SIOCSIWSPY 0x8B10 /* set spy addresses */
220 #define SIOCGIWSPY 0x8B11 /* get spy info (quality of link) */
221 #define SIOCSIWTHRSPY 0x8B12 /* set spy threshold (spy event) */
222 #define SIOCGIWTHRSPY 0x8B13 /* get spy threshold */
223
224/* Access Point manipulation */
225 #define SIOCSIWAP 0x8B14 /* set access point MAC addresses */
226 #define SIOCGIWAP 0x8B15 /* get access point MAC addresses */
227 #define SIOCGIWAPLIST 0x8B17 /* Deprecated in favor of scanning */
228 #define SIOCSIWSCAN 0x8B18 /* trigger scanning (list cells) */
229 #define SIOCGIWSCAN 0x8B19 /* get scanning results */
230
231/* 802.11 specific support */
232 #define SIOCSIWESSID 0x8B1A /* set ESSID (network name) */
233 #define SIOCGIWESSID 0x8B1B /* get ESSID */
234 #define SIOCSIWNICKN 0x8B1C /* set node name/nickname */
235 #define SIOCGIWNICKN 0x8B1D /* get node name/nickname */
236/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit
237 * within the 'iwreq' structure, so we need to use the 'data' member to
238 * point to a string in user space, like it is done for RANGE... */
239
240/* Other parameters useful in 802.11 and some other devices */
241 #define SIOCSIWRATE 0x8B20 /* set default bit rate (bps) */
242 #define SIOCGIWRATE 0x8B21 /* get default bit rate (bps) */
243 #define SIOCSIWRTS 0x8B22 /* set RTS/CTS threshold (bytes) */
244 #define SIOCGIWRTS 0x8B23 /* get RTS/CTS threshold (bytes) */
245 #define SIOCSIWFRAG 0x8B24 /* set fragmentation thr (bytes) */
246 #define SIOCGIWFRAG 0x8B25 /* get fragmentation thr (bytes) */
247 #define SIOCSIWTXPOW 0x8B26 /* set transmit power (dBm) */
248 #define SIOCGIWTXPOW 0x8B27 /* get transmit power (dBm) */
249 #define SIOCSIWRETRY 0x8B28 /* set retry limits and lifetime */
250 #define SIOCGIWRETRY 0x8B29 /* get retry limits and lifetime */
251
252/* Encoding stuff (scrambling, hardware security, WEP...) */
253 #define SIOCSIWENCODE 0x8B2A /* set encoding token & mode */
254 #define SIOCGIWENCODE 0x8B2B /* get encoding token & mode */
255/* Power saving stuff (power management, unicast and multicast) */
256 #define SIOCSIWPOWER 0x8B2C /* set Power Management settings */
257 #define SIOCGIWPOWER 0x8B2D /* get Power Management settings */
258
259/* -------------------- DEV PRIVATE IOCTL LIST -------------------- */
260
261/* These 16 ioctl are wireless device private.
262 * Each driver is free to use them for whatever purpose it chooses,
263 * however the driver *must* export the description of those ioctls
264 * with SIOCGIWPRIV and *must* use arguments as defined below.
265 * If you don't follow those rules, DaveM is going to hate you (reason :
266 * it make mixed 32/64bit operation impossible).
267 */
268 #define SIOCIWFIRSTPRIV0x8BE0
269 #define SIOCIWLASTPRIV0x8BFF
270/* Previously, we were using SIOCDEVPRIVATE, but we now have our
271 * separate range because of collisions with other tools such as
272 * 'mii-tool'.
273 * We now have 32 commands, so a bit more space ;-).
274 * Also, all 'odd' commands are only usable by root and don't return the
275 * content of ifr/iwr to user (but you are not obliged to use the set/get
276 * convention, just use every other two command).
277 * And I repeat : you are not obliged to use them with iwspy, but you
278 * must be compliant with it.
279 */
280
281/* ------------------------- IOCTL STUFF ------------------------- */
282
283/* The first and the last (range) */
284 #define SIOCIWFIRST0x8B00
285 #define SIOCIWLAST SIOCIWLASTPRIV /* 0x8BFF */
286
287/* Even : get (world access), odd : set (root access) */
288 #define IW_IS_SET(cmd)(!((cmd) & 0x1))
289 #define IW_IS_GET(cmd)((cmd) & 0x1)
290
291/* ----------------------- WIRELESS EVENTS ----------------------- */
292/* Those are *NOT* ioctls, do not issue request on them !!! */
293/* Most events use the same identifier as ioctl requests */
294
295 #define IWEVTXDROP 0x8C00 /* Packet dropped to excessive retry */
296 #define IWEVQUAL 0x8C01 /* Quality part of statistics (scan) */
297 #define IWEVCUSTOM 0x8C02 /* Driver specific ascii string */
298 #define IWEVREGISTERED 0x8C03 /* Discovered a new node (AP mode) */
299 #define IWEVEXPIRED 0x8C04 /* Expired a node (AP mode) */
300
301 #define IWEVFIRST0x8C00
302
303/* ------------------------- PRIVATE INFO ------------------------- */
304/*
305 * The following is used with SIOCGIWPRIV. It allow a driver to define
306 * the interface (name, type of data) for its private ioctl.
307 * Privates ioctl are SIOCIWFIRSTPRIV -> SIOCIWLASTPRIV
308 */
309
310 #define IW_PRIV_TYPE_MASK 0x7000/* Type of arguments */
311 #define IW_PRIV_TYPE_NONE0x0000
312 #define IW_PRIV_TYPE_BYTE 0x1000/* Char as number */
313 #define IW_PRIV_TYPE_CHAR 0x2000/* Char as character */
314 #define IW_PRIV_TYPE_INT 0x4000/* 32 bits int */
315 #define IW_PRIV_TYPE_FLOAT 0x5000/* struct iw_freq */
316 #define IW_PRIV_TYPE_ADDR 0x6000/* struct sockaddr */
317
318 #define IW_PRIV_SIZE_FIXED 0x0800/* Variable or fixed number of args */
319
320 #define IW_PRIV_SIZE_MASK 0x07FF/* Max number of those args */
321
322/*
323 * Note : if the number of args is fixed and the size < 16 octets,
324 * instead of passing a pointer we will put args in the iwreq struct...
325 */
326
327/* ----------------------- OTHER CONSTANTS ----------------------- */
328
329/* Maximum frequencies in the range struct */
330 #define IW_MAX_FREQUENCIES32
331/* Note : if you have something like 80 frequencies,
332 * don't increase this constant and don't fill the frequency list.
333 * The user will be able to set by channel anyway... */
334
335/* Maximum bit rates in the range struct */
336 #define IW_MAX_BITRATES 32
337
338/* Maximum tx powers in the range struct */
339 #define IW_MAX_TXPOWER 8
340/* Note : if you more than 8 TXPowers, just set the max and min or
341 * a few of them in the struct iw_range. */
342
343/* Maximum of address that you may set with SPY */
344 #define IW_MAX_SPY 8
345
346/* Maximum of address that you may get in the
347 list of access points in range */
348 #define IW_MAX_AP 64
349
350/* Maximum size of the ESSID and NICKN strings */
351 #define IW_ESSID_MAX_SIZE32
352
353/* Modes of operation */
354 #define IW_MODE_AUTO 0/* Let the driver decides */
355 #define IW_MODE_ADHOC 1/* Single cell network */
356 #define IW_MODE_INFRA 2/* Multi cell network, roaming, ... */
357 #define IW_MODE_MASTER 3/* Synchronisation master or Access Point */
358 #define IW_MODE_REPEAT 4/* Wireless Repeater (forwarder) */
359 #define IW_MODE_SECOND 5/* Secondary master/repeater (backup) */
360 #define IW_MODE_MONITOR 6/* Passive monitor (listen only) */
361
362/* Maximum number of size of encoding token available
363 * they are listed in the range structure */
364 #define IW_MAX_ENCODING_SIZES8
365
366/* Maximum size of the encoding token in bytes */
367 #define IW_ENCODING_TOKEN_MAX 32/* 256 bits (for now) */
368
369/* Flags for encoding (along with the token) */
370 #define IW_ENCODE_INDEX 0x00FF/* Token index (if needed) */
371 #define IW_ENCODE_FLAGS 0xFF00/* Flags defined below */
372 #define IW_ENCODE_MODE 0xF000/* Modes defined below */
373 #define IW_ENCODE_DISABLED 0x8000/* Encoding disabled */
374 #define IW_ENCODE_ENABLED 0x0000/* Encoding enabled */
375 #define IW_ENCODE_RESTRICTED 0x4000/* Refuse non-encoded packets */
376 #define IW_ENCODE_OPEN 0x2000/* Accept non-encoded packets */
377 #define IW_ENCODE_NOKEY 0x0800 /* Key is write only, so not present */
378 #define IW_ENCODE_TEMP 0x0400 /* Temporary key */
379
380/* Power management flags available (along with the value, if any) */
381 #define IW_POWER_ON 0x0000/* No details... */
382 #define IW_POWER_TYPE 0xF000/* Type of parameter */
383 #define IW_POWER_PERIOD 0x1000/* Value is a period/duration of */
384 #define IW_POWER_TIMEOUT 0x2000/* Value is a timeout (to go asleep) */
385 #define IW_POWER_MODE 0x0F00/* Power Management mode */
386 #define IW_POWER_UNICAST_R 0x0100/* Receive only unicast messages */
387 #define IW_POWER_MULTICAST_R 0x0200/* Receive only multicast messages */
388 #define IW_POWER_ALL_R 0x0300/* Receive all messages though PM */
389 #define IW_POWER_FORCE_S 0x0400/* Force PM procedure for sending unicast */
390 #define IW_POWER_REPEATER 0x0800/* Repeat broadcast messages in PM period */
391 #define IW_POWER_MODIFIER 0x000F/* Modify a parameter */
392 #define IW_POWER_MIN 0x0001/* Value is a minimum */
393 #define IW_POWER_MAX 0x0002/* Value is a maximum */
394 #define IW_POWER_RELATIVE 0x0004/* Value is not in seconds/ms/us */
395
396/* Transmit Power flags available */
397 #define IW_TXPOW_TYPE 0x00FF/* Type of value */
398 #define IW_TXPOW_DBM 0x0000/* Value is in dBm */
399 #define IW_TXPOW_MWATT 0x0001/* Value is in mW */
400 #define IW_TXPOW_RANGE 0x1000/* Range of value between min/max */
401
402/* Retry limits and lifetime flags available */
403 #define IW_RETRY_ON 0x0000/* No details... */
404 #define IW_RETRY_TYPE 0xF000/* Type of parameter */
405 #define IW_RETRY_LIMIT 0x1000/* Maximum number of retries*/
406 #define IW_RETRY_LIFETIME 0x2000/* Maximum duration of retries in us */
407 #define IW_RETRY_MODIFIER 0x000F/* Modify a parameter */
408 #define IW_RETRY_MIN 0x0001/* Value is a minimum */
409 #define IW_RETRY_MAX 0x0002/* Value is a maximum */
410 #define IW_RETRY_RELATIVE 0x0004/* Value is not in seconds/ms/us */
411
412/* Scanning request flags */
413 #define IW_SCAN_DEFAULT 0x0000/* Default scan of the driver */
414 #define IW_SCAN_ALL_ESSID 0x0001/* Scan all ESSIDs */
415 #define IW_SCAN_THIS_ESSID 0x0002/* Scan only this ESSID */
416 #define IW_SCAN_ALL_FREQ 0x0004/* Scan all Frequencies */
417 #define IW_SCAN_THIS_FREQ 0x0008/* Scan only this Frequency */
418 #define IW_SCAN_ALL_MODE 0x0010/* Scan all Modes */
419 #define IW_SCAN_THIS_MODE 0x0020/* Scan only this Mode */
420 #define IW_SCAN_ALL_RATE 0x0040/* Scan all Bit-Rates */
421 #define IW_SCAN_THIS_RATE 0x0080/* Scan only this Bit-Rate */
422/* Maximum size of returned data */
423 #define IW_SCAN_MAX_DATA 4096/* In bytes */
424
425/* Max number of char in custom event - use multiple of them if needed */
426 #define IW_CUSTOM_MAX 256/* In bytes */
427
428/****************************** TYPES ******************************/
429
430/* --------------------------- SUBTYPES --------------------------- */
431/*
432 *Generic format for most parameters that fit in an int
433 */
434 structiw_param
435{
436 __s32 value; /* The value of the parameter itself */
437 __u8 fixed; /* Hardware should not use auto select */
438 __u8 disabled;/* Disable the feature */
439 __u16 flags; /* Various specifc flags (if any) */
440};
441
442/*
443 *For all data larger than 16 octets, we need to use a
444 *pointer to memory allocated in user space.
445 */
446 structiw_point
447{
448 caddr_t pointer;/* Pointer to the data (in user space) */
449 __u16 length; /* number of fields or size in bytes */
450 __u16 flags; /* Optional params */
451};
452
453/*
454 *A frequency
455 *For numbers lower than 10^9, we encode the number in 'm' and
456 *set 'e' to 0
457 *For number greater than 10^9, we divide it by the lowest power
458 *of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')...
459 *The power of 10 is in 'e', the result of the division is in 'm'.
460 */
461 structiw_freq
462{
463 __s32 m; /* Mantissa */
464 __s16 e; /* Exponent */
465 __u8 i; /* List index (when in range struct) */
466 __u8 pad; /* Unused - just for alignement */
467};
468
469/*
470 *Quality of the link
471 */
472 structiw_quality
473{
474 __u8 qual; /* link quality (%retries, SNR,
475 %missed beacons or better...) */
476 __u8 level; /* signal level (dBm) */
477 __u8 noise; /* noise level (dBm) */
478 __u8 updated;/* Flags to know if updated */
479};
480
481/*
482 *Packet discarded in the wireless adapter due to
483 *"wireless" specific problems...
484 *Note : the list of counter and statistics in net_device_stats
485 *is already pretty exhaustive, and you should use that first.
486 *This is only additional stats...
487 */
488 structiw_discarded
489{
490 __u32 nwid; /* Rx : Wrong nwid/essid */
491 __u32 code; /* Rx : Unable to code/decode (WEP) */
492 __u32 fragment;/* Rx : Can't perform MAC reassembly */
493 __u32 retries;/* Tx : Max MAC retries num reached */
494 __u32 misc; /* Others cases */
495};
496
497/*
498 *Packet/Time period missed in the wireless adapter due to
499 *"wireless" specific problems...
500 */
501 structiw_missed
502{
503 __u32 beacon; /* Missed beacons/superframe */
504};
505
506/*
507 *Quality range (for spy threshold)
508 */
509 structiw_thrspy
510{
511 struct sockaddr addr; /* Source address (hw/mac) */
512 struct iw_quality qual; /* Quality of the link */
513 struct iw_quality low; /* Low threshold */
514 struct iw_quality high; /* High threshold */
515};
516
517/* ------------------------ WIRELESS STATS ------------------------ */
518/*
519 * Wireless statistics (used for /proc/net/wireless)
520 */
521 structiw_statistics
522{
523 __u16 status; /* Status
524 * - device dependent for now */
525
526 struct iw_quality qual; /* Quality of the link
527 * (instant/mean/max) */
528 struct iw_discarded discard;/* Packet discarded counts */
529 struct iw_missed miss; /* Packet missed counts */
530};
531
532/* ------------------------ IOCTL REQUEST ------------------------ */
533/*
534 * This structure defines the payload of an ioctl, and is used
535 * below.
536 *
537 * Note that this structure should fit on the memory footprint
538 * of iwreq (which is the same as ifreq), which mean a max size of
539 * 16 octets = 128 bits. Warning, pointers might be 64 bits wide...
540 * You should check this when increasing the structures defined
541 * above in this file...
542 */
543 unioniwreq_data
544{
545 /* Config - generic */
546 char name[IFNAMSIZ];
547 /* Name : used to verify the presence of wireless extensions.
548 * Name of the protocol/provider... */
549
550 struct iw_point essid; /* Extended network name */
551 struct iw_param nwid; /* network id (or domain - the cell) */
552 struct iw_freq freq; /* frequency or channel :
553 * 0-1000 = channel
554 * > 1000 = frequency in Hz */
555
556 struct iw_param sens; /* signal level threshold */
557 struct iw_param bitrate;/* default bit rate */
558 struct iw_param txpower;/* default transmit power */
559 struct iw_param rts; /* RTS threshold threshold */
560 struct iw_param frag; /* Fragmentation threshold */
561 __u32 mode; /* Operation mode */
562 struct iw_param retry; /* Retry limits & lifetime */
563
564 struct iw_point encoding;/* Encoding stuff : tokens */
565 struct iw_param power; /* PM duration/timeout */
566 struct iw_quality qual; /* Quality part of statistics */
567
568 struct sockaddr ap_addr;/* Access point address */
569 struct sockaddr addr; /* Destination address (hw/mac) */
570
571 struct iw_param param; /* Other small parameters */
572 struct iw_point data; /* Other large parameters */
573};
574
575/*
576 * The structure to exchange data for ioctl.
577 * This structure is the same as 'struct ifreq', but (re)defined for
578 * convenience...
579 * Do I need to remind you about structure size (32 octets) ?
580 */
581 structiwreq
582{
583 union
584 {
585 char ifrn_name[IFNAMSIZ];/* if name, e.g. "eth0" */
586 } ifr_ifrn;
587
588 /* Data part (defined just above) */
589 union iwreq_datau;
590};
591
592/* -------------------------- IOCTL DATA -------------------------- */
593/*
594 *For those ioctl which want to exchange mode data that what could
595 *fit in the above structure...
596 */
597
598/*
599 *Range of parameters
600 */
601
602 structiw_range
603{
604 /* Informative stuff (to choose between different interface) */
605 __u32 throughput;/* To give an idea... */
606 /* In theory this value should be the maximum benchmarked
607 * TCP/IP throughput, because with most of these devices the
608 * bit rate is meaningless (overhead an co) to estimate how
609 * fast the connection will go and pick the fastest one.
610 * I suggest people to play with Netperf or any benchmark...
611 */
612
613 /* NWID (or domain id) */
614 __u32 min_nwid;/* Minimal NWID we are able to set */
615 __u32 max_nwid;/* Maximal NWID we are able to set */
616
617 /* Old Frequency (backward compat - moved lower ) */
618 __u16 old_num_channels;
619 __u8 old_num_frequency;
620 /* Filler to keep "version" at the same offset */
621 __s32 old_freq[6];
622
623 /* signal level threshold range */
624 __s32sensitivity;
625
626 /* Quality of link & SNR stuff */
627 /* Quality range (link, level, noise)
628 * If the quality is absolute, it will be in the range [0 ; max_qual],
629 * if the quality is dBm, it will be in the range [max_qual ; 0].
630 * Don't forget that we use 8 bit arithmetics... */
631 struct iw_quality max_qual;/* Quality of the link */
632 /* This should contain the average/typical values of the quality
633 * indicator. This should be the threshold between a "good" and
634 * a "bad" link (example : monitor going from green to orange).
635 * Currently, user space apps like quality monitors don't have any
636 * way to calibrate the measurement. With this, they can split
637 * the range between 0 and max_qual in different quality level
638 * (using a geometric subdivision centered on the average).
639 * I expect that people doing the user space apps will feedback
640 * us on which value we need to put in each driver... */
641 struct iw_quality avg_qual;/* Quality of the link */
642
643 /* Rates */
644 __u8 num_bitrates;/* Number of entries in the list */
645 __s32 bitrate[IW_MAX_BITRATES];/* list, in bps */
646
647 /* RTS threshold */
648 __s32 min_rts;/* Minimal RTS threshold */
649 __s32 max_rts;/* Maximal RTS threshold */
650
651 /* Frag threshold */
652 __s32 min_frag;/* Minimal frag threshold */
653 __s32 max_frag;/* Maximal frag threshold */
654
655 /* Power Management duration & timeout */
656 __s32 min_pmp;/* Minimal PM period */
657 __s32 max_pmp;/* Maximal PM period */
658 __s32 min_pmt;/* Minimal PM timeout */
659 __s32 max_pmt;/* Maximal PM timeout */
660 __u16 pmp_flags;/* How to decode max/min PM period */
661 __u16 pmt_flags;/* How to decode max/min PM timeout */
662 __u16 pm_capa;/* What PM options are supported */
663
664 /* Encoder stuff */
665 __u16 encoding_size[IW_MAX_ENCODING_SIZES];/* Different token sizes */
666 __u8 num_encoding_sizes;/* Number of entry in the list */
667 __u8 max_encoding_tokens;/* Max number of tokens */
668 /* For drivers that need a "login/passwd" form */
669 __u8 encoding_login_index;/* token index for login token */
670
671 /* Transmit power */
672 __u16 txpower_capa;/* What options are supported */
673 __u8 num_txpower;/* Number of entries in the list */
674 __s32 txpower[IW_MAX_TXPOWER];/* list, in bps */
675
676 /* Wireless Extension version info */
677 __u8 we_version_compiled;/* Must be WIRELESS_EXT */
678 __u8 we_version_source;/* Last update of source */
679
680 /* Retry limits and lifetime */
681 __u16 retry_capa;/* What retry options are supported */
682 __u16 retry_flags;/* How to decode max/min retry limit */
683 __u16 r_time_flags;/* How to decode max/min retry life */
684 __s32 min_retry;/* Minimal number of retries */
685 __s32 max_retry;/* Maximal number of retries */
686 __s32 min_r_time;/* Minimal retry lifetime */
687 __s32 max_r_time;/* Maximal retry lifetime */
688
689 /* Frequency */
690 __u16 num_channels;/* Number of channels [0; num - 1] */
691 __u8 num_frequency;/* Number of entry in the list */
692 struct iw_freq freq[IW_MAX_FREQUENCIES];/* list */
693 /* Note : this frequency list doesn't need to fit channel numbers,
694 * because each entry contain its channel index */
695};
696
697/*
698 * Private ioctl interface information
699 */
700
701 structiw_priv_args
702{
703 __u32 cmd; /* Number of the ioctl to issue */
704 __u16 set_args;/* Type and number of args */
705 __u16 get_args;/* Type and number of args */
706 char name[IFNAMSIZ];/* Name of the extension */
707};
708
709/* ----------------------- WIRELESS EVENTS ----------------------- */
710/*
711 * Wireless events are carried through the rtnetlink socket to user
712 * space. They are encapsulated in the IFLA_WIRELESS field of
713 * a RTM_NEWLINK message.
714 */
715
716/*
717 * A Wireless Event. Contains basically the same data as the ioctl...
718 */
719struct iw_event
720{
721 __u16 len; /* Real lenght of this stuff */
722 __u16 cmd; /* Wireless IOCTL */
723 union iwreq_data u; /* IOCTL fixed payload */
724};
725
726/* Size of the Event prefix (including padding and alignement junk) */
727 #define IW_EV_LCP_LEN(sizeof(struct iw_event) - sizeof(union iwreq_data))
728/* Size of the various events */
729 #define IW_EV_CHAR_LEN(IW_EV_LCP_LEN + IFNAMSIZ)
730 #define IW_EV_UINT_LEN(IW_EV_LCP_LEN + sizeof(__u32))
731 #define IW_EV_FREQ_LEN(IW_EV_LCP_LEN + sizeof(struct iw_freq))
732 #define IW_EV_POINT_LEN(IW_EV_LCP_LEN + sizeof(struct iw_point))
733 #define IW_EV_PARAM_LEN(IW_EV_LCP_LEN + sizeof(struct iw_param))
734 #define IW_EV_ADDR_LEN(IW_EV_LCP_LEN + sizeof(struct sockaddr))
735 #define IW_EV_QUAL_LEN(IW_EV_LCP_LEN + sizeof(struct iw_quality))
736
737/* Note : in the case of iw_point, the extra data will come at the
738 * end of the event */
739
740 #endif/* _LINUX_WIRELESS_H */