rpms/kernel/devel kernel.spec, 1.731, 1.732 linux-2.6-wireless-pending.patch, 1.58, 1.59 linux-2.6-wireless.patch, 1.44, 1.45
John W. Linville (linville)
fedora-extras-commits at redhat.com
Thu Jul 3 17:55:42 UTC 2008
Author: linville
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv4494
Modified Files:
kernel.spec linux-2.6-wireless-pending.patch
linux-2.6-wireless.patch
Log Message:
Upstream wireless fixes from 2008-07-02
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.731
retrieving revision 1.732
diff -u -r1.731 -r1.732
--- kernel.spec 3 Jul 2008 15:57:05 -0000 1.731
+++ kernel.spec 3 Jul 2008 17:54:55 -0000 1.732
@@ -1146,9 +1146,9 @@
#ApplyPatch linux-2.6-selinux-ecryptfs-support.patch
# wireless patches headed for 2.6.26
-#ApplyPatch linux-2.6-wireless.patch
+ApplyPatch linux-2.6-wireless.patch
# wireless patches headed for 2.6.27
-#ApplyPatch linux-2.6-wireless-pending.patch
+ApplyPatch linux-2.6-wireless-pending.patch
# Add misc wireless bits from upstream wireless tree
ApplyPatch linux-2.6-at76.patch
@@ -1796,6 +1796,10 @@
%kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
%changelog
+* Thu Jul 03 2008 John W. Linville <linville at redhat.com>
+- Upstream wireless fixes from 2008-07-02
+ (http://marc.info/?l=linux-netdev&m=121503163124089&w=2)
+
* Thu Jul 03 2008 Dave Jones <davej at redhat.com>
- 2.6.26-rc8-git3
linux-2.6-wireless-pending.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.58 -r 1.59 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.58
retrieving revision 1.59
diff -u -r1.58 -r1.59
--- linux-2.6-wireless-pending.patch 1 Jul 2008 15:29:57 -0000 1.58
+++ linux-2.6-wireless-pending.patch 3 Jul 2008 17:54:55 -0000 1.59
@@ -97,18 +97,6 @@
Signed-off-by: Zhu Yi <yi.zhu at intel.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit a6ecfe5a9bd32c9426f9af801e62f21da132a2cc
-Author: Zhu Yi <yi.zhu at intel.com>
-Date: Mon Jun 30 17:23:29 2008 +0800
-
- iwlwifi: drop skb silently for Tx request in monitor mode
-
- This patch fixes the problem to keep mac80211 resubmitting SKBs
- when Tx request cannot be met in monitor mode.
-
- Signed-off-by: Zhu Yi <yi.zhu at intel.com>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
commit 6fe878497b04b9c428842ab9c89c0e2d712860ad
Author: Rick Farrington <rickdic at hotmail.com>
Date: Mon Jun 30 17:23:28 2008 +0800
@@ -132,23 +120,6 @@
Signed-off-by: Zhu Yi <yi.zhu at intel.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 32c932be01d96abe84340b0831db949ca4713292
-Author: Rick Farrington <rickdic at hotmail.com>
-Date: Mon Jun 30 17:23:27 2008 +0800
-
- iwlwifi: fix incorrect 5GHz rates reported in monitor mode
-
- This patch fixes the rates reported in monitor mode operation
- (Wireshark) for iwlwifi.
-
- Previously, packets with rates of 6M..24M would be reported
- incorrectly and packets with rates of 36M..54M would not passed
- up the stack.
-
- Signed-off-by: Rick Farrington <rickdic at hotmail.com>
- Signed-off-by: Zhu Yi <yi.zhu at intel.com>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
commit 0a078ffa011209c307880da10917ef205b4b11f4
Author: Tomas Winkler <tomas.winkler at intel.com>
Date: Mon Jun 30 17:23:26 2008 +0800
@@ -6681,8 +6652,8 @@
Signed-off-by: John W. Linville <linville at tuxdriver.com>
diff -up /dev/null linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/hostapd.conf
---- /dev/null 2008-07-01 08:25:54.335004873 -0400
-+++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/hostapd.conf 2008-07-01 10:55:58.000000000 -0400
+--- /dev/null 2008-07-03 09:55:47.025003120 -0400
++++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/hostapd.conf 2008-07-03 13:46:32.000000000 -0400
@@ -0,0 +1,11 @@
+interface=wlan0
+driver=nl80211
@@ -6696,8 +6667,8 @@
+wpa_pairwise=CCMP
+wpa_passphrase=12345678
diff -up /dev/null linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/README
---- /dev/null 2008-07-01 08:25:54.335004873 -0400
-+++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/README 2008-07-01 10:55:58.000000000 -0400
+--- /dev/null 2008-07-03 09:55:47.025003120 -0400
++++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/README 2008-07-03 13:46:32.000000000 -0400
@@ -0,0 +1,67 @@
+mac80211_hwsim - software simulator of 802.11 radio(s) for mac80211
+Copyright (c) 2008, Jouni Malinen <j at w1.fi>
@@ -6767,8 +6738,8 @@
+# Run wpa_supplicant (station) for wlan1
+wpa_supplicant -Dwext -iwlan1 -c wpa_supplicant.conf
diff -up /dev/null linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/wpa_supplicant.conf
---- /dev/null 2008-07-01 08:25:54.335004873 -0400
-+++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/wpa_supplicant.conf 2008-07-01 10:55:58.000000000 -0400
+--- /dev/null 2008-07-03 09:55:47.025003120 -0400
++++ linux-2.6.25.noarch/Documentation/networking/mac80211_hwsim/wpa_supplicant.conf 2008-07-03 13:46:32.000000000 -0400
@@ -0,0 +1,10 @@
+ctrl_interface=/var/run/wpa_supplicant
+
@@ -6781,8 +6752,8 @@
+ group=CCMP
+}
diff -up linux-2.6.25.noarch/Documentation/rfkill.txt.orig linux-2.6.25.noarch/Documentation/rfkill.txt
---- linux-2.6.25.noarch/Documentation/rfkill.txt.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/Documentation/rfkill.txt 2008-07-01 10:55:58.000000000 -0400
+--- linux-2.6.25.noarch/Documentation/rfkill.txt.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/Documentation/rfkill.txt 2008-07-03 13:46:32.000000000 -0400
@@ -1,89 +1,528 @@
rfkill - RF switch subsystem support
====================================
@@ -7371,8 +7342,8 @@
+available through sysfs in a generic way at this time, and it is not available
+through the rfkill class AT ALL.
diff -up linux-2.6.25.noarch/drivers/net/b44.c.orig linux-2.6.25.noarch/drivers/net/b44.c
---- linux-2.6.25.noarch/drivers/net/b44.c.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/b44.c 2008-07-01 10:55:58.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/b44.c.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/b44.c 2008-07-03 13:46:32.000000000 -0400
@@ -148,9 +148,9 @@ static inline void b44_sync_dma_desc_for
unsigned long offset,
enum dma_data_direction dir)
@@ -7660,8 +7631,8 @@
kfree(tx_ring);
goto out_err;
diff -up linux-2.6.25.noarch/drivers/net/Kconfig.orig linux-2.6.25.noarch/drivers/net/Kconfig
---- linux-2.6.25.noarch/drivers/net/Kconfig.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/Kconfig 2008-07-01 10:55:58.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/Kconfig.orig 2008-07-03 13:21:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/Kconfig 2008-07-03 13:46:32.000000000 -0400
@@ -2283,6 +2283,19 @@ config GELIC_WIRELESS
the driver automatically distinguishes the models, you can
safely enable this option even if you have a wireless-less model.
@@ -7683,8 +7654,8 @@
tristate "Gianfar Ethernet"
depends on FSL_SOC
diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c 2008-07-01 10:55:58.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c.orig 2008-07-03 13:21:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.c 2008-07-03 13:46:32.000000000 -0400
@@ -110,7 +110,7 @@ static void gelic_card_get_ether_port_st
void gelic_card_up(struct gelic_card *card)
{
@@ -7731,8 +7702,8 @@
return card;
diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h 2008-07-01 10:55:59.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h.orig 2008-07-03 13:21:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_net.h 2008-07-03 13:46:32.000000000 -0400
@@ -298,7 +298,7 @@ struct gelic_card {
wait_queue_head_t waitq;
@@ -7743,8 +7714,8 @@
u64 ether_port_status;
diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c 2008-07-01 10:55:59.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c.orig 2008-07-03 13:21:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.c 2008-07-03 13:46:32.000000000 -0400
@@ -45,7 +45,8 @@
#include "ps3_gelic_wireless.h"
@@ -8410,8 +8381,8 @@
destroy_workqueue(wl->eurus_cmd_queue);
destroy_workqueue(wl->event_queue);
diff -up linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h
---- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h 2008-07-01 10:55:59.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/ps3_gelic_wireless.h 2008-07-03 13:46:32.000000000 -0400
@@ -241,7 +241,7 @@ enum gelic_wl_assoc_state {
#define GELIC_WEP_KEYS 4
struct gelic_wl_info {
@@ -8441,8 +8412,8 @@
struct iw_statistics iwstat;
};
diff -up linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig linux-2.6.25.noarch/drivers/net/wireless/adm8211.c
---- linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c 2008-07-01 10:55:59.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig 2008-07-03 13:21:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c 2008-07-03 13:46:32.000000000 -0400
@@ -306,11 +306,10 @@ static int adm8211_get_tx_stats(struct i
struct ieee80211_tx_queue_stats *stats)
{
@@ -8605,8 +8576,8 @@
return 0;
diff -up linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig linux-2.6.25.noarch/drivers/net/wireless/adm8211.h
---- linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.h 2008-07-01 10:55:59.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig 2008-07-03 13:21:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.h 2008-07-03 13:46:32.000000000 -0400
@@ -443,7 +443,6 @@ struct adm8211_rx_ring_info {
struct adm8211_tx_ring_info {
struct sk_buff *skb;
@@ -8616,8 +8587,8 @@
};
diff -up linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig linux-2.6.25.noarch/drivers/net/wireless/airo.c
---- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/airo.c 2008-07-01 10:55:59.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig 2008-07-03 13:21:02.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/airo.c 2008-07-03 13:46:32.000000000 -0400
@@ -85,10 +85,10 @@ static struct pci_driver airo_driver = {
/* Include Wireless Extension definition and check version - Jean II */
@@ -9063,8 +9034,8 @@
&net->bss);
diff -up linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig linux-2.6.25.noarch/drivers/net/wireless/arlan.h
---- linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig 2008-07-01 10:55:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/arlan.h 2008-07-01 10:55:59.000000000 -0400
[...3802 lines suppressed...]
}
@@ -77001,7 +76983,7 @@
set_bit(i, q->qdisc_pool);
return err;
-@@ -408,16 +379,6 @@ static int wme_qdiscop_init(struct Qdisc
+@@ -407,16 +378,6 @@ static int wme_qdiscop_init(struct Qdisc
static int wme_qdiscop_dump(struct Qdisc *qd, struct sk_buff *skb)
{
@@ -77018,7 +77000,7 @@
return -1;
}
-@@ -430,7 +391,7 @@ static int wme_classop_graft(struct Qdis
+@@ -429,7 +390,7 @@ static int wme_classop_graft(struct Qdis
struct ieee80211_hw *hw = &local->hw;
unsigned long queue = arg - 1;
@@ -77027,7 +77009,7 @@
return -EINVAL;
if (!new)
-@@ -454,7 +415,7 @@ wme_classop_leaf(struct Qdisc *qd, unsig
+@@ -453,7 +414,7 @@ wme_classop_leaf(struct Qdisc *qd, unsig
struct ieee80211_hw *hw = &local->hw;
unsigned long queue = arg - 1;
@@ -77036,7 +77018,7 @@
return NULL;
return q->queues[queue];
-@@ -467,7 +428,7 @@ static unsigned long wme_classop_get(str
+@@ -466,7 +427,7 @@ static unsigned long wme_classop_get(str
struct ieee80211_hw *hw = &local->hw;
unsigned long queue = TC_H_MIN(classid);
@@ -77045,7 +77027,7 @@
return 0;
return queue;
-@@ -493,7 +454,7 @@ static int wme_classop_change(struct Qdi
+@@ -492,7 +453,7 @@ static int wme_classop_change(struct Qdi
struct ieee80211_local *local = wdev_priv(qd->dev->ieee80211_ptr);
struct ieee80211_hw *hw = &local->hw;
@@ -77054,7 +77036,7 @@
return -ENOENT;
/* TODO: put code to program hardware queue parameters here,
-@@ -510,7 +471,7 @@ static int wme_classop_delete(struct Qdi
+@@ -509,7 +470,7 @@ static int wme_classop_delete(struct Qdi
struct ieee80211_local *local = wdev_priv(qd->dev->ieee80211_ptr);
struct ieee80211_hw *hw = &local->hw;
@@ -77063,7 +77045,7 @@
return -ENOENT;
return 0;
}
-@@ -523,7 +484,7 @@ static int wme_classop_dump_class(struct
+@@ -522,7 +483,7 @@ static int wme_classop_dump_class(struct
struct ieee80211_local *local = wdev_priv(qd->dev->ieee80211_ptr);
struct ieee80211_hw *hw = &local->hw;
@@ -77072,7 +77054,7 @@
return -ENOENT;
tcm->tcm_handle = TC_H_MIN(cl);
tcm->tcm_parent = qd->handle;
-@@ -541,7 +502,7 @@ static void wme_classop_walk(struct Qdis
+@@ -540,7 +501,7 @@ static void wme_classop_walk(struct Qdis
if (arg->stop)
return;
@@ -77081,7 +77063,7 @@
if (arg->count < arg->skip) {
arg->count++;
continue;
-@@ -658,10 +619,13 @@ int ieee80211_ht_agg_queue_add(struct ie
+@@ -657,10 +618,13 @@ int ieee80211_ht_agg_queue_add(struct ie
DECLARE_MAC_BUF(mac);
/* prepare the filter and save it for the SW queue
@@ -77097,7 +77079,7 @@
if (!test_and_set_bit(i, q->qdisc_pool)) {
ieee80211_stop_queue(local_to_hw(local), i);
sta->tid_to_tx_q[tid] = i;
-@@ -690,13 +654,14 @@ void ieee80211_ht_agg_queue_remove(struc
+@@ -689,13 +653,14 @@ void ieee80211_ht_agg_queue_remove(struc
struct sta_info *sta, u16 tid,
u8 requeue)
{
@@ -77113,7 +77095,7 @@
if (requeue)
ieee80211_requeue(local, agg_queue);
-@@ -715,7 +680,6 @@ void ieee80211_requeue(struct ieee80211_
+@@ -714,7 +679,6 @@ void ieee80211_requeue(struct ieee80211_
if (!qdisc || !qdisc->dequeue)
return;
@@ -77122,8 +77104,8 @@
skb = qdisc->dequeue(qdisc);
root_qd->q.qlen--;
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-07-01 10:55:42.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.h 2008-07-01 10:56:00.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wme.h.orig 2008-07-03 13:21:05.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.h 2008-07-03 13:46:33.000000000 -0400
@@ -31,7 +31,7 @@ static inline int WLAN_FC_IS_QOS_DATA(u1
return (fc & 0x8C) == 0x88;
}
@@ -77134,8 +77116,8 @@
int ieee80211_qdisc_installed(struct net_device *dev);
int ieee80211_ht_agg_queue_add(struct ieee80211_local *local,
diff -up linux-2.6.25.noarch/net/mac80211/wpa.c.orig linux-2.6.25.noarch/net/mac80211/wpa.c
---- linux-2.6.25.noarch/net/mac80211/wpa.c.orig 2008-07-01 10:55:42.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wpa.c 2008-07-01 10:56:51.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wpa.c.orig 2008-07-03 13:21:05.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wpa.c 2008-07-03 13:46:33.000000000 -0400
@@ -24,46 +24,22 @@ static int ieee80211_get_hdr_info(const
{
struct ieee80211_hdr *hdr;
@@ -77574,8 +77556,8 @@
}
}
diff -up linux-2.6.25.noarch/net/rfkill/rfkill.c.orig linux-2.6.25.noarch/net/rfkill/rfkill.c
---- linux-2.6.25.noarch/net/rfkill/rfkill.c.orig 2008-07-01 10:55:42.000000000 -0400
-+++ linux-2.6.25.noarch/net/rfkill/rfkill.c 2008-07-01 10:56:00.000000000 -0400
+--- linux-2.6.25.noarch/net/rfkill/rfkill.c.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/net/rfkill/rfkill.c 2008-07-03 13:46:33.000000000 -0400
@@ -39,8 +39,56 @@ MODULE_LICENSE("GPL");
static LIST_HEAD(rfkill_list); /* list of registered rf switches */
static DEFINE_MUTEX(rfkill_mutex);
@@ -78037,8 +78019,8 @@
}
diff -up linux-2.6.25.noarch/net/rfkill/rfkill-input.c.orig linux-2.6.25.noarch/net/rfkill/rfkill-input.c
---- linux-2.6.25.noarch/net/rfkill/rfkill-input.c.orig 2008-07-01 10:55:42.000000000 -0400
-+++ linux-2.6.25.noarch/net/rfkill/rfkill-input.c 2008-07-01 10:56:00.000000000 -0400
+--- linux-2.6.25.noarch/net/rfkill/rfkill-input.c.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/net/rfkill/rfkill-input.c 2008-07-03 13:46:33.000000000 -0400
@@ -30,39 +30,62 @@ struct rfkill_task {
spinlock_t lock; /* for accessing last and desired state */
unsigned long last; /* last schedule */
@@ -78196,8 +78178,8 @@
};
diff -up linux-2.6.25.noarch/net/rfkill/rfkill-input.h.orig linux-2.6.25.noarch/net/rfkill/rfkill-input.h
---- linux-2.6.25.noarch/net/rfkill/rfkill-input.h.orig 2008-07-01 10:55:42.000000000 -0400
-+++ linux-2.6.25.noarch/net/rfkill/rfkill-input.h 2008-07-01 10:56:00.000000000 -0400
+--- linux-2.6.25.noarch/net/rfkill/rfkill-input.h.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/net/rfkill/rfkill-input.h 2008-07-03 13:46:33.000000000 -0400
@@ -12,5 +12,6 @@
#define __RFKILL_INPUT_H
@@ -78206,8 +78188,8 @@
#endif /* __RFKILL_INPUT_H */
diff -up linux-2.6.25.noarch/net/socket.c.orig linux-2.6.25.noarch/net/socket.c
---- linux-2.6.25.noarch/net/socket.c.orig 2008-07-01 10:55:42.000000000 -0400
-+++ linux-2.6.25.noarch/net/socket.c 2008-07-01 10:56:00.000000000 -0400
+--- linux-2.6.25.noarch/net/socket.c.orig 2008-07-03 13:21:06.000000000 -0400
++++ linux-2.6.25.noarch/net/socket.c 2008-07-03 13:46:33.000000000 -0400
@@ -90,6 +90,7 @@
#include <asm/unistd.h>
@@ -78237,8 +78219,8 @@
}
#endif
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-07-01 10:55:42.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/core.c 2008-07-01 10:56:00.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/core.c.orig 2008-07-03 13:21:06.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/core.c 2008-07-03 13:46: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)
@@ -78302,8 +78284,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-07-01 10:55:42.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/radiotap.c 2008-07-01 10:56:00.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/radiotap.c.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/radiotap.c 2008-07-03 13:46:33.000000000 -0400
@@ -59,23 +59,21 @@ int ieee80211_radiotap_iterator_init(
return -EINVAL;
@@ -78345,8 +78327,8 @@
} else
/* no more bitmaps: end */
diff -up linux-2.6.25.noarch/net/wireless/wext.c.orig linux-2.6.25.noarch/net/wireless/wext.c
---- linux-2.6.25.noarch/net/wireless/wext.c.orig 2008-07-01 10:55:42.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/wext.c 2008-07-01 10:56:00.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/wext.c.orig 2008-07-03 13:21:06.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/wext.c 2008-07-03 13:46:33.000000000 -0400
@@ -500,7 +500,7 @@ static int call_commit_handler(struct ne
/*
* Calculate size of private arguments
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.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- linux-2.6-wireless.patch 1 Jul 2008 15:29:57 -0000 1.44
+++ linux-2.6-wireless.patch 3 Jul 2008 17:54:55 -0000 1.45
@@ -1,956 +1,114 @@
-commit 23976efedd5ecb420b87455787c537eb4aed1981
-Author: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Date: Sat Jun 28 02:50:13 2008 +0300
+commit 7b58ccfe32f40eca8c8ca29aa723a5d0e814f0c9
+Author: andrey at cozybit.com <andrey at cozybit.com>
+Date: Tue Jul 1 11:43:53 2008 -0700
- mac80211: don't accept WEP keys other than WEP40 and WEP104
+ libertas: support USB persistence on suspend/resume (resend)
- This patch makes mac80211 refuse a WEP key whose length is not WEP40 nor
- WEP104.
+ Handle .reset_resume() so that libertas can survive suspend/resume without
+ reloading the firmware.
- Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
- Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ Signed-off-by: Andrey Yurovsky <andrey at cozybit.com>
+ Acked-by: Deepak Saxena <dsaxena at laptop.org>
+ Acked-by: Dan Williams <dcbw at redhat.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 1bcca3c463e4930cef9986b05165bb0b3eb46f63
-Author: Pavel Roskin <proski at gnu.org>
-Date: Fri Jun 27 16:19:58 2008 -0400
+commit 6afe6828b19b4567768264831d101026cb5510ff
+Author: Zhu Yi <yi.zhu at intel.com>
+Date: Tue Jul 1 09:20:34 2008 +0800
- hostap: fix sparse warnings
+ iwlwifi: drop skb silently for Tx request in monitor mode
- Rewrite AID calculation in handle_pspoll() to avoid truncating bits.
- Make hostap_80211_header_parse() static, don't export it. Avoid
- shadowing variables.
+ This patch fixes the problem to keep mac80211 resubmitting SKBs
+ when Tx request cannot be met in monitor mode.
- Signed-off-by: Pavel Roskin <proski at gnu.org>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 15ea0ebc5b7305cc75189cb6b7924d0db5278e0c
-Author: Pavel Roskin <proski at gnu.org>
-Date: Fri Jun 27 16:19:52 2008 -0400
-
- hostap: don't report useless WDS frames by default
-
- DEBUG_EXTRA is reported to the kernel log by default, but DEBUG_EXTRA2
- is not. Unrelated WDS frames pollute the log unnecessarily.
-
- Signed-off-by: Pavel Roskin <proski at gnu.org>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 00eb7fe77eb455f807c396f9917f0f623d4c84bb
-Author: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
-Date: Thu Jun 26 12:13:46 2008 +0300
-
- mac80211: fix an oops in several failure paths in key allocation
-
- This patch fixes an oops in several failure paths in key allocation. This
- Oops occurs when freeing a key that has not been linked yet, so the
- key->sdata is not set.
-
- Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
- Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
- Acked-by: Johannes Berg <johannes at sipsolutions.net>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 5f4a6fae46a214c4dce3bd63a6219a5f1c818c78
-Author: Harvey Harrison <harvey.harrison at gmail.com>
-Date: Wed Jun 25 14:20:37 2008 -0700
-
- prism: islpci_eth.c endianness fix
-
- clock is already cpu-endian (see le32_to_cpu slightly before), so
- le64_to_cpu doesn't make much sense.
-
- Signed-off-by: Harvey Harrison <harvey.harrison at gmail.com>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 980dfcb93232907034a2c92d62d3a7d6ac7bef44
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date: Wed Jun 25 21:27:00 2008 +0200
-
- rt2x00: Fix lock dependency errror
-
- This fixes a circular locking dependency in the workqueue handling.
- The interface work task uses the mac80211 function
- ieee80211_iterate_active_interfaces() which grabs the RTNL lock.
-
- However when the interface is brough down, this happens under the RTNL
- lock as well, this causes problems because mac80211 will flush the workqueue
- during the ifdown event. This causes mac80211 to wait until the driver has
- completed all work which can't finish because it is waiting on the RTNL lock.
-
- This is fixed by moving rt2x00 workqueue tasks on a different workqueue,
- this workqueue can be flushed when the ieee80211_hw structure is removed
- by the driver (when the driver is unloaded) which does not happen under the
- RTNL lock.
-
- Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 66b5004d85164a6439d3ba1e7757734472ee2cac
-Author: Ron Rindjunsky <ron.rindjunsky at intel.com>
-Date: Wed Jun 25 16:46:31 2008 +0800
-
- iwlwifi: improve scanning band selection management
-
- This patch modifies the band selection management when scanning, so
- bands are now scanned according to HW band support.
-
- Signed-off-by: Ron Rindjunsky <ron.rindjunsky at intel.com>
- Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
Signed-off-by: Zhu Yi <yi.zhu at intel.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 99ade2597e3f7f0ad463c489aaccd6cc605e242c
-Author: Ivo van Doorn <ivdoorn at gmail.com>
-Date: Fri Jun 20 22:11:00 2008 +0200
+commit ec04fd60fd74a9db9c63fe11d519be3642cabfdd
+Author: Rick Farrington <rickdic at hotmail.com>
+Date: Tue Jul 1 09:20:33 2008 +0800
- rt2x00: Fix unbalanced mutex locking
+ iwlwifi: fix incorrect 5GHz rates reported in monitor mode
- The usb_cache_mutex was not correctly released
- under all circumstances. Both rt73usb as rt2500usb
- didn't release the mutex under certain conditions
- when the register access failed. Obviously such
- failure would lead to deadlocks.
-
- In addition under similar circumstances when the
- bbp register couldn't be read the value must be
- set to 0xff to indicate that the value is wrong.
- This too didn't happen under all circumstances.
-
- Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 2f9ec47d0954f9d2e5a00209c2689cbc477a8c89
-Author: Michael Buesch <mb at bu3sch.de>
-Date: Fri Jun 20 11:40:46 2008 +0200
-
- b43legacy: Fix possible NULL pointer dereference in DMA code
-
- This fixes a possible NULL pointer dereference in an error path of the
- DMA allocation error checking code. This is also necessary for a future
- DMA API change that is on its way into the mainline kernel that adds
- an additional dev parameter to dma_mapping_error().
-
- Signed-off-by: Michael Buesch <mb at bu3sch.de>
- Cc: stable <stable at kernel.org>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 7b3abfc87ec13a81b255012b6e1bd4caeeb05aec
-Author: Michael Buesch <mb at bu3sch.de>
-Date: Sun Jun 15 16:01:24 2008 +0200
-
- b43: Fix possible MMIO access while device is down
-
- This fixes a possible MMIO access while the device is still down
- from a suspend cycle. MMIO accesses with the device powered down
- may cause crashes on certain devices.
-
- Signed-off-by: Michael Buesch <mb at bu3sch.de>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 664f200610a3c9641ff58fc91b986b804cb1cc2d
-Author: Michael Buesch <mb at bu3sch.de>
-Date: Sun Jun 15 15:27:49 2008 +0200
-
- b43legacy: Do not return TX_BUSY from op_tx
+ This patch fixes the rates reported in monitor mode operation
+ (Wireshark) for iwlwifi.
- Never return TX_BUSY from op_tx. It doesn't make sense to return
- TX_BUSY, if we can not transmit the packet.
- Drop the packet and return TX_OK.
+ Previously, packets with rates of 6M..24M would be reported
+ incorrectly and packets with rates of 36M..54M would not passed
+ up the stack.
- Signed-off-by: Michael Buesch <mb at bu3sch.de>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit c9e8eae0935f03e2d03a7ad7af80d8fc6c53e68c
-Author: Michael Buesch <mb at bu3sch.de>
-Date: Sun Jun 15 15:17:29 2008 +0200
-
- b43: Do not return TX_BUSY from op_tx
-
- Never return TX_BUSY from op_tx. It doesn't make sense to return
- TX_BUSY, if we can not transmit the packet.
- Drop the packet and return TX_OK.
- This will fix the resume hang.
-
- Signed-off-by: Michael Buesch <mb at bu3sch.de>
- Signed-off-by: John W. Linville <linville at tuxdriver.com>
-
-commit 59d393ad92f719d9ef36b96eae56d4817a7eeb10
-Author: Tony Vroon <tony at linx.net>
-Date: Wed Jun 11 16:23:56 2008 -0400
-
- mac80211: implement EU regulatory domain
-
- Implement missing EU regulatory domain for mac80211. Based on the
- information in IEEE 802.11-2007 (specifically pages 1142, 1143 & 1148)
- and ETSI 301 893 (V1.4.1).
- With thanks to Johannes Berg.
-
- Signed-off-by: Tony Vroon <tony at linx.net>
- Acked-by: Johannes Berg <johannes at sipsolutions.net>
+ Signed-off-by: Rick Farrington <rickdic at hotmail.com>
+ Signed-off-by: Zhu Yi <yi.zhu at intel.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c 2008-07-01 10:48:12.000000000 -0400
-@@ -72,6 +72,9 @@ static void b43_led_brightness_set(struc
- struct b43_wldev *dev = led->dev;
- bool radio_enabled;
-
-+ if (unlikely(b43_status(dev) < B43_STAT_INITIALIZED))
-+ return;
-+
- /* Checking the radio-enabled status here is slightly racy,
- * but we want to avoid the locking overhead and we don't care
- * whether the LED has the wrong state for a second. */
-diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c 2008-07-01 10:48:12.000000000 -0400
-@@ -876,6 +876,7 @@ struct b43legacy_dmaring *b43legacy_setu
- if (!ring)
- goto out;
- ring->type = type;
-+ ring->dev = dev;
-
- nr_slots = B43legacy_RXRING_SLOTS;
- if (for_tx)
-@@ -922,7 +923,6 @@ struct b43legacy_dmaring *b43legacy_setu
- DMA_TO_DEVICE);
- }
-
-- ring->dev = dev;
- ring->nr_slots = nr_slots;
- ring->mmio_base = b43legacy_dmacontroller_base(type, controller_index);
- ring->index = controller_index;
-diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c 2008-07-01 10:48:12.000000000 -0400
-@@ -2378,8 +2378,10 @@ static int b43legacy_op_tx(struct ieee80
- } else
- err = b43legacy_dma_tx(dev, skb, ctl);
- out:
-- if (unlikely(err))
-- return NETDEV_TX_BUSY;
-+ if (unlikely(err)) {
-+ /* Drop the packet. */
+diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2008-07-03 13:21:06.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-07-03 13:38:42.000000000 -0400
+@@ -6687,7 +6687,8 @@ static int iwl3945_mac_tx(struct ieee802
+
+ if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) {
+ IWL_DEBUG_MAC80211("leave - monitor\n");
+- return -1;
+ dev_kfree_skb_any(skb);
-+ }
- return NETDEV_TX_OK;
- }
-
-diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/main.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c 2008-07-01 10:48:12.000000000 -0400
-@@ -2883,12 +2883,11 @@ static int b43_op_tx(struct ieee80211_hw
-
- if (unlikely(skb->len < 2 + 2 + 6)) {
- /* Too short, this can't be a valid frame. */
-- dev_kfree_skb_any(skb);
-- return NETDEV_TX_OK;
-+ goto drop_packet;
++ return 0;
}
- B43_WARN_ON(skb_shinfo(skb)->nr_frags);
- if (unlikely(!dev))
-- return NETDEV_TX_BUSY;
-+ goto drop_packet;
-
- /* Transmissions on seperate queues can run concurrently. */
- read_lock_irqsave(&wl->tx_lock, flags);
-@@ -2904,7 +2903,12 @@ static int b43_op_tx(struct ieee80211_hw
- read_unlock_irqrestore(&wl->tx_lock, flags);
- if (unlikely(err))
-- return NETDEV_TX_BUSY;
-+ goto drop_packet;
-+ return NETDEV_TX_OK;
+ IWL_DEBUG_TX("dev->xmit(%d bytes) at rate 0x%02x\n", skb->len,
+diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c.orig 2008-07-03 13:21:03.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-3945.c 2008-07-03 13:38:42.000000000 -0400
+@@ -588,8 +588,12 @@ static void iwl3945_add_radiotap(struct
+
+ if (rate == -1)
+ iwl3945_rt->rt_rate = 0;
+- else
++ else {
++ if (stats->band == IEEE80211_BAND_5GHZ)
++ rate += IWL_FIRST_OFDM_RATE;
+
-+drop_packet:
-+ /* We can not transmit this packet. Drop it. */
-+ dev_kfree_skb_any(skb);
- return NETDEV_TX_OK;
- }
-
-diff -up linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_80211_rx.c.orig linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_80211_rx.c
---- linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_80211_rx.c.orig 2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_80211_rx.c 2008-07-01 10:48:57.000000000 -0400
-@@ -64,7 +64,7 @@ int prism2_rx_80211(struct net_device *d
- int hdrlen, phdrlen, head_need, tail_need;
- u16 fc;
- int prism_header, ret;
-- struct ieee80211_hdr_4addr *hdr;
-+ struct ieee80211_hdr_4addr *fhdr;
-
- iface = netdev_priv(dev);
- local = iface->local;
-@@ -83,8 +83,8 @@ int prism2_rx_80211(struct net_device *d
- phdrlen = 0;
- }
-
-- hdr = (struct ieee80211_hdr_4addr *) skb->data;
-- fc = le16_to_cpu(hdr->frame_ctl);
-+ fhdr = (struct ieee80211_hdr_4addr *) skb->data;
-+ fc = le16_to_cpu(fhdr->frame_ctl);
-
- if (type == PRISM2_RX_MGMT && (fc & IEEE80211_FCTL_VERS)) {
- printk(KERN_DEBUG "%s: dropped management frame with header "
-@@ -551,7 +551,7 @@ hostap_rx_frame_wds(local_info_t *local,
- hdr->addr1[2] != 0xff || hdr->addr1[3] != 0xff ||
- hdr->addr1[4] != 0xff || hdr->addr1[5] != 0xff)) {
- /* RA (or BSSID) is not ours - drop */
-- PDEBUG(DEBUG_EXTRA, "%s: received WDS frame with "
-+ PDEBUG(DEBUG_EXTRA2, "%s: received WDS frame with "
- "not own or broadcast %s=%s\n",
- local->dev->name,
- fc & IEEE80211_FCTL_FROMDS ? "RA" : "BSSID",
-diff -up linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_ap.c.orig linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_ap.c
---- linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_ap.c.orig 2008-07-01 10:47:45.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_ap.c 2008-07-01 10:48:57.000000000 -0400
-@@ -1930,7 +1930,7 @@ static void handle_pspoll(local_info_t *
- PDEBUG(DEBUG_PS, " PSPOLL and AID[15:14] not set\n");
- return;
- }
-- aid &= ~BIT(15) & ~BIT(14);
-+ aid &= ~(BIT(15) | BIT(14));
- if (aid == 0 || aid > MAX_AID_TABLE_SIZE) {
- PDEBUG(DEBUG_PS, " invalid aid=%d\n", aid);
- return;
-diff -up linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_cs.c.orig linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_cs.c
---- linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_cs.c.orig 2008-07-01 10:34:15.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_cs.c 2008-07-01 10:48:57.000000000 -0400
-@@ -533,10 +533,10 @@ static void prism2_detach(struct pcmcia_
- do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)
-
- #define CFG_CHECK2(fn, retf) \
--do { int ret = (retf); \
--if (ret != 0) { \
-- PDEBUG(DEBUG_EXTRA, "CardServices(" #fn ") returned %d\n", ret); \
-- cs_error(link, fn, ret); \
-+do { int _ret = (retf); \
-+if (_ret != 0) { \
-+ PDEBUG(DEBUG_EXTRA, "CardServices(" #fn ") returned %d\n", _ret); \
-+ cs_error(link, fn, _ret); \
- goto next_entry; \
- } \
- } while (0)
-diff -up linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_hw.c.orig linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_hw.c
---- linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_hw.c.orig 2008-07-01 10:34:15.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_hw.c 2008-07-01 10:48:57.000000000 -0400
-@@ -2835,7 +2835,7 @@ static void hostap_passive_scan(unsigned
- {
- local_info_t *local = (local_info_t *) data;
- struct net_device *dev = local->dev;
-- u16 channel;
-+ u16 chan;
-
- if (local->passive_scan_interval <= 0)
- return;
-@@ -2872,11 +2872,11 @@ static void hostap_passive_scan(unsigned
-
- printk(KERN_DEBUG "%s: passive scan channel %d\n",
- dev->name, local->passive_scan_channel);
-- channel = local->passive_scan_channel;
-+ chan = local->passive_scan_channel;
- local->passive_scan_state = PASSIVE_SCAN_WAIT;
- local->passive_scan_timer.expires = jiffies + HZ / 10;
- } else {
-- channel = local->channel;
-+ chan = local->channel;
- local->passive_scan_state = PASSIVE_SCAN_LISTEN;
- local->passive_scan_timer.expires = jiffies +
- local->passive_scan_interval * HZ;
-@@ -2884,9 +2884,9 @@ static void hostap_passive_scan(unsigned
-
- if (hfa384x_cmd_callback(dev, HFA384X_CMDCODE_TEST |
- (HFA384X_TEST_CHANGE_CHANNEL << 8),
-- channel, NULL, 0))
-+ chan, NULL, 0))
- printk(KERN_ERR "%s: passive scan channel set %d "
-- "failed\n", dev->name, channel);
-+ "failed\n", dev->name, chan);
-
- add_timer(&local->passive_scan_timer);
- }
-diff -up linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_main.c.orig linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_main.c
---- linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_main.c.orig 2008-07-01 10:34:15.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_main.c 2008-07-01 10:48:57.000000000 -0400
-@@ -594,7 +594,8 @@ void hostap_dump_tx_header(const char *n
- }
-
-
--int hostap_80211_header_parse(const struct sk_buff *skb, unsigned char *haddr)
-+static int hostap_80211_header_parse(const struct sk_buff *skb,
-+ unsigned char *haddr)
- {
- struct hostap_interface *iface = netdev_priv(skb->dev);
- local_info_t *local = iface->local;
-@@ -857,7 +858,6 @@ const struct header_ops hostap_80211_ops
- .rebuild = eth_rebuild_header,
- .cache = eth_header_cache,
- .cache_update = eth_header_cache_update,
--
- .parse = hostap_80211_header_parse,
- };
- EXPORT_SYMBOL(hostap_80211_ops);
-@@ -1150,7 +1150,6 @@ EXPORT_SYMBOL(hostap_set_roaming);
- EXPORT_SYMBOL(hostap_set_auth_algs);
- EXPORT_SYMBOL(hostap_dump_rx_header);
- EXPORT_SYMBOL(hostap_dump_tx_header);
--EXPORT_SYMBOL(hostap_80211_header_parse);
- EXPORT_SYMBOL(hostap_80211_get_hdrlen);
- EXPORT_SYMBOL(hostap_get_stats);
- EXPORT_SYMBOL(hostap_setup_dev);
-diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c
---- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-07-01 10:48:12.000000000 -0400
-@@ -2227,7 +2227,10 @@ static int iwl3945_scan_initiate(struct
- }
-
- IWL_DEBUG_INFO("Starting scan...\n");
-- priv->scan_bands = 2;
-+ if (priv->cfg->sku & IWL_SKU_G)
-+ priv->scan_bands |= BIT(IEEE80211_BAND_2GHZ);
-+ if (priv->cfg->sku & IWL_SKU_A)
-+ priv->scan_bands |= BIT(IEEE80211_BAND_5GHZ);
- set_bit(STATUS_SCANNING, &priv->status);
- priv->scan_start = jiffies;
- priv->scan_pass_start = priv->scan_start;
-@@ -3352,13 +3355,18 @@ static void iwl3945_rx_scan_complete_not
- cancel_delayed_work(&priv->scan_check);
-
- IWL_DEBUG_INFO("Scan pass on %sGHz took %dms\n",
-- (priv->scan_bands == 2) ? "2.4" : "5.2",
-+ (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) ?
-+ "2.4" : "5.2",
- jiffies_to_msecs(elapsed_jiffies
- (priv->scan_pass_start, jiffies)));
-
-- /* Remove this scanned band from the list
-- * of pending bands to scan */
-- priv->scan_bands--;
-+ /* Remove this scanned band from the list of pending
-+ * bands to scan, band G precedes A in order of scanning
-+ * as seen in iwl3945_bg_request_scan */
-+ if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ))
-+ priv->scan_bands &= ~BIT(IEEE80211_BAND_2GHZ);
-+ else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ))
-+ priv->scan_bands &= ~BIT(IEEE80211_BAND_5GHZ);
-
- /* If a request to abort was given, or the scan did not succeed
- * then we reset the scan state machine and terminate,
-@@ -4972,7 +4980,7 @@ static int iwl3945_get_channels_for_scan
-
- ch_info = iwl3945_get_channel_info(priv, band, scan_ch->channel);
- if (!is_channel_valid(ch_info)) {
-- IWL_DEBUG_SCAN("Channel %d is INVALID for this SKU.\n",
-+ IWL_DEBUG_SCAN("Channel %d is INVALID for this band.\n",
- scan_ch->channel);
- continue;
- }
-@@ -6315,21 +6323,16 @@ static void iwl3945_bg_request_scan(stru
-
- /* flags + rate selection */
+ iwl3945_rt->rt_rate = iwl3945_rates[rate].ieee;
++ }
-- switch (priv->scan_bands) {
-- case 2:
-+ if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) {
- scan->flags = RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK;
- scan->tx_cmd.rate = IWL_RATE_1M_PLCP;
- scan->good_CRC_th = 0;
- band = IEEE80211_BAND_2GHZ;
-- break;
--
-- case 1:
-+ } else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ)) {
- scan->tx_cmd.rate = IWL_RATE_6M_PLCP;
- scan->good_CRC_th = IWL_GOOD_CRC_TH;
- band = IEEE80211_BAND_5GHZ;
-- break;
--
-- default:
-+ } else {
- IWL_WARNING("Invalid scan band count\n");
- goto done;
- }
-@@ -6770,7 +6773,7 @@ static int iwl3945_mac_config(struct iee
- ch_info = iwl3945_get_channel_info(priv, conf->channel->band,
- conf->channel->hw_value);
- if (!is_channel_valid(ch_info)) {
-- IWL_DEBUG_SCAN("Channel %d [%d] is INVALID for this SKU.\n",
-+ IWL_DEBUG_SCAN("Channel %d [%d] is INVALID for this band.\n",
- conf->channel->hw_value, conf->channel->band);
- IWL_DEBUG_MAC80211("leave - invalid channel\n");
- spin_unlock_irqrestore(&priv->lock, flags);
+ /* antenna number */
+ antenna = phy_flags_hw & RX_RES_PHY_FLAGS_ANTENNA_MSK;
diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c
---- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2008-07-01 10:48:12.000000000 -0400
-@@ -1774,7 +1774,10 @@ static int iwl4965_scan_initiate(struct
- }
-
- IWL_DEBUG_INFO("Starting scan...\n");
-- priv->scan_bands = 2;
-+ if (priv->cfg->sku & IWL_SKU_G)
-+ priv->scan_bands |= BIT(IEEE80211_BAND_2GHZ);
-+ if (priv->cfg->sku & IWL_SKU_A)
-+ priv->scan_bands |= BIT(IEEE80211_BAND_5GHZ);
- set_bit(STATUS_SCANNING, &priv->status);
- priv->scan_start = jiffies;
- priv->scan_pass_start = priv->scan_start;
-@@ -3023,8 +3026,9 @@ static void iwl4965_rx_reply_tx(struct i
-
- IWL_DEBUG_TX_REPLY("Tx queue reclaim %d\n", index);
- if (index != -1) {
-- int freed = iwl4965_tx_queue_reclaim(priv, txq_id, index);
- #ifdef CONFIG_IWL4965_HT
-+ int freed = iwl4965_tx_queue_reclaim(priv, txq_id, index);
-+
- if (tid != MAX_TID_COUNT)
- priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;
- if (iwl4965_queue_space(&txq->q) > txq->q.low_mark &&
-@@ -3276,13 +3280,18 @@ static void iwl4965_rx_scan_complete_not
- cancel_delayed_work(&priv->scan_check);
-
- IWL_DEBUG_INFO("Scan pass on %sGHz took %dms\n",
-- (priv->scan_bands == 2) ? "2.4" : "5.2",
-+ (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) ?
-+ "2.4" : "5.2",
- jiffies_to_msecs(elapsed_jiffies
- (priv->scan_pass_start, jiffies)));
-
-- /* Remove this scanned band from the list
-- * of pending bands to scan */
-- priv->scan_bands--;
-+ /* Remove this scanned band from the list of pending
-+ * bands to scan, band G precedes A in order of scanning
-+ * as seen in iwl_bg_request_scan */
-+ if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ))
-+ priv->scan_bands &= ~BIT(IEEE80211_BAND_2GHZ);
-+ else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ))
-+ priv->scan_bands &= ~BIT(IEEE80211_BAND_5GHZ);
-
- /* If a request to abort was given, or the scan did not succeed
- * then we reset the scan state machine and terminate,
-@@ -3292,7 +3301,7 @@ static void iwl4965_rx_scan_complete_not
- clear_bit(STATUS_SCAN_ABORTING, &priv->status);
- } else {
- /* If there are more bands on this scan pass reschedule */
-- if (priv->scan_bands > 0)
-+ if (priv->scan_bands)
- goto reschedule;
- }
-
-@@ -4635,10 +4644,9 @@ static int iwl4965_get_channels_for_scan
-
- scan_ch->channel = ieee80211_frequency_to_channel(channels[i].center_freq);
-
-- ch_info = iwl_get_channel_info(priv, band,
-- scan_ch->channel);
-+ ch_info = iwl_get_channel_info(priv, band, scan_ch->channel);
- if (!is_channel_valid(ch_info)) {
-- IWL_DEBUG_SCAN("Channel %d is INVALID for this SKU.\n",
-+ IWL_DEBUG_SCAN("Channel %d is INVALID for this band.\n",
- scan_ch->channel);
- continue;
- }
-@@ -5830,8 +5838,7 @@ static void iwl4965_bg_request_scan(stru
- scan->tx_cmd.stop_time.life_time = TX_CMD_LIFE_TIME_INFINITE;
-
-
-- switch (priv->scan_bands) {
-- case 2:
-+ if (priv->scan_bands & BIT(IEEE80211_BAND_2GHZ)) {
- scan->flags = RXON_FLG_BAND_24G_MSK | RXON_FLG_AUTO_DETECT_MSK;
- scan->tx_cmd.rate_n_flags =
- iwl4965_hw_set_rate_n_flags(IWL_RATE_1M_PLCP,
-@@ -5839,17 +5846,13 @@ static void iwl4965_bg_request_scan(stru
-
- scan->good_CRC_th = 0;
- band = IEEE80211_BAND_2GHZ;
-- break;
--
-- case 1:
-+ } else if (priv->scan_bands & BIT(IEEE80211_BAND_5GHZ)) {
- scan->tx_cmd.rate_n_flags =
- iwl4965_hw_set_rate_n_flags(IWL_RATE_6M_PLCP,
- RATE_MCS_ANT_B_MSK);
- scan->good_CRC_th = IWL_GOOD_CRC_TH;
- band = IEEE80211_BAND_5GHZ;
-- break;
--
-- default:
-+ } else {
- IWL_WARNING("Invalid scan band count\n");
- goto done;
- }
-diff -up linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c.orig linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c
---- linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c 2008-07-01 10:48:12.000000000 -0400
-@@ -290,7 +290,7 @@ islpci_monitor_rx(islpci_private *priv,
-
- avs->version = cpu_to_be32(P80211CAPTURE_VERSION);
- avs->length = cpu_to_be32(sizeof (struct avs_80211_1_header));
-- avs->mactime = cpu_to_be64(le64_to_cpu(clock));
-+ avs->mactime = cpu_to_be64(clock);
- avs->hosttime = cpu_to_be64(jiffies);
- avs->phytype = cpu_to_be32(6); /*OFDM: 6 for (g), 8 for (a) */
- avs->channel = cpu_to_be32(channel_of_freq(freq));
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c 2008-07-01 10:48:12.000000000 -0400
-@@ -138,11 +138,8 @@ static void rt2500usb_bbp_write(struct r
- * Wait until the BBP becomes ready.
- */
- reg = rt2500usb_bbp_check(rt2x00dev);
-- if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) {
-- ERROR(rt2x00dev, "PHY_CSR8 register busy. Write failed.\n");
-- mutex_unlock(&rt2x00dev->usb_cache_mutex);
-- return;
-- }
-+ if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
-+ goto exit_fail;
-
- /*
- * Write the data into the BBP.
-@@ -155,6 +152,13 @@ static void rt2500usb_bbp_write(struct r
- rt2500usb_register_write_lock(rt2x00dev, PHY_CSR7, reg);
-
- mutex_unlock(&rt2x00dev->usb_cache_mutex);
-+
-+ return;
-+
-+exit_fail:
-+ mutex_unlock(&rt2x00dev->usb_cache_mutex);
-+
-+ ERROR(rt2x00dev, "PHY_CSR8 register busy. Write failed.\n");
- }
-
- static void rt2500usb_bbp_read(struct rt2x00_dev *rt2x00dev,
-@@ -168,10 +172,8 @@ static void rt2500usb_bbp_read(struct rt
- * Wait until the BBP becomes ready.
- */
- reg = rt2500usb_bbp_check(rt2x00dev);
-- if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) {
-- ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n");
-- return;
-- }
-+ if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
-+ goto exit_fail;
-
- /*
- * Write the request into the BBP.
-@@ -186,17 +188,21 @@ static void rt2500usb_bbp_read(struct rt
- * Wait until the BBP becomes ready.
- */
- reg = rt2500usb_bbp_check(rt2x00dev);
-- if (rt2x00_get_field16(reg, PHY_CSR8_BUSY)) {
-- ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n");
-- *value = 0xff;
-- mutex_unlock(&rt2x00dev->usb_cache_mutex);
-- return;
-- }
-+ if (rt2x00_get_field16(reg, PHY_CSR8_BUSY))
-+ goto exit_fail;
-
- rt2500usb_register_read_lock(rt2x00dev, PHY_CSR7, ®);
- *value = rt2x00_get_field16(reg, PHY_CSR7_DATA);
-
- mutex_unlock(&rt2x00dev->usb_cache_mutex);
-+
-+ return;
-+
-+exit_fail:
-+ mutex_unlock(&rt2x00dev->usb_cache_mutex);
-+
-+ ERROR(rt2x00dev, "PHY_CSR8 register busy. Read failed.\n");
-+ *value = 0xff;
- }
-
- static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev,
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/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-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c 2008-07-01 10:48:12.000000000 -0400
-@@ -75,7 +75,7 @@ static void rt2x00lib_start_link_tuner(s
-
- rt2x00lib_reset_link_tuner(rt2x00dev);
-
-- queue_delayed_work(rt2x00dev->hw->workqueue,
-+ queue_delayed_work(rt2x00dev->workqueue,
- &rt2x00dev->link.work, LINK_TUNE_INTERVAL);
- }
-
-@@ -137,14 +137,6 @@ void rt2x00lib_disable_radio(struct rt2x
- return;
-
- /*
-- * Stop all scheduled work.
-- */
-- if (work_pending(&rt2x00dev->intf_work))
-- cancel_work_sync(&rt2x00dev->intf_work);
-- if (work_pending(&rt2x00dev->filter_work))
-- cancel_work_sync(&rt2x00dev->filter_work);
--
-- /*
- * Stop the TX queues.
- */
- ieee80211_stop_queues(rt2x00dev->hw);
-@@ -398,8 +390,8 @@ static void rt2x00lib_link_tuner(struct
- * Increase tuner counter, and reschedule the next link tuner run.
- */
- rt2x00dev->link.count++;
-- queue_delayed_work(rt2x00dev->hw->workqueue, &rt2x00dev->link.work,
-- LINK_TUNE_INTERVAL);
-+ queue_delayed_work(rt2x00dev->workqueue,
-+ &rt2x00dev->link.work, LINK_TUNE_INTERVAL);
- }
-
- static void rt2x00lib_packetfilter_scheduled(struct work_struct *work)
-@@ -433,6 +425,15 @@ static void rt2x00lib_intf_scheduled_ite
-
- spin_unlock(&intf->lock);
-
-+ /*
-+ * It is possible the radio was disabled while the work had been
-+ * scheduled. If that happens we should return here immediately,
-+ * note that in the spinlock protected area above the delayed_flags
-+ * have been cleared correctly.
-+ */
-+ if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
-+ return;
-+
- if (delayed_flags & DELAYED_UPDATE_BEACON) {
- skb = ieee80211_beacon_get(rt2x00dev->hw, vif, &control);
- if (skb && rt2x00dev->ops->hw->beacon_update(rt2x00dev->hw,
-@@ -441,7 +442,7 @@ static void rt2x00lib_intf_scheduled_ite
- }
-
- if (delayed_flags & DELAYED_CONFIG_ERP)
-- rt2x00lib_config_erp(rt2x00dev, intf, &intf->conf);
-+ rt2x00lib_config_erp(rt2x00dev, intf, &conf);
-
- if (delayed_flags & DELAYED_LED_ASSOC)
- rt2x00leds_led_assoc(rt2x00dev, !!rt2x00dev->intf_associated);
-@@ -487,7 +488,7 @@ void rt2x00lib_beacondone(struct rt2x00_
- rt2x00lib_beacondone_iter,
- rt2x00dev);
-
-- queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work);
-+ queue_work(rt2x00dev->workqueue, &rt2x00dev->intf_work);
- }
- EXPORT_SYMBOL_GPL(rt2x00lib_beacondone);
-
-@@ -1130,6 +1131,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
- /*
- * Initialize configuration work.
- */
-+ rt2x00dev->workqueue = create_singlethread_workqueue("rt2x00lib");
-+ if (!rt2x00dev->workqueue)
-+ goto exit;
-+
- INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled);
- INIT_WORK(&rt2x00dev->filter_work, rt2x00lib_packetfilter_scheduled);
- INIT_DELAYED_WORK(&rt2x00dev->link.work, rt2x00lib_link_tuner);
-@@ -1190,6 +1195,13 @@ void rt2x00lib_remove_dev(struct rt2x00_
- rt2x00leds_unregister(rt2x00dev);
-
- /*
-+ * Stop all queued work. Note that most tasks will already be halted
-+ * during rt2x00lib_disable_radio() and rt2x00lib_uninitialize().
-+ */
-+ flush_workqueue(rt2x00dev->workqueue);
-+ destroy_workqueue(rt2x00dev->workqueue);
-+
-+ /*
- * Free ieee80211_hw memory.
- */
- rt2x00lib_remove_hw(rt2x00dev);
-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-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h 2008-07-01 10:48:12.000000000 -0400
-@@ -821,6 +821,7 @@ struct rt2x00_dev {
- /*
- * Scheduled work.
- */
-+ struct workqueue_struct *workqueue;
- struct work_struct intf_work;
- struct work_struct filter_work;
-
-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-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c 2008-07-01 10:48:12.000000000 -0400
-@@ -428,7 +428,7 @@ void rt2x00mac_configure_filter(struct i
- if (!test_bit(DRIVER_REQUIRE_SCHEDULED, &rt2x00dev->flags))
- rt2x00dev->ops->lib->config_filter(rt2x00dev, *total_flags);
- else
-- queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->filter_work);
-+ queue_work(rt2x00dev->workqueue, &rt2x00dev->filter_work);
- }
- EXPORT_SYMBOL_GPL(rt2x00mac_configure_filter);
-
-@@ -509,7 +509,7 @@ void rt2x00mac_bss_info_changed(struct i
- memcpy(&intf->conf, bss_conf, sizeof(*bss_conf));
- if (delayed) {
- intf->delayed_flags |= delayed;
-- queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work);
-+ queue_work(rt2x00dev->workqueue, &rt2x00dev->intf_work);
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig 2008-07-03 13:21:06.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2008-07-03 13:38:42.000000000 -0400
+@@ -6237,7 +6237,8 @@ static int iwl4965_mac_tx(struct ieee802
+
+ if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) {
+ IWL_DEBUG_MAC80211("leave - monitor\n");
+- return -1;
++ dev_kfree_skb_any(skb);
++ return 0;
}
- spin_unlock(&intf->lock);
- }
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c 2008-07-01 10:48:12.000000000 -0400
-@@ -134,11 +134,8 @@ static void rt73usb_bbp_write(struct rt2
- * Wait until the BBP becomes ready.
- */
- reg = rt73usb_bbp_check(rt2x00dev);
-- if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) {
-- ERROR(rt2x00dev, "PHY_CSR3 register busy. Write failed.\n");
-- mutex_unlock(&rt2x00dev->usb_cache_mutex);
-- return;
-- }
-+ if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
-+ goto exit_fail;
-
- /*
- * Write the data into the BBP.
-@@ -151,6 +148,13 @@ static void rt73usb_bbp_write(struct rt2
- rt73usb_register_write_lock(rt2x00dev, PHY_CSR3, reg);
- mutex_unlock(&rt2x00dev->usb_cache_mutex);
-+
-+ return;
-+
-+exit_fail:
-+ mutex_unlock(&rt2x00dev->usb_cache_mutex);
+ IWL_DEBUG_TX("dev->xmit(%d bytes) at rate 0x%02x\n", skb->len,
+diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c.orig 2008-07-03 13:21:03.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965.c 2008-07-03 13:38:42.000000000 -0400
+@@ -3528,8 +3528,12 @@ static void iwl4965_add_radiotap(struct
+
+ if (rate == -1)
+ iwl4965_rt->rt_rate = 0;
+- else
++ else {
++ if (stats->band == IEEE80211_BAND_5GHZ)
++ rate += IWL_FIRST_OFDM_RATE;
+
-+ ERROR(rt2x00dev, "PHY_CSR3 register busy. Write failed.\n");
- }
-
- static void rt73usb_bbp_read(struct rt2x00_dev *rt2x00dev,
-@@ -164,11 +168,8 @@ static void rt73usb_bbp_read(struct rt2x
- * Wait until the BBP becomes ready.
- */
- reg = rt73usb_bbp_check(rt2x00dev);
-- if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) {
-- ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n");
-- mutex_unlock(&rt2x00dev->usb_cache_mutex);
-- return;
-- }
-+ if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
-+ goto exit_fail;
-
- /*
- * Write the request into the BBP.
-@@ -184,14 +185,19 @@ static void rt73usb_bbp_read(struct rt2x
- * Wait until the BBP becomes ready.
- */
- reg = rt73usb_bbp_check(rt2x00dev);
-- if (rt2x00_get_field32(reg, PHY_CSR3_BUSY)) {
-- ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n");
-- *value = 0xff;
-- return;
-- }
-+ if (rt2x00_get_field32(reg, PHY_CSR3_BUSY))
-+ goto exit_fail;
-
- *value = rt2x00_get_field32(reg, PHY_CSR3_VALUE);
- mutex_unlock(&rt2x00dev->usb_cache_mutex);
-+
-+ return;
-+
-+exit_fail:
-+ mutex_unlock(&rt2x00dev->usb_cache_mutex);
-+
-+ ERROR(rt2x00dev, "PHY_CSR3 register busy. Read failed.\n");
-+ *value = 0xff;
- }
-
- static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev,
-diff -up linux-2.6.25.noarch/include/net/mac80211.h.orig linux-2.6.25.noarch/include/net/mac80211.h
---- linux-2.6.25.noarch/include/net/mac80211.h.orig 2008-07-01 10:47:45.000000000 -0400
-+++ linux-2.6.25.noarch/include/net/mac80211.h 2008-07-01 10:48:57.000000000 -0400
-@@ -595,6 +595,15 @@ enum ieee80211_key_alg {
- ALG_CCMP,
- };
-
-+/**
-+ * enum ieee80211_key_len - key length
-+ * @WEP40: WEP 5 byte long key
-+ * @WEP104: WEP 13 byte long key
-+ */
-+enum ieee80211_key_len {
-+ LEN_WEP40 = 5,
-+ LEN_WEP104 = 13,
-+};
-
- /**
- * enum ieee80211_key_flags - key flags
-diff -up linux-2.6.25.noarch/net/mac80211/key.c.orig linux-2.6.25.noarch/net/mac80211/key.c
---- linux-2.6.25.noarch/net/mac80211/key.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/key.c 2008-07-01 10:48:12.000000000 -0400
-@@ -380,6 +380,15 @@ void ieee80211_key_free(struct ieee80211
- if (!key)
- return;
-
-+ if (!key->sdata) {
-+ /* The key has not been linked yet, simply free it
-+ * and don't Oops */
-+ if (key->conf.alg == ALG_CCMP)
-+ ieee80211_aes_key_free(key->u.ccmp.tfm);
-+ kfree(key);
-+ return;
+ iwl4965_rt->rt_rate = iwl4965_rates[rate].ieee;
+ }
-+
- spin_lock_irqsave(&key->sdata->local->key_lock, flags);
- __ieee80211_key_free(key);
- spin_unlock_irqrestore(&key->sdata->local->key_lock, flags);
-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-07-01 10:47:46.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wext.c 2008-07-01 10:48:57.000000000 -0400
-@@ -95,6 +95,13 @@ static int ieee80211_set_encryption(stru
- }
- }
-
-+ if (alg == ALG_WEP &&
-+ key_len != LEN_WEP40 && key_len != LEN_WEP104) {
-+ ieee80211_key_free(key);
-+ err = -EINVAL;
-+ goto out_unlock;
-+ }
-+
- ieee80211_key_link(key, sdata, sta);
- if (set_tx_key || (!sta && !sdata->default_key && key))
-diff -up linux-2.6.25.noarch/net/wireless/reg.c.orig linux-2.6.25.noarch/net/wireless/reg.c
---- linux-2.6.25.noarch/net/wireless/reg.c.orig 2008-07-01 10:47:49.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/reg.c 2008-07-01 10:48:12.000000000 -0400
-@@ -80,6 +80,23 @@ static const struct ieee80211_channel_ra
- IEEE80211_CHAN_RADAR),
- };
-
-+static const struct ieee80211_channel_range ieee80211_EU_channels[] = {
-+ /* IEEE 802.11b/g, channels 1..13 */
-+ RANGE_PWR(2412, 2472, 20, 6, 0),
-+ /* IEEE 802.11a, channel 36*/
-+ RANGE_PWR(5180, 5180, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
-+ /* IEEE 802.11a, channel 40*/
-+ RANGE_PWR(5200, 5200, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
-+ /* IEEE 802.11a, channel 44*/
-+ RANGE_PWR(5220, 5220, 23, 6, IEEE80211_CHAN_PASSIVE_SCAN),
-+ /* IEEE 802.11a, channels 48..64 */
-+ RANGE_PWR(5240, 5320, 23, 6, IEEE80211_CHAN_NO_IBSS |
-+ IEEE80211_CHAN_RADAR),
-+ /* IEEE 802.11a, channels 100..140 */
-+ RANGE_PWR(5500, 5700, 30, 6, IEEE80211_CHAN_NO_IBSS |
-+ IEEE80211_CHAN_RADAR),
-+};
-+
- #define REGDOM(_code) \
- { \
- .code = __stringify(_code), \
-@@ -90,6 +107,7 @@ static const struct ieee80211_channel_ra
- static const struct ieee80211_regdomain ieee80211_regdoms[] = {
- REGDOM(US),
- REGDOM(JP),
-+ REGDOM(EU),
+ /*
+ * "antenna number"
+diff -up linux-2.6.25.noarch/drivers/net/wireless/libertas/if_usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/libertas/if_usb.c
+--- linux-2.6.25.noarch/drivers/net/wireless/libertas/if_usb.c.orig 2008-07-03 13:21:03.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/libertas/if_usb.c 2008-07-03 13:38:42.000000000 -0400
+@@ -925,6 +925,7 @@ static struct usb_driver if_usb_driver =
+ .id_table = if_usb_table,
+ .suspend = if_usb_suspend,
+ .resume = if_usb_resume,
++ .reset_resume = if_usb_resume,
};
-
+ static int __init if_usb_init_module(void)
More information about the fedora-extras-commits
mailing list