rpms/kernel/F-8 kernel.spec, 1.435, 1.436 linux-2.6-wireless-pending-too.patch, 1.8, 1.9
John W. Linville (linville)
fedora-extras-commits at redhat.com
Fri May 2 21:16:21 UTC 2008
Author: linville
Update of /cvs/pkgs/rpms/kernel/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv4798
Modified Files:
kernel.spec linux-2.6-wireless-pending-too.patch
Log Message:
wireless fixes from 2008-05-01
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/kernel.spec,v
retrieving revision 1.435
retrieving revision 1.436
diff -u -r1.435 -r1.436
--- kernel.spec 2 May 2008 03:19:15 -0000 1.435
+++ kernel.spec 2 May 2008 21:15:34 -0000 1.436
@@ -2016,6 +2016,14 @@
%changelog
+* Fri May 02 2008 John W. Linville <linville at redhat.com> 2.6.24.5-90
+- iwlwifi: fix debug messages during scanning
+- iwlwifi: fix current channel is not scanned
+- rt2x00: Don't enable short preamble for 1MBs
+- rt2x00: Fix quality/activity led handling
+- Make linux/wireless.h be able to compile
+- b43: Fix some TX/RX locking issues
+
* Thu May 01 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.24.6-89
- Linux 2.6.24.6
linux-2.6-wireless-pending-too.patch:
Index: linux-2.6-wireless-pending-too.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-wireless-pending-too.patch,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- linux-2.6-wireless-pending-too.patch 1 May 2008 20:21:08 -0000 1.8
+++ linux-2.6-wireless-pending-too.patch 2 May 2008 21:15:35 -0000 1.9
@@ -1,3 +1,89 @@
+commit 61c2b682b8391f13b67e2d95990a0aba34697d9c
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date: Mon Apr 21 19:01:09 2008 +0200
+
+ rt2x00: Fix quality/activity led handling
+
+ There was an obvious typo in LED structure
+ initialization which caused the radio and quality/activity
+ leds to be incorrectly initialized which resulted in
+ the leds not being enabled.
+
+ Additionally add the rt2x00led_led_activity() handler
+ that will enable TX/RX activity leds when the radio
+ is being enabled.
+
+ Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 44a9809b97ec5acd1c549c3120bdd35613897d7c
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date: Mon Apr 21 19:00:17 2008 +0200
+
+ rt2x00: Don't enable short preamble for 1MBs
+
+ The timing settings for 1MBs should exclude
+ the short preamble bit since that only applies
+ to 2MBs, 5.5MBs and 11MBs.
+
+ Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 2218228392080f0ca2fc2974604e79f57b12c436
+Author: Kirill A. Shutemov <kirill at shutemov.name>
+Date: Tue Apr 22 16:38:55 2008 +0300
+
+ Make linux/wireless.h be able to compile
+
+ Signed-off-by: Kirill A. Shutemov <kirill at shutemov.name>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 786b4557075ae0d8a23e73c316dc4204b41ccb4d
+Author: Bill Moss <bmoss at clemson.edu>
+Date: Thu Apr 17 16:03:40 2008 -0700
+
+ iwlwifi: fix debug messages during scanning
+
+ direct_mask will be set when we are not associated and requesting a
+ direct scan. The second debug print will be confusing as priv->essid
+ is not set at that time and it will thus print "<hidden>" while it is
+ known to which AP a direct scan is requested - as previous debug message
+ also indicates.
+
+ Now make all debugging consistent.
+
+ Signed-off-by: Bill Moss <bmoss at clemson.edu>
+ Signed-off-by: Reinette Chatre <reinette.chatre at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit f52764886540b16e7962bd1d150bd939aec9248c
+Author: Guy Cohen <guy.cohen at intel.com>
+Date: Mon Apr 21 15:41:57 2008 -0700
+
+ iwlwifi: fix current channel is not scanned
+
+ All channels should be scanned, including the current channel
+ when the client is associated.
+
+ Removed also unused flag to scan only active channels.
+
+ Signed-off-by: Guy Cohen <guy.cohen at intel.com>
+ Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+ Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 21a75d7788f4e29b6c6d28e08f9f0310c4de828d
+Author: Michael Buesch <mb at bu3sch.de>
+Date: Fri Apr 25 19:29:08 2008 +0200
+
+ b43: Fix some TX/RX locking issues
+
+ This fixes some TX/RX related locking issues.
+ With this patch applied, some of the PHY transmission errors are fixed.
+
+ Signed-off-by: Michael Buesch <mb at bu3sch.de>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
commit c0d43990768b6ca83604ff4be80425b89d317e2f
Author: Holger Schurig <hs4233 at mail.mn-solutions.de>
Date: Tue Apr 29 10:07:56 2008 +0200
@@ -302,9 +388,28 @@
Acked-by: Ron Rindjunsky <ron.rindjunsky at intel.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
+diff -up linux-2.6.24.noarch/include/linux/wireless.h.orig linux-2.6.24.noarch/include/linux/wireless.h
+--- linux-2.6.24.noarch/include/linux/wireless.h.orig 2008-05-02 16:54:37.000000000 -0400
++++ linux-2.6.24.noarch/include/linux/wireless.h 2008-05-02 16:56:09.000000000 -0400
+@@ -69,14 +69,9 @@
+
+ /***************************** INCLUDES *****************************/
+
+-/* 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/types.h> /* for "caddr_t" et al */
++#include <linux/types.h> /* for __u* and __s* typedefs */
+ #include <linux/socket.h> /* for "struct sockaddr" et al */
+ #include <linux/if.h> /* for IFNAMSIZ and co... */
+-#endif /* __KERNEL__ */
+
+ /***************************** VERSION *****************************/
+ /*
diff -up linux-2.6.24.noarch/include/linux/ieee80211.h.orig linux-2.6.24.noarch/include/linux/ieee80211.h
---- linux-2.6.24.noarch/include/linux/ieee80211.h.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/include/linux/ieee80211.h 2008-05-01 15:45:10.000000000 -0400
+--- linux-2.6.24.noarch/include/linux/ieee80211.h.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/include/linux/ieee80211.h 2008-05-02 16:55:36.000000000 -0400
@@ -113,7 +113,7 @@ struct ieee80211_hdr {
struct ieee80211s_hdr {
u8 flags;
@@ -342,8 +447,8 @@
WLAN_EID_PWR_CONSTRAINT = 32,
WLAN_EID_PWR_CAPABILITY = 33,
diff -up linux-2.6.24.noarch/MAINTAINERS.orig linux-2.6.24.noarch/MAINTAINERS
---- linux-2.6.24.noarch/MAINTAINERS.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/MAINTAINERS 2008-05-01 15:42:00.000000000 -0400
+--- linux-2.6.24.noarch/MAINTAINERS.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/MAINTAINERS 2008-05-02 16:55:36.000000000 -0400
@@ -2481,12 +2481,10 @@ W: http://www.tazenda.demon.co.uk/phil/l
S: Maintained
@@ -360,8 +465,8 @@
W: http://linuxwireless.org/
T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
diff -up linux-2.6.24.noarch/net/mac80211/mlme.c.orig linux-2.6.24.noarch/net/mac80211/mlme.c
---- linux-2.6.24.noarch/net/mac80211/mlme.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/net/mac80211/mlme.c 2008-05-01 15:42:00.000000000 -0400
+--- linux-2.6.24.noarch/net/mac80211/mlme.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/net/mac80211/mlme.c 2008-05-02 16:55:36.000000000 -0400
@@ -2248,10 +2248,13 @@ static void ieee80211_rx_bss_put(struct
struct ieee80211_sta_bss *bss)
{
@@ -407,8 +512,8 @@
bss->wmm_ie = NULL;
bss->wmm_ie_len = 0;
diff -up linux-2.6.24.noarch/net/mac80211/rx.c.orig linux-2.6.24.noarch/net/mac80211/rx.c
---- linux-2.6.24.noarch/net/mac80211/rx.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/net/mac80211/rx.c 2008-05-01 15:42:00.000000000 -0400
+--- linux-2.6.24.noarch/net/mac80211/rx.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/net/mac80211/rx.c 2008-05-02 16:55:36.000000000 -0400
@@ -2170,7 +2170,7 @@ void __ieee80211_rx(struct ieee80211_hw
struct ieee80211_supported_band *sband;
@@ -419,8 +524,8 @@
return;
}
diff -up linux-2.6.24.noarch/net/mac80211/main.c.orig linux-2.6.24.noarch/net/mac80211/main.c
---- linux-2.6.24.noarch/net/mac80211/main.c.orig 2008-05-01 15:26:36.000000000 -0400
-+++ linux-2.6.24.noarch/net/mac80211/main.c 2008-05-01 15:45:10.000000000 -0400
+--- linux-2.6.24.noarch/net/mac80211/main.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/net/mac80211/main.c 2008-05-02 16:55:36.000000000 -0400
@@ -255,22 +255,8 @@ static int ieee80211_open(struct net_dev
switch (sdata->vif.type) {
@@ -509,8 +614,8 @@
} else if (sdata->vif.type == IEEE80211_IF_TYPE_AP) {
conf.ssid = sdata->u.ap.ssid;
diff -up linux-2.6.24.noarch/net/mac80211/mesh.c.orig linux-2.6.24.noarch/net/mac80211/mesh.c
---- linux-2.6.24.noarch/net/mac80211/mesh.c.orig 2008-05-01 15:26:36.000000000 -0400
-+++ linux-2.6.24.noarch/net/mac80211/mesh.c 2008-05-01 15:45:10.000000000 -0400
+--- linux-2.6.24.noarch/net/mac80211/mesh.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/net/mac80211/mesh.c 2008-05-02 16:55:36.000000000 -0400
@@ -8,6 +8,7 @@
* published by the Free Software Foundation.
*/
@@ -550,8 +655,8 @@
return 5;
}
diff -up linux-2.6.24.noarch/net/mac80211/tkip.c.orig linux-2.6.24.noarch/net/mac80211/tkip.c
---- linux-2.6.24.noarch/net/mac80211/tkip.c.orig 2008-05-01 15:26:36.000000000 -0400
-+++ linux-2.6.24.noarch/net/mac80211/tkip.c 2008-05-01 15:45:10.000000000 -0400
+--- linux-2.6.24.noarch/net/mac80211/tkip.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/net/mac80211/tkip.c 2008-05-02 16:55:36.000000000 -0400
@@ -230,10 +230,8 @@ void ieee80211_get_tkip_key(struct ieee8
iv16 = data[hdr_len] << 8;
@@ -566,8 +671,8 @@
#ifdef CONFIG_TKIP_DEBUG
printk(KERN_DEBUG "TKIP encrypt: iv16 = 0x%04x, iv32 = 0x%08x\n",
diff -up linux-2.6.24.noarch/net/mac80211/wme.c.orig linux-2.6.24.noarch/net/mac80211/wme.c
---- linux-2.6.24.noarch/net/mac80211/wme.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/net/mac80211/wme.c 2008-05-01 15:42:00.000000000 -0400
+--- linux-2.6.24.noarch/net/mac80211/wme.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/net/mac80211/wme.c 2008-05-02 16:55:36.000000000 -0400
@@ -709,7 +709,7 @@ void ieee80211_requeue(struct ieee80211_
struct ieee80211_sched_data *q = qdisc_priv(root_qd);
struct Qdisc *qdisc = q->queues[queue];
@@ -578,8 +683,8 @@
if (!qdisc || !qdisc->dequeue)
return;
diff -up linux-2.6.24.noarch/net/mac80211/mesh.h.orig linux-2.6.24.noarch/net/mac80211/mesh.h
---- linux-2.6.24.noarch/net/mac80211/mesh.h.orig 2008-05-01 15:26:36.000000000 -0400
-+++ linux-2.6.24.noarch/net/mac80211/mesh.h 2008-05-01 15:45:10.000000000 -0400
+--- linux-2.6.24.noarch/net/mac80211/mesh.h.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/net/mac80211/mesh.h 2008-05-02 16:55:36.000000000 -0400
@@ -139,7 +139,7 @@ struct rmc_entry {
struct mesh_rmc {
@@ -590,8 +695,8 @@
diff -up linux-2.6.24.noarch/net/mac80211/ieee80211_i.h.orig linux-2.6.24.noarch/net/mac80211/ieee80211_i.h
---- linux-2.6.24.noarch/net/mac80211/ieee80211_i.h.orig 2008-05-01 15:26:36.000000000 -0400
-+++ linux-2.6.24.noarch/net/mac80211/ieee80211_i.h 2008-05-01 15:45:10.000000000 -0400
+--- linux-2.6.24.noarch/net/mac80211/ieee80211_i.h.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/net/mac80211/ieee80211_i.h 2008-05-02 16:55:36.000000000 -0400
@@ -354,7 +354,7 @@ struct ieee80211_if_sta {
int preq_queue_len;
struct mesh_stats mshstats;
@@ -602,8 +707,8 @@
#endif
u16 aid;
diff -up linux-2.6.24.noarch/drivers/net/wireless/b43/phy.c.orig linux-2.6.24.noarch/drivers/net/wireless/b43/phy.c
---- linux-2.6.24.noarch/drivers/net/wireless/b43/phy.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43/phy.c 2008-05-01 15:42:00.000000000 -0400
+--- linux-2.6.24.noarch/drivers/net/wireless/b43/phy.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/b43/phy.c 2008-05-02 16:55:36.000000000 -0400
@@ -2043,7 +2043,7 @@ int b43_phy_init(struct b43_wldev *dev)
void b43_set_rx_antenna(struct b43_wldev *dev, int antenna)
{
@@ -614,8 +719,8 @@
int autodiv = 0;
diff -up linux-2.6.24.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.24.noarch/drivers/net/wireless/b43/main.c
---- linux-2.6.24.noarch/drivers/net/wireless/b43/main.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43/main.c 2008-05-01 15:45:10.000000000 -0400
+--- linux-2.6.24.noarch/drivers/net/wireless/b43/main.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/b43/main.c 2008-05-02 16:56:09.000000000 -0400
@@ -83,6 +83,10 @@ int b43_modparam_qos = 1;
module_param_named(qos, b43_modparam_qos, int, 0444);
MODULE_PARM_DESC(qos, "Enable QOS support (default on)");
@@ -627,7 +732,98 @@
static const struct ssb_device_id b43_ssb_tbl[] = {
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 5),
-@@ -3705,8 +3709,10 @@ static void setup_struct_wldev_for_init(
+@@ -724,6 +728,7 @@ static void b43_synchronize_irq(struct b
+ */
+ void b43_dummy_transmission(struct b43_wldev *dev)
+ {
++ struct b43_wl *wl = dev->wl;
+ struct b43_phy *phy = &dev->phy;
+ unsigned int i, max_loop;
+ u16 value;
+@@ -750,6 +755,9 @@ void b43_dummy_transmission(struct b43_w
+ return;
+ }
+
++ spin_lock_irq(&wl->irq_lock);
++ write_lock(&wl->tx_lock);
++
+ for (i = 0; i < 5; i++)
+ b43_ram_write(dev, i * 4, buffer[i]);
+
+@@ -790,6 +798,9 @@ void b43_dummy_transmission(struct b43_w
+ }
+ if (phy->radio_ver == 0x2050 && phy->radio_rev <= 0x5)
+ b43_radio_write16(dev, 0x0051, 0x0037);
++
++ write_unlock(&wl->tx_lock);
++ spin_unlock_irq(&wl->irq_lock);
+ }
+
+ static void key_write(struct b43_wldev *dev,
+@@ -2835,24 +2846,31 @@ static int b43_op_tx(struct ieee80211_hw
+ {
+ struct b43_wl *wl = hw_to_b43_wl(hw);
+ struct b43_wldev *dev = wl->current_dev;
+- int err = -ENODEV;
++ unsigned long flags;
++ int err;
+
+ if (unlikely(skb->len < 2 + 2 + 6)) {
+ /* Too short, this can't be a valid frame. */
+- return -EINVAL;
++ dev_kfree_skb_any(skb);
++ return NETDEV_TX_OK;
+ }
+ B43_WARN_ON(skb_shinfo(skb)->nr_frags);
+-
+ if (unlikely(!dev))
+- goto out;
+- if (unlikely(b43_status(dev) < B43_STAT_STARTED))
+- goto out;
+- /* TX is done without a global lock. */
+- if (b43_using_pio_transfers(dev))
+- err = b43_pio_tx(dev, skb, ctl);
+- else
+- err = b43_dma_tx(dev, skb, ctl);
+-out:
++ return NETDEV_TX_BUSY;
++
++ /* Transmissions on seperate queues can run concurrently. */
++ read_lock_irqsave(&wl->tx_lock, flags);
++
++ err = -ENODEV;
++ if (likely(b43_status(dev) >= B43_STAT_STARTED)) {
++ if (b43_using_pio_transfers(dev))
++ err = b43_pio_tx(dev, skb, ctl);
++ else
++ err = b43_dma_tx(dev, skb, ctl);
++ }
++
++ read_unlock_irqrestore(&wl->tx_lock, flags);
++
+ if (unlikely(err))
+ return NETDEV_TX_BUSY;
+ return NETDEV_TX_OK;
+@@ -3471,7 +3489,9 @@ static void b43_wireless_core_stop(struc
+ spin_unlock_irqrestore(&wl->irq_lock, flags);
+ b43_synchronize_irq(dev);
+
++ write_lock_irqsave(&wl->tx_lock, flags);
+ b43_set_status(dev, B43_STAT_INITIALIZED);
++ write_unlock_irqrestore(&wl->tx_lock, flags);
+
+ b43_pio_stop(dev);
+ mutex_unlock(&wl->mutex);
+@@ -3480,8 +3500,6 @@ static void b43_wireless_core_stop(struc
+ cancel_delayed_work_sync(&dev->periodic_work);
+ mutex_lock(&wl->mutex);
+
+- ieee80211_stop_queues(wl->hw); //FIXME this could cause a deadlock, as mac80211 seems buggy.
+-
+ b43_mac_suspend(dev);
+ free_irq(dev->dev->irq, dev);
+ b43dbg(wl, "Wireless interface stopped\n");
+@@ -3705,8 +3723,10 @@ static void setup_struct_wldev_for_init(
static void b43_bluetooth_coext_enable(struct b43_wldev *dev)
{
struct ssb_sprom *sprom = &dev->dev->bus->sprom;
@@ -639,7 +835,7 @@
if (!(sprom->boardflags_lo & B43_BFL_BTCOEXIST))
return;
if (dev->phy.type != B43_PHYTYPE_B && !dev->phy.gmode)
-@@ -3718,11 +3724,13 @@ static void b43_bluetooth_coext_enable(s
+@@ -3718,11 +3738,13 @@ static void b43_bluetooth_coext_enable(s
else
hf |= B43_HF_BTCOEX;
b43_hf_write(dev, hf);
@@ -655,7 +851,7 @@
}
static void b43_imcfglo_timeouts_workaround(struct b43_wldev *dev)
-@@ -3849,7 +3857,8 @@ static int b43_wireless_core_init(struct
+@@ -3849,7 +3871,8 @@ static int b43_wireless_core_init(struct
struct ssb_sprom *sprom = &bus->sprom;
struct b43_phy *phy = &dev->phy;
int err;
@@ -665,7 +861,7 @@
B43_WARN_ON(b43_status(dev) != B43_STAT_UNINIT);
-@@ -4312,6 +4321,14 @@ static int b43_wireless_core_attach(stru
+@@ -4312,6 +4335,14 @@ static int b43_wireless_core_attach(stru
err = -EOPNOTSUPP;
goto err_powerdown;
}
@@ -680,7 +876,7 @@
dev->phy.gmode = have_2ghz_phy;
tmp = dev->phy.gmode ? B43_TMSLOW_GMODE : 0;
b43_wireless_core_reset(dev, tmp);
-@@ -4409,8 +4426,16 @@ static int b43_one_core_attach(struct ss
+@@ -4409,8 +4440,16 @@ static int b43_one_core_attach(struct ss
return err;
}
@@ -697,7 +893,7 @@
/* boardflags workarounds */
if (bus->boardinfo.vendor == SSB_BOARDVENDOR_DELL &&
bus->chip_id == 0x4301 && bus->boardinfo.rev == 0x74)
-@@ -4418,6 +4443,13 @@ static void b43_sprom_fixup(struct ssb_b
+@@ -4418,6 +4457,13 @@ static void b43_sprom_fixup(struct ssb_b
if (bus->boardinfo.vendor == PCI_VENDOR_ID_APPLE &&
bus->boardinfo.type == 0x4E && bus->boardinfo.rev > 0x40)
bus->sprom.boardflags_lo |= B43_BFL_PACTRL;
@@ -711,9 +907,17 @@
}
static void b43_wireless_exit(struct ssb_device *dev, struct b43_wl *wl)
+@@ -4461,6 +4507,7 @@ static int b43_wireless_init(struct ssb_
+ memset(wl, 0, sizeof(*wl));
+ wl->hw = hw;
+ spin_lock_init(&wl->irq_lock);
++ rwlock_init(&wl->tx_lock);
+ spin_lock_init(&wl->leds_lock);
+ spin_lock_init(&wl->shm_lock);
+ mutex_init(&wl->mutex);
diff -up linux-2.6.24.noarch/drivers/net/wireless/b43/dma.c.orig linux-2.6.24.noarch/drivers/net/wireless/b43/dma.c
---- linux-2.6.24.noarch/drivers/net/wireless/b43/dma.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/drivers/net/wireless/b43/dma.c 2008-05-01 15:42:00.000000000 -0400
+--- linux-2.6.24.noarch/drivers/net/wireless/b43/dma.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/b43/dma.c 2008-05-02 16:55:36.000000000 -0400
@@ -980,6 +980,42 @@ void b43_dma_free(struct b43_wldev *dev)
destroy_ring(dma, tx_ring_mcast);
}
@@ -775,9 +979,23 @@
err = -ENOMEM;
/* setup TX DMA channels. */
+diff -up linux-2.6.24.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.24.noarch/drivers/net/wireless/b43/b43.h
+--- linux-2.6.24.noarch/drivers/net/wireless/b43/b43.h.orig 2008-05-02 16:54:37.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/b43/b43.h 2008-05-02 16:56:09.000000000 -0400
+@@ -691,6 +691,10 @@ struct b43_wl {
+
+ struct mutex mutex;
+ spinlock_t irq_lock;
++ /* R/W lock for data transmission.
++ * Transmissions on 2+ queues can run concurrently, but somebody else
++ * might sync with TX by write_lock_irqsave()'ing. */
++ rwlock_t tx_lock;
+ /* Lock for LEDs access. */
+ spinlock_t leds_lock;
+ /* Lock for SHM access. */
diff -up linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c.orig linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c
---- linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c.orig 2008-05-01 15:26:37.000000000 -0400
-+++ linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c 2008-05-01 15:45:10.000000000 -0400
+--- linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/libertas/scan.c 2008-05-02 16:55:36.000000000 -0400
@@ -298,7 +298,8 @@ static int lbs_do_scan(struct lbs_privat
uint8_t *tlv; /* pointer into our current, growing TLV storage area */
@@ -789,8 +1007,8 @@
/* create the fixed part for scan command */
scan_cmd = kzalloc(MAX_SCAN_CFG_ALLOC, GFP_KERNEL);
diff -up linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c.orig linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c
---- linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c 2008-05-01 15:42:00.000000000 -0400
+--- linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/prism54/isl_ioctl.c 2008-05-02 16:55:36.000000000 -0400
@@ -1186,7 +1186,7 @@ prism54_get_encode(struct net_device *nd
rvalue |= mgt_get_request(priv, DOT11_OID_DEFKEYID, 0, NULL, &r);
devindex = r.u;
@@ -801,9 +1019,69 @@
index = devindex;
rvalue |= mgt_get_request(priv, DOT11_OID_DEFKEYX, index, NULL, &r);
diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2008-05-01 15:42:00.000000000 -0400
-@@ -6473,7 +6473,6 @@ static int iwl4965_mac_config_interface(
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig 2008-05-02 16:55:30.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2008-05-02 16:56:09.000000000 -0400
+@@ -4633,17 +4633,6 @@ static int iwl4965_get_channels_for_scan
+ if (channels[i].flags & IEEE80211_CHAN_DISABLED)
+ continue;
+
+- if (ieee80211_frequency_to_channel(channels[i].center_freq) ==
+- le16_to_cpu(priv->active_rxon.channel)) {
+- if (iwl_is_associated(priv)) {
+- IWL_DEBUG_SCAN
+- ("Skipping current channel %d\n",
+- le16_to_cpu(priv->active_rxon.channel));
+- continue;
+- }
+- } else if (priv->only_active_channel)
+- continue;
+-
+ scan_ch->channel = ieee80211_frequency_to_channel(channels[i].center_freq);
+
+ ch_info = iwl_get_channel_info(priv, band,
+@@ -5824,11 +5813,15 @@ static void iwl4965_bg_request_scan(stru
+ priv->direct_ssid, priv->direct_ssid_len);
+ direct_mask = 1;
+ } else if (!iwl_is_associated(priv) && priv->essid_len) {
++ IWL_DEBUG_SCAN
++ ("Kicking off one direct scan for '%s' when not associated\n",
++ iwl4965_escape_essid(priv->essid, priv->essid_len));
+ scan->direct_scan[0].id = WLAN_EID_SSID;
+ scan->direct_scan[0].len = priv->essid_len;
+ memcpy(scan->direct_scan[0].ssid, priv->essid, priv->essid_len);
+ direct_mask = 1;
+ } else {
++ IWL_DEBUG_SCAN("Kicking off one indirect scan.\n");
+ direct_mask = 0;
+ }
+
+@@ -5881,23 +5874,18 @@ static void iwl4965_bg_request_scan(stru
+ if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR)
+ scan->filter_flags = RXON_FILTER_PROMISC_MSK;
+
+- if (direct_mask) {
+- IWL_DEBUG_SCAN
+- ("Initiating direct scan for %s.\n",
+- iwl4965_escape_essid(priv->essid, priv->essid_len));
++ if (direct_mask)
+ scan->channel_count =
+ iwl4965_get_channels_for_scan(
+ priv, band, 1, /* active */
+ direct_mask,
+ (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]);
+- } else {
+- IWL_DEBUG_SCAN("Initiating indirect scan.\n");
++ else
+ scan->channel_count =
+ iwl4965_get_channels_for_scan(
+ priv, band, 0, /* passive */
+ direct_mask,
+ (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]);
+- }
+
+ cmd.len += le16_to_cpu(scan->tx_cmd.len) +
+ scan->channel_count * sizeof(struct iwl4965_scan_channel);
+@@ -6473,7 +6461,6 @@ static int iwl4965_mac_config_interface(
if (priv->vif != vif) {
IWL_DEBUG_MAC80211("leave - priv->vif != vif\n");
@@ -811,10 +1089,104 @@
return 0;
}
+@@ -7062,8 +7049,6 @@ static void iwl4965_mac_reset_tsf(struct
+ return;
+ }
+
+- priv->only_active_channel = 0;
+-
+ iwl4965_set_rate(priv);
+
+ mutex_unlock(&priv->mutex);
+diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.h
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.h.orig 2008-05-02 16:54:38.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-4965.h 2008-05-02 16:56:09.000000000 -0400
+@@ -996,7 +996,6 @@ struct iwl_priv {
+ u8 direct_ssid_len;
+ u8 direct_ssid[IW_ESSID_MAX_SIZE];
+ struct iwl4965_scan_cmd *scan;
+- u8 only_active_channel;
+
+ /* spinlock */
+ spinlock_t lock; /* protect general shared data */
+diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.h.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.h
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.h.orig 2008-05-02 16:54:38.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl-3945.h 2008-05-02 16:56:09.000000000 -0400
+@@ -742,7 +742,6 @@ struct iwl3945_priv {
+ u8 direct_ssid_len;
+ u8 direct_ssid[IW_ESSID_MAX_SIZE];
+ struct iwl3945_scan_cmd *scan;
+- u8 only_active_channel;
+
+ /* spinlock */
+ spinlock_t lock; /* protect general shared data */
diff -up linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c
---- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-05-01 15:42:00.000000000 -0400
-@@ -6907,7 +6907,6 @@ static int iwl3945_mac_config_interface(
+--- linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2008-05-02 16:55:31.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-05-02 16:56:09.000000000 -0400
+@@ -4968,17 +4968,6 @@ static int iwl3945_get_channels_for_scan
+ if (channels[i].flags & IEEE80211_CHAN_DISABLED)
+ continue;
+
+- if (channels[i].hw_value ==
+- le16_to_cpu(priv->active_rxon.channel)) {
+- if (iwl3945_is_associated(priv)) {
+- IWL_DEBUG_SCAN
+- ("Skipping current channel %d\n",
+- le16_to_cpu(priv->active_rxon.channel));
+- continue;
+- }
+- } else if (priv->only_active_channel)
+- continue;
+-
+ scan_ch->channel = channels[i].hw_value;
+
+ ch_info = iwl3945_get_channel_info(priv, band, scan_ch->channel);
+@@ -6303,12 +6292,17 @@ static void iwl3945_bg_request_scan(stru
+ priv->direct_ssid, priv->direct_ssid_len);
+ direct_mask = 1;
+ } else if (!iwl3945_is_associated(priv) && priv->essid_len) {
++ IWL_DEBUG_SCAN
++ ("Kicking off one direct scan for '%s' when not associated\n",
++ iwl3945_escape_essid(priv->essid, priv->essid_len));
+ scan->direct_scan[0].id = WLAN_EID_SSID;
+ scan->direct_scan[0].len = priv->essid_len;
+ memcpy(scan->direct_scan[0].ssid, priv->essid, priv->essid_len);
+ direct_mask = 1;
+- } else
++ } else {
++ IWL_DEBUG_SCAN("Kicking off one indirect scan.\n");
+ direct_mask = 0;
++ }
+
+ /* We don't build a direct scan probe request; the uCode will do
+ * that based on the direct_mask added to each channel entry */
+@@ -6346,23 +6340,18 @@ static void iwl3945_bg_request_scan(stru
+ if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR)
+ scan->filter_flags = RXON_FILTER_PROMISC_MSK;
+
+- if (direct_mask) {
+- IWL_DEBUG_SCAN
+- ("Initiating direct scan for %s.\n",
+- iwl3945_escape_essid(priv->essid, priv->essid_len));
++ if (direct_mask)
+ scan->channel_count =
+ iwl3945_get_channels_for_scan(
+ priv, band, 1, /* active */
+ direct_mask,
+ (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]);
+- } else {
+- IWL_DEBUG_SCAN("Initiating indirect scan.\n");
++ else
+ scan->channel_count =
+ iwl3945_get_channels_for_scan(
+ priv, band, 0, /* passive */
+ direct_mask,
+ (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]);
+- }
+
+ cmd.len += le16_to_cpu(scan->tx_cmd.len) +
+ scan->channel_count * sizeof(struct iwl3945_scan_channel);
+@@ -6907,7 +6896,6 @@ static int iwl3945_mac_config_interface(
if (priv->vif != vif) {
IWL_DEBUG_MAC80211("leave - priv->vif != vif\n");
@@ -822,9 +1194,163 @@
return 0;
}
+@@ -7315,8 +7303,6 @@ static void iwl3945_mac_reset_tsf(struct
+ return;
+ }
+
+- priv->only_active_channel = 0;
+-
+ iwl3945_set_rate(priv);
+
+ mutex_unlock(&priv->mutex);
+diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig 2008-05-02 16:54:38.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c 2008-05-02 16:56:09.000000000 -0400
+@@ -114,6 +114,7 @@ int rt2x00lib_enable_radio(struct rt2x00
+ return status;
+
+ rt2x00leds_led_radio(rt2x00dev, true);
++ rt2x00led_led_activity(rt2x00dev, true);
+
+ __set_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags);
+
+@@ -157,6 +158,7 @@ void rt2x00lib_disable_radio(struct rt2x
+ * Disable radio.
+ */
+ rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_RADIO_OFF);
++ rt2x00led_led_activity(rt2x00dev, false);
+ rt2x00leds_led_radio(rt2x00dev, false);
+ }
+
+diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c.orig 2008-05-02 16:54:38.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2400pci.c 2008-05-02 16:56:09.000000000 -0400
+@@ -366,7 +366,7 @@ static void rt2400pci_config_erp(struct
+ rt2x00pci_register_write(rt2x00dev, TXCSR1, reg);
+
+ rt2x00pci_register_read(rt2x00dev, ARCSR2, ®);
+- rt2x00_set_field32(®, ARCSR2_SIGNAL, 0x00 | preamble_mask);
++ rt2x00_set_field32(®, ARCSR2_SIGNAL, 0x00);
+ rt2x00_set_field32(®, ARCSR2_SERVICE, 0x04);
+ rt2x00_set_field32(®, ARCSR2_LENGTH, get_duration(ACK_SIZE, 10));
+ rt2x00pci_register_write(rt2x00dev, ARCSR2, reg);
+@@ -1313,7 +1313,7 @@ static int rt2400pci_init_eeprom(struct
+
+ if (value == LED_MODE_TXRX_ACTIVITY) {
+ rt2x00dev->led_qual.rt2x00dev = rt2x00dev;
+- rt2x00dev->led_radio.type = LED_TYPE_ACTIVITY;
++ rt2x00dev->led_qual.type = LED_TYPE_ACTIVITY;
+ rt2x00dev->led_qual.led_dev.brightness_set =
+ rt2400pci_brightness_set;
+ #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24))
+diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig 2008-05-02 16:54:38.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500usb.c 2008-05-02 16:56:09.000000000 -0400
+@@ -1399,7 +1399,7 @@ static int rt2500usb_init_eeprom(struct
+
+ if (value == LED_MODE_TXRX_ACTIVITY) {
+ rt2x00dev->led_qual.rt2x00dev = rt2x00dev;
+- rt2x00dev->led_radio.type = LED_TYPE_ACTIVITY;
++ rt2x00dev->led_qual.type = LED_TYPE_ACTIVITY;
+ rt2x00dev->led_qual.led_dev.brightness_set =
+ rt2500usb_brightness_set;
+ #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24))
+diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00lib.h.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00lib.h
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00lib.h.orig 2008-05-02 16:54:38.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00lib.h 2008-05-02 16:56:09.000000000 -0400
+@@ -185,6 +185,7 @@ static inline void rt2x00rfkill_resume(s
+ */
+ #ifdef CONFIG_RT2X00_LIB_LEDS
+ void rt2x00leds_led_quality(struct rt2x00_dev *rt2x00dev, int rssi);
++void rt2x00led_led_activity(struct rt2x00_dev *rt2x00dev, bool enabled);
+ void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev, bool enabled);
+ void rt2x00leds_led_radio(struct rt2x00_dev *rt2x00dev, bool enabled);
+ void rt2x00leds_register(struct rt2x00_dev *rt2x00dev);
+@@ -197,6 +198,11 @@ static inline void rt2x00leds_led_qualit
+ {
+ }
+
++static inline void rt2x00led_led_activity(struct rt2x00_dev *rt2x00dev,
++ bool enabled)
++{
++}
++
+ static inline void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev,
+ bool enabled)
+ {
+diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig 2008-05-02 16:54:38.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2500pci.c 2008-05-02 16:56:09.000000000 -0400
+@@ -373,7 +373,7 @@ static void rt2500pci_config_erp(struct
+ rt2x00pci_register_write(rt2x00dev, TXCSR1, reg);
+
+ rt2x00pci_register_read(rt2x00dev, ARCSR2, ®);
+- rt2x00_set_field32(®, ARCSR2_SIGNAL, 0x00 | preamble_mask);
++ rt2x00_set_field32(®, ARCSR2_SIGNAL, 0x00);
+ rt2x00_set_field32(®, ARCSR2_SERVICE, 0x04);
+ rt2x00_set_field32(®, ARCSR2_LENGTH, get_duration(ACK_SIZE, 10));
+ rt2x00pci_register_write(rt2x00dev, ARCSR2, reg);
+@@ -1490,7 +1490,7 @@ static int rt2500pci_init_eeprom(struct
+
+ if (value == LED_MODE_TXRX_ACTIVITY) {
+ rt2x00dev->led_qual.rt2x00dev = rt2x00dev;
+- rt2x00dev->led_radio.type = LED_TYPE_ACTIVITY;
++ rt2x00dev->led_qual.type = LED_TYPE_ACTIVITY;
+ rt2x00dev->led_qual.led_dev.brightness_set =
+ rt2500pci_brightness_set;
+ #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24))
+diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00leds.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00leds.c
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00leds.c.orig 2008-05-02 16:54:38.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt2x00leds.c 2008-05-02 16:56:09.000000000 -0400
+@@ -73,6 +73,21 @@ void rt2x00leds_led_quality(struct rt2x0
+ }
+ }
+
++void rt2x00led_led_activity(struct rt2x00_dev *rt2x00dev, bool enabled)
++{
++ struct rt2x00_led *led = &rt2x00dev->led_qual;
++ unsigned int brightness;
++
++ if ((led->type != LED_TYPE_ACTIVITY) || !(led->flags & LED_REGISTERED))
++ return;
++
++ brightness = enabled ? LED_FULL : LED_OFF;
++ if (brightness != led->led_dev.brightness) {
++ led->led_dev.brightness_set(&led->led_dev, brightness);
++ led->led_dev.brightness = brightness;
++ }
++}
++
+ void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev, bool enabled)
+ {
+ struct rt2x00_led *led = &rt2x00dev->led_assoc;
+diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c.orig 2008-05-02 16:54:38.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt61pci.c 2008-05-02 16:56:09.000000000 -0400
+@@ -2094,7 +2094,7 @@ static int rt61pci_init_eeprom(struct rt
+
+ if (value == LED_MODE_SIGNAL_STRENGTH) {
+ rt2x00dev->led_qual.rt2x00dev = rt2x00dev;
+- rt2x00dev->led_radio.type = LED_TYPE_QUALITY;
++ rt2x00dev->led_qual.type = LED_TYPE_QUALITY;
+ rt2x00dev->led_qual.led_dev.brightness_set =
+ rt61pci_brightness_set;
+ #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24))
+diff -up linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c
+--- linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig 2008-05-02 16:54:38.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/rt2x00/rt73usb.c 2008-05-02 16:56:09.000000000 -0400
+@@ -1654,7 +1654,7 @@ static int rt73usb_init_eeprom(struct rt
+
+ if (value == LED_MODE_SIGNAL_STRENGTH) {
+ rt2x00dev->led_qual.rt2x00dev = rt2x00dev;
+- rt2x00dev->led_radio.type = LED_TYPE_QUALITY;
++ rt2x00dev->led_qual.type = LED_TYPE_QUALITY;
+ rt2x00dev->led_qual.led_dev.brightness_set =
+ rt73usb_brightness_set;
+ #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,24))
diff -up linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c.orig linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c
---- linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c 2008-05-01 15:42:00.000000000 -0400
+--- linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c.orig 2008-05-02 16:55:31.000000000 -0400
++++ linux-2.6.24.noarch/drivers/net/wireless/ath5k/hw.c 2008-05-02 16:55:36.000000000 -0400
@@ -304,14 +304,20 @@ struct ath5k_hw *ath5k_hw_attach(struct
ah->ah_radio = AR5K_RF2413;
ah->ah_phy_spending = AR5K_PHY_SPENDING_RF5112A;
@@ -851,8 +1377,8 @@
* Register returns 0x4 for radio revision
* so ath5k_hw_radio_revision doesn't parse the value
diff -up linux-2.6.24.noarch/drivers/ssb/pci.c.orig linux-2.6.24.noarch/drivers/ssb/pci.c
---- linux-2.6.24.noarch/drivers/ssb/pci.c.orig 2008-05-01 15:41:55.000000000 -0400
-+++ linux-2.6.24.noarch/drivers/ssb/pci.c 2008-05-01 15:42:00.000000000 -0400
+--- linux-2.6.24.noarch/drivers/ssb/pci.c.orig 2008-05-02 16:55:31.000000000 -0400
++++ linux-2.6.24.noarch/drivers/ssb/pci.c 2008-05-02 16:55:36.000000000 -0400
@@ -484,6 +484,11 @@ static int sprom_extract(struct ssb_bus
goto unsupported;
}
More information about the fedora-extras-commits
mailing list