rpms/kernel/devel kernel.spec, 1.691, 1.692 linux-2.6-wireless-pending.patch, 1.52, 1.53 linux-2.6-wireless.patch, 1.40, 1.41

John W. Linville (linville) fedora-extras-commits at redhat.com
Fri Jun 13 23:54:55 UTC 2008


Author: linville

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

Modified Files:
	kernel.spec linux-2.6-wireless-pending.patch 
	linux-2.6-wireless.patch 
Log Message:
Upstream wireless fixes from 2008-06-13


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.691
retrieving revision 1.692
diff -u -r1.691 -r1.692
--- kernel.spec	13 Jun 2008 20:43:29 -0000	1.691
+++ kernel.spec	13 Jun 2008 23:54:08 -0000	1.692
@@ -1135,7 +1135,7 @@
 ApplyPatch linux-2.6-selinux-get-invalid-xattrs.patch
 
 # wireless patches headed for 2.6.26
-#ApplyPatch linux-2.6-wireless.patch
+ApplyPatch linux-2.6-wireless.patch
 # wireless patches headed for 2.6.27
 ApplyPatch linux-2.6-wireless-pending.patch
 
@@ -1780,6 +1780,10 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
 
 %changelog
+* Fri Jun 13 2008 John W. Linville <linville at redhat.com>
+- Upstream wireless fixes from 2008-06-13
+  (http://marc.info/?l=linux-wireless&m=121339101523260&w=2)
+
 * Fri Jun 13 2008 Chuck Ebbert <cebbert at redhat.com>
 - Build in the KGDB serial interface so early kernel init can be debugged.
 

linux-2.6-wireless-pending.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.52 -r 1.53 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.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- linux-2.6-wireless-pending.patch	10 Jun 2008 19:08:27 -0000	1.52
+++ linux-2.6-wireless-pending.patch	13 Jun 2008 23:54:08 -0000	1.53
@@ -3753,8 +3753,8 @@
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
 diff -up linux-2.6.25.noarch/drivers/net/Kconfig.orig linux-2.6.25.noarch/drivers/net/Kconfig
---- linux-2.6.25.noarch/drivers/net/Kconfig.orig	2008-06-10 13:13:57.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/Kconfig	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/Kconfig.orig	2008-06-13 17:32:34.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/Kconfig	2008-06-13 19:28:52.000000000 -0400
 @@ -2283,6 +2283,19 @@ config GELIC_WIRELESS
  	  the driver automatically distinguishes the models, you can
  	  safely enable this option even if you have a wireless-less model.
@@ -3776,8 +3776,8 @@
  	tristate "Gianfar Ethernet"
  	depends on FSL_SOC
 diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig	2008-06-13 17:32:43.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c	2008-06-13 19:28:52.000000000 -0400
 @@ -110,7 +110,7 @@ static void gelic_card_get_ether_port_st
  void gelic_card_up(struct gelic_card *card)
  {
@@ -3824,8 +3824,8 @@
  
  	return card;
 diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig	2008-06-13 17:32:43.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h	2008-06-13 19:28:52.000000000 -0400
 @@ -298,7 +298,7 @@ struct gelic_card {
  	wait_queue_head_t waitq;
  
@@ -3836,8 +3836,8 @@
  
  	u64 ether_port_status;
 diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig	2008-06-13 17:32:43.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c	2008-06-13 19:28:52.000000000 -0400
 @@ -45,7 +45,8 @@
  #include "ps3_gelic_wireless.h"
  
@@ -4381,7 +4381,7 @@
  	destroy_workqueue(wl->event_queue);
 diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h
 --- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig	2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h	2008-06-10 13:17:26.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h	2008-06-13 19:28:52.000000000 -0400
 @@ -241,7 +241,7 @@ enum gelic_wl_assoc_state {
  #define GELIC_WEP_KEYS 4
  struct gelic_wl_info {
@@ -4411,8 +4411,8 @@
  	struct iw_statistics iwstat;
  };
 diff -up linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig linux-2.6.25.noarch/drivers/net/wireless/adm8211.c
---- linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig	2008-06-13 17:32:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c	2008-06-13 19:28:52.000000000 -0400
 @@ -306,11 +306,10 @@ static int adm8211_get_tx_stats(struct i
  				struct ieee80211_tx_queue_stats *stats)
  {
@@ -4561,8 +4561,8 @@
  
  	return 0;
 diff -up linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig linux-2.6.25.noarch/drivers/net/wireless/adm8211.h
---- linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.h	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig	2008-06-13 17:32:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.h	2008-06-13 19:28:52.000000000 -0400
 @@ -443,7 +443,6 @@ struct adm8211_rx_ring_info {
  struct adm8211_tx_ring_info {
  	struct sk_buff *skb;
@@ -4572,8 +4572,8 @@
  };
  
 diff -up linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig linux-2.6.25.noarch/drivers/net/wireless/airo.c
---- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/airo.c	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig	2008-06-13 17:32:50.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/airo.c	2008-06-13 19:28:52.000000000 -0400
 @@ -1148,7 +1148,6 @@ static u8 airo_dbm_to_pct (tdsRssiEntry 
  static void airo_networks_free(struct airo_info *ai);
  
@@ -4743,7 +4743,7 @@
  	buffer = (u16*)skb_put (skb, len + hdrlen);
 diff -up linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig linux-2.6.25.noarch/drivers/net/wireless/arlan.h
 --- linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig	2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/arlan.h	2008-06-10 13:17:26.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/arlan.h	2008-06-13 19:28:52.000000000 -0400
 @@ -330,7 +330,6 @@ struct TxParam
  #define TX_RING_SIZE 2
  /* Information that need to be kept for each board. */
@@ -4754,7 +4754,7 @@
  
 diff -up linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c
 --- linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig	2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c	2008-06-10 13:17:26.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c	2008-06-13 19:28:52.000000000 -0400
 @@ -125,7 +125,7 @@ static inline int arlan_drop_tx(struct n
  {
  	struct arlan_private *priv = netdev_priv(dev);
@@ -4839,8 +4839,8 @@
  
  
 diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig	2008-06-13 17:32:50.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c	2008-06-13 19:28:52.000000000 -0400
 @@ -167,8 +167,7 @@ static struct pci_driver ath5k_pci_drive
  /*
   * Prototypes - MAC 802.11 stack related functions
@@ -5130,8 +5130,8 @@
  		sc->bbuf->skb = NULL;
  	else
 diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig	2008-06-13 17:32:50.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h	2008-06-13 19:28:52.000000000 -0400
 @@ -60,7 +60,6 @@ struct ath5k_buf {
  	dma_addr_t		daddr;	/* physical addr of desc */
  	struct sk_buff		*skb;	/* skbuff for buf */
@@ -5151,8 +5151,8 @@
  	struct ieee80211_hw	*hw;		/* IEEE 802.11 common */
  	struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
 diff -up linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig linux-2.6.25.noarch/drivers/net/wireless/atmel.c
---- linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/atmel.c	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig	2008-06-13 17:32:50.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/atmel.c	2008-06-13 19:28:52.000000000 -0400
 @@ -433,7 +433,6 @@ struct atmel_private {
  	struct net_device *dev;
  	struct device *sys_dev;
@@ -5332,8 +5332,8 @@
  	dev->do_ioctl = atmel_ioctl;
  	dev->irq = irq;
 diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h
---- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h	2008-06-10 13:17:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig	2008-06-13 19:28:20.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h	2008-06-13 19:28:52.000000000 -0400
 @@ -410,8 +410,7 @@ enum {
  #define B43_IRQ_TIMEOUT			0x80000000
  
@@ -5371,7 +5371,7 @@
  /* Device specific rate values.
   * The actual values defined here are (rate_in_mbps * 2).
   * Some code depends on this. Don't change it. */
-@@ -734,7 +753,6 @@ struct b43_wl {
+@@ -733,7 +752,6 @@ struct b43_wl {
  	/* The beacon we are currently using (AP or IBSS mode).
  	 * This beacon stuff is protected by the irq_lock. */
  	struct sk_buff *current_beacon;
@@ -5379,7 +5379,7 @@
  	bool beacon0_uploaded;
  	bool beacon1_uploaded;
  	bool beacon_templates_virgin; /* Never wrote the templates? */
-@@ -768,6 +786,13 @@ struct b43_firmware {
+@@ -767,6 +785,13 @@ struct b43_firmware {
  	u16 rev;
  	/* Firmware patchlevel */
  	u16 patch;
@@ -5393,7 +5393,7 @@
  };
  
  /* Device (802.11 core) initialization status. */
-@@ -941,22 +966,6 @@ static inline bool __b43_warn_on_dummy(b
+@@ -940,22 +965,6 @@ static inline bool __b43_warn_on_dummy(b
  # define B43_WARN_ON(x)	__b43_warn_on_dummy(unlikely(!!(x)))
  #endif
  
@@ -5418,7 +5418,7 @@
  /* Convert a Q5.2 value to an integer (precision loss!) */
 diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c
 --- linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c.orig	2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c	2008-06-10 13:17:26.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c	2008-06-13 19:28:52.000000000 -0400
 @@ -270,24 +270,22 @@ static int restart_write_file(struct b43
  	return err;
  }
@@ -5545,7 +5545,7 @@
  }
 diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h
 --- linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h.orig	2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h	2008-06-10 13:17:26.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h	2008-06-13 19:28:52.000000000 -0400
 @@ -10,6 +10,7 @@ enum b43_dyndbg {		/* Dynamic debugging 
  	B43_DBG_DMAVERBOSE,
[...2125 lines suppressed...]
 diff -up linux-2.6.25.noarch/net/mac80211/rc80211_pid_algo.c.orig linux-2.6.25.noarch/net/mac80211/rc80211_pid_algo.c
---- linux-2.6.25.noarch/net/mac80211/rc80211_pid_algo.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/rc80211_pid_algo.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/rc80211_pid_algo.c.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/rc80211_pid_algo.c	2008-06-13 19:28:53.000000000 -0400
 @@ -237,8 +237,7 @@ static void rate_control_pid_sample(stru
  }
  
@@ -50849,8 +50848,8 @@
  #ifdef CONFIG_MAC80211_DEBUGFS
  	rate_control_pid_event_tx_rate(
 diff -up linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c.orig linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c
---- linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c	2008-06-13 19:28:53.000000000 -0400
 @@ -39,11 +39,11 @@ static void rate_control_pid_event(struc
  }
  
@@ -50878,7 +50877,7 @@
  		p += snprintf(pb + p, length - p, "rate_change %d %d",
 diff -up linux-2.6.25.noarch/net/mac80211/rc80211_pid.h.orig linux-2.6.25.noarch/net/mac80211/rc80211_pid.h
 --- linux-2.6.25.noarch/net/mac80211/rc80211_pid.h.orig	2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/rc80211_pid.h	2008-06-10 13:17:43.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/rc80211_pid.h	2008-06-13 19:28:53.000000000 -0400
 @@ -61,7 +61,7 @@ enum rc_pid_event_type {
  union rc_pid_event_data {
  	/* RC_PID_EVENT_TX_STATUS */
@@ -50898,8 +50897,8 @@
  void rate_control_pid_event_rate_change(struct rc_pid_event_buffer *buf,
  					       int index, int rate);
 diff -up linux-2.6.25.noarch/net/mac80211/rx.c.orig linux-2.6.25.noarch/net/mac80211/rx.c
---- linux-2.6.25.noarch/net/mac80211/rx.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/rx.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/rx.c.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/rx.c	2008-06-13 19:28:53.000000000 -0400
 @@ -77,6 +77,134 @@ static inline int should_drop_frame(stru
  	return 0;
  }
@@ -51371,8 +51370,8 @@
  	rcu_read_unlock();
  }
 diff -up linux-2.6.25.noarch/net/mac80211/sta_info.c.orig linux-2.6.25.noarch/net/mac80211/sta_info.c
---- linux-2.6.25.noarch/net/mac80211/sta_info.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/sta_info.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/sta_info.c.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/sta_info.c	2008-06-13 19:28:53.000000000 -0400
 @@ -202,14 +202,12 @@ void sta_info_destroy(struct sta_info *s
  		dev_kfree_skb_any(skb);
  
@@ -51459,8 +51458,8 @@
  
  
 diff -up linux-2.6.25.noarch/net/mac80211/sta_info.h.orig linux-2.6.25.noarch/net/mac80211/sta_info.h
---- linux-2.6.25.noarch/net/mac80211/sta_info.h.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/sta_info.h	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/sta_info.h.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/sta_info.h	2008-06-13 19:28:53.000000000 -0400
 @@ -32,7 +32,7 @@
   * @WLAN_STA_WDS: Station is one of our WDS peers.
   * @WLAN_STA_PSPOLL: Station has just PS-polled us.
@@ -51620,8 +51619,8 @@
  /* Maximum number of concurrently registered stations */
  #define MAX_STA_COUNT 2007
 diff -up linux-2.6.25.noarch/net/mac80211/tkip.c.orig linux-2.6.25.noarch/net/mac80211/tkip.c
---- linux-2.6.25.noarch/net/mac80211/tkip.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tkip.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tkip.c.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tkip.c	2008-06-13 19:28:53.000000000 -0400
 @@ -6,25 +6,23 @@
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
@@ -52002,8 +52001,8 @@
 -
 -
 diff -up linux-2.6.25.noarch/net/mac80211/tkip.h.orig linux-2.6.25.noarch/net/mac80211/tkip.h
---- linux-2.6.25.noarch/net/mac80211/tkip.h.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tkip.h	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tkip.h.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tkip.h	2008-06-13 19:28:53.000000000 -0400
 @@ -13,12 +13,8 @@
  #include <linux/crypto.h>
  #include "key.h"
@@ -52020,8 +52019,8 @@
  				 struct ieee80211_key *key,
  				 u8 *pos, size_t payload_len, u8 *ta);
 diff -up linux-2.6.25.noarch/net/mac80211/tx.c.orig linux-2.6.25.noarch/net/mac80211/tx.c
---- linux-2.6.25.noarch/net/mac80211/tx.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tx.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tx.c.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tx.c	2008-06-13 19:28:53.000000000 -0400
 @@ -91,11 +91,12 @@ static u16 ieee80211_duration(struct iee
  			      int next_frag_len)
  {
@@ -53420,8 +53419,8 @@
  
  	return skb;
 diff -up linux-2.6.25.noarch/net/mac80211/util.c.orig linux-2.6.25.noarch/net/mac80211/util.c
---- linux-2.6.25.noarch/net/mac80211/util.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/util.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/util.c.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/util.c	2008-06-13 19:28:53.000000000 -0400
 @@ -258,7 +258,7 @@ EXPORT_SYMBOL(ieee80211_generic_frame_du
  
  __le16 ieee80211_rts_duration(struct ieee80211_hw *hw,
@@ -53552,8 +53551,8 @@
  }
  EXPORT_SYMBOL(ieee80211_wake_queues);
 diff -up linux-2.6.25.noarch/net/mac80211/wep.c.orig linux-2.6.25.noarch/net/mac80211/wep.c
---- linux-2.6.25.noarch/net/mac80211/wep.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wep.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wep.c.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wep.c	2008-06-13 19:28:53.000000000 -0400
 @@ -93,13 +93,9 @@ static u8 *ieee80211_wep_add_iv(struct i
  	fc |= IEEE80211_FCTL_PROTECTED;
  	hdr->frame_control = cpu_to_le16(fc);
@@ -53599,8 +53598,8 @@
  
  	if (wep_encrypt_skb(tx, tx->skb) < 0) {
 diff -up linux-2.6.25.noarch/net/mac80211/wep.h.orig linux-2.6.25.noarch/net/mac80211/wep.h
---- linux-2.6.25.noarch/net/mac80211/wep.h.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wep.h	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wep.h.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wep.h	2008-06-13 19:28:53.000000000 -0400
 @@ -26,7 +26,7 @@ int ieee80211_wep_encrypt(struct ieee802
  			  struct ieee80211_key *key);
  int ieee80211_wep_decrypt(struct ieee80211_local *local, struct sk_buff *skb,
@@ -53611,8 +53610,8 @@
  ieee80211_rx_result
  ieee80211_crypto_wep_decrypt(struct ieee80211_rx_data *rx);
 diff -up linux-2.6.25.noarch/net/mac80211/wext.c.orig linux-2.6.25.noarch/net/mac80211/wext.c
---- linux-2.6.25.noarch/net/mac80211/wext.c.orig	2008-06-10 13:15:51.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wext.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wext.c.orig	2008-06-13 19:28:20.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wext.c	2008-06-13 19:28:53.000000000 -0400
 @@ -169,14 +169,26 @@ static int ieee80211_ioctl_giwrange(stru
  	range->num_encoding_sizes = 2;
  	range->max_encoding_tokens = NUM_DEFAULT_KEYS;
@@ -53646,7 +53645,7 @@
  	range->avg_qual.updated = local->wstats_flags;
  
  	range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_WPA2 |
-@@ -1007,8 +1019,8 @@ static struct iw_statistics *ieee80211_g
+@@ -1008,8 +1020,8 @@ static struct iw_statistics *ieee80211_g
  		wstats->qual.noise = 0;
  		wstats->qual.updated = IW_QUAL_ALL_INVALID;
  	} else {
@@ -53658,8 +53657,8 @@
  		wstats->qual.updated = local->wstats_flags;
  	}
 diff -up linux-2.6.25.noarch/net/mac80211/wme.c.orig linux-2.6.25.noarch/net/mac80211/wme.c
---- linux-2.6.25.noarch/net/mac80211/wme.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wme.c.orig	2008-06-13 19:28:20.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.c	2008-06-13 19:28:53.000000000 -0400
 @@ -19,16 +19,22 @@
  #include "wme.h"
  
@@ -54034,8 +54033,8 @@
  	if (requeue)
  		ieee80211_requeue(local, agg_queue);
 diff -up linux-2.6.25.noarch/net/mac80211/wme.h.orig linux-2.6.25.noarch/net/mac80211/wme.h
---- linux-2.6.25.noarch/net/mac80211/wme.h.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.h	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wme.h.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.h	2008-06-13 19:28:53.000000000 -0400
 @@ -31,7 +31,7 @@ static inline int WLAN_FC_IS_QOS_DATA(u1
  	return (fc & 0x8C) == 0x88;
  }
@@ -54046,8 +54045,8 @@
  int ieee80211_qdisc_installed(struct net_device *dev);
  int ieee80211_ht_agg_queue_add(struct ieee80211_local *local,
 diff -up linux-2.6.25.noarch/net/mac80211/wpa.c.orig linux-2.6.25.noarch/net/mac80211/wpa.c
---- linux-2.6.25.noarch/net/mac80211/wpa.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wpa.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wpa.c.orig	2008-06-13 17:34:23.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wpa.c	2008-06-13 19:28:53.000000000 -0400
 @@ -79,6 +79,7 @@ ieee80211_tx_h_michael_mic_add(struct ie
  	struct sk_buff *skb = tx->skb;
  	int authenticator;
@@ -54293,8 +54292,8 @@
  		}
  	}
 diff -up linux-2.6.25.noarch/net/wireless/core.c.orig linux-2.6.25.noarch/net/wireless/core.c
---- linux-2.6.25.noarch/net/wireless/core.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/core.c	2008-06-10 13:17:43.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/core.c.orig	2008-06-13 17:34:26.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/core.c	2008-06-13 19:28:53.000000000 -0400
 @@ -143,8 +143,11 @@ void cfg80211_put_dev(struct cfg80211_re
  int cfg80211_dev_rename(struct cfg80211_registered_device *rdev,
  			char *newname)
@@ -54359,7 +54358,7 @@
  /* exported functions */
 diff -up linux-2.6.25.noarch/net/wireless/radiotap.c.orig linux-2.6.25.noarch/net/wireless/radiotap.c
 --- linux-2.6.25.noarch/net/wireless/radiotap.c.orig	2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/radiotap.c	2008-06-10 13:17:43.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/radiotap.c	2008-06-13 19:28:53.000000000 -0400
 @@ -59,23 +59,21 @@ int ieee80211_radiotap_iterator_init(
  		return -EINVAL;
  

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.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- linux-2.6-wireless.patch	10 Jun 2008 19:08:27 -0000	1.40
+++ linux-2.6-wireless.patch	13 Jun 2008 23:54:09 -0000	1.41
@@ -1,717 +1,540 @@
-commit b6b16196b064bbff83e8161359f8b73465d4aa36
-Author: Marcin Slusarz <marcin.slusarz at gmail.com>
-Date:   Sun Jun 8 13:13:06 2008 +0200
-
-    iwlwifi: fix oops in iwl3945_led_brightness_set
-    
-    fix race between:
-    ieee80211_open->ieee80211_led_radio->led_trigger_event->led_set_brightness->iwl3945_led_brightness_set
-    (which assumes that "led->priv" is not NULL)
-    and
-    iwl3945_pci_probe->iwl3945_setup_deferred_work->(...)->iwl3945_bg_alive_start->iwl3945_alive_start->iwl3945_led_register->iwl3945_led_register_led
-    which sets priv field in struct iwl3945_led
-    after
-    led->led_dev.brightness_set = iwl3945_led_brightness_set;
-    (...)
-    led_classdev_register(device, &led->led_dev);
-    
-    http://kerneloops.org/guilty.php?guilty=iwl3945_led_brightness_set&version=2.6.25-release&start=1671168&end=1703935&class=oops
-    
-    Signed-off-by: Marcin Slusarz <marcin.slusarz at gmail.com>
-    Cc: Zhu Yi <yi.zhu at intel.com>
-    Cc: Reinette Chatre <reinette.chatre at intel.com>
-    Cc: Tomas Winkler <tomas.winkler at intel.com>
-    Cc: linux-wireless at vger.kernel.org
-    Cc: ipw3945-devel at lists.sourceforge.net
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 585c5434f0e02ff0ffc567ec223af61e2d8e2e88
-Author: Adrian Bunk <bunk at kernel.org>
-Date:   Thu Jun 5 21:29:49 2008 +0300
+commit cb62eccd7d946f7fb92b8beb79988726ec92c227
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Thu Jun 12 20:47:17 2008 +0200
 
-    include/linux/ssb/ssb_driver_gige.h typo fix
+    rt2x00: Add D-link DWA111 support
     
-    This patch fixes a typo in the name of a config variable.
+    Add new rt73usb USB ID for D-Link DWA111
     
-    Reported-by: Robert P. J. Day <rpjday at crashcourse.ca>
-    Signed-off-by: Adrian Bunk <bunk at kernel.org>
-    Reviewed-by: Michael Buesch <mb at bu3sch.de>
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit be038b376465953c358d675cb38a611898a49dc2
-Author: Assaf Krauss <assaf.krauss at intel.com>
-Date:   Thu Jun 5 19:55:21 2008 +0300
-
-    mac80211: Checking IBSS support while changing channel in ad-hoc mode
-    
-    This patch adds a check to the set_channel flow. When attempting to change
-    the channel while in IBSS mode, and the new channel does not support IBSS
-    mode, the flow return with an error value with no consequences on the
-    mac80211 and driver state.
+commit 995ad6c5a415c9389d094d246ca1b305c1e31813
+Author: Tomas Winkler <tomas.winkler at intel.com>
+Date:   Thu Jun 12 20:08:19 2008 +0300
+
+    mac80211: add missing new line in debug print HT_DEBUG
+    
+    This patch adds '\n' in debug printk (wme.c HT DEBUG)
     
-    Signed-off-by: Assaf Krauss <assaf.krauss at intel.com>
-    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
     Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 872ba53395b2a8be08c3ea2d39e225e5b4a8cb40
-Author: Dan Williams <dcbw at redhat.com>
-Date:   Wed Jun 4 13:59:34 2008 -0400
-
-    mac80211: decrease IBSS creation latency
-    
-    Sufficient scans (at least 2 or 3) should have been done within 7
-    seconds to find an existing IBSS to join.  This should improve IBSS
-    creation latency; and since IBSS merging is still in effect, shouldn't
-    have detrimental effects on eventual IBSS convergence.
+commit 5c5f9664d5284d8542062fed39e1f19b80db7aa5
+Author: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
+Date:   Thu Jun 12 09:47:16 2008 +0800
+
+    mac80211 : fix for iwconfig in ad-hoc mode
+    
+    The patch checks interface status, if it is in IBSS_JOINED mode
+    show cell id it is associated with.
     
-    Signed-off-by: Dan Williams <dcbw at redhat.com>
+    Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
+    Signed-off-by: Zhu Yi <yi.zhu at intel.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit d005b1d042a1d5dcd8d898f26d8d9bb03f865284
+commit e6340361f9c70e84312caed98c6e058ac6234e9b
 Author: Michael Buesch <mb at bu3sch.de>
-Date:   Thu Jun 5 16:55:10 2008 +0200
+Date:   Thu Jun 12 15:33:13 2008 +0200
 
-    zd1211rw: Fix data padding for QoS
+    ssb: Fix coherent DMA mask for PCI devices
     
-    This patch fixes a data alignment issue in the zd1211rw driver.
-    The IEEE80211_STYPE_QOS_DATA bit should be used as a bitwise test
-    to test for the presence of the 2 byte QoS control field.
+    This fixes setting the coherent DMA mask for PCI devices.
     
     Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit ad81b2f97d42e13ef78bb3798e046cd5f0492980
-Author: Assaf Krauss <assaf.krauss at intel.com>
-Date:   Wed Jun 4 20:27:59 2008 +0300
+commit 6847aa5cce6e22c3625a243b02909ac46aafa110
+Author: Randy Dunlap <randy.dunlap at oracle.com>
+Date:   Wed Jun 11 13:32:22 2008 -0700
+
+    rt2x00: LEDS build failure
+    
+    Config symbols that select LEDS_CLASS need to depend on NEW_LEDS so that
+    undefined symbols are not used in the build.
+    
+    The alternative is to select NEW_LEDS, which some drivers do.
+    
+    This patch fixes the led_* symbols build errors.
+    
+    (.text+0x174cdc): undefined reference to `input_unregister_device'
+    (.text+0x174d9f): undefined reference to `input_allocate_device'
+    (.text+0x174e2d): undefined reference to `input_register_device'
+    (.text+0x174e53): undefined reference to `input_free_device'
+    rt2x00rfkill.c:(.text+0x176dc4): undefined reference to `input_allocate_polled_device'
+    rt2x00rfkill.c:(.text+0x176e8b): undefined reference to `input_event'
+    rt2x00rfkill.c:(.text+0x176e9f): undefined reference to `input_event'
+    (.text+0x176eca): undefined reference to `input_unregister_polled_device'
+    (.text+0x176efc): undefined reference to `input_free_polled_device'
+    (.text+0x176f37): undefined reference to `input_free_polled_device'
+    (.text+0x176fd8): undefined reference to `input_register_polled_device'
+    (.text+0x1772c0): undefined reference to `led_classdev_resume'
+    (.text+0x1772d4): undefined reference to `led_classdev_resume'
+    (.text+0x1772e8): undefined reference to `led_classdev_resume'
+    (.text+0x17730a): undefined reference to `led_classdev_suspend'
+    (.text+0x17731e): undefined reference to `led_classdev_suspend'
+    (.text+0x17732f): undefined reference to `led_classdev_suspend'
+    rt2x00leds.c:(.text+0x177348): undefined reference to `led_classdev_unregister'
+    rt2x00leds.c:(.text+0x1773c0): undefined reference to `led_classdev_register'
+    rfkill-input.c:(.text+0x209e4c): undefined reference to `input_close_device'
+    rfkill-input.c:(.text+0x209e53): undefined reference to `input_unregister_handle'
+    rfkill-input.c:(.text+0x209ea1): undefined reference to `input_register_handle'
+    rfkill-input.c:(.text+0x209eae): undefined reference to `input_open_device'
+    rfkill-input.c:(.text+0x209ebb): undefined reference to `input_unregister_handle'
+    rfkill-input.c:(.init.text+0x17405): undefined reference to `input_register_handler'
+    rfkill-input.c:(.exit.text+0x194f): undefined reference to `input_unregister_handler'
+    make[1]: *** [vmlinux] Error 1
+    
+    Signed-off-by: Randy Dunlap <randy.dunlap at oracle.com>
+    Acked-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-    mac80211: Fixing slow IBSS rejoin
+commit e76328e4a8260707fbc29c99773fb5ba4627096c
+Author: Randy Dunlap <randy.dunlap at oracle.com>
+Date:   Wed Jun 11 12:57:58 2008 -0700
+
+    rt2x00: INPUT build failure
+    
+    Config symbols that select RFKILL need to depend on INPUT so that
+    undefined symbols are not used in the build.
+    
+    This patch fixes the input_* symbols build errors.
+    
+    (.text+0x174cdc): undefined reference to `input_unregister_device'
+    (.text+0x174d9f): undefined reference to `input_allocate_device'
+    (.text+0x174e2d): undefined reference to `input_register_device'
+    (.text+0x174e53): undefined reference to `input_free_device'
+    rt2x00rfkill.c:(.text+0x176dc4): undefined reference to `input_allocate_polled_device'
+    rt2x00rfkill.c:(.text+0x176e8b): undefined reference to `input_event'
+    rt2x00rfkill.c:(.text+0x176e9f): undefined reference to `input_event'
+    (.text+0x176eca): undefined reference to `input_unregister_polled_device'
+    (.text+0x176efc): undefined reference to `input_free_polled_device'
+    (.text+0x176f37): undefined reference to `input_free_polled_device'
+    (.text+0x176fd8): undefined reference to `input_register_polled_device'
+    (.text+0x1772c0): undefined reference to `led_classdev_resume'
+    (.text+0x1772d4): undefined reference to `led_classdev_resume'
+    (.text+0x1772e8): undefined reference to `led_classdev_resume'
+    (.text+0x17730a): undefined reference to `led_classdev_suspend'
+    (.text+0x17731e): undefined reference to `led_classdev_suspend'
+    (.text+0x17732f): undefined reference to `led_classdev_suspend'
+    rt2x00leds.c:(.text+0x177348): undefined reference to `led_classdev_unregister'
+    rt2x00leds.c:(.text+0x1773c0): undefined reference to `led_classdev_register'
+    rfkill-input.c:(.text+0x209e4c): undefined reference to `input_close_device'
+    rfkill-input.c:(.text+0x209e53): undefined reference to `input_unregister_handle'
+    rfkill-input.c:(.text+0x209ea1): undefined reference to `input_register_handle'
+    rfkill-input.c:(.text+0x209eae): undefined reference to `input_open_device'
+    rfkill-input.c:(.text+0x209ebb): undefined reference to `input_unregister_handle'
+    rfkill-input.c:(.init.text+0x17405): undefined reference to `input_register_handler'
+    rfkill-input.c:(.exit.text+0x194f): undefined reference to `input_unregister_handler'
+    make[1]: *** [vmlinux] Error 1
     
-    This patch fixes the issue of slow reconnection to an IBSS cell after
-    disconnection from it. Now the interface's bssid is reset upon ifdown.
+    Signed-off-by: Randy Dunlap <randy.dunlap at oracle.com>
+    Acked-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 98a3b2fe435ae76170936c14f5c9e6a87548e3ef
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Thu Jun 12 12:36:29 2008 +0200
+
+    b43: Fix noise calculation WARN_ON
     
-    ieee80211_sta_find_ibss:
-    if (found && memcmp(ifsta->bssid, bssid, ETH_ALEN) != 0 &&
-    	    (bss = ieee80211_rx_bss_get(dev, bssid,
-    					local->hw.conf.channel->center_freq,
-    					ifsta->ssid, ifsta->ssid_len)))
+    This removes a WARN_ON that is responsible for the following koops:
+    http://www.kerneloops.org/searchweek.php?search=b43_generate_noise_sample
     
-    Note:
-    In general disconnection is still not handled properly in mac80211
+    The comment in the patch describes why it's safe to simply remove
+    the check.
     
-    Signed-off-by: Assaf Krauss <assaf.krauss at intel.com>
-    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit a01f5450401f081f07a866612121e780e0730cfd
-Author: Holger Schurig <hs4233 at mail.mn-solutions.de>
-Date:   Wed Jun 4 11:10:40 2008 +0200
-
-    libertas: fix sleep confirmation
-    
-    This fixes an issus that made "iwconfig eth1 power on" non-working.
-    When we get a "PS sleep" event, we have to confirm this to the firmware.
-    The confirm happens with a command, but this command is special: the
-    firmware won't send us a response. if_cs_host_to_card() is setting
-    priv->dnld_sent anyway, so this variable stayed at DNLD_DATA_SENT and
-    was never cleared back.
-    
-    Now I put the special knowledge that the CMD_802_11_PS_MODE with
-    CMD_SUBCMD_SLEEP_CONFIRMED doesn't need to need a response by directly
-    clearing the dnld_sent state in lbs_send_confirmsleep().
+commit 028118a5f09a9c807e6b43e2231efdff9f224c74
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Thu Jun 12 11:58:56 2008 +0200
+
+    b43: Fix possible NULL pointer dereference in DMA code
+    
+    This fixes a possible NULL pointer dereference in an error path of the
+    DMA allocation error checking code. This is also necessary for a future
+    DMA API change that is on its way into the mainline kernel that adds
+    an additional dev parameter to dma_mapping_error().
+    
+    This patch moves the whole struct b43_dmaring struct initialization
+    right before any DMA allocation operation.
     
-    Signed-off-by: Holger Schurig <hs4233 at mail.mn-solutions.de>
-    Acked-by: Dan Williams <dcbw at redhat.com>
+    Reported-by: Miles Lane <miles.lane at gmail.com>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 507b06d0622480f8026d49a94f86068bb0fd6ed6
-Author: Dan Williams <dcbw at redhat.com>
-Date:   Tue Jun 3 23:39:55 2008 -0400
-
-    mac80211: send association event on IBSS create
-    
-    Otherwise userspace has no idea the IBSS creation succeeded.
+commit 051c256f672efa356a4cda1841132dbc86541090
+Author: Gertjan van Wingerde <gwingerde at kpnplanet.nl>
+Date:   Tue Jun 3 20:29:47 2008 +0200
+
+    rt2x00: Restrict DMA to 32-bit addresses.
+    
+    None of the rt2x00 PCI devices support 64-bit DMA addresses (they all
+    only accept 32-bit buffer addresses). Hence it makes no sense to try to
+    enable 64-bit DMA addresses. Only try to enable 32-bit DMA addresses.
     
-    Signed-off-by: Dan Williams <dcbw at redhat.com>
+    Signed-off-by: Gertjan van Wingerde <gwingerde at kpnplanet.nl>
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit ea177305b321a4127e448b88de20d5792682ace1
-Author: Dan Williams <dcbw at redhat.com>
-Date:   Mon Jun 2 17:51:23 2008 -0400
-
-    ipw2200: queue direct scans
-    
-    When another scan is in progress, a direct scan gets dropped on the
-    floor.  However, that direct scan is usually the scan that's really
-    needed by userspace, and gets stomped on by all the broadcast scans the
-    ipw2200 driver issues internally.  Make sure the direct scan happens
-    eventually, and as a bonus ensure that the passive scan worker is
-    cleaned up when appropriate.
-    
-    The change of request_passive_scan form a struct work to struct
-    delayed_work is only to make the set_wx_scan() code a bit simpler, it's
-    still only used with a delay of 0 to match previous behavior.
+commit edfa78b2ba651782d70be6d1fef214e21a26d8cb
+Author: Ivo van Doorn <IvDoorn at gmail.com>
+Date:   Tue Jun 3 20:29:50 2008 +0200
+
+    rt2x00: Don't kill guardian_urb when it wasn't created
+    
+    This fixes a "BUG: unable to handle kernel paging request"
+    bug in rt73usb which was caused by killing the guardian_urb
+    while it had never been allocated for rt73usb.
     
-    Signed-off-by: Dan Williams <dcbw at redhat.com>
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-diff -up linux-2.6.25.noarch/drivers/net/wireless/ipw2200.c.orig linux-2.6.25.noarch/drivers/net/wireless/ipw2200.c
---- linux-2.6.25.noarch/drivers/net/wireless/ipw2200.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ipw2200.c	2008-06-10 13:15:51.000000000 -0400
-@@ -1753,6 +1753,8 @@ static int ipw_radio_kill_sw(struct ipw_
- 
- 		if (priv->workqueue) {
- 			cancel_delayed_work(&priv->request_scan);
-+			cancel_delayed_work(&priv->request_direct_scan);
-+			cancel_delayed_work(&priv->request_passive_scan);
- 			cancel_delayed_work(&priv->scan_event);
- 		}
- 		queue_work(priv->workqueue, &priv->down);
-@@ -2005,6 +2007,8 @@ static void ipw_irq_tasklet(struct ipw_p
- 		wake_up_interruptible(&priv->wait_command_queue);
- 		priv->status &= ~(STATUS_ASSOCIATED | STATUS_ASSOCIATING);
- 		cancel_delayed_work(&priv->request_scan);
-+		cancel_delayed_work(&priv->request_direct_scan);
-+		cancel_delayed_work(&priv->request_passive_scan);
- 		cancel_delayed_work(&priv->scan_event);
- 		schedule_work(&priv->link_down);
- 		queue_delayed_work(priv->workqueue, &priv->rf_kill, 2 * HZ);
-@@ -4712,6 +4716,12 @@ static void ipw_rx_notification(struct i
- 			priv->status &= ~STATUS_SCAN_FORCED;
- #endif				/* CONFIG_IPW2200_MONITOR */
- 
-+			/* Do queued direct scans first */
-+			if (priv->status & STATUS_DIRECT_SCAN_PENDING) {
-+				queue_delayed_work(priv->workqueue,
-+						   &priv->request_direct_scan, 0);
-+			}
-+
- 			if (!(priv->status & (STATUS_ASSOCIATED |
- 					      STATUS_ASSOCIATING |
- 					      STATUS_ROAMING |
-@@ -6267,7 +6277,7 @@ static void ipw_add_scan_channels(struct
- 	}
- }
- 
--static int ipw_request_scan_helper(struct ipw_priv *priv, int type)
-+static int ipw_request_scan_helper(struct ipw_priv *priv, int type, int direct)
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig	2008-06-13 17:37:04.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h	2008-06-13 17:37:35.000000000 -0400
+@@ -630,7 +630,6 @@ struct b43_pio {
+ 
+ /* Context information for a noise calculation (Link Quality). */
+ struct b43_noise_calculation {
+-	u8 channel_at_start;
+ 	bool calculation_running;
+ 	u8 nr_samples;
+ 	s8 samples[8][4];
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c.orig	2008-06-13 17:37:04.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c	2008-06-13 17:37:35.000000000 -0400
+@@ -795,24 +795,49 @@ struct b43_dmaring *b43_setup_dmaring(st
  {
- 	struct ipw_scan_request_ext scan;
- 	int err = 0, scan_type;
-@@ -6278,22 +6288,31 @@ static int ipw_request_scan_helper(struc
- 
- 	mutex_lock(&priv->mutex);
- 
-+	if (direct && (priv->direct_scan_ssid_len == 0)) {
-+		IPW_DEBUG_HC("Direct scan requested but no SSID to scan for\n");
-+		priv->status &= ~STATUS_DIRECT_SCAN_PENDING;
-+		goto done;
-+	}
+ 	struct b43_dmaring *ring;
+ 	int err;
+-	int nr_slots;
+ 	dma_addr_t dma_test;
+ 
+ 	ring = kzalloc(sizeof(*ring), GFP_KERNEL);
+ 	if (!ring)
+ 		goto out;
+-	ring->type = type;
+ 
+-	nr_slots = B43_RXRING_SLOTS;
++	ring->nr_slots = B43_RXRING_SLOTS;
+ 	if (for_tx)
+-		nr_slots = B43_TXRING_SLOTS;
++		ring->nr_slots = B43_TXRING_SLOTS;
+ 
+-	ring->meta = kcalloc(nr_slots, sizeof(struct b43_dmadesc_meta),
++	ring->meta = kcalloc(ring->nr_slots, sizeof(struct b43_dmadesc_meta),
+ 			     GFP_KERNEL);
+ 	if (!ring->meta)
+ 		goto err_kfree_ring;
 +
- 	if (priv->status & STATUS_SCANNING) {
--		IPW_DEBUG_HC("Concurrent scan requested.  Ignoring.\n");
--		priv->status |= STATUS_SCAN_PENDING;
-+		IPW_DEBUG_HC("Concurrent scan requested.  Queuing.\n");
-+		priv->status |= direct ? STATUS_DIRECT_SCAN_PENDING :
-+					STATUS_SCAN_PENDING;
- 		goto done;
- 	}
- 
- 	if (!(priv->status & STATUS_SCAN_FORCED) &&
- 	    priv->status & STATUS_SCAN_ABORTING) {
- 		IPW_DEBUG_HC("Scan request while abort pending.  Queuing.\n");
--		priv->status |= STATUS_SCAN_PENDING;
-+		priv->status |= direct ? STATUS_DIRECT_SCAN_PENDING :
-+					STATUS_SCAN_PENDING;
- 		goto done;
- 	}
- 
- 	if (priv->status & STATUS_RF_KILL_MASK) {
--		IPW_DEBUG_HC("Aborting scan due to RF Kill activation\n");
--		priv->status |= STATUS_SCAN_PENDING;
-+		IPW_DEBUG_HC("Queuing scan due to RF Kill activation\n");
-+		priv->status |= direct ? STATUS_DIRECT_SCAN_PENDING :
-+					STATUS_SCAN_PENDING;
- 		goto done;
- 	}
- 
-@@ -6321,6 +6340,7 @@ static int ipw_request_scan_helper(struc
- 		cpu_to_le16(20);
- 
-   	scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] = cpu_to_le16(120);
-+	scan.dwell_time[IPW_SCAN_ACTIVE_DIRECT_SCAN] = cpu_to_le16(20);
- 
- #ifdef CONFIG_IPW2200_MONITOR
- 	if (priv->ieee->iw_mode == IW_MODE_MONITOR) {
-@@ -6360,13 +6380,23 @@ static int ipw_request_scan_helper(struc
- 			cpu_to_le16(2000);
- 	} else {
- #endif				/* CONFIG_IPW2200_MONITOR */
--		/* If we are roaming, then make this a directed scan for the
--		 * current network.  Otherwise, ensure that every other scan
--		 * is a fast channel hop scan */
--		if ((priv->status & STATUS_ROAMING)
--		    || (!(priv->status & STATUS_ASSOCIATED)
--			&& (priv->config & CFG_STATIC_ESSID)
--			&& (le32_to_cpu(scan.full_scan_index) % 2))) {
-+		/* Honor direct scans first, otherwise if we are roaming make
-+		 * this a direct scan for the current network.  Finally,
-+		 * ensure that every other scan is a fast channel hop scan */
-+		if (direct) {
-+			err = ipw_send_ssid(priv, priv->direct_scan_ssid,
-+			                    priv->direct_scan_ssid_len);
-+			if (err) {
-+				IPW_DEBUG_HC("Attempt to send SSID command  "
-+					     "failed\n");
-+				goto done;
-+			}
++	ring->type = type;
++	ring->dev = dev;
++	ring->mmio_base = b43_dmacontroller_base(type, controller_index);
++	ring->index = controller_index;
++	if (type == B43_DMA_64BIT)
++		ring->ops = &dma64_ops;
++	else
++		ring->ops = &dma32_ops;
+ 	if (for_tx) {
+-		ring->txhdr_cache = kcalloc(nr_slots,
++		ring->tx = 1;
++		ring->current_slot = -1;
++	} else {
++		if (ring->index == 0) {
++			ring->rx_buffersize = B43_DMA0_RX_BUFFERSIZE;
++			ring->frameoffset = B43_DMA0_RX_FRAMEOFFSET;
++		} else if (ring->index == 3) {
++			ring->rx_buffersize = B43_DMA3_RX_BUFFERSIZE;
++			ring->frameoffset = B43_DMA3_RX_FRAMEOFFSET;
++		} else
++			B43_WARN_ON(1);
++	}
++	spin_lock_init(&ring->lock);
++#ifdef CONFIG_B43_DEBUG
++	ring->last_injected_overflow = jiffies;
++#endif
 +
-+			scan_type = IPW_SCAN_ACTIVE_BROADCAST_AND_DIRECT_SCAN;
-+		} else if ((priv->status & STATUS_ROAMING)
-+			   || (!(priv->status & STATUS_ASSOCIATED)
-+			       && (priv->config & CFG_STATIC_ESSID)
-+			       && (le32_to_cpu(scan.full_scan_index) % 2))) {
- 			err = ipw_send_ssid(priv, priv->essid, priv->essid_len);
- 			if (err) {
- 				IPW_DEBUG_HC("Attempt to send SSID command "
-@@ -6391,7 +6421,12 @@ send_request:
++	if (for_tx) {
++		ring->txhdr_cache = kcalloc(ring->nr_slots,
+ 					    b43_txhdr_size(dev),
+ 					    GFP_KERNEL);
+ 		if (!ring->txhdr_cache)
+@@ -828,7 +853,7 @@ struct b43_dmaring *b43_setup_dmaring(st
+ 					  b43_txhdr_size(dev), 1)) {
+ 			/* ugh realloc */
+ 			kfree(ring->txhdr_cache);
+-			ring->txhdr_cache = kcalloc(nr_slots,
++			ring->txhdr_cache = kcalloc(ring->nr_slots,
+ 						    b43_txhdr_size(dev),
+ 						    GFP_KERNEL | GFP_DMA);
+ 			if (!ring->txhdr_cache)
+@@ -853,32 +878,6 @@ struct b43_dmaring *b43_setup_dmaring(st
+ 				 DMA_TO_DEVICE);
  	}
  
- 	priv->status |= STATUS_SCANNING;
--	priv->status &= ~STATUS_SCAN_PENDING;
-+	if (direct) {
-+		priv->status &= ~STATUS_DIRECT_SCAN_PENDING;
-+		priv->direct_scan_ssid_len = 0;
-+	} else
-+		priv->status &= ~STATUS_SCAN_PENDING;
-+
- 	queue_delayed_work(priv->workqueue, &priv->scan_check,
- 			   IPW_SCAN_CHECK_WATCHDOG);
- done:
-@@ -6402,15 +6437,22 @@ done:
- static void ipw_request_passive_scan(struct work_struct *work)
- {
- 	struct ipw_priv *priv =
--		container_of(work, struct ipw_priv, request_passive_scan);
--  	ipw_request_scan_helper(priv, IW_SCAN_TYPE_PASSIVE);
-+		container_of(work, struct ipw_priv, request_passive_scan.work);
-+	ipw_request_scan_helper(priv, IW_SCAN_TYPE_PASSIVE, 0);
- }
- 
- static void ipw_request_scan(struct work_struct *work)
- {
- 	struct ipw_priv *priv =
- 		container_of(work, struct ipw_priv, request_scan.work);
--	ipw_request_scan_helper(priv, IW_SCAN_TYPE_ACTIVE);
-+	ipw_request_scan_helper(priv, IW_SCAN_TYPE_ACTIVE, 0);
-+}
-+
-+static void ipw_request_direct_scan(struct work_struct *work)
-+{
-+	struct ipw_priv *priv =
-+		container_of(work, struct ipw_priv, request_direct_scan.work);
-+	ipw_request_scan_helper(priv, IW_SCAN_TYPE_ACTIVE, 1);
- }
- 
- static void ipw_bg_abort_scan(struct work_struct *work)
-@@ -9477,99 +9519,38 @@ static int ipw_wx_get_retry(struct net_d
- 	return 0;
- }
- 
--static int ipw_request_direct_scan(struct ipw_priv *priv, char *essid,
--				   int essid_len)
--{
--	struct ipw_scan_request_ext scan;
--	int err = 0, scan_type;
--
--	if (!(priv->status & STATUS_INIT) ||
--	    (priv->status & STATUS_EXIT_PENDING))
--		return 0;
--
--	mutex_lock(&priv->mutex);
--
--	if (priv->status & STATUS_RF_KILL_MASK) {
--		IPW_DEBUG_HC("Aborting scan due to RF kill activation\n");
--		priv->status |= STATUS_SCAN_PENDING;
--		goto done;
--	}
--
--	IPW_DEBUG_HC("starting request direct scan!\n");
--
--	if (priv->status & (STATUS_SCANNING | STATUS_SCAN_ABORTING)) {
--		/* We should not sleep here; otherwise we will block most
--		 * of the system (for instance, we hold rtnl_lock when we
--		 * get here).
--		 */
--		err = -EAGAIN;
--		goto done;
--	}
--	memset(&scan, 0, sizeof(scan));
--
--	if (priv->config & CFG_SPEED_SCAN)
--		scan.dwell_time[IPW_SCAN_ACTIVE_BROADCAST_SCAN] =
--		    cpu_to_le16(30);
+-	ring->dev = dev;
+-	ring->nr_slots = nr_slots;
+-	ring->mmio_base = b43_dmacontroller_base(type, controller_index);
+-	ring->index = controller_index;
+-	if (type == B43_DMA_64BIT)
+-		ring->ops = &dma64_ops;
 -	else
--		scan.dwell_time[IPW_SCAN_ACTIVE_BROADCAST_SCAN] =
--		    cpu_to_le16(20);
--
--	scan.dwell_time[IPW_SCAN_ACTIVE_BROADCAST_AND_DIRECT_SCAN] =
--	    cpu_to_le16(20);
--	scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] = cpu_to_le16(120);
--	scan.dwell_time[IPW_SCAN_ACTIVE_DIRECT_SCAN] = cpu_to_le16(20);
--
--	scan.full_scan_index = cpu_to_le32(ieee80211_get_scans(priv->ieee));
--
--	err = ipw_send_ssid(priv, essid, essid_len);
--	if (err) {
--		IPW_DEBUG_HC("Attempt to send SSID command failed\n");
--		goto done;
+-		ring->ops = &dma32_ops;
+-	if (for_tx) {
+-		ring->tx = 1;
+-		ring->current_slot = -1;
+-	} else {
+-		if (ring->index == 0) {
+-			ring->rx_buffersize = B43_DMA0_RX_BUFFERSIZE;
+-			ring->frameoffset = B43_DMA0_RX_FRAMEOFFSET;
+-		} else if (ring->index == 3) {
+-			ring->rx_buffersize = B43_DMA3_RX_BUFFERSIZE;
+-			ring->frameoffset = B43_DMA3_RX_FRAMEOFFSET;
+-		} else
+-			B43_WARN_ON(1);
 -	}
--	scan_type = IPW_SCAN_ACTIVE_BROADCAST_AND_DIRECT_SCAN;
--
--	ipw_add_scan_channels(priv, &scan, scan_type);
--
--	err = ipw_send_scan_request_ext(priv, &scan);
--	if (err) {
--		IPW_DEBUG_HC("Sending scan command failed: %08X\n", err);
--		goto done;
--	}
--
--	priv->status |= STATUS_SCANNING;
--
--      done:
--	mutex_unlock(&priv->mutex);
--	return err;
--}
--
- static int ipw_wx_set_scan(struct net_device *dev,
- 			   struct iw_request_info *info,
- 			   union iwreq_data *wrqu, char *extra)
- {
- 	struct ipw_priv *priv = ieee80211_priv(dev);
- 	struct iw_scan_req *req = (struct iw_scan_req *)extra;
-+	struct delayed_work *work = NULL;
- 
- 	mutex_lock(&priv->mutex);
-+
- 	priv->user_requested_scan = 1;
--	mutex_unlock(&priv->mutex);
- 
- 	if (wrqu->data.length == sizeof(struct iw_scan_req)) {
- 		if (wrqu->data.flags & IW_SCAN_THIS_ESSID) {
--			ipw_request_direct_scan(priv, req->essid,
--						req->essid_len);
--			return 0;
--		}
--		if (req->scan_type == IW_SCAN_TYPE_PASSIVE) {
--			queue_work(priv->workqueue,
--				   &priv->request_passive_scan);
--			return 0;
-+			int len = min((int)req->essid_len,
-+			              (int)sizeof(priv->direct_scan_ssid));
-+			memcpy(priv->direct_scan_ssid, req->essid, len);
-+			priv->direct_scan_ssid_len = len;
-+			work = &priv->request_direct_scan;
-+		} else if (req->scan_type == IW_SCAN_TYPE_PASSIVE) {
-+			work = &priv->request_passive_scan;
- 		}
-+	} else {
-+		/* Normal active broadcast scan */
-+		work = &priv->request_scan;
- 	}
- 
-+	mutex_unlock(&priv->mutex);
-+
- 	IPW_DEBUG_WX("Start scan\n");
- 
--	queue_delayed_work(priv->workqueue, &priv->request_scan, 0);
-+	queue_delayed_work(priv->workqueue, work, 0);
- 
- 	return 0;
+-	spin_lock_init(&ring->lock);
+-#ifdef CONFIG_B43_DEBUG
+-	ring->last_injected_overflow = jiffies;
+-#endif
+-
+ 	err = alloc_ringmemory(ring);
+ 	if (err)
+ 		goto err_kfree_txhdr_cache;
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/main.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig	2008-06-13 17:37:04.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c	2008-06-13 17:37:35.000000000 -0400
+@@ -1145,7 +1145,6 @@ static void b43_generate_noise_sample(st
+ 	b43_jssi_write(dev, 0x7F7F7F7F);
+ 	b43_write32(dev, B43_MMIO_MACCMD,
+ 		    b43_read32(dev, B43_MMIO_MACCMD) | B43_MACCMD_BGNOISE);
+-	B43_WARN_ON(dev->noisecalc.channel_at_start != dev->phy.channel);
  }
-@@ -10731,6 +10712,8 @@ static void ipw_link_up(struct ipw_priv 
- 	}
  
- 	cancel_delayed_work(&priv->request_scan);
-+	cancel_delayed_work(&priv->request_direct_scan);
-+	cancel_delayed_work(&priv->request_passive_scan);
- 	cancel_delayed_work(&priv->scan_event);
- 	ipw_reset_stats(priv);
- 	/* Ensure the rate is updated immediately */
-@@ -10761,6 +10744,8 @@ static void ipw_link_down(struct ipw_pri
- 
- 	/* Cancel any queued work ... */
- 	cancel_delayed_work(&priv->request_scan);
-+	cancel_delayed_work(&priv->request_direct_scan);
-+	cancel_delayed_work(&priv->request_passive_scan);
- 	cancel_delayed_work(&priv->adhoc_check);
- 	cancel_delayed_work(&priv->gather_stats);
- 
-@@ -10800,8 +10785,9 @@ static int __devinit ipw_setup_deferred_
- 	INIT_WORK(&priv->up, ipw_bg_up);
- 	INIT_WORK(&priv->down, ipw_bg_down);
- 	INIT_DELAYED_WORK(&priv->request_scan, ipw_request_scan);
-+	INIT_DELAYED_WORK(&priv->request_direct_scan, ipw_request_direct_scan);
-+	INIT_DELAYED_WORK(&priv->request_passive_scan, ipw_request_passive_scan);
- 	INIT_DELAYED_WORK(&priv->scan_event, ipw_scan_event);
--	INIT_WORK(&priv->request_passive_scan, ipw_request_passive_scan);
- 	INIT_DELAYED_WORK(&priv->gather_stats, ipw_bg_gather_stats);
- 	INIT_WORK(&priv->abort_scan, ipw_bg_abort_scan);
- 	INIT_WORK(&priv->roam, ipw_bg_roam);
-@@ -11835,6 +11821,8 @@ static void __devexit ipw_pci_remove(str
- 	cancel_delayed_work(&priv->adhoc_check);
- 	cancel_delayed_work(&priv->gather_stats);
- 	cancel_delayed_work(&priv->request_scan);
-+	cancel_delayed_work(&priv->request_direct_scan);
-+	cancel_delayed_work(&priv->request_passive_scan);
- 	cancel_delayed_work(&priv->scan_event);
- 	cancel_delayed_work(&priv->rf_kill);
- 	cancel_delayed_work(&priv->scan_check);
-diff -up linux-2.6.25.noarch/drivers/net/wireless/ipw2200.h.orig linux-2.6.25.noarch/drivers/net/wireless/ipw2200.h
---- linux-2.6.25.noarch/drivers/net/wireless/ipw2200.h.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ipw2200.h	2008-06-10 13:15:51.000000000 -0400
-@@ -1037,6 +1037,7 @@ struct ipw_cmd {	 /* XXX */
- #define STATUS_DISASSOC_PENDING (1<<12)
- #define STATUS_STATE_PENDING    (1<<13)
- 
-+#define STATUS_DIRECT_SCAN_PENDING (1<<19)
- #define STATUS_SCAN_PENDING     (1<<20)
- #define STATUS_SCANNING         (1<<21)
- #define STATUS_SCAN_ABORTING    (1<<22)
-@@ -1292,6 +1293,8 @@ struct ipw_priv {
- 	struct iw_public_data wireless_data;
- 
- 	int user_requested_scan;
-+	u8 direct_scan_ssid[IW_ESSID_MAX_SIZE];
-+	u8 direct_scan_ssid_len;
- 
- 	struct workqueue_struct *workqueue;
- 
-@@ -1301,8 +1304,9 @@ struct ipw_priv {
- 	struct work_struct system_config;
- 	struct work_struct rx_replenish;
- 	struct delayed_work request_scan;
-+	struct delayed_work request_direct_scan;
-+	struct delayed_work request_passive_scan;
- 	struct delayed_work scan_event;
--  	struct work_struct request_passive_scan;
- 	struct work_struct adapter_restart;
- 	struct delayed_work rf_kill;
- 	struct work_struct up;
-diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945-led.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945-led.c
---- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945-led.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945-led.c	2008-06-10 13:15:51.000000000 -0400
-@@ -229,14 +229,15 @@ static int iwl3945_led_register_led(stru
- 	led->led_dev.brightness_set = iwl3945_led_brightness_set;
- 	led->led_dev.default_trigger = trigger;
+ static void b43_calculate_link_quality(struct b43_wldev *dev)
+@@ -1154,7 +1153,6 @@ static void b43_calculate_link_quality(s
  
-+	led->priv = priv;
-+	led->type = type;
+ 	if (dev->noisecalc.calculation_running)
+ 		return;
+-	dev->noisecalc.channel_at_start = dev->phy.channel;
+ 	dev->noisecalc.calculation_running = 1;
+ 	dev->noisecalc.nr_samples = 0;
+ 
+@@ -1171,9 +1169,16 @@ static void handle_irq_noise(struct b43_
+ 
+ 	/* Bottom half of Link Quality calculation. */
+ 
++	/* Possible race condition: It might be possible that the user
++	 * changed to a different channel in the meantime since we
++	 * started the calculation. We ignore that fact, since it's
++	 * not really that much of a problem. The background noise is
++	 * an estimation only anyway. Slightly wrong results will get damped
++	 * by the averaging of the 8 sample rounds. Additionally the
++	 * value is shortlived. So it will be replaced by the next noise
++	 * calculation round soon. */
 +
- 	ret = led_classdev_register(device, &led->led_dev);
- 	if (ret) {
- 		IWL_ERROR("Error: failed to register led handler.\n");
- 		return ret;
+ 	B43_WARN_ON(!dev->noisecalc.calculation_running);
+-	if (dev->noisecalc.channel_at_start != phy->channel)
+-		goto drop_calculation;
+ 	*((__le32 *)noise) = cpu_to_le32(b43_jssi_read(dev));
+ 	if (noise[0] == 0x7F || noise[1] == 0x7F ||
+ 	    noise[2] == 0x7F || noise[3] == 0x7F)
+@@ -1214,11 +1219,10 @@ static void handle_irq_noise(struct b43_
+ 			average -= 48;
+ 
+ 		dev->stats.link_noise = average;
+-	      drop_calculation:
+ 		dev->noisecalc.calculation_running = 0;
+ 		return;
  	}
+-      generate_new:
++generate_new:
+ 	b43_generate_noise_sample(dev);
+ }
  
--	led->priv = priv;
--	led->type = type;
- 	led->registered = 1;
- 
- 	if (set_led && led->led_on)
-diff -up linux-2.6.25.noarch/drivers/net/wireless/libertas/cmd.c.orig linux-2.6.25.noarch/drivers/net/wireless/libertas/cmd.c
---- linux-2.6.25.noarch/drivers/net/wireless/libertas/cmd.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/libertas/cmd.c	2008-06-10 13:15:51.000000000 -0400
-@@ -1842,6 +1842,9 @@ static void lbs_send_confirmsleep(struct
- 
- 	spin_lock_irqsave(&priv->driver_lock, flags);
- 
-+	/* We don't get a response on the sleep-confirmation */
-+	priv->dnld_sent = DNLD_RES_RECEIVED;
-+
- 	/* If nothing to do, go back to sleep (?) */
- 	if (!__kfifo_len(priv->event_fifo) && !priv->resp_len[priv->resp_idx])
- 		priv->psstate = PS_STATE_SLEEP;
-@@ -1904,12 +1907,12 @@ void lbs_ps_confirm_sleep(struct lbs_pri
- 
- 	lbs_deb_enter(LBS_DEB_HOST);
- 
-+	spin_lock_irqsave(&priv->driver_lock, flags);
- 	if (priv->dnld_sent) {
- 		allowed = 0;
- 		lbs_deb_host("dnld_sent was set\n");
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig.orig	2008-06-13 17:37:05.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig	2008-06-13 17:37:35.000000000 -0400
+@@ -32,12 +32,13 @@ config RT2X00_LIB_FIRMWARE
+ config RT2X00_LIB_RFKILL
+ 	boolean
+ 	depends on RT2X00_LIB
++	depends on INPUT
+ 	select RFKILL
+ 	select INPUT_POLLDEV
+ 
+ config RT2X00_LIB_LEDS
+ 	boolean
+-	depends on RT2X00_LIB
++	depends on RT2X00_LIB && NEW_LEDS
+ 
+ config RT2400PCI
+ 	tristate "Ralink rt2400 pci/pcmcia support"
+@@ -51,7 +52,7 @@ config RT2400PCI
+ 
+ config RT2400PCI_RFKILL
+ 	bool "RT2400 rfkill support"
+-	depends on RT2400PCI
++	depends on RT2400PCI && INPUT
+ 	select RT2X00_LIB_RFKILL
+ 	---help---
+ 	  This adds support for integrated rt2400 devices that feature a
+@@ -60,7 +61,7 @@ config RT2400PCI_RFKILL
+ 
+ config RT2400PCI_LEDS
+ 	bool "RT2400 leds support"
+-	depends on RT2400PCI
++	depends on RT2400PCI && NEW_LEDS
+ 	select LEDS_CLASS
+ 	select RT2X00_LIB_LEDS
+ 	---help---
+@@ -78,7 +79,7 @@ config RT2500PCI
+ 
+ config RT2500PCI_RFKILL
+ 	bool "RT2500 rfkill support"
+-	depends on RT2500PCI
++	depends on RT2500PCI && INPUT
+ 	select RT2X00_LIB_RFKILL
+ 	---help---
+ 	  This adds support for integrated rt2500 devices that feature a
+@@ -87,7 +88,7 @@ config RT2500PCI_RFKILL
+ 
+ config RT2500PCI_LEDS
+ 	bool "RT2500 leds support"
+-	depends on RT2500PCI
++	depends on RT2500PCI && NEW_LEDS
+ 	select LEDS_CLASS
+ 	select RT2X00_LIB_LEDS
+ 	---help---
+@@ -107,7 +108,7 @@ config RT61PCI
+ 
+ config RT61PCI_RFKILL
+ 	bool "RT61 rfkill support"
+-	depends on RT61PCI
++	depends on RT61PCI && INPUT
+ 	select RT2X00_LIB_RFKILL
+ 	---help---
+ 	  This adds support for integrated rt61 devices that feature a
+@@ -116,7 +117,7 @@ config RT61PCI_RFKILL
+ 
+ config RT61PCI_LEDS
+ 	bool "RT61 leds support"
+-	depends on RT61PCI
++	depends on RT61PCI && NEW_LEDS
+ 	select LEDS_CLASS
+ 	select RT2X00_LIB_LEDS
+ 	---help---
+@@ -133,7 +134,7 @@ config RT2500USB
+ 
+ config RT2500USB_LEDS
+ 	bool "RT2500 leds support"
+-	depends on RT2500USB
++	depends on RT2500USB && NEW_LEDS
+ 	select LEDS_CLASS
+ 	select RT2X00_LIB_LEDS
+ 	---help---
+@@ -152,7 +153,7 @@ config RT73USB
+ 
+ config RT73USB_LEDS
+ 	bool "RT73 leds support"
+-	depends on RT73USB
++	depends on RT73USB && NEW_LEDS
+ 	select LEDS_CLASS
+ 	select RT2X00_LIB_LEDS
+ 	---help---
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig	2008-06-13 17:37:05.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c	2008-06-13 17:37:35.000000000 -0400
+@@ -412,8 +412,7 @@ int rt2x00pci_probe(struct pci_dev *pci_
+ 	if (pci_set_mwi(pci_dev))
+ 		ERROR_PROBE("MWI not available.\n");
+ 
+-	if (pci_set_dma_mask(pci_dev, DMA_64BIT_MASK) &&
+-	    pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) {
++	if (pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) {
+ 		ERROR_PROBE("PCI DMA not supported.\n");
+ 		retval = -EIO;
+ 		goto exit_disable_device;
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c.orig	2008-06-13 17:37:05.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c	2008-06-13 17:37:35.000000000 -0400
+@@ -362,6 +362,12 @@ void rt2x00usb_disable_radio(struct rt2x
+ 		}
  	}
  
--	spin_lock_irqsave(&priv->driver_lock, flags);
- 	/* In-progress command? */
- 	if (priv->cur_cmd) {
- 		allowed = 0;
-diff -up linux-2.6.25.noarch/drivers/net/wireless/libertas/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/libertas/main.c
---- linux-2.6.25.noarch/drivers/net/wireless/libertas/main.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/libertas/main.c	2008-06-10 13:15:51.000000000 -0400
-@@ -732,8 +732,8 @@ static int lbs_thread(void *data)
- 		lbs_deb_thread("4: currenttxskb %p, dnld_sent %d\n",
- 		       priv->currenttxskb, priv->dnld_sent);
- 
--		spin_lock_irq(&priv->driver_lock);
- 		/* Process any pending command response */
-+		spin_lock_irq(&priv->driver_lock);
- 		resp_idx = priv->resp_idx;
- 		if (priv->resp_len[resp_idx]) {
- 			spin_unlock_irq(&priv->driver_lock);
-diff -up linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_mac.c.orig linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_mac.c
---- linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_mac.c.orig	2008-06-10 13:13:48.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/zd1211rw/zd_mac.c	2008-06-10 13:15:51.000000000 -0400
-@@ -719,7 +719,7 @@ int zd_mac_rx(struct ieee80211_hw *hw, c
- 	fc = le16_to_cpu(*((__le16 *) buffer));
- 
- 	is_qos = ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) &&
--		 ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_QOS_DATA);
-+		 (fc & IEEE80211_STYPE_QOS_DATA);
- 	is_4addr = (fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) ==
- 		   (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS);
- 	need_padding = is_qos ^ is_4addr;
-diff -up linux-2.6.25.noarch/include/linux/ssb/ssb_driver_gige.h.orig linux-2.6.25.noarch/include/linux/ssb/ssb_driver_gige.h
---- linux-2.6.25.noarch/include/linux/ssb/ssb_driver_gige.h.orig	2008-06-10 13:13:54.000000000 -0400
-+++ linux-2.6.25.noarch/include/linux/ssb/ssb_driver_gige.h	2008-06-10 13:15:51.000000000 -0400
-@@ -100,7 +100,7 @@ extern char * nvram_get(const char *name
- /* Get the device MAC address */
- static inline void ssb_gige_get_macaddr(struct pci_dev *pdev, u8 *macaddr)
- {
--#ifdef CONFIG_BCM947XX
-+#ifdef CONFIG_BCM47XX
- 	char *res = nvram_get("et0macaddr");
- 	if (res)
- 		memcpy(macaddr, res, 6);
-diff -up linux-2.6.25.noarch/net/mac80211/ieee80211_i.h.orig linux-2.6.25.noarch/net/mac80211/ieee80211_i.h
---- linux-2.6.25.noarch/net/mac80211/ieee80211_i.h.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/ieee80211_i.h	2008-06-10 13:15:51.000000000 -0400
-@@ -899,7 +899,7 @@ extern const struct iw_handler_def ieee8
- 
- 
- /* ieee80211_ioctl.c */
--int ieee80211_set_freq(struct ieee80211_local *local, int freq);
-+int ieee80211_set_freq(struct net_device *dev, int freq);
- /* ieee80211_sta.c */
- void ieee80211_sta_timer(unsigned long data);
- void ieee80211_sta_work(struct work_struct *work);
-diff -up linux-2.6.25.noarch/net/mac80211/main.c.orig linux-2.6.25.noarch/net/mac80211/main.c
---- linux-2.6.25.noarch/net/mac80211/main.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/main.c	2008-06-10 13:15:51.000000000 -0400
-@@ -511,6 +511,7 @@ static int ieee80211_stop(struct net_dev
- 	case IEEE80211_IF_TYPE_STA:
- 	case IEEE80211_IF_TYPE_IBSS:
- 		sdata->u.sta.state = IEEE80211_DISABLED;
-+		memset(sdata->u.sta.bssid, 0, ETH_ALEN);
- 		del_timer_sync(&sdata->u.sta.timer);
- 		/*
- 		 * When we get here, the interface is marked down.
-diff -up linux-2.6.25.noarch/net/mac80211/mlme.c.orig linux-2.6.25.noarch/net/mac80211/mlme.c
---- linux-2.6.25.noarch/net/mac80211/mlme.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/mlme.c	2008-06-10 13:15:51.000000000 -0400
-@@ -44,7 +44,7 @@
- #define IEEE80211_RETRY_AUTH_INTERVAL (1 * HZ)
- #define IEEE80211_SCAN_INTERVAL (2 * HZ)
- #define IEEE80211_SCAN_INTERVAL_SLOW (15 * HZ)
--#define IEEE80211_IBSS_JOIN_TIMEOUT (20 * HZ)
-+#define IEEE80211_IBSS_JOIN_TIMEOUT (7 * HZ)
- 
- #define IEEE80211_PROBE_DELAY (HZ / 33)
- #define IEEE80211_CHANNEL_TIME (HZ / 33)
-@@ -2336,6 +2336,7 @@ static int ieee80211_sta_join_ibss(struc
- 	u8 *pos;
- 	struct ieee80211_sub_if_data *sdata;
- 	struct ieee80211_supported_band *sband;
-+	union iwreq_data wrqu;
- 
- 	sband = local->hw.wiphy->bands[local->hw.conf.channel->band];
- 
-@@ -2358,13 +2359,10 @@ static int ieee80211_sta_join_ibss(struc
- 	sdata->drop_unencrypted = bss->capability &
- 		WLAN_CAPABILITY_PRIVACY ? 1 : 0;
- 
--	res = ieee80211_set_freq(local, bss->freq);
-+	res = ieee80211_set_freq(dev, bss->freq);
- 
--	if (local->oper_channel->flags & IEEE80211_CHAN_NO_IBSS) {
--		printk(KERN_DEBUG "%s: IBSS not allowed on frequency "
--		       "%d MHz\n", dev->name, local->oper_channel->center_freq);
--		return -1;
--	}
-+	if (res)
-+		return res;
- 
- 	/* Set beacon template */
- 	skb = dev_alloc_skb(local->hw.extra_tx_headroom + 400);
-@@ -2479,6 +2477,10 @@ static int ieee80211_sta_join_ibss(struc
- 	ifsta->state = IEEE80211_IBSS_JOINED;
- 	mod_timer(&ifsta->timer, jiffies + IEEE80211_IBSS_MERGE_INTERVAL);
- 
-+	memset(&wrqu, 0, sizeof(wrqu));
-+	memcpy(wrqu.ap_addr.sa_data, bss->bssid, ETH_ALEN);
-+	wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL);
++	/*
++	 * Kill guardian urb (if required by driver).
++	 */
++	if (!test_bit(DRIVER_REQUIRE_BEACON_GUARD, &rt2x00dev->flags))
++		return;
 +
- 	return res;
- }
+ 	for (i = 0; i < rt2x00dev->bcn->limit; i++) {
+ 		priv_bcn = rt2x00dev->bcn->entries[i].priv_data;
+ 		usb_kill_urb(priv_bcn->urb);
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig	2008-06-13 17:37:05.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c	2008-06-13 17:37:35.000000000 -0400
+@@ -2131,6 +2131,7 @@ static struct usb_device_id rt73usb_devi
+ 	/* D-Link */
+ 	{ USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) },
+ 	{ USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) },
++	{ USB_DEVICE(0x07d1, 0x3c06), USB_DEVICE_DATA(&rt73usb_ops) },
+ 	{ USB_DEVICE(0x07d1, 0x3c07), USB_DEVICE_DATA(&rt73usb_ops) },
+ 	/* Gemtek */
+ 	{ USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) },
+diff -up linux-2.6.25.noarch/drivers/ssb/main.c.orig linux-2.6.25.noarch/drivers/ssb/main.c
+--- linux-2.6.25.noarch/drivers/ssb/main.c.orig	2008-06-13 17:33:42.000000000 -0400
++++ linux-2.6.25.noarch/drivers/ssb/main.c	2008-06-13 17:37:35.000000000 -0400
+@@ -1168,15 +1168,21 @@ EXPORT_SYMBOL(ssb_dma_translation);
+ int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask)
+ {
+ 	struct device *dma_dev = ssb_dev->dma_dev;
++	int err = 0;
  
-@@ -3486,7 +3488,7 @@ static int ieee80211_sta_config_auth(str
- 	spin_unlock_bh(&local->sta_bss_lock);
+ #ifdef CONFIG_SSB_PCIHOST
+-	if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI)
+-		return dma_set_mask(dma_dev, mask);
++	if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI) {
++		err = pci_set_dma_mask(ssb_dev->bus->host_pci, mask);
++		if (err)
++			return err;
++		err = pci_set_consistent_dma_mask(ssb_dev->bus->host_pci, mask);
++		return err;
++	}
+ #endif
+ 	dma_dev->coherent_dma_mask = mask;
+ 	dma_dev->dma_mask = &dma_dev->coherent_dma_mask;
  
- 	if (selected) {
--		ieee80211_set_freq(local, selected->freq);
-+		ieee80211_set_freq(dev, selected->freq);
- 		if (!(ifsta->flags & IEEE80211_STA_SSID_SET))
- 			ieee80211_sta_set_ssid(dev, selected->ssid,
- 					       selected->ssid_len);
-diff -up linux-2.6.25.noarch/net/mac80211/wext.c.orig linux-2.6.25.noarch/net/mac80211/wext.c
---- linux-2.6.25.noarch/net/mac80211/wext.c.orig	2008-06-10 13:13:55.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wext.c	2008-06-10 13:15:51.000000000 -0400
-@@ -290,14 +290,22 @@ static int ieee80211_ioctl_giwmode(struc
- 	return 0;
+-	return 0;
++	return err;
  }
+ EXPORT_SYMBOL(ssb_dma_set_mask);
  
--int ieee80211_set_freq(struct ieee80211_local *local, int freqMHz)
-+int ieee80211_set_freq(struct net_device *dev, int freqMHz)
- {
- 	int ret = -EINVAL;
- 	struct ieee80211_channel *chan;
-+	struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
-+	struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
- 
- 	chan = ieee80211_get_channel(local->hw.wiphy, freqMHz);
- 
- 	if (chan && !(chan->flags & IEEE80211_CHAN_DISABLED)) {
-+		if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS &&
-+		    chan->flags & IEEE80211_CHAN_NO_IBSS) {
-+			printk(KERN_DEBUG "%s: IBSS not allowed on frequency "
-+				"%d MHz\n", dev->name, chan->center_freq);
-+			return ret;
-+		}
- 		local->oper_channel = chan;
- 
- 		if (local->sta_sw_scanning || local->sta_hw_scanning)
-@@ -315,7 +323,6 @@ static int ieee80211_ioctl_siwfreq(struc
- 				   struct iw_request_info *info,
- 				   struct iw_freq *freq, char *extra)
- {
--	struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
- 	struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
- 
- 	if (sdata->vif.type == IEEE80211_IF_TYPE_STA)
-@@ -329,14 +336,14 @@ static int ieee80211_ioctl_siwfreq(struc
- 					IEEE80211_STA_AUTO_CHANNEL_SEL;
+diff -up linux-2.6.25.noarch/net/mac80211/wext.c.orig linux-2.6.25.noarch/net/mac80211/wext.c
+--- linux-2.6.25.noarch/net/mac80211/wext.c.orig	2008-06-13 17:37:05.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wext.c	2008-06-13 17:37:35.000000000 -0400
+@@ -496,7 +496,8 @@ static int ieee80211_ioctl_giwap(struct 
+ 	sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+ 	if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
+ 	    sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
+-		if (sdata->u.sta.state == IEEE80211_ASSOCIATED) {
++		if (sdata->u.sta.state == IEEE80211_ASSOCIATED ||
++		    sdata->u.sta.state == IEEE80211_IBSS_JOINED) {
+ 			ap_addr->sa_family = ARPHRD_ETHER;
+ 			memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
  			return 0;
- 		} else
--			return ieee80211_set_freq(local,
-+			return ieee80211_set_freq(dev,
- 				ieee80211_channel_to_frequency(freq->m));
- 	} else {
- 		int i, div = 1000000;
- 		for (i = 0; i < freq->e; i++)
- 			div /= 10;
- 		if (div > 0)
--			return ieee80211_set_freq(local, freq->m / div);
-+			return ieee80211_set_freq(dev, freq->m / div);
- 		else
- 			return -EINVAL;
- 	}
+diff -up linux-2.6.25.noarch/net/mac80211/wme.c.orig linux-2.6.25.noarch/net/mac80211/wme.c
+--- linux-2.6.25.noarch/net/mac80211/wme.c.orig	2008-06-13 17:37:05.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.c	2008-06-13 17:37:35.000000000 -0400
+@@ -673,7 +673,7 @@ int ieee80211_ht_agg_queue_add(struct ie
+ #ifdef CONFIG_MAC80211_HT_DEBUG
+ 			if (net_ratelimit())
+ 				printk(KERN_DEBUG "allocated aggregation queue"
+-					" %d tid %d addr %s pool=0x%lX",
++					" %d tid %d addr %s pool=0x%lX\n",
+ 					i, tid, print_mac(mac, sta->addr),
+ 					q->qdisc_pool[0]);
+ #endif /* CONFIG_MAC80211_HT_DEBUG */




More information about the fedora-extras-commits mailing list