rpms/kernel/devel config-powerpc64, 1.14, 1.15 kernel.spec, 1.672, 1.673 linux-2.6-wireless-pending.patch, 1.50, 1.51 linux-2.6-wireless.patch, 1.38, 1.39 linux-2.6-wireless-revert-22182283.patch, 1.1, NONE

John W. Linville (linville) fedora-extras-commits at redhat.com
Tue Jun 3 21:09:31 UTC 2008


Author: linville

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

Modified Files:
	config-powerpc64 kernel.spec linux-2.6-wireless-pending.patch 
	linux-2.6-wireless.patch 
Removed Files:
	linux-2.6-wireless-revert-22182283.patch 
Log Message:
Upstream wireless fixes from 2008-06-03 ; Upstream wireless updates from 2008-06-03


Index: config-powerpc64
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-powerpc64,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- config-powerpc64	16 May 2008 21:06:38 -0000	1.14
+++ config-powerpc64	3 Jun 2008 21:08:45 -0000	1.15
@@ -35,6 +35,7 @@
 CONFIG_SND_PS3_DEFAULT_START_DELAY=1000
 CONFIG_GELIC_NET=m
 CONFIG_GELIC_WIRELESS=y
+CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE=y
 CONFIG_CBE_THERM=m
 CONFIG_CBE_CPUFREQ=m
 CONFIG_CBE_CPUFREQ_PMI=m


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.672
retrieving revision 1.673
diff -u -r1.672 -r1.673
--- kernel.spec	2 Jun 2008 22:35:27 -0000	1.672
+++ kernel.spec	3 Jun 2008 21:08:46 -0000	1.673
@@ -611,7 +611,6 @@
 
 Patch680: linux-2.6-wireless.patch
 Patch681: linux-2.6-wireless-pending.patch
-Patch682: linux-2.6-wireless-revert-22182283.patch
 Patch690: linux-2.6-at76.patch
 
 Patch700: linux-2.6-nfs-client-mounts-hang.patch
@@ -1132,11 +1131,9 @@
 ApplyPatch linux-2.6-selinux-new-proc-checks.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
-# revert misguided commit 2218228392080f0ca2fc2974604e79f57b12c436
-ApplyPatch linux-2.6-wireless-revert-22182283.patch
 
 # Add misc wireless bits from upstream wireless tree
 ApplyPatch linux-2.6-at76.patch
@@ -1779,6 +1776,12 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
 
 %changelog
+* Tue Jun 03 2008 John W. Linville <linville at redhat.com>
+- Upstream wireless fixes from 2008-06-03
+  (http://marc.info/?l=linux-wireless&m=121252137324941&w=2)
+- Upstream wireless updates from 2008-06-03
+  (http://marc.info/?l=linux-wireless&m=121252503832192&w=2)
+
 * Mon Jun 02 2008 Dave Jones <davej at redhat.com>
 - 2.6.26-rc4-git4
 

linux-2.6-wireless-pending.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.50 -r 1.51 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.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- linux-2.6-wireless-pending.patch	29 May 2008 18:04:14 -0000	1.50
+++ linux-2.6-wireless-pending.patch	3 Jun 2008 21:08:46 -0000	1.51
@@ -1,3 +1,914 @@
+commit 30935069be7faad5323553d1ce6292a33846c2c7
+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.
+    
+    Signed-off-by: Dan Williams <dcbw at redhat.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 78cf07472f0ede8394bacc4bc02354505080cfe1
+Author: Holger Schurig <hs4233 at mail.mn-solutions.de>
+Date:   Mon Jun 2 09:25:05 2008 +0200
+
+    libertas: unify various CF-related defines
+    
+    Signed-off-by: Holger Schurig <hs4233 at mail.mn-solutions.de>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 2d892986e82306b8ad96285fb54b9999523331e0
+Author: Tomas Winkler <tomas.winkler at intel.com>
+Date:   Mon Jun 2 20:31:57 2008 +0300
+
+    mac80211: removing shadowed sband
+    
+    This patch removes doubly defined sband variable
+    
+    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit b97e77e0446f0702de7fa0f5d2c52acf42d0289f
+Author: Tomas Winkler <tomas.winkler at intel.com>
+Date:   Mon Jun 2 20:31:56 2008 +0300
+
+    mac80211: fix unbalanced locking in ieee80211_get_buffered_bc
+    
+    This patch fixes unbalanced locking in ieee80211_get_buffered_bc
+    
+    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 2b2121417eff64125bdb7f322d3b533e06d73dae
+Author: Pavel Roskin <proski at gnu.org>
+Date:   Mon Jun 2 07:54:50 2008 -0400
+
+    mac80211: fix panic when using hardware WEP
+    
+    e039fa4a4195ac4ee895e6f3d1334beed63256fe ("mac80211: move TX info into
+    skb->cb") misplaced code for setting hardware WEP keys.  Move it back.
+    This fixes kernel panic in b43 if WEP is used and hardware encryption
+    is enabled.
+    
+    Signed-off-by: Pavel Roskin <proski at gnu.org>
+    Acked-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 5854a32e6cb672d182ce378c69f0f7470137a062
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Mon Jun 2 09:38:04 2008 +0200
+
+    mac80211: fix rate control initialisation
+    
+    In commit 2e92e6f2c50b4baf85cca968f0e6f1b5c0df7d39 ("mac80211: use rate
+    index in TX control") I forgot to initialise a few new variables to -1 which
+    means that the rate control algorithm is never triggered and 0 is used as
+    the only rate index, effectively fixing the transmit bitrate at the lowest
+    supported.
+    
+    This patch adds the missing initialisation.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Bisected-by: Sitsofe Wheeler <sitsofe at yahoo.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 7fd871edf437362b62ddd807542638cbda8d8a39
+Author: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+Date:   Mon Jun 2 12:49:16 2008 +0900
+
+    PS3: gelic: Add support for ESSID scan
+    
+    This adds the support for ESSID scanning
+    
+    Signed-off-by: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 552fe53f48ef2fd54b031b37d304211cee893ba0
+Author: Johannes Berg <johannes at sipsolutions.net>
+Date:   Fri May 30 21:07:15 2008 +0200
+
+    p54: fix skb->cb tx info conversion
+    
+    When I moved the TX info into skb->cb apparently I forgot to change a
+    few places to put the p54-internal data into info->driver_data rather
+    than skb->cb. This should fix it.
+    
+    Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit f409e348005693016281bf29535c9d0a91b21f77
+Author: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+Date:   Fri May 30 16:52:55 2008 +0900
+
+    PS3: gelic: Deprecate the private ioctls in the gelic driver
+    
+    As the driver has the standard way to handle PSK, deprecate the old
+    interface.
+    
+    Signed-off-by: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 04b2046c856e36c3c9cf382adb2c0bc8ba780cf7
+Author: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+Date:   Fri May 30 16:52:44 2008 +0900
+
+    PS3: gelic: Use the new PMK interface in the gelic driver
+    
+    With the new WEXT flags, the PS3 wireless driver can tell the user space that
+    it would do handle 4-way handshake by itself and needs the PSK without private
+    ioctls.
+    
+    Signed-off-by: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit ba569b4c68f11906da2996ee252bcff0df61cb90
+Author: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+Date:   Fri May 30 16:52:23 2008 +0900
+
+    WEXT: Add support for passing PMK and capability flags to WEXT
+    
+    This defines the flags for setting the PMK to the driver and the
+    capability flag for this so that the user space program can figure out
+    whether the target driver wants to do 4-way hand shake by itself and
+    pass the PMK which is needed before 4-way handshake to the driver.
+    
+    Signed-off-by: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 3df4e2486a58826f16574ead1818daab0edb59df
+Author: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+Date:   Fri May 30 16:27:42 2008 +0900
+
+    PS3: gelic: Kill the static bounce buffer
+    
+    As the bounce buffer is allocaetd dynamically, kill the static bounce buffer.
+    
+    Signed-off-by: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 13de15e71db7a38f02c4d9f642f06541f5acc2b0
+Author: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+Date:   Fri May 30 16:27:24 2008 +0900
+
+    PS3: gelic: Allocate the bounce buffer dynamically
+    
+    Allocate the bouce buffer for the wireless command dynamically.
+    
+    Signed-off-by: Masakazu Mokuno <mokuno at sm.sony.co.jp>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 82a66bbbe96126ca1bc6bc5ded8e67f529bcdfa4
+Author: Tomas Winkler <tomas.winkler at intel.com>
+Date:   Thu May 29 16:35:28 2008 +0800
+
+    iwlwifi: clean iwl4965_mac_config
+    
+    This patch cleans up iwl4965_mac_config.
+    
+    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit d2f18bfd9bc6b51c8bb72b272ecca902a88387d4
+Author: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Date:   Thu May 29 16:35:27 2008 +0800
+
+    iwlwifi: send calibration results as HUGE commands
+    
+    This patch saves memory by reducing the size of the entry in the txq. It
+    was 640 because of the calibration commands. Calibration commands are now
+    sent as HUGE commands (using the extra 1024 bytes at the end of the command
[...16861 lines suppressed...]
  		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-05-29 13:36:48.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.h	2008-05-29 13:38:14.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wme.h.orig	2008-06-03 16:45:20.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.h	2008-06-03 16:45:33.000000000 -0400
 @@ -31,7 +31,7 @@ static inline int WLAN_FC_IS_QOS_DATA(u1
  	return (fc & 0x8C) == 0x88;
  }
@@ -48242,9 +54407,41 @@
  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-05-29 13:36:48.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wpa.c	2008-05-29 13:38:14.000000000 -0400
-@@ -176,22 +176,32 @@ ieee80211_rx_h_michael_mic_verify(struct
+--- linux-2.6.25.noarch/net/mac80211/wpa.c.orig	2008-06-03 16:45:20.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wpa.c	2008-06-03 16:45:59.000000000 -0400
+@@ -79,6 +79,7 @@ ieee80211_tx_h_michael_mic_add(struct ie
+ 	struct sk_buff *skb = tx->skb;
+ 	int authenticator;
+ 	int wpa_test = 0;
++	int tail;
+ 
+ 	fc = tx->fc;
+ 
+@@ -98,16 +99,13 @@ ieee80211_tx_h_michael_mic_add(struct ie
+ 		return TX_CONTINUE;
+ 	}
+ 
+-	if (skb_tailroom(skb) < MICHAEL_MIC_LEN) {
+-		I802_DEBUG_INC(tx->local->tx_expand_skb_head);
+-		if (unlikely(pskb_expand_head(skb, TKIP_IV_LEN,
+-					      MICHAEL_MIC_LEN + TKIP_ICV_LEN,
+-					      GFP_ATOMIC))) {
+-			printk(KERN_DEBUG "%s: failed to allocate more memory "
+-			       "for Michael MIC\n", tx->dev->name);
+-			return TX_DROP;
+-		}
+-	}
++	tail = MICHAEL_MIC_LEN;
++	if (!(tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE))
++		tail += TKIP_ICV_LEN;
++
++	if (WARN_ON(skb_tailroom(skb) < tail ||
++		    skb_headroom(skb) < TKIP_IV_LEN))
++		return TX_DROP;
+ 
+ #if 0
+ 	authenticator = fc & IEEE80211_FCTL_FROMDS; /* FIX */
+@@ -176,59 +174,65 @@ ieee80211_rx_h_michael_mic_verify(struct
  	skb_trim(skb, skb->len - MICHAEL_MIC_LEN);
  
  	/* update IV in key information to be able to detect replays */
@@ -48263,8 +54460,9 @@
  {
  	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
  	struct ieee80211_key *key = tx->key;
+-	int hdrlen, len, tailneed;
 +	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
- 	int hdrlen, len, tailneed;
++	int hdrlen, len, tail;
  	u16 fc;
  	u8 *pos;
  
@@ -48275,13 +54473,33 @@
 +	    !(tx->key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV)) {
 +		/* hwaccel - with no need for preallocated room for IV/ICV */
 +		info->control.hw_key = &tx->key->conf;
-+		return TX_CONTINUE;
++		return 0;
 +	}
 +
  	fc = le16_to_cpu(hdr->frame_control);
  	hdrlen = ieee80211_get_hdrlen(fc);
  	len = skb->len - hdrlen;
-@@ -214,21 +224,21 @@ static int tkip_encrypt_skb(struct ieee8
+ 
+ 	if (tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)
+-		tailneed = 0;
++		tail = 0;
+ 	else
+-		tailneed = TKIP_ICV_LEN;
++		tail = TKIP_ICV_LEN;
+ 
+-	if ((skb_headroom(skb) < TKIP_IV_LEN ||
+-	     skb_tailroom(skb) < tailneed)) {
+-		I802_DEBUG_INC(tx->local->tx_expand_skb_head);
+-		if (unlikely(pskb_expand_head(skb, TKIP_IV_LEN, tailneed,
+-					      GFP_ATOMIC)))
+-			return -1;
+-	}
++	if (WARN_ON(skb_tailroom(skb) < tail ||
++		    skb_headroom(skb) < TKIP_IV_LEN))
++		return -1;
+ 
+ 	pos = skb_push(skb, TKIP_IV_LEN);
+ 	memmove(pos, pos + TKIP_IV_LEN, hdrlen);
  	pos += hdrlen;
  
  	/* Increase IV for the frame */
@@ -48310,7 +54528,7 @@
  		return 0;
  	}
  
-@@ -246,28 +256,16 @@ ieee80211_tx_result
+@@ -246,28 +250,16 @@ ieee80211_tx_result
  ieee80211_crypto_tkip_encrypt(struct ieee80211_tx_data *tx)
  {
  	struct sk_buff *skb = tx->skb;
@@ -48341,7 +54559,7 @@
  				return TX_DROP;
  		}
  	}
-@@ -429,16 +427,27 @@ static inline int ccmp_hdr2pn(u8 *pn, u8
+@@ -429,16 +421,27 @@ static inline int ccmp_hdr2pn(u8 *pn, u8
  }
  
  
@@ -48351,8 +54569,9 @@
  {
  	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
  	struct ieee80211_key *key = tx->key;
+-	int hdrlen, len, tailneed;
 +	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
- 	int hdrlen, len, tailneed;
++	int hdrlen, len, tail;
  	u16 fc;
  	u8 *pos, *pn, *b_0, *aad, *scratch;
  	int i;
@@ -48365,13 +54584,36 @@
 +		/* hwaccel - with no need for preallocated room for CCMP "
 +		 * header or MIC fields */
 +		info->control.hw_key = &tx->key->conf;
-+		return TX_CONTINUE;
++		return 0;
 +	}
 +
  	scratch = key->u.ccmp.tx_crypto_buf;
  	b_0 = scratch + 3 * AES_BLOCK_LEN;
  	aad = scratch + 4 * AES_BLOCK_LEN;
-@@ -478,7 +487,7 @@ static int ccmp_encrypt_skb(struct ieee8
+@@ -448,17 +451,13 @@ static int ccmp_encrypt_skb(struct ieee8
+ 	len = skb->len - hdrlen;
+ 
+ 	if (key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)
+-		tailneed = 0;
++		tail = 0;
+ 	else
+-		tailneed = CCMP_MIC_LEN;
++		tail = CCMP_MIC_LEN;
+ 
+-	if ((skb_headroom(skb) < CCMP_HDR_LEN ||
+-	     skb_tailroom(skb) < tailneed)) {
+-		I802_DEBUG_INC(tx->local->tx_expand_skb_head);
+-		if (unlikely(pskb_expand_head(skb, CCMP_HDR_LEN, tailneed,
+-					      GFP_ATOMIC)))
+-			return -1;
+-	}
++	if (WARN_ON(skb_tailroom(skb) < tail ||
++		    skb_headroom(skb) < CCMP_HDR_LEN))
++		return -1;
+ 
+ 	pos = skb_push(skb, CCMP_HDR_LEN);
+ 	memmove(pos, pos + CCMP_HDR_LEN, hdrlen);
+@@ -478,7 +477,7 @@ static int ccmp_encrypt_skb(struct ieee8
  
  	if (key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) {
  		/* hwaccel - with preallocated room for CCMP header */
@@ -48380,7 +54622,7 @@
  		return 0;
  	}
  
-@@ -495,28 +504,16 @@ ieee80211_tx_result
+@@ -495,28 +494,16 @@ ieee80211_tx_result
  ieee80211_crypto_ccmp_encrypt(struct ieee80211_tx_data *tx)
  {
  	struct sk_buff *skb = tx->skb;
@@ -48412,8 +54654,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-05-29 13:36:48.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/core.c	2008-05-29 13:38:14.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/core.c.orig	2008-06-03 16:45:20.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/core.c	2008-06-03 16:45:33.000000000 -0400
 @@ -143,8 +143,11 @@ void cfg80211_put_dev(struct cfg80211_re
  int cfg80211_dev_rename(struct cfg80211_registered_device *rdev,
  			char *newname)
@@ -48477,8 +54719,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-05-29 13:36:48.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/radiotap.c	2008-05-29 13:38:14.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/radiotap.c.orig	2008-06-03 16:45:20.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/radiotap.c	2008-06-03 16:45:33.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.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- linux-2.6-wireless.patch	29 May 2008 18:04:14 -0000	1.38
+++ linux-2.6-wireless.patch	3 Jun 2008 21:08:46 -0000	1.39
@@ -1,890 +1,270 @@
-commit c97c23e38625f59e3e9869664eeeb0cab1822948
-Author: Senthil Balasubramanian <senthilkumar at atheros.com>
-Date:   Wed May 28 23:15:32 2008 +0530
-
-    mac80211: fix alignment issue with compare_ether_addr()
-    
-    This addresses an alignment issue with compare_ether_addr().
-    The addresses passed to compare_ether_addr should be two bytes aligned.
-    It may function properly in x86 platform. However may not work properly
-    on IA-64 or ARM processor.
-    
-    This also fixes a typo in mlme.c where the sk_buff struct name is incorect.
-    Though sizeof() works for any incorrect structure pointer name as its just
-    a pointer length that we want, lets just fix it.
-    
-    Signed-off-by: Senthil Balasubramanian <senthilkumar at atheros.com>
-    Signed-off-by: Luis R. Rodriguez <lrodriguez at atheros.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 70d251b24c44ab2fcba1807a5206e844cf10eb38
-Author: Senthil Balasubramanian <senthilkumar at atheros.com>
-Date:   Wed May 28 20:08:12 2008 +0530
-
-    mac80211: Fix for NULL pointer dereference in sta_info_get()
-    
-    This addresses a NULL pointer dereference in sta_info_get().
-    TID and sta_info are extracted in ADDBA Timer expiry function
-    through the timer handler's argument.
-    
-    The problem is extracging the TID (which was stored in
-    timer_to_tid[] array of type "u8") through "int *" typecast which
-    may also yield unwanted bytes for the MSB of TID that results
-    in incorrect sta_info and ieee80211_local pointers.
-    
-    ieee80211_local pointer is NULL as illustrated below, it crashes in
-    sta_info_get(). The problem started when extracting ieee80211_local
-    pointer out of sta_info iteself and eventually crashed in
-    stat_info_get().
-    
-    The proper way to fix is to change the data type of TID to u8
-    instead of u16. However changing all the occurences requires
-    some prototype changes as well. We should fix this in upcoming
-    patches.
-    
-    Signed-off-by: Senthil Balasubramanian <senthilkumar at atheros.com>
-    Signed-off-by: Luis Rodriguez <lrodriguez at atheros.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit f6d97104890203ba9c2cf8e34894c4c8e64cb880
-Author: Yi Zhu <yi.zhu at intel.com>
-Date:   Tue May 27 17:50:50 2008 +0300
+commit c2b25f240163c9d3a7a391747f996da9e18a067d
+Author: Kirill A. Shutemov <kirill at shutemov.name>
+Date:   Tue Jun 3 13:48:08 2008 -0400
 
-    mac80211: fix a typo in ieee80211_handle_filtered_frame comment
+    wireless.h: improve userland include-ability
     
-    fix a typo in ieee80211_handle_filtered_frame comment
+    This patch partially reverts commit 2218228392080f0ca2fc2974604e79f57b12c436
+    ("Make linux/wireless.h be able to compile") while still making it
+    easier to include wireless.h in userland apps.
     
-    Signed-off-by: Yi Zhu <yi.zhu at intel.com>
+    Signed-off-by: Kirill A. Shutemov <kirill at shutemov.name>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit a7624837261b55259d4a88309fd88529643fbb80
-Author: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
-Date:   Tue May 27 11:15:08 2008 +0300
+commit 9aec7e67335224ff499ea8c53028c8483432194e
+Author: Felix Homann <fexpop at onlinehome.de>
+Date:   Thu May 29 00:36:45 2008 -0700
 
-    rndis_wlan: add missing range check for power_output modparam
+    USB ID for Philips CPWUA054/00 Wireless USB Adapter 11g
     
-    Range check for power_output were missing.
+    Enable the Philips CPWUA054/00 in p54usb.
     
-    Signed-off-by: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
+    Cc: Jeff Garzik <jeff at garzik.org>
+    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 135a5484c3e0c6710035630b630cef3c856b78e2
-Author: Guy Cohen <guy.cohen at intel.com>
-Date:   Tue May 27 11:29:35 2008 +0800
+commit 1867a00ea8b4e70f413c3d2eca5d6236cacf1138
+Author: Michael Buesch <mb at bu3sch.de>
+Date:   Mon Jun 2 16:15:23 2008 +0200
 
-    iwlwifi: fix rate scale TLC column selection bug
-    
-    This patch fixes a case that a wrong maximal rate is selected when
-    searching for better configurations.
+    ssb: Fix context assertion in ssb_pcicore_dev_irqvecs_enable
     
-    Signed-off-by: Guy Cohen <guy.cohen at intel.com>
-    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 47cfd463962ab0748ecbad761ff6ef2916b54aac
-Author: Guy Cohen <guy.cohen at intel.com>
-Date:   Tue May 27 11:29:34 2008 +0800
-
-    iwlwifi: fix exit from stay_in_table state
-    
-    When exiting from stay in table state (e.g. timer expiration),
-    all the statistics are reset and the RS flow should not continue
-    but only after enough statistics are collected again.
+    This fixes a context assertion in ssb that makes b44 print
+    out warnings on resume.
     
-    Signed-off-by: Guy Cohen <guy.cohen at intel.com>
-    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 4364623cb79d02945ace7a4faa1f11e617dde198
-Author: Scott Ashcroft <scott.ashcroft at talk21.com>
-Date:   Tue May 27 00:06:15 2008 +0300
-
-    rndis_wlan: Make connections to TKIP PSK networks work
-    
-    This patch allows the rndis_wlan driver to connect to TKIP PSK
-    networks.  It uses the ASSOCIATION_INFORMATION RNDIS call to pull back
-    the IEs and sends them back to userspace using wireless events. Tested
-    on a few wireless networks I have access to. Based on the similar
-    code in ndiswrapper.
-    
-    Signed-off-by: Scott Ashcroft <scott.ashcroft at talk21.com>
-    [edit: cleanups]
-    Signed-off-by: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit d4231ca3e162387a2b6964dacaa83604e065c4e9
-Author: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
-Date:   Fri May 23 10:15:26 2008 -0700
-
-    mac80211 : Fixes the status message for iwconfig
-    
-    iwconfig was showing incorrect status messages when disassociated.
-    Patch fixes this by always checking for association status in
-    ioctl calls for getting ap address.
+    This fixes the following kernel oops:
+    http://www.kerneloops.org/oops.php?number=12732
+    http://www.kerneloops.org/oops.php?number=11410
     
-    Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
-    Acked-by: Dan Williams <dcbw at redhat.com>
+    Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 633257d3db547e7553500f05e0aa2692c876d7a5
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Fri May 23 18:14:02 2008 +0200
-
-    rt2x00: Use atomic interface iteration in irq context
-    
-    rt2x00lib_beacondone() is called from interrupt context,
-    this means we cannot use the mac80211 interface iterator
-    that uses the rtnl lock (since that uses a mutex which can sleep).
-    Instead we should use the atomic mac80211 interface iterator.
-    
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
+commit f67d115e318e0b4f596e61f89b84c44691dc7538
+Author: Holger Schurig <hs4233 at mail.mn-solutions.de>
+Date:   Fri May 30 14:53:22 2008 +0200
 
-commit f06a0f486dc8bbe8808f46b81fbfd73241529fae
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Fri May 23 18:13:56 2008 +0200
-
-    rt2x00: Reset antenna RSSI after switch
-    
-    When the antenna configuration has changed we should reset
-    the antenna RSSI value. Otherwise the value will be influenced
-    by the previous configuration quality which in turn will affect
-    the antenna diversity.
+    libertas: fix command size for CMD_802_11_SUBSCRIBE_EVENT
     
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 2088d4174e4292aef892bb7095fc3c3ea5bd117c
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Fri May 23 18:13:49 2008 +0200
-
-    rt2x00: Don't count retries as failure
-    
-    Link quality estimation became quite low for all rt2x00 drivers
-    because the number of retries it took to send the frame were
-    counted as failure.
-    This does not correspond to the legacy driver link quality calculation,
-    by not counting it we will send somewhat more optimistic values to
-    mac80211.
+    The size was two small by two bytes.
     
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+    Signed-off-by: Holger Schurig
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 0f3e63a55b1a7b695a79bf3eec2ff5ab6b336037
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date:   Fri May 23 18:13:41 2008 +0200
+commit ff9c7e3ef7fbcf7bf145f6d48054934fd7852141
+Author: Dan Williams <dcbw at redhat.com>
+Date:   Thu May 29 14:38:28 2008 -0400
 
-    rt2x00: Fix memleak in tx() path
+    ipw2200: expire and use oldest BSS on adhoc create
     
-    When the tx() handler runs while the device has disapeared,
-    we did return NETDEV_TX_OK but didn't free the skb.
+    If there are no networks on the free list, expire the oldest one when
+    creating a new adhoc network.  Because ipw2200 and the ieee80211 stack
+    don't actually cull old networks and place them back on the free list
+    unless they are needed for new probe responses, over time the free list
+    would become empty and creating an adhoc network would fail due to the !
+    list_empty(...) check.
     
-    Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 9381be059bf5831d259e8735005cfa35b7488543
-Author: Tomas Winkler <tomas.winkler at intel.com>
-Date:   Fri May 23 01:36:36 2008 +0300
-
-    mac80211: reorder channel and freq reporting in wext scan report
-    
-    This patch switch order of channel and freq (SIOCGIWFREQ) reports
-    in scan results in order to overcome wpa_supplicant inability
-    to handle channel numbers in 5.2Ghz band.
-    Wext reporting channel number is ambiguous as channels 7-12 (802.11j)
-    exist on both bands.
-    
-    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
-    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-    Acked-by: Dan Williams <dcbw at redhat.com>
+    Signed-off-by: Dan Williams <dcbw at redhat.com>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 3bf0a32e22fedc0b46443699db2d61ac2a883ac4
-Author: Michael Buesch <mb at bu3sch.de>
-Date:   Thu May 22 16:32:16 2008 +0200
+commit ef81633f881c715793a57a1d7aeccc72e465d035
+Author: Andrew Morton <akpm at linux-foundation.org>
+Date:   Wed May 28 12:40:39 2008 -0700
 
-    b43: Fix controller restart crash
+    airo warning fix
     
-    This fixes a kernel crash on rmmod, in the case where the controller
-    was restarted before doing the rmmod.
+    WARNING: space prohibited between function name and open parenthesis '('
+    #22: FILE: drivers/net/wireless/airo.c:2907:
+    +	while ((IN4500 (ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) {
     
-    Signed-off-by: Michael Buesch <mb at bu3sch.de>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 167ad6f7a2b2ae58dfaa46620b9b3212594f38e6
-Author: Tomas Winkler <tomas.winkler at intel.com>
-Date:   Wed May 21 18:17:05 2008 +0300
-
-    mac80211: fix ieee80211_rx_bss_put/get imbalance
-    
-    This patch fixes iee80211_rx_bss_put/get imbalance
-    introduced by 'mac80211: enable IBSS merging' patch.
+    total: 0 errors, 1 warnings, 8 lines checked
     
-    Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 679fda1aa49fddf938bb699df7867c01988371ab
-Author: Nicolas Kaiser <nikai at nikai.net>
-Date:   Tue May 20 18:42:54 2008 +0200
-
-    net/mac80211: always true conditionals
+    ./patches/wireless-airo-waitbusy-wont-delay.patch has style problems, please review.  If any of these errors
+    are false positives report them to the maintainer, see
+    CHECKPATCH in MAINTAINERS.
     
-    Correct always true conditionals.
+    Please run checkpatch prior to sending patches
     
-    Signed-off-by: Nicolas Kaiser <nikai at nikai.net>
+    Cc: Dan Williams <dcbw at redhat.com>
+    Cc: Roel Kluin <roel.kluin at gmail.com>
+    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit 6b4bec010d888c5b8c731aa596635cd83dd3416c
+commit 8679a8d704ab8c1083abb13b0de49df22f110e64
 Author: Michael Buesch <mb at bu3sch.de>
-Date:   Tue May 20 12:16:28 2008 +0200
+Date:   Thu May 22 17:06:36 2008 +0200
 
-    b43: Upload both beacon templates on initial load
+    b43legacy: Fix controller restart crash
     
-    This updates the beacon template code to upload both templates,
-    if we never uploaded one before.
+    This fixes a kernel crash on rmmod, in the case where the controller
+    was restarted before doing the rmmod.
     
     Signed-off-by: Michael Buesch <mb at bu3sch.de>
     Signed-off-by: John W. Linville <linville at tuxdriver.com>
 
-commit bc1b1fb2753873314ad1bf56bc7d5b8dd447cd2a
-Author: Andrea Merello <andrea.merello at gmail.com>
-Date:   Sat May 10 13:34:16 2008 +0200
-
-    rtl8180: fix wrong parameter in grf5101_rf_set_channel
-    
-    The grf5101 RF code needs to invoke grf5101_write_phy_antenna every time the
-    channel is being switch.
-    
-    This should be done passing the channel number to that function.
-    Incorrectly we were passing the same value that is written on the
-    channel RF register.
-    This may cause problems when operating on ch 14.
-    
-    This patch fixes it.
-    
-    Thanks to Alessandro Di Marco who found this issue!
-    
-    Signed-off-by: Andrea Merello <andreamrl at tiscali.it>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 0a0ab41e833c8184c6d4ab663f137d5bbd50e049
-Author: Andrea Merello <andrea.merello at gmail.com>
-Date:   Sat May 10 13:32:34 2008 +0200
-
-    rtl8180: fix wrong parameter in max2820_rf_set_channel
-    
-    The max2820 RF code needs to invoke max2820_write_phy_antenna every time the
-    channel is being switch.
-    
-    This should be done passing the channel number to that function.
-    Incorrectly we were passing the same value that is written on the
-    channel RF register.
-    This may cause problems when operating on ch 14.
-    
-    This patch fixes it.
-    
-    Thanks to Alessandro Di Marco who found this issue!
-    
-    Signed-off-by: Andrea Merello <andreamrl at tiscali.it>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 0823b2c3c10a4db21cd39a8c72cda96b4dd6d914
-Author: Andrea Merello <andreamrl at tiscali.it>
-Date:   Sat May 10 13:30:12 2008 +0200
-
-    rtl8180: fix wrong parameter in sa2400_rf_set_channel
-    
-    The sa2400 RF code needs to invoke sa2400_write_phy_antenna every time the
-    channel is being switch.
-    
-    This should be done passing the channel number to that function.
-    Incorrectly we were passing the same value that is written on the
-    channel RF register.
-    This may cause problems when operating on ch 14.
-    
-    This patch fixes it.
-    
-    Thanks to Alessandro Di Marco who found this issue!
-    
-    Signed-off-by: Andrea Merello <andreamrl at tiscali.it>
-    Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 6f6c218f68e632e4596cae6e6d43658d26a5e0fe
-Author: John W. Linville <linville at tuxdriver.com>
-Date:   Tue May 27 17:01:55 2008 -0400
-
-    rtl8180: avoid NULL dereference in max2820_rf_set_channel
-    
-    The static function max2820_rf_set_channel is called with conf == NULL
-    within its compilation unit.  Originally this defaulted to b/g channel
-    1, but "cfg80211 API for channels/bitrates, mac80211 and driver
-    conversion" (commit 8318d78a44d49ac1edf2bdec7299de3617c4232e) mistakenly
-    dropped this check.  This patch minimally restores the expected
-    behavior.
-    
-    Reported-by: Colin Lai <colin_sh at 163.com>
-    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-05-29 13:36:46.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h	2008-05-29 13:37:03.000000000 -0400
-@@ -737,6 +737,7 @@ struct b43_wl {
- 	struct ieee80211_tx_control beacon_txctl;
- 	bool beacon0_uploaded;
- 	bool beacon1_uploaded;
-+	bool beacon_templates_virgin; /* Never wrote the templates? */
- 	struct work_struct beacon_update_trigger;
- 
- 	/* The current QOS parameters for the 4 queues.
-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-05-29 13:36:46.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c	2008-05-29 13:37:03.000000000 -0400
-@@ -1544,6 +1544,30 @@ static void b43_write_probe_resp_templat
- 	kfree(probe_resp_data);
- }
- 
-+static void b43_upload_beacon0(struct b43_wldev *dev)
-+{
-+	struct b43_wl *wl = dev->wl;
-+
-+	if (wl->beacon0_uploaded)
-+		return;
-+	b43_write_beacon_template(dev, 0x68, 0x18);
-+	/* FIXME: Probe resp upload doesn't really belong here,
-+	 *        but we don't use that feature anyway. */
-+	b43_write_probe_resp_template(dev, 0x268, 0x4A,
-+				      &__b43_ratetable[3]);
-+	wl->beacon0_uploaded = 1;
-+}
-+
-+static void b43_upload_beacon1(struct b43_wldev *dev)
-+{
-+	struct b43_wl *wl = dev->wl;
-+
-+	if (wl->beacon1_uploaded)
-+		return;
-+	b43_write_beacon_template(dev, 0x468, 0x1A);
-+	wl->beacon1_uploaded = 1;
-+}
-+
- static void handle_irq_beacon(struct b43_wldev *dev)
+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-03 16:21:38.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/airo.c	2008-06-03 16:22:29.000000000 -0400
+@@ -2905,7 +2905,7 @@ EXPORT_SYMBOL(init_airo_card);
+ 
+ static int waitbusy (struct airo_info *ai) {
+ 	int delay = 0;
+-	while ((IN4500 (ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) {
++	while ((IN4500(ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) {
+ 		udelay (10);
+ 		if ((++delay % 20) == 0)
+ 			OUT4500(ai, EVACK, EV_CLEARCOMMANDBUSY);
+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-03 16:21:38.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c	2008-06-03 16:22:29.000000000 -0400
+@@ -3039,7 +3039,6 @@ static void b43legacy_set_pretbtt(struct
+ /* Locking: wl->mutex */
+ static void b43legacy_wireless_core_exit(struct b43legacy_wldev *dev)
  {
- 	struct b43_wl *wl = dev->wl;
-@@ -1568,24 +1592,27 @@ static void handle_irq_beacon(struct b43
- 		return;
- 	}
- 
--	if (!beacon0_valid) {
--		if (!wl->beacon0_uploaded) {
--			b43_write_beacon_template(dev, 0x68, 0x18);
--			b43_write_probe_resp_template(dev, 0x268, 0x4A,
--						      &__b43_ratetable[3]);
--			wl->beacon0_uploaded = 1;
--		}
-+	if (unlikely(wl->beacon_templates_virgin)) {
-+		/* We never uploaded a beacon before.
-+		 * Upload both templates now, but only mark one valid. */
-+		wl->beacon_templates_virgin = 0;
-+		b43_upload_beacon0(dev);
-+		b43_upload_beacon1(dev);
- 		cmd = b43_read32(dev, B43_MMIO_MACCMD);
- 		cmd |= B43_MACCMD_BEACON0_VALID;
- 		b43_write32(dev, B43_MMIO_MACCMD, cmd);
--	} else if (!beacon1_valid) {
--		if (!wl->beacon1_uploaded) {
--			b43_write_beacon_template(dev, 0x468, 0x1A);
--			wl->beacon1_uploaded = 1;
-+	} else {
-+		if (!beacon0_valid) {
-+			b43_upload_beacon0(dev);
-+			cmd = b43_read32(dev, B43_MMIO_MACCMD);
-+			cmd |= B43_MACCMD_BEACON0_VALID;
-+			b43_write32(dev, B43_MMIO_MACCMD, cmd);
-+		} else if (!beacon1_valid) {
-+			b43_upload_beacon1(dev);
-+			cmd = b43_read32(dev, B43_MMIO_MACCMD);
-+			cmd |= B43_MACCMD_BEACON1_VALID;
-+			b43_write32(dev, B43_MMIO_MACCMD, cmd);
- 		}
--		cmd = b43_read32(dev, B43_MMIO_MACCMD);
--		cmd |= B43_MACCMD_BEACON1_VALID;
--		b43_write32(dev, B43_MMIO_MACCMD, cmd);
- 	}
- }
- 
-@@ -4073,6 +4100,9 @@ static int b43_op_start(struct ieee80211
- 	wl->filter_flags = 0;
- 	wl->radiotap_enabled = 0;
- 	b43_qos_clear(wl);
-+	wl->beacon0_uploaded = 0;
-+	wl->beacon1_uploaded = 0;
-+	wl->beacon_templates_virgin = 1;
- 
- 	/* First register RFkill.
- 	 * LEDs that are registered later depend on it. */
-@@ -4241,7 +4271,9 @@ static void b43_chip_reset(struct work_s
- 			goto out;
+-	struct b43legacy_wl *wl = dev->wl;
+ 	struct b43legacy_phy *phy = &dev->phy;
+ 	u32 macctl;
+ 
+@@ -3054,12 +3053,6 @@ static void b43legacy_wireless_core_exit
+ 	macctl |= B43legacy_MACCTL_PSM_JMP0;
+ 	b43legacy_write32(dev, B43legacy_MMIO_MACCTL, macctl);
+ 
+-	mutex_unlock(&wl->mutex);
+-	/* Must unlock as it would otherwise deadlock. No races here.
+-	 * Cancel possibly pending workqueues. */
+-	cancel_work_sync(&dev->restart_work);
+-	mutex_lock(&wl->mutex);
+-
+ 	b43legacy_leds_exit(dev);
+ 	b43legacy_rng_exit(dev->wl);
+ 	b43legacy_pio_free(dev);
+@@ -3486,6 +3479,8 @@ static void b43legacy_chip_reset(struct 
  		}
  	}
--      out:
-+out:
+ out:
 +	if (err)
 +		wl->current_dev = NULL; /* Failed to init the dev. */
  	mutex_unlock(&wl->mutex);
  	if (err)
- 		b43err(wl, "Controller restart FAILED\n");
-@@ -4382,9 +4414,11 @@ static void b43_one_core_detach(struct s
- 	struct b43_wldev *wldev;
- 	struct b43_wl *wl;
+ 		b43legacyerr(wl, "Controller restart FAILED\n");
+@@ -3618,9 +3613,11 @@ static void b43legacy_one_core_detach(st
+ 	struct b43legacy_wldev *wldev;
+ 	struct b43legacy_wl *wl;
  
 +	/* Do not cancel ieee80211-workqueue based work here.
-+	 * See comment in b43_remove(). */
++	 * See comment in b43legacy_remove(). */
 +
  	wldev = ssb_get_drvdata(dev);
  	wl = wldev->wl;
 -	cancel_work_sync(&wldev->restart_work);
- 	b43_debugfs_remove_device(wldev);
- 	b43_wireless_core_detach(wldev);
+ 	b43legacy_debugfs_remove_device(wldev);
+ 	b43legacy_wireless_core_detach(wldev);
  	list_del(&wldev->list);
-@@ -4569,6 +4603,10 @@ static void b43_remove(struct ssb_device
- 	struct b43_wl *wl = ssb_get_devtypedata(dev);
- 	struct b43_wldev *wldev = ssb_get_drvdata(dev);
+@@ -3789,6 +3786,10 @@ static void b43legacy_remove(struct ssb_
+ 	struct b43legacy_wl *wl = ssb_get_devtypedata(dev);
+ 	struct b43legacy_wldev *wldev = ssb_get_drvdata(dev);
  
 +	/* We must cancel any work here before unregistering from ieee80211,
 +	 * as the ieee80211 unreg will destroy the workqueue. */
 +	cancel_work_sync(&wldev->restart_work);
 +
- 	B43_WARN_ON(!wl);
+ 	B43legacy_WARN_ON(!wl);
  	if (wl->current_dev == wldev)
  		ieee80211_unregister_hw(wl->hw);
-diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
---- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c.orig	2008-05-29 13:36:46.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c	2008-05-29 13:37:03.000000000 -0400
-@@ -1162,7 +1162,6 @@ static s32 rs_get_best_rate(struct iwl_p
- 
- 			/* Higher rate not available, use the original */
- 			} else {
--				new_rate = rate;
- 				break;
- 			}
- 		}
-@@ -2009,7 +2008,7 @@ static void rs_rate_scale_perform(struct
- 	 * 2)  Not just finishing up a search
- 	 * 3)  Allowing a new search
- 	 */
--	if (!update_lq && !done_search && !lq_sta->stay_in_tbl) {
-+	if (!update_lq && !done_search && !lq_sta->stay_in_tbl && window->counter) {
- 		/* Save current throughput to compare with "search" throughput*/
- 		lq_sta->last_tpt = current_tpt;
- 
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rndis_wlan.c.orig linux-2.6.25.noarch/drivers/net/wireless/rndis_wlan.c
---- linux-2.6.25.noarch/drivers/net/wireless/rndis_wlan.c.orig	2008-05-29 11:04:14.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rndis_wlan.c	2008-05-29 13:37:03.000000000 -0400
-@@ -116,6 +116,7 @@ MODULE_PARM_DESC(workaround_interval,
- #define OID_802_11_ENCRYPTION_STATUS		ccpu2(0x0d01011b)
- #define OID_802_11_ADD_KEY			ccpu2(0x0d01011d)
- #define OID_802_11_REMOVE_KEY			ccpu2(0x0d01011e)
-+#define OID_802_11_ASSOCIATION_INFORMATION	ccpu2(0x0d01011f)
- #define OID_802_11_PMKID			ccpu2(0x0d010123)
- #define OID_802_11_NETWORK_TYPES_SUPPORTED	ccpu2(0x0d010203)
- #define OID_802_11_NETWORK_TYPE_IN_USE		ccpu2(0x0d010204)
-@@ -271,6 +272,26 @@ struct ndis_config_param {
- 	__le32 value_length;
- } __attribute__((packed));
- 
-+struct ndis_80211_assoc_info {
-+	__le32 length;
-+	__le16 req_ies;
-+	struct req_ie {
-+		__le16 capa;
-+		__le16 listen_interval;
-+		u8 cur_ap_address[6];
-+	} req_ie;
-+	__le32 req_ie_length;
-+	__le32 offset_req_ies;
-+	__le16 resp_ies;
-+	struct resp_ie {
-+		__le16 capa;
-+		__le16 status_code;
-+		__le16 assoc_id;
-+	} resp_ie;
-+	__le32 resp_ie_length;
-+	__le32 offset_resp_ies;
-+} __attribute__((packed));
-+
- /* these have to match what is in wpa_supplicant */
- enum wpa_alg { WPA_ALG_NONE, WPA_ALG_WEP, WPA_ALG_TKIP, WPA_ALG_CCMP };
- enum wpa_cipher { CIPHER_NONE, CIPHER_WEP40, CIPHER_TKIP, CIPHER_CCMP,
-@@ -674,6 +695,12 @@ static int get_bssid(struct usbnet *usbd
- 	return ret;
- }
- 
-+static int get_association_info(struct usbnet *usbdev,
-+			struct ndis_80211_assoc_info *info, int len)
-+{
-+	return rndis_query_oid(usbdev, OID_802_11_ASSOCIATION_INFORMATION,
-+				info, &len);
-+}
- 
- static int is_associated(struct usbnet *usbdev)
- {
-@@ -2182,11 +2209,40 @@ static void rndis_wext_worker(struct wor
- 	struct usbnet *usbdev = priv->usbdev;
- 	union iwreq_data evt;
- 	unsigned char bssid[ETH_ALEN];
--	int ret;
-+	struct ndis_80211_assoc_info *info;
-+	int assoc_size = sizeof(*info) + IW_CUSTOM_MAX + 32;
-+	int ret, offset;
- 
- 	if (test_and_clear_bit(WORK_CONNECTION_EVENT, &priv->work_pending)) {
--		ret = get_bssid(usbdev, bssid);
-+		info = kzalloc(assoc_size, GFP_KERNEL);
-+		if (!info)
-+			goto get_bssid;
-+
-+		/* Get association info IEs from device and send them back to
-+		 * userspace. */
-+		ret = get_association_info(usbdev, info, assoc_size);
-+		if (!ret) {
-+			evt.data.length = le32_to_cpu(info->req_ie_length);
-+			if (evt.data.length > 0) {
-+				offset = le32_to_cpu(info->offset_req_ies);
-+				wireless_send_event(usbdev->net,
-+					IWEVASSOCREQIE, &evt,
-+					(char *)info + offset);
+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-03 16:17:36.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/ipw2200.c	2008-06-03 16:22:29.000000000 -0400
+@@ -7558,8 +7558,31 @@ static int ipw_associate(void *data)
+ 	    priv->ieee->iw_mode == IW_MODE_ADHOC &&
+ 	    priv->config & CFG_ADHOC_CREATE &&
+ 	    priv->config & CFG_STATIC_ESSID &&
+-	    priv->config & CFG_STATIC_CHANNEL &&
+-	    !list_empty(&priv->ieee->network_free_list)) {
++	    priv->config & CFG_STATIC_CHANNEL) {
++		/* Use oldest network if the free list is empty */
++		if (list_empty(&priv->ieee->network_free_list)) {
++			struct ieee80211_network *oldest = NULL;
++			struct ieee80211_network *target;
++			DECLARE_MAC_BUF(mac);
++
++			list_for_each_entry(target, &priv->ieee->network_list, list) {
++				if ((oldest == NULL) ||
++				    (target->last_scanned < oldest->last_scanned))
++					oldest = target;
 +			}
 +
-+			evt.data.length = le32_to_cpu(info->resp_ie_length);
-+			if (evt.data.length > 0) {
-+				offset = le32_to_cpu(info->offset_resp_ies);
-+				wireless_send_event(usbdev->net,
-+					IWEVASSOCRESPIE, &evt,
-+					(char *)info + offset);
-+			}
++			/* If there are no more slots, expire the oldest */
++			list_del(&oldest->list);
++			target = oldest;
++			IPW_DEBUG_ASSOC("Expired '%s' (%s) from "
++					"network list.\n",
++					escape_essid(target->ssid,
++						     target->ssid_len),
++					print_mac(mac, target->bssid));
++			list_add_tail(&target->list,
++				      &priv->ieee->network_free_list);
 +		}
- 
-+		kfree(info);
-+
-+get_bssid:
-+		ret = get_bssid(usbdev, bssid);
- 		if (!ret) {
- 			evt.data.flags = 0;
- 			evt.data.length = 0;
-@@ -2414,6 +2470,11 @@ static int bcm4320_early_init(struct usb
- 	else if (priv->param_power_save > 2)
- 		priv->param_power_save = 2;
- 
-+	if (priv->param_power_output < 0)
-+		priv->param_power_output = 0;
-+	else if (priv->param_power_output > 3)
-+		priv->param_power_output = 3;
 +
- 	if (priv->param_roamtrigger < -80)
- 		priv->param_roamtrigger = -80;
- 	else if (priv->param_roamtrigger > -60)
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00config.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00config.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00config.c.orig	2008-05-29 11:04:14.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00config.c	2008-05-29 13:37:03.000000000 -0400
-@@ -129,6 +129,7 @@ void rt2x00lib_config_antenna(struct rt2
- 	 */
- 	rt2x00dev->ops->lib->config(rt2x00dev, &libconf, CONFIG_UPDATE_ANTENNA);
- 	rt2x00lib_reset_link_tuner(rt2x00dev);
-+	rt2x00_reset_link_ant_rssi(&rt2x00dev->link);
- 
- 	rt2x00dev->link.ant.active.rx = libconf.ant.rx;
- 	rt2x00dev->link.ant.active.tx = libconf.ant.tx;
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig	2008-05-29 13:36:47.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c	2008-05-29 13:37:03.000000000 -0400
-@@ -483,9 +483,9 @@ void rt2x00lib_beacondone(struct rt2x00_
- 	if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
- 		return;
- 
--	ieee80211_iterate_active_interfaces(rt2x00dev->hw,
--					    rt2x00lib_beacondone_iter,
--					    rt2x00dev);
-+	ieee80211_iterate_active_interfaces_atomic(rt2x00dev->hw,
-+						   rt2x00lib_beacondone_iter,
-+						   rt2x00dev);
- 
- 	queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work);
- }
-@@ -507,7 +507,7 @@ void rt2x00lib_txdone(struct queue_entry
- 	 * Update TX statistics.
- 	 */
- 	rt2x00dev->link.qual.tx_success += success;
--	rt2x00dev->link.qual.tx_failed += txdesc->retry + fail;
-+	rt2x00dev->link.qual.tx_failed += fail;
- 
- 	/*
- 	 * Initialize TX status
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig	2008-05-29 13:36:47.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h	2008-05-29 13:37:03.000000000 -0400
-@@ -328,6 +328,11 @@ static inline int rt2x00_get_link_ant_rs
- 	return DEFAULT_RSSI;
- }
- 
-+static inline void rt2x00_reset_link_ant_rssi(struct link *link)
-+{
-+	link->ant.rssi_ant = 0;
-+}
-+
- static inline int rt2x00_get_link_ant_rssi_history(struct link *link,
- 						   enum antenna ant)
- {
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig	2008-05-29 13:36:47.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c	2008-05-29 13:37:03.000000000 -0400
-@@ -93,6 +93,7 @@ int rt2x00mac_tx(struct ieee80211_hw *hw
- 	 */
- 	if (!test_bit(DEVICE_PRESENT, &rt2x00dev->flags)) {
- 		ieee80211_stop_queues(hw);
-+		dev_kfree_skb_any(skb);
- 		return NETDEV_TX_OK;
- 	}
+ 		element = priv->ieee->network_free_list.next;
+ 		network = list_entry(element, struct ieee80211_network, list);
+ 		ipw_adhoc_create(priv, network);
+diff -up linux-2.6.25.noarch/drivers/net/wireless/libertas/debugfs.c.orig linux-2.6.25.noarch/drivers/net/wireless/libertas/debugfs.c
+--- linux-2.6.25.noarch/drivers/net/wireless/libertas/debugfs.c.orig	2008-06-03 16:17:37.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/libertas/debugfs.c	2008-06-03 16:22:29.000000000 -0400
+@@ -312,8 +312,8 @@ static ssize_t lbs_threshold_write(uint1
+ 	if (tlv_type != TLV_TYPE_BCNMISS)
+ 		tlv->freq = freq;
+ 
+-	/* The command header, the event mask, and the one TLV */
+-	events->hdr.size = cpu_to_le16(sizeof(events->hdr) + 2 + sizeof(*tlv));
++	/* The command header, the action, the event mask, and one TLV */
++	events->hdr.size = cpu_to_le16(sizeof(events->hdr) + 4 + sizeof(*tlv));
+ 
+ 	ret = lbs_cmd_with_response(priv, CMD_802_11_SUBSCRIBE_EVENT, events);
+ 
+diff -up linux-2.6.25.noarch/drivers/net/wireless/p54/p54usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/p54/p54usb.c
+--- linux-2.6.25.noarch/drivers/net/wireless/p54/p54usb.c.orig	2008-06-03 16:17:37.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/p54/p54usb.c	2008-06-03 16:22:29.000000000 -0400
+@@ -49,6 +49,7 @@ static struct usb_device_id p54u_table[]
+ 	{USB_DEVICE(0x5041, 0x2235)},	/* Linksys WUSB54G Portable */
+ 
+ 	/* Version 2 devices (3887) */
++	{USB_DEVICE(0x0471, 0x1230)},   /* Philips CPWUA054/00 */
+ 	{USB_DEVICE(0x050d, 0x7050)},	/* Belkin F5D7050 ver 1000 */
+ 	{USB_DEVICE(0x0572, 0x2000)},	/* Cohiba Proto board */
+ 	{USB_DEVICE(0x0572, 0x2002)},	/* Cohiba Proto board */
+diff -up linux-2.6.25.noarch/drivers/ssb/driver_pcicore.c.orig linux-2.6.25.noarch/drivers/ssb/driver_pcicore.c
+--- linux-2.6.25.noarch/drivers/ssb/driver_pcicore.c.orig	2008-06-03 16:17:38.000000000 -0400
++++ linux-2.6.25.noarch/drivers/ssb/driver_pcicore.c	2008-06-03 16:22:29.000000000 -0400
+@@ -537,12 +537,12 @@ int ssb_pcicore_dev_irqvecs_enable(struc
+ 	int err = 0;
+ 	u32 tmp;
  
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rtl8180_grf5101.c.orig linux-2.6.25.noarch/drivers/net/wireless/rtl8180_grf5101.c
---- linux-2.6.25.noarch/drivers/net/wireless/rtl8180_grf5101.c.orig	2008-05-29 11:04:14.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rtl8180_grf5101.c	2008-05-29 13:37:03.000000000 -0400
-@@ -88,7 +88,7 @@ static void grf5101_rf_set_channel(struc
- 	write_grf5101(dev, 0x0B, chan);
- 	write_grf5101(dev, 0x07, 0x1000);
- 
--	grf5101_write_phy_antenna(dev, chan);
-+	grf5101_write_phy_antenna(dev, channel);
- }
- 
- static void grf5101_rf_stop(struct ieee80211_hw *dev)
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rtl8180_max2820.c.orig linux-2.6.25.noarch/drivers/net/wireless/rtl8180_max2820.c
---- linux-2.6.25.noarch/drivers/net/wireless/rtl8180_max2820.c.orig	2008-05-29 11:04:14.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rtl8180_max2820.c	2008-05-29 13:37:03.000000000 -0400
-@@ -78,7 +78,8 @@ static void max2820_rf_set_channel(struc
- 				   struct ieee80211_conf *conf)
- {
- 	struct rtl8180_priv *priv = dev->priv;
--	int channel = ieee80211_frequency_to_channel(conf->channel->center_freq);
-+	int channel = conf ?
-+		ieee80211_frequency_to_channel(conf->channel->center_freq) : 1;
- 	unsigned int chan_idx = channel - 1;
- 	u32 txpw = priv->channels[chan_idx].hw_value & 0xFF;
- 	u32 chan = max2820_chan[chan_idx];
-@@ -87,7 +88,7 @@ static void max2820_rf_set_channel(struc
- 	 * sa2400, for MAXIM we do this directly from BB */
- 	rtl8180_write_phy(dev, 3, txpw);
- 
--	max2820_write_phy_antenna(dev, chan);
-+	max2820_write_phy_antenna(dev, channel);
- 	write_max2820(dev, 3, chan);
- }
- 
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rtl8180_sa2400.c.orig linux-2.6.25.noarch/drivers/net/wireless/rtl8180_sa2400.c
---- linux-2.6.25.noarch/drivers/net/wireless/rtl8180_sa2400.c.orig	2008-05-29 11:04:14.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rtl8180_sa2400.c	2008-05-29 13:37:03.000000000 -0400
-@@ -86,7 +86,7 @@ static void sa2400_rf_set_channel(struct
- 
- 	write_sa2400(dev, 7, txpw);
- 
--	sa2400_write_phy_antenna(dev, chan);
-+	sa2400_write_phy_antenna(dev, channel);
- 
- 	write_sa2400(dev, 0, chan);
- 	write_sa2400(dev, 1, 0xbb50);
-diff -up linux-2.6.25.noarch/net/mac80211/cfg.c.orig linux-2.6.25.noarch/net/mac80211/cfg.c
---- linux-2.6.25.noarch/net/mac80211/cfg.c.orig	2008-05-29 13:36:47.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/cfg.c	2008-05-29 13:37:03.000000000 -0400
-@@ -672,7 +672,7 @@ static int ieee80211_add_station(struct 
- 	if (params->vlan) {
- 		sdata = IEEE80211_DEV_TO_SUB_IF(params->vlan);
- 
--		if (sdata->vif.type != IEEE80211_IF_TYPE_VLAN ||
-+		if (sdata->vif.type != IEEE80211_IF_TYPE_VLAN &&
- 		    sdata->vif.type != IEEE80211_IF_TYPE_AP)
- 			return -EINVAL;
- 	} else
-@@ -760,7 +760,7 @@ static int ieee80211_change_station(stru
- 	if (params->vlan && params->vlan != sta->sdata->dev) {
- 		vlansdata = IEEE80211_DEV_TO_SUB_IF(params->vlan);
- 
--		if (vlansdata->vif.type != IEEE80211_IF_TYPE_VLAN ||
-+		if (vlansdata->vif.type != IEEE80211_IF_TYPE_VLAN &&
- 		    vlansdata->vif.type != IEEE80211_IF_TYPE_AP) {
- 			rcu_read_unlock();
- 			return -EINVAL;
-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-05-29 13:36:47.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/main.c	2008-05-29 13:37:03.000000000 -0400
-@@ -1313,7 +1313,7 @@ static void ieee80211_handle_filtered_fr
- 	/*
- 	 * Clear the TX filter mask for this STA when sending the next
- 	 * packet. If the STA went to power save mode, this will happen
--	 * happen when it wakes up for the next time.
-+	 * when it wakes up for the next time.
- 	 */
- 	sta->flags |= WLAN_STA_CLEAR_PS_FILT;
- 
-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-05-29 13:36:48.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/mlme.c	2008-05-29 13:37:03.000000000 -0400
-@@ -1325,7 +1325,7 @@ static void ieee80211_sta_process_addba_
- 
- 	/* prepare reordering buffer */
- 	tid_agg_rx->reorder_buf =
--		kmalloc(buf_size * sizeof(struct sk_buf *), GFP_ATOMIC);
-+		kmalloc(buf_size * sizeof(struct sk_buff *), GFP_ATOMIC);
- 	if (!tid_agg_rx->reorder_buf) {
- 		if (net_ratelimit())
- 			printk(KERN_ERR "can not allocate reordering buffer "
-@@ -1334,7 +1334,7 @@ static void ieee80211_sta_process_addba_
- 		goto end;
- 	}
- 	memset(tid_agg_rx->reorder_buf, 0,
--		buf_size * sizeof(struct sk_buf *));
-+		buf_size * sizeof(struct sk_buff *));
- 
- 	if (local->ops->ampdu_action)
- 		ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_RX_START,
-@@ -1614,7 +1614,7 @@ void sta_addba_resp_timer_expired(unsign
- 	 * only one argument, and both sta_info and TID are needed, so init
- 	 * flow in sta_info_create gives the TID as data, while the timer_to_id
- 	 * array gives the sta through container_of */
--	u16 tid = *(int *)data;
-+	u16 tid = *(u8 *)data;
- 	struct sta_info *temp_sta = container_of((void *)data,
- 		struct sta_info, timer_to_tid[tid]);
- 
-@@ -1662,7 +1662,7 @@ timer_expired_exit:
- void sta_rx_agg_session_timer_expired(unsigned long data)
- {
- 	/* not an elegant detour, but there is no choice as the timer passes
--	 * only one argument, and verious sta_info are needed here, so init
-+	 * only one argument, and various sta_info are needed here, so init
- 	 * flow in sta_info_create gives the TID as data, while the timer_to_id
- 	 * array gives the sta through container_of */
- 	u8 *ptid = (u8 *)data;
-@@ -2479,8 +2479,6 @@ static int ieee80211_sta_join_ibss(struc
- 	ifsta->state = IEEE80211_IBSS_JOINED;
- 	mod_timer(&ifsta->timer, jiffies + IEEE80211_IBSS_MERGE_INTERVAL);
- 
--	ieee80211_rx_bss_put(dev, bss);
+-	might_sleep();
 -
- 	return res;
- }
+ 	if (!pdev)
+ 		goto out;
+ 	bus = pdev->bus;
+ 
++	might_sleep_if(pdev->id.coreid != SSB_DEV_PCI);
++
+ 	/* Enable interrupts for this device. */
+ 	if (bus->host_pci &&
+ 	    ((pdev->id.revision >= 6) || (pdev->id.coreid == SSB_DEV_PCIE))) {
+diff -up linux-2.6.25.noarch/include/linux/wireless.h.orig linux-2.6.25.noarch/include/linux/wireless.h
+--- linux-2.6.25.noarch/include/linux/wireless.h.orig	2008-06-03 16:21:29.000000000 -0400
++++ linux-2.6.25.noarch/include/linux/wireless.h	2008-06-03 16:22:29.000000000 -0400
+@@ -70,8 +70,14 @@
+ /***************************** INCLUDES *****************************/
+ 
+ #include <linux/types.h>		/* for __u* and __s* typedefs */
++
++/* This header is used in user-space, therefore need to be sanitised
++ * for that purpose. Those includes are usually not compatible with glibc.
++ * To know which includes to use in user-space, check iwlib.h. */
++#ifdef __KERNEL__
+ #include <linux/socket.h>		/* for "struct sockaddr" et al	*/
+ #include <linux/if.h>			/* for IFNAMSIZ and co... */
++#endif	/* __KERNEL__ */
  
-@@ -3523,6 +3521,7 @@ static int ieee80211_sta_create_ibss(str
- 	struct ieee80211_supported_band *sband;
- 	u8 bssid[ETH_ALEN], *pos;
- 	int i;
-+	int ret;
- 	DECLARE_MAC_BUF(mac);
- 
- #if 0
-@@ -3567,7 +3566,9 @@ static int ieee80211_sta_create_ibss(str
- 		*pos++ = (u8) (rate / 5);
- 	}
- 
--	return ieee80211_sta_join_ibss(dev, ifsta, bss);
-+	ret = ieee80211_sta_join_ibss(dev, ifsta, bss);
-+	ieee80211_rx_bss_put(dev, bss);
-+	return ret;
- }
- 
- 
-@@ -3615,10 +3616,13 @@ static int ieee80211_sta_find_ibss(struc
- 	    (bss = ieee80211_rx_bss_get(dev, bssid,
- 					local->hw.conf.channel->center_freq,
- 					ifsta->ssid, ifsta->ssid_len))) {
-+		int ret;
- 		printk(KERN_DEBUG "%s: Selected IBSS BSSID %s"
- 		       " based on configured SSID\n",
- 		       dev->name, print_mac(mac, bssid));
--		return ieee80211_sta_join_ibss(dev, ifsta, bss);
-+		ret = ieee80211_sta_join_ibss(dev, ifsta, bss);
-+		ieee80211_rx_bss_put(dev, bss);
-+		return ret;
- 	}
- #ifdef CONFIG_MAC80211_IBSS_DEBUG
- 	printk(KERN_DEBUG "   did not try to join ibss\n");
-@@ -4095,18 +4099,17 @@ ieee80211_sta_scan_result(struct net_dev
- 
- 	memset(&iwe, 0, sizeof(iwe));
- 	iwe.cmd = SIOCGIWFREQ;
--	iwe.u.freq.m = bss->freq;
--	iwe.u.freq.e = 6;
-+	iwe.u.freq.m = ieee80211_frequency_to_channel(bss->freq);
-+	iwe.u.freq.e = 0;
- 	current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe,
- 					  IW_EV_FREQ_LEN);
- 
- 	memset(&iwe, 0, sizeof(iwe));
- 	iwe.cmd = SIOCGIWFREQ;
--	iwe.u.freq.m = ieee80211_frequency_to_channel(bss->freq);
--	iwe.u.freq.e = 0;
-+	iwe.u.freq.m = bss->freq;
-+	iwe.u.freq.e = 6;
- 	current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe,
- 					  IW_EV_FREQ_LEN);
--
- 	memset(&iwe, 0, sizeof(iwe));
- 	iwe.cmd = IWEVQUAL;
- 	iwe.u.qual.qual = bss->signal;
-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-05-29 13:36:48.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/rx.c	2008-05-29 13:37:03.000000000 -0400
-@@ -1091,7 +1091,7 @@ ieee80211_data_to_8023(struct ieee80211_
- 	u16 fc, hdrlen, ethertype;
- 	u8 *payload;
- 	u8 dst[ETH_ALEN];
--	u8 src[ETH_ALEN];
-+	u8 src[ETH_ALEN] __aligned(2);
- 	struct sk_buff *skb = rx->skb;
- 	struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
- 	DECLARE_MAC_BUF(mac);
-@@ -1234,7 +1234,7 @@ ieee80211_data_to_8023(struct ieee80211_
-  */
- static bool ieee80211_frame_allowed(struct ieee80211_rx_data *rx)
- {
--	static const u8 pae_group_addr[ETH_ALEN]
-+	static const u8 pae_group_addr[ETH_ALEN] __aligned(2)
- 		= { 0x01, 0x80, 0xC2, 0x00, 0x00, 0x03 };
- 	struct ethhdr *ehdr = (struct ethhdr *) rx->skb->data;
- 
-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-05-29 13:36:48.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/util.c	2008-05-29 13:37:03.000000000 -0400
-@@ -34,11 +34,11 @@ void *mac80211_wiphy_privid = &mac80211_
- 
- /* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */
- /* Ethernet-II snap header (RFC1042 for most EtherTypes) */
--const unsigned char rfc1042_header[] =
-+const unsigned char rfc1042_header[] __aligned(2) =
- 	{ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 };
- 
- /* Bridge-Tunnel header (for EtherTypes ETH_P_AARP and ETH_P_IPX) */
--const unsigned char bridge_tunnel_header[] =
-+const unsigned char bridge_tunnel_header[] __aligned(2) =
- 	{ 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 };
- 
- 
-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-05-29 13:36:48.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wext.c	2008-05-29 13:37:03.000000000 -0400
-@@ -489,9 +489,14 @@ 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) {
--		ap_addr->sa_family = ARPHRD_ETHER;
--		memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
--		return 0;
-+		if (sdata->u.sta.state == IEEE80211_ASSOCIATED) {
-+			ap_addr->sa_family = ARPHRD_ETHER;
-+			memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
-+			return 0;
-+		} else {
-+			memset(&ap_addr->sa_data, 0, ETH_ALEN);
-+			return 0;
-+		}
- 	} else if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) {
- 		ap_addr->sa_family = ARPHRD_ETHER;
- 		memcpy(&ap_addr->sa_data, sdata->u.wds.remote_addr, ETH_ALEN);
+ /***************************** VERSION *****************************/
+ /*


--- linux-2.6-wireless-revert-22182283.patch DELETED ---




More information about the fedora-extras-commits mailing list