Wireless Extension 16
Subsystems (2)
PATCH 1/1 Wireless Extension 16
Hi, This patch for 2.5.67-bk3 will update Wireless Extension to
version 16 :
o increase bitrate and frequency number for 802.11g/802.11a
o enhanced iwspy support
o minor tweaks and cleanups
This patch is only for the core of WE. The patches for the
individual drivers have been sent to their respective maintainers.
Have fun... Jean
include/linux/wireless.h renamed from include/linux/wireless.15.h +62 -27
@@ -1,7 +1,7 @@/* * This file define a set of standard wireless extensions * -* Version : 15 12.7.02 +* Version : 16 2.4.03 * * Authors : Jean Tourrilhes - HPL - <[email protected]> * Copyright (c) 1997-2002 Jean Tourrilhes, All Rights Reserved.
@@ -69,6 +69,8 @@/***************************** INCLUDES *****************************/ +/* To minimise problems in user space, I might remove those headers +* at some point. Jean II */ #include <linux/types.h> /* for "caddr_t" et al */ #include <linux/socket.h> /* for "struct sockaddr" et al */ #include <linux/if.h> /* for IFNAMSIZ and co... */
@@ -80,7 +82,7 @@* (there is some stuff that will be added in the future...) * I just plan to increment with each new version. */ -#define WIRELESS_EXT 15 +#define WIRELESS_EXT 16/* * Changes :
@@ -163,6 +165,16 @@* - Add IW_TXPOW_RANGE for range of Tx Powers * - Add IWEVREGISTERED & IWEVEXPIRED events for Access Points * - Add IW_MODE_MONITOR for passive monitor +* +* V15 to V16 +* ---------- +* - Increase the number of bitrates in iw_range to 32 (for 802.11g) +* - Increase the number of frequencies in iw_range to 32 (for 802.11b+a) +* - Reshuffle struct iw_range for increases, add filler +* - Increase IW_MAX_AP to 64 for driver returning a lot of addresses +* - Remove IW_MAX_GET_SPY because conflict with enhanced spy support +* - Add SIOCSIWTHRSPY/SIOCGIWTHRSPY and "struct iw_thrspy" +* - Add IW_ENCODE_TEMP and iw_range->encoding_login_index */ /**************************** CONSTANTS ****************************/
@@ -196,9 +208,11 @@/* SIOCGIWSTATS is strictly used between user space and the kernel, and * is never passed to the driver (i.e. the driver will never see it). */ -/* Mobile IP support (statistics per MAC address) */ +/* Spy support (statistics per MAC address - used for Mobile IP support) */ #define SIOCSIWSPY 0x8B10/* set spy addresses */ #define SIOCGIWSPY 0x8B11/* get spy info (quality of link) */ +#define SIOCSIWTHRSPY 0x8B12/* set spy threshold (spy event) */ +#define SIOCGIWTHRSPY 0x8B13/* get spy threshold */ /* Access Point manipulation */ #define SIOCSIWAP 0x8B14/* set access point MAC addresses */
@@ -306,13 +320,13 @@/* ----------------------- OTHER CONSTANTS ----------------------- */ /* Maximum frequencies in the range struct */ -#define IW_MAX_FREQUENCIES 16 +#define IW_MAX_FREQUENCIES 32/* Note : if you have something like 80 frequencies, * don't increase this constant and don't fill the frequency list. * The user will be able to set by channel anyway... */ /* Maximum bit rates in the range struct */ -#define IW_MAX_BITRATES 8 +#define IW_MAX_BITRATES 32/* Maximum tx powers in the range struct */ #define IW_MAX_TXPOWER 8
@@ -320,12 +334,11 @@* a few of them in the struct iw_range. */ /* Maximum of address that you may set with SPY */ -#define IW_MAX_SPY 8/* set */ -#define IW_MAX_GET_SPY 64/* get */ +#define IW_MAX_SPY 8/* Maximum of address that you may get in the list of access points in range */ -#define IW_MAX_AP 8 +#define IW_MAX_AP 64/* Maximum size of the ESSID and NICKN strings */ #define IW_ESSID_MAX_SIZE 32
@@ -354,7 +367,8 @@#define IW_ENCODE_ENABLED 0x0000/* Encoding enabled */ #define IW_ENCODE_RESTRICTED 0x4000/* Refuse non-encoded packets */ #define IW_ENCODE_OPEN 0x2000/* Accept non-encoded packets */ -#define IW_ENCODE_NOKEY 0x0800/* Key is write only, so not present */ +#define IW_ENCODE_NOKEY 0x0800/* Key is write only, so not present */ +#define IW_ENCODE_TEMP 0x0400/* Temporary key */ /* Power management flags available (along with the value, if any) */ #define IW_POWER_ON 0x0000/* No details... */
@@ -482,6 +496,17 @@ struct iw_missed__u32 beacon;/* Missed beacons/superframe */ }; +/* +* Quality range (for spy threshold) +*/ +struct iw_thrspy +{ +struct sockaddr addr;/* Source address (hw/mac) */ +struct iw_quality qual;/* Quality of the link */ +struct iw_quality low;/* Low threshold */ +struct iw_quality high;/* High threshold */ +}; +/* ------------------------ WIRELESS STATS ------------------------ */ /* * Wireless statistics (used for /proc/net/wireless)
@@ -534,7 +559,7 @@ union iwreq_datastruct iw_quality qual;/* Quality part of statistics */ struct sockaddr ap_addr;/* Access point address */ -struct sockaddr addr;/* Destination address (hw) */ +struct sockaddr addr;/* Destination address (hw/mac) */ struct iw_param param;/* Other small parameters */ struct iw_point data;/* Other large parameters */
@@ -582,17 +607,31 @@ struct iw_range__u32 min_nwid;/* Minimal NWID we are able to set */ __u32 max_nwid;/* Maximal NWID we are able to set */ -/* Frequency */ -__u16 num_channels;/* Number of channels [0; num - 1] */ -__u8 num_frequency;/* Number of entry in the list */ -struct iw_freq freq[IW_MAX_FREQUENCIES ];/* list */ -/* Note : this frequency list doesn't need to fit channel numbers */ +/* Old Frequency (backward compat - moved lower ) */ +__u16 old_num_channels; +__u8 old_num_frequency; +/* Filler to keep "version" at the same offset */ +__s32 old_freq[6 ];/* signal level threshold range */ __s32 sensitivity;/* Quality of link & SNR stuff */ +/* Quality range (link, level, noise) +* If the quality is absolute, it will be in the range [0 ; max_qual], +* if the quality is dBm, it will be in the range [max_qual ; 0]. +* Don't forget that we use 8 bit arithmetics... */ struct iw_quality max_qual;/* Quality of the link */ +/* This should contain the average/typical values of the quality +* indicator. This should be the threshold between a "good" and +* a "bad" link (example : monitor going from green to orange). +* Currently, user space apps like quality monitors don't have any +* way to calibrate the measurement. With this, they can split +* the range between 0 and max_qual in different quality level +* (using a geometric subdivision centered on the average). +* I expect that people doing the user space apps will feedback +* us on which value we need to put in each driver... */ +struct iw_quality avg_qual;/* Quality of the link */ /* Rates */ __u8 num_bitrates;/* Number of entries in the list */
@@ -619,6 +658,8 @@ struct iw_range__u16 encoding_size[IW_MAX_ENCODING_SIZES ];/* Different token sizes */ __u8 num_encoding_sizes;/* Number of entry in the list */ __u8 max_encoding_tokens;/* Max number of tokens */ +/* For drivers that need a "login/passwd" form */ +__u8 encoding_login_index;/* token index for login token */ /* Transmit power */ __u16 txpower_capa;/* What options are supported */
@@ -638,18 +679,12 @@ struct iw_range__s32 min_r_time;/* Minimal retry lifetime */ __s32 max_r_time;/* Maximal retry lifetime */ -/* Average quality of link & SNR */ -struct iw_quality avg_qual;/* Quality of the link */ -/* This should contain the average/typical values of the quality -* indicator. This should be the threshold between a "good" and -* a "bad" link (example : monitor going from green to orange). -* Currently, user space apps like quality monitors don't have any -* way to calibrate the measurement. With this, they can split -* the range between 0 and max_qual in different quality level -* (using a geometric subdivision centered on the average). -* I expect that people doing the user space apps will feedback -* us on which value we need to put in each driver... -*/ +/* Frequency */ +__u16 num_channels;/* Number of channels [0; num - 1] */ +__u8 num_frequency;/* Number of entry in the list */ +struct iw_freq freq[IW_MAX_FREQUENCIES ];/* list */ +/* Note : this frequency list doesn't need to fit channel numbers, +* because each entry contain its channel index */ };/*
include/net/iw_handler.h renamed from include/net/iw_handler.15.h +65 -2
107 lines not on this page · raw message
net/core/wireless.c renamed from net/core/wireless.15.c +267 -10
326 lines not on this page · raw message
net/netsyms.c renamed from net/netsyms.15.c +6 -3
@@ -669,10 +669,13 @@ EXPORT_SYMBOL(register_gifconf);EXPORT_SYMBOL (softnet_data);#ifdef CONFIG_NET_RADIO -/* Don't include the whole header mess for a single function */ -union iwreq_data ; -extern void wireless_send_event (struct net_device *dev,unsigned int cmd,union iwreq_data *wrqu,char *extra); +#include <net/iw_handler.h> /* Wireless Extensions driver API */ EXPORT_SYMBOL (wireless_send_event); +EXPORT_SYMBOL (iw_handler_set_spy); +EXPORT_SYMBOL (iw_handler_get_spy); +EXPORT_SYMBOL (iw_handler_set_thrspy); +EXPORT_SYMBOL (iw_handler_get_thrspy); +EXPORT_SYMBOL (wireless_spy_update);#endif /* CONFIG_NET_RADIO */ EXPORT_SYMBOL (linkwatch_fire_event);