rpms/kernel/devel kernel.spec, 1.715, 1.716 linux-2.6-wireless-pending.patch, 1.55, 1.56 linux-2.6-wireless.patch, 1.41, 1.42

John W. Linville (linville) fedora-extras-commits at redhat.com
Wed Jun 25 20:03:47 UTC 2008


Author: linville

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

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


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.715
retrieving revision 1.716
diff -u -r1.715 -r1.716
--- kernel.spec	25 Jun 2008 19:58:31 -0000	1.715
+++ kernel.spec	25 Jun 2008 20:02:57 -0000	1.716
@@ -1139,7 +1139,7 @@
 ApplyPatch linux-2.6-selinux-ecryptfs-support.patch
 
 # wireless patches headed for 2.6.26
-#ApplyPatch linux-2.6-wireless.patch
+ApplyPatch linux-2.6-wireless.patch
 # wireless patches headed for 2.6.27
 ApplyPatch linux-2.6-wireless-pending.patch
 
@@ -1784,6 +1784,10 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
 
 %changelog
+* Wed Jun 25 2008 John W. Linville <linville at redhat.com>
+- Upstream wireless fixes from 2008-06-25
+  (http://marc.info/?l=linux-wireless&m=121440912502527&w=2)
+
 * Wed Jun 25 2008 Dave Jones <davej at redhat.com>
 - Reenable a few ppc32 modules.
 

linux-2.6-wireless-pending.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.55 -r 1.56 linux-2.6-wireless-pending.patch
Index: linux-2.6-wireless-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-wireless-pending.patch,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- linux-2.6-wireless-pending.patch	24 Jun 2008 18:30:43 -0000	1.55
+++ linux-2.6-wireless-pending.patch	25 Jun 2008 20:02:57 -0000	1.56
@@ -4861,8 +4861,8 @@
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
 diff -up /dev/null linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/hostapd.conf
---- /dev/null	2008-06-24 08:03:09.439004351 -0400
-+++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/hostapd.conf	2008-06-24 14:05:32.000000000 -0400
+--- /dev/null	2008-06-25 08:17:03.992002591 -0400
++++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/hostapd.conf	2008-06-25 15:51:33.000000000 -0400
 @@ -0,0 +1,11 @@
 +interface=wlan0
 +driver=nl80211
@@ -4876,8 +4876,8 @@
 +wpa_pairwise=CCMP
 +wpa_passphrase=12345678
 diff -up /dev/null linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/README
---- /dev/null	2008-06-24 08:03:09.439004351 -0400
-+++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/README	2008-06-24 14:05:32.000000000 -0400
+--- /dev/null	2008-06-25 08:17:03.992002591 -0400
++++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/README	2008-06-25 15:51:33.000000000 -0400
 @@ -0,0 +1,67 @@
 +mac80211_hwsim - software simulator of 802.11 radio(s) for mac80211
 +Copyright (c) 2008, Jouni Malinen <j at w1.fi>
@@ -4947,8 +4947,8 @@
 +# Run wpa_supplicant (station) for wlan1
 +wpa_supplicant -Dwext -iwlan1 -c wpa_supplicant.conf
 diff -up /dev/null linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/wpa_supplicant.conf
---- /dev/null	2008-06-24 08:03:09.439004351 -0400
-+++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/wpa_supplicant.conf	2008-06-24 14:05:32.000000000 -0400
+--- /dev/null	2008-06-25 08:17:03.992002591 -0400
++++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/wpa_supplicant.conf	2008-06-25 15:51:33.000000000 -0400
 @@ -0,0 +1,10 @@
 +ctrl_interface=/var/run/wpa_supplicant
 +
@@ -4961,8 +4961,8 @@
 +	group=CCMP
 +}
 diff -up linux-2.6.25.noarch/drivers/net/Kconfig.orig linux-2.6.25.noarch/drivers/net/Kconfig
---- linux-2.6.25.noarch/drivers/net/Kconfig.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/Kconfig	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/Kconfig.orig	2008-06-25 15:43:35.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/Kconfig	2008-06-25 15:51:33.000000000 -0400
 @@ -2283,6 +2283,19 @@ config GELIC_WIRELESS
  	  the driver automatically distinguishes the models, you can
  	  safely enable this option even if you have a wireless-less model.
@@ -4984,8 +4984,8 @@
  	tristate "Gianfar Ethernet"
  	depends on FSL_SOC
 diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig	2008-06-25 15:43:35.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c	2008-06-25 15:51:33.000000000 -0400
 @@ -110,7 +110,7 @@ static void gelic_card_get_ether_port_st
  void gelic_card_up(struct gelic_card *card)
  {
@@ -5032,8 +5032,8 @@
  
  	return card;
 diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig	2008-06-25 15:43:35.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h	2008-06-25 15:51:33.000000000 -0400
 @@ -298,7 +298,7 @@ struct gelic_card {
  	wait_queue_head_t waitq;
  
@@ -5044,8 +5044,8 @@
  
  	u64 ether_port_status;
 diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig	2008-06-25 15:43:35.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c	2008-06-25 15:51:33.000000000 -0400
 @@ -45,7 +45,8 @@
  #include "ps3_gelic_wireless.h"
  
@@ -5588,8 +5588,8 @@
  	destroy_workqueue(wl->eurus_cmd_queue);
  	destroy_workqueue(wl->event_queue);
 diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig	2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h	2008-06-25 15:51:33.000000000 -0400
 @@ -241,7 +241,7 @@ enum gelic_wl_assoc_state {
  #define GELIC_WEP_KEYS 4
  struct gelic_wl_info {
@@ -5619,8 +5619,8 @@
  	struct iw_statistics iwstat;
  };
 diff -up linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig linux-2.6.25.noarch/drivers/net/wireless/adm8211.c
---- linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig	2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c	2008-06-25 15:51:33.000000000 -0400
 @@ -306,11 +306,10 @@ static int adm8211_get_tx_stats(struct i
  				struct ieee80211_tx_queue_stats *stats)
  {
@@ -5769,8 +5769,8 @@
  
  	return 0;
 diff -up linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig linux-2.6.25.noarch/drivers/net/wireless/adm8211.h
---- linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.h	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig	2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.h	2008-06-25 15:51:33.000000000 -0400
 @@ -443,7 +443,6 @@ struct adm8211_rx_ring_info {
  struct adm8211_tx_ring_info {
  	struct sk_buff *skb;
@@ -5780,8 +5780,8 @@
  };
  
 diff -up linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig linux-2.6.25.noarch/drivers/net/wireless/airo.c
---- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/airo.c	2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig	2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/airo.c	2008-06-25 15:51:33.000000000 -0400
 @@ -1148,7 +1148,6 @@ static u8 airo_dbm_to_pct (tdsRssiEntry 
  static void airo_networks_free(struct airo_info *ai);
  
@@ -5976,8 +5976,8 @@
  
  /*
 diff -up linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig linux-2.6.25.noarch/drivers/net/wireless/arlan.h
---- linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/arlan.h	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig	2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/arlan.h	2008-06-25 15:51:33.000000000 -0400
 @@ -330,7 +330,6 @@ struct TxParam
  #define TX_RING_SIZE 2
  /* Information that need to be kept for each board. */
@@ -5987,8 +5987,8 @@
        struct arlan_shmem * conf;
  
 diff -up linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c
---- linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig	2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c	2008-06-25 15:51:33.000000000 -0400
 @@ -125,7 +125,7 @@ static inline int arlan_drop_tx(struct n
  {
  	struct arlan_private *priv = netdev_priv(dev);
@@ -6073,8 +6073,8 @@
  
  
 diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig	2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c	2008-06-25 15:51:33.000000000 -0400
 @@ -167,8 +167,7 @@ static struct pci_driver ath5k_pci_drive
  /*
   * Prototypes - MAC 802.11 stack related functions
@@ -6364,8 +6364,8 @@
  		sc->bbuf->skb = NULL;
  	else
 diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig	2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h	2008-06-25 15:51:33.000000000 -0400
 @@ -60,7 +60,6 @@ struct ath5k_buf {
  	dma_addr_t		daddr;	/* physical addr of desc */
  	struct sk_buff		*skb;	/* skbuff for buf */
@@ -6385,8 +6385,8 @@
  	struct ieee80211_hw	*hw;		/* IEEE 802.11 common */
  	struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
 diff -up linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig linux-2.6.25.noarch/drivers/net/wireless/atmel.c
---- linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/atmel.c	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig	2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/atmel.c	2008-06-25 15:51:33.000000000 -0400
 @@ -433,7 +433,6 @@ struct atmel_private {
  	struct net_device *dev;
  	struct device *sys_dev;
@@ -6566,8 +6566,8 @@
  	dev->do_ioctl = atmel_ioctl;
  	dev->irq = irq;
 diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h
---- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h	2008-06-24 14:05:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig	2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h	2008-06-25 15:51:33.000000000 -0400
 @@ -410,8 +410,7 @@ enum {
  #define B43_IRQ_TIMEOUT			0x80000000
  
@@ -6651,8 +6651,8 @@
  #define INT_TO_Q52(i)	((i) << 2)
  /* Convert a Q5.2 value to an integer (precision loss!) */
 diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c.orig	2008-06-24 14:05:07.000000000 -0400
[...4251 lines suppressed...]
---- linux-2.6.25.noarch/net/mac80211/rx.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/rx.c	2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/rx.c.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/rx.c	2008-06-25 15:51:34.000000000 -0400
 @@ -67,16 +67,141 @@ static inline int should_drop_frame(stru
  		return 1;
  	if (unlikely(skb->len < 16 + present_fcs_len + radiotap_len))
@@ -58585,8 +58600,8 @@
  	rcu_read_unlock();
  }
 diff -up linux-2.6.25.noarch/net/mac80211/sta_info.c.orig linux-2.6.25.noarch/net/mac80211/sta_info.c
---- linux-2.6.25.noarch/net/mac80211/sta_info.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/sta_info.c	2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/sta_info.c.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/sta_info.c	2008-06-25 15:51:34.000000000 -0400
 @@ -202,14 +202,12 @@ void sta_info_destroy(struct sta_info *s
  		dev_kfree_skb_any(skb);
  
@@ -58673,8 +58688,8 @@
  
  
 diff -up linux-2.6.25.noarch/net/mac80211/sta_info.h.orig linux-2.6.25.noarch/net/mac80211/sta_info.h
---- linux-2.6.25.noarch/net/mac80211/sta_info.h.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/sta_info.h	2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/sta_info.h.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/sta_info.h	2008-06-25 15:51:34.000000000 -0400
 @@ -32,7 +32,7 @@
   * @WLAN_STA_WDS: Station is one of our WDS peers.
   * @WLAN_STA_PSPOLL: Station has just PS-polled us.
@@ -58834,8 +58849,8 @@
  /* Maximum number of concurrently registered stations */
  #define MAX_STA_COUNT 2007
 diff -up linux-2.6.25.noarch/net/mac80211/tkip.c.orig linux-2.6.25.noarch/net/mac80211/tkip.c
---- linux-2.6.25.noarch/net/mac80211/tkip.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tkip.c	2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tkip.c.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tkip.c	2008-06-25 15:51:34.000000000 -0400
 @@ -6,25 +6,23 @@
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
@@ -59251,8 +59266,8 @@
 -
 -
 diff -up linux-2.6.25.noarch/net/mac80211/tkip.h.orig linux-2.6.25.noarch/net/mac80211/tkip.h
---- linux-2.6.25.noarch/net/mac80211/tkip.h.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tkip.h	2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tkip.h.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tkip.h	2008-06-25 15:51:34.000000000 -0400
 @@ -13,12 +13,8 @@
  #include <linux/crypto.h>
  #include "key.h"
@@ -59269,8 +59284,8 @@
  				 struct ieee80211_key *key,
  				 u8 *pos, size_t payload_len, u8 *ta);
 diff -up linux-2.6.25.noarch/net/mac80211/tx.c.orig linux-2.6.25.noarch/net/mac80211/tx.c
---- linux-2.6.25.noarch/net/mac80211/tx.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tx.c	2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tx.c.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tx.c	2008-06-25 15:51:34.000000000 -0400
 @@ -91,11 +91,12 @@ static u16 ieee80211_duration(struct iee
  			      int next_frag_len)
  {
@@ -60680,8 +60695,8 @@
  
  	return skb;
 diff -up linux-2.6.25.noarch/net/mac80211/util.c.orig linux-2.6.25.noarch/net/mac80211/util.c
---- linux-2.6.25.noarch/net/mac80211/util.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/util.c	2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/util.c.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/util.c	2008-06-25 15:51:34.000000000 -0400
 @@ -45,38 +45,37 @@ const unsigned char bridge_tunnel_header
  u8 *ieee80211_get_bssid(struct ieee80211_hdr *hdr, size_t len,
  			enum ieee80211_if_types type)
@@ -60933,8 +60948,8 @@
  }
  EXPORT_SYMBOL(ieee80211_wake_queues);
 diff -up linux-2.6.25.noarch/net/mac80211/wep.c.orig linux-2.6.25.noarch/net/mac80211/wep.c
---- linux-2.6.25.noarch/net/mac80211/wep.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wep.c	2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wep.c.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wep.c	2008-06-25 15:51:34.000000000 -0400
 @@ -93,13 +93,9 @@ static u8 *ieee80211_wep_add_iv(struct i
  	fc |= IEEE80211_FCTL_PROTECTED;
  	hdr->frame_control = cpu_to_le16(fc);
@@ -60980,8 +60995,8 @@
  
  	if (wep_encrypt_skb(tx, tx->skb) < 0) {
 diff -up linux-2.6.25.noarch/net/mac80211/wep.h.orig linux-2.6.25.noarch/net/mac80211/wep.h
---- linux-2.6.25.noarch/net/mac80211/wep.h.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wep.h	2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wep.h.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wep.h	2008-06-25 15:51:34.000000000 -0400
 @@ -26,7 +26,7 @@ int ieee80211_wep_encrypt(struct ieee802
  			  struct ieee80211_key *key);
  int ieee80211_wep_decrypt(struct ieee80211_local *local, struct sk_buff *skb,
@@ -60992,8 +61007,8 @@
  ieee80211_rx_result
  ieee80211_crypto_wep_decrypt(struct ieee80211_rx_data *rx);
 diff -up linux-2.6.25.noarch/net/mac80211/wext.c.orig linux-2.6.25.noarch/net/mac80211/wext.c
---- linux-2.6.25.noarch/net/mac80211/wext.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wext.c	2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wext.c.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wext.c	2008-06-25 15:51:34.000000000 -0400
 @@ -169,14 +169,26 @@ static int ieee80211_ioctl_giwrange(stru
  	range->num_encoding_sizes = 2;
  	range->max_encoding_tokens = NUM_DEFAULT_KEYS;
@@ -61039,8 +61054,8 @@
  		wstats->qual.updated = local->wstats_flags;
  	}
 diff -up linux-2.6.25.noarch/net/mac80211/wme.c.orig linux-2.6.25.noarch/net/mac80211/wme.c
---- linux-2.6.25.noarch/net/mac80211/wme.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.c	2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wme.c.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.c	2008-06-25 15:51:34.000000000 -0400
 @@ -19,16 +19,22 @@
  #include "wme.h"
  
@@ -61445,8 +61460,8 @@
  	if (requeue)
  		ieee80211_requeue(local, agg_queue);
 diff -up linux-2.6.25.noarch/net/mac80211/wme.h.orig linux-2.6.25.noarch/net/mac80211/wme.h
---- linux-2.6.25.noarch/net/mac80211/wme.h.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.h	2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wme.h.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.h	2008-06-25 15:51:34.000000000 -0400
 @@ -31,7 +31,7 @@ static inline int WLAN_FC_IS_QOS_DATA(u1
  	return (fc & 0x8C) == 0x88;
  }
@@ -61457,8 +61472,8 @@
  int ieee80211_qdisc_installed(struct net_device *dev);
  int ieee80211_ht_agg_queue_add(struct ieee80211_local *local,
 diff -up linux-2.6.25.noarch/net/mac80211/wpa.c.orig linux-2.6.25.noarch/net/mac80211/wpa.c
---- linux-2.6.25.noarch/net/mac80211/wpa.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wpa.c	2008-06-24 14:05:32.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wpa.c.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wpa.c	2008-06-25 15:51:34.000000000 -0400
 @@ -24,46 +24,22 @@ static int ieee80211_get_hdr_info(const 
  {
  	struct ieee80211_hdr *hdr;
@@ -61797,8 +61812,8 @@
  	if ((rx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_DATA)
  		return RX_CONTINUE;
 diff -up linux-2.6.25.noarch/net/wireless/core.c.orig linux-2.6.25.noarch/net/wireless/core.c
---- linux-2.6.25.noarch/net/wireless/core.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/core.c	2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/core.c.orig	2008-06-25 15:43:38.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/core.c	2008-06-25 15:51:34.000000000 -0400
 @@ -143,8 +143,11 @@ void cfg80211_put_dev(struct cfg80211_re
  int cfg80211_dev_rename(struct cfg80211_registered_device *rdev,
  			char *newname)
@@ -61862,8 +61877,8 @@
  
  /* exported functions */
 diff -up linux-2.6.25.noarch/net/wireless/radiotap.c.orig linux-2.6.25.noarch/net/wireless/radiotap.c
---- linux-2.6.25.noarch/net/wireless/radiotap.c.orig	2008-06-24 14:05:07.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/radiotap.c	2008-06-24 14:05:20.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/radiotap.c.orig	2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/radiotap.c	2008-06-25 15:51:34.000000000 -0400
 @@ -59,23 +59,21 @@ int ieee80211_radiotap_iterator_init(
  		return -EINVAL;
  
@@ -61904,38 +61919,3 @@
  				iterator->next_bitmap++;
  			} else
  				/* no more bitmaps: end */
-diff -up linux-2.6.25.noarch/net/wireless/reg.c.orig linux-2.6.25.noarch/net/wireless/reg.c
---- linux-2.6.25.noarch/net/wireless/reg.c.orig	2008-06-24 11:07:09.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/reg.c	2008-06-24 14:05:32.000000000 -0400
-@@ -80,6 +80,23 @@ static const struct ieee80211_channel_ra
- 				     IEEE80211_CHAN_RADAR),
- };
- 
-+static const struct ieee80211_channel_range ieee80211_EU_channels[] = {
-+	/* IEEE 802.11b/g, channels 1..13 */
-+	RANGE_PWR(2412, 2472, 20, 6, 0),
-+	/* IEEE 802.11a, channel 36*/
-+	RANGE_PWR(5180, 5180, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
-+	/* IEEE 802.11a, channel 40*/
-+	RANGE_PWR(5200, 5200, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
-+	/* IEEE 802.11a, channel 44*/
-+	RANGE_PWR(5220, 5220, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
-+	/* IEEE 802.11a, channels 48..64 */
-+	RANGE_PWR(5240, 5320, 23, 6, IEEE80211_CHAN_NO_IBSS |
-+				     IEEE80211_CHAN_RADAR),
-+	/* IEEE 802.11a, channels 100..140 */
-+	RANGE_PWR(5500, 5700, 30, 6, IEEE80211_CHAN_NO_IBSS |
-+				     IEEE80211_CHAN_RADAR),
-+};
-+
- #define REGDOM(_code)							\
- 	{								\
- 		.code = __stringify(_code),				\
-@@ -90,6 +107,7 @@ static const struct ieee80211_channel_ra
- static const struct ieee80211_regdomain ieee80211_regdoms[] = {
- 	REGDOM(US),
- 	REGDOM(JP),
-+	REGDOM(EU),
- };
- 
- 

linux-2.6-wireless.patch:

Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-wireless.patch,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- linux-2.6-wireless.patch	13 Jun 2008 23:54:09 -0000	1.41
+++ linux-2.6-wireless.patch	25 Jun 2008 20:02:57 -0000	1.42
@@ -1,540 +1,543 @@
-commit cb62eccd7d946f7fb92b8beb79988726ec92c227
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Thu Jun 12 20:47:17 2008 +0200
-
-    rt2x00: Add D-link DWA111 support
-    
-    Add new rt73usb USB ID for D-Link DWA111
-    
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 995ad6c5a415c9389d094d246ca1b305c1e31813
-Author: Tomas Winkler <tomas.winkler at intel.com>
-Date:   Thu Jun 12 20:08:19 2008 +0300
+commit 66b5004d85164a6439d3ba1e7757734472ee2cac
+Author: Ron Rindjunsky <ron.rindjunsky at intel.com>
+Date:   Wed Jun 25 16:46:31 2008 +0800
 
-    mac80211: add missing new line in debug print HT_DEBUG
+    iwlwifi: improve scanning band selection management
     
-    This patch adds '\n' in debug printk (wme.c HT DEBUG)
+    This patch modifies the band selection management when scanning, so
+    bands are now scanned according to HW band support.
     
+    Signed-off-by: Ron Rindjunsky <ron.rindjunsky at intel.com>
     Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+    Signed-off-by: Zhu Yi <yi.zhu at intel.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 5c5f9664d5284d8542062fed39e1f19b80db7aa5
-Author: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
-Date:   Thu Jun 12 09:47:16 2008 +0800
+commit 99ade2597e3f7f0ad463c489aaccd6cc605e242c
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date:   Fri Jun 20 22:11:00 2008 +0200
 
-    mac80211 : fix for iwconfig in ad-hoc mode
+    rt2x00: Fix unbalanced mutex locking
     
-    The patch checks interface status, if it is in IBSS_JOINED mode
-    show cell id it is associated with.
+    The usb_cache_mutex was not correctly released
+    under all circumstances. Both rt73usb as rt2500usb
+    didn't release the mutex under certain conditions
+    when the register access failed. Obviously such
+    failure would lead to deadlocks.
+    
+    In addition under similar circumstances when the
+    bbp register couldn't be read the value must be
+    set to 0xff to indicate that the value is wrong.
+    This too didn't happen under all circumstances.
     
-    Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
-    Signed-off-by: Zhu Yi <yi.zhu at intel.com>
+    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit e6340361f9c70e84312caed98c6e058ac6234e9b
+commit 2f9ec47d0954f9d2e5a00209c2689cbc477a8c89
 Author: Michael Buesch <mb at bu3sch.de>
-Date:   Thu Jun 12 15:33:13 2008 +0200
+Date:   Fri Jun 20 11:40:46 2008 +0200
 
-    ssb: Fix coherent DMA mask for PCI devices
+    b43legacy: Fix possible NULL pointer dereference in DMA code
     
-    This fixes setting the coherent DMA mask for PCI devices.
+    This fixes a possible NULL pointer dereference in an error path of the
+    DMA allocation error checking code. This is also necessary for a future
+    DMA API change that is on its way into the mainline kernel that adds
+    an additional dev parameter to dma_mapping_error().
     
     Signed-off-by: Michael Buesch <mb at bu3sch.de>
+    Cc: stable <stable at kernel.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 6847aa5cce6e22c3625a243b02909ac46aafa110
-Author: Randy Dunlap <randy.dunlap at oracle.com>
-Date:   Wed Jun 11 13:32:22 2008 -0700
-
-    rt2x00: LEDS build failure
-    
-    Config symbols that select LEDS_CLASS need to depend on NEW_LEDS so that
-    undefined symbols are not used in the build.
-    
-    The alternative is to select NEW_LEDS, which some drivers do.
-    
-    This patch fixes the led_* symbols build errors.
-    
-    (.text+0x174cdc): undefined reference to `input_unregister_device'
-    (.text+0x174d9f): undefined reference to `input_allocate_device'
-    (.text+0x174e2d): undefined reference to `input_register_device'
-    (.text+0x174e53): undefined reference to `input_free_device'
-    rt2x00rfkill.c:(.text+0x176dc4): undefined reference to `input_allocate_polled_device'
-    rt2x00rfkill.c:(.text+0x176e8b): undefined reference to `input_event'
-    rt2x00rfkill.c:(.text+0x176e9f): undefined reference to `input_event'
-    (.text+0x176eca): undefined reference to `input_unregister_polled_device'
-    (.text+0x176efc): undefined reference to `input_free_polled_device'
-    (.text+0x176f37): undefined reference to `input_free_polled_device'
-    (.text+0x176fd8): undefined reference to `input_register_polled_device'
-    (.text+0x1772c0): undefined reference to `led_classdev_resume'
-    (.text+0x1772d4): undefined reference to `led_classdev_resume'
-    (.text+0x1772e8): undefined reference to `led_classdev_resume'
-    (.text+0x17730a): undefined reference to `led_classdev_suspend'
-    (.text+0x17731e): undefined reference to `led_classdev_suspend'
-    (.text+0x17732f): undefined reference to `led_classdev_suspend'
-    rt2x00leds.c:(.text+0x177348): undefined reference to `led_classdev_unregister'
-    rt2x00leds.c:(.text+0x1773c0): undefined reference to `led_classdev_register'
-    rfkill-input.c:(.text+0x209e4c): undefined reference to `input_close_device'
-    rfkill-input.c:(.text+0x209e53): undefined reference to `input_unregister_handle'
-    rfkill-input.c:(.text+0x209ea1): undefined reference to `input_register_handle'
-    rfkill-input.c:(.text+0x209eae): undefined reference to `input_open_device'
-    rfkill-input.c:(.text+0x209ebb): undefined reference to `input_unregister_handle'
-    rfkill-input.c:(.init.text+0x17405): undefined reference to `input_register_handler'
-    rfkill-input.c:(.exit.text+0x194f): undefined reference to `input_unregister_handler'
-    make[1]: *** [vmlinux] Error 1
-    
-    Signed-off-by: Randy Dunlap <randy.dunlap at oracle.com>
-    Acked-by: Ivo van Doorn <IvDoorn at gmail.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit e76328e4a8260707fbc29c99773fb5ba4627096c
-Author: Randy Dunlap <randy.dunlap at oracle.com>
-Date:   Wed Jun 11 12:57:58 2008 -0700
-
-    rt2x00: INPUT build failure
-    
-    Config symbols that select RFKILL need to depend on INPUT so that
-    undefined symbols are not used in the build.
-    
-    This patch fixes the input_* symbols build errors.
-    
-    (.text+0x174cdc): undefined reference to `input_unregister_device'
-    (.text+0x174d9f): undefined reference to `input_allocate_device'
-    (.text+0x174e2d): undefined reference to `input_register_device'
-    (.text+0x174e53): undefined reference to `input_free_device'
-    rt2x00rfkill.c:(.text+0x176dc4): undefined reference to `input_allocate_polled_device'
-    rt2x00rfkill.c:(.text+0x176e8b): undefined reference to `input_event'
-    rt2x00rfkill.c:(.text+0x176e9f): undefined reference to `input_event'
-    (.text+0x176eca): undefined reference to `input_unregister_polled_device'
-    (.text+0x176efc): undefined reference to `input_free_polled_device'
-    (.text+0x176f37): undefined reference to `input_free_polled_device'
-    (.text+0x176fd8): undefined reference to `input_register_polled_device'
-    (.text+0x1772c0): undefined reference to `led_classdev_resume'
-    (.text+0x1772d4): undefined reference to `led_classdev_resume'
-    (.text+0x1772e8): undefined reference to `led_classdev_resume'
-    (.text+0x17730a): undefined reference to `led_classdev_suspend'
-    (.text+0x17731e): undefined reference to `led_classdev_suspend'
-    (.text+0x17732f): undefined reference to `led_classdev_suspend'
-    rt2x00leds.c:(.text+0x177348): undefined reference to `led_classdev_unregister'
-    rt2x00leds.c:(.text+0x1773c0): undefined reference to `led_classdev_register'
-    rfkill-input.c:(.text+0x209e4c): undefined reference to `input_close_device'
-    rfkill-input.c:(.text+0x209e53): undefined reference to `input_unregister_handle'
-    rfkill-input.c:(.text+0x209ea1): undefined reference to `input_register_handle'
-    rfkill-input.c:(.text+0x209eae): undefined reference to `input_open_device'
-    rfkill-input.c:(.text+0x209ebb): undefined reference to `input_unregister_handle'
-    rfkill-input.c:(.init.text+0x17405): undefined reference to `input_register_handler'
-    rfkill-input.c:(.exit.text+0x194f): undefined reference to `input_unregister_handler'
-    make[1]: *** [vmlinux] Error 1
-    
-    Signed-off-by: Randy Dunlap <randy.dunlap at oracle.com>
-    Acked-by: Ivo van Doorn <IvDoorn at gmail.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 98a3b2fe435ae76170936c14f5c9e6a87548e3ef
+commit 7b3abfc87ec13a81b255012b6e1bd4caeeb05aec
 Author: Michael Buesch <mb at bu3sch.de>
-Date:   Thu Jun 12 12:36:29 2008 +0200
+Date:   Sun Jun 15 16:01:24 2008 +0200
 
-    b43: Fix noise calculation WARN_ON
-    
-    This removes a WARN_ON that is responsible for the following koops:
-    http://www.kerneloops.org/searchweek.php?search=b43_generate_noise_sample
+    b43: Fix possible MMIO access while device is down
     
-    The comment in the patch describes why it's safe to simply remove
-    the check.
+    This fixes a possible MMIO access while the device is still down
+    from a suspend cycle. MMIO accesses with the device powered down
+    may cause crashes on certain devices.
     
     Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 028118a5f09a9c807e6b43e2231efdff9f224c74
+commit 664f200610a3c9641ff58fc91b986b804cb1cc2d
 Author: Michael Buesch <mb at bu3sch.de>
-Date:   Thu Jun 12 11:58:56 2008 +0200
+Date:   Sun Jun 15 15:27:49 2008 +0200
 
-    b43: Fix possible NULL pointer dereference in DMA code
-    
-    This fixes a possible NULL pointer dereference in an error path of the
-    DMA allocation error checking code. This is also necessary for a future
-    DMA API change that is on its way into the mainline kernel that adds
-    an additional dev parameter to dma_mapping_error().
+    b43legacy: Do not return TX_BUSY from op_tx
     
-    This patch moves the whole struct b43_dmaring struct initialization
-    right before any DMA allocation operation.
+    Never return TX_BUSY from op_tx. It doesn't make sense to return
+    TX_BUSY, if we can not transmit the packet.
+    Drop the packet and return TX_OK.
     
-    Reported-by: Miles Lane <miles.lane at gmail.com>
     Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 051c256f672efa356a4cda1841132dbc86541090
-Author: Gertjan van Wingerde <gwingerde at kpnplanet.nl>
-Date:   Tue Jun 3 20:29:47 2008 +0200
+commit c9e8eae0935f03e2d03a7ad7af80d8fc6c53e68c
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Sun Jun 15 15:17:29 2008 +0200
 
-    rt2x00: Restrict DMA to 32-bit addresses.
+    b43: Do not return TX_BUSY from op_tx
     
-    None of the rt2x00 PCI devices support 64-bit DMA addresses (they all
-    only accept 32-bit buffer addresses). Hence it makes no sense to try to
-    enable 64-bit DMA addresses. Only try to enable 32-bit DMA addresses.
+    Never return TX_BUSY from op_tx. It doesn't make sense to return
+    TX_BUSY, if we can not transmit the packet.
+    Drop the packet and return TX_OK.
+    This will fix the resume hang.
     
-    Signed-off-by: Gertjan van Wingerde <gwingerde at kpnplanet.nl>
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit edfa78b2ba651782d70be6d1fef214e21a26d8cb
-Author: Ivo van Doorn <IvDoorn at gmail.com>
-Date:   Tue Jun 3 20:29:50 2008 +0200
-
-    rt2x00: Don't kill guardian_urb when it wasn't created
-    
-    This fixes a "BUG: unable to handle kernel paging request"
-    bug in rt73usb which was caused by killing the guardian_urb
-    while it had never been allocated for rt73usb.
+commit 59d393ad92f719d9ef36b96eae56d4817a7eeb10
+Author: Tony Vroon <tony at linx.net>
+Date:   Wed Jun 11 16:23:56 2008 -0400
+
+    mac80211: implement EU regulatory domain
+    
+    Implement missing EU regulatory domain for mac80211. Based on the
+    information in IEEE 802.11-2007 (specifically pages 1142, 1143 & 1148)
+    and ETSI 301 893 (V1.4.1).
+    With thanks to Johannes Berg.
     
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: Tony Vroon <tony at linx.net>
+    Acked-by: Johannes Berg <johannes at sipsolutions.net>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h
---- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig	2008-06-13 17:37:04.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h	2008-06-13 17:37:35.000000000 -0400
-@@ -630,7 +630,6 @@ struct b43_pio {
- 
- /* Context information for a noise calculation (Link Quality). */
- struct b43_noise_calculation {
--	u8 channel_at_start;
- 	bool calculation_running;
- 	u8 nr_samples;
- 	s8 samples[8][4];
-diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c.orig	2008-06-13 17:37:04.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c	2008-06-13 17:37:35.000000000 -0400
-@@ -795,24 +795,49 @@ struct b43_dmaring *b43_setup_dmaring(st
- {
- 	struct b43_dmaring *ring;
- 	int err;
--	int nr_slots;
- 	dma_addr_t dma_test;
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c.orig	2008-06-25 15:43:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c	2008-06-25 15:47:15.000000000 -0400
+@@ -72,6 +72,9 @@ static void b43_led_brightness_set(struc
+ 	struct b43_wldev *dev = led->dev;
+ 	bool radio_enabled;
  
- 	ring = kzalloc(sizeof(*ring), GFP_KERNEL);
++	if (unlikely(b43_status(dev) < B43_STAT_INITIALIZED))
++		return;
++
+ 	/* Checking the radio-enabled status here is slightly racy,
+ 	 * but we want to avoid the locking overhead and we don't care
+ 	 * whether the LED has the wrong state for a second. */
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig	2008-06-25 15:46:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c	2008-06-25 15:47:15.000000000 -0400
+@@ -876,6 +876,7 @@ struct b43legacy_dmaring *b43legacy_setu
  	if (!ring)
  		goto out;
--	ring->type = type;
+ 	ring->type = type;
++	ring->dev = dev;
  
--	nr_slots = B43_RXRING_SLOTS;
-+	ring->nr_slots = B43_RXRING_SLOTS;
+ 	nr_slots = B43legacy_RXRING_SLOTS;
  	if (for_tx)
--		nr_slots = B43_TXRING_SLOTS;
-+		ring->nr_slots = B43_TXRING_SLOTS;
- 
--	ring->meta = kcalloc(nr_slots, sizeof(struct b43_dmadesc_meta),
-+	ring->meta = kcalloc(ring->nr_slots, sizeof(struct b43_dmadesc_meta),
- 			     GFP_KERNEL);
- 	if (!ring->meta)
- 		goto err_kfree_ring;
-+
-+	ring->type = type;
-+	ring->dev = dev;
-+	ring->mmio_base = b43_dmacontroller_base(type, controller_index);
-+	ring->index = controller_index;
-+	if (type == B43_DMA_64BIT)
-+		ring->ops = &dma64_ops;
-+	else
-+		ring->ops = &dma32_ops;
- 	if (for_tx) {
--		ring->txhdr_cache = kcalloc(nr_slots,
-+		ring->tx = 1;
-+		ring->current_slot = -1;
-+	} else {
-+		if (ring->index == 0) {
-+			ring->rx_buffersize = B43_DMA0_RX_BUFFERSIZE;
-+			ring->frameoffset = B43_DMA0_RX_FRAMEOFFSET;
-+		} else if (ring->index == 3) {
-+			ring->rx_buffersize = B43_DMA3_RX_BUFFERSIZE;
-+			ring->frameoffset = B43_DMA3_RX_FRAMEOFFSET;
-+		} else
-+			B43_WARN_ON(1);
-+	}
-+	spin_lock_init(&ring->lock);
-+#ifdef CONFIG_B43_DEBUG
-+	ring->last_injected_overflow = jiffies;
-+#endif
-+
-+	if (for_tx) {
-+		ring->txhdr_cache = kcalloc(ring->nr_slots,
- 					    b43_txhdr_size(dev),
- 					    GFP_KERNEL);
- 		if (!ring->txhdr_cache)
-@@ -828,7 +853,7 @@ struct b43_dmaring *b43_setup_dmaring(st
- 					  b43_txhdr_size(dev), 1)) {
- 			/* ugh realloc */
- 			kfree(ring->txhdr_cache);
--			ring->txhdr_cache = kcalloc(nr_slots,
-+			ring->txhdr_cache = kcalloc(ring->nr_slots,
- 						    b43_txhdr_size(dev),
- 						    GFP_KERNEL | GFP_DMA);
- 			if (!ring->txhdr_cache)
-@@ -853,32 +878,6 @@ struct b43_dmaring *b43_setup_dmaring(st
+@@ -922,7 +923,6 @@ struct b43legacy_dmaring *b43legacy_setu
  				 DMA_TO_DEVICE);
  	}
  
 -	ring->dev = dev;
--	ring->nr_slots = nr_slots;
--	ring->mmio_base = b43_dmacontroller_base(type, controller_index);
--	ring->index = controller_index;
--	if (type == B43_DMA_64BIT)
--		ring->ops = &dma64_ops;
--	else
--		ring->ops = &dma32_ops;
--	if (for_tx) {
--		ring->tx = 1;
--		ring->current_slot = -1;
--	} else {
--		if (ring->index == 0) {
--			ring->rx_buffersize = B43_DMA0_RX_BUFFERSIZE;
--			ring->frameoffset = B43_DMA0_RX_FRAMEOFFSET;
--		} else if (ring->index == 3) {
--			ring->rx_buffersize = B43_DMA3_RX_BUFFERSIZE;
--			ring->frameoffset = B43_DMA3_RX_FRAMEOFFSET;
--		} else
--			B43_WARN_ON(1);
--	}
--	spin_lock_init(&ring->lock);
--#ifdef CONFIG_B43_DEBUG
--	ring->last_injected_overflow = jiffies;
--#endif
--
- 	err = alloc_ringmemory(ring);
- 	if (err)
- 		goto err_kfree_txhdr_cache;
+ 	ring->nr_slots = nr_slots;
+ 	ring->mmio_base = b43legacy_dmacontroller_base(type, controller_index);
+ 	ring->index = controller_index;
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig	2008-06-25 15:46:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c	2008-06-25 15:47:15.000000000 -0400
+@@ -2378,8 +2378,10 @@ static int b43legacy_op_tx(struct ieee80
+ 	} else
+ 		err = b43legacy_dma_tx(dev, skb, ctl);
+ out:
+-	if (unlikely(err))
+-		return NETDEV_TX_BUSY;
++	if (unlikely(err)) {
++		/* Drop the packet. */
++		dev_kfree_skb_any(skb);
++	}
+ 	return NETDEV_TX_OK;
+ }
+ 
 diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/main.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig	2008-06-13 17:37:04.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c	2008-06-13 17:37:35.000000000 -0400
-@@ -1145,7 +1145,6 @@ static void b43_generate_noise_sample(st
- 	b43_jssi_write(dev, 0x7F7F7F7F);
- 	b43_write32(dev, B43_MMIO_MACCMD,
- 		    b43_read32(dev, B43_MMIO_MACCMD) | B43_MACCMD_BGNOISE);
--	B43_WARN_ON(dev->noisecalc.channel_at_start != dev->phy.channel);
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig	2008-06-25 15:46:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c	2008-06-25 15:47:15.000000000 -0400
+@@ -2883,12 +2883,11 @@ static int b43_op_tx(struct ieee80211_hw
+ 
+ 	if (unlikely(skb->len < 2 + 2 + 6)) {
+ 		/* Too short, this can't be a valid frame. */
+-		dev_kfree_skb_any(skb);
+-		return NETDEV_TX_OK;
++		goto drop_packet;
+ 	}
+ 	B43_WARN_ON(skb_shinfo(skb)->nr_frags);
+ 	if (unlikely(!dev))
+-		return NETDEV_TX_BUSY;
++		goto drop_packet;
+ 
+ 	/* Transmissions on seperate queues can run concurrently. */
+ 	read_lock_irqsave(&wl->tx_lock, flags);
+@@ -2904,7 +2903,12 @@ static int b43_op_tx(struct ieee80211_hw
+ 	read_unlock_irqrestore(&wl->tx_lock, flags);
+ 
+ 	if (unlikely(err))
+-		return NETDEV_TX_BUSY;
++		goto drop_packet;
++	return NETDEV_TX_OK;
++
++drop_packet:
++	/* We can not transmit this packet. Drop it. */
++	dev_kfree_skb_any(skb);
+ 	return NETDEV_TX_OK;
  }
  
- static void b43_calculate_link_quality(struct b43_wldev *dev)
-@@ -1154,7 +1153,6 @@ static void b43_calculate_link_quality(s
+diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig	2008-06-25 15:46:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c	2008-06-25 15:47:15.000000000 -0400
+@@ -2227,7 +2227,10 @@ static int iwl3945_scan_initiate(struct 
+ 	}
+ 
+ 	IWL_DEBUG_INFO("Starting scan...\n");
+-	priv->scan_bands = 2;
++	if (priv->cfg->sku & IWL_SKU_G)
++		priv->scan_bands |= BIT(IEEE80211_BAND_2GHZ);
++	if (priv->cfg->sku & IWL_SKU_A)
++		priv->scan_bands |= BIT(IEEE80211_BAND_5GHZ);
+ 	set_bit(STATUS_SCANNING, &priv->status);
+ 	priv->scan_start = jiffies;
+ 	priv->scan_pass_start = priv->scan_start;
+@@ -3352,13 +3355,18 @@ static void iwl3945_rx_scan_complete_not
+ 	cancel_delayed_work(&priv->scan_check);
+ 
+ 	IWL_DEBUG_INFO("Scan pass on %sGHz took %dms\n",
+-		       (priv->scan_bands == 2) ? "2.4" : "5.2",
++		       (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) ?
++							"2.4" : "5.2",
+ 		       jiffies_to_msecs(elapsed_jiffies
+ 					(priv->scan_pass_start, jiffies)));
+ 
+-	/* Remove this scanned band from the list
+-	 * of pending bands to scan */
+-	priv->scan_bands--;
++	/* Remove this scanned band from the list of pending
++	 * bands to scan, band G precedes A in order of scanning
++	 * as seen in iwl3945_bg_request_scan */
++	if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ))
++		priv->scan_bands &= ~BIT(IEEE80211_BAND_2GHZ);
++	else if (priv->scan_bands &  BIT(IEEE80211_BAND_5GHZ))
++		priv->scan_bands &= ~BIT(IEEE80211_BAND_5GHZ);
+ 
+ 	/* If a request to abort was given, or the scan did not succeed
+ 	 * then we reset the scan state machine and terminate,
+@@ -4972,7 +4980,7 @@ static int iwl3945_get_channels_for_scan
+ 
+ 		ch_info = iwl3945_get_channel_info(priv, band, scan_ch->channel);
+ 		if (!is_channel_valid(ch_info)) {
+-			IWL_DEBUG_SCAN("Channel %d is INVALID for this SKU.\n",
++			IWL_DEBUG_SCAN("Channel %d is INVALID for this band.\n",
+ 				       scan_ch->channel);
+ 			continue;
+ 		}
+@@ -6315,21 +6323,16 @@ static void iwl3945_bg_request_scan(stru
+ 
+ 	/* flags + rate selection */
  
- 	if (dev->noisecalc.calculation_running)
- 		return;
--	dev->noisecalc.channel_at_start = dev->phy.channel;
- 	dev->noisecalc.calculation_running = 1;
- 	dev->noisecalc.nr_samples = 0;
- 
-@@ -1171,9 +1169,16 @@ static void handle_irq_noise(struct b43_
- 
- 	/* Bottom half of Link Quality calculation. */
- 
-+	/* Possible race condition: It might be possible that the user
-+	 * changed to a different channel in the meantime since we
-+	 * started the calculation. We ignore that fact, since it's
-+	 * not really that much of a problem. The background noise is
-+	 * an estimation only anyway. Slightly wrong results will get damped
-+	 * by the averaging of the 8 sample rounds. Additionally the
-+	 * value is shortlived. So it will be replaced by the next noise
-+	 * calculation round soon. */
-+
- 	B43_WARN_ON(!dev->noisecalc.calculation_running);
--	if (dev->noisecalc.channel_at_start != phy->channel)
--		goto drop_calculation;
- 	*((__le32 *)noise) = cpu_to_le32(b43_jssi_read(dev));
- 	if (noise[0] == 0x7F || noise[1] == 0x7F ||
- 	    noise[2] == 0x7F || noise[3] == 0x7F)
-@@ -1214,11 +1219,10 @@ static void handle_irq_noise(struct b43_
- 			average -= 48;
- 
- 		dev->stats.link_noise = average;
--	      drop_calculation:
- 		dev->noisecalc.calculation_running = 0;
- 		return;
+-	switch (priv->scan_bands) {
+-	case 2:
++	if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) {
+ 		scan->flags = RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK;
+ 		scan->tx_cmd.rate = IWL_RATE_1M_PLCP;
+ 		scan->good_CRC_th = 0;
+ 		band = IEEE80211_BAND_2GHZ;
+-		break;
+-
+-	case 1:
++	} else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ)) {
+ 		scan->tx_cmd.rate = IWL_RATE_6M_PLCP;
+ 		scan->good_CRC_th = IWL_GOOD_CRC_TH;
+ 		band = IEEE80211_BAND_5GHZ;
+-		break;
+-
+-	default:
++	} else {
+ 		IWL_WARNING("Invalid scan band count\n");
+ 		goto done;
+ 	}
+@@ -6770,7 +6773,7 @@ static int iwl3945_mac_config(struct iee
+ 	ch_info = iwl3945_get_channel_info(priv, conf->channel->band,
+ 					   conf->channel->hw_value);
+ 	if (!is_channel_valid(ch_info)) {
+-		IWL_DEBUG_SCAN("Channel %d [%d] is INVALID for this SKU.\n",
++		IWL_DEBUG_SCAN("Channel %d [%d] is INVALID for this band.\n",
+ 			       conf->channel->hw_value, conf->channel->band);
+ 		IWL_DEBUG_MAC80211("leave - invalid channel\n");
+ 		spin_unlock_irqrestore(&priv->lock, flags);
+diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig	2008-06-25 15:46:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c	2008-06-25 15:47:15.000000000 -0400
+@@ -1774,7 +1774,10 @@ static int iwl4965_scan_initiate(struct 
  	}
--      generate_new:
-+generate_new:
- 	b43_generate_noise_sample(dev);
- }
  
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig.orig	2008-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/Kconfig	2008-06-13 17:37:35.000000000 -0400
-@@ -32,12 +32,13 @@ config RT2X00_LIB_FIRMWARE
- config RT2X00_LIB_RFKILL
- 	boolean
- 	depends on RT2X00_LIB
-+	depends on INPUT
- 	select RFKILL
- 	select INPUT_POLLDEV
- 
- config RT2X00_LIB_LEDS
- 	boolean
--	depends on RT2X00_LIB
-+	depends on RT2X00_LIB && NEW_LEDS
- 
- config RT2400PCI
- 	tristate "Ralink rt2400 pci/pcmcia support"
-@@ -51,7 +52,7 @@ config RT2400PCI
- 
- config RT2400PCI_RFKILL
- 	bool "RT2400 rfkill support"
--	depends on RT2400PCI
-+	depends on RT2400PCI && INPUT
- 	select RT2X00_LIB_RFKILL
- 	---help---
- 	  This adds support for integrated rt2400 devices that feature a
-@@ -60,7 +61,7 @@ config RT2400PCI_RFKILL
- 
- config RT2400PCI_LEDS
- 	bool "RT2400 leds support"
--	depends on RT2400PCI
-+	depends on RT2400PCI && NEW_LEDS
- 	select LEDS_CLASS
- 	select RT2X00_LIB_LEDS
- 	---help---
-@@ -78,7 +79,7 @@ config RT2500PCI
- 
- config RT2500PCI_RFKILL
- 	bool "RT2500 rfkill support"
--	depends on RT2500PCI
-+	depends on RT2500PCI && INPUT
- 	select RT2X00_LIB_RFKILL
- 	---help---
- 	  This adds support for integrated rt2500 devices that feature a
-@@ -87,7 +88,7 @@ config RT2500PCI_RFKILL
- 
- config RT2500PCI_LEDS
- 	bool "RT2500 leds support"
--	depends on RT2500PCI
-+	depends on RT2500PCI && NEW_LEDS
- 	select LEDS_CLASS
- 	select RT2X00_LIB_LEDS
- 	---help---
-@@ -107,7 +108,7 @@ config RT61PCI
- 
- config RT61PCI_RFKILL
- 	bool "RT61 rfkill support"
--	depends on RT61PCI
-+	depends on RT61PCI && INPUT
- 	select RT2X00_LIB_RFKILL
- 	---help---
- 	  This adds support for integrated rt61 devices that feature a
-@@ -116,7 +117,7 @@ config RT61PCI_RFKILL
- 
- config RT61PCI_LEDS
- 	bool "RT61 leds support"
--	depends on RT61PCI
-+	depends on RT61PCI && NEW_LEDS
- 	select LEDS_CLASS
- 	select RT2X00_LIB_LEDS
- 	---help---
-@@ -133,7 +134,7 @@ config RT2500USB
- 
- config RT2500USB_LEDS
- 	bool "RT2500 leds support"
--	depends on RT2500USB
-+	depends on RT2500USB && NEW_LEDS
- 	select LEDS_CLASS
- 	select RT2X00_LIB_LEDS
- 	---help---
-@@ -152,7 +153,7 @@ config RT73USB
- 
- config RT73USB_LEDS
- 	bool "RT73 leds support"
--	depends on RT73USB
-+	depends on RT73USB && NEW_LEDS
- 	select LEDS_CLASS
- 	select RT2X00_LIB_LEDS
- 	---help---
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig	2008-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c	2008-06-13 17:37:35.000000000 -0400
-@@ -412,8 +412,7 @@ int rt2x00pci_probe(struct pci_dev *pci_
- 	if (pci_set_mwi(pci_dev))
- 		ERROR_PROBE("MWI not available.\n");
- 
--	if (pci_set_dma_mask(pci_dev, DMA_64BIT_MASK) &&
--	    pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) {
-+	if (pci_set_dma_mask(pci_dev, DMA_32BIT_MASK)) {
- 		ERROR_PROBE("PCI DMA not supported.\n");
- 		retval = -EIO;
- 		goto exit_disable_device;
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c.orig	2008-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00usb.c	2008-06-13 17:37:35.000000000 -0400
-@@ -362,6 +362,12 @@ void rt2x00usb_disable_radio(struct rt2x
+ 	IWL_DEBUG_INFO("Starting scan...\n");
+-	priv->scan_bands = 2;
++	if (priv->cfg->sku & IWL_SKU_G)
++		priv->scan_bands |= BIT(IEEE80211_BAND_2GHZ);
++	if (priv->cfg->sku & IWL_SKU_A)
++		priv->scan_bands |= BIT(IEEE80211_BAND_5GHZ);
+ 	set_bit(STATUS_SCANNING, &priv->status);
+ 	priv->scan_start = jiffies;
+ 	priv->scan_pass_start = priv->scan_start;
+@@ -3023,8 +3026,9 @@ static void iwl4965_rx_reply_tx(struct i
+ 
+ 	IWL_DEBUG_TX_REPLY("Tx queue reclaim %d\n", index);
+ 	if (index != -1) {
+-		int freed = iwl4965_tx_queue_reclaim(priv, txq_id, index);
+ #ifdef CONFIG_IWL4965_HT
++		int freed = iwl4965_tx_queue_reclaim(priv, txq_id, index);
++
+ 		if (tid != MAX_TID_COUNT)
+ 			priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;
+ 		if (iwl4965_queue_space(&txq->q) > txq->q.low_mark &&
+@@ -3276,13 +3280,18 @@ static void iwl4965_rx_scan_complete_not
+ 	cancel_delayed_work(&priv->scan_check);
+ 
+ 	IWL_DEBUG_INFO("Scan pass on %sGHz took %dms\n",
+-		       (priv->scan_bands == 2) ? "2.4" : "5.2",
++		       (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) ?
++						"2.4" : "5.2",
+ 		       jiffies_to_msecs(elapsed_jiffies
+ 					(priv->scan_pass_start, jiffies)));
+ 
+-	/* Remove this scanned band from the list
+-	 * of pending bands to scan */
+-	priv->scan_bands--;
++	/* Remove this scanned band from the list of pending
++	 * bands to scan, band G precedes A in order of scanning
++	 * as seen in iwl_bg_request_scan */
++	if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ))
++		priv->scan_bands &= ~BIT(IEEE80211_BAND_2GHZ);
++	else if (priv->scan_bands &  BIT(IEEE80211_BAND_5GHZ))
++		priv->scan_bands &= ~BIT(IEEE80211_BAND_5GHZ);
+ 
+ 	/* If a request to abort was given, or the scan did not succeed
+ 	 * then we reset the scan state machine and terminate,
+@@ -3292,7 +3301,7 @@ static void iwl4965_rx_scan_complete_not
+ 		clear_bit(STATUS_SCAN_ABORTING, &priv->status);
+ 	} else {
+ 		/* If there are more bands on this scan pass reschedule */
+-		if (priv->scan_bands > 0)
++		if (priv->scan_bands)
+ 			goto reschedule;
+ 	}
+ 
+@@ -4635,10 +4644,9 @@ static int iwl4965_get_channels_for_scan
+ 
+ 		scan_ch->channel = ieee80211_frequency_to_channel(channels[i].center_freq);
+ 
+-		ch_info = iwl_get_channel_info(priv, band,
+-					 scan_ch->channel);
++		ch_info = iwl_get_channel_info(priv, band, scan_ch->channel);
+ 		if (!is_channel_valid(ch_info)) {
+-			IWL_DEBUG_SCAN("Channel %d is INVALID for this SKU.\n",
++			IWL_DEBUG_SCAN("Channel %d is INVALID for this band.\n",
+ 				       scan_ch->channel);
+ 			continue;
  		}
+@@ -5830,8 +5838,7 @@ static void iwl4965_bg_request_scan(stru
+ 	scan->tx_cmd.stop_time.life_time = TX_CMD_LIFE_TIME_INFINITE;
+ 
+ 
+-	switch (priv->scan_bands) {
+-	case 2:
++	if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) {
+ 		scan->flags = RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK;
+ 		scan->tx_cmd.rate_n_flags =
+ 				iwl4965_hw_set_rate_n_flags(IWL_RATE_1M_PLCP,
+@@ -5839,17 +5846,13 @@ static void iwl4965_bg_request_scan(stru
+ 
+ 		scan->good_CRC_th = 0;
+ 		band = IEEE80211_BAND_2GHZ;
+-		break;
+-
+-	case 1:
++	} else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ)) {
+ 		scan->tx_cmd.rate_n_flags =
+ 				iwl4965_hw_set_rate_n_flags(IWL_RATE_6M_PLCP,
+ 				RATE_MCS_ANT_B_MSK);
+ 		scan->good_CRC_th = IWL_GOOD_CRC_TH;
+ 		band = IEEE80211_BAND_5GHZ;
+-		break;
+-
+-	default:
++	} else {
+ 		IWL_WARNING("Invalid scan band count\n");
+ 		goto done;
  	}
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig	2008-06-25 15:46:41.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c	2008-06-25 15:47:15.000000000 -0400
+@@ -138,11 +138,8 @@ static void rt2500usb_bbp_write(struct r
+ 	 * Wait until the BBP becomes ready.
+ 	 */
+ 	reg = rt2500usb_bbp_check(rt2x00dev);
+-	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) {
+-		ERROR(rt2x00dev, "PHY_CSR8 register busy. Write failed.\n");
+-		mutex_unlock(&rt2x00dev->usb_cache_mutex);
+-		return;
+-	}
++	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
++		goto exit_fail;
  
-+	/*
-+	 * Kill guardian urb (if required by driver).
-+	 */
-+	if (!test_bit(DRIVER_REQUIRE_BEACON_GUARD, &rt2x00dev->flags))
-+		return;
+ 	/*
+ 	 * Write the data into the BBP.
+@@ -155,6 +152,13 @@ static void rt2500usb_bbp_write(struct r
+ 	rt2500usb_register_write_lock(rt2x00dev, PHY_CSR7, reg);
+ 
+ 	mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++	return;
++
++exit_fail:
++	mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++	ERROR(rt2x00dev, "PHY_CSR8 register busy. Write failed.\n");
+ }
+ 
+ static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev,
+@@ -168,10 +172,8 @@ static void rt2500usb_bbp_read(struct rt
+ 	 * Wait until the BBP becomes ready.
+ 	 */
+ 	reg = rt2500usb_bbp_check(rt2x00dev);
+-	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) {
+-		ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n");
+-		return;
+-	}
++	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
++		goto exit_fail;
+ 
+ 	/*
+ 	 * Write the request into the BBP.
+@@ -186,17 +188,21 @@ static void rt2500usb_bbp_read(struct rt
+ 	 * Wait until the BBP becomes ready.
+ 	 */
+ 	reg = rt2500usb_bbp_check(rt2x00dev);
+-	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) {
+-		ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n");
+-		*value = 0xff;
+-		mutex_unlock(&rt2x00dev->usb_cache_mutex);
+-		return;
+-	}
++	if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
++		goto exit_fail;
+ 
+ 	rt2500usb_register_read_lock(rt2x00dev, PHY_CSR7, &reg);
+ 	*value = rt2x00_get_field16(reg, PHY_CSR7_DATA);
+ 
+ 	mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++	return;
 +
- 	for (i = 0; i < rt2x00dev->bcn->limit; i++) {
- 		priv_bcn = rt2x00dev->bcn->entries[i].priv_data;
- 		usb_kill_urb(priv_bcn->urb);
++exit_fail:
++	mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++	ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n");
++	*value = 0xff;
+ }
+ 
+ static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev,
 diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig	2008-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c	2008-06-13 17:37:35.000000000 -0400
-@@ -2131,6 +2131,7 @@ static struct usb_device_id rt73usb_devi
- 	/* D-Link */
- 	{ USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) },
- 	{ USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) },
-+	{ USB_DEVICE(0x07d1, 0x3c06), USB_DEVICE_DATA(&rt73usb_ops) },
- 	{ USB_DEVICE(0x07d1, 0x3c07), USB_DEVICE_DATA(&rt73usb_ops) },
- 	/* Gemtek */
- 	{ USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) },
-diff -up linux-2.6.25.noarch/drivers/ssb/main.c.orig linux-2.6.25.noarch/drivers/ssb/main.c
---- linux-2.6.25.noarch/drivers/ssb/main.c.orig	2008-06-13 17:33:42.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/ssb/main.c	2008-06-13 17:37:35.000000000 -0400
-@@ -1168,15 +1168,21 @@ EXPORT_SYMBOL(ssb_dma_translation);
- int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask)
- {
- 	struct device *dma_dev = ssb_dev->dma_dev;
-+	int err = 0;
- 
- #ifdef CONFIG_SSB_PCIHOST
--	if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI)
--		return dma_set_mask(dma_dev, mask);
-+	if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI) {
-+		err = pci_set_dma_mask(ssb_dev->bus->host_pci, mask);
-+		if (err)
-+			return err;
-+		err = pci_set_consistent_dma_mask(ssb_dev->bus->host_pci, mask);
-+		return err;
-+	}
- #endif
- 	dma_dev->coherent_dma_mask = mask;
- 	dma_dev->dma_mask = &dma_dev->coherent_dma_mask;
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig	2008-06-25 15:46:41.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c	2008-06-25 15:47:15.000000000 -0400
+@@ -134,11 +134,8 @@ static void rt73usb_bbp_write(struct rt2
+ 	 * Wait until the BBP becomes ready.
+ 	 */
+ 	reg = rt73usb_bbp_check(rt2x00dev);
+-	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) {
+-		ERROR(rt2x00dev, "PHY_CSR3 register busy. Write failed.\n");
+-		mutex_unlock(&rt2x00dev->usb_cache_mutex);
+-		return;
+-	}
++	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
++		goto exit_fail;
+ 
+ 	/*
+ 	 * Write the data into the BBP.
+@@ -151,6 +148,13 @@ static void rt73usb_bbp_write(struct rt2
  
--	return 0;
-+	return err;
+ 	rt73usb_register_write_lock(rt2x00dev, PHY_CSR3, reg);
+ 	mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++	return;
++
++exit_fail:
++	mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++	ERROR(rt2x00dev, "PHY_CSR3 register busy. Write failed.\n");
  }
- EXPORT_SYMBOL(ssb_dma_set_mask);
  
-diff -up linux-2.6.25.noarch/net/mac80211/wext.c.orig linux-2.6.25.noarch/net/mac80211/wext.c
---- linux-2.6.25.noarch/net/mac80211/wext.c.orig	2008-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wext.c	2008-06-13 17:37:35.000000000 -0400
-@@ -496,7 +496,8 @@ static int ieee80211_ioctl_giwap(struct 
- 	sdata = IEEE80211_DEV_TO_SUB_IF(dev);
- 	if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
- 	    sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
--		if (sdata->u.sta.state == IEEE80211_ASSOCIATED) {
-+		if (sdata->u.sta.state == IEEE80211_ASSOCIATED ||
-+		    sdata->u.sta.state == IEEE80211_IBSS_JOINED) {
- 			ap_addr->sa_family = ARPHRD_ETHER;
- 			memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
- 			return 0;
-diff -up linux-2.6.25.noarch/net/mac80211/wme.c.orig linux-2.6.25.noarch/net/mac80211/wme.c
---- linux-2.6.25.noarch/net/mac80211/wme.c.orig	2008-06-13 17:37:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.c	2008-06-13 17:37:35.000000000 -0400
-@@ -673,7 +673,7 @@ int ieee80211_ht_agg_queue_add(struct ie
- #ifdef CONFIG_MAC80211_HT_DEBUG
- 			if (net_ratelimit())
- 				printk(KERN_DEBUG "allocated aggregation queue"
--					" %d tid %d addr %s pool=0x%lX",
-+					" %d tid %d addr %s pool=0x%lX\n",
- 					i, tid, print_mac(mac, sta->addr),
- 					q->qdisc_pool[0]);
- #endif /* CONFIG_MAC80211_HT_DEBUG */
+ static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev,
+@@ -164,11 +168,8 @@ static void rt73usb_bbp_read(struct rt2x
+ 	 * Wait until the BBP becomes ready.
+ 	 */
+ 	reg = rt73usb_bbp_check(rt2x00dev);
+-	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) {
+-		ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n");
+-		mutex_unlock(&rt2x00dev->usb_cache_mutex);
+-		return;
+-	}
++	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
++		goto exit_fail;
+ 
+ 	/*
+ 	 * Write the request into the BBP.
+@@ -184,14 +185,19 @@ static void rt73usb_bbp_read(struct rt2x
+ 	 * Wait until the BBP becomes ready.
+ 	 */
+ 	reg = rt73usb_bbp_check(rt2x00dev);
+-	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) {
+-		ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n");
+-		*value = 0xff;
+-		return;
+-	}
++	if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
++		goto exit_fail;
+ 
+ 	*value = rt2x00_get_field32(reg, PHY_CSR3_VALUE);
+ 	mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++	return;
++
++exit_fail:
++	mutex_unlock(&rt2x00dev->usb_cache_mutex);
++
++	ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n");
++	*value = 0xff;
+ }
+ 
+ static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev,
+diff -up linux-2.6.25.noarch/net/wireless/reg.c.orig linux-2.6.25.noarch/net/wireless/reg.c
+--- linux-2.6.25.noarch/net/wireless/reg.c.orig	2008-06-25 15:46:41.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/reg.c	2008-06-25 15:47:15.000000000 -0400
+@@ -80,6 +80,23 @@ static const struct ieee80211_channel_ra
+ 				     IEEE80211_CHAN_RADAR),
+ };
+ 
++static const struct ieee80211_channel_range ieee80211_EU_channels[] = {
++	/* IEEE 802.11b/g, channels 1..13 */
++	RANGE_PWR(2412, 2472, 20, 6, 0),
++	/* IEEE 802.11a, channel 36*/
++	RANGE_PWR(5180, 5180, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
++	/* IEEE 802.11a, channel 40*/
++	RANGE_PWR(5200, 5200, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
++	/* IEEE 802.11a, channel 44*/
++	RANGE_PWR(5220, 5220, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
++	/* IEEE 802.11a, channels 48..64 */
++	RANGE_PWR(5240, 5320, 23, 6, IEEE80211_CHAN_NO_IBSS |
++				     IEEE80211_CHAN_RADAR),
++	/* IEEE 802.11a, channels 100..140 */
++	RANGE_PWR(5500, 5700, 30, 6, IEEE80211_CHAN_NO_IBSS |
++				     IEEE80211_CHAN_RADAR),
++};
++
+ #define REGDOM(_code)							\
+ 	{								\
+ 		.code = __stringify(_code),				\
+@@ -90,6 +107,7 @@ static const struct ieee80211_channel_ra
+ static const struct ieee80211_regdomain ieee80211_regdoms[] = {
+ 	REGDOM(US),
+ 	REGDOM(JP),
++	REGDOM(EU),
+ };
+ 
+ 




More information about the fedora-extras-commits mailing list