rpms/kernel/devel linux-2.6-wireless-pending-too.patch, 1.3, 1.4 kernel.spec, 1.473, 1.474 linux-2.6-wireless-pending.patch, 1.32, 1.33 linux-2.6-wireless.patch, 1.25, 1.26

John W. Linville (linville) fedora-extras-commits at redhat.com
Wed Mar 5 01:09:26 UTC 2008


Author: linville

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv19168

Modified Files:
	kernel.spec linux-2.6-wireless-pending.patch 
	linux-2.6-wireless.patch 
Added Files:
	linux-2.6-wireless-pending-too.patch 
Log Message:
today's round of wireless fixes, plus a couple extra to correct memory corruption from yesterday's round

linux-2.6-wireless-pending-too.patch:

Index: linux-2.6-wireless-pending-too.patch
===================================================================
RCS file: linux-2.6-wireless-pending-too.patch
diff -N linux-2.6-wireless-pending-too.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6-wireless-pending-too.patch	5 Mar 2008 01:09:02 -0000	1.4
@@ -0,0 +1,68 @@
+This is an a backport of two fixes which are based on top of the open11s
+patches which are not yet in Rawhide.  They will disappear when those
+later patches get merged to net-2.6.26 (probably in a few days).
+
+	mac80211: always insert key into list
+	mac80211: fix hardware scan completion
+
+diff -up linux-2.6.24.noarch/net/mac80211/key.c.orig linux-2.6.24.noarch/net/mac80211/key.c
+--- linux-2.6.24.noarch/net/mac80211/key.c.orig	2008-03-04 19:40:41.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/key.c	2008-03-04 19:43:13.000000000 -0500
+@@ -174,6 +174,9 @@ static void __ieee80211_key_replace(stru
+ {
+ 	int idx, defkey;
+ 
++	if (new)
++		list_add(&new->list, &sdata->key_list);
++
+ 	if (sta) {
+ 		rcu_assign_pointer(sta->key, new);
+ 	} else {
+@@ -190,9 +193,6 @@ static void __ieee80211_key_replace(stru
+ 			ieee80211_set_default_key(sdata, -1);
+ 
+ 		rcu_assign_pointer(sdata->keys[idx], new);
+-		if (new)
+-			list_add(&new->list, &sdata->key_list);
+-
+ 		if (defkey && new)
+ 			ieee80211_set_default_key(sdata, new->conf.keyidx);
+ 	}
+diff -up linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c.orig linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c
+--- linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c.orig	2008-03-04 19:40:41.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c	2008-03-04 19:48:19.000000000 -0500
+@@ -3401,22 +3401,27 @@ void ieee80211_scan_completed(struct iee
+ 
+ 	rcu_read_lock();
+ 	list_for_each_entry_rcu(sdata, &local->interfaces, list) {
+-
+ 		/* No need to wake the master device. */
+ 		if (sdata->dev == local->mdev)
+ 			continue;
+ 
+-		if (sdata->vif.type == IEEE80211_IF_TYPE_STA) {
+-			if (sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED)
+-				ieee80211_send_nullfunc(local, sdata, 0);
+-			ieee80211_sta_timer((unsigned long)sdata);
+-		}
++		/* Tell AP we're back */
++		if (sdata->vif.type == IEEE80211_IF_TYPE_STA &&
++		    sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED)
++			ieee80211_send_nullfunc(local, sdata, 0);
+ 
+ 		netif_wake_queue(sdata->dev);
+ 	}
+-	rcu_read_unlock();
+ 
+ done:
++	/* Restart STA timer for both SW and HW scan cases */
++	list_for_each_entry_rcu(sdata, &local->interfaces, list) {
++		if (sdata->vif.type == IEEE80211_IF_TYPE_STA)
++			ieee80211_sta_timer((unsigned long)sdata);
++	}
++
++	rcu_read_unlock();
++
+ 	sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+ 	if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
+ 		struct ieee80211_if_sta *ifsta = &sdata->u.sta;


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.473
retrieving revision 1.474
diff -u -r1.473 -r1.474
--- kernel.spec	4 Mar 2008 15:19:02 -0000	1.473
+++ kernel.spec	5 Mar 2008 01:09:02 -0000	1.474
@@ -609,6 +609,7 @@
 
 Patch680: linux-2.6-wireless.patch
 Patch681: linux-2.6-wireless-pending.patch
+Patch682: linux-2.6-wireless-pending-too.patch
 Patch690: linux-2.6-at76.patch
 
 Patch820: linux-2.6-compile-fixes.patch
@@ -1106,9 +1107,11 @@
 ApplyPatch linux-2.6-ata-quirk.patch
 
 # wireless patches headed for 2.6.25
-#ApplyPatch linux-2.6-wireless.patch
+ApplyPatch linux-2.6-wireless.patch
 # wireless patches headed for 2.6.26
 ApplyPatch linux-2.6-wireless-pending.patch
+# temporary backport of some later wireless patches
+ApplyPatch linux-2.6-wireless-pending-too.patch
 
 # Add misc wireless bits from upstream wireless tree
 ApplyPatch linux-2.6-at76.patch
@@ -1748,6 +1751,18 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL} -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf %{with_xen} xen
 
 %changelog
+* Tue Mar 04 2008 John W. Linville <linville at redhat.com>
+- libertas: fix sanity check on sequence number in command response
+- p54: fix EEPROM structure endianness
+- p54: fix eeprom parser length sanity checks
+- rndis_wlan: fix broken data copy
+- b43legacy: Fix module init message
+- libertas: compare the current command with response
+- rc80211-pid: fix rate adjustment
+- ssb: Add pcibios_enable_device() return value check
+- mac80211: always insert key into list (temporary backport)
+- mac80211: fix hardware scan completion (temporary backport)
+
 * Tue Mar 04 2008 Kyle McMartin <kmcmartin at redhat.com>
 - Linux 2.6.25-rc3-git5
 

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.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- linux-2.6-wireless-pending.patch	3 Mar 2008 22:02:24 -0000	1.32
+++ linux-2.6-wireless-pending.patch	5 Mar 2008 01:09:02 -0000	1.33
@@ -2315,8 +2315,8 @@
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
 diff -up linux-2.6.24.noarch/include/linux/nl80211.h.orig linux-2.6.24.noarch/include/linux/nl80211.h
---- linux-2.6.24.noarch/include/linux/nl80211.h.orig	2008-03-03 16:42:49.000000000 -0500
-+++ linux-2.6.24.noarch/include/linux/nl80211.h	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/include/linux/nl80211.h.orig	2008-03-04 19:28:34.000000000 -0500
++++ linux-2.6.24.noarch/include/linux/nl80211.h	2008-03-04 19:35:31.000000000 -0500
 @@ -161,6 +161,12 @@ enum nl80211_commands {
   *	given for %NL80211_CMD_GET_STATION, nested attribute containing
   *	info as possible, see &enum nl80211_sta_stats.
@@ -2436,8 +2436,8 @@
 +
  #endif /* __LINUX_NL80211_H */
 diff -up linux-2.6.24.noarch/include/linux/ssb/ssb_driver_chipcommon.h.orig linux-2.6.24.noarch/include/linux/ssb/ssb_driver_chipcommon.h
---- linux-2.6.24.noarch/include/linux/ssb/ssb_driver_chipcommon.h.orig	2008-03-03 16:42:49.000000000 -0500
-+++ linux-2.6.24.noarch/include/linux/ssb/ssb_driver_chipcommon.h	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/include/linux/ssb/ssb_driver_chipcommon.h.orig	2008-03-04 19:28:34.000000000 -0500
++++ linux-2.6.24.noarch/include/linux/ssb/ssb_driver_chipcommon.h	2008-03-04 19:35:31.000000000 -0500
 @@ -390,6 +390,10 @@ extern void ssb_chipco_set_clockmode(str
  extern void ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc,
  					  u32 ticks);
@@ -2450,8 +2450,8 @@
  u32 ssb_chipco_gpio_in(struct ssb_chipcommon *cc, u32 mask);
  u32 ssb_chipco_gpio_out(struct ssb_chipcommon *cc, u32 mask, u32 value);
 diff -up linux-2.6.24.noarch/include/linux/ssb/ssb.h.orig linux-2.6.24.noarch/include/linux/ssb/ssb.h
---- linux-2.6.24.noarch/include/linux/ssb/ssb.h.orig	2008-03-03 16:42:49.000000000 -0500
-+++ linux-2.6.24.noarch/include/linux/ssb/ssb.h	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/include/linux/ssb/ssb.h.orig	2008-03-04 19:28:34.000000000 -0500
++++ linux-2.6.24.noarch/include/linux/ssb/ssb.h	2008-03-04 19:35:31.000000000 -0500
 @@ -72,8 +72,10 @@ struct ssb_device;
  /* Lowlevel read/write operations on the device MMIO.
   * Internal, don't use that outside of ssb. */
@@ -2487,7 +2487,7 @@
  	dev->ops->write16(dev, offset, value);
 diff -up linux-2.6.24.noarch/include/net/wireless.h.orig linux-2.6.24.noarch/include/net/wireless.h
 --- linux-2.6.24.noarch/include/net/wireless.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/include/net/wireless.h	2008-03-03 16:46:19.000000000 -0500
++++ linux-2.6.24.noarch/include/net/wireless.h	2008-03-04 19:35:31.000000000 -0500
 @@ -13,6 +13,162 @@
  #include <net/cfg80211.h>
  
@@ -2676,8 +2676,8 @@
 +
  #endif /* __NET_WIRELESS_H */
 diff -up linux-2.6.24.noarch/include/net/cfg80211.h.orig linux-2.6.24.noarch/include/net/cfg80211.h
---- linux-2.6.24.noarch/include/net/cfg80211.h.orig	2008-03-03 16:42:49.000000000 -0500
-+++ linux-2.6.24.noarch/include/net/cfg80211.h	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/include/net/cfg80211.h.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/include/net/cfg80211.h	2008-03-04 19:35:31.000000000 -0500
 @@ -163,6 +163,26 @@ struct station_stats {
  	u32 tx_bytes;
  };
@@ -2719,8 +2719,8 @@
  	int	(*add_key)(struct wiphy *wiphy, struct net_device *netdev,
  			   u8 key_index, u8 *mac_addr,
 diff -up linux-2.6.24.noarch/include/net/mac80211.h.orig linux-2.6.24.noarch/include/net/mac80211.h
---- linux-2.6.24.noarch/include/net/mac80211.h.orig	2008-03-03 16:42:49.000000000 -0500
-+++ linux-2.6.24.noarch/include/net/mac80211.h	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/include/net/mac80211.h.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/include/net/mac80211.h	2008-03-04 19:35:31.000000000 -0500
 @@ -38,7 +38,11 @@
   * called in hardware interrupt context. The low-level driver must not call any
   * other functions in hardware interrupt context. If there is a need for such
@@ -3384,7 +3384,7 @@
  #endif /* MAC80211_H */
 diff -up linux-2.6.24.noarch/net/mac80211/wme.h.orig linux-2.6.24.noarch/net/mac80211/wme.h
 --- linux-2.6.24.noarch/net/mac80211/wme.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/wme.h	2008-03-03 16:46:19.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/wme.h	2008-03-04 19:35:31.000000000 -0500
 @@ -24,6 +24,8 @@
  
  #define QOS_CONTROL_TAG1D_MASK 0x07
@@ -3431,7 +3431,7 @@
  	return 0;
 diff -up linux-2.6.24.noarch/net/mac80211/wep.h.orig linux-2.6.24.noarch/net/mac80211/wep.h
 --- linux-2.6.24.noarch/net/mac80211/wep.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/wep.h	2008-03-03 16:46:19.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/wep.h	2008-03-04 19:35:31.000000000 -0500
 @@ -28,9 +28,9 @@ int ieee80211_wep_decrypt(struct ieee802
  			  struct ieee80211_key *key);
  u8 * ieee80211_wep_is_weak_iv(struct sk_buff *skb, struct ieee80211_key *key);
@@ -3445,8 +3445,8 @@
  
  #endif /* WEP_H */
 diff -up linux-2.6.24.noarch/net/mac80211/rx.c.orig linux-2.6.24.noarch/net/mac80211/rx.c
---- linux-2.6.24.noarch/net/mac80211/rx.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/rx.c	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/rx.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/rx.c	2008-03-04 19:35:31.000000000 -0500
 @@ -9,6 +9,7 @@
   * published by the Free Software Foundation.
   */
@@ -4615,8 +4615,8 @@
  	rcu_read_unlock();
  }
 diff -up linux-2.6.24.noarch/net/mac80211/ieee80211_iface.c.orig linux-2.6.24.noarch/net/mac80211/ieee80211_iface.c
---- linux-2.6.24.noarch/net/mac80211/ieee80211_iface.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/ieee80211_iface.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/ieee80211_iface.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/ieee80211_iface.c	2008-03-04 19:35:31.000000000 -0500
 @@ -118,6 +118,8 @@ void ieee80211_if_set_type(struct net_de
  	sdata->bss = NULL;
  	sdata->vif.type = type;
@@ -4656,8 +4656,8 @@
  		while ((skb = skb_dequeue(&sdata->u.ap.ps_bc_buf))) {
  			local->total_ps_buffered--;
 diff -up linux-2.6.24.noarch/net/mac80211/ieee80211_ioctl.c.orig linux-2.6.24.noarch/net/mac80211/ieee80211_ioctl.c
---- linux-2.6.24.noarch/net/mac80211/ieee80211_ioctl.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/ieee80211_ioctl.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/ieee80211_ioctl.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/ieee80211_ioctl.c	2008-03-04 19:35:31.000000000 -0500
 @@ -33,8 +33,8 @@ static int ieee80211_set_encryption(stru
  				    size_t key_len)
  {
@@ -5022,7 +5022,7 @@
  	if (local->hw.conf.power_level != new_power_level) {
 diff -up linux-2.6.24.noarch/net/mac80211/debugfs_sta.c.orig linux-2.6.24.noarch/net/mac80211/debugfs_sta.c
 --- linux-2.6.24.noarch/net/mac80211/debugfs_sta.c.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/debugfs_sta.c	2008-03-03 16:47:32.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/debugfs_sta.c	2008-03-04 19:35:31.000000000 -0500
 @@ -33,25 +33,16 @@ static ssize_t sta_ ##name## _read(struc
  #define STA_READ_LU(name, field) STA_READ(name, 20, field, "%lu\n")
  #define STA_READ_S(name, field) STA_READ(name, 20, field, "%s\n")
@@ -5272,8 +5272,8 @@
  	debugfs_remove(sta->debugfs.dir);
  	sta->debugfs.dir = NULL;
 diff -up linux-2.6.24.noarch/net/mac80211/ieee80211_rate.c.orig linux-2.6.24.noarch/net/mac80211/ieee80211_rate.c
---- linux-2.6.24.noarch/net/mac80211/ieee80211_rate.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/ieee80211_rate.c	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/ieee80211_rate.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/ieee80211_rate.c	2008-03-04 19:35:31.000000000 -0500
 @@ -163,7 +163,8 @@ static void rate_control_release(struct 
  }
  
@@ -5309,8 +5309,8 @@
  		}
  	}
 diff -up linux-2.6.24.noarch/net/mac80211/Makefile.orig linux-2.6.24.noarch/net/mac80211/Makefile
---- linux-2.6.24.noarch/net/mac80211/Makefile.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/Makefile	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/Makefile.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/Makefile	2008-03-04 19:35:31.000000000 -0500
 @@ -19,7 +19,6 @@ mac80211-y := \
  	ieee80211_iface.o \
  	ieee80211_rate.o \
@@ -5321,7 +5321,7 @@
  	cfg.o \
 diff -up linux-2.6.24.noarch/net/mac80211/regdomain.c.orig linux-2.6.24.noarch/net/mac80211/regdomain.c
 --- linux-2.6.24.noarch/net/mac80211/regdomain.c.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/regdomain.c	2008-03-03 16:46:19.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/regdomain.c	2008-03-04 19:35:31.000000000 -0500
 @@ -1,152 +0,0 @@
 -/*
 - * Copyright 2002-2005, Instant802 Networks, Inc.
@@ -5476,134 +5476,72 @@
 -}
 -
 diff -up linux-2.6.24.noarch/net/mac80211/rc80211_pid_algo.c.orig linux-2.6.24.noarch/net/mac80211/rc80211_pid_algo.c
---- linux-2.6.24.noarch/net/mac80211/rc80211_pid_algo.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/rc80211_pid_algo.c	2008-03-03 16:47:32.000000000 -0500
-@@ -2,7 +2,7 @@
-  * Copyright 2002-2005, Instant802 Networks, Inc.
-  * Copyright 2005, Devicescape Software, Inc.
-  * Copyright 2007, Mattias Nissler <mattias.nissler at gmx.de>
-- * Copyright 2007, Stefano Brivio <stefano.brivio at polimi.it>
-+ * Copyright 2007-2008, Stefano Brivio <stefano.brivio at polimi.it>
-  *
-  * This program is free software; you can redistribute it and/or modify
-  * it under the terms of the GNU General Public License version 2 as
-@@ -64,71 +64,66 @@
+--- linux-2.6.24.noarch/net/mac80211/rc80211_pid_algo.c.orig	2008-03-04 19:32:48.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/rc80211_pid_algo.c	2008-03-04 19:37:37.000000000 -0500
+@@ -63,6 +63,7 @@
+  * RC_PID_ARITH_SHIFT.
   */
  
- 
--/* Shift the adjustment so that we won't switch to a lower rate if it exhibited
-- * a worse failed frames behaviour and we'll choose the highest rate whose
-- * failed frames behaviour is not worse than the one of the original rate
-- * target. While at it, check that the adjustment is within the ranges. Then,
-- * provide the new rate index. */
--static int rate_control_pid_shift_adjust(struct rc_pid_rateinfo *r,
--					 int adj, int cur, int l)
--{
--	int i, j, k, tmp;
--
--	j = r[cur].rev_index;
--	i = j + adj;
--
--	if (i < 0)
--		return r[0].index;
--	if (i >= l - 1)
--		return r[l - 1].index;
--
--	tmp = i;
--
--	if (adj < 0) {
--		for (k = j; k >= i; k--)
--			if (r[k].diff <= r[j].diff)
--				tmp = k;
--	} else {
--		for (k = i + 1; k + i < l; k++)
--			if (r[k].diff <= r[i].diff)
--				tmp = k;
--	}
--
--	return r[tmp].index;
--}
--
-+/* Adjust the rate while ensuring that we won't switch to a lower rate if it
-+ * exhibited a worse failed frames behaviour and we'll choose the highest rate
-+ * whose failed frames behaviour is not worse than the one of the original rate
-+ * target. While at it, check that the new rate is valid. */
- static void rate_control_pid_adjust_rate(struct ieee80211_local *local,
- 					 struct sta_info *sta, int adj,
++
+ /* Adjust the rate while ensuring that we won't switch to a lower rate if it
+  * exhibited a worse failed frames behaviour and we'll choose the highest rate
+  * whose failed frames behaviour is not worse than the one of the original rate
+@@ -72,14 +73,14 @@ static void rate_control_pid_adjust_rate
  					 struct rc_pid_rateinfo *rinfo)
  {
  	struct ieee80211_sub_if_data *sdata;
 -	struct ieee80211_hw_mode *mode;
--	int newidx;
--	int maxrate;
--	int back = (adj > 0) ? 1 : -1;
+-	int cur_sorted, new_sorted, probe, tmp, n_bitrates;
+-	int cur = sta->txrate;
 +	struct ieee80211_supported_band *sband;
 +	int cur_sorted, new_sorted, probe, tmp, n_bitrates, band;
 +	int cur = sta->txrate_idx;
  
  	sdata = IEEE80211_DEV_TO_SUB_IF(sta->dev);
+-
+-	mode = local->oper_hw_mode;
+-	n_bitrates = mode->num_rates;
 +	sband = local->hw.wiphy->bands[local->hw.conf.channel->band];
 +	band = sband->band;
 +	n_bitrates = sband->n_bitrates;
-+
-+	/* Map passed arguments to sorted values. */
-+	cur_sorted = rinfo[cur].rev_index;
-+	new_sorted = cur_sorted + adj;
-+
-+	/* Check limits. */
-+	if (new_sorted < 0)
-+		new_sorted = rinfo[0].rev_index;
-+	else if (new_sorted >= n_bitrates)
-+		new_sorted = rinfo[n_bitrates - 1].rev_index;
- 
--	mode = local->oper_hw_mode;
--	maxrate = sdata->bss ? sdata->bss->max_ratectrl_rateidx : -1;
-+	tmp = new_sorted;
  
--	newidx = rate_control_pid_shift_adjust(rinfo, adj, sta->txrate,
--					       mode->num_rates);
-+	if (adj < 0) {
-+		/* Ensure that the rate decrease isn't disadvantageous. */
-+		for (probe = cur_sorted; probe >= new_sorted; probe--)
-+			if (rinfo[probe].diff <= rinfo[cur_sorted].diff &&
+ 	/* Map passed arguments to sorted values. */
+ 	cur_sorted = rinfo[cur].rev_index;
+@@ -97,20 +98,20 @@ static void rate_control_pid_adjust_rate
+ 		/* Ensure that the rate decrease isn't disadvantageous. */
+ 		for (probe = cur_sorted; probe >= new_sorted; probe--)
+ 			if (rinfo[probe].diff <= rinfo[cur_sorted].diff &&
+-			    rate_supported(sta, mode, rinfo[probe].index))
 +			    rate_supported(sta, band, rinfo[probe].index))
-+				tmp = probe;
-+	} else {
-+		/* Look for rate increase with zero (or below) cost. */
-+		for (probe = new_sorted + 1; probe < n_bitrates; probe++)
-+			if (rinfo[probe].diff <= rinfo[new_sorted].diff &&
+ 				tmp = probe;
+ 	} else {
+ 		/* Look for rate increase with zero (or below) cost. */
+ 		for (probe = new_sorted + 1; probe < n_bitrates; probe++)
+ 			if (rinfo[probe].diff <= rinfo[new_sorted].diff &&
+-			    rate_supported(sta, mode, rinfo[probe].index))
 +			    rate_supported(sta, band, rinfo[probe].index))
-+				tmp = probe;
-+	}
+ 				tmp = probe;
+ 	}
  
--	while (newidx != sta->txrate) {
--		if (rate_supported(sta, mode, newidx) &&
--		    (maxrate < 0 || newidx <= maxrate)) {
--			sta->txrate = newidx;
-+	/* Fit the rate found to the nearest supported rate. */
-+	do {
+ 	/* Fit the rate found to the nearest supported rate. */
+ 	do {
+-		if (rate_supported(sta, mode, rinfo[tmp].index)) {
+-			sta->txrate = rinfo[tmp].index;
 +		if (rate_supported(sta, band, rinfo[tmp].index)) {
 +			sta->txrate_idx = rinfo[tmp].index;
  			break;
  		}
--
--		newidx += back;
--	}
-+		if (adj < 0)
-+			tmp--;
-+		else
-+			tmp++;
-+	} while (tmp < n_bitrates && tmp >= 0);
- 
+ 		if (adj < 0)
+@@ -122,7 +123,7 @@ static void rate_control_pid_adjust_rate
  #ifdef CONFIG_MAC80211_DEBUGFS
  	rate_control_pid_event_rate_change(
  		&((struct rc_pid_sta_info *)sta->rate_ctrl_priv)->events,
--		newidx, mode->rates[newidx].rate);
+-		cur, mode->rates[cur].rate);
 +		sta->txrate_idx, sband->bitrates[sta->txrate_idx].bitrate);
  #endif
  }
  
-@@ -155,7 +150,7 @@ static void rate_control_pid_sample(stru
+@@ -149,7 +150,7 @@ static void rate_control_pid_sample(stru
  {
  	struct rc_pid_sta_info *spinfo = sta->rate_ctrl_priv;
  	struct rc_pid_rateinfo *rinfo = pinfo->rinfo;
@@ -5612,7 +5550,7 @@
  	u32 pf;
  	s32 err_avg;
  	u32 err_prop;
-@@ -164,7 +159,7 @@ static void rate_control_pid_sample(stru
+@@ -158,7 +159,7 @@ static void rate_control_pid_sample(stru
  	int adj, i, j, tmp;
  	unsigned long period;
  
@@ -5621,7 +5559,7 @@
  	spinfo = sta->rate_ctrl_priv;
  
  	/* In case nothing happened during the previous control interval, turn
-@@ -190,18 +185,18 @@ static void rate_control_pid_sample(stru
+@@ -184,18 +185,18 @@ static void rate_control_pid_sample(stru
  	spinfo->tx_num_failed = 0;
  
  	/* If we just switched rate, update the rate behaviour info. */
@@ -5644,7 +5582,7 @@
  
  	/* Compute the proportional, integral and derivative errors. */
  	err_prop = (pinfo->target << RC_PID_ARITH_SHIFT) - pf;
-@@ -242,8 +237,10 @@ static void rate_control_pid_tx_status(v
+@@ -236,8 +237,10 @@ static void rate_control_pid_tx_status(v
  	struct sta_info *sta;
  	struct rc_pid_sta_info *spinfo;
  	unsigned long period;
@@ -5655,7 +5593,7 @@
  
  	if (!sta)
  		return;
-@@ -251,13 +248,13 @@ static void rate_control_pid_tx_status(v
+@@ -245,13 +248,13 @@ static void rate_control_pid_tx_status(v
  	/* Don't update the state if we're not controlling the rate. */
  	sdata = IEEE80211_DEV_TO_SUB_IF(sta->dev);
  	if (sdata->bss && sdata->bss->force_unicast_rateidx > -1) {
@@ -5671,7 +5609,7 @@
  		goto ignore;
  
  	spinfo = sta->rate_ctrl_priv;
-@@ -283,9 +280,6 @@ static void rate_control_pid_tx_status(v
+@@ -277,9 +280,6 @@ static void rate_control_pid_tx_status(v
  		sta->tx_num_consecutive_failures++;
  		sta->tx_num_mpdu_fail++;
  	} else {
@@ -5681,7 +5619,7 @@
  		sta->tx_num_consecutive_failures = 0;
  		sta->tx_num_mpdu_ok++;
  	}
-@@ -304,7 +298,7 @@ ignore:
+@@ -298,7 +298,7 @@ ignore:
  }
  
  static void rate_control_pid_get_rate(void *priv, struct net_device *dev,
@@ -5690,7 +5628,7 @@
  				      struct sk_buff *skb,
  				      struct rate_selection *sel)
  {
-@@ -322,7 +316,7 @@ static void rate_control_pid_get_rate(vo
+@@ -316,7 +316,7 @@ static void rate_control_pid_get_rate(vo
  	fc = le16_to_cpu(hdr->frame_control);
  	if ((fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA ||
  	    is_multicast_ether_addr(hdr->addr1) || !sta) {
@@ -5699,7 +5637,7 @@
  		if (sta)
  			sta_info_put(sta);
  		return;
-@@ -331,23 +325,23 @@ static void rate_control_pid_get_rate(vo
+@@ -325,23 +325,23 @@ static void rate_control_pid_get_rate(vo
  	/* If a forced rate is in effect, select it. */
  	sdata = IEEE80211_DEV_TO_SUB_IF(dev);
  	if (sdata->bss && sdata->bss->force_unicast_rateidx > -1)
@@ -5730,7 +5668,7 @@
  #endif
  }
  
-@@ -359,28 +353,32 @@ static void rate_control_pid_rate_init(v
+@@ -353,28 +353,32 @@ static void rate_control_pid_rate_init(v
  	 * as we need to have IEEE 802.1X auth succeed immediately after assoc..
  	 * Until that method is implemented, we will use the lowest supported
  	 * rate as a workaround. */
@@ -5768,7 +5706,7 @@
  	if (!rinfo) {
  		kfree(pinfo);
  		return NULL;
-@@ -389,7 +387,7 @@ static void *rate_control_pid_alloc(stru
+@@ -383,7 +387,7 @@ static void *rate_control_pid_alloc(stru
  	/* Sort the rates. This is optimized for the most common case (i.e.
  	 * almost-sorted CCK+OFDM rates). Kind of bubble-sort with reversed
  	 * mapping too. */
@@ -5777,7 +5715,7 @@
  		rinfo[i].index = i;
  		rinfo[i].rev_index = i;
  		if (pinfo->fast_start)
-@@ -397,11 +395,11 @@ static void *rate_control_pid_alloc(stru
+@@ -391,11 +395,11 @@ static void *rate_control_pid_alloc(stru
  		else
  			rinfo[i].diff = i * pinfo->norm_offset;
  	}
@@ -5795,7 +5733,7 @@
  				rinfo[j + 1].index = tmp;
 diff -up linux-2.6.24.noarch/net/mac80211/debugfs.c.orig linux-2.6.24.noarch/net/mac80211/debugfs.c
 --- linux-2.6.24.noarch/net/mac80211/debugfs.c.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/debugfs.c	2008-03-03 16:46:19.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/debugfs.c	2008-03-04 19:35:35.000000000 -0500
 @@ -19,41 +19,6 @@ int mac80211_open_file_generic(struct in
  	return 0;
  }
@@ -5896,8 +5834,8 @@
  	DEBUGFS_STATS_DEL(transmitted_fragment_count);
  	DEBUGFS_STATS_DEL(multicast_transmitted_frame_count);
 diff -up linux-2.6.24.noarch/net/mac80211/key.c.orig linux-2.6.24.noarch/net/mac80211/key.c
---- linux-2.6.24.noarch/net/mac80211/key.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/key.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/key.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/key.c	2008-03-04 19:35:35.000000000 -0500
 @@ -13,6 +13,7 @@
  #include <linux/etherdevice.h>
  #include <linux/list.h>
@@ -6169,8 +6107,8 @@
  		ieee80211_key_disable_hw_accel(key);
  }
 diff -up linux-2.6.24.noarch/net/mac80211/ieee80211.c.orig linux-2.6.24.noarch/net/mac80211/ieee80211.c
---- linux-2.6.24.noarch/net/mac80211/ieee80211.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/ieee80211.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/ieee80211.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/ieee80211.c	2008-03-04 19:35:35.000000000 -0500
 @@ -67,9 +67,19 @@ static void ieee80211_configure_filter(s
  		new_flags |= FIF_ALLMULTI;
  
@@ -7245,8 +7183,8 @@
  	return 0;
  
 diff -up linux-2.6.24.noarch/net/mac80211/wme.c.orig linux-2.6.24.noarch/net/mac80211/wme.c
---- linux-2.6.24.noarch/net/mac80211/wme.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/wme.c	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/wme.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/wme.c	2008-03-04 19:35:35.000000000 -0500
 @@ -19,10 +19,13 @@
  #include "wme.h"
  
@@ -7447,7 +7385,7 @@
 +}
 diff -up linux-2.6.24.noarch/net/mac80211/ieee80211_key.h.orig linux-2.6.24.noarch/net/mac80211/ieee80211_key.h
 --- linux-2.6.24.noarch/net/mac80211/ieee80211_key.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/ieee80211_key.h	2008-03-03 16:47:32.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/ieee80211_key.h	2008-03-04 19:35:35.000000000 -0500
 @@ -13,6 +13,7 @@
  #include <linux/types.h>
  #include <linux/list.h>
@@ -7499,8 +7437,8 @@
  void ieee80211_set_default_key(struct ieee80211_sub_if_data *sdata, int idx);
  void ieee80211_free_keys(struct ieee80211_sub_if_data *sdata);
 diff -up linux-2.6.24.noarch/net/mac80211/rc80211_simple.c.orig linux-2.6.24.noarch/net/mac80211/rc80211_simple.c
---- linux-2.6.24.noarch/net/mac80211/rc80211_simple.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/rc80211_simple.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/rc80211_simple.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/rc80211_simple.c	2008-03-04 19:35:35.000000000 -0500
 @@ -7,6 +7,7 @@
   * published by the Free Software Foundation.
   */
@@ -7676,8 +7614,8 @@
  
  
 diff -up linux-2.6.24.noarch/net/mac80211/ieee80211_rate.h.orig linux-2.6.24.noarch/net/mac80211/ieee80211_rate.h
---- linux-2.6.24.noarch/net/mac80211/ieee80211_rate.h.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/ieee80211_rate.h	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/ieee80211_rate.h.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/ieee80211_rate.h	2008-03-04 19:35:35.000000000 -0500
 @@ -18,6 +18,7 @@
  #include "ieee80211_i.h"
  #include "sta_info.h"
@@ -7753,8 +7691,8 @@
  
  
 diff -up linux-2.6.24.noarch/net/mac80211/ieee80211_i.h.orig linux-2.6.24.noarch/net/mac80211/ieee80211_i.h
---- linux-2.6.24.noarch/net/mac80211/ieee80211_i.h.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/ieee80211_i.h	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/ieee80211_i.h.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/ieee80211_i.h	2008-03-04 19:35:35.000000000 -0500
 @@ -79,8 +79,7 @@ struct ieee80211_sta_bss {
  	u8 ssid[IEEE80211_MAX_SSID_LEN];
  	size_t ssid_len;
@@ -8161,8 +8099,8 @@
  void ieee80211_tx_pending(unsigned long data);
  int ieee80211_master_start_xmit(struct sk_buff *skb, struct net_device *dev);
 diff -up linux-2.6.24.noarch/net/mac80211/cfg.c.orig linux-2.6.24.noarch/net/mac80211/cfg.c
---- linux-2.6.24.noarch/net/mac80211/cfg.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/cfg.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/cfg.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/cfg.c	2008-03-04 19:35:35.000000000 -0500
 @@ -34,10 +34,13 @@ nl80211_type_to_mac80211_type(enum nl802
  }
  
@@ -8337,8 +8275,8 @@
  	sta->dev = sdata->dev;
  	if (sdata->vif.type == IEEE80211_IF_TYPE_VLAN ||
 diff -up linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c.orig linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c
---- linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c	2008-03-04 19:35:35.000000000 -0500
 @@ -74,7 +74,7 @@
  static void ieee80211_send_probe_req(struct net_device *dev, u8 *dst,
  				     u8 *ssid, size_t ssid_len);
@@ -9882,8 +9820,8 @@
  	rate_control_rate_init(sta, local);
  
 diff -up linux-2.6.24.noarch/net/mac80211/sta_info.h.orig linux-2.6.24.noarch/net/mac80211/sta_info.h
---- linux-2.6.24.noarch/net/mac80211/sta_info.h.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/sta_info.h	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/sta_info.h.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/sta_info.h	2008-03-04 19:35:35.000000000 -0500
 @@ -15,31 +15,72 @@
  #include <linux/kref.h>
  #include "ieee80211_key.h"
@@ -10078,8 +10016,8 @@
 +
  #endif /* STA_INFO_H */
 diff -up linux-2.6.24.noarch/net/mac80211/tx.c.orig linux-2.6.24.noarch/net/mac80211/tx.c
---- linux-2.6.24.noarch/net/mac80211/tx.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/tx.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/tx.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/tx.c	2008-03-04 19:35:35.000000000 -0500
 @@ -92,9 +92,13 @@ static u16 ieee80211_duration(struct iee
  	int rate, mrate, erp, dur, i;
  	struct ieee80211_rate *txrate = tx->u.tx.rate;
@@ -10948,8 +10886,8 @@
  		skb = NULL;
  	}
 diff -up linux-2.6.24.noarch/net/mac80211/sta_info.c.orig linux-2.6.24.noarch/net/mac80211/sta_info.c
---- linux-2.6.24.noarch/net/mac80211/sta_info.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/sta_info.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/sta_info.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/sta_info.c	2008-03-04 19:35:35.000000000 -0500
 @@ -55,48 +55,34 @@ static int sta_info_hash_del(struct ieee
  	return -ENOENT;
  }
@@ -11243,8 +11181,8 @@
   * sta_info_flush - flush matching STA entries from the STA table
   * @local: local interface data
 diff -up linux-2.6.24.noarch/net/mac80211/wep.c.orig linux-2.6.24.noarch/net/mac80211/wep.c
---- linux-2.6.24.noarch/net/mac80211/wep.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/wep.c	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/wep.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/wep.c	2008-03-04 19:35:35.000000000 -0500
 @@ -305,13 +305,13 @@ u8 * ieee80211_wep_is_weak_iv(struct sk_
  	return NULL;
  }
@@ -11312,7 +11250,7 @@
  }
 diff -up linux-2.6.24.noarch/net/mac80211/wpa.h.orig linux-2.6.24.noarch/net/mac80211/wpa.h
 --- linux-2.6.24.noarch/net/mac80211/wpa.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/wpa.h	2008-03-03 16:46:19.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/wpa.h	2008-03-04 19:35:35.000000000 -0500
 @@ -13,19 +13,19 @@
  #include <linux/types.h>
  #include "ieee80211_i.h"
@@ -11340,8 +11278,8 @@
  
  #endif /* WPA_H */
 diff -up linux-2.6.24.noarch/net/mac80211/util.c.orig linux-2.6.24.noarch/net/mac80211/util.c
---- linux-2.6.24.noarch/net/mac80211/util.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/util.c	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/util.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/util.c	2008-03-04 19:35:35.000000000 -0500
 @@ -41,92 +41,6 @@ const unsigned char bridge_tunnel_header
  	{ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 };
  
@@ -11544,8 +11482,8 @@
  {
  	struct ieee80211_local *local = hw_to_local(hw);
 diff -up linux-2.6.24.noarch/net/mac80211/debugfs_netdev.c.orig linux-2.6.24.noarch/net/mac80211/debugfs_netdev.c
---- linux-2.6.24.noarch/net/mac80211/debugfs_netdev.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/debugfs_netdev.c	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/debugfs_netdev.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/debugfs_netdev.c	2008-03-04 19:35:35.000000000 -0500
 @@ -91,7 +91,6 @@ static const struct file_operations name
  /* common attributes */
  IEEE80211_IF_FILE(channel_use, channel_use, DEC);
@@ -11619,8 +11557,8 @@
  
  static void del_monitor_files(struct ieee80211_sub_if_data *sdata)
 diff -up linux-2.6.24.noarch/net/mac80211/wpa.c.orig linux-2.6.24.noarch/net/mac80211/wpa.c
---- linux-2.6.24.noarch/net/mac80211/wpa.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/wpa.c	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/mac80211/wpa.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/wpa.c	2008-03-04 19:35:35.000000000 -0500
 @@ -70,7 +70,7 @@ static int ieee80211_get_hdr_info(const 
  }
  
@@ -11887,8 +11825,8 @@
 +	return RX_CONTINUE;
  }
 diff -up linux-2.6.24.noarch/net/wireless/nl80211.c.orig linux-2.6.24.noarch/net/wireless/nl80211.c
---- linux-2.6.24.noarch/net/wireless/nl80211.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/wireless/nl80211.c	2008-03-03 16:46:19.000000000 -0500
+--- linux-2.6.24.noarch/net/wireless/nl80211.c.orig	2008-03-04 19:28:36.000000000 -0500
++++ linux-2.6.24.noarch/net/wireless/nl80211.c	2008-03-04 19:35:35.000000000 -0500
 @@ -82,6 +82,7 @@ static struct nla_policy nl80211_policy[
  	[NL80211_ATTR_STA_SUPPORTED_RATES] = { .type = NLA_BINARY,
  					       .len = NL80211_MAX_SUPP_RATES },
@@ -12065,7 +12003,7 @@
   unlock:
 diff -up linux-2.6.24.noarch/net/wireless/Makefile.orig linux-2.6.24.noarch/net/wireless/Makefile
 --- linux-2.6.24.noarch/net/wireless/Makefile.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/net/wireless/Makefile	2008-03-03 16:46:19.000000000 -0500
++++ linux-2.6.24.noarch/net/wireless/Makefile	2008-03-04 19:35:35.000000000 -0500
 @@ -1,5 +1,5 @@
  obj-$(CONFIG_WIRELESS_EXT) += wext.o
  obj-$(CONFIG_CFG80211) += cfg80211.o
@@ -12074,8 +12012,8 @@
 +cfg80211-y += core.o sysfs.o radiotap.o util.o reg.o
  cfg80211-$(CONFIG_NL80211) += nl80211.o
 diff -up /dev/null linux-2.6.24.noarch/net/wireless/reg.c
---- /dev/null	2008-03-03 08:19:02.806638585 -0500
-+++ linux-2.6.24.noarch/net/wireless/reg.c	2008-03-03 16:46:20.000000000 -0500
+--- /dev/null	2008-03-04 08:34:47.546307750 -0500
++++ linux-2.6.24.noarch/net/wireless/reg.c	2008-03-04 19:35:35.000000000 -0500
 @@ -0,0 +1,159 @@
 +/*
 + * Copyright 2002-2005, Instant802 Networks, Inc.
@@ -12238,7 +12176,7 @@
 +}
 diff -up linux-2.6.24.noarch/net/wireless/core.h.orig linux-2.6.24.noarch/net/wireless/core.h
 --- linux-2.6.24.noarch/net/wireless/core.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/net/wireless/core.h	2008-03-03 16:46:20.000000000 -0500
++++ linux-2.6.24.noarch/net/wireless/core.h	2008-03-04 19:35:35.000000000 -0500
 @@ -78,4 +78,7 @@ extern void cfg80211_dev_free(struct cfg
  extern int cfg80211_dev_rename(struct cfg80211_registered_device *drv,
  			       char *newname);
@@ -12248,8 +12186,8 @@
 +
  #endif /* __NET_WIRELESS_CORE_H */
 diff -up linux-2.6.24.noarch/net/wireless/core.c.orig linux-2.6.24.noarch/net/wireless/core.c
---- linux-2.6.24.noarch/net/wireless/core.c.orig	2008-03-03 16:42:50.000000000 -0500
-+++ linux-2.6.24.noarch/net/wireless/core.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/net/wireless/core.c.orig	2008-03-04 19:28:36.000000000 -0500
++++ linux-2.6.24.noarch/net/wireless/core.c	2008-03-04 19:35:35.000000000 -0500
 @@ -232,6 +232,47 @@ int wiphy_register(struct wiphy *wiphy)
  {
  	struct cfg80211_registered_device *drv = wiphy_to_dev(wiphy);
@@ -12299,8 +12237,8 @@
  	mutex_lock(&cfg80211_drv_mutex);
  
 diff -up /dev/null linux-2.6.24.noarch/net/wireless/util.c
---- /dev/null	2008-03-03 08:19:02.806638585 -0500
-+++ linux-2.6.24.noarch/net/wireless/util.c	2008-03-03 16:46:20.000000000 -0500
+--- /dev/null	2008-03-04 08:34:47.546307750 -0500
++++ linux-2.6.24.noarch/net/wireless/util.c	2008-03-04 19:35:35.000000000 -0500
 @@ -0,0 +1,98 @@
 +/*
 + * Wireless utility functions
@@ -12401,8 +12339,8 @@
 +			set_mandatory_flags_band(wiphy->bands[band], band);
 +}
 diff -up linux-2.6.24.noarch/drivers/net/wireless/p54common.h.orig linux-2.6.24.noarch/drivers/net/wireless/p54common.h
---- linux-2.6.24.noarch/drivers/net/wireless/p54common.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/p54common.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/p54common.h.orig	2008-03-04 19:32:48.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/p54common.h	2008-03-04 19:35:36.000000000 -0500
 @@ -251,79 +251,4 @@ struct p54_tx_control_vdcf {
  	__le16 frameburst;
  } __attribute__ ((packed));
@@ -12484,8 +12422,8 @@
 -
  #endif /* PRISM54COMMON_H */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/p54common.c.orig linux-2.6.24.noarch/drivers/net/wireless/p54common.c
---- linux-2.6.24.noarch/drivers/net/wireless/p54common.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/p54common.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/p54common.c.orig	2008-03-04 19:32:48.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/p54common.c	2008-03-04 19:35:36.000000000 -0500
 @@ -27,6 +27,46 @@ MODULE_DESCRIPTION("Softmac Prism54 comm
  MODULE_LICENSE("GPL");
  MODULE_ALIAS("prism54common");
@@ -12533,9 +12471,9 @@
  void p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw)
  {
  	struct p54_common *priv = dev->priv;
-@@ -251,6 +291,10 @@ int p54_parse_eeprom(struct ieee80211_hw
- 		case PDR_END:
- 			i = len;
+@@ -257,6 +297,10 @@ int p54_parse_eeprom(struct ieee80211_hw
+ 			/* make it overrun */
+ 			entry_len = len;
  			break;
 +		default:
 +			printk(KERN_INFO "p54: unknown eeprom code : 0x%x\n",
@@ -12544,7 +12482,7 @@
  		}
  
  		entry = (void *)entry + (entry_len + 1)*2;
-@@ -308,10 +352,10 @@ static void p54_rx_data(struct ieee80211
+@@ -312,10 +356,10 @@ static void p54_rx_data(struct ieee80211
  	u16 freq = le16_to_cpu(hdr->freq);
  
  	rx_status.ssi = hdr->rssi;
@@ -12558,7 +12496,7 @@
  	rx_status.antenna = hdr->antenna;
  	rx_status.mactime = le64_to_cpu(hdr->timestamp);
  	rx_status.flag |= RX_FLAG_TSFT;
-@@ -349,7 +393,7 @@ static void p54_rx_frame_sent(struct iee
+@@ -353,7 +397,7 @@ static void p54_rx_frame_sent(struct iee
  	while (entry != (struct sk_buff *)&priv->tx_queue) {
  		range = (struct memrecord *)&entry->cb;
  		if (range->start_addr == addr) {
@@ -12567,7 +12505,7 @@
  			struct p54_control_hdr *entry_hdr;
  			struct p54_tx_control_allocdata *entry_data;
  			int pad = 0;
-@@ -365,6 +409,7 @@ static void p54_rx_frame_sent(struct iee
+@@ -369,6 +413,7 @@ static void p54_rx_frame_sent(struct iee
  				kfree_skb(entry);
  				break;
  			}
@@ -12575,7 +12513,7 @@
  			memcpy(&status.control, range->control,
  			       sizeof(status.control));
  			kfree(range->control);
-@@ -547,7 +592,9 @@ static int p54_tx(struct ieee80211_hw *d
+@@ -551,7 +596,9 @@ static int p54_tx(struct ieee80211_hw *d
  	txhdr->padding2 = 0;
  
  	/* TODO: add support for alternate retry TX rates */
@@ -12586,7 +12524,7 @@
  	if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS)
  		rate |= 0x40;
  	else if (control->flags & IEEE80211_TXCTL_USE_CTS_PROTECT)
-@@ -717,13 +764,12 @@ static int p54_set_leds(struct ieee80211
+@@ -721,13 +768,12 @@ static int p54_set_leds(struct ieee80211
  	return 0;
  }
  
@@ -12602,7 +12540,7 @@
  } while(0)
  
  static void p54_init_vdcf(struct ieee80211_hw *dev)
-@@ -741,10 +787,10 @@ static void p54_init_vdcf(struct ieee802
+@@ -745,10 +791,10 @@ static void p54_init_vdcf(struct ieee802
  
  	vdcf = (struct p54_tx_control_vdcf *) hdr->data;
  
@@ -12617,7 +12555,7 @@
  }
  
  static void p54_set_vdcf(struct ieee80211_hw *dev)
-@@ -849,7 +895,7 @@ static int p54_config(struct ieee80211_h
+@@ -853,7 +899,7 @@ static int p54_config(struct ieee80211_h
  {
  	int ret;
  
@@ -12626,7 +12564,7 @@
  	p54_set_vdcf(dev);
  	return ret;
  }
-@@ -897,7 +943,7 @@ static int p54_conf_tx(struct ieee80211_
+@@ -901,7 +947,7 @@ static int p54_conf_tx(struct ieee80211_
  
  	if ((params) && !((queue < 0) || (queue > 4))) {
  		P54_SET_QUEUE(vdcf->queue[queue], params->aifs,
@@ -12635,7 +12573,7 @@
  	} else
  		return -EINVAL;
  
-@@ -944,7 +990,6 @@ struct ieee80211_hw *p54_init_common(siz
+@@ -948,7 +994,6 @@ struct ieee80211_hw *p54_init_common(siz
  {
  	struct ieee80211_hw *dev;
  	struct p54_common *priv;
@@ -12643,7 +12581,7 @@
  
  	dev = ieee80211_alloc_hw(priv_data_len, &p54_ops);
  	if (!dev)
-@@ -953,18 +998,7 @@ struct ieee80211_hw *p54_init_common(siz
+@@ -957,18 +1002,7 @@ struct ieee80211_hw *p54_init_common(siz
  	priv = dev->priv;
  	priv->mode = IEEE80211_IF_TYPE_INVALID;
  	skb_queue_head_init(&priv->tx_queue);
@@ -12663,7 +12601,7 @@
  	dev->flags = IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | /* not sure */
  		    IEEE80211_HW_RX_INCLUDES_FCS;
  	dev->channel_change_time = 1000;	/* TODO: find actual value */
-@@ -986,14 +1020,6 @@ struct ieee80211_hw *p54_init_common(siz
+@@ -990,14 +1024,6 @@ struct ieee80211_hw *p54_init_common(siz
  
  	p54_init_vdcf(dev);
  
@@ -12679,8 +12617,8 @@
  }
  EXPORT_SYMBOL_GPL(p54_init_common);
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl8180_sa2400.c.orig linux-2.6.24.noarch/drivers/net/wireless/rtl8180_sa2400.c
---- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_sa2400.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_sa2400.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_sa2400.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_sa2400.c	2008-03-04 19:35:36.000000000 -0500
 @@ -80,8 +80,9 @@ static void sa2400_rf_set_channel(struct
  				  struct ieee80211_conf *conf)
  {
@@ -12695,7 +12633,7 @@
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/adm8211.h.orig linux-2.6.24.noarch/drivers/net/wireless/adm8211.h
 --- linux-2.6.24.noarch/drivers/net/wireless/adm8211.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/adm8211.h	2008-03-03 16:46:20.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/adm8211.h	2008-03-04 19:35:36.000000000 -0500
 @@ -534,61 +534,6 @@ struct adm8211_eeprom {
  	u8	cis_data[0];		/* 0x80, 384 bytes */
  } __attribute__ ((packed));
@@ -12783,8 +12721,8 @@
  	{1,  11},	/* FCC */
  	{1,  11},	/* IC */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.24.noarch/drivers/net/wireless/b43/main.c
---- linux-2.6.24.noarch/drivers/net/wireless/b43/main.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43/main.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/b43/main.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/b43/main.c	2008-03-04 19:35:36.000000000 -0500
 @@ -96,25 +96,29 @@ MODULE_DEVICE_TABLE(ssb, b43_ssb_tbl);
   * data in there. This data is the same for all devices, so we don't
   * get concurrency issues */
@@ -13388,8 +13326,8 @@
  		goto err_powerdown;
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/b43/xmit.c.orig linux-2.6.24.noarch/drivers/net/wireless/b43/xmit.c
---- linux-2.6.24.noarch/drivers/net/wireless/b43/xmit.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43/xmit.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/b43/xmit.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/b43/xmit.c	2008-03-04 19:35:36.000000000 -0500
 @@ -32,46 +32,48 @@
  #include "dma.h"
  
@@ -13599,8 +13537,8 @@
  	default:
  		B43_WARN_ON(1);
 diff -up linux-2.6.24.noarch/drivers/net/wireless/b43/main.h.orig linux-2.6.24.noarch/drivers/net/wireless/b43/main.h
---- linux-2.6.24.noarch/drivers/net/wireless/b43/main.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43/main.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/b43/main.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/b43/main.h	2008-03-04 19:35:36.000000000 -0500
 @@ -95,8 +95,8 @@ u16 b43_shm_read16(struct b43_wldev *dev
  void b43_shm_write32(struct b43_wldev *dev, u16 routing, u16 offset, u32 value);
  void b43_shm_write16(struct b43_wldev *dev, u16 routing, u16 offset, u16 value);
@@ -13614,7 +13552,7 @@
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/b43/sysfs.c.orig linux-2.6.24.noarch/drivers/net/wireless/b43/sysfs.c
 --- linux-2.6.24.noarch/drivers/net/wireless/b43/sysfs.c.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43/sysfs.c	2008-03-03 16:46:20.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/b43/sysfs.c	2008-03-04 19:35:36.000000000 -0500
 @@ -47,29 +47,6 @@ static int get_integer(const char *buf, 
  	return ret;
  }
@@ -13730,8 +13668,8 @@
  	device_remove_file(dev, &dev_attr_interference);
  }
 diff -up linux-2.6.24.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.24.noarch/drivers/net/wireless/b43/b43.h
---- linux-2.6.24.noarch/drivers/net/wireless/b43/b43.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43/b43.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/b43/b43.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/b43/b43.h	2008-03-04 19:35:36.000000000 -0500
 @@ -144,7 +144,8 @@ enum {
  #define B43_SHM_SH_PHYTYPE		0x0052	/* PHY type */
  #define B43_SHM_SH_ANTSWAP		0x005C	/* Antenna swap threshold */
@@ -13844,7 +13782,7 @@
  	bool suspend_in_progress;	/* TRUE, if we are in a suspend/resume cycle */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/strip.c.orig linux-2.6.24.noarch/drivers/net/wireless/strip.c
 --- linux-2.6.24.noarch/drivers/net/wireless/strip.c.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/strip.c	2008-03-03 16:46:20.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/strip.c	2008-03-04 19:35:36.000000000 -0500
 @@ -962,12 +962,12 @@ static char *time_delta(char buffer[], l
  /* get Nth element of the linked list */
  static struct strip *strip_get_idx(loff_t pos) 
@@ -13862,8 +13800,8 @@
  	}
  	return NULL;
 diff -up linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.c.orig linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.c
---- linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.c	2008-03-04 19:35:36.000000000 -0500
 @@ -771,10 +771,10 @@ static int zd1211b_hw_init_hmac(struct z
  {
  	static const struct zd_ioreq32 ioreqs[] = {
@@ -13919,8 +13857,8 @@
  		goto out;
  	/* Disabling interrupts is certainly a smart thing here.
 diff -up linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.h.orig linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.h
---- linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_chip.h	2008-03-04 19:35:36.000000000 -0500
 @@ -625,11 +625,10 @@ enum {
  #define CR_S_MD				CTL_REG(0x0830)
  
@@ -13938,8 +13876,8 @@
  #define CR_ZD1211B_AIFS_CTL2		CTL_REG(0x0b14)
  #define CR_ZD1211B_TXOP			CTL_REG(0x0b20)
 diff -up linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_ieee80211.c.orig linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_ieee80211.c
---- linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_ieee80211.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_ieee80211.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_ieee80211.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_ieee80211.c	2008-03-04 19:35:36.000000000 -0500
 @@ -65,16 +65,14 @@ static const struct channel_range *zd_ch
  
  static void unmask_bg_channels(struct ieee80211_hw *hw,
@@ -13970,8 +13908,8 @@
  }
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.h.orig linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.h
---- linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.h	2008-03-04 19:35:36.000000000 -0500
 @@ -185,7 +185,7 @@ struct zd_mac {
  	struct sk_buff_head ack_wait_queue;
  	struct ieee80211_channel channels[14];
@@ -13982,8 +13920,8 @@
  	/* Short preamble (used for RTS/CTS) */
  	unsigned int short_preamble:1;
 diff -up linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.c.orig linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.c
---- linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/zd1211rw/zd_mac.c	2008-03-04 19:35:36.000000000 -0500
 @@ -34,76 +34,61 @@
  
  /* This table contains the hardware specific values for the modulation rates. */
@@ -14226,8 +14164,8 @@
  	housekeeping_init(mac);
  	INIT_WORK(&mac->set_multicast_hash_work, set_multicast_hash_handler);
 diff -up linux-2.6.24.noarch/drivers/net/wireless/b43legacy/main.c.orig linux-2.6.24.noarch/drivers/net/wireless/b43legacy/main.c
---- linux-2.6.24.noarch/drivers/net/wireless/b43legacy/main.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43legacy/main.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/b43legacy/main.c.orig	2008-03-04 19:32:48.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/b43legacy/main.c	2008-03-04 19:35:36.000000000 -0500
 @@ -95,28 +95,29 @@ MODULE_DEVICE_TABLE(ssb, b43legacy_ssb_t
   * data in there. This data is the same for all devices, so we don't
   * get concurrency issues */
@@ -14868,8 +14806,8 @@
  
  	return 0;
 diff -up linux-2.6.24.noarch/drivers/net/wireless/b43legacy/xmit.c.orig linux-2.6.24.noarch/drivers/net/wireless/b43legacy/xmit.c
---- linux-2.6.24.noarch/drivers/net/wireless/b43legacy/xmit.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43legacy/xmit.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/b43legacy/xmit.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/b43legacy/xmit.c	2008-03-04 19:35:36.000000000 -0500
 @@ -37,45 +37,48 @@
  
  
@@ -15045,8 +14983,8 @@
  	default:
  		b43legacywarn(dev->wl, "Unexpected value for chanstat (0x%X)\n",
 diff -up linux-2.6.24.noarch/drivers/net/wireless/b43legacy/b43legacy.h.orig linux-2.6.24.noarch/drivers/net/wireless/b43legacy/b43legacy.h
---- linux-2.6.24.noarch/drivers/net/wireless/b43legacy/b43legacy.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43legacy/b43legacy.h	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/b43legacy/b43legacy.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/b43legacy/b43legacy.h	2008-03-04 19:35:36.000000000 -0500
 @@ -130,13 +130,19 @@
  #define B43legacy_SHM_SH_HOSTFHI	0x0060 /* Hostflags ucode opts (high) */
  /* SHM_SHARED crypto engine */
@@ -15155,8 +15093,8 @@
  	struct b43legacy_firmware fw;
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl8180_rtl8225.c.orig linux-2.6.24.noarch/drivers/net/wireless/rtl8180_rtl8225.c
---- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_rtl8225.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_rtl8225.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_rtl8225.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_rtl8225.c	2008-03-04 19:35:36.000000000 -0500
 @@ -261,8 +261,8 @@ static void rtl8225_rf_set_tx_power(stru
  	u32 reg;
  	int i;
@@ -15199,7 +15137,7 @@
  	if (conf->flags & IEEE80211_CONF_SHORT_SLOT_TIME) {
 diff -up linux-2.6.24.noarch/drivers/net/wireless/p54.h.orig linux-2.6.24.noarch/drivers/net/wireless/p54.h
 --- linux-2.6.24.noarch/drivers/net/wireless/p54.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/p54.h	2008-03-03 16:46:20.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/p54.h	2008-03-04 19:35:36.000000000 -0500
 @@ -64,10 +64,6 @@ struct p54_common {
  	unsigned int tx_hdr_len;
  	void *cached_vdcf;
@@ -15212,8 +15150,8 @@
  };
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl8187_dev.c.orig linux-2.6.24.noarch/drivers/net/wireless/rtl8187_dev.c
---- linux-2.6.24.noarch/drivers/net/wireless/rtl8187_dev.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rtl8187_dev.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl8187_dev.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl8187_dev.c	2008-03-04 19:35:36.000000000 -0500
 @@ -45,6 +45,38 @@ static struct usb_device_id rtl8187_tabl
  
  MODULE_DEVICE_TABLE(usb, rtl8187_table);
@@ -15367,8 +15305,8 @@
  
  	eeprom_93cx6_read(&eeprom, RTL8187_EEPROM_TXPWR_BASE,
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl818x.h.orig linux-2.6.24.noarch/drivers/net/wireless/rtl818x.h
---- linux-2.6.24.noarch/drivers/net/wireless/rtl818x.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rtl818x.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl818x.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl818x.h	2008-03-04 19:35:36.000000000 -0500
 @@ -175,74 +175,4 @@ struct rtl818x_rf_ops {
  	void (*set_chan)(struct ieee80211_hw *, struct ieee80211_conf *);
  };
@@ -15445,8 +15383,8 @@
 -
  #endif /* RTL818X_H */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/atmel.c.orig linux-2.6.24.noarch/drivers/net/wireless/atmel.c
---- linux-2.6.24.noarch/drivers/net/wireless/atmel.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/atmel.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/atmel.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/atmel.c	2008-03-04 19:35:36.000000000 -0500
 @@ -66,6 +66,7 @@
  #include <linux/device.h>
  #include <linux/moduleparam.h>
@@ -15474,8 +15412,8 @@
  	priv->last_survey = jiffies;
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl8180_grf5101.c.orig linux-2.6.24.noarch/drivers/net/wireless/rtl8180_grf5101.c
---- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_grf5101.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_grf5101.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_grf5101.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_grf5101.c	2008-03-04 19:35:36.000000000 -0500
 @@ -73,8 +73,9 @@ static void grf5101_rf_set_channel(struc
  				   struct ieee80211_conf *conf)
  {
@@ -15489,8 +15427,8 @@
  	/* set TX power */
  	write_grf5101(dev, 0x15, 0x0);
 diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/dev.h.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/dev.h
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/dev.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/dev.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/dev.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/dev.h	2008-03-04 19:35:36.000000000 -0500
 @@ -143,9 +143,12 @@ struct lbs_private {
  	wait_queue_head_t waitq;
  	struct workqueue_struct *work_thread;
@@ -15513,8 +15451,8 @@
  };
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.h.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.h
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.h	2008-03-04 19:35:36.000000000 -0500
 @@ -7,6 +7,5 @@
  
  void lbs_association_worker(struct work_struct *work);
@@ -15523,8 +15461,8 @@
  
  #endif /* _LBS_ASSOC_H */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/main.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/main.c
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/main.c.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/main.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/main.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/main.c	2008-03-04 19:35:36.000000000 -0500
 @@ -985,6 +985,18 @@ out:
  	lbs_deb_leave(LBS_DEB_CMD);
  }
@@ -15554,8 +15492,8 @@
  	sprintf(priv->mesh_ssid, "mesh");
  	priv->mesh_ssid_len = 4;
 diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/debugfs.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/debugfs.c
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/debugfs.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/debugfs.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/debugfs.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/debugfs.c	2008-03-04 19:35:36.000000000 -0500
 @@ -315,7 +315,7 @@ static ssize_t lbs_setuserscan(struct fi
  
  	lbs_scan_networks(priv, scan_cfg, 1);
@@ -15566,8 +15504,8 @@
  	if (priv->surpriseremoved)
  		goto out_scan_cfg;
 diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/cmd.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/cmd.c
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/cmd.c.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/cmd.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/cmd.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/cmd.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1153,9 +1153,9 @@ static void lbs_submit_command(struct lb
  	    command == CMD_802_11_AUTHENTICATE)
  		timeo = 10 * HZ;
@@ -15630,8 +15568,8 @@
  }
  EXPORT_SYMBOL_GPL(lbs_cmd_copyback);
 diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/join.h.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/join.h
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/join.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/join.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/join.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/join.h	2008-03-04 19:35:36.000000000 -0500
 @@ -48,6 +48,4 @@ int lbs_send_deauthentication(struct lbs
  
  int lbs_associate(struct lbs_private *priv, struct assoc_request *assoc_req);
@@ -15640,8 +15578,8 @@
 -
  #endif
 diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/join.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/join.c
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/join.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/join.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/join.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/join.c	2008-03-04 19:35:36.000000000 -0500
 @@ -99,23 +99,6 @@ static void lbs_set_basic_rate_flags(u8 
  }
  
@@ -15677,8 +15615,8 @@
  	priv->NF[TYPE_RXPD][TYPE_AVG] = 0;
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c	2008-03-04 19:35:36.000000000 -0500
 @@ -73,6 +73,23 @@ static const u8 bcastmac[ETH_ALEN] = { 0
  /*                                                                   */
  /*********************************************************************/
@@ -15764,8 +15702,8 @@
  
  	/* Update RSSI if current BSS is a locally created ad-hoc BSS */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/cmdresp.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/cmdresp.c
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/cmdresp.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/cmdresp.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/cmdresp.c.orig	2008-03-04 19:32:48.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/cmdresp.c	2008-03-04 19:35:36.000000000 -0500
 @@ -74,7 +74,7 @@ void lbs_mac_event_disconnected(struct l
  		lbs_deb_cmd("disconnected, so exit PS mode\n");
  		lbs_ps_wakeup(priv, 0);
@@ -15775,7 +15713,7 @@
  }
  
  /**
-@@ -568,9 +568,9 @@ int lbs_process_rx_command(struct lbs_pr
+@@ -566,9 +566,9 @@ int lbs_process_rx_command(struct lbs_pr
  	respcmd = le16_to_cpu(resp->command);
  	result = le16_to_cpu(resp->result);
  
@@ -15785,11 +15723,11 @@
 -	lbs_deb_hex(LBS_DEB_HOST, "CMD_RESP", (void *) resp, priv->upld_len);
 +	lbs_deb_hex(LBS_DEB_CMD, "CMD_RESP", (void *) resp, priv->upld_len);
  
- 	if (resp->seqnum != resp->seqnum) {
+ 	if (resp->seqnum != priv->cur_cmd->cmdbuf->seqnum) {
  		lbs_pr_info("Received CMD_RESP with invalid sequence %d (expected %d)\n",
 diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.c
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/assoc.c	2008-03-04 19:35:36.000000000 -0500
 @@ -181,17 +181,6 @@ int lbs_update_channel(struct lbs_privat
  	return ret;
  }
@@ -15842,8 +15780,8 @@
  			lbs_prepare_and_send_command(priv,
  				CMD_802_11_RSSI,
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl8187.h.orig linux-2.6.24.noarch/drivers/net/wireless/rtl8187.h
---- linux-2.6.24.noarch/drivers/net/wireless/rtl8187.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rtl8187.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl8187.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl8187.h	2008-03-04 19:35:36.000000000 -0500
 @@ -71,7 +71,7 @@ struct rtl8187_priv {
  	/* rtl8187 specific */
  	struct ieee80211_channel channels[14];
@@ -15854,8 +15792,8 @@
  	u32 rx_conf;
  	u16 txpwr_base;
 diff -up linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c.orig linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c
---- linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c	2008-03-04 19:35:36.000000000 -0500
 @@ -165,7 +165,7 @@ prism54_update_stats(struct work_struct 
  	struct obj_bss bss, *bss2;
  	union oid_res_t r;
@@ -16045,8 +15983,8 @@
  
  void
 diff -up linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.h.orig linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.h
---- linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.h	2008-03-04 19:35:36.000000000 -0500
 @@ -55,7 +55,7 @@ struct islpci_acl {
     enum { MAC_POLICY_OPEN=0, MAC_POLICY_ACCEPT=1, MAC_POLICY_REJECT=2 } policy;
     struct list_head mac_list;  /* a list of mac_entry */
@@ -16075,8 +16013,8 @@
  	size_t wpa_ie_len;
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.c.orig linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.c
---- linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/prism54/islpci_dev.c	2008-03-04 19:35:36.000000000 -0500
 @@ -864,7 +864,7 @@ islpci_setup(struct pci_dev *pdev)
  	mutex_init(&priv->mgmt_lock);
  	priv->mgmt_received = NULL;
@@ -16087,8 +16025,8 @@
  
  	/* init state machine with off#1 state */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl8187_rtl8225.c.orig linux-2.6.24.noarch/drivers/net/wireless/rtl8187_rtl8225.c
---- linux-2.6.24.noarch/drivers/net/wireless/rtl8187_rtl8225.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rtl8187_rtl8225.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl8187_rtl8225.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl8187_rtl8225.c	2008-03-04 19:35:36.000000000 -0500
 @@ -283,8 +283,8 @@ static void rtl8225_rf_set_tx_power(stru
  	u32 reg;
  	int i;
@@ -16130,8 +16068,8 @@
  }
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl8180_dev.c.orig linux-2.6.24.noarch/drivers/net/wireless/rtl8180_dev.c
---- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_dev.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_dev.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_dev.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_dev.c	2008-03-04 19:35:36.000000000 -0500
 @@ -49,6 +49,41 @@ static struct pci_device_id rtl8180_tabl
  
  MODULE_DEVICE_TABLE(pci, rtl8180_table);
@@ -16313,8 +16251,8 @@
  	}
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl8180.h.orig linux-2.6.24.noarch/drivers/net/wireless/rtl8180.h
---- linux-2.6.24.noarch/drivers/net/wireless/rtl8180.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl8180.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180.h	2008-03-04 19:35:36.000000000 -0500
 @@ -102,7 +102,7 @@ struct rtl8180_priv {
  	struct rtl8180_tx_ring tx_ring[4];
  	struct ieee80211_channel channels[14];
@@ -16325,8 +16263,8 @@
  	u32 rx_conf;
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.24.noarch/drivers/net/wireless/Kconfig
---- linux-2.6.24.noarch/drivers/net/wireless/Kconfig.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/Kconfig	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/Kconfig.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/Kconfig	2008-03-04 19:35:36.000000000 -0500
 @@ -146,12 +146,15 @@ config IPW2100
            configure your card:
  
@@ -16394,8 +16332,8 @@
  source "drivers/net/wireless/hostap/Kconfig"
  source "drivers/net/wireless/bcm43xx/Kconfig"
 diff -up linux-2.6.24.noarch/drivers/net/wireless/ipw2200.c.orig linux-2.6.24.noarch/drivers/net/wireless/ipw2200.c
---- linux-2.6.24.noarch/drivers/net/wireless/ipw2200.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ipw2200.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/ipw2200.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ipw2200.c	2008-03-04 19:35:36.000000000 -0500
 @@ -10349,9 +10349,7 @@ static int ipw_tx_skb(struct ipw_priv *p
  					 remaining_bytes,
  					 PCI_DMA_TODEVICE));
@@ -16408,8 +16346,8 @@
  	}
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-commands.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-commands.h
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-commands.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-commands.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-commands.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-commands.h	2008-03-04 19:35:36.000000000 -0500
 @@ -515,14 +515,20 @@ struct iwl3945_qosparam_cmd {
  #define STA_CONTROL_MODIFY_MSK		0x01
  
@@ -16447,8 +16385,8 @@
  } __attribute__ ((packed));
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-commands.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-commands.h
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-commands.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-commands.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-commands.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-commands.h	2008-03-04 19:35:36.000000000 -0500
 @@ -727,14 +727,20 @@ struct iwl4965_qosparam_cmd {
  #define STA_CONTROL_MODIFY_MSK		0x01
  
@@ -16524,8 +16462,8 @@
  	__le16 scd_ssn;
  } __attribute__ ((packed));
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-io.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-io.h
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-io.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-io.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-io.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-io.h	2008-03-04 19:35:36.000000000 -0500
 @@ -59,28 +59,28 @@
   *
   */
@@ -16601,8 +16539,8 @@
  #define iwl4965_poll_direct_bit _iwl4965_poll_direct_bit
  #endif
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c	2008-03-04 19:35:36.000000000 -0500
 @@ -83,7 +83,7 @@ struct iwl4965_rate_scale_data {
  /**
   * struct iwl4965_scale_tbl_info -- tx params and success history for all rates
@@ -17324,8 +17262,8 @@
  	sta_info_put(sta);
  	return cnt;
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c	2008-03-04 19:35:36.000000000 -0500
 @@ -247,7 +247,7 @@ static void iwl3945_add_radiotap(struct 
  	 * the information provided in the skb from the hardware */
  	s8 signal = stats->ssi;
@@ -17455,8 +17393,8 @@
  }
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c	2008-03-04 19:35:36.000000000 -0500
 @@ -90,7 +90,7 @@ int iwl4965_param_amsdu_size_8K;   /* de
  #define VS
  #endif
@@ -18842,8 +18780,8 @@
  	iwl4965_rate_control_register(priv->hw);
  	err = ieee80211_register_hw(priv->hw);
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c	2008-03-04 19:35:36.000000000 -0500
 @@ -79,6 +79,30 @@ const struct iwl4965_rate_info iwl4965_r
  	IWL_DECLARE_RATE_INFO(60, 60, 48, INV, 48, INV, 48, INV),/* 60mbps */
  };
@@ -20064,8 +20002,8 @@
  	priv->statistics_periodic.data = (unsigned long)priv;
  	priv->statistics_periodic.function = iwl4965_bg_statistics_periodic;
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.h
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.h	2008-03-04 19:35:36.000000000 -0500
 @@ -212,6 +212,18 @@ enum {
  
  #define LQ_SIZE		2	/* 2 mode tables:  "Active" and "Search" */
@@ -20086,8 +20024,8 @@
  
  enum iwl4965_table_type {
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/Kconfig.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/Kconfig
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/Kconfig.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/Kconfig	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/Kconfig.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/Kconfig	2008-03-04 19:35:36.000000000 -0500
 @@ -24,18 +24,10 @@ config IWL4965
  	  say M here and read <file:Documentation/kbuild/modules.txt>.  The
  	  module will be called iwl4965.ko.
@@ -20123,8 +20061,8 @@
  	bool "Enable Spectrum Measurement in iwl3945 drivers"
  	depends on IWL3945
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-hw.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-hw.h
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-hw.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-hw.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-hw.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965-hw.h	2008-03-04 19:35:36.000000000 -0500
 @@ -413,7 +413,6 @@ struct iwl4965_eeprom {
  /*=== CSR (control and status registers) ===*/
  #define CSR_BASE    (0x000)
@@ -20134,8 +20072,8 @@
  #define CSR_INT_COALESCING      (CSR_BASE+0x004) /* accum ints, 32-usec units */
  #define CSR_INT                 (CSR_BASE+0x008) /* host interrupt status/ack */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.h
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.h	2008-03-04 19:35:36.000000000 -0500
 @@ -206,7 +206,7 @@ struct iwl4965_channel_info {
  
  	u8 group_index;	  /* 0-4, maps channel to group1/2/3/4/5 */
@@ -20405,8 +20343,8 @@
  /* Requires full declaration of iwl4965_priv before including */
  #include "iwl-4965-io.h"
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.h
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.h	2008-03-04 19:35:36.000000000 -0500
 @@ -195,7 +195,7 @@ struct iwl3945_channel_info {
  
  	u8 group_index;	  /* 0-4, maps channel to group1/2/3/4/5 */
@@ -20506,8 +20444,8 @@
  /* Requires full declaration of iwl3945_priv before including */
  #include "iwl-3945-io.h"
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-io.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-io.h
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-io.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-io.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-io.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-io.h	2008-03-04 19:35:36.000000000 -0500
 @@ -59,28 +59,28 @@
   *
   */
@@ -20583,8 +20521,8 @@
  #define iwl3945_poll_direct_bit _iwl3945_poll_direct_bit
  #endif
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-hw.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-hw.h
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-hw.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-hw.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-hw.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-hw.h	2008-03-04 19:35:36.000000000 -0500
 @@ -324,7 +324,6 @@ struct iwl3945_eeprom {
  /*=== CSR (control and status registers) ===*/
  #define CSR_BASE    (0x000)
@@ -20594,8 +20532,8 @@
  #define CSR_INT_COALESCING      (CSR_BASE+0x004) /* accum ints, 32-usec units */
  #define CSR_INT                 (CSR_BASE+0x008) /* host interrupt status/ack */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c	2008-03-04 19:35:36.000000000 -0500
 @@ -91,7 +91,7 @@ int iwl3945_param_queues_num = IWL_MAX_N
  #define VS
  #endif
@@ -21533,8 +21471,8 @@
  	iwl3945_rate_control_register(priv->hw);
  	err = ieee80211_register_hw(priv->hw);
 diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-rs.c.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-rs.c
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-rs.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-rs.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-rs.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945-rs.c	2008-03-04 19:35:36.000000000 -0500
 @@ -100,14 +100,6 @@ static struct iwl3945_tpt_entry iwl3945_
  	{-89, IWL_RATE_6M_INDEX}
  };
@@ -21767,8 +21705,8 @@
  	IWL_DEBUG_RATE("leave: rssi %d assign rate index: "
  		       "%d (plcp 0x%x)\n", rssi, rs_sta->start_rate,
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00.h	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -22328,8 +22266,8 @@
  /*
   * TX descriptor initializer
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -22898,8 +22836,8 @@
 +MODULE_DESCRIPTION("rt2x00 usb library");
  MODULE_LICENSE("GPL");
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -22965,8 +22903,8 @@
  #define MIN_TXPOWER	0
  #define MAX_TXPOWER	31
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -24306,8 +24244,8 @@
  	return 0;
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -25057,7 +24995,7 @@
  #ifdef CONFIG_RT2X00_LIB_DEBUGFS
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/Makefile.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/Makefile
 --- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/Makefile.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/Makefile	2008-03-03 16:46:20.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/Makefile	2008-03-04 19:35:36.000000000 -0500
 @@ -1,22 +1,17 @@
 -rt2x00lib-objs := rt2x00dev.o rt2x00mac.o rt2x00config.o
 +rt2x00lib-y				+= rt2x00dev.o
@@ -25098,8 +25036,8 @@
 +obj-$(CONFIG_RT2500USB)			+= rt2500usb.o
 +obj-$(CONFIG_RT73USB)			+= rt73usb.o
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -25937,8 +25875,8 @@
  	.hw		= &rt2500usb_mac80211_ops,
  #ifdef CONFIG_RT2X00_LIB_DEBUGFS
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00lib.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00lib.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00lib.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00lib.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00lib.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00lib.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -26071,8 +26009,8 @@
 +
  #endif /* RT2X00LIB_H */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00reg.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00reg.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00reg.h.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00reg.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00reg.h.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00reg.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -26166,8 +26104,8 @@
 -
  #endif /* RT2X00REG_H */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00config.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00config.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00config.c.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00config.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00config.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00config.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -26405,8 +26343,8 @@
  
  	if (flags & CONFIG_UPDATE_ANTENNA) {
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00usb.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -26638,8 +26576,8 @@
  void rt2x00usb_uninitialize(struct rt2x00_dev *rt2x00dev);
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -26877,8 +26815,8 @@
  	debugfs_remove(intf->rf_off_entry);
  	debugfs_remove(intf->bbp_val_entry);
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00ring.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00ring.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00ring.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00ring.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00ring.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00ring.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,290 +0,0 @@
 -/*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -27171,8 +27109,8 @@
 -
 -#endif /* RT2X00RING_H */
 diff -up /dev/null linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00leds.h
---- /dev/null	2008-03-03 08:19:02.806638585 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00leds.h	2008-03-03 16:46:20.000000000 -0500
+--- /dev/null	2008-03-04 08:34:47.546307750 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00leds.h	2008-03-04 19:35:36.000000000 -0500
 @@ -0,0 +1,63 @@
 +/*
 +	Copyright (C) 2004 - 2008 rt2x00 SourceForge Project
@@ -27238,8 +27176,8 @@
 +
 +#endif /* RT2X00LEDS_H */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -27650,8 +27588,8 @@
  	return 0;
  }
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00debug.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -27660,8 +27598,8 @@
  
  	This program is free software; you can redistribute it and/or modify
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -27759,8 +27697,8 @@
  #define MIN_TXPOWER	0
  #define MAX_TXPOWER	31
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -27786,8 +27724,8 @@
  #define MIN_TXPOWER	31
  #define MAX_TXPOWER	62
 diff -up /dev/null linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00queue.h
---- /dev/null	2008-03-03 08:19:02.806638585 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00queue.h	2008-03-03 16:46:20.000000000 -0500
+--- /dev/null	2008-03-04 08:34:47.546307750 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00queue.h	2008-03-04 19:35:36.000000000 -0500
 @@ -0,0 +1,457 @@
 +/*
 +	Copyright (C) 2004 - 2008 rt2x00 SourceForge Project
@@ -28247,8 +28185,8 @@
 +
 +#endif /* RT2X00QUEUE_H */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -28285,8 +28223,8 @@
  #define MIN_TXPOWER	0
  #define MAX_TXPOWER	31
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -28306,8 +28244,8 @@
  #define MIN_TXPOWER	0
  #define MAX_TXPOWER	31
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -28316,8 +28254,8 @@
  
  	This program is free software; you can redistribute it and/or modify
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dump.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dump.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dump.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dump.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dump.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dump.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -28347,7 +28285,7 @@
  	__le32 timestamp_sec;
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/Kconfig.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/Kconfig
 --- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/Kconfig.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/Kconfig	2008-03-03 16:46:20.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/Kconfig	2008-03-04 19:35:36.000000000 -0500
 @@ -5,29 +5,29 @@ config RT2X00
  	  This will enable the experimental support for the Ralink drivers,
  	  developed in the rt2x00 project <http://rt2x00.serialmonkey.com>.
@@ -28492,8 +28430,8 @@
  
 +endif
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -28574,8 +28512,8 @@
  		retval = rt2x00lib_request_firmware(rt2x00dev);
  		if (retval)
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -29333,8 +29271,8 @@
  	.hw		= &rt2500pci_mac80211_ops,
  #ifdef CONFIG_RT2X00_LIB_DEBUGFS
 diff -up /dev/null linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00leds.c
---- /dev/null	2008-03-03 08:19:02.806638585 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00leds.c	2008-03-03 16:46:20.000000000 -0500
+--- /dev/null	2008-03-04 08:34:47.546307750 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00leds.c	2008-03-04 19:35:36.000000000 -0500
 @@ -0,0 +1,217 @@
 +/*
 +	Copyright (C) 2004 - 2008 rt2x00 SourceForge Project
@@ -29554,8 +29492,8 @@
 +		led_classdev_resume(&rt2x00dev->led_qual.led_dev);
 +}
 diff -up /dev/null linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00queue.c
---- /dev/null	2008-03-03 08:19:02.806638585 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00queue.c	2008-03-03 16:46:20.000000000 -0500
+--- /dev/null	2008-03-04 08:34:47.546307750 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00queue.c	2008-03-04 19:35:36.000000000 -0500
 @@ -0,0 +1,299 @@
 +/*
 +	Copyright (C) 2004 - 2008 rt2x00 SourceForge Project
@@ -29857,8 +29795,8 @@
 +	rt2x00dev->bcn = NULL;
 +}
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -31022,8 +30960,8 @@
  	.hw		= &rt61pci_mac80211_ops,
  #ifdef CONFIG_RT2X00_LIB_DEBUGFS
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -31474,8 +31412,8 @@
 +MODULE_DESCRIPTION("rt2x00 pci library");
  MODULE_LICENSE("GPL");
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -31586,8 +31524,8 @@
  /*
   * Device initialization handlers.
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig	2008-03-03 16:42:51.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1,5 +1,5 @@
  /*
 -	Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -32503,8 +32441,8 @@
  	.hw		= &rt73usb_mac80211_ops,
  #ifdef CONFIG_RT2X00_LIB_DEBUGFS
 diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/phy.c.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/phy.c
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/phy.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/phy.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/ath5k/phy.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/phy.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1018,7 +1018,7 @@ static int ath5k_hw_rf5111_rfregs(struct
  	int obdb = -1, bank = -1;
  	u32 ee_mode;
@@ -32711,8 +32649,8 @@
  			AR5K_PHY_PAPD_PROBE_TXPOWER) |
  			AR5K_PHY_PAPD_PROBE_TX_NEXT, AR5K_PHY_PAPD_PROBE);
 diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/ath5k.h.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/ath5k.h
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/ath5k.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/ath5k.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/ath5k/ath5k.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/ath5k.h	2008-03-04 19:35:36.000000000 -0500
 @@ -30,7 +30,6 @@
  #include <net/mac80211.h>
  
@@ -32910,8 +32848,8 @@
  extern int ath5k_hw_get_capability(struct ath5k_hw *ah, enum ath5k_capability_type cap_type, u32 capability, u32 *result);
  
 diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/Makefile.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/Makefile
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/Makefile.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/Makefile	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/ath5k/Makefile.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/Makefile	2008-03-04 19:35:36.000000000 -0500
 @@ -1,2 +1,6 @@
 -ath5k-objs		= base.o hw.o regdom.o initvals.o phy.o debug.o
 -obj-$(CONFIG_ATH5K)	+= ath5k.o
@@ -32922,8 +32860,8 @@
 +ath5k-$(CONFIG_ATH5K_DEBUG)	+= debug.o
 +obj-$(CONFIG_ATH5K)		+= ath5k.o
 diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.h.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.h
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.h	2008-03-04 19:35:36.000000000 -0500
 @@ -61,11 +61,6 @@
  #ifndef _ATH5K_DEBUG_H
  #define _ATH5K_DEBUG_H
@@ -33000,8 +32938,8 @@
  
  #endif /* ifndef _ATH5K_DEBUG_H */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c	2008-03-04 19:35:36.000000000 -0500
 @@ -140,9 +140,6 @@ struct ath5k_hw *ath5k_hw_attach(struct 
  	 * HW information
  	 */
@@ -33415,8 +33353,8 @@
  
  /****************\
 diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/initvals.c.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/initvals.c
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/initvals.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/initvals.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/ath5k/initvals.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/initvals.c	2008-03-04 19:35:36.000000000 -0500
 @@ -1317,8 +1317,10 @@ int ath5k_hw_write_initvals(struct ath5k
  	/* For AR5211 */
  	} else if (ah->ah_version == AR5K_AR5211) {
@@ -33431,8 +33369,8 @@
  		}
  
 diff -up /dev/null linux-2.6.24.noarch/drivers/net/wireless/ath5k/Kconfig
---- /dev/null	2008-03-03 08:19:02.806638585 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/Kconfig	2008-03-03 16:46:20.000000000 -0500
+--- /dev/null	2008-03-04 08:34:47.546307750 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/Kconfig	2008-03-04 19:35:36.000000000 -0500
 @@ -0,0 +1,37 @@
 +config ATH5K
 +	tristate "Atheros 5xxx wireless cards support"
@@ -33472,8 +33410,8 @@
 +	  modprobe ath5k debug=0x00000400
 +
 diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.c.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.c
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.c	2008-03-04 19:35:36.000000000 -0500
 @@ -80,7 +80,7 @@ MODULE_AUTHOR("Nick Kossifidis");
  MODULE_DESCRIPTION("Support for 5xxx series of Atheros 802.11 wireless LAN cards.");
  MODULE_SUPPORTED_DEVICE("Atheros 5xxx WLAN cards");
@@ -34143,8 +34081,8 @@
  	case ALG_CCMP:
  		return -EOPNOTSUPP;
 diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.c.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.c
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/debug.c	2008-03-04 19:35:36.000000000 -0500
 @@ -65,7 +65,7 @@ static unsigned int ath5k_debug;
  module_param_named(debug, ath5k_debug, uint, 0);
  
@@ -34234,8 +34172,8 @@
 -#endif /* if ATH5K_DEBUG */
 +#endif /* ifdef CONFIG_ATH5K_DEBUG */
 diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.h.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.h
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.h.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.h	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.h.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/base.h	2008-03-04 19:35:36.000000000 -0500
 @@ -83,7 +83,7 @@ struct ath5k_txq {
  #if CHAN_DEBUG
  #define ATH_CHAN_MAX	(26+26+26+200+200)
@@ -34281,8 +34219,8 @@
  
  #define ath5k_hw_hasbssidmask(_ah) \
 diff -up linux-2.6.24.noarch/drivers/net/wireless/rtl8180_max2820.c.orig linux-2.6.24.noarch/drivers/net/wireless/rtl8180_max2820.c
---- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_max2820.c.orig	2008-03-03 16:42:47.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_max2820.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/rtl8180_max2820.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rtl8180_max2820.c	2008-03-04 19:35:36.000000000 -0500
 @@ -78,8 +78,9 @@ static void max2820_rf_set_channel(struc
  				   struct ieee80211_conf *conf)
  {
@@ -34296,8 +34234,8 @@
  
  	/* While philips SA2400 drive the PA bias from
 diff -up linux-2.6.24.noarch/drivers/net/wireless/adm8211.c.orig linux-2.6.24.noarch/drivers/net/wireless/adm8211.c
---- linux-2.6.24.noarch/drivers/net/wireless/adm8211.c.orig	2008-03-03 16:42:46.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/adm8211.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/drivers/net/wireless/adm8211.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/adm8211.c	2008-03-04 19:35:36.000000000 -0500
 @@ -48,6 +48,32 @@ static struct pci_device_id adm8211_pci_
  	{ 0 }
  };
@@ -34467,8 +34405,8 @@
  	err = ieee80211_register_hw(dev);
  	if (err) {
 diff -up linux-2.6.24.noarch/drivers/ssb/pcmcia.c.orig linux-2.6.24.noarch/drivers/ssb/pcmcia.c
---- linux-2.6.24.noarch/drivers/ssb/pcmcia.c.orig	2008-03-03 16:42:48.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/ssb/pcmcia.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/ssb/pcmcia.c.orig	2008-03-04 19:28:32.000000000 -0500
++++ linux-2.6.24.noarch/drivers/ssb/pcmcia.c	2008-03-04 19:35:36.000000000 -0500
 @@ -172,6 +172,22 @@ static int select_core_and_segment(struc
  	return 0;
  }
@@ -34525,8 +34463,8 @@
  	.write32	= ssb_pcmcia_write32,
  };
 diff -up linux-2.6.24.noarch/drivers/ssb/main.c.orig linux-2.6.24.noarch/drivers/ssb/main.c
---- linux-2.6.24.noarch/drivers/ssb/main.c.orig	2008-03-03 16:42:48.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/ssb/main.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/ssb/main.c.orig	2008-03-04 19:28:32.000000000 -0500
++++ linux-2.6.24.noarch/drivers/ssb/main.c	2008-03-04 19:35:36.000000000 -0500
 @@ -505,6 +505,14 @@ error:
  	return err;
  }
@@ -34569,8 +34507,8 @@
  	.write32	= ssb_ssb_write32,
  };
 diff -up linux-2.6.24.noarch/drivers/ssb/pci.c.orig linux-2.6.24.noarch/drivers/ssb/pci.c
---- linux-2.6.24.noarch/drivers/ssb/pci.c.orig	2008-03-03 16:42:48.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/ssb/pci.c	2008-03-03 16:46:20.000000000 -0500
+--- linux-2.6.24.noarch/drivers/ssb/pci.c.orig	2008-03-04 19:28:32.000000000 -0500
++++ linux-2.6.24.noarch/drivers/ssb/pci.c	2008-03-04 19:35:36.000000000 -0500
 @@ -572,6 +572,19 @@ static inline int ssb_pci_assert_buspowe
  }
  #endif /* DEBUG */
@@ -34623,8 +34561,8 @@
  	.write32	= ssb_pci_write32,
  };
 diff -up linux-2.6.24.noarch/drivers/ssb/driver_chipcommon.c.orig linux-2.6.24.noarch/drivers/ssb/driver_chipcommon.c
---- linux-2.6.24.noarch/drivers/ssb/driver_chipcommon.c.orig	2008-03-03 16:42:48.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/ssb/driver_chipcommon.c	2008-03-03 16:47:32.000000000 -0500
+--- linux-2.6.24.noarch/drivers/ssb/driver_chipcommon.c.orig	2008-03-04 19:28:32.000000000 -0500
++++ linux-2.6.24.noarch/drivers/ssb/driver_chipcommon.c	2008-03-04 19:35:36.000000000 -0500
 @@ -353,6 +353,16 @@ void ssb_chipco_watchdog_timer_set(struc
  	chipco_write32(cc, SSB_CHIPCO_WATCHDOG, ticks);
  }

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.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- linux-2.6-wireless.patch	28 Feb 2008 02:06:24 -0000	1.25
+++ linux-2.6-wireless.patch	5 Mar 2008 01:09:02 -0000	1.26
@@ -1,706 +1,391 @@
-commit c2893054cc823e05c723114378244c8caba084c0
-Author: Alexey Zaytsev <alexey.zaytsev at gmail.com>
-Date:   Sat Feb 23 13:33:07 2008 +0300
-
-    Don't build bcm43xx if SSB is static and b43 PCI-SSB bridge is enabled.
-    
-    This may happen e.g. when the ssb is statically enables by the b44 driver,
-    and the b43 pci-ssb bridge is enbled by the b43/b43legacy drivers, or the
-    b43/b43legacy drivers are built statically.
-    
-    Signed-off-by: Alexey Zaytsev <alexey.zaytsev at gmail.com>
-    Acked-by: Larry Finger <Larry.Finger at lwfinger.net>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 82928757f3e9451c1ae520f46d327d6110a4eec1
-Author: Alexey Zaytsev <alexey.zaytsev at gmail.com>
-Date:   Sat Feb 23 12:59:26 2008 +0300
+commit c256e05b7b30fab484deacb4f8cff59ce649c75e
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Tue Mar 4 20:31:13 2008 +0100
 
-    Use a separate config option for the b43 pci to ssb bridge.
+    b43legacy: Fix module init message
     
-    The bridge code was unnecessary enabled by the b44
-    driver, but it prevents the bcm43xx driver from
-    being loaded, as the bridge claims the same pci ids.
+    This fixes the module init message to tell that the legacy
+    driver loaded. This makes it less confusing, in case both drivers are loaded.
     
-    Now we enable the birdge only if the b43{legacy}
-    drivers are selected.
-    
-    Signed-off-by: Alexey Zaytsev <alexey.zaytsev at gmail.com>
-    Acked-by: Larry Finger <Larry.Finger at lwfinger.net>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit e668b6729ca1c7f88c7ea1789fb0ed4503c384ce
-Author: Roland Dreier <rdreier at cisco.com>
-Date:   Tue Feb 26 15:26:56 2008 +0100
+commit cdb2a9fe63575dd1eb82b724bbd0aa5e0dd89fa0
+Author: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
+Date:   Tue Mar 4 20:05:27 2008 +0200
 
-    libertas: Remove unused exports
-    
-    The libertas driver exports a number of symbols with no in-tree users;
-    remove these unused exports.  lbs_reset_device() is completely unused, with
-    no callers at all, so remove the function completely.
+    rndis_wlan: fix broken data copy
     
-    A couple of these unused exported symbols are static, which causes the
-    following build error on ia64 with gcc 4.2.3:
+    Replace broken code that attempted to copy 6 byte array to 64-bit
+    integer. Due to missing cast to 64-bit integer, left shift operation
+    were 32-bit and lead to bytes been copied over each other. New code
+    uses simple memcpy, for greater readability and efficiency.
     
-        drivers/net/wireless/libertas/main.c:1375: error: __ksymtab_lbs_remove_mesh causes a section type conflict
-        drivers/net/wireless/libertas/main.c:1354: error: __ksymtab_lbs_add_mesh causes a section type conflict
-    
-    Signed-off-by: Roland Dreier <rolandd at cisco.com>
-    Acked-by: Holger Schurig <hs4233 at mail.mn-solutions.de>
-    Acked-by: Dan Williams <dcbw at redhat.com>
+    Signed-off-by: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 7e0a589e4de9278215da894ba8e41ba0943e7aca
-Author: Johannes Berg <johannes at sipsolutions.net>
-Date:   Tue Feb 26 00:39:28 2008 +0100
+commit 8a96df80b3ddb2410045a26ea19eeccb5f2d2d11
+Author: Sebastian Siewior <bigeasy at tglx.de>
+Date:   Tue Mar 4 18:22:27 2008 +0100
 
-    mac80211: fix kmalloc vs. net_ratelimit
+    libertas: compare the current command with response
     
-    The "goto end;" part definitely must not be rate limited.
+    instead of with itself.
     
-    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: Sebastian Siewior <bigeasy at linutronix.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 702ebfa36437c98a60ea21ac2a18b159e6aa16c6
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Mon Feb 25 23:15:13 2008 +0100
+commit 6305f498604df6c66bdb4cc533ce6332fa5ab61f
+Author: David Woodhouse <dwmw2 at infradead.org>
+Date:   Mon Mar 3 12:20:12 2008 +0100
 
-    rt2x00: Fix rt2x00lib_reset_link_tuner()
-    
-    rt2x00lib_reset_link_tuner() can be called from within
-    the link tuner itself. This means that it should
-    _not_ call rt2x00lib_stop_link_tuner() since that will
-    cause the thread to hang.
+    libertas: fix sanity check on sequence number in command response
     
-    Reorder the things that should be done during a
-    link tuner reset and during a link tuner start.
+    Slightly more useful if we compare it against the sequence number of the
+    command we have outstanding, rather than comparing the reply with itself.
     
-    Also make antenna tuning the last step of the link
-    tuner since it could possibly reset some statistical
-    information which we need for average calculation.
+    Doh. Pointed out by Sebastian Siewior
     
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
+    Acked-by: Dan Williams <dcbw at redhat.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 4460423f7cd0e1c5c0cf92e6159f151ba16e518f
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Mon Feb 25 23:15:08 2008 +0100
+commit c2f2d3a06f8b628d444cf4f396d6c6ddd47e1d1f
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Fri Feb 29 23:28:25 2008 +0100
 
-    rt2x00: Don't switch to antenna with low rssi
-    
-    When rssi_a > rssi_b is true and the current antenna
-    was already antenna A, then rt2x00 incorrectly jumped
-    to antenna B.
+    p54: fix eeprom parser length sanity checks
     
-    Also don't configure the antenna when there has been
-    no change in the antenna setup.
-    
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 50cbbe9cf17c52588a6b709273547c93b7c3d329
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Mon Feb 25 23:15:05 2008 +0100
-
-    rt2x00: Add link tuner safe RX toggle states
-    
-    This adds 2 new states which both are used to toggle
-    the RX. These new states are required for usage
-    inside the link tuner thread, because the normal
-    RX toggling will stop the link tuner thread.
-    While it is possible that the link tuner thread itself
-    is the caller of the RX toggle (when using software
-    antenna diversity).
+    When I called p54_parse_eeprom() on a hand-coded structure
+    I managed to make a small mistake with wrap->len which caused
+    a segfault a few lines down when trying to read entry->len.
+    This patch changes the validation code to avoid such problems.
     
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Tested-by: Florian Fainelli <florian.fainelli at telecomint.eu>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit b268ed34199317e1c627106f1bc60317f2d5c44c
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Mon Feb 25 23:15:01 2008 +0100
+commit 8c28293f5514f64ba064bac7946aebeda4a663c6
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Fri Feb 29 13:56:33 2008 +0100
 
-    rt2x00: Fix antenna diversity
-    
-    Fix 2 issues in antenna diversity selection.
-    
-    1) the following statement will always return true.
-    	if ((rssi_curr - rssi_old) > -5 || (rssi_curr - rssi_old) < 5)
-    It is cleaner to check if the absolute value is smaller then 5.
+    p54: fix EEPROM structure endianness
     
-    2) Only enable software diversity when default antenna setup
-    indicates support for it. Don't select it when the hardware
-    does not indicate support for it...
+    Since the EEPROM structure is read from hardware, it is
+    always little endian, annotate that in the struct and
+    make sure to convert where applicable.
     
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 57b7ed05c7e68e1b14cc7da232cba2967fb670a7
-Author: Sebastian Siewior <linux+wireless at ml.breakpoint.cc>
-Date:   Sat Feb 23 21:46:31 2008 +0100
-
-    gelic wireless driver needs WIRELESS_EXT support
-    
-    |   CC      drivers/net/ps3_gelic_wireless.o
-    | /home/bigeasy/git/linux-2.6/drivers/net/ps3_gelic_wireless.c: In function 'gelic_wl_setup_netdev_ops':
-    | /home/bigeasy/git/linux-2.6/drivers/net/ps3_gelic_wireless.c:2660: error: 'struct net_device' has no member named 'wireless_data'
-    | /home/bigeasy/git/linux-2.6/drivers/net/ps3_gelic_wireless.c:2661: error: 'struct net_device' has no member named 'wireless_handlers'
-    | make[3]: *** [drivers/net/ps3_gelic_wireless.o] Error 1
-    | make[2]: *** [drivers/net] Error 2
-    | make[1]: *** [drivers] Error 2
-    | make[1]: *** Waiting for unfinished jobs....
-    | make: *** [sub-make] Error 2
-    
-    Signed-off-by: Sebastian Siewior <sebastian at breakpoint.cc>
-    Acked-by: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Cc: Michael Wu <flamingice at sourmilk.net>
+    Tested-by: Florian Fainelli <florian.fainelli at telecomint.eu>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 3da83bba86f2aef628919469db5707db6a785868
-Author: Masakazu Mokuno <mokuno at sm.sony.co.jp>
-Date:   Fri Feb 22 16:45:26 2008 +0900
+commit dc63644b0ee3b447e879ef8e124657b40e9ea81c
+Author: Yoichi Yuasa <yoichi_yuasa at tripeaks.co.jp>
+Date:   Fri Feb 29 11:09:31 2008 +0100
 
-    PS3: gelic: Link the wireless net_device structure to the corresponding device structure
-    
-    Link the net_device structure of the wireless part to the
-    corresponding device structure.
+    ssb: Add pcibios_enable_device() return value check
     
-    Without this, the sysfs node for this net_device would not have
-    'device' link.
+    This patch has added pcibios_enable_device() return value check.
     
-    Signed-off-by: Masakazu Mokuno <mokuno at sm.sony.co.jp>
-    Acked-by: Dan Williams <dcbw at redhat.com>
+    Signed-off-by: Yoichi Yuasa <yoichi_yuasa at tripeaks.co.jp>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 04d0a24457e249388ec3ee32b345617d1bc6ebf2
-Author: Johannes Berg <johannes at sipsolutions.net>
-Date:   Wed Feb 20 11:47:45 2008 +0100
+commit 1d60ab0574fae362b1cca0ef52181ef75fd46832
+Author: Stefano Brivio <stefano.brivio at polimi.it>
+Date:   Sun Mar 2 11:33:10 2008 +0100
 
-    rndis_wlan: fix sparse warnings
+    rc80211-pid: fix rate adjustment
     
-    It is obviously wrong to use an enum in a little endian struct,
-    and those other enums should be declared differently.
+    Merge rate_control_pid_shift_adjust() to rate_control_pid_adjust_rate()
+    in order to make the learning algorithm aware of constraints on rates. Also
+    add some comments and rename variables.
     
-    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
-    Acked-by: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 7672b302058148f0e9a4a2be36c851510ff9cb88
-Author: Gordon Farquharson <gordonfarquharson at gmail.com>
-Date:   Sat Feb 23 03:14:23 2008 -0700
-
-    Fix b43 driver build for arm
-    
-    Align the members of the SSB device structure to a 32 bit boundary so
-    that the b43 driver can be built for arm using a cross compiler. This
-    alignment is required so that the test in scripts/mod/file2alias.c
-    that checks that the size of the device ID type against the size of
-    the section in the object file succeeds (see comment and
-    http://lkml.org/lkml/2008/2/18/481 for explanation).
+    This fixes a bug which prevented 802.11b/g non-AP STAs from working with
+    802.11b only AP STAs.
     
-    Signed-off-by: Gordon Farquharson <gordonfarquharson at gmail.com>
-    Acked-by: Michael Buesch <mb at bu3sch.de>
+    This patch was originally destined for 2.6.26, and is being backported
+    to fix a user reported problem in post-2.6.24 kernels.
+    
+    Signed-off-by: Stefano Brivio <stefano.brivio at polimi.it>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-diff -up linux-2.6.24.noarch/include/linux/mod_devicetable.h.orig linux-2.6.24.noarch/include/linux/mod_devicetable.h
---- linux-2.6.24.noarch/include/linux/mod_devicetable.h.orig	2008-02-27 20:46:37.000000000 -0500
-+++ linux-2.6.24.noarch/include/linux/mod_devicetable.h	2008-02-27 20:47:51.000000000 -0500
-@@ -351,7 +351,13 @@ struct sdio_device_id {
- struct ssb_device_id {
- 	__u16	vendor;
- 	__u16	coreid;
--	__u8	revision;
-+	/* Explicit padding to support a broken sanity check in file2alias.c.
-+	 * The check compares the size of the structure in the kernel
-+	 * object file to the size of the structure reported in userspace for
-+	 * the system on which the kernel is compiled. The check breaks on
-+	 * cross-compilation, and the padding is a workaround for this. */
-+	__u8	revision
-+		__attribute__((aligned(sizeof(__u32))));
- };
- #define SSB_DEVICE(_vendor, _coreid, _revision)  \
- 	{ .vendor = _vendor, .coreid = _coreid, .revision = _revision, }
-diff -up linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c.orig linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c
---- linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c.orig	2008-02-27 20:46:37.000000000 -0500
-+++ linux-2.6.24.noarch/net/mac80211/ieee80211_sta.c	2008-02-27 20:47:51.000000000 -0500
-@@ -1116,9 +1116,10 @@ static void ieee80211_sta_process_addba_
- 	/* prepare reordering buffer */
- 	tid_agg_rx->reorder_buf =
- 		kmalloc(buf_size * sizeof(struct sk_buf *), GFP_ATOMIC);
--	if ((!tid_agg_rx->reorder_buf) && net_ratelimit()) {
--		printk(KERN_ERR "can not allocate reordering buffer "
--						"to tid %d\n", tid);
-+	if (!tid_agg_rx->reorder_buf) {
-+		if (net_ratelimit())
-+			printk(KERN_ERR "can not allocate reordering buffer "
-+			       "to tid %d\n", tid);
- 		goto end;
- 	}
- 	memset(tid_agg_rx->reorder_buf, 0,
-diff -up linux-2.6.24.noarch/drivers/net/ps3_gelic_wireless.c.orig linux-2.6.24.noarch/drivers/net/ps3_gelic_wireless.c
---- linux-2.6.24.noarch/drivers/net/ps3_gelic_wireless.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/ps3_gelic_wireless.c	2008-02-27 20:47:51.000000000 -0500
-@@ -2690,6 +2690,7 @@ int gelic_wl_driver_probe(struct gelic_c
- 		return -ENOMEM;
- 
- 	/* setup net_device structure */
-+	SET_NETDEV_DEV(netdev, &card->dev->core);
- 	gelic_wl_setup_netdev_ops(netdev);
- 
- 	/* setup some of net_device and register it */
-diff -up linux-2.6.24.noarch/drivers/net/Kconfig.orig linux-2.6.24.noarch/drivers/net/Kconfig
---- linux-2.6.24.noarch/drivers/net/Kconfig.orig	2008-02-27 20:46:43.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/Kconfig	2008-02-27 20:47:51.000000000 -0500
-@@ -2374,6 +2374,7 @@ config GELIC_NET
- config GELIC_WIRELESS
-        bool "PS3 Wireless support"
-        depends on GELIC_NET
-+       select WIRELESS_EXT
-        help
-         This option adds the support for the wireless feature of PS3.
-         If you have the wireless-less model of PS3 or have no plan to
-diff -up linux-2.6.24.noarch/drivers/net/wireless/b43/Kconfig.orig linux-2.6.24.noarch/drivers/net/wireless/b43/Kconfig
---- linux-2.6.24.noarch/drivers/net/wireless/b43/Kconfig.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43/Kconfig	2008-02-27 20:47:51.000000000 -0500
-@@ -32,6 +32,7 @@ config B43_PCI_AUTOSELECT
- 	bool
- 	depends on B43 && SSB_PCIHOST_POSSIBLE
- 	select SSB_PCIHOST
-+	select SSB_B43_PCI_BRIDGE
- 	default y
- 
- # Auto-select SSB PCICORE driver, if possible
-diff -up linux-2.6.24.noarch/drivers/net/wireless/b43legacy/Kconfig.orig linux-2.6.24.noarch/drivers/net/wireless/b43legacy/Kconfig
---- linux-2.6.24.noarch/drivers/net/wireless/b43legacy/Kconfig.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43legacy/Kconfig	2008-02-27 20:47:51.000000000 -0500
-@@ -25,6 +25,7 @@ config B43LEGACY_PCI_AUTOSELECT
- 	bool
- 	depends on B43LEGACY && SSB_PCIHOST_POSSIBLE
- 	select SSB_PCIHOST
-+	select SSB_B43_PCI_BRIDGE
- 	default y
- 
- # Auto-select SSB PCICORE driver, if possible
-diff -up linux-2.6.24.noarch/drivers/net/wireless/rndis_wlan.c.orig linux-2.6.24.noarch/drivers/net/wireless/rndis_wlan.c
---- linux-2.6.24.noarch/drivers/net/wireless/rndis_wlan.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rndis_wlan.c	2008-02-27 20:47:51.000000000 -0500
-@@ -228,9 +228,9 @@ struct NDIS_WLAN_BSSID_EX {
- 	struct NDIS_802_11_SSID Ssid;
- 	__le32 Privacy;
- 	__le32 Rssi;
--	enum NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
-+	__le32 NetworkTypeInUse;
- 	struct NDIS_802_11_CONFIGURATION Configuration;
--	enum NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
-+	__le32 InfrastructureMode;
- 	u8 SupportedRates[NDIS_802_11_LENGTH_RATES_EX];
- 	__le32 IELength;
- 	u8 IEs[0];
-@@ -279,11 +279,11 @@ struct RNDIS_CONFIG_PARAMETER_INFOBUFFER
- } __attribute__((packed));
+diff -up linux-2.6.24.noarch/net/mac80211/rc80211_pid_algo.c.orig linux-2.6.24.noarch/net/mac80211/rc80211_pid_algo.c
+--- linux-2.6.24.noarch/net/mac80211/rc80211_pid_algo.c.orig	2008-03-04 19:28:35.000000000 -0500
++++ linux-2.6.24.noarch/net/mac80211/rc80211_pid_algo.c	2008-03-04 19:30:56.000000000 -0500
+@@ -2,7 +2,7 @@
+  * Copyright 2002-2005, Instant802 Networks, Inc.
+  * Copyright 2005, Devicescape Software, Inc.
+  * Copyright 2007, Mattias Nissler <mattias.nissler at gmx.de>
+- * Copyright 2007, Stefano Brivio <stefano.brivio at polimi.it>
++ * Copyright 2007-2008, Stefano Brivio <stefano.brivio at polimi.it>
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License version 2 as
+@@ -63,72 +63,66 @@
+  * RC_PID_ARITH_SHIFT.
+  */
  
- /* these have to match what is in wpa_supplicant */
--enum { WPA_ALG_NONE, WPA_ALG_WEP, WPA_ALG_TKIP, WPA_ALG_CCMP } wpa_alg;
--enum { CIPHER_NONE, CIPHER_WEP40, CIPHER_TKIP, CIPHER_CCMP, CIPHER_WEP104 }
--	wpa_cipher;
--enum { KEY_MGMT_802_1X, KEY_MGMT_PSK, KEY_MGMT_NONE, KEY_MGMT_802_1X_NO_WPA,
--	KEY_MGMT_WPA_NONE } wpa_key_mgmt;
-+enum wpa_alg { WPA_ALG_NONE, WPA_ALG_WEP, WPA_ALG_TKIP, WPA_ALG_CCMP };
-+enum wpa_cipher { CIPHER_NONE, CIPHER_WEP40, CIPHER_TKIP, CIPHER_CCMP,
-+		  CIPHER_WEP104 };
-+enum wpa_key_mgmt { KEY_MGMT_802_1X, KEY_MGMT_PSK, KEY_MGMT_NONE,
-+		    KEY_MGMT_802_1X_NO_WPA, KEY_MGMT_WPA_NONE };
- 
- /*
-  *  private data
-diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/main.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/main.c
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/main.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/main.c	2008-02-27 20:47:51.000000000 -0500
-@@ -1351,8 +1351,6 @@ done:
- 	lbs_deb_leave_args(LBS_DEB_MESH, "ret %d", ret);
- 	return ret;
- }
--EXPORT_SYMBOL_GPL(lbs_add_mesh);
 -
- 
- static void lbs_remove_mesh(struct lbs_private *priv)
- {
-@@ -1372,7 +1370,6 @@ static void lbs_remove_mesh(struct lbs_p
- 	free_netdev(mesh_dev);
- 	lbs_deb_leave(LBS_DEB_MESH);
- }
--EXPORT_SYMBOL_GPL(lbs_remove_mesh);
- 
- /**
-  *  @brief This function finds the CFP in
-@@ -1458,20 +1455,6 @@ void lbs_interrupt(struct lbs_private *p
- }
- EXPORT_SYMBOL_GPL(lbs_interrupt);
- 
--int lbs_reset_device(struct lbs_private *priv)
+-/* Shift the adjustment so that we won't switch to a lower rate if it exhibited
+- * a worse failed frames behaviour and we'll choose the highest rate whose
+- * failed frames behaviour is not worse than the one of the original rate
+- * target. While at it, check that the adjustment is within the ranges. Then,
+- * provide the new rate index. */
+-static int rate_control_pid_shift_adjust(struct rc_pid_rateinfo *r,
+-					 int adj, int cur, int l)
 -{
--	int ret;
+-	int i, j, k, tmp;
+-
+-	j = r[cur].rev_index;
+-	i = j + adj;
 -
--	lbs_deb_enter(LBS_DEB_MAIN);
--	ret = lbs_prepare_and_send_command(priv, CMD_802_11_RESET,
--				    CMD_ACT_HALT, 0, 0, NULL);
--	msleep_interruptible(10);
+-	if (i < 0)
+-		return r[0].index;
+-	if (i >= l - 1)
+-		return r[l - 1].index;
 -
--	lbs_deb_leave_args(LBS_DEB_MAIN, "ret %d", ret);
--	return ret;
+-	tmp = i;
+-
+-	if (adj < 0) {
+-		for (k = j; k >= i; k--)
+-			if (r[k].diff <= r[j].diff)
+-				tmp = k;
+-	} else {
+-		for (k = i + 1; k + i < l; k++)
+-			if (r[k].diff <= r[i].diff)
+-				tmp = k;
+-	}
+-
+-	return r[tmp].index;
 -}
--EXPORT_SYMBOL_GPL(lbs_reset_device);
 -
- static int __init lbs_init_module(void)
++/* Adjust the rate while ensuring that we won't switch to a lower rate if it
++ * exhibited a worse failed frames behaviour and we'll choose the highest rate
++ * whose failed frames behaviour is not worse than the one of the original rate
++ * target. While at it, check that the new rate is valid. */
+ static void rate_control_pid_adjust_rate(struct ieee80211_local *local,
+ 					 struct sta_info *sta, int adj,
+ 					 struct rc_pid_rateinfo *rinfo)
  {
- 	lbs_deb_enter(LBS_DEB_MAIN);
-diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/cmd.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/cmd.c
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/cmd.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/cmd.c	2008-02-27 20:47:51.000000000 -0500
-@@ -1040,7 +1040,6 @@ int lbs_mesh_access(struct lbs_private *
- 	lbs_deb_leave(LBS_DEB_CMD);
- 	return ret;
- }
--EXPORT_SYMBOL_GPL(lbs_mesh_access);
+ 	struct ieee80211_sub_if_data *sdata;
+ 	struct ieee80211_hw_mode *mode;
+-	int newidx;
+-	int maxrate;
+-	int back = (adj > 0) ? 1 : -1;
++	int cur_sorted, new_sorted, probe, tmp, n_bitrates;
++	int cur = sta->txrate;
+ 
+ 	sdata = IEEE80211_DEV_TO_SUB_IF(sta->dev);
+ 
+ 	mode = local->oper_hw_mode;
+-	maxrate = sdata->bss ? sdata->bss->max_ratectrl_rateidx : -1;
++	n_bitrates = mode->num_rates;
+ 
+-	newidx = rate_control_pid_shift_adjust(rinfo, adj, sta->txrate,
+-					       mode->num_rates);
++	/* Map passed arguments to sorted values. */
++	cur_sorted = rinfo[cur].rev_index;
++	new_sorted = cur_sorted + adj;
++
++	/* Check limits. */
++	if (new_sorted < 0)
++		new_sorted = rinfo[0].rev_index;
++	else if (new_sorted >= n_bitrates)
++		new_sorted = rinfo[n_bitrates - 1].rev_index;
+ 
+-	while (newidx != sta->txrate) {
+-		if (rate_supported(sta, mode, newidx) &&
+-		    (maxrate < 0 || newidx <= maxrate)) {
+-			sta->txrate = newidx;
+-			break;
+-		}
++	tmp = new_sorted;
+ 
+-		newidx += back;
++	if (adj < 0) {
++		/* Ensure that the rate decrease isn't disadvantageous. */
++		for (probe = cur_sorted; probe >= new_sorted; probe--)
++			if (rinfo[probe].diff <= rinfo[cur_sorted].diff &&
++			    rate_supported(sta, mode, rinfo[probe].index))
++				tmp = probe;
++	} else {
++		/* Look for rate increase with zero (or below) cost. */
++		for (probe = new_sorted + 1; probe < n_bitrates; probe++)
++			if (rinfo[probe].diff <= rinfo[new_sorted].diff &&
++			    rate_supported(sta, mode, rinfo[probe].index))
++				tmp = probe;
+ 	}
  
- int lbs_mesh_config(struct lbs_private *priv, uint16_t enable, uint16_t chan)
- {
-@@ -1576,7 +1575,6 @@ done:
- 	lbs_deb_leave_args(LBS_DEB_HOST, "ret %d", ret);
- 	return ret;
++	/* Fit the rate found to the nearest supported rate. */
++	do {
++		if (rate_supported(sta, mode, rinfo[tmp].index)) {
++			sta->txrate = rinfo[tmp].index;
++			break;
++		}
++		if (adj < 0)
++			tmp--;
++		else
++			tmp++;
++	} while (tmp < n_bitrates && tmp >= 0);
++
+ #ifdef CONFIG_MAC80211_DEBUGFS
+ 	rate_control_pid_event_rate_change(
+ 		&((struct rc_pid_sta_info *)sta->rate_ctrl_priv)->events,
+-		newidx, mode->rates[newidx].rate);
++		cur, mode->rates[cur].rate);
+ #endif
  }
--EXPORT_SYMBOL_GPL(lbs_prepare_and_send_command);
  
- /**
-  *  @brief This function allocates the command buffer and link
-diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/decl.h.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/decl.h
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/decl.h.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/decl.h	2008-02-27 20:47:51.000000000 -0500
-@@ -69,7 +69,6 @@ struct lbs_private *lbs_add_card(void *c
- int lbs_remove_card(struct lbs_private *priv);
- int lbs_start_card(struct lbs_private *priv);
- int lbs_stop_card(struct lbs_private *priv);
--int lbs_reset_device(struct lbs_private *priv);
- void lbs_host_to_card_done(struct lbs_private *priv);
- 
- int lbs_update_channel(struct lbs_private *priv);
-diff -up linux-2.6.24.noarch/drivers/net/wireless/bcm43xx/Kconfig.orig linux-2.6.24.noarch/drivers/net/wireless/bcm43xx/Kconfig
---- linux-2.6.24.noarch/drivers/net/wireless/bcm43xx/Kconfig.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/bcm43xx/Kconfig	2008-02-27 20:47:51.000000000 -0500
-@@ -1,6 +1,6 @@
- config BCM43XX
- 	tristate "Broadcom BCM43xx wireless support (DEPRECATED)"
--	depends on PCI && IEEE80211 && IEEE80211_SOFTMAC && WLAN_80211 && EXPERIMENTAL
-+	depends on PCI && IEEE80211 && IEEE80211_SOFTMAC && WLAN_80211 && (!SSB_B43_PCI_BRIDGE || SSB != y) && EXPERIMENTAL
- 	select WIRELESS_EXT
- 	select FW_LOADER
- 	select HW_RANDOM
-diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c	2008-02-27 20:47:51.000000000 -0500
-@@ -61,11 +61,33 @@ EXPORT_SYMBOL_GPL(rt2x00lib_get_ring);
- /*
-  * Link tuning handlers
-  */
--static void rt2x00lib_start_link_tuner(struct rt2x00_dev *rt2x00dev)
-+void rt2x00lib_reset_link_tuner(struct rt2x00_dev *rt2x00dev)
- {
-+	if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
-+		return;
+diff -up linux-2.6.24.noarch/drivers/net/wireless/p54common.h.orig linux-2.6.24.noarch/drivers/net/wireless/p54common.h
+--- linux-2.6.24.noarch/drivers/net/wireless/p54common.h.orig	2008-01-24 17:58:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/p54common.h	2008-03-04 19:30:56.000000000 -0500
+@@ -53,10 +53,10 @@ struct pda_entry {
+ } __attribute__ ((packed));
+ 
+ struct eeprom_pda_wrap {
+-	u32 magic;
+-	u16 pad;
+-	u16 len;
+-	u32 arm_opcode;
++	__le32 magic;
++	__le16 pad;
++	__le16 len;
++	__le32 arm_opcode;
+ 	u8 data[0];
+ } __attribute__ ((packed));
+ 
+diff -up linux-2.6.24.noarch/drivers/net/wireless/p54common.c.orig linux-2.6.24.noarch/drivers/net/wireless/p54common.c
+--- linux-2.6.24.noarch/drivers/net/wireless/p54common.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/p54common.c	2008-03-04 19:30:56.000000000 -0500
+@@ -166,18 +166,23 @@ int p54_parse_eeprom(struct ieee80211_hw
+ 	struct p54_common *priv = dev->priv;
+ 	struct eeprom_pda_wrap *wrap = NULL;
+ 	struct pda_entry *entry;
+-	int i = 0;
+ 	unsigned int data_len, entry_len;
+ 	void *tmp;
+ 	int err;
++	u8 *end = (u8 *)eeprom + len;
+ 
+ 	wrap = (struct eeprom_pda_wrap *) eeprom;
+-	entry = (void *)wrap->data + wrap->len;
+-	i += 2;
+-	i += le16_to_cpu(entry->len)*2;
+-	while (i < len) {
++	entry = (void *)wrap->data + le16_to_cpu(wrap->len);
 +
-+	/*
-+	 * Reset link information.
-+	 * Both the currently active vgc level as well as
-+	 * the link tuner counter should be reset. Resetting
-+	 * the counter is important for devices where the
-+	 * device should only perform link tuning during the
-+	 * first minute after being enabled.
-+	 */
- 	rt2x00dev->link.count = 0;
- 	rt2x00dev->link.vgc_level = 0;
- 
-+	/*
-+	 * Reset the link tuner.
-+	 */
-+	rt2x00dev->ops->lib->reset_tuner(rt2x00dev);
-+}
++	/* verify that at least the entry length/code fits */
++	while ((u8 *)entry <= end - sizeof(*entry)) {
+ 		entry_len = le16_to_cpu(entry->len);
+ 		data_len = ((entry_len - 1) << 1);
 +
-+static void rt2x00lib_start_link_tuner(struct rt2x00_dev *rt2x00dev)
-+{
-+	/*
-+	 * Clear all (possibly) pre-existing quality statistics.
-+	 */
- 	memset(&rt2x00dev->link.qual, 0, sizeof(rt2x00dev->link.qual));
- 
- 	/*
-@@ -79,10 +101,7 @@ static void rt2x00lib_start_link_tuner(s
- 	rt2x00dev->link.qual.rx_percentage = 50;
- 	rt2x00dev->link.qual.tx_percentage = 50;
- 
--	/*
--	 * Reset the link tuner.
--	 */
--	rt2x00dev->ops->lib->reset_tuner(rt2x00dev);
-+	rt2x00lib_reset_link_tuner(rt2x00dev);
- 
- 	queue_delayed_work(rt2x00dev->hw->workqueue,
- 			   &rt2x00dev->link.work, LINK_TUNE_INTERVAL);
-@@ -93,15 +112,6 @@ static void rt2x00lib_stop_link_tuner(st
- 	cancel_delayed_work_sync(&rt2x00dev->link.work);
- }
- 
--void rt2x00lib_reset_link_tuner(struct rt2x00_dev *rt2x00dev)
--{
--	if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
--		return;
--
--	rt2x00lib_stop_link_tuner(rt2x00dev);
--	rt2x00lib_start_link_tuner(rt2x00dev);
--}
--
- /*
-  * Ring initialization
-  */
-@@ -260,19 +270,11 @@ static void rt2x00lib_evaluate_antenna_s
- 	if (sample_a == sample_b)
- 		return;
- 
--	if (rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY) {
--		if (sample_a > sample_b && rx == ANTENNA_B)
--			rx = ANTENNA_A;
--		else if (rx == ANTENNA_A)
--			rx = ANTENNA_B;
--	}
-+	if (rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY)
-+		rx = (sample_a > sample_b) ? ANTENNA_A : ANTENNA_B;
++		/* abort if entry exceeds whole structure */
++		if ((u8 *)entry + sizeof(*entry) + data_len > end)
++			break;
++
+ 		switch (le16_to_cpu(entry->code)) {
+ 		case PDR_MAC_ADDRESS:
+ 			SET_IEEE80211_PERM_ADDR(dev, entry->data);
+@@ -249,13 +254,12 @@ int p54_parse_eeprom(struct ieee80211_hw
+ 			priv->version = *(u8 *)(entry->data + 1);
+ 			break;
+ 		case PDR_END:
+-			i = len;
++			/* make it overrun */
++			entry_len = len;
+ 			break;
+ 		}
+ 
+ 		entry = (void *)entry + (entry_len + 1)*2;
+-		i += 2;
+-		i += entry_len*2;
+ 	}
  
--	if (rt2x00dev->link.ant.flags & ANTENNA_TX_DIVERSITY) {
--		if (sample_a > sample_b && tx == ANTENNA_B)
--			tx = ANTENNA_A;
--		else if (tx == ANTENNA_A)
--			tx = ANTENNA_B;
--	}
-+	if (rt2x00dev->link.ant.flags & ANTENNA_TX_DIVERSITY)
-+		tx = (sample_a > sample_b) ? ANTENNA_A : ANTENNA_B;
+ 	if (!priv->iq_autocal || !priv->output_limit || !priv->curve_data) {
+diff -up linux-2.6.24.noarch/drivers/net/wireless/b43legacy/main.c.orig linux-2.6.24.noarch/drivers/net/wireless/b43legacy/main.c
+--- linux-2.6.24.noarch/drivers/net/wireless/b43legacy/main.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/b43legacy/main.c	2008-03-04 19:30:56.000000000 -0500
+@@ -3829,7 +3829,7 @@ static void b43legacy_print_driverinfo(v
+ #ifdef CONFIG_B43LEGACY_DMA
+ 	feat_dma = "D";
+ #endif
+-	printk(KERN_INFO "Broadcom 43xx driver loaded "
++	printk(KERN_INFO "Broadcom 43xx-legacy driver loaded "
+ 	       "[ Features: %s%s%s%s%s, Firmware-ID: "
+ 	       B43legacy_SUPPORTED_FIRMWARE_ID " ]\n",
+ 	       feat_pci, feat_leds, feat_rfkill, feat_pio, feat_dma);
+diff -up linux-2.6.24.noarch/drivers/net/wireless/rndis_wlan.c.orig linux-2.6.24.noarch/drivers/net/wireless/rndis_wlan.c
+--- linux-2.6.24.noarch/drivers/net/wireless/rndis_wlan.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/rndis_wlan.c	2008-03-04 19:30:56.000000000 -0500
+@@ -260,7 +260,7 @@ struct NDIS_802_11_KEY {
+ 	__le32 KeyLength;
+ 	u8 Bssid[6];
+ 	u8 Padding[6];
+-	__le64 KeyRSC;
++	u8 KeyRSC[8];
+ 	u8 KeyMaterial[32];
+ } __attribute__((packed));
  
- 	rt2x00lib_config_antenna(rt2x00dev, rx, tx);
- }
-@@ -293,7 +295,7 @@ static void rt2x00lib_evaluate_antenna_e
- 	 * sample the rssi from the other antenna to make a valid
- 	 * comparison between the 2 antennas.
- 	 */
--	if ((rssi_curr - rssi_old) > -5 || (rssi_curr - rssi_old) < 5)
-+	if (abs(rssi_curr - rssi_old) < 5)
- 		return;
- 
- 	rt2x00dev->link.ant.flags |= ANTENNA_MODE_SAMPLE;
-@@ -319,15 +321,15 @@ static void rt2x00lib_evaluate_antenna(s
- 	rt2x00dev->link.ant.flags &= ~ANTENNA_TX_DIVERSITY;
- 
- 	if (rt2x00dev->hw->conf.antenna_sel_rx == 0 &&
--	    rt2x00dev->default_ant.rx != ANTENNA_SW_DIVERSITY)
-+	    rt2x00dev->default_ant.rx == ANTENNA_SW_DIVERSITY)
- 		rt2x00dev->link.ant.flags |= ANTENNA_RX_DIVERSITY;
- 	if (rt2x00dev->hw->conf.antenna_sel_tx == 0 &&
--	    rt2x00dev->default_ant.tx != ANTENNA_SW_DIVERSITY)
-+	    rt2x00dev->default_ant.tx == ANTENNA_SW_DIVERSITY)
- 		rt2x00dev->link.ant.flags |= ANTENNA_TX_DIVERSITY;
- 
- 	if (!(rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY) &&
- 	    !(rt2x00dev->link.ant.flags & ANTENNA_TX_DIVERSITY)) {
--		rt2x00dev->link.ant.flags &= ~ANTENNA_MODE_SAMPLE;
-+		rt2x00dev->link.ant.flags = 0;
- 		return;
+@@ -1508,7 +1508,7 @@ static int rndis_iw_set_encode_ext(struc
+ 	struct usbnet *usbdev = dev->priv;
+ 	struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev);
+ 	struct NDIS_802_11_KEY ndis_key;
+-	int i, keyidx, ret;
++	int keyidx, ret;
+ 	u8 *addr;
+ 
+ 	keyidx = wrqu->encoding.flags & IW_ENCODE_INDEX;
+@@ -1543,9 +1543,7 @@ static int rndis_iw_set_encode_ext(struc
+ 	ndis_key.KeyIndex = cpu_to_le32(keyidx);
+ 
+ 	if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) {
+-		for (i = 0; i < 6; i++)
+-			ndis_key.KeyRSC |=
+-				cpu_to_le64(ext->rx_seq[i] << (i * 8));
++		memcpy(ndis_key.KeyRSC, ext->rx_seq, 6);
+ 		ndis_key.KeyIndex |= cpu_to_le32(1 << 29);
  	}
  
-@@ -441,17 +443,18 @@ static void rt2x00lib_link_tuner(struct 
- 		rt2x00dev->ops->lib->link_tuner(rt2x00dev);
+diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/cmdresp.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/cmdresp.c
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/cmdresp.c.orig	2008-03-04 19:28:31.000000000 -0500
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/cmdresp.c	2008-03-04 19:30:56.000000000 -0500
+@@ -562,9 +562,7 @@ int lbs_process_rx_command(struct lbs_pr
+ 	}
  
- 	/*
--	 * Evaluate antenna setup.
--	 */
--	rt2x00lib_evaluate_antenna(rt2x00dev);
+ 	resp = (void *)priv->upld_buf;
 -
--	/*
- 	 * Precalculate a portion of the link signal which is
- 	 * in based on the tx/rx success/failure counters.
- 	 */
- 	rt2x00lib_precalculate_link_signal(&rt2x00dev->link.qual);
- 
- 	/*
-+	 * Evaluate antenna setup, make this the last step since this could
-+	 * possibly reset some statistics.
-+	 */
-+	rt2x00lib_evaluate_antenna(rt2x00dev);
-+
-+	/*
- 	 * Increase tuner counter, and reschedule the next link tuner run.
- 	 */
- 	rt2x00dev->link.count++;
-diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c	2008-02-27 20:47:51.000000000 -0500
-@@ -960,8 +960,12 @@ static int rt2400pci_set_device_state(st
- 		rt2400pci_disable_radio(rt2x00dev);
- 		break;
- 	case STATE_RADIO_RX_ON:
-+	case STATE_RADIO_RX_ON_LINK:
-+		rt2400pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
-+		break;
- 	case STATE_RADIO_RX_OFF:
--		rt2400pci_toggle_rx(rt2x00dev, state);
-+	case STATE_RADIO_RX_OFF_LINK:
-+		rt2400pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
- 		break;
- 	case STATE_DEEP_SLEEP:
- 	case STATE_SLEEP:
-diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c	2008-02-27 20:47:51.000000000 -0500
-@@ -1001,8 +1001,12 @@ static int rt2500usb_set_device_state(st
- 		rt2500usb_disable_radio(rt2x00dev);
- 		break;
- 	case STATE_RADIO_RX_ON:
-+	case STATE_RADIO_RX_ON_LINK:
-+		rt2500usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
-+		break;
- 	case STATE_RADIO_RX_OFF:
--		rt2500usb_toggle_rx(rt2x00dev, state);
-+	case STATE_RADIO_RX_OFF_LINK:
-+		rt2500usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
- 		break;
- 	case STATE_DEEP_SLEEP:
- 	case STATE_SLEEP:
-diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00reg.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00reg.h
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00reg.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00reg.h	2008-02-27 20:47:51.000000000 -0500
-@@ -85,6 +85,8 @@ enum dev_state {
- 	STATE_RADIO_OFF,
- 	STATE_RADIO_RX_ON,
- 	STATE_RADIO_RX_OFF,
-+	STATE_RADIO_RX_ON_LINK,
-+	STATE_RADIO_RX_OFF_LINK,
- 	STATE_RADIO_IRQ_ON,
- 	STATE_RADIO_IRQ_OFF,
- };
-diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00config.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00config.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00config.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00config.c	2008-02-27 20:47:51.000000000 -0500
-@@ -97,12 +97,16 @@ void rt2x00lib_config_antenna(struct rt2
- 	libconf.ant.rx = rx;
- 	libconf.ant.tx = tx;
- 
-+	if (rx == rt2x00dev->link.ant.active.rx &&
-+	    tx == rt2x00dev->link.ant.active.tx)
+-	curcmd = le16_to_cpu(resp->command);
+-
++	curcmd = le16_to_cpu(priv->cur_cmd->cmdbuf->command);
+ 	respcmd = le16_to_cpu(resp->command);
+ 	result = le16_to_cpu(resp->result);
+ 
+@@ -572,9 +570,9 @@ int lbs_process_rx_command(struct lbs_pr
+ 		     respcmd, le16_to_cpu(resp->seqnum), priv->upld_len, jiffies);
+ 	lbs_deb_hex(LBS_DEB_HOST, "CMD_RESP", (void *) resp, priv->upld_len);
+ 
+-	if (resp->seqnum != resp->seqnum) {
++	if (resp->seqnum != priv->cur_cmd->cmdbuf->seqnum) {
+ 		lbs_pr_info("Received CMD_RESP with invalid sequence %d (expected %d)\n",
+-			    le16_to_cpu(resp->seqnum), le16_to_cpu(resp->seqnum));
++			    le16_to_cpu(resp->seqnum), le16_to_cpu(priv->cur_cmd->cmdbuf->seqnum));
+ 		spin_unlock_irqrestore(&priv->driver_lock, flags);
+ 		ret = -1;
+ 		goto done;
+diff -up linux-2.6.24.noarch/drivers/ssb/driver_pcicore.c.orig linux-2.6.24.noarch/drivers/ssb/driver_pcicore.c
+--- linux-2.6.24.noarch/drivers/ssb/driver_pcicore.c.orig	2008-03-04 19:28:37.000000000 -0500
++++ linux-2.6.24.noarch/drivers/ssb/driver_pcicore.c	2008-03-04 19:30:56.000000000 -0500
+@@ -111,7 +111,10 @@ static void __init ssb_fixup_pcibridge(s
+ 
+ 	/* Enable PCI bridge bus mastering and memory space */
+ 	pci_set_master(dev);
+-	pcibios_enable_device(dev, ~0);
++	if (pcibios_enable_device(dev, ~0) < 0) {
++		ssb_printk(KERN_ERR "PCI: SSB bridge enable failed\n");
 +		return;
-+
- 	/*
- 	 * Antenna setup changes require the RX to be disabled,
- 	 * else the changes will be ignored by the device.
- 	 */
- 	if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
--		rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
-+		rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF_LINK);
- 
- 	/*
- 	 * Write new antenna setup to device and reset the link tuner.
-@@ -116,7 +120,7 @@ void rt2x00lib_config_antenna(struct rt2
- 	rt2x00dev->link.ant.active.tx = libconf.ant.tx;
- 
- 	if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
--		rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
-+		rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON_LINK);
- }
++	}
  
- void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,
-diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c	2008-02-27 20:47:51.000000000 -0500
-@@ -1112,8 +1112,12 @@ static int rt2500pci_set_device_state(st
- 		rt2500pci_disable_radio(rt2x00dev);
- 		break;
- 	case STATE_RADIO_RX_ON:
-+	case STATE_RADIO_RX_ON_LINK:
-+		rt2500pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
-+		break;
- 	case STATE_RADIO_RX_OFF:
--		rt2500pci_toggle_rx(rt2x00dev, state);
-+	case STATE_RADIO_RX_OFF_LINK:
-+		rt2500pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
- 		break;
- 	case STATE_DEEP_SLEEP:
- 	case STATE_SLEEP:
-diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c	2008-02-27 20:47:51.000000000 -0500
-@@ -1482,8 +1482,12 @@ static int rt61pci_set_device_state(stru
- 		rt61pci_disable_radio(rt2x00dev);
- 		break;
- 	case STATE_RADIO_RX_ON:
-+	case STATE_RADIO_RX_ON_LINK:
-+		rt61pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
-+		break;
- 	case STATE_RADIO_RX_OFF:
--		rt61pci_toggle_rx(rt2x00dev, state);
-+	case STATE_RADIO_RX_OFF_LINK:
-+		rt61pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
- 		break;
- 	case STATE_DEEP_SLEEP:
- 	case STATE_SLEEP:
-diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c
---- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig	2008-02-27 20:46:34.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c	2008-02-27 20:47:51.000000000 -0500
-@@ -1208,8 +1208,12 @@ static int rt73usb_set_device_state(stru
- 		rt73usb_disable_radio(rt2x00dev);
- 		break;
- 	case STATE_RADIO_RX_ON:
-+	case STATE_RADIO_RX_ON_LINK:
-+		rt73usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
-+		break;
- 	case STATE_RADIO_RX_OFF:
--		rt73usb_toggle_rx(rt2x00dev, state);
-+	case STATE_RADIO_RX_OFF_LINK:
-+		rt73usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
- 		break;
- 	case STATE_DEEP_SLEEP:
- 	case STATE_SLEEP:
-diff -up linux-2.6.24.noarch/drivers/ssb/Makefile.orig linux-2.6.24.noarch/drivers/ssb/Makefile
---- linux-2.6.24.noarch/drivers/ssb/Makefile.orig	2008-02-27 20:46:35.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/ssb/Makefile	2008-02-27 20:47:51.000000000 -0500
-@@ -14,6 +14,6 @@ ssb-$(CONFIG_SSB_DRIVER_PCICORE)	+= driv
- 
- # b43 pci-ssb-bridge driver
- # Not strictly a part of SSB, but kept here for convenience
--ssb-$(CONFIG_SSB_PCIHOST)		+= b43_pci_bridge.o
-+ssb-$(CONFIG_SSB_B43_PCI_BRIDGE)	+= b43_pci_bridge.o
- 
- obj-$(CONFIG_SSB)			+= ssb.o
-diff -up linux-2.6.24.noarch/drivers/ssb/ssb_private.h.orig linux-2.6.24.noarch/drivers/ssb/ssb_private.h
---- linux-2.6.24.noarch/drivers/ssb/ssb_private.h.orig	2008-01-24 17:58:37.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/ssb/ssb_private.h	2008-02-27 20:47:51.000000000 -0500
-@@ -120,10 +120,10 @@ extern int ssb_devices_thaw(struct ssb_b
- extern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev);
- 
- /* b43_pci_bridge.c */
--#ifdef CONFIG_SSB_PCIHOST
-+#ifdef CONFIG_SSB_B43_PCI_BRIDGE
- extern int __init b43_pci_ssb_bridge_init(void);
- extern void __exit b43_pci_ssb_bridge_exit(void);
--#else /* CONFIG_SSB_PCIHOST */
-+#else /* CONFIG_SSB_B43_PCI_BRIDGR */
- static inline int b43_pci_ssb_bridge_init(void)
- {
- 	return 0;
-diff -up linux-2.6.24.noarch/drivers/ssb/Kconfig.orig linux-2.6.24.noarch/drivers/ssb/Kconfig
---- linux-2.6.24.noarch/drivers/ssb/Kconfig.orig	2008-02-27 20:46:35.000000000 -0500
-+++ linux-2.6.24.noarch/drivers/ssb/Kconfig	2008-02-27 20:47:51.000000000 -0500
-@@ -35,6 +35,11 @@ config SSB_PCIHOST
- 
- 	  If unsure, say Y
- 
-+config SSB_B43_PCI_BRIDGE
-+	bool
-+	depends on SSB_PCIHOST
-+	default n
-+
- config SSB_PCMCIAHOST_POSSIBLE
- 	bool
- 	depends on SSB && (PCMCIA = y || PCMCIA = SSB) && EXPERIMENTAL
+ 	/* Enable PCI bridge BAR1 prefetch and burst */
+ 	pci_write_config_dword(dev, SSB_BAR1_CONTROL, 3);




More information about the fedora-extras-commits mailing list