Merge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
commit
75e47b3600
11 changed files with 98 additions and 128 deletions
|
@ -66,7 +66,7 @@ config BONDING
|
|||
'Trunking' by Sun, 802.3ad by the IEEE, and 'Bonding' in Linux.
|
||||
|
||||
The driver supports multiple bonding modes to allow for both high
|
||||
perfomance and high availability operation.
|
||||
performance and high availability operation.
|
||||
|
||||
Refer to <file:Documentation/networking/bonding.txt> for more
|
||||
information.
|
||||
|
@ -698,8 +698,8 @@ config VORTEX
|
|||
depends on NET_VENDOR_3COM && (PCI || EISA)
|
||||
select MII
|
||||
---help---
|
||||
This option enables driver support for a large number of 10mbps and
|
||||
10/100mbps EISA, PCI and PCMCIA 3Com network cards:
|
||||
This option enables driver support for a large number of 10Mbps and
|
||||
10/100Mbps EISA, PCI and PCMCIA 3Com network cards:
|
||||
|
||||
"Vortex" (Fast EtherLink 3c590/3c592/3c595/3c597) EISA and PCI
|
||||
"Boomerang" (EtherLink XL 3c900 or 3c905) PCI
|
||||
|
@ -1021,7 +1021,7 @@ config EEXPRESS_PRO
|
|||
depends on NET_ISA
|
||||
---help---
|
||||
If you have a network (Ethernet) card of this type, say Y. This
|
||||
driver supports intel i82595{FX,TX} based boards. Note however
|
||||
driver supports Intel i82595{FX,TX} based boards. Note however
|
||||
that the EtherExpress PRO/100 Ethernet card has its own separate
|
||||
driver. Please read the Ethernet-HOWTO, available from
|
||||
<http://www.tldp.org/docs.html#howto>.
|
||||
|
@ -1207,7 +1207,7 @@ config IBM_EMAC_RX_SKB_HEADROOM
|
|||
help
|
||||
Additional receive skb headroom. Note, that driver
|
||||
will always reserve at least 2 bytes to make IP header
|
||||
aligned, so usualy there is no need to add any additional
|
||||
aligned, so usually there is no need to add any additional
|
||||
headroom.
|
||||
|
||||
If unsure, set to 0.
|
||||
|
@ -1933,7 +1933,7 @@ config MYRI_SBUS
|
|||
will be called myri_sbus. This is recommended.
|
||||
|
||||
config NS83820
|
||||
tristate "National Semiconduct DP83820 support"
|
||||
tristate "National Semiconductor DP83820 support"
|
||||
depends on PCI
|
||||
help
|
||||
This is a driver for the National Semiconductor DP83820 series
|
||||
|
@ -2513,7 +2513,7 @@ config PPP_FILTER
|
|||
Say Y here if you want to be able to filter the packets passing over
|
||||
PPP interfaces. This allows you to control which packets count as
|
||||
activity (i.e. which packets will reset the idle timer or bring up
|
||||
a demand-dialled link) and which packets are to be dropped entirely.
|
||||
a demand-dialed link) and which packets are to be dropped entirely.
|
||||
You need to say Y here if you wish to use the pass-filter and
|
||||
active-filter options to pppd.
|
||||
|
||||
|
@ -2701,8 +2701,8 @@ config SHAPER
|
|||
<file:Documentation/networking/shaper.txt> for more information.
|
||||
|
||||
An alternative to this traffic shaper is the experimental
|
||||
Class-Based Queueing (CBQ) scheduling support which you get if you
|
||||
say Y to "QoS and/or fair queueing" above.
|
||||
Class-Based Queuing (CBQ) scheduling support which you get if you
|
||||
say Y to "QoS and/or fair queuing" above.
|
||||
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called shaper. If unsure, say N.
|
||||
|
|
|
@ -68,10 +68,10 @@ config ARCNET_CAP
|
|||
packet is stuffed with an extra 4 byte "cookie" which doesn't
|
||||
actually appear on the network. After transmit the driver will send
|
||||
back a packet with protocol byte 0 containing the status of the
|
||||
transmition:
|
||||
transmission:
|
||||
0=no hardware acknowledge
|
||||
1=excessive nak
|
||||
2=transmition accepted by the reciever hardware
|
||||
2=transmission accepted by the receiver hardware
|
||||
|
||||
Received packets are also stuffed with the extra 4 bytes but it will
|
||||
be random data.
|
||||
|
|
|
@ -283,7 +283,7 @@ config USB_IRDA
|
|||
Say Y here if you want to build support for the USB IrDA FIR Dongle
|
||||
device driver. To compile it as a module, choose M here: the module
|
||||
will be called irda-usb. IrDA-USB support the various IrDA USB
|
||||
dongles available and most of their pecularities. Those dongles
|
||||
dongles available and most of their peculiarities. Those dongles
|
||||
plug in the USB port of your computer, are plug and play, and
|
||||
support SIR and FIR (4Mbps) speeds. On the other hand, those
|
||||
dongles tend to be less efficient than a FIR chipset.
|
||||
|
@ -360,7 +360,7 @@ config ALI_FIR
|
|||
help
|
||||
Say Y here if you want to build support for the ALi M5123 FIR
|
||||
Controller. The ALi M5123 FIR Controller is embedded in ALi M1543C,
|
||||
M1535, M1535D, M1535+, M1535D Sourth Bridge. This driver supports
|
||||
M1535, M1535D, M1535+, M1535D South Bridge. This driver supports
|
||||
SIR, MIR and FIR (4Mbps) speeds.
|
||||
|
||||
To compile it as a module, choose M here: the module will be called
|
||||
|
|
|
@ -459,7 +459,7 @@ config WANPIPE_FR
|
|||
bool "WANPIPE Frame Relay support"
|
||||
depends on VENDOR_SANGOMA
|
||||
help
|
||||
Connect a WANPIPE card to a Frame Relay network, or use Frame Felay
|
||||
Connect a WANPIPE card to a Frame Relay network, or use Frame Relay
|
||||
API to develop custom applications.
|
||||
|
||||
Contains the Ethernet Bridging over Frame Relay feature, where
|
||||
|
|
|
@ -136,8 +136,9 @@ comment "Wireless 802.11b ISA/PCI cards support"
|
|||
|
||||
config IPW2100
|
||||
tristate "Intel PRO/Wireless 2100 Network Connection"
|
||||
depends on NET_RADIO && PCI && IEEE80211
|
||||
depends on NET_RADIO && PCI
|
||||
select FW_LOADER
|
||||
select IEEE80211
|
||||
---help---
|
||||
A driver for the Intel PRO/Wireless 2100 Network
|
||||
Connection 802.11b wireless network adapter.
|
||||
|
@ -189,8 +190,9 @@ config IPW2100_DEBUG
|
|||
|
||||
config IPW2200
|
||||
tristate "Intel PRO/Wireless 2200BG and 2915ABG Network Connection"
|
||||
depends on NET_RADIO && IEEE80211 && PCI
|
||||
depends on NET_RADIO && PCI
|
||||
select FW_LOADER
|
||||
select IEEE80211
|
||||
---help---
|
||||
A driver for the Intel PRO/Wireless 2200BG and 2915ABG Network
|
||||
Connection adapters.
|
||||
|
@ -202,7 +204,7 @@ config IPW2200
|
|||
In order to use this driver, you will need a firmware image for it.
|
||||
You can obtain the firmware from
|
||||
<http://ipw2200.sf.net/>. See the above referenced README.ipw2200
|
||||
for information on where to install the firmare images.
|
||||
for information on where to install the firmware images.
|
||||
|
||||
You will also very likely need the Wireless Tools in order to
|
||||
configure your card:
|
||||
|
@ -214,6 +216,19 @@ config IPW2200
|
|||
say M here and read <file:Documentation/modules.txt>. The module
|
||||
will be called ipw2200.ko.
|
||||
|
||||
config IPW2200_MONITOR
|
||||
bool "Enable promiscuous mode"
|
||||
depends on IPW2200
|
||||
---help---
|
||||
Enables promiscuous/monitor mode support for the ipw2200 driver.
|
||||
With this feature compiled into the driver, you can switch to
|
||||
promiscuous mode via the Wireless Tool's Monitor mode. While in this
|
||||
mode, no packets can be sent.
|
||||
|
||||
config IPW_QOS
|
||||
bool "Enable QoS support"
|
||||
depends on IPW2200 && EXPERIMENTAL
|
||||
|
||||
config IPW2200_DEBUG
|
||||
bool "Enable full debugging output in IPW2200 module."
|
||||
depends on IPW2200
|
||||
|
@ -247,7 +262,7 @@ config AIRO
|
|||
PCI 802.11 wireless cards.
|
||||
It supports the new 802.11b cards from Cisco (Cisco 34X, Cisco 35X
|
||||
- with or without encryption) as well as card before the Cisco
|
||||
aquisition (Aironet 4500, Aironet 4800, Aironet 4800B).
|
||||
acquisition (Aironet 4500, Aironet 4800, Aironet 4800B).
|
||||
|
||||
This driver support both the standard Linux Wireless Extensions
|
||||
and Cisco proprietary API, so both the Linux Wireless Tools and the
|
||||
|
@ -396,7 +411,7 @@ config AIRO_CS
|
|||
driver part of the Linux Pcmcia package.
|
||||
It supports the new 802.11b cards from Cisco (Cisco 34X, Cisco 35X
|
||||
- with or without encryption) as well as card before the Cisco
|
||||
aquisition (Aironet 4500, Aironet 4800, Aironet 4800B). It also
|
||||
acquisition (Aironet 4500, Aironet 4800, Aironet 4800B). It also
|
||||
supports OEM of Cisco such as the DELL TrueMobile 4800 and Xircom
|
||||
802.11b cards.
|
||||
|
||||
|
|
|
@ -5036,7 +5036,6 @@ static int set_wep_key(struct airo_info *ai, u16 index,
|
|||
wkr.len = sizeof(wkr);
|
||||
wkr.kindex = 0xffff;
|
||||
wkr.mac[0] = (char)index;
|
||||
if (perm) printk(KERN_INFO "Setting transmit key to %d\n", index);
|
||||
if (perm) ai->defindex = (char)index;
|
||||
} else {
|
||||
// We are actually setting the key
|
||||
|
@ -5045,7 +5044,6 @@ static int set_wep_key(struct airo_info *ai, u16 index,
|
|||
wkr.klen = keylen;
|
||||
memcpy( wkr.key, key, keylen );
|
||||
memcpy( wkr.mac, macaddr, ETH_ALEN );
|
||||
printk(KERN_INFO "Setting key %d\n", index);
|
||||
}
|
||||
|
||||
if (perm) disable_MAC(ai, lock);
|
||||
|
@ -6266,7 +6264,7 @@ static int airo_set_encodeext(struct net_device *dev,
|
|||
CapabilityRid cap_rid; /* Card capability info */
|
||||
int perm = ( encoding->flags & IW_ENCODE_TEMP ? 0 : 1 );
|
||||
u16 currentAuthType = local->config.authType;
|
||||
int idx, key_len, alg = ext->alg; /* Check encryption mode */
|
||||
int idx, key_len, alg = ext->alg, set_key = 1;
|
||||
wep_key_t key;
|
||||
|
||||
/* Is WEP supported ? */
|
||||
|
@ -6289,10 +6287,15 @@ static int airo_set_encodeext(struct net_device *dev,
|
|||
if (encoding->flags & IW_ENCODE_DISABLED)
|
||||
alg = IW_ENCODE_ALG_NONE;
|
||||
|
||||
/* Just setting the transmit key? */
|
||||
if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) {
|
||||
/* Only set transmit key index here, actual
|
||||
* key is set below if needed.
|
||||
*/
|
||||
set_wep_key(local, idx, NULL, 0, perm, 1);
|
||||
} else {
|
||||
set_key = ext->key_len > 0 ? 1 : 0;
|
||||
}
|
||||
|
||||
if (set_key) {
|
||||
/* Set the requested key first */
|
||||
memset(key.key, 0, MAX_KEY_SIZE);
|
||||
switch (alg) {
|
||||
|
|
|
@ -137,44 +137,6 @@ static struct {
|
|||
#define MAC_BOOT_COMPLETE 0x0010 // MAC boot has been completed
|
||||
#define MAC_INIT_OK 0x0002 // MAC boot has been completed
|
||||
|
||||
#define C80211_SUBTYPE_MGMT_ASS_REQUEST 0x00
|
||||
#define C80211_SUBTYPE_MGMT_ASS_RESPONSE 0x10
|
||||
#define C80211_SUBTYPE_MGMT_REASS_REQUEST 0x20
|
||||
#define C80211_SUBTYPE_MGMT_REASS_RESPONSE 0x30
|
||||
#define C80211_SUBTYPE_MGMT_ProbeRequest 0x40
|
||||
#define C80211_SUBTYPE_MGMT_ProbeResponse 0x50
|
||||
#define C80211_SUBTYPE_MGMT_BEACON 0x80
|
||||
#define C80211_SUBTYPE_MGMT_ATIM 0x90
|
||||
#define C80211_SUBTYPE_MGMT_DISASSOSIATION 0xA0
|
||||
#define C80211_SUBTYPE_MGMT_Authentication 0xB0
|
||||
#define C80211_SUBTYPE_MGMT_Deauthentication 0xC0
|
||||
|
||||
#define C80211_MGMT_AAN_OPENSYSTEM 0x0000
|
||||
#define C80211_MGMT_AAN_SHAREDKEY 0x0001
|
||||
|
||||
#define C80211_MGMT_CAPABILITY_ESS 0x0001 // see 802.11 p.58
|
||||
#define C80211_MGMT_CAPABILITY_IBSS 0x0002 // - " -
|
||||
#define C80211_MGMT_CAPABILITY_CFPollable 0x0004 // - " -
|
||||
#define C80211_MGMT_CAPABILITY_CFPollRequest 0x0008 // - " -
|
||||
#define C80211_MGMT_CAPABILITY_Privacy 0x0010 // - " -
|
||||
|
||||
#define C80211_MGMT_SC_Success 0
|
||||
#define C80211_MGMT_SC_Unspecified 1
|
||||
#define C80211_MGMT_SC_SupportCapabilities 10
|
||||
#define C80211_MGMT_SC_ReassDenied 11
|
||||
#define C80211_MGMT_SC_AssDenied 12
|
||||
#define C80211_MGMT_SC_AuthAlgNotSupported 13
|
||||
#define C80211_MGMT_SC_AuthTransSeqNumError 14
|
||||
#define C80211_MGMT_SC_AuthRejectChallenge 15
|
||||
#define C80211_MGMT_SC_AuthRejectTimeout 16
|
||||
#define C80211_MGMT_SC_AssDeniedHandleAP 17
|
||||
#define C80211_MGMT_SC_AssDeniedBSSRate 18
|
||||
|
||||
#define C80211_MGMT_ElementID_SSID 0
|
||||
#define C80211_MGMT_ElementID_SupportedRates 1
|
||||
#define C80211_MGMT_ElementID_ChallengeText 16
|
||||
#define C80211_MGMT_CAPABILITY_ShortPreamble 0x0020
|
||||
|
||||
#define MIB_MAX_DATA_BYTES 212
|
||||
#define MIB_HEADER_SIZE 4 /* first four fields */
|
||||
|
||||
|
@ -2835,7 +2797,7 @@ static void handle_beacon_probe(struct atmel_private *priv, u16 capability,
|
|||
u8 channel)
|
||||
{
|
||||
int rejoin = 0;
|
||||
int new = capability & C80211_MGMT_CAPABILITY_ShortPreamble ?
|
||||
int new = capability & MFIE_TYPE_POWER_CONSTRAINT ?
|
||||
SHORT_PREAMBLE : LONG_PREAMBLE;
|
||||
|
||||
if (priv->preamble != new) {
|
||||
|
@ -2921,11 +2883,11 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc)
|
|||
memcpy(header.addr2, priv->dev->dev_addr, 6);
|
||||
memcpy(header.addr3, priv->CurrentBSSID, 6);
|
||||
|
||||
body.capability = cpu_to_le16(C80211_MGMT_CAPABILITY_ESS);
|
||||
body.capability = cpu_to_le16(WLAN_CAPABILITY_ESS);
|
||||
if (priv->wep_is_on)
|
||||
body.capability |= cpu_to_le16(C80211_MGMT_CAPABILITY_Privacy);
|
||||
body.capability |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY);
|
||||
if (priv->preamble == SHORT_PREAMBLE)
|
||||
body.capability |= cpu_to_le16(C80211_MGMT_CAPABILITY_ShortPreamble);
|
||||
body.capability |= cpu_to_le16(MFIE_TYPE_POWER_CONSTRAINT);
|
||||
|
||||
body.listen_interval = cpu_to_le16(priv->listen_interval * priv->beacon_period);
|
||||
|
||||
|
@ -2939,10 +2901,10 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc)
|
|||
bodysize = 12 + priv->SSID_size;
|
||||
}
|
||||
|
||||
ssid_el_p[0] = C80211_MGMT_ElementID_SSID;
|
||||
ssid_el_p[0] = MFIE_TYPE_SSID;
|
||||
ssid_el_p[1] = priv->SSID_size;
|
||||
memcpy(ssid_el_p + 2, priv->SSID, priv->SSID_size);
|
||||
ssid_el_p[2 + priv->SSID_size] = C80211_MGMT_ElementID_SupportedRates;
|
||||
ssid_el_p[2 + priv->SSID_size] = MFIE_TYPE_RATES;
|
||||
ssid_el_p[3 + priv->SSID_size] = 4; /* len of suported rates */
|
||||
memcpy(ssid_el_p + 4 + priv->SSID_size, atmel_basic_rates, 4);
|
||||
|
||||
|
@ -3004,7 +2966,7 @@ static void store_bss_info(struct atmel_private *priv,
|
|||
u16 beacon_period, u8 channel, u8 rssi, u8 ssid_len,
|
||||
u8 *ssid, int is_beacon)
|
||||
{
|
||||
u8 *bss = capability & C80211_MGMT_CAPABILITY_ESS ? header->addr2 : header->addr3;
|
||||
u8 *bss = capability & WLAN_CAPABILITY_ESS ? header->addr2 : header->addr3;
|
||||
int i, index;
|
||||
|
||||
for (index = -1, i = 0; i < priv->BSS_list_entries; i++)
|
||||
|
@ -3030,16 +2992,16 @@ static void store_bss_info(struct atmel_private *priv,
|
|||
|
||||
priv->BSSinfo[index].channel = channel;
|
||||
priv->BSSinfo[index].beacon_period = beacon_period;
|
||||
priv->BSSinfo[index].UsingWEP = capability & C80211_MGMT_CAPABILITY_Privacy;
|
||||
priv->BSSinfo[index].UsingWEP = capability & WLAN_CAPABILITY_PRIVACY;
|
||||
memcpy(priv->BSSinfo[index].SSID, ssid, ssid_len);
|
||||
priv->BSSinfo[index].SSIDsize = ssid_len;
|
||||
|
||||
if (capability & C80211_MGMT_CAPABILITY_IBSS)
|
||||
if (capability & WLAN_CAPABILITY_IBSS)
|
||||
priv->BSSinfo[index].BSStype = IW_MODE_ADHOC;
|
||||
else if (capability & C80211_MGMT_CAPABILITY_ESS)
|
||||
else if (capability & WLAN_CAPABILITY_ESS)
|
||||
priv->BSSinfo[index].BSStype =IW_MODE_INFRA;
|
||||
|
||||
priv->BSSinfo[index].preamble = capability & C80211_MGMT_CAPABILITY_ShortPreamble ?
|
||||
priv->BSSinfo[index].preamble = capability & MFIE_TYPE_POWER_CONSTRAINT ?
|
||||
SHORT_PREAMBLE : LONG_PREAMBLE;
|
||||
}
|
||||
|
||||
|
@ -3050,7 +3012,7 @@ static void authenticate(struct atmel_private *priv, u16 frame_len)
|
|||
u16 trans_seq_no = le16_to_cpu(auth->trans_seq);
|
||||
u16 system = le16_to_cpu(auth->alg);
|
||||
|
||||
if (status == C80211_MGMT_SC_Success && !priv->wep_is_on) {
|
||||
if (status == WLAN_STATUS_SUCCESS && !priv->wep_is_on) {
|
||||
/* no WEP */
|
||||
if (priv->station_was_associated) {
|
||||
atmel_enter_state(priv, STATION_STATE_REASSOCIATING);
|
||||
|
@ -3063,19 +3025,19 @@ static void authenticate(struct atmel_private *priv, u16 frame_len)
|
|||
}
|
||||
}
|
||||
|
||||
if (status == C80211_MGMT_SC_Success && priv->wep_is_on) {
|
||||
if (status == WLAN_STATUS_SUCCESS && priv->wep_is_on) {
|
||||
int should_associate = 0;
|
||||
/* WEP */
|
||||
if (trans_seq_no != priv->ExpectedAuthentTransactionSeqNum)
|
||||
return;
|
||||
|
||||
if (system == C80211_MGMT_AAN_OPENSYSTEM) {
|
||||
if (system == WLAN_AUTH_OPEN) {
|
||||
if (trans_seq_no == 0x0002) {
|
||||
should_associate = 1;
|
||||
}
|
||||
} else if (system == C80211_MGMT_AAN_SHAREDKEY) {
|
||||
} else if (system == WLAN_AUTH_SHARED_KEY) {
|
||||
if (trans_seq_no == 0x0002 &&
|
||||
auth->el_id == C80211_MGMT_ElementID_ChallengeText) {
|
||||
auth->el_id == MFIE_TYPE_CHALLENGE) {
|
||||
send_authentication_request(priv, system, auth->chall_text, auth->chall_text_len);
|
||||
return;
|
||||
} else if (trans_seq_no == 0x0004) {
|
||||
|
@ -3140,8 +3102,8 @@ static void associate(struct atmel_private *priv, u16 frame_len, u16 subtype)
|
|||
if (frame_len < 8 + rates_len)
|
||||
return;
|
||||
|
||||
if (status == C80211_MGMT_SC_Success) {
|
||||
if (subtype == C80211_SUBTYPE_MGMT_ASS_RESPONSE)
|
||||
if (status == WLAN_STATUS_SUCCESS) {
|
||||
if (subtype == IEEE80211_STYPE_ASSOC_RESP)
|
||||
priv->AssociationRequestRetryCnt = 0;
|
||||
else
|
||||
priv->ReAssociationRequestRetryCnt = 0;
|
||||
|
@ -3178,9 +3140,9 @@ static void associate(struct atmel_private *priv, u16 frame_len, u16 subtype)
|
|||
return;
|
||||
}
|
||||
|
||||
if (subtype == C80211_SUBTYPE_MGMT_ASS_RESPONSE &&
|
||||
status != C80211_MGMT_SC_AssDeniedBSSRate &&
|
||||
status != C80211_MGMT_SC_SupportCapabilities &&
|
||||
if (subtype == IEEE80211_STYPE_ASSOC_RESP &&
|
||||
status != WLAN_STATUS_ASSOC_DENIED_RATES &&
|
||||
status != WLAN_STATUS_CAPS_UNSUPPORTED &&
|
||||
priv->AssociationRequestRetryCnt < MAX_ASSOCIATION_RETRIES) {
|
||||
mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES);
|
||||
priv->AssociationRequestRetryCnt++;
|
||||
|
@ -3188,9 +3150,9 @@ static void associate(struct atmel_private *priv, u16 frame_len, u16 subtype)
|
|||
return;
|
||||
}
|
||||
|
||||
if (subtype == C80211_SUBTYPE_MGMT_REASS_RESPONSE &&
|
||||
status != C80211_MGMT_SC_AssDeniedBSSRate &&
|
||||
status != C80211_MGMT_SC_SupportCapabilities &&
|
||||
if (subtype == IEEE80211_STYPE_REASSOC_RESP &&
|
||||
status != WLAN_STATUS_ASSOC_DENIED_RATES &&
|
||||
status != WLAN_STATUS_CAPS_UNSUPPORTED &&
|
||||
priv->AssociationRequestRetryCnt < MAX_ASSOCIATION_RETRIES) {
|
||||
mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES);
|
||||
priv->ReAssociationRequestRetryCnt++;
|
||||
|
@ -3325,8 +3287,8 @@ static void atmel_management_frame(struct atmel_private *priv,
|
|||
|
||||
subtype = le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_STYPE;
|
||||
switch (subtype) {
|
||||
case C80211_SUBTYPE_MGMT_BEACON:
|
||||
case C80211_SUBTYPE_MGMT_ProbeResponse:
|
||||
case IEEE80211_STYPE_BEACON:
|
||||
case IEEE80211_STYPE_PROBE_RESP:
|
||||
|
||||
/* beacon frame has multiple variable-length fields -
|
||||
never let an engineer loose with a data structure design. */
|
||||
|
@ -3384,19 +3346,19 @@ static void atmel_management_frame(struct atmel_private *priv,
|
|||
beacon_interval, channel, rssi,
|
||||
ssid_length,
|
||||
&beacon->rates_el_id,
|
||||
subtype == C80211_SUBTYPE_MGMT_BEACON);
|
||||
subtype == IEEE80211_STYPE_BEACON);
|
||||
}
|
||||
break;
|
||||
|
||||
case C80211_SUBTYPE_MGMT_Authentication:
|
||||
case IEEE80211_STYPE_AUTH:
|
||||
|
||||
if (priv->station_state == STATION_STATE_AUTHENTICATING)
|
||||
authenticate(priv, frame_len);
|
||||
|
||||
break;
|
||||
|
||||
case C80211_SUBTYPE_MGMT_ASS_RESPONSE:
|
||||
case C80211_SUBTYPE_MGMT_REASS_RESPONSE:
|
||||
case IEEE80211_STYPE_ASSOC_RESP:
|
||||
case IEEE80211_STYPE_REASSOC_RESP:
|
||||
|
||||
if (priv->station_state == STATION_STATE_ASSOCIATING ||
|
||||
priv->station_state == STATION_STATE_REASSOCIATING)
|
||||
|
@ -3404,7 +3366,7 @@ static void atmel_management_frame(struct atmel_private *priv,
|
|||
|
||||
break;
|
||||
|
||||
case C80211_SUBTYPE_MGMT_DISASSOSIATION:
|
||||
case IEEE80211_STYPE_DISASSOC:
|
||||
if (priv->station_is_associated &&
|
||||
priv->operating_mode == IW_MODE_INFRA &&
|
||||
is_frame_from_current_bss(priv, header)) {
|
||||
|
@ -3417,7 +3379,7 @@ static void atmel_management_frame(struct atmel_private *priv,
|
|||
|
||||
break;
|
||||
|
||||
case C80211_SUBTYPE_MGMT_Deauthentication:
|
||||
case IEEE80211_STYPE_DEAUTH:
|
||||
if (priv->operating_mode == IW_MODE_INFRA &&
|
||||
is_frame_from_current_bss(priv, header)) {
|
||||
priv->station_was_associated = 0;
|
||||
|
@ -3453,12 +3415,12 @@ static void atmel_management_timer(u_long a)
|
|||
priv->AuthenticationRequestRetryCnt = 0;
|
||||
restart_search(priv);
|
||||
} else {
|
||||
int auth = C80211_MGMT_AAN_OPENSYSTEM;
|
||||
int auth = WLAN_AUTH_OPEN;
|
||||
priv->AuthenticationRequestRetryCnt++;
|
||||
priv->CurrentAuthentTransactionSeqNum = 0x0001;
|
||||
mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES);
|
||||
if (priv->wep_is_on && priv->exclude_unencrypted)
|
||||
auth = C80211_MGMT_AAN_SHAREDKEY;
|
||||
auth = WLAN_AUTH_SHARED_KEY;
|
||||
send_authentication_request(priv, auth, NULL, 0);
|
||||
}
|
||||
break;
|
||||
|
@ -3558,14 +3520,14 @@ static void atmel_command_irq(struct atmel_private *priv)
|
|||
priv->station_was_associated = priv->station_is_associated;
|
||||
atmel_enter_state(priv, STATION_STATE_READY);
|
||||
} else {
|
||||
int auth = C80211_MGMT_AAN_OPENSYSTEM;
|
||||
int auth = WLAN_AUTH_OPEN;
|
||||
priv->AuthenticationRequestRetryCnt = 0;
|
||||
atmel_enter_state(priv, STATION_STATE_AUTHENTICATING);
|
||||
|
||||
mod_timer(&priv->management_timer, jiffies + MGMT_JIFFIES);
|
||||
priv->CurrentAuthentTransactionSeqNum = 0x0001;
|
||||
if (priv->wep_is_on && priv->exclude_unencrypted)
|
||||
auth = C80211_MGMT_AAN_SHAREDKEY;
|
||||
auth = WLAN_AUTH_SHARED_KEY;
|
||||
send_authentication_request(priv, auth, NULL, 0);
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -5533,8 +5533,8 @@ static int ipw_best_network(struct ipw_priv *priv,
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (!priv->ieee->wpa_enabled && (network->wpa_ie_len > 0 ||
|
||||
network->rsn_ie_len > 0)) {
|
||||
if (priv->ieee->wpa_enabled &&
|
||||
network->wpa_ie_len == 0 && network->rsn_ie_len == 0) {
|
||||
IPW_DEBUG_ASSOC("Network '%s (" MAC_FMT ")' excluded "
|
||||
"because of WPA capability mismatch.\n",
|
||||
escape_essid(network->ssid, network->ssid_len),
|
||||
|
@ -7061,8 +7061,7 @@ static int ipw_associate_network(struct ipw_priv *priv,
|
|||
priv->assoc_request.auth_type = AUTH_SHARED_KEY;
|
||||
priv->assoc_request.auth_key = priv->ieee->sec.active_key;
|
||||
|
||||
if ((priv->ieee->sec.level == SEC_LEVEL_1) &&
|
||||
!(priv->ieee->host_encrypt || priv->ieee->host_decrypt))
|
||||
if (priv->ieee->sec.level == SEC_LEVEL_1)
|
||||
ipw_send_wep_keys(priv, DCW_WEP_KEY_SEC_TYPE_WEP);
|
||||
|
||||
} else if ((priv->capability & CAP_PRIVACY_ON) &&
|
||||
|
|
|
@ -50,7 +50,8 @@ int ieee80211_is_valid_channel(struct ieee80211_device *ieee, u8 channel)
|
|||
|
||||
/* Driver needs to initialize the geography map before using
|
||||
* these helper functions */
|
||||
BUG_ON(ieee->geo.bg_channels == 0 && ieee->geo.a_channels == 0);
|
||||
if (ieee->geo.bg_channels == 0 && ieee->geo.a_channels == 0)
|
||||
return 0;
|
||||
|
||||
if (ieee->freq_band & IEEE80211_24GHZ_BAND)
|
||||
for (i = 0; i < ieee->geo.bg_channels; i++)
|
||||
|
@ -78,7 +79,8 @@ int ieee80211_channel_to_index(struct ieee80211_device *ieee, u8 channel)
|
|||
|
||||
/* Driver needs to initialize the geography map before using
|
||||
* these helper functions */
|
||||
BUG_ON(ieee->geo.bg_channels == 0 && ieee->geo.a_channels == 0);
|
||||
if (ieee->geo.bg_channels == 0 && ieee->geo.a_channels == 0)
|
||||
return -1;
|
||||
|
||||
if (ieee->freq_band & IEEE80211_24GHZ_BAND)
|
||||
for (i = 0; i < ieee->geo.bg_channels; i++)
|
||||
|
@ -99,7 +101,8 @@ u8 ieee80211_freq_to_channel(struct ieee80211_device * ieee, u32 freq)
|
|||
|
||||
/* Driver needs to initialize the geography map before using
|
||||
* these helper functions */
|
||||
BUG_ON(ieee->geo.bg_channels == 0 && ieee->geo.a_channels == 0);
|
||||
if (ieee->geo.bg_channels == 0 && ieee->geo.a_channels == 0)
|
||||
return 0;
|
||||
|
||||
freq /= 100000;
|
||||
|
||||
|
|
|
@ -213,7 +213,7 @@ void free_ieee80211(struct net_device *dev)
|
|||
|
||||
static int debug = 0;
|
||||
u32 ieee80211_debug_level = 0;
|
||||
struct proc_dir_entry *ieee80211_proc = NULL;
|
||||
static struct proc_dir_entry *ieee80211_proc = NULL;
|
||||
|
||||
static int show_debug_level(char *page, char **start, off_t offset,
|
||||
int count, int *eof, void *data)
|
||||
|
|
|
@ -193,33 +193,21 @@ static char *ipw2100_translate_scan(struct ieee80211_device *ieee,
|
|||
if (iwe.u.data.length)
|
||||
start = iwe_stream_add_point(start, stop, &iwe, custom);
|
||||
|
||||
memset(&iwe, 0, sizeof(iwe));
|
||||
if (network->wpa_ie_len) {
|
||||
char buf[MAX_WPA_IE_LEN * 2 + 30];
|
||||
|
||||
u8 *p = buf;
|
||||
p += sprintf(p, "wpa_ie=");
|
||||
for (i = 0; i < network->wpa_ie_len; i++) {
|
||||
p += sprintf(p, "%02x", network->wpa_ie[i]);
|
||||
}
|
||||
|
||||
memset(&iwe, 0, sizeof(iwe));
|
||||
iwe.cmd = IWEVCUSTOM;
|
||||
iwe.u.data.length = strlen(buf);
|
||||
char buf[MAX_WPA_IE_LEN];
|
||||
memcpy(buf, network->wpa_ie, network->wpa_ie_len);
|
||||
iwe.cmd = IWEVGENIE;
|
||||
iwe.u.data.length = network->wpa_ie_len;
|
||||
start = iwe_stream_add_point(start, stop, &iwe, buf);
|
||||
}
|
||||
|
||||
memset(&iwe, 0, sizeof(iwe));
|
||||
if (network->rsn_ie_len) {
|
||||
char buf[MAX_WPA_IE_LEN * 2 + 30];
|
||||
|
||||
u8 *p = buf;
|
||||
p += sprintf(p, "rsn_ie=");
|
||||
for (i = 0; i < network->rsn_ie_len; i++) {
|
||||
p += sprintf(p, "%02x", network->rsn_ie[i]);
|
||||
}
|
||||
|
||||
memset(&iwe, 0, sizeof(iwe));
|
||||
iwe.cmd = IWEVCUSTOM;
|
||||
iwe.u.data.length = strlen(buf);
|
||||
char buf[MAX_WPA_IE_LEN];
|
||||
memcpy(buf, network->rsn_ie, network->rsn_ie_len);
|
||||
iwe.cmd = IWEVGENIE;
|
||||
iwe.u.data.length = network->rsn_ie_len;
|
||||
start = iwe_stream_add_point(start, stop, &iwe, buf);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue