rpms/kernel/devel config-generic, 1.118, 1.119 kernel.spec, 1.725, 1.726 linux-2.6-wireless-pending.patch, 1.57, 1.58 linux-2.6-wireless.patch, 1.43, 1.44
John W. Linville (linville)
fedora-extras-commits at redhat.com
Tue Jul 1 15:30:44 UTC 2008
Author: linville
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv15842
Modified Files:
config-generic kernel.spec linux-2.6-wireless-pending.patch
linux-2.6-wireless.patch
Log Message:
Upstream wireless fixes from 2008-06-30 ; Upstream wireless updates from 2008-06-30
Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-generic,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -r1.118 -r1.119
--- config-generic 30 Jun 2008 19:52:09 -0000 1.118
+++ config-generic 1 Jul 2008 15:29:57 -0000 1.119
@@ -1268,7 +1268,7 @@
CONFIG_MAC80211_MESH=y
CONFIG_MAC80211_LEDS=y
CONFIG_MAC80211_DEBUGFS=y
-# CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
# CONFIG_MAC80211_DEBUG is not set
CONFIG_IEEE80211=m
CONFIG_IEEE80211_DEBUG=y
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.725
retrieving revision 1.726
diff -u -r1.725 -r1.726
--- kernel.spec 1 Jul 2008 12:54:38 -0000 1.725
+++ kernel.spec 1 Jul 2008 15:29:57 -0000 1.726
@@ -1788,6 +1788,12 @@
%kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
%changelog
+* Tue Jul 01 2008 John W. Linville <linville at redhat.com>
+- Upstream wireless fixes from 2008-06-30
+ (http://marc.info/?l=linux-wireless&m=121485709702728&w=2)
+- Upstream wireless updates from 2008-06-30
+ (http://marc.info/?l=linux-wireless&m=121486432315033&w=2)
+
* Tue Jul 01 2008 Dave Jones <davej at redhat.com>
- 2.6.26-rc8-git2
linux-2.6-wireless-pending.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.57 -r 1.58 linux-2.6-wireless-pending.patch
Index: linux-2.6-wireless-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-wireless-pending.patch,v
retrieving revision 1.57
retrieving revision 1.58
diff -u -r1.57 -r1.58
--- linux-2.6-wireless-pending.patch 27 Jun 2008 18:12:26 -0000 1.57
+++ linux-2.6-wireless-pending.patch 1 Jul 2008 15:29:57 -0000 1.58
@@ -1,3 +1,721 @@
+commit edbf873cb3e8c4ef71123e83b07f39ab69971910
+Author: Larry.Finger at lwfinger.net <Larry.Finger at lwfinger.net>
+Date: Mon Jun 30 10:39:49 2008 -0500
+
+ p54: Add quality output to iwlist and iwconfig
+
+ The p54 driver family reports a quality of 0 in iwconfig and iwlist
+ output. This patch calculates a quality number as a percentage of the
+ rssi to the maximum signal of 127 reported as the maximum signal.
+
+ Signed-off-by: Larry Finger <Larry.Finger at lwfinger.net>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 22191a580c725ed5f285d0084bfa1d2f8b350a47
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date: Mon Jun 30 15:10:46 2008 +0200
+
+ mac80211: rework debug settings and make debugging safer
+
+ This patch reworks the mac80211 debug settings making them more focused
+ and adding help text for those that didn't have one. It also removes a
+ number of printks that can be triggered remotely and add no value, e.g.
+ "too short deauthentication frame received - ignoring".
+
+ If somebody really needs to debug that they should just add a monitor
+ interface and look at the frames in wireshark.
+
+ Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 3f1664e47dcd98b982f34dc39735f2b6706ad7ff
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date: Mon Jun 30 15:10:45 2008 +0200
+
+ mac80211: get rid of function pointers in RX path
+
+ This changes the RX path to no longer use function pointers for
+ RX handlers but rather invoke them directly. If debugging is
+ enabled, mark the RX handlers noinline because otherwise they
+ all get inlined into ieee80211_invoke_rx_handlers() which makes
+ it harder to see where a bug is.
+
+ Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 5807822f3d52179ec0a9091892e88dc4d4d3323b
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date: Mon Jun 30 15:10:44 2008 +0200
+
+ mac80211: get rid of function pointers in TX path
+
+ This changes the TX path to no longer use function pointers for
+ TX handlers but rather invoke them directly. If debugging is
+ enabled, mark the TX handlers noinline because otherwise they
+ all get inlined into invoke_tx_handlers() which makes it harder
+ to see where a bug is.
+
+ Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 444b6135791874d8e78ff47daab86d1b8ee4784f
+Author: Zhu Yi <yi.zhu at intel.com>
+Date: Mon Jun 30 17:23:32 2008 +0800
+
+ iwl3945: remove RFKILL_STATE_HARD_BLOCKED warnings
+
+ The patch fixes the compile warning of "enumeration value
+ âRFKILL_STATE_HARD_BLOCKEDâ not handled in switch".
+
+ Signed-off-by: Zhu Yi <yi.zhu at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit bd1092ceadee190604d8ff59faa97a974c3c1ecb
+Author: Zhu Yi <yi.zhu at intel.com>
+Date: Mon Jun 30 17:23:31 2008 +0800
+
+ iwlwifi: fix iwl4965 temperature callback calibration issue
+
+ The patch fixes the temperature calibration issue introduced by the
+ patch "iwlwifi: move RX stats to core, and move temperature to handler".
+ It also remove the second parameter "stats" since it is already copied
+ to priv->statistics.
+
+ Signed-off-by: Zhu Yi <yi.zhu at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 82c2e0895d1fa87c3206e3fe5f99dd51e2cf6371
+Author: Stefanik Gábor <netrolller.3d at gmail.com>
+Date: Mon Jun 30 17:23:30 2008 +0800
+
+ iwlwifi: enable packet injection for iwl3945
+
+ This patch enables packet injection on iwl3945 devices. Tested with
+ packetspammer and aireplay-ng.
+
+ Signed-off-by: Gábor Stefanik <netrolller.3d at gmail.com>
+ Signed-off-by: Zhu Yi <yi.zhu at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit a6ecfe5a9bd32c9426f9af801e62f21da132a2cc
+Author: Zhu Yi <yi.zhu at intel.com>
+Date: Mon Jun 30 17:23:29 2008 +0800
+
+ iwlwifi: drop skb silently for Tx request in monitor mode
+
+ This patch fixes the problem to keep mac80211 resubmitting SKBs
+ when Tx request cannot be met in monitor mode.
+
+ Signed-off-by: Zhu Yi <yi.zhu at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 6fe878497b04b9c428842ab9c89c0e2d712860ad
+Author: Rick Farrington <rickdic at hotmail.com>
+Date: Mon Jun 30 17:23:28 2008 +0800
+
+ iwlwifi: fix incorrect monitor mode operation
+
+ This patch fixes monitor mode operation for iwlwifi.
+
+ Problems addressed:
+ 1. when monitor mode was enabled, multiple, overlapped calls were being
+ made to 'iwl3945_bg_set_monitor'
+
+ 2. when monitor mode was disabled (via the configure_filter callback),
+ the driver was still enabling monitor mode
+
+ 3. when monitor mode was enabled, the selected channel was not set
+ (eg. 'iwconfig wlanx mode monitor channel n' DID NOT SET channel 'n'
+ when packet capture was subsequently enabled)
+
+ Signed-off-by: Rick Farrington <rickdic at hotmail.com>
+ Signed-off-by: Zhu Yi <yi.zhu at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 32c932be01d96abe84340b0831db949ca4713292
+Author: Rick Farrington <rickdic at hotmail.com>
+Date: Mon Jun 30 17:23:27 2008 +0800
+
+ iwlwifi: fix incorrect 5GHz rates reported in monitor mode
+
+ This patch fixes the rates reported in monitor mode operation
+ (Wireshark) for iwlwifi.
+
+ Previously, packets with rates of 6M..24M would be reported
+ incorrectly and packets with rates of 36M..54M would not passed
+ up the stack.
+
+ Signed-off-by: Rick Farrington <rickdic at hotmail.com>
+ Signed-off-by: Zhu Yi <yi.zhu at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 0a078ffa011209c307880da10917ef205b4b11f4
+Author: Tomas Winkler <tomas.winkler at intel.com>
+Date: Mon Jun 30 17:23:26 2008 +0800
+
+ iwlwifi: fix 4965 uCode load
+
+ This patch fixes uCode load in 4965 HW
+
+ Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit a9efa652cbfead13bbe200878f8a2d74f3543e1b
+Author: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Date: Mon Jun 30 17:23:25 2008 +0800
+
+ iwlwifi: clean up HW RF-kill state machine and restarts
+
+ This patch cleans up HW RF-kill state machine.
+
+ Signed-off-by: Mohamed Abbas <mohamed.abbas at intel.com>
+ Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+ Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 154b25ce9218fbe6eebacef7907fabf6d663e639
+Author: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Date: Mon Jun 30 17:23:24 2008 +0800
+
+ iwlwifi: blocking mac_start until uCode is complete
+
+ This patch makes iwl4965_mac_start block until the uCode has been
+ completely loaded.
+
+ Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+ Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ Signed-off-by: Zhu Yi <yi.zhu at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 06da0699445631e6710b1f3b2e89570325b65e7e
+Author: Ron Rindjunsky <ron.rindjunsky at intel.com>
[...17890 lines suppressed...]
+ return RX_DROP_UNUSABLE;
+
+- printk(KERN_DEBUG "%s: invalid Michael MIC in data frame from "
+- "%s\n", rx->dev->name, print_mac(mac, sa));
+-
+ mac80211_ev_michael_mic_failure(rx->dev, rx->key->conf.keyidx,
+ (void *) skb->data);
+ return RX_DROP_UNUSABLE;
+@@ -176,59 +155,58 @@ ieee80211_rx_h_michael_mic_verify(struct
skb_trim(skb, skb->len - MICHAEL_MIC_LEN);
/* update IV in key information to be able to detect replays */
@@ -72356,7 +77364,7 @@
return 0;
}
-@@ -246,28 +227,16 @@ ieee80211_tx_result
+@@ -246,28 +224,16 @@ ieee80211_tx_result
ieee80211_crypto_tkip_encrypt(struct ieee80211_tx_data *tx)
{
struct sk_buff *skb = tx->skb;
@@ -72387,7 +77395,7 @@
return TX_DROP;
}
}
-@@ -280,14 +249,12 @@ ieee80211_rx_result
+@@ -280,14 +246,12 @@ ieee80211_rx_result
ieee80211_crypto_tkip_decrypt(struct ieee80211_rx_data *rx)
{
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) rx->skb->data;
@@ -72403,7 +77411,24 @@
if ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)
return RX_CONTINUE;
-@@ -429,36 +396,41 @@ static inline int ccmp_hdr2pn(u8 *pn, u8
+@@ -315,15 +279,8 @@ ieee80211_crypto_tkip_decrypt(struct iee
+ hdr->addr1, hwaccel, rx->queue,
+ &rx->tkip_iv32,
+ &rx->tkip_iv16);
+- if (res != TKIP_DECRYPT_OK || wpa_test) {
+-#ifdef CONFIG_MAC80211_DEBUG
+- if (net_ratelimit())
+- printk(KERN_DEBUG "%s: TKIP decrypt failed for RX "
+- "frame from %s (res=%d)\n", rx->dev->name,
+- print_mac(mac, rx->sta->addr), res);
+-#endif /* CONFIG_MAC80211_DEBUG */
++ if (res != TKIP_DECRYPT_OK || wpa_test)
+ return RX_DROP_UNUSABLE;
+- }
+
+ /* Trim ICV */
+ skb_trim(skb, skb->len - TKIP_ICV_LEN);
+@@ -429,36 +386,41 @@ static inline int ccmp_hdr2pn(u8 *pn, u8
}
@@ -72460,7 +77485,7 @@
pos = skb_push(skb, CCMP_HDR_LEN);
memmove(pos, pos + CCMP_HDR_LEN, hdrlen);
-@@ -478,7 +450,7 @@ static int ccmp_encrypt_skb(struct ieee8
+@@ -478,7 +440,7 @@ static int ccmp_encrypt_skb(struct ieee8
if (key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) {
/* hwaccel - with preallocated room for CCMP header */
@@ -72469,7 +77494,7 @@
return 0;
}
-@@ -495,28 +467,16 @@ ieee80211_tx_result
+@@ -495,28 +457,16 @@ ieee80211_tx_result
ieee80211_crypto_ccmp_encrypt(struct ieee80211_tx_data *tx)
{
struct sk_buff *skb = tx->skb;
@@ -72500,7 +77525,7 @@
return TX_DROP;
}
}
-@@ -529,7 +489,6 @@ ieee80211_rx_result
+@@ -529,7 +479,6 @@ ieee80211_rx_result
ieee80211_crypto_ccmp_decrypt(struct ieee80211_rx_data *rx)
{
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) rx->skb->data;
@@ -72508,7 +77533,7 @@
int hdrlen;
struct ieee80211_key *key = rx->key;
struct sk_buff *skb = rx->skb;
-@@ -537,8 +496,7 @@ ieee80211_crypto_ccmp_decrypt(struct iee
+@@ -537,8 +486,7 @@ ieee80211_crypto_ccmp_decrypt(struct iee
int data_len;
DECLARE_MAC_BUF(mac);
@@ -72518,9 +77543,39 @@
if ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)
return RX_CONTINUE;
+@@ -554,16 +502,6 @@ ieee80211_crypto_ccmp_decrypt(struct iee
+ (void) ccmp_hdr2pn(pn, skb->data + hdrlen);
+
+ if (memcmp(pn, key->u.ccmp.rx_pn[rx->queue], CCMP_PN_LEN) <= 0) {
+-#ifdef CONFIG_MAC80211_DEBUG
+- u8 *ppn = key->u.ccmp.rx_pn[rx->queue];
+-
+- printk(KERN_DEBUG "%s: CCMP replay detected for RX frame from "
+- "%s (RX PN %02x%02x%02x%02x%02x%02x <= prev. PN "
+- "%02x%02x%02x%02x%02x%02x)\n", rx->dev->name,
+- print_mac(mac, rx->sta->addr),
+- pn[0], pn[1], pn[2], pn[3], pn[4], pn[5],
+- ppn[0], ppn[1], ppn[2], ppn[3], ppn[4], ppn[5]);
+-#endif /* CONFIG_MAC80211_DEBUG */
+ key->u.ccmp.replays++;
+ return RX_DROP_UNUSABLE;
+ }
+@@ -583,12 +521,6 @@ ieee80211_crypto_ccmp_decrypt(struct iee
+ skb->data + hdrlen + CCMP_HDR_LEN, data_len,
+ skb->data + skb->len - CCMP_MIC_LEN,
+ skb->data + hdrlen + CCMP_HDR_LEN)) {
+-#ifdef CONFIG_MAC80211_DEBUG
+- if (net_ratelimit())
+- printk(KERN_DEBUG "%s: CCMP decrypt failed "
+- "for RX frame from %s\n", rx->dev->name,
+- print_mac(mac, rx->sta->addr));
+-#endif /* CONFIG_MAC80211_DEBUG */
+ return RX_DROP_UNUSABLE;
+ }
+ }
diff -up linux-2.6.25.noarch/net/rfkill/rfkill.c.orig linux-2.6.25.noarch/net/rfkill/rfkill.c
---- linux-2.6.25.noarch/net/rfkill/rfkill.c.orig 2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/net/rfkill/rfkill.c 2008-06-27 13:46:53.000000000 -0400
+--- linux-2.6.25.noarch/net/rfkill/rfkill.c.orig 2008-07-01 10:55:42.000000000 -0400
++++ linux-2.6.25.noarch/net/rfkill/rfkill.c 2008-07-01 10:56:00.000000000 -0400
@@ -39,8 +39,56 @@ MODULE_LICENSE("GPL");
static LIST_HEAD(rfkill_list); /* list of registered rf switches */
static DEFINE_MUTEX(rfkill_mutex);
@@ -72982,8 +78037,8 @@
}
diff -up linux-2.6.25.noarch/net/rfkill/rfkill-input.c.orig linux-2.6.25.noarch/net/rfkill/rfkill-input.c
---- linux-2.6.25.noarch/net/rfkill/rfkill-input.c.orig 2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/net/rfkill/rfkill-input.c 2008-06-27 13:46:53.000000000 -0400
+--- linux-2.6.25.noarch/net/rfkill/rfkill-input.c.orig 2008-07-01 10:55:42.000000000 -0400
++++ linux-2.6.25.noarch/net/rfkill/rfkill-input.c 2008-07-01 10:56:00.000000000 -0400
@@ -30,39 +30,62 @@ struct rfkill_task {
spinlock_t lock; /* for accessing last and desired state */
unsigned long last; /* last schedule */
@@ -73141,8 +78196,8 @@
};
diff -up linux-2.6.25.noarch/net/rfkill/rfkill-input.h.orig linux-2.6.25.noarch/net/rfkill/rfkill-input.h
---- linux-2.6.25.noarch/net/rfkill/rfkill-input.h.orig 2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/net/rfkill/rfkill-input.h 2008-06-27 13:46:53.000000000 -0400
+--- linux-2.6.25.noarch/net/rfkill/rfkill-input.h.orig 2008-07-01 10:55:42.000000000 -0400
++++ linux-2.6.25.noarch/net/rfkill/rfkill-input.h 2008-07-01 10:56:00.000000000 -0400
@@ -12,5 +12,6 @@
#define __RFKILL_INPUT_H
@@ -73151,8 +78206,8 @@
#endif /* __RFKILL_INPUT_H */
diff -up linux-2.6.25.noarch/net/socket.c.orig linux-2.6.25.noarch/net/socket.c
---- linux-2.6.25.noarch/net/socket.c.orig 2008-06-25 15:43:38.000000000 -0400
-+++ linux-2.6.25.noarch/net/socket.c 2008-06-27 13:46:53.000000000 -0400
+--- linux-2.6.25.noarch/net/socket.c.orig 2008-07-01 10:55:42.000000000 -0400
++++ linux-2.6.25.noarch/net/socket.c 2008-07-01 10:56:00.000000000 -0400
@@ -90,6 +90,7 @@
#include <asm/unistd.h>
@@ -73182,8 +78237,8 @@
}
#endif
diff -up linux-2.6.25.noarch/net/wireless/core.c.orig linux-2.6.25.noarch/net/wireless/core.c
---- linux-2.6.25.noarch/net/wireless/core.c.orig 2008-06-27 13:46:37.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/core.c 2008-06-27 13:46:43.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/core.c.orig 2008-07-01 10:55:42.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/core.c 2008-07-01 10:56:00.000000000 -0400
@@ -143,8 +143,11 @@ void cfg80211_put_dev(struct cfg80211_re
int cfg80211_dev_rename(struct cfg80211_registered_device *rdev,
char *newname)
@@ -73247,8 +78302,8 @@
/* exported functions */
diff -up linux-2.6.25.noarch/net/wireless/radiotap.c.orig linux-2.6.25.noarch/net/wireless/radiotap.c
---- linux-2.6.25.noarch/net/wireless/radiotap.c.orig 2008-06-27 13:46:37.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/radiotap.c 2008-06-27 13:46:43.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/radiotap.c.orig 2008-07-01 10:55:42.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/radiotap.c 2008-07-01 10:56:00.000000000 -0400
@@ -59,23 +59,21 @@ int ieee80211_radiotap_iterator_init(
return -EINVAL;
@@ -73290,8 +78345,8 @@
} else
/* no more bitmaps: end */
diff -up linux-2.6.25.noarch/net/wireless/wext.c.orig linux-2.6.25.noarch/net/wireless/wext.c
---- linux-2.6.25.noarch/net/wireless/wext.c.orig 2008-06-25 15:43:38.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/wext.c 2008-06-27 13:46:53.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/wext.c.orig 2008-07-01 10:55:42.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/wext.c 2008-07-01 10:56:00.000000000 -0400
@@ -500,7 +500,7 @@ static int call_commit_handler(struct ne
/*
* Calculate size of private arguments
linux-2.6-wireless.patch:
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-wireless.patch,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- linux-2.6-wireless.patch 27 Jun 2008 19:59:42 -0000 1.43
+++ linux-2.6-wireless.patch 1 Jul 2008 15:29:57 -0000 1.44
@@ -1,3 +1,41 @@
+commit 23976efedd5ecb420b87455787c537eb4aed1981
+Author: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Date: Sat Jun 28 02:50:13 2008 +0300
+
+ mac80211: don't accept WEP keys other than WEP40 and WEP104
+
+ This patch makes mac80211 refuse a WEP key whose length is not WEP40 nor
+ WEP104.
+
+ Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+ Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 1bcca3c463e4930cef9986b05165bb0b3eb46f63
+Author: Pavel Roskin <proski at gnu.org>
+Date: Fri Jun 27 16:19:58 2008 -0400
+
+ hostap: fix sparse warnings
+
+ Rewrite AID calculation in handle_pspoll() to avoid truncating bits.
+ Make hostap_80211_header_parse() static, don't export it. Avoid
+ shadowing variables.
+
+ Signed-off-by: Pavel Roskin <proski at gnu.org>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 15ea0ebc5b7305cc75189cb6b7924d0db5278e0c
+Author: Pavel Roskin <proski at gnu.org>
+Date: Fri Jun 27 16:19:52 2008 -0400
+
+ hostap: don't report useless WDS frames by default
+
+ DEBUG_EXTRA is reported to the kernel log by default, but DEBUG_EXTRA2
+ is not. Unrelated WDS frames pollute the log unnecessarily.
+
+ Signed-off-by: Pavel Roskin <proski at gnu.org>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
commit 00eb7fe77eb455f807c396f9917f0f623d4c84bb
Author: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
Date: Thu Jun 26 12:13:46 2008 +0300
@@ -153,8 +191,8 @@
Signed-off-by: John W. Linville <linville at tuxdriver.com>
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c.orig 2008-06-27 15:43:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c 2008-06-27 15:44:28.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c 2008-07-01 10:48:12.000000000 -0400
@@ -72,6 +72,9 @@ static void b43_led_brightness_set(struc
struct b43_wldev *dev = led->dev;
bool radio_enabled;
@@ -166,8 +204,8 @@
* but we want to avoid the locking overhead and we don't care
* whether the LED has the wrong state for a second. */
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig 2008-06-27 15:43:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c 2008-06-27 15:44:28.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c 2008-07-01 10:48:12.000000000 -0400
@@ -876,6 +876,7 @@ struct b43legacy_dmaring *b43legacy_setu
if (!ring)
goto out;
@@ -185,8 +223,8 @@
ring->mmio_base = b43legacy_dmacontroller_base(type, controller_index);
ring->index = controller_index;
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig 2008-06-27 15:43:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c 2008-06-27 15:44:28.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c 2008-07-01 10:48:12.000000000 -0400
@@ -2378,8 +2378,10 @@ static int b43legacy_op_tx(struct ieee80
} else
err = b43legacy_dma_tx(dev, skb, ctl);
@@ -201,8 +239,8 @@
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/main.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig 2008-06-27 15:43:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c 2008-06-27 15:44:28.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c 2008-07-01 10:48:12.000000000 -0400
@@ -2883,12 +2883,11 @@ static int b43_op_tx(struct ieee80211_hw
if (unlikely(skb->len < 2 + 2 + 6)) {
@@ -232,9 +270,138 @@
return NETDEV_TX_OK;
}
+diff -up linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_80211_rx.c.orig linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_80211_rx.c
+--- linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_80211_rx.c.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_80211_rx.c 2008-07-01 10:48:57.000000000 -0400
+@@ -64,7 +64,7 @@ int prism2_rx_80211(struct net_device *d
+ int hdrlen, phdrlen, head_need, tail_need;
+ u16 fc;
+ int prism_header, ret;
+- struct ieee80211_hdr_4addr *hdr;
++ struct ieee80211_hdr_4addr *fhdr;
+
+ iface = netdev_priv(dev);
+ local = iface->local;
+@@ -83,8 +83,8 @@ int prism2_rx_80211(struct net_device *d
+ phdrlen = 0;
+ }
+
+- hdr = (struct ieee80211_hdr_4addr *) skb->data;
+- fc = le16_to_cpu(hdr->frame_ctl);
++ fhdr = (struct ieee80211_hdr_4addr *) skb->data;
++ fc = le16_to_cpu(fhdr->frame_ctl);
+
+ if (type == PRISM2_RX_MGMT && (fc & IEEE80211_FCTL_VERS)) {
+ printk(KERN_DEBUG "%s: dropped management frame with header "
+@@ -551,7 +551,7 @@ hostap_rx_frame_wds(local_info_t *local,
+ hdr->addr1[2] != 0xff || hdr->addr1[3] != 0xff ||
+ hdr->addr1[4] != 0xff || hdr->addr1[5] != 0xff)) {
+ /* RA (or BSSID) is not ours - drop */
+- PDEBUG(DEBUG_EXTRA, "%s: received WDS frame with "
++ PDEBUG(DEBUG_EXTRA2, "%s: received WDS frame with "
+ "not own or broadcast %s=%s\n",
+ local->dev->name,
+ fc & IEEE80211_FCTL_FROMDS ? "RA" : "BSSID",
+diff -up linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_ap.c.orig linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_ap.c
+--- linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_ap.c.orig 2008-07-01 10:47:45.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_ap.c 2008-07-01 10:48:57.000000000 -0400
+@@ -1930,7 +1930,7 @@ static void handle_pspoll(local_info_t *
+ PDEBUG(DEBUG_PS, " PSPOLL and AID[15:14] not set\n");
+ return;
+ }
+- aid &= ~BIT(15) & ~BIT(14);
++ aid &= ~(BIT(15) | BIT(14));
+ if (aid == 0 || aid > MAX_AID_TABLE_SIZE) {
+ PDEBUG(DEBUG_PS, " invalid aid=%d\n", aid);
+ return;
+diff -up linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_cs.c.orig linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_cs.c
+--- linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_cs.c.orig 2008-07-01 10:34:15.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_cs.c 2008-07-01 10:48:57.000000000 -0400
+@@ -533,10 +533,10 @@ static void prism2_detach(struct pcmcia_
+ do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
+
+ #define CFG_CHECK2(fn, retf) \
+-do { int ret = (retf); \
+-if (ret != 0) { \
+- PDEBUG(DEBUG_EXTRA, "CardServices(" #fn ") returned %d\n", ret); \
+- cs_error(link, fn, ret); \
++do { int _ret = (retf); \
++if (_ret != 0) { \
++ PDEBUG(DEBUG_EXTRA, "CardServices(" #fn ") returned %d\n", _ret); \
++ cs_error(link, fn, _ret); \
+ goto next_entry; \
+ } \
+ } while (0)
+diff -up linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_hw.c.orig linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_hw.c
+--- linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_hw.c.orig 2008-07-01 10:34:15.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_hw.c 2008-07-01 10:48:57.000000000 -0400
+@@ -2835,7 +2835,7 @@ static void hostap_passive_scan(unsigned
+ {
+ local_info_t *local = (local_info_t *) data;
+ struct net_device *dev = local->dev;
+- u16 channel;
++ u16 chan;
+
+ if (local->passive_scan_interval <= 0)
+ return;
+@@ -2872,11 +2872,11 @@ static void hostap_passive_scan(unsigned
+
+ printk(KERN_DEBUG "%s: passive scan channel %d\n",
+ dev->name, local->passive_scan_channel);
+- channel = local->passive_scan_channel;
++ chan = local->passive_scan_channel;
+ local->passive_scan_state = PASSIVE_SCAN_WAIT;
+ local->passive_scan_timer.expires = jiffies + HZ / 10;
+ } else {
+- channel = local->channel;
++ chan = local->channel;
+ local->passive_scan_state = PASSIVE_SCAN_LISTEN;
+ local->passive_scan_timer.expires = jiffies +
+ local->passive_scan_interval * HZ;
+@@ -2884,9 +2884,9 @@ static void hostap_passive_scan(unsigned
+
+ if (hfa384x_cmd_callback(dev, HFA384X_CMDCODE_TEST |
+ (HFA384X_TEST_CHANGE_CHANNEL << 8),
+- channel, NULL, 0))
++ chan, NULL, 0))
+ printk(KERN_ERR "%s: passive scan channel set %d "
+- "failed\n", dev->name, channel);
++ "failed\n", dev->name, chan);
+
+ add_timer(&local->passive_scan_timer);
+ }
+diff -up linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_main.c.orig linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_main.c
+--- linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_main.c.orig 2008-07-01 10:34:15.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_main.c 2008-07-01 10:48:57.000000000 -0400
+@@ -594,7 +594,8 @@ void hostap_dump_tx_header(const char *n
+ }
+
+
+-int hostap_80211_header_parse(const struct sk_buff *skb, unsigned char *haddr)
++static int hostap_80211_header_parse(const struct sk_buff *skb,
++ unsigned char *haddr)
+ {
+ struct hostap_interface *iface = netdev_priv(skb->dev);
+ local_info_t *local = iface->local;
+@@ -857,7 +858,6 @@ const struct header_ops hostap_80211_ops
+ .rebuild = eth_rebuild_header,
+ .cache = eth_header_cache,
+ .cache_update = eth_header_cache_update,
+-
+ .parse = hostap_80211_header_parse,
+ };
+ EXPORT_SYMBOL(hostap_80211_ops);
+@@ -1150,7 +1150,6 @@ EXPORT_SYMBOL(hostap_set_roaming);
+ EXPORT_SYMBOL(hostap_set_auth_algs);
+ EXPORT_SYMBOL(hostap_dump_rx_header);
+ EXPORT_SYMBOL(hostap_dump_tx_header);
+-EXPORT_SYMBOL(hostap_80211_header_parse);
+ EXPORT_SYMBOL(hostap_80211_get_hdrlen);
+ EXPORT_SYMBOL(hostap_get_stats);
+ EXPORT_SYMBOL(hostap_setup_dev);
diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c
---- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2008-06-27 15:43:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-06-27 15:44:28.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-07-01 10:48:12.000000000 -0400
@@ -2227,7 +2227,10 @@ static int iwl3945_scan_initiate(struct
}
@@ -314,8 +481,8 @@
IWL_DEBUG_MAC80211("leave - invalid channel\n");
spin_unlock_irqrestore(&priv->lock, flags);
diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c
---- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig 2008-06-27 15:43:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2008-06-27 15:44:28.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2008-07-01 10:48:12.000000000 -0400
@@ -1774,7 +1774,10 @@ static int iwl4965_scan_initiate(struct
}
@@ -415,8 +582,8 @@
goto done;
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c.orig linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c
---- linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c.orig 2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c 2008-06-27 15:45:09.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c 2008-07-01 10:48:12.000000000 -0400
@@ -290,7 +290,7 @@ islpci_monitor_rx(islpci_private *priv,
avs->version = cpu_to_be32(P80211CAPTURE_VERSION);
@@ -427,8 +594,8 @@
avs->phytype = cpu_to_be32(6); /*OFDM: 6 for (g), 8 for (a) */
avs->channel = cpu_to_be32(channel_of_freq(freq));
diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig 2008-06-27 15:43:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c 2008-06-27 15:44:28.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c 2008-07-01 10:48:12.000000000 -0400
@@ -138,11 +138,8 @@ static void rt2500usb_bbp_write(struct r
* Wait until the BBP becomes ready.
*/
@@ -499,8 +666,8 @@
static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev,
diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig 2008-06-27 15:43:40.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c 2008-06-27 15:45:09.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c 2008-07-01 10:48:12.000000000 -0400
@@ -75,7 +75,7 @@ static void rt2x00lib_start_link_tuner(s
rt2x00lib_reset_link_tuner(rt2x00dev);
@@ -596,8 +763,8 @@
*/
rt2x00lib_remove_hw(rt2x00dev);
diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig 2008-06-27 15:43:40.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h 2008-06-27 15:45:09.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h 2008-07-01 10:48:12.000000000 -0400
@@ -821,6 +821,7 @@ struct rt2x00_dev {
/*
* Scheduled work.
@@ -607,8 +774,8 @@
struct work_struct filter_work;
diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig 2008-06-27 15:43:40.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c 2008-06-27 15:45:09.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c 2008-07-01 10:48:12.000000000 -0400
@@ -428,7 +428,7 @@ void rt2x00mac_configure_filter(struct i
if (!test_bit(DRIVER_REQUIRE_SCHEDULED, &rt2x00dev->flags))
rt2x00dev->ops->lib->config_filter(rt2x00dev, *total_flags);
@@ -628,8 +795,8 @@
spin_unlock(&intf->lock);
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig 2008-06-27 15:43:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c 2008-06-27 15:44:28.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c 2008-07-01 10:48:12.000000000 -0400
@@ -134,11 +134,8 @@ static void rt73usb_bbp_write(struct rt2
* Wait until the BBP becomes ready.
*/
@@ -697,9 +864,28 @@
}
static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev,
+diff -up linux-2.6.25.noarch/include/net/mac80211.h.orig linux-2.6.25.noarch/include/net/mac80211.h
+--- linux-2.6.25.noarch/include/net/mac80211.h.orig 2008-07-01 10:47:45.000000000 -0400
++++ linux-2.6.25.noarch/include/net/mac80211.h 2008-07-01 10:48:57.000000000 -0400
+@@ -595,6 +595,15 @@ enum ieee80211_key_alg {
+ ALG_CCMP,
+ };
+
++/**
++ * enum ieee80211_key_len - key length
++ * @WEP40: WEP 5 byte long key
++ * @WEP104: WEP 13 byte long key
++ */
++enum ieee80211_key_len {
++ LEN_WEP40 = 5,
++ LEN_WEP104 = 13,
++};
+
+ /**
+ * enum ieee80211_key_flags - key flags
diff -up linux-2.6.25.noarch/net/mac80211/key.c.orig linux-2.6.25.noarch/net/mac80211/key.c
---- linux-2.6.25.noarch/net/mac80211/key.c.orig 2008-06-27 15:43:41.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/key.c 2008-06-27 15:45:09.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/key.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/key.c 2008-07-01 10:48:12.000000000 -0400
@@ -380,6 +380,15 @@ void ieee80211_key_free(struct ieee80211
if (!key)
return;
@@ -716,9 +902,26 @@
spin_lock_irqsave(&key->sdata->local->key_lock, flags);
__ieee80211_key_free(key);
spin_unlock_irqrestore(&key->sdata->local->key_lock, flags);
+diff -up linux-2.6.25.noarch/net/mac80211/wext.c.orig linux-2.6.25.noarch/net/mac80211/wext.c
+--- linux-2.6.25.noarch/net/mac80211/wext.c.orig 2008-07-01 10:47:46.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wext.c 2008-07-01 10:48:57.000000000 -0400
+@@ -95,6 +95,13 @@ static int ieee80211_set_encryption(stru
+ }
+ }
+
++ if (alg == ALG_WEP &&
++ key_len != LEN_WEP40 && key_len != LEN_WEP104) {
++ ieee80211_key_free(key);
++ err = -EINVAL;
++ goto out_unlock;
++ }
++
+ ieee80211_key_link(key, sdata, sta);
+
+ if (set_tx_key || (!sta && !sdata->default_key && key))
diff -up linux-2.6.25.noarch/net/wireless/reg.c.orig linux-2.6.25.noarch/net/wireless/reg.c
---- linux-2.6.25.noarch/net/wireless/reg.c.orig 2008-06-27 15:43:49.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/reg.c 2008-06-27 15:44:28.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/reg.c.orig 2008-07-01 10:47:49.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/reg.c 2008-07-01 10:48:12.000000000 -0400
@@ -80,6 +80,23 @@ static const struct ieee80211_channel_ra
IEEE80211_CHAN_RADAR),
};
More information about the fedora-extras-commits
mailing list