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 scm-commits
mailing list