rpms/kernel/devel kernel.spec, 1.715, 1.716 linux-2.6-wireless-pending.patch, 1.55, 1.56 linux-2.6-wireless.patch, 1.41, 1.42
John W. Linville (linville)
fedora-extras-commits at redhat.com
Wed Jun 25 20:03:47 UTC 2008
Author: linville
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv21696
Modified Files:
kernel.spec linux-2.6-wireless-pending.patch
linux-2.6-wireless.patch
Log Message:
Upstream wireless fixes from 2008-06-25
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.715
retrieving revision 1.716
diff -u -r1.715 -r1.716
--- kernel.spec 25 Jun 2008 19:58:31 -0000 1.715
+++ kernel.spec 25 Jun 2008 20:02:57 -0000 1.716
@@ -1139,7 +1139,7 @@
ApplyPatch linux-2.6-selinux-ecryptfs-support.patch
# wireless patches headed for 2.6.26
-#ApplyPatch linux-2.6-wireless.patch
+ApplyPatch linux-2.6-wireless.patch
# wireless patches headed for 2.6.27
ApplyPatch linux-2.6-wireless-pending.patch
@@ -1784,6 +1784,10 @@
%kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
%changelog
+* Wed Jun 25 2008 John W. Linville <linville at redhat.com>
+- Upstream wireless fixes from 2008-06-25
+ (http://marc.info/?l=linux-wireless&m=121440912502527&w=2)
+
* Wed Jun 25 2008 Dave Jones <davej at redhat.com>
- Reenable a few ppc32 modules.
linux-2.6-wireless-pending.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.55 -r 1.56 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.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- linux-2.6-wireless-pending.patch 24 Jun 2008 18:30:43 -0000 1.55
+++ linux-2.6-wireless-pending.patch 25 Jun 2008 20:02:57 -0000 1.56
@@ -4861,8 +4861,8 @@
Signed-off-by: John W. Linville <linville at tuxdriver.com>
diff -up /dev/null linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/hostapd.conf
---- /dev/null 2008-06-24 08:03:09.439004351 -0400
-+++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/hostapd.conf 2008-06-24 14:05:32.000000000 -0400
+--- /dev/null 2008-06-25 08:17:03.992002591 -0400
++++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/hostapd.conf 2008-06-25 15:51:33.000000000 -0400
@@ -0,0 +1,11 @@
+interface=wlan0
+driver=nl80211
@@ -4876,8 +4876,8 @@
+wpa_pairwise=CCMP
+wpa_passphrase=12345678
diff -up /dev/null linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/README
---- /dev/null 2008-06-24 08:03:09.439004351 -0400
-+++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/README 2008-06-24 14:05:32.000000000 -0400
+--- /dev/null 2008-06-25 08:17:03.992002591 -0400
++++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/README 2008-06-25 15:51:33.000000000 -0400
@@ -0,0 +1,67 @@
+mac80211_hwsim - software simulator of 802.11 radio(s) for mac80211
+Copyright (c) 2008, Jouni Malinen <j at w1.fi>
@@ -4947,8 +4947,8 @@
+# Run wpa_supplicant (station) for wlan1
+wpa_supplicant -Dwext -iwlan1 -c wpa_supplicant.conf
diff -up /dev/null linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/wpa_supplicant.conf
---- /dev/null 2008-06-24 08:03:09.439004351 -0400
-+++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/wpa_supplicant.conf 2008-06-24 14:05:32.000000000 -0400
+--- /dev/null 2008-06-25 08:17:03.992002591 -0400
++++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/wpa_supplicant.conf 2008-06-25 15:51:33.000000000 -0400
@@ -0,0 +1,10 @@
+ctrl_interface=/var/run/wpa_supplicant
+
@@ -4961,8 +4961,8 @@
+ group=CCMP
+}
diff -up linux-2.6.25.noarch/drivers/net/Kconfig.orig linux-2.6.25.noarch/drivers/net/Kconfig
---- linux-2.6.25.noarch/drivers/net/Kconfig.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/Kconfig 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/Kconfig.orig 2008-06-25 15:43:35.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/Kconfig 2008-06-25 15:51:33.000000000 -0400
@@ -2283,6 +2283,19 @@ config GELIC_WIRELESS
the driver automatically distinguishes the models, you can
safely enable this option even if you have a wireless-less model.
@@ -4984,8 +4984,8 @@
tristate "Gianfar Ethernet"
depends on FSL_SOC
diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig 2008-06-25 15:43:35.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c 2008-06-25 15:51:33.000000000 -0400
@@ -110,7 +110,7 @@ static void gelic_card_get_ether_port_st
void gelic_card_up(struct gelic_card *card)
{
@@ -5032,8 +5032,8 @@
return card;
diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig 2008-06-25 15:43:35.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h 2008-06-25 15:51:33.000000000 -0400
@@ -298,7 +298,7 @@ struct gelic_card {
wait_queue_head_t waitq;
@@ -5044,8 +5044,8 @@
u64 ether_port_status;
diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig 2008-06-25 15:43:35.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c 2008-06-25 15:51:33.000000000 -0400
@@ -45,7 +45,8 @@
#include "ps3_gelic_wireless.h"
@@ -5588,8 +5588,8 @@
destroy_workqueue(wl->eurus_cmd_queue);
destroy_workqueue(wl->event_queue);
diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h 2008-06-25 15:51:33.000000000 -0400
@@ -241,7 +241,7 @@ enum gelic_wl_assoc_state {
#define GELIC_WEP_KEYS 4
struct gelic_wl_info {
@@ -5619,8 +5619,8 @@
struct iw_statistics iwstat;
};
diff -up linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig linux-2.6.25.noarch/drivers/net/wireless/adm8211.c
---- linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig 2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c 2008-06-25 15:51:33.000000000 -0400
@@ -306,11 +306,10 @@ static int adm8211_get_tx_stats(struct i
struct ieee80211_tx_queue_stats *stats)
{
@@ -5769,8 +5769,8 @@
return 0;
diff -up linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig linux-2.6.25.noarch/drivers/net/wireless/adm8211.h
---- linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.h 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig 2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.h 2008-06-25 15:51:33.000000000 -0400
@@ -443,7 +443,6 @@ struct adm8211_rx_ring_info {
struct adm8211_tx_ring_info {
struct sk_buff *skb;
@@ -5780,8 +5780,8 @@
};
diff -up linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig linux-2.6.25.noarch/drivers/net/wireless/airo.c
---- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/airo.c 2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig 2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/airo.c 2008-06-25 15:51:33.000000000 -0400
@@ -1148,7 +1148,6 @@ static u8 airo_dbm_to_pct (tdsRssiEntry
static void airo_networks_free(struct airo_info *ai);
@@ -5976,8 +5976,8 @@
/*
diff -up linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig linux-2.6.25.noarch/drivers/net/wireless/arlan.h
---- linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/arlan.h 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/arlan.h 2008-06-25 15:51:33.000000000 -0400
@@ -330,7 +330,6 @@ struct TxParam
#define TX_RING_SIZE 2
/* Information that need to be kept for each board. */
@@ -5987,8 +5987,8 @@
struct arlan_shmem * conf;
diff -up linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c
---- linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c 2008-06-25 15:51:33.000000000 -0400
@@ -125,7 +125,7 @@ static inline int arlan_drop_tx(struct n
{
struct arlan_private *priv = netdev_priv(dev);
@@ -6073,8 +6073,8 @@
diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig 2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c 2008-06-25 15:51:33.000000000 -0400
@@ -167,8 +167,7 @@ static struct pci_driver ath5k_pci_drive
/*
* Prototypes - MAC 802.11 stack related functions
@@ -6364,8 +6364,8 @@
sc->bbuf->skb = NULL;
else
diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig 2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h 2008-06-25 15:51:33.000000000 -0400
@@ -60,7 +60,6 @@ struct ath5k_buf {
dma_addr_t daddr; /* physical addr of desc */
struct sk_buff *skb; /* skbuff for buf */
@@ -6385,8 +6385,8 @@
struct ieee80211_hw *hw; /* IEEE 802.11 common */
struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
diff -up linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig linux-2.6.25.noarch/drivers/net/wireless/atmel.c
---- linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/atmel.c 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig 2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/atmel.c 2008-06-25 15:51:33.000000000 -0400
@@ -433,7 +433,6 @@ struct atmel_private {
struct net_device *dev;
struct device *sys_dev;
@@ -6566,8 +6566,8 @@
dev->do_ioctl = atmel_ioctl;
dev->irq = irq;
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h
---- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h 2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig 2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h 2008-06-25 15:51:33.000000000 -0400
@@ -410,8 +410,7 @@ enum {
#define B43_IRQ_TIMEOUT 0x80000000
@@ -6651,8 +6651,8 @@
#define INT_TO_Q52(i) ((i) << 2)
/* Convert a Q5.2 value to an integer (precision loss!) */
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c.orig 2008-06-24 14:05:07.000000000 -0400
[...4251 lines suppressed...]
---- linux-2.6.25.noarch/net/mac80211/rx.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/rx.c 2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/rx.c.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/rx.c 2008-06-25 15:51:34.000000000 -0400
@@ -67,16 +67,141 @@ static inline int should_drop_frame(stru
return 1;
if (unlikely(skb->len < 16 + present_fcs_len + radiotap_len))
@@ -58585,8 +58600,8 @@
rcu_read_unlock();
}
diff -up linux-2.6.25.noarch/net/mac80211/sta_info.c.orig linux-2.6.25.noarch/net/mac80211/sta_info.c
---- linux-2.6.25.noarch/net/mac80211/sta_info.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/sta_info.c 2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/sta_info.c.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/sta_info.c 2008-06-25 15:51:34.000000000 -0400
@@ -202,14 +202,12 @@ void sta_info_destroy(struct sta_info *s
dev_kfree_skb_any(skb);
@@ -58673,8 +58688,8 @@
diff -up linux-2.6.25.noarch/net/mac80211/sta_info.h.orig linux-2.6.25.noarch/net/mac80211/sta_info.h
---- linux-2.6.25.noarch/net/mac80211/sta_info.h.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/sta_info.h 2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/sta_info.h.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/sta_info.h 2008-06-25 15:51:34.000000000 -0400
@@ -32,7 +32,7 @@
* @WLAN_STA_WDS: Station is one of our WDS peers.
* @WLAN_STA_PSPOLL: Station has just PS-polled us.
@@ -58834,8 +58849,8 @@
/* Maximum number of concurrently registered stations */
#define MAX_STA_COUNT 2007
diff -up linux-2.6.25.noarch/net/mac80211/tkip.c.orig linux-2.6.25.noarch/net/mac80211/tkip.c
---- linux-2.6.25.noarch/net/mac80211/tkip.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tkip.c 2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tkip.c.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tkip.c 2008-06-25 15:51:34.000000000 -0400
@@ -6,25 +6,23 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
@@ -59251,8 +59266,8 @@
-
-
diff -up linux-2.6.25.noarch/net/mac80211/tkip.h.orig linux-2.6.25.noarch/net/mac80211/tkip.h
---- linux-2.6.25.noarch/net/mac80211/tkip.h.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tkip.h 2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tkip.h.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tkip.h 2008-06-25 15:51:34.000000000 -0400
@@ -13,12 +13,8 @@
#include <linux/crypto.h>
#include "key.h"
@@ -59269,8 +59284,8 @@
struct ieee80211_key *key,
u8 *pos, size_t payload_len, u8 *ta);
diff -up linux-2.6.25.noarch/net/mac80211/tx.c.orig linux-2.6.25.noarch/net/mac80211/tx.c
---- linux-2.6.25.noarch/net/mac80211/tx.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tx.c 2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tx.c.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tx.c 2008-06-25 15:51:34.000000000 -0400
@@ -91,11 +91,12 @@ static u16 ieee80211_duration(struct iee
int next_frag_len)
{
@@ -60680,8 +60695,8 @@
return skb;
diff -up linux-2.6.25.noarch/net/mac80211/util.c.orig linux-2.6.25.noarch/net/mac80211/util.c
---- linux-2.6.25.noarch/net/mac80211/util.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/util.c 2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/util.c.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/util.c 2008-06-25 15:51:34.000000000 -0400
@@ -45,38 +45,37 @@ const unsigned char bridge_tunnel_header
u8 *ieee80211_get_bssid(struct ieee80211_hdr *hdr, size_t len,
enum ieee80211_if_types type)
@@ -60933,8 +60948,8 @@
}
EXPORT_SYMBOL(ieee80211_wake_queues);
diff -up linux-2.6.25.noarch/net/mac80211/wep.c.orig linux-2.6.25.noarch/net/mac80211/wep.c
---- linux-2.6.25.noarch/net/mac80211/wep.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wep.c 2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wep.c.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wep.c 2008-06-25 15:51:34.000000000 -0400
@@ -93,13 +93,9 @@ static u8 *ieee80211_wep_add_iv(struct i
fc |= IEEE80211_FCTL_PROTECTED;
hdr->frame_control = cpu_to_le16(fc);
@@ -60980,8 +60995,8 @@
if (wep_encrypt_skb(tx, tx->skb) < 0) {
diff -up linux-2.6.25.noarch/net/mac80211/wep.h.orig linux-2.6.25.noarch/net/mac80211/wep.h
---- linux-2.6.25.noarch/net/mac80211/wep.h.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wep.h 2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wep.h.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wep.h 2008-06-25 15:51:34.000000000 -0400
@@ -26,7 +26,7 @@ int ieee80211_wep_encrypt(struct ieee802
struct ieee80211_key *key);
int ieee80211_wep_decrypt(struct ieee80211_local *local, struct sk_buff *skb,
@@ -60992,8 +61007,8 @@
ieee80211_rx_result
ieee80211_crypto_wep_decrypt(struct ieee80211_rx_data *rx);
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-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wext.c 2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wext.c.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wext.c 2008-06-25 15:51:34.000000000 -0400
@@ -169,14 +169,26 @@ static int ieee80211_ioctl_giwrange(stru
range->num_encoding_sizes = 2;
range->max_encoding_tokens = NUM_DEFAULT_KEYS;
@@ -61039,8 +61054,8 @@
wstats->qual.updated = local->wstats_flags;
}
diff -up linux-2.6.25.noarch/net/mac80211/wme.c.orig linux-2.6.25.noarch/net/mac80211/wme.c
---- linux-2.6.25.noarch/net/mac80211/wme.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.c 2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wme.c.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.c 2008-06-25 15:51:34.000000000 -0400
@@ -19,16 +19,22 @@
#include "wme.h"
@@ -61445,8 +61460,8 @@
if (requeue)
ieee80211_requeue(local, agg_queue);
diff -up linux-2.6.25.noarch/net/mac80211/wme.h.orig linux-2.6.25.noarch/net/mac80211/wme.h
---- linux-2.6.25.noarch/net/mac80211/wme.h.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.h 2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wme.h.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.h 2008-06-25 15:51:34.000000000 -0400
@@ -31,7 +31,7 @@ static inline int WLAN_FC_IS_QOS_DATA(u1
return (fc & 0x8C) == 0x88;
}
@@ -61457,8 +61472,8 @@
int ieee80211_qdisc_installed(struct net_device *dev);
int ieee80211_ht_agg_queue_add(struct ieee80211_local *local,
diff -up linux-2.6.25.noarch/net/mac80211/wpa.c.orig linux-2.6.25.noarch/net/mac80211/wpa.c
---- linux-2.6.25.noarch/net/mac80211/wpa.c.orig 2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wpa.c 2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wpa.c.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wpa.c 2008-06-25 15:51:34.000000000 -0400
@@ -24,46 +24,22 @@ static int ieee80211_get_hdr_info(const
{
struct ieee80211_hdr *hdr;
@@ -61797,8 +61812,8 @@
if ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)
return RX_CONTINUE;
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-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/core.c 2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/core.c.orig 2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/core.c 2008-06-25 15:51:34.000000000 -0400
@@ -143,8 +143,11 @@ void cfg80211_put_dev(struct cfg80211_re
int cfg80211_dev_rename(struct cfg80211_registered_device *rdev,
char *newname)
@@ -61862,8 +61877,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-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/radiotap.c 2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/radiotap.c.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/radiotap.c 2008-06-25 15:51:34.000000000 -0400
@@ -59,23 +59,21 @@ int ieee80211_radiotap_iterator_init(
return -EINVAL;
@@ -61904,38 +61919,3 @@
iterator->next_bitmap++;
} else
/* no more bitmaps: end */
-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-24 11:07:09.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/reg.c 2008-06-24 14:05:32.000000000 -0400
-@@ -80,6 +80,23 @@ static const struct ieee80211_channel_ra
- IEEE80211_CHAN_RADAR),
- };
-
-+static const struct ieee80211_channel_range ieee80211_EU_channels[] = {
-+ /* IEEE 802.11b/g, channels 1..13 */
-+ RANGE_PWR(2412, 2472, 20, 6, 0),
-+ /* IEEE 802.11a, channel 36*/
-+ RANGE_PWR(5180, 5180, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
-+ /* IEEE 802.11a, channel 40*/
-+ RANGE_PWR(5200, 5200, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
-+ /* IEEE 802.11a, channel 44*/
-+ RANGE_PWR(5220, 5220, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
-+ /* IEEE 802.11a, channels 48..64 */
-+ RANGE_PWR(5240, 5320, 23, 6, IEEE80211_CHAN_NO_IBSS |
-+ IEEE80211_CHAN_RADAR),
-+ /* IEEE 802.11a, channels 100..140 */
-+ RANGE_PWR(5500, 5700, 30, 6, IEEE80211_CHAN_NO_IBSS |
-+ IEEE80211_CHAN_RADAR),
-+};
-+
- #define REGDOM(_code) \
- { \
- .code = __stringify(_code), \
-@@ -90,6 +107,7 @@ static const struct ieee80211_channel_ra
- static const struct ieee80211_regdomain ieee80211_regdoms[] = {
- REGDOM(US),
- REGDOM(JP),
-+ REGDOM(EU),
- };
-
-
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.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- linux-2.6-wireless.patch 13 Jun 2008 23:54:09 -0000 1.41
+++ linux-2.6-wireless.patch 25 Jun 2008 20:02:57 -0000 1.42
@@ -1,540 +1,543 @@
-commit cb62eccd7d946f7fb92b8beb79988726ec92c227
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date: Thu Jun 12 20:47:17 2008 +0200
-
- rt2x00: Add D-link DWA111 support
-
- Add new rt73usb USB ID for D-Link DWA111
-
- Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 995ad6c5a415c9389d094d246ca1b305c1e31813
-Author: Tomas Winkler <tomas.winkler at intel.com>
-Date: Thu Jun 12 20:08:19 2008 +0300
+commit 66b5004d85164a6439d3ba1e7757734472ee2cac
+Author: Ron Rindjunsky <ron.rindjunsky at intel.com>
+Date: Wed Jun 25 16:46:31 2008 +0800
- mac80211: add missing new line in debug print HT_DEBUG
+ iwlwifi: improve scanning band selection management
- This patch adds '\n' in debug printk (wme.c HT DEBUG)
+ This patch modifies the band selection management when scanning, so
+ bands are now scanned according to HW band support.
+ Signed-off-by: Ron Rindjunsky <ron.rindjunsky 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 5c5f9664d5284d8542062fed39e1f19b80db7aa5
-Author: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
-Date: Thu Jun 12 09:47:16 2008 +0800
+commit 99ade2597e3f7f0ad463c489aaccd6cc605e242c
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date: Fri Jun 20 22:11:00 2008 +0200
- mac80211 : fix for iwconfig in ad-hoc mode
+ rt2x00: Fix unbalanced mutex locking
- The patch checks interface status, if it is in IBSS_JOINED mode
- show cell id it is associated with.
+ The usb_cache_mutex was not correctly released
+ under all circumstances. Both rt73usb as rt2500usb
+ didn't release the mutex under certain conditions
+ when the register access failed. Obviously such
+ failure would lead to deadlocks.
+
+ In addition under similar circumstances when the
+ bbp register couldn't be read the value must be
+ set to 0xff to indicate that the value is wrong.
+ This too didn't happen under all circumstances.
- Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
- Signed-off-by: Zhu Yi <yi.zhu at intel.com>
+ Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit e6340361f9c70e84312caed98c6e058ac6234e9b
+commit 2f9ec47d0954f9d2e5a00209c2689cbc477a8c89
Author: Michael Buesch <mb at bu3sch.de>
-Date: Thu Jun 12 15:33:13 2008 +0200
+Date: Fri Jun 20 11:40:46 2008 +0200
- ssb: Fix coherent DMA mask for PCI devices
+ b43legacy: Fix possible NULL pointer dereference in DMA code
- This fixes setting the coherent DMA mask for PCI devices.
+ This fixes a possible NULL pointer dereference in an error path of the
+ DMA allocation error checking code. This is also necessary for a future
+ DMA API change that is on its way into the mainline kernel that adds
+ an additional dev parameter to dma_mapping_error().
Signed-off-by: Michael Buesch <mb at bu3sch.de>
+ Cc: stable <stable at kernel.org>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 6847aa5cce6e22c3625a243b02909ac46aafa110
-Author: Randy Dunlap <randy.dunlap at oracle.com>
-Date: Wed Jun 11 13:32:22 2008 -0700
-
- rt2x00: LEDS build failure
-
- Config symbols that select LEDS_CLASS need to depend on NEW_LEDS so that
- undefined symbols are not used in the build.
-
- The alternative is to select NEW_LEDS, which some drivers do.
-
- This patch fixes the led_* symbols build errors.
-
- (.text+0x174cdc): undefined reference to `input_unregister_device'
- (.text+0x174d9f): undefined reference to `input_allocate_device'
- (.text+0x174e2d): undefined reference to `input_register_device'
- (.text+0x174e53): undefined reference to `input_free_device'
- rt2x00rfkill.c:(.text+0x176dc4): undefined reference to `input_allocate_polled_device'
- rt2x00rfkill.c:(.text+0x176e8b): undefined reference to `input_event'
- rt2x00rfkill.c:(.text+0x176e9f): undefined reference to `input_event'
- (.text+0x176eca): undefined reference to `input_unregister_polled_device'
- (.text+0x176efc): undefined reference to `input_free_polled_device'
- (.text+0x176f37): undefined reference to `input_free_polled_device'
- (.text+0x176fd8): undefined reference to `input_register_polled_device'
- (.text+0x1772c0): undefined reference to `led_classdev_resume'
- (.text+0x1772d4): undefined reference to `led_classdev_resume'
- (.text+0x1772e8): undefined reference to `led_classdev_resume'
- (.text+0x17730a): undefined reference to `led_classdev_suspend'
- (.text+0x17731e): undefined reference to `led_classdev_suspend'
- (.text+0x17732f): undefined reference to `led_classdev_suspend'
- rt2x00leds.c:(.text+0x177348): undefined reference to `led_classdev_unregister'
- rt2x00leds.c:(.text+0x1773c0): undefined reference to `led_classdev_register'
- rfkill-input.c:(.text+0x209e4c): undefined reference to `input_close_device'
- rfkill-input.c:(.text+0x209e53): undefined reference to `input_unregister_handle'
- rfkill-input.c:(.text+0x209ea1): undefined reference to `input_register_handle'
- rfkill-input.c:(.text+0x209eae): undefined reference to `input_open_device'
- rfkill-input.c:(.text+0x209ebb): undefined reference to `input_unregister_handle'
- rfkill-input.c:(.init.text+0x17405): undefined reference to `input_register_handler'
- rfkill-input.c:(.exit.text+0x194f): undefined reference to `input_unregister_handler'
- make[1]: *** [vmlinux] Error 1
-
- Signed-off-by: Randy Dunlap <randy.dunlap at oracle.com>
- Acked-by: Ivo van Doorn <IvDoorn at gmail.com>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit e76328e4a8260707fbc29c99773fb5ba4627096c
-Author: Randy Dunlap <randy.dunlap at oracle.com>
-Date: Wed Jun 11 12:57:58 2008 -0700
-
- rt2x00: INPUT build failure
-
- Config symbols that select RFKILL need to depend on INPUT so that
- undefined symbols are not used in the build.
-
- This patch fixes the input_* symbols build errors.
-
- (.text+0x174cdc): undefined reference to `input_unregister_device'
- (.text+0x174d9f): undefined reference to `input_allocate_device'
- (.text+0x174e2d): undefined reference to `input_register_device'
- (.text+0x174e53): undefined reference to `input_free_device'
- rt2x00rfkill.c:(.text+0x176dc4): undefined reference to `input_allocate_polled_device'
- rt2x00rfkill.c:(.text+0x176e8b): undefined reference to `input_event'
- rt2x00rfkill.c:(.text+0x176e9f): undefined reference to `input_event'
- (.text+0x176eca): undefined reference to `input_unregister_polled_device'
- (.text+0x176efc): undefined reference to `input_free_polled_device'
- (.text+0x176f37): undefined reference to `input_free_polled_device'
- (.text+0x176fd8): undefined reference to `input_register_polled_device'
- (.text+0x1772c0): undefined reference to `led_classdev_resume'
- (.text+0x1772d4): undefined reference to `led_classdev_resume'
- (.text+0x1772e8): undefined reference to `led_classdev_resume'
- (.text+0x17730a): undefined reference to `led_classdev_suspend'
- (.text+0x17731e): undefined reference to `led_classdev_suspend'
- (.text+0x17732f): undefined reference to `led_classdev_suspend'
- rt2x00leds.c:(.text+0x177348): undefined reference to `led_classdev_unregister'
- rt2x00leds.c:(.text+0x1773c0): undefined reference to `led_classdev_register'
- rfkill-input.c:(.text+0x209e4c): undefined reference to `input_close_device'
- rfkill-input.c:(.text+0x209e53): undefined reference to `input_unregister_handle'
- rfkill-input.c:(.text+0x209ea1): undefined reference to `input_register_handle'
- rfkill-input.c:(.text+0x209eae): undefined reference to `input_open_device'
- rfkill-input.c:(.text+0x209ebb): undefined reference to `input_unregister_handle'
- rfkill-input.c:(.init.text+0x17405): undefined reference to `input_register_handler'
- rfkill-input.c:(.exit.text+0x194f): undefined reference to `input_unregister_handler'
- make[1]: *** [vmlinux] Error 1
-
- Signed-off-by: Randy Dunlap <randy.dunlap at oracle.com>
- Acked-by: Ivo van Doorn <IvDoorn at gmail.com>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 98a3b2fe435ae76170936c14f5c9e6a87548e3ef
+commit 7b3abfc87ec13a81b255012b6e1bd4caeeb05aec
Author: Michael Buesch <mb at bu3sch.de>
-Date: Thu Jun 12 12:36:29 2008 +0200
+Date: Sun Jun 15 16:01:24 2008 +0200
- b43: Fix noise calculation WARN_ON
-
- This removes a WARN_ON that is responsible for the following koops:
- http://www.kerneloops.org/searchweek.php?search=b43_generate_noise_sample
+ b43: Fix possible MMIO access while device is down
- The comment in the patch describes why it's safe to simply remove
- the check.
+ This fixes a possible MMIO access while the device is still down
+ from a suspend cycle. MMIO accesses with the device powered down
+ may cause crashes on certain devices.
Signed-off-by: Michael Buesch <mb at bu3sch.de>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 028118a5f09a9c807e6b43e2231efdff9f224c74
+commit 664f200610a3c9641ff58fc91b986b804cb1cc2d
Author: Michael Buesch <mb at bu3sch.de>
-Date: Thu Jun 12 11:58:56 2008 +0200
+Date: Sun Jun 15 15:27:49 2008 +0200
- b43: Fix possible NULL pointer dereference in DMA code
-
- This fixes a possible NULL pointer dereference in an error path of the
- DMA allocation error checking code. This is also necessary for a future
- DMA API change that is on its way into the mainline kernel that adds
- an additional dev parameter to dma_mapping_error().
+ b43legacy: Do not return TX_BUSY from op_tx
- This patch moves the whole struct b43_dmaring struct initialization
- right before any DMA allocation operation.
+ Never return TX_BUSY from op_tx. It doesn't make sense to return
+ TX_BUSY, if we can not transmit the packet.
+ Drop the packet and return TX_OK.
- Reported-by: Miles Lane <miles.lane at gmail.com>
Signed-off-by: Michael Buesch <mb at bu3sch.de>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 051c256f672efa356a4cda1841132dbc86541090
-Author: Gertjan van Wingerde <gwingerde at kpnplanet.nl>
-Date: Tue Jun 3 20:29:47 2008 +0200
+commit c9e8eae0935f03e2d03a7ad7af80d8fc6c53e68c
+Author: Michael Buesch <mb at bu3sch.de>
+Date: Sun Jun 15 15:17:29 2008 +0200
- rt2x00: Restrict DMA to 32-bit addresses.
+ b43: Do not return TX_BUSY from op_tx
- None of the rt2x00 PCI devices support 64-bit DMA addresses (they all
- only accept 32-bit buffer addresses). Hence it makes no sense to try to
- enable 64-bit DMA addresses. Only try to enable 32-bit DMA addresses.
+ Never return TX_BUSY from op_tx. It doesn't make sense to return
+ TX_BUSY, if we can not transmit the packet.
+ Drop the packet and return TX_OK.
+ This will fix the resume hang.
- Signed-off-by: Gertjan van Wingerde <gwingerde at kpnplanet.nl>
- Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: Michael Buesch <mb at bu3sch.de>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit edfa78b2ba651782d70be6d1fef214e21a26d8cb
-Author: Ivo van Doorn <IvDoorn at gmail.com>
-Date: Tue Jun 3 20:29:50 2008 +0200
-
- rt2x00: Don't kill guardian_urb when it wasn't created
-
- This fixes a "BUG: unable to handle kernel paging request"
- bug in rt73usb which was caused by killing the guardian_urb
- while it had never been allocated for rt73usb.
+commit 59d393ad92f719d9ef36b96eae56d4817a7eeb10
+Author: Tony Vroon <tony at linx.net>
+Date: Wed Jun 11 16:23:56 2008 -0400
+
+ mac80211: implement EU regulatory domain
+
+ Implement missing EU regulatory domain for mac80211. Based on the
+ information in IEEE 802.11-2007 (specifically pages 1142, 1143 & 1148)
+ and ETSI 301 893 (V1.4.1).
+ With thanks to Johannes Berg.
- Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: Tony Vroon <tony at linx.net>
+ Acked-by: Johannes Berg <johannes at sipsolutions.net>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h
---- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig 2008-06-13 17:37:04.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h 2008-06-13 17:37:35.000000000 -0400
-@@ -630,7 +630,6 @@ struct b43_pio {
-
- /* Context information for a noise calculation (Link Quality). */
- struct b43_noise_calculation {
-- u8 channel_at_start;
- bool calculation_running;
- u8 nr_samples;
- s8 samples[8][4];
-diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c.orig 2008-06-13 17:37:04.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c 2008-06-13 17:37:35.000000000 -0400
-@@ -795,24 +795,49 @@ struct b43_dmaring *b43_setup_dmaring(st
- {
- struct b43_dmaring *ring;
- int err;
-- int nr_slots;
- dma_addr_t dma_test;
+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-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c 2008-06-25 15:47:15.000000000 -0400
+@@ -72,6 +72,9 @@ static void b43_led_brightness_set(struc
+ struct b43_wldev *dev = led->dev;
+ bool radio_enabled;
- ring = kzalloc(sizeof(*ring), GFP_KERNEL);
++ if (unlikely(b43_status(dev) < B43_STAT_INITIALIZED))
++ return;
++
+ /* Checking the radio-enabled status here is slightly racy,
+ * 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-25 15:46:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c 2008-06-25 15:47:15.000000000 -0400
+@@ -876,6 +876,7 @@ struct b43legacy_dmaring *b43legacy_setu
if (!ring)
goto out;
-- ring->type = type;
+ ring->type = type;
++ ring->dev = dev;
-- nr_slots = B43_RXRING_SLOTS;
-+ ring->nr_slots = B43_RXRING_SLOTS;
+ nr_slots = B43legacy_RXRING_SLOTS;
if (for_tx)
-- nr_slots = B43_TXRING_SLOTS;
-+ ring->nr_slots = B43_TXRING_SLOTS;
-
-- ring->meta = kcalloc(nr_slots, sizeof(struct b43_dmadesc_meta),
-+ ring->meta = kcalloc(ring->nr_slots, sizeof(struct b43_dmadesc_meta),
- GFP_KERNEL);
- if (!ring->meta)
- goto err_kfree_ring;
-+
-+ ring->type = type;
-+ ring->dev = dev;
-+ ring->mmio_base = b43_dmacontroller_base(type, controller_index);
-+ ring->index = controller_index;
-+ if (type == B43_DMA_64BIT)
-+ ring->ops = &dma64_ops;
-+ else
-+ ring->ops = &dma32_ops;
- if (for_tx) {
-- ring->txhdr_cache = kcalloc(nr_slots,
-+ ring->tx = 1;
-+ ring->current_slot = -1;
-+ } else {
-+ if (ring->index == 0) {
-+ ring->rx_buffersize = B43_DMA0_RX_BUFFERSIZE;
-+ ring->frameoffset = B43_DMA0_RX_FRAMEOFFSET;
-+ } else if (ring->index == 3) {
-+ ring->rx_buffersize = B43_DMA3_RX_BUFFERSIZE;
-+ ring->frameoffset = B43_DMA3_RX_FRAMEOFFSET;
-+ } else
-+ B43_WARN_ON(1);
-+ }
-+ spin_lock_init(&ring->lock);
-+#ifdef CONFIG_B43_DEBUG
-+ ring->last_injected_overflow = jiffies;
-+#endif
-+
-+ if (for_tx) {
-+ ring->txhdr_cache = kcalloc(ring->nr_slots,
- b43_txhdr_size(dev),
- GFP_KERNEL);
- if (!ring->txhdr_cache)
-@@ -828,7 +853,7 @@ struct b43_dmaring *b43_setup_dmaring(st
- b43_txhdr_size(dev), 1)) {
- /* ugh realloc */
- kfree(ring->txhdr_cache);
-- ring->txhdr_cache = kcalloc(nr_slots,
-+ ring->txhdr_cache = kcalloc(ring->nr_slots,
- b43_txhdr_size(dev),
- GFP_KERNEL | GFP_DMA);
- if (!ring->txhdr_cache)
-@@ -853,32 +878,6 @@ struct b43_dmaring *b43_setup_dmaring(st
+@@ -922,7 +923,6 @@ struct b43legacy_dmaring *b43legacy_setu
DMA_TO_DEVICE);
}
- ring->dev = dev;
-- ring->nr_slots = nr_slots;
-- ring->mmio_base = b43_dmacontroller_base(type, controller_index);
-- ring->index = controller_index;
-- if (type == B43_DMA_64BIT)
-- ring->ops = &dma64_ops;
-- else
-- ring->ops = &dma32_ops;
-- if (for_tx) {
-- ring->tx = 1;
-- ring->current_slot = -1;
-- } else {
-- if (ring->index == 0) {
-- ring->rx_buffersize = B43_DMA0_RX_BUFFERSIZE;
-- ring->frameoffset = B43_DMA0_RX_FRAMEOFFSET;
-- } else if (ring->index == 3) {
-- ring->rx_buffersize = B43_DMA3_RX_BUFFERSIZE;
-- ring->frameoffset = B43_DMA3_RX_FRAMEOFFSET;
-- } else
-- B43_WARN_ON(1);
-- }
-- spin_lock_init(&ring->lock);
--#ifdef CONFIG_B43_DEBUG
-- ring->last_injected_overflow = jiffies;
--#endif
--
- err = alloc_ringmemory(ring);
- if (err)
- goto err_kfree_txhdr_cache;
+ ring->nr_slots = nr_slots;
+ 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-25 15:46:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c 2008-06-25 15:47:15.000000000 -0400
+@@ -2378,8 +2378,10 @@ static int b43legacy_op_tx(struct ieee80
+ } else
+ err = b43legacy_dma_tx(dev, skb, ctl);
+ out:
+- if (unlikely(err))
+- return NETDEV_TX_BUSY;
++ if (unlikely(err)) {
++ /* Drop the packet. */
++ dev_kfree_skb_any(skb);
++ }
+ return NETDEV_TX_OK;
+ }
+
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-13 17:37:04.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c 2008-06-13 17:37:35.000000000 -0400
-@@ -1145,7 +1145,6 @@ static void b43_generate_noise_sample(st
- b43_jssi_write(dev, 0x7F7F7F7F);
- b43_write32(dev, B43_MMIO_MACCMD,
- b43_read32(dev, B43_MMIO_MACCMD) | B43_MACCMD_BGNOISE);
-- B43_WARN_ON(dev->noisecalc.channel_at_start != dev->phy.channel);
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig 2008-06-25 15:46:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c 2008-06-25 15:47:15.000000000 -0400
+@@ -2883,12 +2883,11 @@ static int b43_op_tx(struct ieee80211_hw
+
+ if (unlikely(skb->len < 2 + 2 + 6)) {
+ /* Too short, this can't be a valid frame. */
+- dev_kfree_skb_any(skb);
+- return NETDEV_TX_OK;
++ goto drop_packet;
+ }
+ B43_WARN_ON(skb_shinfo(skb)->nr_frags);
+ if (unlikely(!dev))
+- return NETDEV_TX_BUSY;
++ goto drop_packet;
+
+ /* Transmissions on seperate queues can run concurrently. */
+ read_lock_irqsave(&wl->tx_lock, flags);
+@@ -2904,7 +2903,12 @@ static int b43_op_tx(struct ieee80211_hw
+ read_unlock_irqrestore(&wl->tx_lock, flags);
+
+ if (unlikely(err))
+- return NETDEV_TX_BUSY;
++ goto drop_packet;
++ return NETDEV_TX_OK;
++
++drop_packet:
++ /* We can not transmit this packet. Drop it. */
++ dev_kfree_skb_any(skb);
+ return NETDEV_TX_OK;
}
- static void b43_calculate_link_quality(struct b43_wldev *dev)
-@@ -1154,7 +1153,6 @@ static void b43_calculate_link_quality(s
+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-25 15:46:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-06-25 15:47:15.000000000 -0400
+@@ -2227,7 +2227,10 @@ static int iwl3945_scan_initiate(struct
+ }
+
+ IWL_DEBUG_INFO("Starting scan...\n");
+- priv->scan_bands = 2;
++ if (priv->cfg->sku & IWL_SKU_G)
++ priv->scan_bands |= BIT(IEEE80211_BAND_2GHZ);
++ if (priv->cfg->sku & IWL_SKU_A)
++ priv->scan_bands |= BIT(IEEE80211_BAND_5GHZ);
+ set_bit(STATUS_SCANNING, &priv->status);
+ priv->scan_start = jiffies;
+ priv->scan_pass_start = priv->scan_start;
+@@ -3352,13 +3355,18 @@ static void iwl3945_rx_scan_complete_not
+ cancel_delayed_work(&priv->scan_check);
+
+ IWL_DEBUG_INFO("Scan pass on %sGHz took %dms\n",
+- (priv->scan_bands == 2) ? "2.4" : "5.2",
++ (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) ?
++ "2.4" : "5.2",
+ jiffies_to_msecs(elapsed_jiffies
+ (priv->scan_pass_start, jiffies)));
+
+- /* Remove this scanned band from the list
+- * of pending bands to scan */
+- priv->scan_bands--;
++ /* Remove this scanned band from the list of pending
++ * bands to scan, band G precedes A in order of scanning
++ * as seen in iwl3945_bg_request_scan */
++ if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ))
++ priv->scan_bands &= ~BIT(IEEE80211_BAND_2GHZ);
++ else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ))
++ priv->scan_bands &= ~BIT(IEEE80211_BAND_5GHZ);
+
+ /* If a request to abort was given, or the scan did not succeed
+ * then we reset the scan state machine and terminate,
+@@ -4972,7 +4980,7 @@ static int iwl3945_get_channels_for_scan
+
+ ch_info = iwl3945_get_channel_info(priv, band, scan_ch->channel);
+ if (!is_channel_valid(ch_info)) {
+- IWL_DEBUG_SCAN("Channel %d is INVALID for this SKU.\n",
++ IWL_DEBUG_SCAN("Channel %d is INVALID for this band.\n",
+ scan_ch->channel);
+ continue;
+ }
+@@ -6315,21 +6323,16 @@ static void iwl3945_bg_request_scan(stru
+
+ /* flags + rate selection */
- if (dev->noisecalc.calculation_running)
- return;
-- dev->noisecalc.channel_at_start = dev->phy.channel;
- dev->noisecalc.calculation_running = 1;
- dev->noisecalc.nr_samples = 0;
-
-@@ -1171,9 +1169,16 @@ static void handle_irq_noise(struct b43_
-
- /* Bottom half of Link Quality calculation. */
-
-+ /* Possible race condition: It might be possible that the user
-+ * changed to a different channel in the meantime since we
-+ * started the calculation. We ignore that fact, since it's
-+ * not really that much of a problem. The background noise is
-+ * an estimation only anyway. Slightly wrong results will get damped
-+ * by the averaging of the 8 sample rounds. Additionally the
-+ * value is shortlived. So it will be replaced by the next noise
-+ * calculation round soon. */
-+
- B43_WARN_ON(!dev->noisecalc.calculation_running);
-- if (dev->noisecalc.channel_at_start != phy->channel)
-- goto drop_calculation;
- *((__le32 *)noise) = cpu_to_le32(b43_jssi_read(dev));
- if (noise[0] == 0x7F || noise[1] == 0x7F ||
- noise[2] == 0x7F || noise[3] == 0x7F)
-@@ -1214,11 +1219,10 @@ static void handle_irq_noise(struct b43_
- average -= 48;
-
- dev->stats.link_noise = average;
-- drop_calculation:
- dev->noisecalc.calculation_running = 0;
- return;
+- switch (priv->scan_bands) {
+- case 2:
++ if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) {
+ scan->flags = RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK;
+ scan->tx_cmd.rate = IWL_RATE_1M_PLCP;
+ scan->good_CRC_th = 0;
+ band = IEEE80211_BAND_2GHZ;
+- break;
+-
+- case 1:
++ } else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ)) {
+ scan->tx_cmd.rate = IWL_RATE_6M_PLCP;
+ scan->good_CRC_th = IWL_GOOD_CRC_TH;
+ band = IEEE80211_BAND_5GHZ;
+- break;
+-
+- default:
++ } else {
+ IWL_WARNING("Invalid scan band count\n");
+ goto done;
+ }
+@@ -6770,7 +6773,7 @@ static int iwl3945_mac_config(struct iee
+ ch_info = iwl3945_get_channel_info(priv, conf->channel->band,
+ conf->channel->hw_value);
+ if (!is_channel_valid(ch_info)) {
+- IWL_DEBUG_SCAN("Channel %d [%d] is INVALID for this SKU.\n",
++ IWL_DEBUG_SCAN("Channel %d [%d] is INVALID for this band.\n",
+ conf->channel->hw_value, conf->channel->band);
+ 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-25 15:46:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2008-06-25 15:47:15.000000000 -0400
+@@ -1774,7 +1774,10 @@ static int iwl4965_scan_initiate(struct
}
-- generate_new:
-+generate_new:
- b43_generate_noise_sample(dev);
- }
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig.orig 2008-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig 2008-06-13 17:37:35.000000000 -0400
-@@ -32,12 +32,13 @@ config RT2X00_LIB_FIRMWARE
- config RT2X00_LIB_RFKILL
- boolean
- depends on RT2X00_LIB
-+ depends on INPUT
- select RFKILL
- select INPUT_POLLDEV
-
- config RT2X00_LIB_LEDS
- boolean
-- depends on RT2X00_LIB
-+ depends on RT2X00_LIB && NEW_LEDS
-
- config RT2400PCI
- tristate "Ralink rt2400 pci/pcmcia support"
-@@ -51,7 +52,7 @@ config RT2400PCI
-
- config RT2400PCI_RFKILL
- bool "RT2400 rfkill support"
-- depends on RT2400PCI
-+ depends on RT2400PCI && INPUT
- select RT2X00_LIB_RFKILL
- ---help---
- This adds support for integrated rt2400 devices that feature a
-@@ -60,7 +61,7 @@ config RT2400PCI_RFKILL
-
- config RT2400PCI_LEDS
- bool "RT2400 leds support"
-- depends on RT2400PCI
-+ depends on RT2400PCI && NEW_LEDS
- select LEDS_CLASS
- select RT2X00_LIB_LEDS
- ---help---
-@@ -78,7 +79,7 @@ config RT2500PCI
-
- config RT2500PCI_RFKILL
- bool "RT2500 rfkill support"
-- depends on RT2500PCI
-+ depends on RT2500PCI && INPUT
- select RT2X00_LIB_RFKILL
- ---help---
- This adds support for integrated rt2500 devices that feature a
-@@ -87,7 +88,7 @@ config RT2500PCI_RFKILL
-
- config RT2500PCI_LEDS
- bool "RT2500 leds support"
-- depends on RT2500PCI
-+ depends on RT2500PCI && NEW_LEDS
- select LEDS_CLASS
- select RT2X00_LIB_LEDS
- ---help---
-@@ -107,7 +108,7 @@ config RT61PCI
-
- config RT61PCI_RFKILL
- bool "RT61 rfkill support"
-- depends on RT61PCI
-+ depends on RT61PCI && INPUT
- select RT2X00_LIB_RFKILL
- ---help---
- This adds support for integrated rt61 devices that feature a
-@@ -116,7 +117,7 @@ config RT61PCI_RFKILL
-
- config RT61PCI_LEDS
- bool "RT61 leds support"
-- depends on RT61PCI
-+ depends on RT61PCI && NEW_LEDS
- select LEDS_CLASS
- select RT2X00_LIB_LEDS
- ---help---
-@@ -133,7 +134,7 @@ config RT2500USB
-
- config RT2500USB_LEDS
- bool "RT2500 leds support"
-- depends on RT2500USB
-+ depends on RT2500USB && NEW_LEDS
- select LEDS_CLASS
- select RT2X00_LIB_LEDS
- ---help---
-@@ -152,7 +153,7 @@ config RT73USB
-
- config RT73USB_LEDS
- bool "RT73 leds support"
-- depends on RT73USB
-+ depends on RT73USB && NEW_LEDS
- select LEDS_CLASS
- select RT2X00_LIB_LEDS
- ---help---
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig 2008-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c 2008-06-13 17:37:35.000000000 -0400
-@@ -412,8 +412,7 @@ int rt2x00pci_probe(struct pci_dev *pci_
- if (pci_set_mwi(pci_dev))
- ERROR_PROBE("MWI not available.\n");
-
-- if (pci_set_dma_mask(pci_dev, DMA_64BIT_MASK) &&
-- pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) {
-+ if (pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) {
- ERROR_PROBE("PCI DMA not supported.\n");
- retval = -EIO;
- goto exit_disable_device;
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c.orig 2008-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c 2008-06-13 17:37:35.000000000 -0400
-@@ -362,6 +362,12 @@ void rt2x00usb_disable_radio(struct rt2x
+ IWL_DEBUG_INFO("Starting scan...\n");
+- priv->scan_bands = 2;
++ if (priv->cfg->sku & IWL_SKU_G)
++ priv->scan_bands |= BIT(IEEE80211_BAND_2GHZ);
++ if (priv->cfg->sku & IWL_SKU_A)
++ priv->scan_bands |= BIT(IEEE80211_BAND_5GHZ);
+ set_bit(STATUS_SCANNING, &priv->status);
+ priv->scan_start = jiffies;
+ priv->scan_pass_start = priv->scan_start;
+@@ -3023,8 +3026,9 @@ static void iwl4965_rx_reply_tx(struct i
+
+ IWL_DEBUG_TX_REPLY("Tx queue reclaim %d\n", index);
+ if (index != -1) {
+- int freed = iwl4965_tx_queue_reclaim(priv, txq_id, index);
+ #ifdef CONFIG_IWL4965_HT
++ int freed = iwl4965_tx_queue_reclaim(priv, txq_id, index);
++
+ if (tid != MAX_TID_COUNT)
+ priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;
+ if (iwl4965_queue_space(&txq->q) > txq->q.low_mark &&
+@@ -3276,13 +3280,18 @@ static void iwl4965_rx_scan_complete_not
+ cancel_delayed_work(&priv->scan_check);
+
+ IWL_DEBUG_INFO("Scan pass on %sGHz took %dms\n",
+- (priv->scan_bands == 2) ? "2.4" : "5.2",
++ (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) ?
++ "2.4" : "5.2",
+ jiffies_to_msecs(elapsed_jiffies
+ (priv->scan_pass_start, jiffies)));
+
+- /* Remove this scanned band from the list
+- * of pending bands to scan */
+- priv->scan_bands--;
++ /* Remove this scanned band from the list of pending
++ * bands to scan, band G precedes A in order of scanning
++ * as seen in iwl_bg_request_scan */
++ if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ))
++ priv->scan_bands &= ~BIT(IEEE80211_BAND_2GHZ);
++ else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ))
++ priv->scan_bands &= ~BIT(IEEE80211_BAND_5GHZ);
+
+ /* If a request to abort was given, or the scan did not succeed
+ * then we reset the scan state machine and terminate,
+@@ -3292,7 +3301,7 @@ static void iwl4965_rx_scan_complete_not
+ clear_bit(STATUS_SCAN_ABORTING, &priv->status);
+ } else {
+ /* If there are more bands on this scan pass reschedule */
+- if (priv->scan_bands > 0)
++ if (priv->scan_bands)
+ goto reschedule;
+ }
+
+@@ -4635,10 +4644,9 @@ static int iwl4965_get_channels_for_scan
+
+ scan_ch->channel = ieee80211_frequency_to_channel(channels[i].center_freq);
+
+- ch_info = iwl_get_channel_info(priv, band,
+- scan_ch->channel);
++ ch_info = iwl_get_channel_info(priv, band, scan_ch->channel);
+ if (!is_channel_valid(ch_info)) {
+- IWL_DEBUG_SCAN("Channel %d is INVALID for this SKU.\n",
++ IWL_DEBUG_SCAN("Channel %d is INVALID for this band.\n",
+ scan_ch->channel);
+ continue;
}
+@@ -5830,8 +5838,7 @@ static void iwl4965_bg_request_scan(stru
+ scan->tx_cmd.stop_time.life_time = TX_CMD_LIFE_TIME_INFINITE;
+
+
+- switch (priv->scan_bands) {
+- case 2:
++ if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) {
+ scan->flags = RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK;
+ scan->tx_cmd.rate_n_flags =
+ iwl4965_hw_set_rate_n_flags(IWL_RATE_1M_PLCP,
+@@ -5839,17 +5846,13 @@ static void iwl4965_bg_request_scan(stru
+
+ scan->good_CRC_th = 0;
+ band = IEEE80211_BAND_2GHZ;
+- break;
+-
+- case 1:
++ } else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ)) {
+ scan->tx_cmd.rate_n_flags =
+ iwl4965_hw_set_rate_n_flags(IWL_RATE_6M_PLCP,
+ RATE_MCS_ANT_B_MSK);
+ scan->good_CRC_th = IWL_GOOD_CRC_TH;
+ band = IEEE80211_BAND_5GHZ;
+- break;
+-
+- default:
++ } else {
+ IWL_WARNING("Invalid scan band count\n");
+ goto done;
}
+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-25 15:46:41.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c 2008-06-25 15:47:15.000000000 -0400
+@@ -138,11 +138,8 @@ static void rt2500usb_bbp_write(struct r
+ * Wait until the BBP becomes ready.
+ */
+ reg = rt2500usb_bbp_check(rt2x00dev);
+- if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) {
+- ERROR(rt2x00dev, "PHY_CSR8 register busy. Write failed.\n");
+- mutex_unlock(&rt2x00dev->usb_cache_mutex);
+- return;
+- }
++ if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
++ goto exit_fail;
-+ /*
-+ * Kill guardian urb (if required by driver).
-+ */
-+ if (!test_bit(DRIVER_REQUIRE_BEACON_GUARD, &rt2x00dev->flags))
-+ return;
+ /*
+ * Write the data into the BBP.
+@@ -155,6 +152,13 @@ static void rt2500usb_bbp_write(struct r
+ rt2500usb_register_write_lock(rt2x00dev, PHY_CSR7, reg);
+
+ mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++ return;
++
++exit_fail:
++ mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++ ERROR(rt2x00dev, "PHY_CSR8 register busy. Write failed.\n");
+ }
+
+ static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev,
+@@ -168,10 +172,8 @@ static void rt2500usb_bbp_read(struct rt
+ * Wait until the BBP becomes ready.
+ */
+ reg = rt2500usb_bbp_check(rt2x00dev);
+- if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) {
+- ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n");
+- return;
+- }
++ if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
++ goto exit_fail;
+
+ /*
+ * Write the request into the BBP.
+@@ -186,17 +188,21 @@ static void rt2500usb_bbp_read(struct rt
+ * Wait until the BBP becomes ready.
+ */
+ reg = rt2500usb_bbp_check(rt2x00dev);
+- if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) {
+- ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n");
+- *value = 0xff;
+- mutex_unlock(&rt2x00dev->usb_cache_mutex);
+- return;
+- }
++ if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
++ goto exit_fail;
+
+ rt2500usb_register_read_lock(rt2x00dev, PHY_CSR7, ®);
+ *value = rt2x00_get_field16(reg, PHY_CSR7_DATA);
+
+ mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++ return;
+
- for (i = 0; i < rt2x00dev->bcn->limit; i++) {
- priv_bcn = rt2x00dev->bcn->entries[i].priv_data;
- usb_kill_urb(priv_bcn->urb);
++exit_fail:
++ mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++ ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n");
++ *value = 0xff;
+ }
+
+ static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev,
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-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c 2008-06-13 17:37:35.000000000 -0400
-@@ -2131,6 +2131,7 @@ static struct usb_device_id rt73usb_devi
- /* D-Link */
- { USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) },
- { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) },
-+ { USB_DEVICE(0x07d1, 0x3c06), USB_DEVICE_DATA(&rt73usb_ops) },
- { USB_DEVICE(0x07d1, 0x3c07), USB_DEVICE_DATA(&rt73usb_ops) },
- /* Gemtek */
- { USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) },
-diff -up linux-2.6.25.noarch/drivers/ssb/main.c.orig linux-2.6.25.noarch/drivers/ssb/main.c
---- linux-2.6.25.noarch/drivers/ssb/main.c.orig 2008-06-13 17:33:42.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/ssb/main.c 2008-06-13 17:37:35.000000000 -0400
-@@ -1168,15 +1168,21 @@ EXPORT_SYMBOL(ssb_dma_translation);
- int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask)
- {
- struct device *dma_dev = ssb_dev->dma_dev;
-+ int err = 0;
-
- #ifdef CONFIG_SSB_PCIHOST
-- if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI)
-- return dma_set_mask(dma_dev, mask);
-+ if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI) {
-+ err = pci_set_dma_mask(ssb_dev->bus->host_pci, mask);
-+ if (err)
-+ return err;
-+ err = pci_set_consistent_dma_mask(ssb_dev->bus->host_pci, mask);
-+ return err;
-+ }
- #endif
- dma_dev->coherent_dma_mask = mask;
- dma_dev->dma_mask = &dma_dev->coherent_dma_mask;
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig 2008-06-25 15:46:41.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c 2008-06-25 15:47:15.000000000 -0400
+@@ -134,11 +134,8 @@ static void rt73usb_bbp_write(struct rt2
+ * Wait until the BBP becomes ready.
+ */
+ reg = rt73usb_bbp_check(rt2x00dev);
+- if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) {
+- ERROR(rt2x00dev, "PHY_CSR3 register busy. Write failed.\n");
+- mutex_unlock(&rt2x00dev->usb_cache_mutex);
+- return;
+- }
++ if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
++ goto exit_fail;
+
+ /*
+ * Write the data into the BBP.
+@@ -151,6 +148,13 @@ static void rt73usb_bbp_write(struct rt2
-- return 0;
-+ return err;
+ rt73usb_register_write_lock(rt2x00dev, PHY_CSR3, reg);
+ mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++ return;
++
++exit_fail:
++ mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++ ERROR(rt2x00dev, "PHY_CSR3 register busy. Write failed.\n");
}
- EXPORT_SYMBOL(ssb_dma_set_mask);
-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-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wext.c 2008-06-13 17:37:35.000000000 -0400
-@@ -496,7 +496,8 @@ static int ieee80211_ioctl_giwap(struct
- sdata = IEEE80211_DEV_TO_SUB_IF(dev);
- if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
- sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
-- if (sdata->u.sta.state == IEEE80211_ASSOCIATED) {
-+ if (sdata->u.sta.state == IEEE80211_ASSOCIATED ||
-+ sdata->u.sta.state == IEEE80211_IBSS_JOINED) {
- ap_addr->sa_family = ARPHRD_ETHER;
- memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
- return 0;
-diff -up linux-2.6.25.noarch/net/mac80211/wme.c.orig linux-2.6.25.noarch/net/mac80211/wme.c
---- linux-2.6.25.noarch/net/mac80211/wme.c.orig 2008-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.c 2008-06-13 17:37:35.000000000 -0400
-@@ -673,7 +673,7 @@ int ieee80211_ht_agg_queue_add(struct ie
- #ifdef CONFIG_MAC80211_HT_DEBUG
- if (net_ratelimit())
- printk(KERN_DEBUG "allocated aggregation queue"
-- " %d tid %d addr %s pool=0x%lX",
-+ " %d tid %d addr %s pool=0x%lX\n",
- i, tid, print_mac(mac, sta->addr),
- q->qdisc_pool[0]);
- #endif /* CONFIG_MAC80211_HT_DEBUG */
+ static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev,
+@@ -164,11 +168,8 @@ static void rt73usb_bbp_read(struct rt2x
+ * Wait until the BBP becomes ready.
+ */
+ reg = rt73usb_bbp_check(rt2x00dev);
+- if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) {
+- ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n");
+- mutex_unlock(&rt2x00dev->usb_cache_mutex);
+- return;
+- }
++ if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
++ goto exit_fail;
+
+ /*
+ * Write the request into the BBP.
+@@ -184,14 +185,19 @@ static void rt73usb_bbp_read(struct rt2x
+ * Wait until the BBP becomes ready.
+ */
+ reg = rt73usb_bbp_check(rt2x00dev);
+- if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) {
+- ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n");
+- *value = 0xff;
+- return;
+- }
++ if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
++ goto exit_fail;
+
+ *value = rt2x00_get_field32(reg, PHY_CSR3_VALUE);
+ mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++ return;
++
++exit_fail:
++ mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++ ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n");
++ *value = 0xff;
+ }
+
+ static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev,
+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-25 15:46:41.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/reg.c 2008-06-25 15:47:15.000000000 -0400
+@@ -80,6 +80,23 @@ static const struct ieee80211_channel_ra
+ IEEE80211_CHAN_RADAR),
+ };
+
++static const struct ieee80211_channel_range ieee80211_EU_channels[] = {
++ /* IEEE 802.11b/g, channels 1..13 */
++ RANGE_PWR(2412, 2472, 20, 6, 0),
++ /* IEEE 802.11a, channel 36*/
++ RANGE_PWR(5180, 5180, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
++ /* IEEE 802.11a, channel 40*/
++ RANGE_PWR(5200, 5200, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
++ /* IEEE 802.11a, channel 44*/
++ RANGE_PWR(5220, 5220, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
++ /* IEEE 802.11a, channels 48..64 */
++ RANGE_PWR(5240, 5320, 23, 6, IEEE80211_CHAN_NO_IBSS |
++ IEEE80211_CHAN_RADAR),
++ /* IEEE 802.11a, channels 100..140 */
++ RANGE_PWR(5500, 5700, 30, 6, IEEE80211_CHAN_NO_IBSS |
++ IEEE80211_CHAN_RADAR),
++};
++
+ #define REGDOM(_code) \
+ { \
+ .code = __stringify(_code), \
+@@ -90,6 +107,7 @@ static const struct ieee80211_channel_ra
+ static const struct ieee80211_regdomain ieee80211_regdoms[] = {
+ REGDOM(US),
+ REGDOM(JP),
++ REGDOM(EU),
+ };
+
+
More information about the fedora-extras-commits
mailing list