The following changes since commit 5b69e69d4e6386bcb6592c75af897e5e79641602:
  John W. Linville:
        Merge branch 'upstream-fixes'

are found in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git 
upstream

Andreas Happe:
      ipw2200: add monitor and qos entries to Kconfig

Dan Williams:
      wireless/atmel: convert constants to ieee80211 layer equivalents
      wireless/airo: fix setting TX key index plus key in ENCODEEXT

Jan Niehusmann:
      let IPW2{1,2}00 select IEEE80211

Johannes Berg:
      ieee80211: fix sparse warning about missing "static"

Jon Mason:
      trivial: fix spelling errors in Kconfigs

Stefan Rompf:
      ipw2200: Fix WPA network selection problem

Zhu Yi:
      ieee80211: Use IWEVGENIE to set WPA IE
      ipw2200: Fix software crypto shared WEP authentication problem

 drivers/net/Kconfig              |   18 +++---
 drivers/net/arcnet/Kconfig       |    4 +
 drivers/net/irda/Kconfig         |    4 +
 drivers/net/wan/Kconfig          |    2 -
 drivers/net/wireless/Kconfig     |   25 +++++++--
 drivers/net/wireless/airo.c      |   11 +++-
 drivers/net/wireless/atmel.c     |  110 ++++++++++++--------------------------
 drivers/net/wireless/ipw2200.c   |    7 +-
 net/ieee80211/ieee80211_module.c |    2 -
 net/ieee80211/ieee80211_wx.c     |   32 +++--------
 10 files changed, 92 insertions(+), 123 deletions(-)

diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 47c72a6..2610ced 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -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
@@ -2514,7 +2514,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.
 
@@ -2702,8 +2702,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.
diff --git a/drivers/net/arcnet/Kconfig b/drivers/net/arcnet/Kconfig
index 948de25..7284cca 100644
--- a/drivers/net/arcnet/Kconfig
+++ b/drivers/net/arcnet/Kconfig
@@ -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.
diff --git a/drivers/net/irda/Kconfig b/drivers/net/irda/Kconfig
index 7a08134..c81fe1c 100644
--- a/drivers/net/irda/Kconfig
+++ b/drivers/net/irda/Kconfig
@@ -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
diff --git a/drivers/net/wan/Kconfig b/drivers/net/wan/Kconfig
index 18c27e1..883cf7d 100644
--- a/drivers/net/wan/Kconfig
+++ b/drivers/net/wan/Kconfig
@@ -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
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index a1ede41..5b0a19a 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -136,8 +136,9 @@ comment "Wireless 802.11b ISA/PCI cards 
 
 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.
 
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index ef6495b..b96b6db 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -6266,7 +6266,7 @@ static int airo_set_encodeext(struct net
        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 +6289,15 @@ static int airo_set_encodeext(struct net
        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) {
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c
index dfc2401..87afa68 100644
--- a/drivers/net/wireless/atmel.c
+++ b/drivers/net/wireless/atmel.c
@@ -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 a
                                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(str
        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(str
                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_
                           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_
 
        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_pr
        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_pr
                }
        }
 
-       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_priva
        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_priva
                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_priva
                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(struc
 
        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(struc
                                               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(struc
 
                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(struc
 
                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_lon
                        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 atm
                                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;
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c
index 0702f0e..30b13a6 100644
--- a/drivers/net/wireless/ipw2200.c
+++ b/drivers/net/wireless/ipw2200.c
@@ -5533,8 +5533,8 @@ static int ipw_best_network(struct ipw_p
                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 
                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) &&
diff --git a/net/ieee80211/ieee80211_module.c b/net/ieee80211/ieee80211_module.c
index 5f67c68..2cb84d8 100644
--- a/net/ieee80211/ieee80211_module.c
+++ b/net/ieee80211/ieee80211_module.c
@@ -213,7 +213,7 @@ void free_ieee80211(struct net_device *d
 
 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)
diff --git a/net/ieee80211/ieee80211_wx.c b/net/ieee80211/ieee80211_wx.c
index e8c55a4..af7f9bb 100644
--- a/net/ieee80211/ieee80211_wx.c
+++ b/net/ieee80211/ieee80211_wx.c
@@ -193,33 +193,21 @@ static char *ipw2100_translate_scan(stru
        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);
        }
 
-- 
John W. Linville
[EMAIL PROTECTED]
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to