rpms/kernel/devel kernel.spec, 1.667, 1.668 linux-2.6-wireless-pending.patch, 1.49, 1.50 linux-2.6-wireless.patch, 1.37, 1.38
John W. Linville (linville)
fedora-extras-commits at redhat.com
Thu May 29 18:05:02 UTC 2008
Author: linville
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv23392
Modified Files:
kernel.spec linux-2.6-wireless-pending.patch
linux-2.6-wireless.patch
Log Message:
wireless fixes from 2008-05-28
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.667
retrieving revision 1.668
diff -u -r1.667 -r1.668
--- kernel.spec 29 May 2008 17:11:50 -0000 1.667
+++ kernel.spec 29 May 2008 18:04:14 -0000 1.668
@@ -1131,7 +1131,7 @@
ApplyPatch linux-2.6-selinux-new-proc-checks.patch
# wireless patches headed for 2.6.26
-#ApplyPatch linux-2.6-wireless.patch
+ApplyPatch linux-2.6-wireless.patch
# wireless patches headed for 2.6.27
ApplyPatch linux-2.6-wireless-pending.patch
@@ -1776,6 +1776,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 May 29 2008 John W. Linville <linville at redhat.com>
+- Upstream wireless fixes from 2008-05-28
+ (http://marc.info/?l=linux-wireless&m=121201250110162&w=2)
+
* Thu May 29 2008 Kristian Høgsberg <krh at redhat.com>
- Add linux-2.6-silence-x86-decompressor.patch to silence the
decompressor spew when 'quiet' is passed.
linux-2.6-wireless-pending.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.49 -r 1.50 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.49
retrieving revision 1.50
diff -u -r1.49 -r1.50
--- linux-2.6-wireless-pending.patch 27 May 2008 16:53:53 -0000 1.49
+++ linux-2.6-wireless-pending.patch 29 May 2008 18:04:14 -0000 1.50
@@ -2862,8 +2862,8 @@
Signed-off-by: John W. Linville <linville at tuxdriver.com>
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-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c 2008-05-27 12:24:18.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/adm8211.c.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.c 2008-05-29 13:38:13.000000000 -0400
@@ -306,11 +306,10 @@ static int adm8211_get_tx_stats(struct i
struct ieee80211_tx_queue_stats *stats)
{
@@ -3012,8 +3012,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-05-27 12:02:07.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.h 2008-05-27 12:24:18.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/adm8211.h.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/adm8211.h 2008-05-29 13:38:13.000000000 -0400
@@ -443,7 +443,6 @@ struct adm8211_rx_ring_info {
struct adm8211_tx_ring_info {
struct sk_buff *skb;
@@ -3023,8 +3023,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-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/airo.c 2008-05-27 12:18:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/airo.c.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/airo.c 2008-05-29 13:38:13.000000000 -0400
@@ -1148,7 +1148,6 @@ static u8 airo_dbm_to_pct (tdsRssiEntry
static void airo_networks_free(struct airo_info *ai);
@@ -3193,8 +3193,8 @@
}
buffer = (u16*)skb_put (skb, len + hdrlen);
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-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/arlan.h 2008-05-27 12:18:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/arlan.h.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/arlan.h 2008-05-29 13:38:13.000000000 -0400
@@ -330,7 +330,6 @@ struct TxParam
#define TX_RING_SIZE 2
/* Information that need to be kept for each board. */
@@ -3204,8 +3204,8 @@
struct arlan_shmem * conf;
diff -up linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c
---- linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c 2008-05-27 12:18:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/arlan-main.c 2008-05-29 13:38:13.000000000 -0400
@@ -125,7 +125,7 @@ static inline int arlan_drop_tx(struct n
{
struct arlan_private *priv = netdev_priv(dev);
@@ -3290,8 +3290,8 @@
diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c 2008-05-27 12:24:18.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c 2008-05-29 13:38:13.000000000 -0400
@@ -167,8 +167,7 @@ static struct pci_driver ath5k_pci_drive
/*
* Prototypes - MAC 802.11 stack related functions
@@ -3581,8 +3581,8 @@
sc->bbuf->skb = NULL;
else
diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h 2008-05-27 12:24:18.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.h 2008-05-29 13:38:13.000000000 -0400
@@ -60,7 +60,6 @@ struct ath5k_buf {
dma_addr_t daddr; /* physical addr of desc */
struct sk_buff *skb; /* skbuff for buf */
@@ -3602,8 +3602,8 @@
struct ieee80211_hw *hw; /* IEEE 802.11 common */
struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
diff -up linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig linux-2.6.25.noarch/drivers/net/wireless/atmel.c
---- linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/atmel.c 2008-05-27 12:18:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/atmel.c.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/atmel.c 2008-05-29 13:38:13.000000000 -0400
@@ -433,7 +433,6 @@ struct atmel_private {
struct net_device *dev;
struct device *sys_dev;
@@ -3783,8 +3783,8 @@
dev->do_ioctl = atmel_ioctl;
dev->irq = irq;
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h
---- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h 2008-05-27 12:24:18.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig 2008-05-29 13:37:03.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h 2008-05-29 13:38:13.000000000 -0400
@@ -410,8 +410,7 @@ enum {
#define B43_IRQ_TIMEOUT 0x80000000
@@ -3829,8 +3829,8 @@
- struct ieee80211_tx_control beacon_txctl;
bool beacon0_uploaded;
bool beacon1_uploaded;
- struct work_struct beacon_update_trigger;
-@@ -767,6 +785,13 @@ struct b43_firmware {
+ bool beacon_templates_virgin; /* Never wrote the templates? */
+@@ -768,6 +786,13 @@ struct b43_firmware {
u16 rev;
/* Firmware patchlevel */
u16 patch;
@@ -3844,7 +3844,7 @@
};
/* Device (802.11 core) initialization status. */
-@@ -940,22 +965,6 @@ static inline bool __b43_warn_on_dummy(b
+@@ -941,22 +966,6 @@ static inline bool __b43_warn_on_dummy(b
# define B43_WARN_ON(x) __b43_warn_on_dummy(unlikely(!!(x)))
#endif
@@ -3868,8 +3868,8 @@
#define INT_TO_Q52(i) ((i) << 2)
/* Convert a Q5.2 value to an integer (precision loss!) */
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c 2008-05-27 12:18:25.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.c 2008-05-29 13:38:13.000000000 -0400
@@ -270,24 +270,22 @@ static int restart_write_file(struct b43
return err;
}
@@ -3995,8 +3995,8 @@
#undef add_dyn_dbg
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h
---- linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h 2008-05-27 12:18:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/debugfs.h 2008-05-29 13:38:13.000000000 -0400
@@ -10,6 +10,7 @@ enum b43_dyndbg { /* Dynamic debugging
B43_DBG_DMAVERBOSE,
B43_DBG_PWORK_FAST,
@@ -4006,8 +4006,8 @@
};
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c 2008-05-27 12:24:18.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/dma.c 2008-05-29 13:38:13.000000000 -0400
@@ -1131,10 +1131,10 @@ struct b43_dmaring *parse_cookie(struct
}
@@ -4158,8 +4158,8 @@
}
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/dma.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/dma.h
---- linux-2.6.25.noarch/drivers/net/wireless/b43/dma.h.orig 2008-05-27 12:02:08.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/dma.h 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/dma.h.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/dma.h 2008-05-29 13:38:13.000000000 -0400
@@ -181,7 +181,6 @@ struct b43_dmadesc_meta {
dma_addr_t dmaaddr;
/* ieee80211 TX status. Only used once per 802.11 frag. */
@@ -4178,8 +4178,8 @@
const struct b43_txstatus *status);
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h
---- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h 2008-05-27 12:18:26.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/b43legacy.h 2008-05-29 13:38:13.000000000 -0400
@@ -823,23 +823,6 @@ void b43legacydbg(struct b43legacy_wl *w
# define b43legacydbg(wl, fmt...) do { /* nothing */ } while (0)
#endif /* DEBUG */
@@ -4205,8 +4205,8 @@
#define Q52_FMT "%u.%u"
#define Q52_ARG(q52) ((q52) / 4), (((q52) & 3) * 100 / 4)
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-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c 2008-05-29 13:38:13.000000000 -0400
@@ -1205,10 +1205,10 @@ struct b43legacy_dmaring *parse_cookie(s
}
@@ -4325,8 +4325,8 @@
}
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.h
---- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.h.orig 2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.h 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.h.orig 2008-05-29 13:36:46.000000000 -0400
[...2484 lines suppressed...]
++++ linux-2.6.25.noarch/net/mac80211/rc80211_pid_algo.c 2008-05-29 13:38:14.000000000 -0400
@@ -237,8 +237,7 @@ static void rate_control_pid_sample(stru
}
@@ -45202,8 +45202,8 @@
#ifdef CONFIG_MAC80211_DEBUGFS
rate_control_pid_event_tx_rate(
diff -up linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c.orig linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c
---- linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c.orig 2008-05-27 12:02:15.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/rc80211_pid_debugfs.c 2008-05-29 13:38:14.000000000 -0400
@@ -39,11 +39,11 @@ static void rate_control_pid_event(struc
}
@@ -45230,8 +45230,8 @@
case RC_PID_EVENT_TYPE_RATE_CHANGE:
p += snprintf(pb + p, length - p, "rate_change %d %d",
diff -up linux-2.6.25.noarch/net/mac80211/rc80211_pid.h.orig linux-2.6.25.noarch/net/mac80211/rc80211_pid.h
---- linux-2.6.25.noarch/net/mac80211/rc80211_pid.h.orig 2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/rc80211_pid.h 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/rc80211_pid.h.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/rc80211_pid.h 2008-05-29 13:38:14.000000000 -0400
@@ -61,7 +61,7 @@ enum rc_pid_event_type {
union rc_pid_event_data {
/* RC_PID_EVENT_TX_STATUS */
@@ -45251,8 +45251,8 @@
void rate_control_pid_event_rate_change(struct rc_pid_event_buffer *buf,
int index, int rate);
diff -up linux-2.6.25.noarch/net/mac80211/rx.c.orig linux-2.6.25.noarch/net/mac80211/rx.c
---- linux-2.6.25.noarch/net/mac80211/rx.c.orig 2008-05-27 12:18:04.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/rx.c 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/rx.c.orig 2008-05-29 13:37:03.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/rx.c 2008-05-29 13:38:14.000000000 -0400
@@ -77,6 +77,134 @@ static inline int should_drop_frame(stru
return 0;
}
@@ -45724,8 +45724,8 @@
rcu_read_unlock();
}
diff -up linux-2.6.25.noarch/net/mac80211/sta_info.c.orig linux-2.6.25.noarch/net/mac80211/sta_info.c
---- linux-2.6.25.noarch/net/mac80211/sta_info.c.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/sta_info.c 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/sta_info.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/sta_info.c 2008-05-29 13:38:14.000000000 -0400
@@ -202,14 +202,12 @@ void sta_info_destroy(struct sta_info *s
dev_kfree_skb_any(skb);
@@ -45812,8 +45812,8 @@
diff -up linux-2.6.25.noarch/net/mac80211/sta_info.h.orig linux-2.6.25.noarch/net/mac80211/sta_info.h
---- linux-2.6.25.noarch/net/mac80211/sta_info.h.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/sta_info.h 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/sta_info.h.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/sta_info.h 2008-05-29 13:38:14.000000000 -0400
@@ -32,7 +32,7 @@
* @WLAN_STA_WDS: Station is one of our WDS peers.
* @WLAN_STA_PSPOLL: Station has just PS-polled us.
@@ -45973,8 +45973,8 @@
/* Maximum number of concurrently registered stations */
#define MAX_STA_COUNT 2007
diff -up linux-2.6.25.noarch/net/mac80211/tkip.c.orig linux-2.6.25.noarch/net/mac80211/tkip.c
---- linux-2.6.25.noarch/net/mac80211/tkip.c.orig 2008-05-27 12:18:04.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tkip.c 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tkip.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tkip.c 2008-05-29 13:38:14.000000000 -0400
@@ -6,25 +6,23 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
@@ -46355,8 +46355,8 @@
-
-
diff -up linux-2.6.25.noarch/net/mac80211/tkip.h.orig linux-2.6.25.noarch/net/mac80211/tkip.h
---- linux-2.6.25.noarch/net/mac80211/tkip.h.orig 2008-05-27 12:18:04.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tkip.h 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tkip.h.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tkip.h 2008-05-29 13:38:14.000000000 -0400
@@ -13,12 +13,8 @@
#include <linux/crypto.h>
#include "key.h"
@@ -46373,8 +46373,8 @@
struct ieee80211_key *key,
u8 *pos, size_t payload_len, u8 *ta);
diff -up linux-2.6.25.noarch/net/mac80211/tx.c.orig linux-2.6.25.noarch/net/mac80211/tx.c
---- linux-2.6.25.noarch/net/mac80211/tx.c.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/tx.c 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/tx.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/tx.c 2008-05-29 13:38:14.000000000 -0400
@@ -91,11 +91,12 @@ static u16 ieee80211_duration(struct iee
int next_frag_len)
{
@@ -47633,8 +47633,8 @@
if (res == TX_DROP) {
I802_DEBUG_INC(local->tx_handlers_drop);
diff -up linux-2.6.25.noarch/net/mac80211/util.c.orig linux-2.6.25.noarch/net/mac80211/util.c
---- linux-2.6.25.noarch/net/mac80211/util.c.orig 2008-05-27 12:02:15.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/util.c 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/util.c.orig 2008-05-29 13:37:03.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/util.c 2008-05-29 13:38:14.000000000 -0400
@@ -258,7 +258,7 @@ EXPORT_SYMBOL(ieee80211_generic_frame_du
__le16 ieee80211_rts_duration(struct ieee80211_hw *hw,
@@ -47765,8 +47765,8 @@
}
EXPORT_SYMBOL(ieee80211_wake_queues);
diff -up linux-2.6.25.noarch/net/mac80211/wep.c.orig linux-2.6.25.noarch/net/mac80211/wep.c
---- linux-2.6.25.noarch/net/mac80211/wep.c.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wep.c 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wep.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wep.c 2008-05-29 13:38:14.000000000 -0400
@@ -333,11 +333,16 @@ ieee80211_crypto_wep_decrypt(struct ieee
static int wep_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb)
@@ -47795,8 +47795,8 @@
if (wep_encrypt_skb(tx, tx->skb) < 0) {
diff -up linux-2.6.25.noarch/net/mac80211/wep.h.orig linux-2.6.25.noarch/net/mac80211/wep.h
---- linux-2.6.25.noarch/net/mac80211/wep.h.orig 2008-05-27 12:18:04.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wep.h 2008-05-27 12:18:25.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wep.h.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wep.h 2008-05-29 13:38:14.000000000 -0400
@@ -26,7 +26,7 @@ int ieee80211_wep_encrypt(struct ieee802
struct ieee80211_key *key);
int ieee80211_wep_decrypt(struct ieee80211_local *local, struct sk_buff *skb,
@@ -47807,8 +47807,8 @@
ieee80211_rx_result
ieee80211_crypto_wep_decrypt(struct ieee80211_rx_data *rx);
diff -up linux-2.6.25.noarch/net/mac80211/wext.c.orig linux-2.6.25.noarch/net/mac80211/wext.c
---- linux-2.6.25.noarch/net/mac80211/wext.c.orig 2008-05-27 12:18:04.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wext.c 2008-05-27 12:18:25.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wext.c.orig 2008-05-29 13:37:03.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wext.c 2008-05-29 13:38:14.000000000 -0400
@@ -169,14 +169,26 @@ static int ieee80211_ioctl_giwrange(stru
range->num_encoding_sizes = 2;
range->max_encoding_tokens = NUM_DEFAULT_KEYS;
@@ -47842,7 +47842,7 @@
range->avg_qual.updated = local->wstats_flags;
range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_WPA2 |
-@@ -995,8 +1007,8 @@ static struct iw_statistics *ieee80211_g
+@@ -1000,8 +1012,8 @@ static struct iw_statistics *ieee80211_g
wstats->qual.noise = 0;
wstats->qual.updated = IW_QUAL_ALL_INVALID;
} else {
@@ -47854,8 +47854,8 @@
wstats->qual.updated = local->wstats_flags;
}
diff -up linux-2.6.25.noarch/net/mac80211/wme.c.orig linux-2.6.25.noarch/net/mac80211/wme.c
---- linux-2.6.25.noarch/net/mac80211/wme.c.orig 2008-05-27 12:18:04.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.c 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wme.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.c 2008-05-29 13:38:14.000000000 -0400
@@ -19,16 +19,22 @@
#include "wme.h"
@@ -48230,8 +48230,8 @@
if (requeue)
ieee80211_requeue(local, agg_queue);
diff -up linux-2.6.25.noarch/net/mac80211/wme.h.orig linux-2.6.25.noarch/net/mac80211/wme.h
---- linux-2.6.25.noarch/net/mac80211/wme.h.orig 2008-05-27 12:02:15.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wme.h 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wme.h.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wme.h 2008-05-29 13:38:14.000000000 -0400
@@ -31,7 +31,7 @@ static inline int WLAN_FC_IS_QOS_DATA(u1
return (fc & 0x8C) == 0x88;
}
@@ -48242,8 +48242,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-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wpa.c 2008-05-27 12:24:19.000000000 -0400
+--- linux-2.6.25.noarch/net/mac80211/wpa.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wpa.c 2008-05-29 13:38:14.000000000 -0400
@@ -176,22 +176,32 @@ ieee80211_rx_h_michael_mic_verify(struct
skb_trim(skb, skb->len - MICHAEL_MIC_LEN);
@@ -48412,8 +48412,8 @@
}
}
diff -up linux-2.6.25.noarch/net/wireless/core.c.orig linux-2.6.25.noarch/net/wireless/core.c
---- linux-2.6.25.noarch/net/wireless/core.c.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/core.c 2008-05-27 12:18:25.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/core.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/core.c 2008-05-29 13:38:14.000000000 -0400
@@ -143,8 +143,11 @@ void cfg80211_put_dev(struct cfg80211_re
int cfg80211_dev_rename(struct cfg80211_registered_device *rdev,
char *newname)
@@ -48477,8 +48477,8 @@
/* exported functions */
diff -up linux-2.6.25.noarch/net/wireless/radiotap.c.orig linux-2.6.25.noarch/net/wireless/radiotap.c
---- linux-2.6.25.noarch/net/wireless/radiotap.c.orig 2008-05-27 12:18:05.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/radiotap.c 2008-05-27 12:18:25.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/radiotap.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/radiotap.c 2008-05-29 13:38:14.000000000 -0400
@@ -59,23 +59,21 @@ int ieee80211_radiotap_iterator_init(
return -EINVAL;
linux-2.6-wireless.patch:
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-wireless.patch,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- linux-2.6-wireless.patch 21 May 2008 19:24:23 -0000 1.37
+++ linux-2.6-wireless.patch 29 May 2008 18:04:14 -0000 1.38
@@ -1,316 +1,890 @@
-commit 5d283e8cdb8097b6a3e9304c9c8942ad9dc1a4eb
-Author: David Woodhouse <dwmw2 at infradead.org>
-Date: Mon May 19 16:32:02 2008 +0100
-
- libertas: Fix ethtool statistics
-
- Fix various problems:
- - We converted MESH_ACCESS to a direct command but missed this caller.
- - We were trying to access mesh stats even on meshless firmware.
- - We should really zero the buffer if something goes wrong.
+commit c97c23e38625f59e3e9869664eeeb0cab1822948
+Author: Senthil Balasubramanian <senthilkumar at atheros.com>
+Date: Wed May 28 23:15:32 2008 +0530
+
+ mac80211: fix alignment issue with compare_ether_addr()
+
+ This addresses an alignment issue with compare_ether_addr().
+ The addresses passed to compare_ether_addr should be two bytes aligned.
+ It may function properly in x86 platform. However may not work properly
+ on IA-64 or ARM processor.
+
+ This also fixes a typo in mlme.c where the sk_buff struct name is incorect.
+ Though sizeof() works for any incorrect structure pointer name as its just
+ a pointer length that we want, lets just fix it.
- Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
+ Signed-off-by: Senthil Balasubramanian <senthilkumar at atheros.com>
+ Signed-off-by: Luis R. Rodriguez <lrodriguez at atheros.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 70d251b24c44ab2fcba1807a5206e844cf10eb38
+Author: Senthil Balasubramanian <senthilkumar at atheros.com>
+Date: Wed May 28 20:08:12 2008 +0530
+
+ mac80211: Fix for NULL pointer dereference in sta_info_get()
+
+ This addresses a NULL pointer dereference in sta_info_get().
+ TID and sta_info are extracted in ADDBA Timer expiry function
+ through the timer handler's argument.
+
+ The problem is extracging the TID (which was stored in
+ timer_to_tid[] array of type "u8") through "int *" typecast which
+ may also yield unwanted bytes for the MSB of TID that results
+ in incorrect sta_info and ieee80211_local pointers.
+
+ ieee80211_local pointer is NULL as illustrated below, it crashes in
+ sta_info_get(). The problem started when extracting ieee80211_local
+ pointer out of sta_info iteself and eventually crashed in
+ stat_info_get().
+
+ The proper way to fix is to change the data type of TID to u8
+ instead of u16. However changing all the occurences requires
+ some prototype changes as well. We should fix this in upcoming
+ patches.
+
+ Signed-off-by: Senthil Balasubramanian <senthilkumar at atheros.com>
+ Signed-off-by: Luis Rodriguez <lrodriguez at atheros.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit f6d97104890203ba9c2cf8e34894c4c8e64cb880
+Author: Yi Zhu <yi.zhu at intel.com>
+Date: Tue May 27 17:50:50 2008 +0300
+
+ mac80211: fix a typo in ieee80211_handle_filtered_frame comment
+
+ fix a typo in ieee80211_handle_filtered_frame comment
+
+ Signed-off-by: Yi Zhu <yi.zhu at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit a7624837261b55259d4a88309fd88529643fbb80
+Author: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
+Date: Tue May 27 11:15:08 2008 +0300
+
+ rndis_wlan: add missing range check for power_output modparam
+
+ Range check for power_output were missing.
+
+ Signed-off-by: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 135a5484c3e0c6710035630b630cef3c856b78e2
+Author: Guy Cohen <guy.cohen at intel.com>
+Date: Tue May 27 11:29:35 2008 +0800
+
+ iwlwifi: fix rate scale TLC column selection bug
+
+ This patch fixes a case that a wrong maximal rate is selected when
+ searching for better configurations.
+
+ Signed-off-by: Guy Cohen <guy.cohen at intel.com>
+ Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 47cfd463962ab0748ecbad761ff6ef2916b54aac
+Author: Guy Cohen <guy.cohen at intel.com>
+Date: Tue May 27 11:29:34 2008 +0800
+
+ iwlwifi: fix exit from stay_in_table state
+
+ When exiting from stay in table state (e.g. timer expiration),
+ all the statistics are reset and the RS flow should not continue
+ but only after enough statistics are collected again.
+
+ Signed-off-by: Guy Cohen <guy.cohen at intel.com>
+ Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 4364623cb79d02945ace7a4faa1f11e617dde198
+Author: Scott Ashcroft <scott.ashcroft at talk21.com>
+Date: Tue May 27 00:06:15 2008 +0300
+
+ rndis_wlan: Make connections to TKIP PSK networks work
+
+ This patch allows the rndis_wlan driver to connect to TKIP PSK
+ networks. It uses the ASSOCIATION_INFORMATION RNDIS call to pull back
+ the IEs and sends them back to userspace using wireless events. Tested
+ on a few wireless networks I have access to. Based on the similar
+ code in ndiswrapper.
+
+ Signed-off-by: Scott Ashcroft <scott.ashcroft at talk21.com>
+ [edit: cleanups]
+ Signed-off-by: Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit d4231ca3e162387a2b6964dacaa83604e065c4e9
+Author: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
+Date: Fri May 23 10:15:26 2008 -0700
+
+ mac80211 : Fixes the status message for iwconfig
+
+ iwconfig was showing incorrect status messages when disassociated.
+ Patch fixes this by always checking for association status in
+ ioctl calls for getting ap address.
+
+ Signed-off-by: Abhijeet Kolekar <abhijeet.kolekar at intel.com>
Acked-by: Dan Williams <dcbw at redhat.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 0d580a774b3682b8b2b5c89ab9b813d149ef28e7
-Author: Helmut Schaa <hschaa at suse.de>
-Date: Tue May 20 09:56:37 2008 +0200
+commit 633257d3db547e7553500f05e0aa2692c876d7a5
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date: Fri May 23 18:14:02 2008 +0200
+
+ rt2x00: Use atomic interface iteration in irq context
+
+ rt2x00lib_beacondone() is called from interrupt context,
+ this means we cannot use the mac80211 interface iterator
+ that uses the rtnl lock (since that uses a mutex which can sleep).
+ Instead we should use the atomic mac80211 interface iterator.
+
+ Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit f06a0f486dc8bbe8808f46b81fbfd73241529fae
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date: Fri May 23 18:13:56 2008 +0200
+
+ rt2x00: Reset antenna RSSI after switch
+
+ When the antenna configuration has changed we should reset
+ the antenna RSSI value. Otherwise the value will be influenced
+ by the previous configuration quality which in turn will affect
+ the antenna diversity.
+
+ Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 2088d4174e4292aef892bb7095fc3c3ea5bd117c
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date: Fri May 23 18:13:49 2008 +0200
+
+ rt2x00: Don't count retries as failure
+
+ Link quality estimation became quite low for all rt2x00 drivers
+ because the number of retries it took to send the frame were
+ counted as failure.
+ This does not correspond to the legacy driver link quality calculation,
+ by not counting it we will send somewhat more optimistic values to
+ mac80211.
+
+ Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
- mac80211: fix NULL pointer dereference in ieee80211_compatible_rates
+commit 0f3e63a55b1a7b695a79bf3eec2ff5ab6b336037
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date: Fri May 23 18:13:41 2008 +0200
+
+ rt2x00: Fix memleak in tx() path
- Fix a possible NULL pointer dereference in ieee80211_compatible_rates
- introduced in the patch "mac80211: fix association with some APs". If no bss
- is available just use all supported rates in the association request.
+ When the tx() handler runs while the device has disapeared,
+ we did return NETDEV_TX_OK but didn't free the skb.
- Signed-off-by: Helmut Schaa <hschaa at suse.de>
+ Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 51e779f0daa5c712439d37b907d58543e4fcf12a
-Author: Johannes Berg <johannes at sipsolutions.net>
-Date: Mon May 19 07:18:10 2008 +0200
+commit 9381be059bf5831d259e8735005cfa35b7488543
+Author: Tomas Winkler <tomas.winkler at intel.com>
+Date: Fri May 23 01:36:36 2008 +0300
+
+ mac80211: reorder channel and freq reporting in wext scan report
+
+ This patch switch order of channel and freq (SIOCGIWFREQ) reports
+ in scan results in order to overcome wpa_supplicant inability
+ to handle channel numbers in 5.2Ghz band.
+ Wext reporting channel number is ambiguous as channels 7-12 (802.11j)
+ exist on both bands.
+
+ Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+ Acked-by: Dan Williams <dcbw at redhat.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
- mac80211: don't claim iwspy support
+commit 3bf0a32e22fedc0b46443699db2d61ac2a883ac4
+Author: Michael Buesch <mb at bu3sch.de>
+Date: Thu May 22 16:32:16 2008 +0200
+
+ b43: Fix controller restart crash
- We removed iwspy support a very long time ago because it is useless, but
- forgot to stop claiming to support it. Apparently, nobody cares, but
- remove it nonetheless.
+ This fixes a kernel crash on rmmod, in the case where the controller
+ was restarted before doing the rmmod.
- Signed-off-by: Johannes Berg <johannes at sipsolutions.net>
+ Signed-off-by: Michael Buesch <mb at bu3sch.de>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 682c97c04b3041d0f29241b8bfa013093201e269
-Author: Pavel Roskin <proski at gnu.org>
-Date: Fri May 16 17:53:03 2008 -0400
+commit 167ad6f7a2b2ae58dfaa46620b9b3212594f38e6
+Author: Tomas Winkler <tomas.winkler at intel.com>
+Date: Wed May 21 18:17:05 2008 +0300
- orinoco_cs: add ID for SpeedStream wireless adapters
+ mac80211: fix ieee80211_rx_bss_put/get imbalance
- Reported by Gerald Willmann <gerald.willmann at econ.kuleuven.be>
+ This patch fixes iee80211_rx_bss_put/get imbalance
+ introduced by 'mac80211: enable IBSS merging' patch.
- Signed-off-by: Pavel Roskin <proski at gnu.org>
+ Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 449fecca0b74502b571f4199d46bcd6a11a5e2c2
-Author: Pavel Roskin <proski at gnu.org>
-Date: Fri May 16 17:52:57 2008 -0400
+commit 679fda1aa49fddf938bb699df7867c01988371ab
+Author: Nicolas Kaiser <nikai at nikai.net>
+Date: Tue May 20 18:42:54 2008 +0200
- hostap_cs: add ID for Conceptronic CON11CPro
+ net/mac80211: always true conditionals
- Reported by Santiago Garcia Mantinan <hostap at manty.net>
+ Correct always true conditionals.
- Signed-off-by: Pavel Roskin <proski at gnu.org>
+ Signed-off-by: Nicolas Kaiser <nikai at nikai.net>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit ea8ee240251cbac73b66d70d35eeabfbff86d3ce
-Author: Oliver Neukum <oliver at neukum.org>
-Date: Thu May 15 21:49:16 2008 +0200
+commit 6b4bec010d888c5b8c731aa596635cd83dd3416c
+Author: Michael Buesch <mb at bu3sch.de>
+Date: Tue May 20 12:16:28 2008 +0200
- rtl8187: resource leak in error case
+ b43: Upload both beacon templates on initial load
- This fixes resource leaks in error cases due to urb submission
- failures.
+ This updates the beacon template code to upload both templates,
+ if we never uploaded one before.
- Signed-off-by: Oliver Neukum <oneukum at suse.de>
+ Signed-off-by: Michael Buesch <mb at bu3sch.de>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-commit 89fd2e282ad510f801c1f44a660086f9d5bdf088
-Author: Bob Copeland <me at bobcopeland.com>
-Date: Mon May 12 21:16:44 2008 -0400
+commit bc1b1fb2753873314ad1bf56bc7d5b8dd447cd2a
+Author: Andrea Merello <andrea.merello at gmail.com>
+Date: Sat May 10 13:34:16 2008 +0200
- ath5k: Fix loop variable initializations
+ rtl8180: fix wrong parameter in grf5101_rf_set_channel
+
+ The grf5101 RF code needs to invoke grf5101_write_phy_antenna every time the
+ channel is being switch.
- In ath5k_tasklet_rx, both status structures 'rxs' and 'rs' are
- initialized at the top of the tasklet, but not within the loop.
- If the loop is executed multiple times in the tasklet then the
- variables may see changes from previous packets.
+ This should be done passing the channel number to that function.
+ Incorrectly we were passing the same value that is written on the
+ channel RF register.
+ This may cause problems when operating on ch 14.
- For TKIP, this results in 'Invalid Michael MIC' errors if two packets
- are processed in the tasklet: rxs.flag gets set to RX_DECRYPTED by
- mac80211 when it decrypts the first encrypted packet. The subsequent
- packet will have RX_DECRYPTED set upon entry to mac80211, so mac80211
- will not try to decrypt it.
+ This patch fixes it.
- We currently initialize all but two fields in the structures, so fix
- the other two.
+ Thanks to Alessandro Di Marco who found this issue!
- Signed-off-by: Bob Copeland <me at bobcopeland.com>
+ Signed-off-by: Andrea Merello <andreamrl at tiscali.it>
Signed-off-by: John W. Linville <linville at tuxdriver.com>
-diff -up linux-2.6.25.noarch/net/mac80211/mlme.c.orig linux-2.6.25.noarch/net/mac80211/mlme.c
---- linux-2.6.25.noarch/net/mac80211/mlme.c.orig 2008-05-21 11:36:33.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/mlme.c 2008-05-21 14:45:53.000000000 -0400
-@@ -730,7 +730,17 @@ static void ieee80211_send_assoc(struct
- if (bss->wmm_ie) {
- wmm = 1;
- }
+commit 0a0ab41e833c8184c6d4ab663f137d5bbd50e049
+Author: Andrea Merello <andrea.merello at gmail.com>
+Date: Sat May 10 13:32:34 2008 +0200
+
+ rtl8180: fix wrong parameter in max2820_rf_set_channel
+
+ The max2820 RF code needs to invoke max2820_write_phy_antenna every time the
+ channel is being switch.
+
+ This should be done passing the channel number to that function.
+ Incorrectly we were passing the same value that is written on the
+ channel RF register.
+ This may cause problems when operating on ch 14.
+
+ This patch fixes it.
+
+ Thanks to Alessandro Di Marco who found this issue!
+
+ Signed-off-by: Andrea Merello <andreamrl at tiscali.it>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 0823b2c3c10a4db21cd39a8c72cda96b4dd6d914
+Author: Andrea Merello <andreamrl at tiscali.it>
+Date: Sat May 10 13:30:12 2008 +0200
+
+ rtl8180: fix wrong parameter in sa2400_rf_set_channel
+
+ The sa2400 RF code needs to invoke sa2400_write_phy_antenna every time the
+ channel is being switch.
+
+ This should be done passing the channel number to that function.
+ Incorrectly we were passing the same value that is written on the
+ channel RF register.
+ This may cause problems when operating on ch 14.
+
+ This patch fixes it.
+
+ Thanks to Alessandro Di Marco who found this issue!
+
+ Signed-off-by: Andrea Merello <andreamrl at tiscali.it>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 6f6c218f68e632e4596cae6e6d43658d26a5e0fe
+Author: John W. Linville <linville at tuxdriver.com>
+Date: Tue May 27 17:01:55 2008 -0400
+
+ rtl8180: avoid NULL dereference in max2820_rf_set_channel
+
+ The static function max2820_rf_set_channel is called with conf == NULL
+ within its compilation unit. Originally this defaulted to b/g channel
+ 1, but "cfg80211 API for channels/bitrates, mac80211 and driver
+ conversion" (commit 8318d78a44d49ac1edf2bdec7299de3617c4232e) mistakenly
+ dropped this check. This patch minimally restores the expected
+ behavior.
+
+ Reported-by: Colin Lai <colin_sh at 163.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/b43.h 2008-05-29 13:37:03.000000000 -0400
+@@ -737,6 +737,7 @@ struct b43_wl {
+ struct ieee80211_tx_control beacon_txctl;
+ bool beacon0_uploaded;
+ bool beacon1_uploaded;
++ bool beacon_templates_virgin; /* Never wrote the templates? */
+ struct work_struct beacon_update_trigger;
+
+ /* The current QOS parameters for the 4 queues.
+diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/main.c
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c 2008-05-29 13:37:03.000000000 -0400
+@@ -1544,6 +1544,30 @@ static void b43_write_probe_resp_templat
+ kfree(probe_resp_data);
+ }
+
++static void b43_upload_beacon0(struct b43_wldev *dev)
++{
++ struct b43_wl *wl = dev->wl;
+
-+ /* get all rates supported by the device and the AP as
-+ * some APs don't like getting a superset of their rates
-+ * in the association request (e.g. D-Link DAP 1353 in
-+ * b-only mode) */
-+ rates_len = ieee80211_compatible_rates(bss, sband, &rates);
++ if (wl->beacon0_uploaded)
++ return;
++ b43_write_beacon_template(dev, 0x68, 0x18);
++ /* FIXME: Probe resp upload doesn't really belong here,
++ * but we don't use that feature anyway. */
++ b43_write_probe_resp_template(dev, 0x268, 0x4A,
++ &__b43_ratetable[3]);
++ wl->beacon0_uploaded = 1;
++}
+
- ieee80211_rx_bss_put(dev, bss);
++static void b43_upload_beacon1(struct b43_wldev *dev)
++{
++ struct b43_wl *wl = dev->wl;
++
++ if (wl->beacon1_uploaded)
++ return;
++ b43_write_beacon_template(dev, 0x468, 0x1A);
++ wl->beacon1_uploaded = 1;
++}
++
+ static void handle_irq_beacon(struct b43_wldev *dev)
+ {
+ struct b43_wl *wl = dev->wl;
+@@ -1568,24 +1592,27 @@ static void handle_irq_beacon(struct b43
+ return;
+ }
+
+- if (!beacon0_valid) {
+- if (!wl->beacon0_uploaded) {
+- b43_write_beacon_template(dev, 0x68, 0x18);
+- b43_write_probe_resp_template(dev, 0x268, 0x4A,
+- &__b43_ratetable[3]);
+- wl->beacon0_uploaded = 1;
+- }
++ if (unlikely(wl->beacon_templates_virgin)) {
++ /* We never uploaded a beacon before.
++ * Upload both templates now, but only mark one valid. */
++ wl->beacon_templates_virgin = 0;
++ b43_upload_beacon0(dev);
++ b43_upload_beacon1(dev);
+ cmd = b43_read32(dev, B43_MMIO_MACCMD);
+ cmd |= B43_MACCMD_BEACON0_VALID;
+ b43_write32(dev, B43_MMIO_MACCMD, cmd);
+- } else if (!beacon1_valid) {
+- if (!wl->beacon1_uploaded) {
+- b43_write_beacon_template(dev, 0x468, 0x1A);
+- wl->beacon1_uploaded = 1;
+ } else {
-+ rates = ~0;
-+ rates_len = sband->n_bitrates;
++ if (!beacon0_valid) {
++ b43_upload_beacon0(dev);
++ cmd = b43_read32(dev, B43_MMIO_MACCMD);
++ cmd |= B43_MACCMD_BEACON0_VALID;
++ b43_write32(dev, B43_MMIO_MACCMD, cmd);
++ } else if (!beacon1_valid) {
++ b43_upload_beacon1(dev);
++ cmd = b43_read32(dev, B43_MMIO_MACCMD);
++ cmd |= B43_MACCMD_BEACON1_VALID;
++ b43_write32(dev, B43_MMIO_MACCMD, cmd);
+ }
+- cmd = b43_read32(dev, B43_MMIO_MACCMD);
+- cmd |= B43_MACCMD_BEACON1_VALID;
+- b43_write32(dev, B43_MMIO_MACCMD, cmd);
}
+ }
- mgmt = (struct ieee80211_mgmt *) skb_put(skb, 24);
-@@ -761,10 +771,7 @@ static void ieee80211_send_assoc(struct
- *pos++ = ifsta->ssid_len;
- memcpy(pos, ifsta->ssid, ifsta->ssid_len);
-
-- /* all supported rates should be added here but some APs
-- * (e.g. D-Link DAP 1353 in b-only mode) don't like that
-- * Therefore only add rates the AP supports */
-- rates_len = ieee80211_compatible_rates(bss, sband, &rates);
-+ /* add all rates which were marked to be used above */
- supp_rates_len = rates_len;
- if (supp_rates_len > 8)
- supp_rates_len = 8;
-diff -up linux-2.6.25.noarch/net/mac80211/wext.c.orig linux-2.6.25.noarch/net/mac80211/wext.c
---- linux-2.6.25.noarch/net/mac80211/wext.c.orig 2008-05-21 11:36:27.000000000 -0400
-+++ linux-2.6.25.noarch/net/mac80211/wext.c 2008-05-21 14:45:53.000000000 -0400
-@@ -209,7 +209,6 @@ static int ieee80211_ioctl_giwrange(stru
- range->num_frequency = c;
-
- IW_EVENT_CAPA_SET_KERNEL(range->event_capa);
-- IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWTHRSPY);
- IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWAP);
- IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWSCAN);
-
-diff -up linux-2.6.25.noarch/drivers/net/wireless/rtl8187_dev.c.orig linux-2.6.25.noarch/drivers/net/wireless/rtl8187_dev.c
---- linux-2.6.25.noarch/drivers/net/wireless/rtl8187_dev.c.orig 2008-05-21 11:36:23.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rtl8187_dev.c 2008-05-21 14:45:53.000000000 -0400
-@@ -92,6 +92,7 @@ static void rtl8187_iowrite_async(struct
- u8 data[4];
- struct usb_ctrlrequest dr;
- } *buf;
-+ int rc;
-
- buf = kmalloc(sizeof(*buf), GFP_ATOMIC);
- if (!buf)
-@@ -116,7 +117,11 @@ static void rtl8187_iowrite_async(struct
- usb_fill_control_urb(urb, priv->udev, usb_sndctrlpipe(priv->udev, 0),
- (unsigned char *)dr, buf, len,
- rtl8187_iowrite_async_cb, buf);
-- usb_submit_urb(urb, GFP_ATOMIC);
-+ rc = usb_submit_urb(urb, GFP_ATOMIC);
-+ if (rc < 0) {
-+ kfree(buf);
-+ usb_free_urb(urb);
-+ }
+@@ -4073,6 +4100,9 @@ static int b43_op_start(struct ieee80211
+ wl->filter_flags = 0;
+ wl->radiotap_enabled = 0;
+ b43_qos_clear(wl);
++ wl->beacon0_uploaded = 0;
++ wl->beacon1_uploaded = 0;
++ wl->beacon_templates_virgin = 1;
+
+ /* First register RFkill.
+ * LEDs that are registered later depend on it. */
+@@ -4241,7 +4271,9 @@ static void b43_chip_reset(struct work_s
+ goto out;
+ }
+ }
+- out:
++out:
++ if (err)
++ wl->current_dev = NULL; /* Failed to init the dev. */
+ mutex_unlock(&wl->mutex);
+ if (err)
+ b43err(wl, "Controller restart FAILED\n");
+@@ -4382,9 +4414,11 @@ static void b43_one_core_detach(struct s
+ struct b43_wldev *wldev;
+ struct b43_wl *wl;
+
++ /* Do not cancel ieee80211-workqueue based work here.
++ * See comment in b43_remove(). */
++
+ wldev = ssb_get_drvdata(dev);
+ wl = wldev->wl;
+- cancel_work_sync(&wldev->restart_work);
+ b43_debugfs_remove_device(wldev);
+ b43_wireless_core_detach(wldev);
+ list_del(&wldev->list);
+@@ -4569,6 +4603,10 @@ static void b43_remove(struct ssb_device
+ struct b43_wl *wl = ssb_get_devtypedata(dev);
+ struct b43_wldev *wldev = ssb_get_drvdata(dev);
+
++ /* We must cancel any work here before unregistering from ieee80211,
++ * as the ieee80211 unreg will destroy the workqueue. */
++ cancel_work_sync(&wldev->restart_work);
++
+ B43_WARN_ON(!wl);
+ if (wl->current_dev == wldev)
+ ieee80211_unregister_hw(wl->hw);
+diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c.orig 2008-05-29 13:36:46.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl-4965-rs.c 2008-05-29 13:37:03.000000000 -0400
+@@ -1162,7 +1162,6 @@ static s32 rs_get_best_rate(struct iwl_p
+
+ /* Higher rate not available, use the original */
+ } else {
+- new_rate = rate;
+ break;
+ }
+ }
+@@ -2009,7 +2008,7 @@ static void rs_rate_scale_perform(struct
+ * 2) Not just finishing up a search
+ * 3) Allowing a new search
+ */
+- if (!update_lq && !done_search && !lq_sta->stay_in_tbl) {
++ if (!update_lq && !done_search && !lq_sta->stay_in_tbl && window->counter) {
+ /* Save current throughput to compare with "search" throughput*/
+ lq_sta->last_tpt = current_tpt;
+
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rndis_wlan.c.orig linux-2.6.25.noarch/drivers/net/wireless/rndis_wlan.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rndis_wlan.c.orig 2008-05-29 11:04:14.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rndis_wlan.c 2008-05-29 13:37:03.000000000 -0400
+@@ -116,6 +116,7 @@ MODULE_PARM_DESC(workaround_interval,
+ #define OID_802_11_ENCRYPTION_STATUS ccpu2(0x0d01011b)
+ #define OID_802_11_ADD_KEY ccpu2(0x0d01011d)
+ #define OID_802_11_REMOVE_KEY ccpu2(0x0d01011e)
++#define OID_802_11_ASSOCIATION_INFORMATION ccpu2(0x0d01011f)
+ #define OID_802_11_PMKID ccpu2(0x0d010123)
+ #define OID_802_11_NETWORK_TYPES_SUPPORTED ccpu2(0x0d010203)
+ #define OID_802_11_NETWORK_TYPE_IN_USE ccpu2(0x0d010204)
+@@ -271,6 +272,26 @@ struct ndis_config_param {
+ __le32 value_length;
+ } __attribute__((packed));
+
++struct ndis_80211_assoc_info {
++ __le32 length;
++ __le16 req_ies;
++ struct req_ie {
++ __le16 capa;
++ __le16 listen_interval;
++ u8 cur_ap_address[6];
++ } req_ie;
++ __le32 req_ie_length;
++ __le32 offset_req_ies;
++ __le16 resp_ies;
++ struct resp_ie {
++ __le16 capa;
++ __le16 status_code;
++ __le16 assoc_id;
++ } resp_ie;
++ __le32 resp_ie_length;
++ __le32 offset_resp_ies;
++} __attribute__((packed));
++
+ /* these have to match what is in wpa_supplicant */
+ enum wpa_alg { WPA_ALG_NONE, WPA_ALG_WEP, WPA_ALG_TKIP, WPA_ALG_CCMP };
+ enum wpa_cipher { CIPHER_NONE, CIPHER_WEP40, CIPHER_TKIP, CIPHER_CCMP,
+@@ -674,6 +695,12 @@ static int get_bssid(struct usbnet *usbd
+ return ret;
}
- static inline void rtl818x_iowrite32_async(struct rtl8187_priv *priv,
-@@ -169,6 +174,7 @@ static int rtl8187_tx(struct ieee80211_h
- struct urb *urb;
- __le16 rts_dur = 0;
- u32 flags;
-+ int rc;
-
- urb = usb_alloc_urb(0, GFP_ATOMIC);
- if (!urb) {
-@@ -208,7 +214,11 @@ static int rtl8187_tx(struct ieee80211_h
- info->dev = dev;
- usb_fill_bulk_urb(urb, priv->udev, usb_sndbulkpipe(priv->udev, 2),
- hdr, skb->len, rtl8187_tx_cb, skb);
-- usb_submit_urb(urb, GFP_ATOMIC);
-+ rc = usb_submit_urb(urb, GFP_ATOMIC);
-+ if (rc < 0) {
-+ usb_free_urb(urb);
-+ kfree_skb(skb);
-+ }
++static int get_association_info(struct usbnet *usbdev,
++ struct ndis_80211_assoc_info *info, int len)
++{
++ return rndis_query_oid(usbdev, OID_802_11_ASSOCIATION_INFORMATION,
++ info, &len);
++}
- return 0;
+ static int is_associated(struct usbnet *usbdev)
+ {
+@@ -2182,11 +2209,40 @@ static void rndis_wext_worker(struct wor
+ struct usbnet *usbdev = priv->usbdev;
+ union iwreq_data evt;
+ unsigned char bssid[ETH_ALEN];
+- int ret;
++ struct ndis_80211_assoc_info *info;
++ int assoc_size = sizeof(*info) + IW_CUSTOM_MAX + 32;
++ int ret, offset;
+
+ if (test_and_clear_bit(WORK_CONNECTION_EVENT, &priv->work_pending)) {
+- ret = get_bssid(usbdev, bssid);
++ info = kzalloc(assoc_size, GFP_KERNEL);
++ if (!info)
++ goto get_bssid;
++
++ /* Get association info IEs from device and send them back to
++ * userspace. */
++ ret = get_association_info(usbdev, info, assoc_size);
++ if (!ret) {
++ evt.data.length = le32_to_cpu(info->req_ie_length);
++ if (evt.data.length > 0) {
++ offset = le32_to_cpu(info->offset_req_ies);
++ wireless_send_event(usbdev->net,
++ IWEVASSOCREQIE, &evt,
++ (char *)info + offset);
++ }
++
++ evt.data.length = le32_to_cpu(info->resp_ie_length);
++ if (evt.data.length > 0) {
++ offset = le32_to_cpu(info->offset_resp_ies);
++ wireless_send_event(usbdev->net,
++ IWEVASSOCRESPIE, &evt,
++ (char *)info + offset);
++ }
++ }
+
++ kfree(info);
++
++get_bssid:
++ ret = get_bssid(usbdev, bssid);
+ if (!ret) {
+ evt.data.flags = 0;
+ evt.data.length = 0;
+@@ -2414,6 +2470,11 @@ static int bcm4320_early_init(struct usb
+ else if (priv->param_power_save > 2)
+ priv->param_power_save = 2;
+
++ if (priv->param_power_output < 0)
++ priv->param_power_output = 0;
++ else if (priv->param_power_output > 3)
++ priv->param_power_output = 3;
++
+ if (priv->param_roamtrigger < -80)
+ priv->param_roamtrigger = -80;
+ else if (priv->param_roamtrigger > -60)
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00config.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00config.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00config.c.orig 2008-05-29 11:04:14.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00config.c 2008-05-29 13:37:03.000000000 -0400
+@@ -129,6 +129,7 @@ void rt2x00lib_config_antenna(struct rt2
+ */
+ rt2x00dev->ops->lib->config(rt2x00dev, &libconf, CONFIG_UPDATE_ANTENNA);
+ rt2x00lib_reset_link_tuner(rt2x00dev);
++ rt2x00_reset_link_ant_rssi(&rt2x00dev->link);
+
+ rt2x00dev->link.ant.active.rx = libconf.ant.rx;
+ rt2x00dev->link.ant.active.tx = libconf.ant.tx;
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig 2008-05-29 13:36:47.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c 2008-05-29 13:37:03.000000000 -0400
+@@ -483,9 +483,9 @@ void rt2x00lib_beacondone(struct rt2x00_
+ if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
+ return;
+
+- ieee80211_iterate_active_interfaces(rt2x00dev->hw,
+- rt2x00lib_beacondone_iter,
+- rt2x00dev);
++ ieee80211_iterate_active_interfaces_atomic(rt2x00dev->hw,
++ rt2x00lib_beacondone_iter,
++ rt2x00dev);
+
+ queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work);
}
-diff -up linux-2.6.25.noarch/drivers/net/wireless/libertas/ethtool.c.orig linux-2.6.25.noarch/drivers/net/wireless/libertas/ethtool.c
---- linux-2.6.25.noarch/drivers/net/wireless/libertas/ethtool.c.orig 2008-05-21 11:36:23.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/libertas/ethtool.c 2008-05-21 14:45:53.000000000 -0400
-@@ -73,8 +73,8 @@ out:
- return ret;
+@@ -507,7 +507,7 @@ void rt2x00lib_txdone(struct queue_entry
+ * Update TX statistics.
+ */
+ rt2x00dev->link.qual.tx_success += success;
+- rt2x00dev->link.qual.tx_failed += txdesc->retry + fail;
++ rt2x00dev->link.qual.tx_failed += fail;
+
+ /*
+ * Initialize TX status
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig 2008-05-29 13:36:47.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h 2008-05-29 13:37:03.000000000 -0400
+@@ -328,6 +328,11 @@ static inline int rt2x00_get_link_ant_rs
+ return DEFAULT_RSSI;
}
--static void lbs_ethtool_get_stats(struct net_device * dev,
-- struct ethtool_stats * stats, u64 * data)
-+static void lbs_ethtool_get_stats(struct net_device *dev,
-+ struct ethtool_stats *stats, uint64_t *data)
++static inline void rt2x00_reset_link_ant_rssi(struct link *link)
++{
++ link->ant.rssi_ant = 0;
++}
++
+ static inline int rt2x00_get_link_ant_rssi_history(struct link *link,
+ enum antenna ant)
{
- struct lbs_private *priv = dev->priv;
- struct cmd_ds_mesh_access mesh_access;
-@@ -83,12 +83,12 @@ static void lbs_ethtool_get_stats(struct
- lbs_deb_enter(LBS_DEB_ETHTOOL);
-
- /* Get Mesh Statistics */
-- ret = lbs_prepare_and_send_command(priv,
-- CMD_MESH_ACCESS, CMD_ACT_MESH_GET_STATS,
-- CMD_OPTION_WAITFORRSP, 0, &mesh_access);
-+ ret = lbs_mesh_access(priv, CMD_ACT_MESH_GET_STATS, &mesh_access);
-
-- if (ret)
-+ if (ret) {
-+ memset(data, 0, MESH_STATS_NUM*(sizeof(uint64_t)));
- return;
-+ }
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig 2008-05-29 13:36:47.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c 2008-05-29 13:37:03.000000000 -0400
+@@ -93,6 +93,7 @@ int rt2x00mac_tx(struct ieee80211_hw *hw
+ */
+ if (!test_bit(DEVICE_PRESENT, &rt2x00dev->flags)) {
+ ieee80211_stop_queues(hw);
++ dev_kfree_skb_any(skb);
+ return NETDEV_TX_OK;
+ }
- priv->mstats.fwd_drop_rbt = le32_to_cpu(mesh_access.data[0]);
- priv->mstats.fwd_drop_ttl = le32_to_cpu(mesh_access.data[1]);
-@@ -111,19 +111,18 @@ static void lbs_ethtool_get_stats(struct
- lbs_deb_enter(LBS_DEB_ETHTOOL);
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rtl8180_grf5101.c.orig linux-2.6.25.noarch/drivers/net/wireless/rtl8180_grf5101.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rtl8180_grf5101.c.orig 2008-05-29 11:04:14.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rtl8180_grf5101.c 2008-05-29 13:37:03.000000000 -0400
+@@ -88,7 +88,7 @@ static void grf5101_rf_set_channel(struc
+ write_grf5101(dev, 0x0B, chan);
+ write_grf5101(dev, 0x07, 0x1000);
+
+- grf5101_write_phy_antenna(dev, chan);
++ grf5101_write_phy_antenna(dev, channel);
}
--static int lbs_ethtool_get_sset_count(struct net_device * dev, int sset)
-+static int lbs_ethtool_get_sset_count(struct net_device *dev, int sset)
+ static void grf5101_rf_stop(struct ieee80211_hw *dev)
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rtl8180_max2820.c.orig linux-2.6.25.noarch/drivers/net/wireless/rtl8180_max2820.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rtl8180_max2820.c.orig 2008-05-29 11:04:14.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rtl8180_max2820.c 2008-05-29 13:37:03.000000000 -0400
+@@ -78,7 +78,8 @@ static void max2820_rf_set_channel(struc
+ struct ieee80211_conf *conf)
{
-- switch (sset) {
-- case ETH_SS_STATS:
-+ struct lbs_private *priv = dev->priv;
-+
-+ if (sset == ETH_SS_STATS && dev == priv->mesh_dev)
- return MESH_STATS_NUM;
-- default:
-- return -EOPNOTSUPP;
-- }
-+
-+ return -EOPNOTSUPP;
+ struct rtl8180_priv *priv = dev->priv;
+- int channel = ieee80211_frequency_to_channel(conf->channel->center_freq);
++ int channel = conf ?
++ ieee80211_frequency_to_channel(conf->channel->center_freq) : 1;
+ unsigned int chan_idx = channel - 1;
+ u32 txpw = priv->channels[chan_idx].hw_value & 0xFF;
+ u32 chan = max2820_chan[chan_idx];
+@@ -87,7 +88,7 @@ static void max2820_rf_set_channel(struc
+ * sa2400, for MAXIM we do this directly from BB */
+ rtl8180_write_phy(dev, 3, txpw);
+
+- max2820_write_phy_antenna(dev, chan);
++ max2820_write_phy_antenna(dev, channel);
+ write_max2820(dev, 3, chan);
}
- static void lbs_ethtool_get_strings(struct net_device *dev,
-- u32 stringset,
-- u8 * s)
-+ uint32_t stringset, uint8_t *s)
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rtl8180_sa2400.c.orig linux-2.6.25.noarch/drivers/net/wireless/rtl8180_sa2400.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rtl8180_sa2400.c.orig 2008-05-29 11:04:14.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rtl8180_sa2400.c 2008-05-29 13:37:03.000000000 -0400
+@@ -86,7 +86,7 @@ static void sa2400_rf_set_channel(struct
+
+ write_sa2400(dev, 7, txpw);
+
+- sa2400_write_phy_antenna(dev, chan);
++ sa2400_write_phy_antenna(dev, channel);
+
+ write_sa2400(dev, 0, chan);
+ write_sa2400(dev, 1, 0xbb50);
+diff -up linux-2.6.25.noarch/net/mac80211/cfg.c.orig linux-2.6.25.noarch/net/mac80211/cfg.c
+--- linux-2.6.25.noarch/net/mac80211/cfg.c.orig 2008-05-29 13:36:47.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/cfg.c 2008-05-29 13:37:03.000000000 -0400
+@@ -672,7 +672,7 @@ static int ieee80211_add_station(struct
+ if (params->vlan) {
+ sdata = IEEE80211_DEV_TO_SUB_IF(params->vlan);
+
+- if (sdata->vif.type != IEEE80211_IF_TYPE_VLAN ||
++ if (sdata->vif.type != IEEE80211_IF_TYPE_VLAN &&
+ sdata->vif.type != IEEE80211_IF_TYPE_AP)
+ return -EINVAL;
+ } else
+@@ -760,7 +760,7 @@ static int ieee80211_change_station(stru
+ if (params->vlan && params->vlan != sta->sdata->dev) {
+ vlansdata = IEEE80211_DEV_TO_SUB_IF(params->vlan);
+
+- if (vlansdata->vif.type != IEEE80211_IF_TYPE_VLAN ||
++ if (vlansdata->vif.type != IEEE80211_IF_TYPE_VLAN &&
+ vlansdata->vif.type != IEEE80211_IF_TYPE_AP) {
+ rcu_read_unlock();
+ return -EINVAL;
+diff -up linux-2.6.25.noarch/net/mac80211/main.c.orig linux-2.6.25.noarch/net/mac80211/main.c
+--- linux-2.6.25.noarch/net/mac80211/main.c.orig 2008-05-29 13:36:47.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/main.c 2008-05-29 13:37:03.000000000 -0400
+@@ -1313,7 +1313,7 @@ static void ieee80211_handle_filtered_fr
+ /*
+ * Clear the TX filter mask for this STA when sending the next
+ * packet. If the STA went to power save mode, this will happen
+- * happen when it wakes up for the next time.
++ * when it wakes up for the next time.
+ */
+ sta->flags |= WLAN_STA_CLEAR_PS_FILT;
+
+diff -up linux-2.6.25.noarch/net/mac80211/mlme.c.orig linux-2.6.25.noarch/net/mac80211/mlme.c
+--- linux-2.6.25.noarch/net/mac80211/mlme.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/mlme.c 2008-05-29 13:37:03.000000000 -0400
+@@ -1325,7 +1325,7 @@ static void ieee80211_sta_process_addba_
+
+ /* prepare reordering buffer */
+ tid_agg_rx->reorder_buf =
+- kmalloc(buf_size * sizeof(struct sk_buf *), GFP_ATOMIC);
++ kmalloc(buf_size * sizeof(struct sk_buff *), GFP_ATOMIC);
+ if (!tid_agg_rx->reorder_buf) {
+ if (net_ratelimit())
+ printk(KERN_ERR "can not allocate reordering buffer "
+@@ -1334,7 +1334,7 @@ static void ieee80211_sta_process_addba_
+ goto end;
+ }
+ memset(tid_agg_rx->reorder_buf, 0,
+- buf_size * sizeof(struct sk_buf *));
++ buf_size * sizeof(struct sk_buff *));
+
+ if (local->ops->ampdu_action)
+ ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_RX_START,
+@@ -1614,7 +1614,7 @@ void sta_addba_resp_timer_expired(unsign
+ * only one argument, and both sta_info and TID are needed, so init
+ * flow in sta_info_create gives the TID as data, while the timer_to_id
+ * array gives the sta through container_of */
+- u16 tid = *(int *)data;
++ u16 tid = *(u8 *)data;
+ struct sta_info *temp_sta = container_of((void *)data,
+ struct sta_info, timer_to_tid[tid]);
+
+@@ -1662,7 +1662,7 @@ timer_expired_exit:
+ void sta_rx_agg_session_timer_expired(unsigned long data)
{
+ /* not an elegant detour, but there is no choice as the timer passes
+- * only one argument, and verious sta_info are needed here, so init
++ * only one argument, and various sta_info are needed here, so init
+ * flow in sta_info_create gives the TID as data, while the timer_to_id
+ * array gives the sta through container_of */
+ u8 *ptid = (u8 *)data;
+@@ -2479,8 +2479,6 @@ static int ieee80211_sta_join_ibss(struc
+ ifsta->state = IEEE80211_IBSS_JOINED;
+ mod_timer(&ifsta->timer, jiffies + IEEE80211_IBSS_MERGE_INTERVAL);
+
+- ieee80211_rx_bss_put(dev, bss);
+-
+ return res;
+ }
+
+@@ -3523,6 +3521,7 @@ static int ieee80211_sta_create_ibss(str
+ struct ieee80211_supported_band *sband;
+ u8 bssid[ETH_ALEN], *pos;
int i;
++ int ret;
+ DECLARE_MAC_BUF(mac);
-diff -up linux-2.6.25.noarch/drivers/net/wireless/orinoco_cs.c.orig linux-2.6.25.noarch/drivers/net/wireless/orinoco_cs.c
---- linux-2.6.25.noarch/drivers/net/wireless/orinoco_cs.c.orig 2008-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/orinoco_cs.c 2008-05-21 14:45:53.000000000 -0400
-@@ -461,6 +461,7 @@ static struct pcmcia_device_id orinoco_c
- PCMCIA_DEVICE_MANF_CARD(0x028a, 0x0673), /* Linksys WCF12 Wireless CompactFlash Card */
- PCMCIA_DEVICE_MANF_CARD(0x02aa, 0x0002), /* ASUS SpaceLink WL-100 */
- PCMCIA_DEVICE_MANF_CARD(0x02ac, 0x0002), /* SpeedStream SS1021 Wireless Adapter */
-+ PCMCIA_DEVICE_MANF_CARD(0x02ac, 0x3021), /* SpeedStream Wireless Adapter */
- PCMCIA_DEVICE_MANF_CARD(0x14ea, 0xb001), /* PLANEX RoadLannerWave GW-NS11H */
- PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x7300), /* Airvast WN-100 */
- PCMCIA_DEVICE_MANF_CARD(0x9005, 0x0021), /* Adaptec Ultra Wireless ANW-8030 */
-diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/hw.c.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/hw.c
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/hw.c.orig 2008-05-21 11:36:23.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/hw.c 2008-05-21 14:45:53.000000000 -0400
-@@ -4119,6 +4119,7 @@ static int ath5k_hw_proc_5210_rx_status(
- rs->rs_tstamp = AR5K_REG_MS(rx_status->rx_status_1,
- AR5K_5210_RX_DESC_STATUS1_RECEIVE_TIMESTAMP);
- rs->rs_status = 0;
-+ rs->rs_phyerr = 0;
+ #if 0
+@@ -3567,7 +3566,9 @@ static int ieee80211_sta_create_ibss(str
+ *pos++ = (u8) (rate / 5);
+ }
- /*
- * Key table status
-@@ -4145,7 +4146,7 @@ static int ath5k_hw_proc_5210_rx_status(
- if (rx_status->rx_status_1 &
- AR5K_5210_RX_DESC_STATUS1_PHY_ERROR) {
- rs->rs_status |= AR5K_RXERR_PHY;
-- rs->rs_phyerr = AR5K_REG_MS(rx_status->rx_status_1,
-+ rs->rs_phyerr |= AR5K_REG_MS(rx_status->rx_status_1,
- AR5K_5210_RX_DESC_STATUS1_PHY_ERROR);
- }
+- return ieee80211_sta_join_ibss(dev, ifsta, bss);
++ ret = ieee80211_sta_join_ibss(dev, ifsta, bss);
++ ieee80211_rx_bss_put(dev, bss);
++ return ret;
+ }
-@@ -4193,6 +4194,7 @@ static int ath5k_hw_proc_5212_rx_status(
- rs->rs_tstamp = AR5K_REG_MS(rx_status->rx_status_1,
- AR5K_5212_RX_DESC_STATUS1_RECEIVE_TIMESTAMP);
- rs->rs_status = 0;
-+ rs->rs_phyerr = 0;
- /*
- * Key table status
-@@ -4215,7 +4217,7 @@ static int ath5k_hw_proc_5212_rx_status(
- if (rx_status->rx_status_1 &
- AR5K_5212_RX_DESC_STATUS1_PHY_ERROR) {
- rs->rs_status |= AR5K_RXERR_PHY;
-- rs->rs_phyerr = AR5K_REG_MS(rx_err->rx_error_1,
-+ rs->rs_phyerr |= AR5K_REG_MS(rx_err->rx_error_1,
- AR5K_RX_DESC_ERROR1_PHY_ERROR_CODE);
- }
+@@ -3615,10 +3616,13 @@ static int ieee80211_sta_find_ibss(struc
+ (bss = ieee80211_rx_bss_get(dev, bssid,
+ local->hw.conf.channel->center_freq,
+ ifsta->ssid, ifsta->ssid_len))) {
++ int ret;
+ printk(KERN_DEBUG "%s: Selected IBSS BSSID %s"
+ " based on configured SSID\n",
+ dev->name, print_mac(mac, bssid));
+- return ieee80211_sta_join_ibss(dev, ifsta, bss);
++ ret = ieee80211_sta_join_ibss(dev, ifsta, bss);
++ ieee80211_rx_bss_put(dev, bss);
++ return ret;
+ }
+ #ifdef CONFIG_MAC80211_IBSS_DEBUG
+ printk(KERN_DEBUG " did not try to join ibss\n");
+@@ -4095,18 +4099,17 @@ ieee80211_sta_scan_result(struct net_dev
+
+ memset(&iwe, 0, sizeof(iwe));
+ iwe.cmd = SIOCGIWFREQ;
+- iwe.u.freq.m = bss->freq;
+- iwe.u.freq.e = 6;
++ iwe.u.freq.m = ieee80211_frequency_to_channel(bss->freq);
++ iwe.u.freq.e = 0;
+ current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe,
+ IW_EV_FREQ_LEN);
+
+ memset(&iwe, 0, sizeof(iwe));
+ iwe.cmd = SIOCGIWFREQ;
+- iwe.u.freq.m = ieee80211_frequency_to_channel(bss->freq);
+- iwe.u.freq.e = 0;
++ iwe.u.freq.m = bss->freq;
++ iwe.u.freq.e = 6;
+ current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe,
+ IW_EV_FREQ_LEN);
+-
+ memset(&iwe, 0, sizeof(iwe));
+ iwe.cmd = IWEVQUAL;
+ iwe.u.qual.qual = bss->signal;
+diff -up linux-2.6.25.noarch/net/mac80211/rx.c.orig linux-2.6.25.noarch/net/mac80211/rx.c
+--- linux-2.6.25.noarch/net/mac80211/rx.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/rx.c 2008-05-29 13:37:03.000000000 -0400
+@@ -1091,7 +1091,7 @@ ieee80211_data_to_8023(struct ieee80211_
+ u16 fc, hdrlen, ethertype;
+ u8 *payload;
+ u8 dst[ETH_ALEN];
+- u8 src[ETH_ALEN];
++ u8 src[ETH_ALEN] __aligned(2);
+ struct sk_buff *skb = rx->skb;
+ struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+ DECLARE_MAC_BUF(mac);
+@@ -1234,7 +1234,7 @@ ieee80211_data_to_8023(struct ieee80211_
+ */
+ static bool ieee80211_frame_allowed(struct ieee80211_rx_data *rx)
+ {
+- static const u8 pae_group_addr[ETH_ALEN]
++ static const u8 pae_group_addr[ETH_ALEN] __aligned(2)
+ = { 0x01, 0x80, 0xC2, 0x00, 0x00, 0x03 };
+ struct ethhdr *ehdr = (struct ethhdr *) rx->skb->data;
+
+diff -up linux-2.6.25.noarch/net/mac80211/util.c.orig linux-2.6.25.noarch/net/mac80211/util.c
+--- linux-2.6.25.noarch/net/mac80211/util.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/util.c 2008-05-29 13:37:03.000000000 -0400
+@@ -34,11 +34,11 @@ void *mac80211_wiphy_privid = &mac80211_
+
+ /* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */
+ /* Ethernet-II snap header (RFC1042 for most EtherTypes) */
+-const unsigned char rfc1042_header[] =
++const unsigned char rfc1042_header[] __aligned(2) =
+ { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 };
+
+ /* Bridge-Tunnel header (for EtherTypes ETH_P_AARP and ETH_P_IPX) */
+-const unsigned char bridge_tunnel_header[] =
++const unsigned char bridge_tunnel_header[] __aligned(2) =
+ { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 };
+
-diff -up linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c
---- linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c.orig 2008-05-21 11:36:23.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/ath5k/base.c 2008-05-21 14:45:53.000000000 -0400
-@@ -1787,6 +1787,8 @@ ath5k_tasklet_rx(unsigned long data)
-
- spin_lock(&sc->rxbuflock);
- do {
-+ rxs.flag = 0;
-+
- if (unlikely(list_empty(&sc->rxbuf))) {
- ATH5K_WARN(sc, "empty rx buf pool\n");
- break;
-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-04-16 22:49:44.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/hostap/hostap_cs.c 2008-05-21 14:45:53.000000000 -0400
-@@ -833,6 +833,7 @@ static struct pcmcia_device_id hostap_cs
- PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x0001),
- PCMCIA_DEVICE_MANF_CARD(0x50c2, 0x7300),
- /* PCMCIA_DEVICE_MANF_CARD(0xc00f, 0x0000), conflict with pcnet_cs */
-+ PCMCIA_DEVICE_MANF_CARD(0xc250, 0x0002),
- PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0002),
- PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0005),
- PCMCIA_DEVICE_MANF_CARD(0xd601, 0x0010),
+diff -up linux-2.6.25.noarch/net/mac80211/wext.c.orig linux-2.6.25.noarch/net/mac80211/wext.c
+--- linux-2.6.25.noarch/net/mac80211/wext.c.orig 2008-05-29 13:36:48.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/wext.c 2008-05-29 13:37:03.000000000 -0400
+@@ -489,9 +489,14 @@ static int ieee80211_ioctl_giwap(struct
+ sdata = IEEE80211_DEV_TO_SUB_IF(dev);
+ if (sdata->vif.type == IEEE80211_IF_TYPE_STA ||
+ sdata->vif.type == IEEE80211_IF_TYPE_IBSS) {
+- ap_addr->sa_family = ARPHRD_ETHER;
+- memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
+- return 0;
++ if (sdata->u.sta.state == IEEE80211_ASSOCIATED) {
++ ap_addr->sa_family = ARPHRD_ETHER;
++ memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN);
++ return 0;
++ } else {
++ memset(&ap_addr->sa_data, 0, ETH_ALEN);
++ return 0;
++ }
+ } else if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) {
+ ap_addr->sa_family = ARPHRD_ETHER;
+ memcpy(&ap_addr->sa_data, sdata->u.wds.remote_addr, ETH_ALEN);
More information about the fedora-extras-commits
mailing list