rpms/kernel/devel config-generic, 1.55, 1.56 kernel.spec, 1.330, 1.331 linux-2.6-ath5k.patch, 1.8, 1.9 linux-2.6-rtl8180.patch, 1.3, 1.4 linux-2.6-wireless-pending.patch, 1.17, 1.18 linux-2.6-wireless.patch, 1.14, 1.15
John W. Linville (linville)
fedora-extras-commits at redhat.com
Fri Dec 21 17:36:06 UTC 2007
- Previous message (by thread): rpms/xguest/F-8 xguest.spec,NONE,1.1 sources,1.1,1.2
- Next message (by thread): rpms/gnome-chemistry-utils/devel .cvsignore, 1.7, 1.8 gnome-chemistry-utils.spec, 1.15, 1.16 sources, 1.7, 1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: linville
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv8497
Modified Files:
config-generic kernel.spec linux-2.6-ath5k.patch
linux-2.6-rtl8180.patch linux-2.6-wireless-pending.patch
linux-2.6-wireless.patch
Log Message:
Yet another round of wireless updates...
Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/config-generic,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- config-generic 18 Dec 2007 22:10:10 -0000 1.55
+++ config-generic 21 Dec 2007 17:35:23 -0000 1.56
@@ -1231,6 +1231,12 @@
# CONFIG_PCMCIA_RAYCS is not set
CONFIG_MAC80211=m
+CONFIG_MAC80211_RC_DEFAULT_CHOICE=y
+CONFIG_MAC80211_RC_DEFAULT_PID=y
+# CONFIG_MAC80211_RC_DEFAULT_SIMPLE is not set
+CONFIG_MAC80211_RC_DEFAULT="pid"
+CONFIG_MAC80211_RC_PID=y
+CONFIG_MAC80211_RC_SIMPLE=y
CONFIG_MAC80211_LEDS=y
CONFIG_MAC80211_HT=y
# CONFIG_MAC80211_DEBUGFS is not set
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.330
retrieving revision 1.331
diff -u -r1.330 -r1.331
--- kernel.spec 21 Dec 2007 04:39:42 -0000 1.330
+++ kernel.spec 21 Dec 2007 17:35:23 -0000 1.331
@@ -622,7 +622,7 @@
Patch610: linux-2.6-defaults-fat-utf8.patch
Patch660: linux-2.6-libata-ali-atapi-dma.patch
Patch670: linux-2.6-ata-quirk.patch
-#Patch680: linux-2.6-wireless.patch
+Patch680: linux-2.6-wireless.patch
Patch681: linux-2.6-wireless-pending.patch
Patch690: linux-2.6-at76.patch
Patch691: linux-2.6-ath5k.patch
@@ -1121,7 +1121,7 @@
ApplyPatch linux-2.6-ata-quirk.patch
# wireless patches headed for 2.6.24
-#ApplyPatch linux-2.6-wireless.patch
+ApplyPatch linux-2.6-wireless.patch
# wireless patches headed for 2.6.25
ApplyPatch linux-2.6-wireless-pending.patch
@@ -1741,6 +1741,9 @@
%kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL} -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf %{with_xen} xen
%changelog
+* Fri Dec 21 2007 John W. Linville <linville at redhat.com>
+- Yet another round of wireless updates...
+
* Thu Dec 20 2007 Kyle McMartin <kmcmartin at redhat.com>
- 2.6.24-rc6
linux-2.6-ath5k.patch:
Index: linux-2.6-ath5k.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-ath5k.patch,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- linux-2.6-ath5k.patch 17 Dec 2007 23:04:26 -0000 1.8
+++ linux-2.6-ath5k.patch 21 Dec 2007 17:35:23 -0000 1.9
@@ -1,6 +1,6 @@
diff -up linux-2.6.23.noarch/MAINTAINERS.orig linux-2.6.23.noarch/MAINTAINERS
---- linux-2.6.23.noarch/MAINTAINERS.orig 2007-12-17 17:25:59.000000000 -0500
-+++ linux-2.6.23.noarch/MAINTAINERS 2007-12-17 17:35:55.000000000 -0500
+--- linux-2.6.23.noarch/MAINTAINERS.orig 2007-12-21 12:15:17.000000000 -0500
++++ linux-2.6.23.noarch/MAINTAINERS 2007-12-21 12:18:50.000000000 -0500
@@ -646,6 +646,17 @@ M: ecashin at coraid.com
W: http://www.coraid.com/support/linux
S: Supported
@@ -20,8 +20,8 @@
P: Jay Cliburn
M: jcliburn at gmail.com
diff -up linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig linux-2.6.23.noarch/drivers/net/wireless/Makefile
---- linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig 2007-12-17 17:25:59.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Makefile 2007-12-17 17:35:55.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig 2007-12-21 12:15:17.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Makefile 2007-12-21 12:18:50.000000000 -0500
@@ -61,3 +61,5 @@ obj-$(CONFIG_RT2X00) += rt2x00/
obj-$(CONFIG_P54_COMMON) += p54common.o
obj-$(CONFIG_P54_USB) += p54usb.o
@@ -29,11 +29,11 @@
+
+obj-$(CONFIG_ATH5K) += ath5k/
diff -up linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.23.noarch/drivers/net/wireless/Kconfig
---- linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig 2007-12-17 17:25:59.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig 2007-12-17 17:35:55.000000000 -0500
-@@ -605,6 +605,24 @@ config P54_PCI
- tristate "Prism54 PCI support"
- depends on P54_COMMON && PCI
+--- linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig 2007-12-21 12:15:17.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig 2007-12-21 12:18:50.000000000 -0500
+@@ -656,6 +656,24 @@ config P54_PCI
+
+ If you choose to build a module, it'll be called p54pci.
+config ATH5K
+ tristate "Atheros 5xxx wireless cards support"
@@ -57,8 +57,8 @@
source "drivers/net/wireless/hostap/Kconfig"
source "drivers/net/wireless/bcm43xx/Kconfig"
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/phy.c
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/phy.c 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/phy.c 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,2071 @@
+/*
+ * PHY functions
@@ -2132,8 +2132,8 @@
+ return ath5k_hw_txpower(ah, channel, power);
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/ath5k.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/ath5k.h 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/ath5k.h 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,1153 @@
+/*
+ * Copyright (c) 2004-2007 Reyk Floeter <reyk at openbsd.org>
@@ -3289,14 +3289,14 @@
+
+#endif
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/Makefile
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/Makefile 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/Makefile 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,2 @@
+ath5k-objs = base.o hw.o regdom.o initvals.o phy.o debug.o
+obj-$(CONFIG_ATH5K) += ath5k.o
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/reg.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/reg.h 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/reg.h 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,1987 @@
+/*
+ * Copyright (c) 2007 Nick Kossifidis <mickflemm at gmail.com>
@@ -5286,8 +5286,8 @@
+#define AR5K_PHY_GAIN_2GHZ_MARGIN_TXRX_S 18
+#define AR5K_PHY_GAIN_2GHZ_INI_5111 0x6480416c
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.h 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.h 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,500 @@
+/*
+ * Copyright (c) 2004, 2005 Reyk Floeter <reyk at openbsd.org>
@@ -5790,8 +5790,8 @@
+
+#endif
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/debug.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/debug.h 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/debug.h 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2007 Bruno Randolf <bruno at thinktube.com>
@@ -6010,8 +6010,8 @@
+
+#endif /* ifndef _ATH5K_DEBUG_H */
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.c
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.c 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.c 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,4349 @@
+ /*
+ * Copyright (c) 2004-2007 Reyk Floeter <reyk at openbsd.org>
@@ -10363,8 +10363,8 @@
+ return -EIO;
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.h 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.h 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,588 @@
+/*
+ * Copyright (c) 2004-2007 Reyk Floeter <reyk at openbsd.org>
@@ -10955,8 +10955,8 @@
+ return retval;
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/initvals.c
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/initvals.c 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/initvals.c 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,1347 @@
+/*
+ * Initial register settings functions
@@ -12306,8 +12306,8 @@
+ return 0;
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.c
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.c 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.c 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,2822 @@
+/*-
+ * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
@@ -15132,8 +15132,8 @@
+}
+
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/debug.c
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/debug.c 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/debug.c 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,469 @@
+/*
+ * Copyright (c) 2007 Bruno Randolf <bruno at thinktube.com>
@@ -15605,8 +15605,8 @@
+
+#endif /* if ATH5K_DEBUG */
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.h 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.h 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,178 @@
+/*-
+ * Copyright (c) 2002-2007 Sam Leffler, Errno Consulting
@@ -15787,8 +15787,8 @@
+
+#endif
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.c
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.c 2007-12-17 17:35:55.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.c 2007-12-21 12:18:50.000000000 -0500
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2004, 2005 Reyk Floeter <reyk at vantronix.net>
linux-2.6-rtl8180.patch:
Index: linux-2.6-rtl8180.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-rtl8180.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-rtl8180.patch 17 Dec 2007 23:04:26 -0000 1.3
+++ linux-2.6-rtl8180.patch 21 Dec 2007 17:35:23 -0000 1.4
@@ -1,6 +1,6 @@
diff -up linux-2.6.23.noarch/include/linux/pci_ids.h.orig linux-2.6.23.noarch/include/linux/pci_ids.h
---- linux-2.6.23.noarch/include/linux/pci_ids.h.orig 2007-12-17 16:00:07.000000000 -0500
-+++ linux-2.6.23.noarch/include/linux/pci_ids.h 2007-12-17 17:37:09.000000000 -0500
+--- linux-2.6.23.noarch/include/linux/pci_ids.h.orig 2007-12-21 10:43:39.000000000 -0500
++++ linux-2.6.23.noarch/include/linux/pci_ids.h 2007-12-21 12:28:05.000000000 -0500
@@ -2078,6 +2078,9 @@
#define PCI_DEVICE_ID_ALTIMA_AC9100 0x03ea
#define PCI_DEVICE_ID_ALTIMA_AC1003 0x03eb
@@ -12,8 +12,8 @@
#define PCI_VENDOR_ID_ARECA 0x17d3
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_sa2400.c
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_sa2400.c 2007-12-17 17:37:09.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_sa2400.c 2007-12-21 12:28:05.000000000 -0500
@@ -0,0 +1,193 @@
+
+/*
@@ -209,13 +209,13 @@
+ rtl8180_write_phy(dev, 0x1a, 0xa0);
+}
diff -up linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig linux-2.6.23.noarch/drivers/net/wireless/Makefile
---- linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig 2007-12-17 17:36:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Makefile 2007-12-17 17:37:09.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig 2007-12-21 12:19:55.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Makefile 2007-12-21 12:28:05.000000000 -0500
@@ -49,7 +49,10 @@ obj-$(CONFIG_PCMCIA_WL3501) += wl3501_cs
obj-$(CONFIG_USB_ZD1201) += zd1201.o
obj-$(CONFIG_LIBERTAS) += libertas/
-+rtl8180-objs := rtl8180_dev.o rtl8180_rtl8225.o rtl8180_sa2400.o rtl8180_max2820.o
++rtl8180-objs := rtl8180_dev.o rtl8180_rtl8225.o rtl8180_sa2400.o rtl8180_max2820.o rtl8180_grf5101.o
rtl8187-objs := rtl8187_dev.o rtl8187_rtl8225.o
+
+obj-$(CONFIG_RTL8180) += rtl8180.o
@@ -223,8 +223,8 @@
obj-$(CONFIG_ADM8211) += adm8211.o
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_max2820.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_max2820.h 2007-12-17 17:37:09.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_max2820.h 2007-12-21 12:28:05.000000000 -0500
@@ -0,0 +1,30 @@
+#ifndef RTL8180_MAX2820_H
+#define RTL8180_MAX2820_H
@@ -257,8 +257,8 @@
+
+#endif /* RTL8180_MAX2820_H */
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_sa2400.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_sa2400.h 2007-12-17 17:37:09.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_sa2400.h 2007-12-21 12:28:05.000000000 -0500
@@ -0,0 +1,38 @@
+#ifndef RTL8180_SA2400_H
+#define RTL8180_SA2400_H
@@ -299,9 +299,9 @@
+
+#endif /* RTL8180_SA2400_H */
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_rtl8225.c
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_rtl8225.c 2007-12-17 17:37:09.000000000 -0500
-@@ -0,0 +1,765 @@
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_rtl8225.c 2007-12-21 12:28:05.000000000 -0500
+@@ -0,0 +1,763 @@
+
+/*
+ * Radio tuning for RTL8225 on RTL8180
@@ -592,10 +592,6 @@
+ rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE);
+ rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL);
+
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 2, 0x42);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 6, 0x00);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 8, 0x00);
-+
+ rtl818x_iowrite8(priv, &priv->map->TX_GAIN_OFDM,
+ rtl8180_rtl8225_tx_gain_cck_ofdm[ofdm_power/6] >> 1);
+
@@ -609,10 +605,16 @@
+
+int rtl8180_rtl8225_is_z2(struct ieee80211_hw *dev)
+{
++ struct rtl8180_priv *priv = dev->priv;
+ int z2 = 0;
+
++ rtl818x_iowrite16(priv, &priv->map->RFPinsOutput, 0x0480);
++ rtl818x_iowrite16(priv, &priv->map->RFPinsSelect, 0x0488);
++ rtl818x_iowrite16(priv, &priv->map->RFPinsEnable, 0x1FFF);
++ rtl818x_ioread8(priv, &priv->map->EEPROM_CMD);
++ msleep(100);
++
+ rtl8180_rtl8225_write(dev, 0, 0x1B7);
-+ rtl8180_rtl8225_read(dev, 0);
+
+ if (rtl8180_rtl8225_read(dev, 8) == 0x588 && rtl8180_rtl8225_read(dev, 9) == 0x700)
+ z2 = 1;
@@ -693,9 +695,9 @@
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x03, 0x00); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x04, 0x00); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x05, 0x00); msleep(1);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x06, 0x40); msleep(1);
++ rtl8180_rtl8225_write_phy_ofdm(dev, 0x06, 0x00); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x07, 0x00); msleep(1);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x08, 0x40); msleep(1);
++ rtl8180_rtl8225_write_phy_ofdm(dev, 0x08, 0x00); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x09, 0xfe); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x0a, 0x09); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x0b, 0x80); msleep(1);
@@ -703,7 +705,7 @@
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x0e, 0xd3); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x0f, 0x38); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x10, 0x84); msleep(1);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x11, 0x06); msleep(1);
++ rtl8180_rtl8225_write_phy_ofdm(dev, 0x11, 0x03); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x12, 0x20); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x13, 0x20); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x14, 0x00); msleep(1);
@@ -725,11 +727,6 @@
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x26, 0x90); msleep(1);
+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x27, 0x88); msleep(1);
+
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x0d, rtl8180_rtl8225_gain[1 * 4]);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x1b, rtl8180_rtl8225_gain[1 * 4 + 2]);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x1d, rtl8180_rtl8225_gain[1 * 4 + 3]);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x23, rtl8180_rtl8225_gain[1 * 4 + 1]);
-+
+ rtl8180_rtl8225_write_phy_cck(dev, 0x00, 0x98); msleep(1);
+ rtl8180_rtl8225_write_phy_cck(dev, 0x03, 0x20); msleep(1);
+ rtl8180_rtl8225_write_phy_cck(dev, 0x04, 0x7e); msleep(1);
@@ -771,13 +768,14 @@
+ rtl818x_iowrite32(priv, (__le32 __iomem *)((void __iomem *)priv->map + 0x94), 0x15c00002);
+ rtl818x_iowrite16(priv, &priv->map->RFPinsEnable, 0x1FFF);
+
-+ /* set sensitivity */
+ rtl8180_rtl8225_write(dev, 0x0c, 0x50);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x0d, rtl8180_rtl8225_gain[1 * 4]);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x1b, rtl8180_rtl8225_gain[1 * 4 + 2]);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x1d, rtl8180_rtl8225_gain[1 * 4 + 3]);
-+ rtl8180_rtl8225_write_phy_ofdm(dev, 0x23, rtl8180_rtl8225_gain[1 * 4 + 1]);
-+ rtl8180_rtl8225_write_phy_cck(dev, 0x41, rtl8180_rtl8225_threshold[2]);
++ /* set OFDM initial gain */
++ rtl8180_rtl8225_write_phy_ofdm(dev, 0x0d, rtl8180_rtl8225_gain[4 * 4]);
++ rtl8180_rtl8225_write_phy_ofdm(dev, 0x23, rtl8180_rtl8225_gain[4 * 4 + 1]);
++ rtl8180_rtl8225_write_phy_ofdm(dev, 0x1b, rtl8180_rtl8225_gain[4 * 4 + 2]);
++ rtl8180_rtl8225_write_phy_ofdm(dev, 0x1d, rtl8180_rtl8225_gain[4 * 4 + 3]);
++ /* set CCK threshold */
++ rtl8180_rtl8225_write_phy_cck(dev, 0x41, rtl8180_rtl8225_threshold[0]);
+}
+
+static const u8 rtl8180_rtl8225z2_tx_power_cck_ch14[] = {
@@ -1068,8 +1066,8 @@
+ }
+}
diff -up linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c.orig linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c
---- linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c.orig 2007-12-17 17:36:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c 2007-12-17 17:37:09.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c.orig 2007-12-21 12:19:55.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c 2007-12-21 12:28:05.000000000 -0500
@@ -395,12 +395,12 @@ static int rtl8187_init_hw(struct ieee80
priv->rf_init(dev);
@@ -1104,8 +1102,8 @@
rtl8225_write(dev, 0, 0x1B7);
diff -up linux-2.6.23.noarch/drivers/net/wireless/rtl818x.h.orig linux-2.6.23.noarch/drivers/net/wireless/rtl818x.h
---- linux-2.6.23.noarch/drivers/net/wireless/rtl818x.h.orig 2007-12-17 16:00:01.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl818x.h 2007-12-17 17:37:09.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rtl818x.h.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl818x.h 2007-12-21 12:28:05.000000000 -0500
@@ -58,13 +58,17 @@ struct rtl818x_csr {
#define RTL818X_INT_TX_FO (1 << 15)
__le32 TX_CONF;
@@ -1178,10 +1176,186 @@
u8 TALLY_SEL;
} __attribute__((packed));
+diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_grf5101.c
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_grf5101.c 2007-12-21 12:28:05.000000000 -0500
+@@ -0,0 +1,172 @@
++
++/*
++ * Radio tuning for GCT GRF5101 on RTL8180
++ *
++ * Copyright 2007 Andrea Merello <andreamrl at tiscali.it>
++ *
++ * Code from the BSD driver and the rtl8181 project have been
++ * very useful to understand certain things
++ *
++ * I want to thanks the Authors of such projects and the Ndiswrapper
++ * project Authors.
++ *
++ * A special Big Thanks also is for all people who donated me cards,
++ * making possible the creation of the original rtl8180 driver
++ * from which this code is derived!
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/init.h>
++#include <linux/pci.h>
++#include <linux/delay.h>
++#include <net/mac80211.h>
++
++#include "rtl8180.h"
++#include "rtl8180_grf5101.h"
++
++static const int grf5101_encode[] = {
++ 0x0, 0x8, 0x4, 0xC,
++ 0x2, 0xA, 0x6, 0xE,
++ 0x1, 0x9, 0x5, 0xD,
++ 0x3, 0xB, 0x7, 0xF
++};
++
++static void write_grf5101(struct ieee80211_hw *dev, u8 addr, u32 data)
++{
++ struct rtl8180_priv *priv = dev->priv;
++ u32 phy_config;
++
++ phy_config = grf5101_encode[(data >> 8) & 0xF];
++ phy_config |= grf5101_encode[(data >> 4) & 0xF] << 4;
++ phy_config |= grf5101_encode[data & 0xF] << 8;
++ phy_config |= grf5101_encode[(addr >> 1) & 0xF] << 12;
++ phy_config |= (addr & 1) << 16;
++ phy_config |= grf5101_encode[(data & 0xf000) >> 12] << 24;
++
++ /* MAC will bang bits to the chip */
++ phy_config |= 0x90000000;
++
++ rtl818x_iowrite32(priv,
++ (__le32 __iomem *) &priv->map->RFPinsOutput, phy_config);
++
++ msleep(3);
++}
++
++static void grf5101_write_phy_antenna(struct ieee80211_hw *dev, short chan)
++{
++ struct rtl8180_priv *priv = dev->priv;
++ u8 ant = GRF5101_ANTENNA;
++
++ if (priv->rfparam & RF_PARAM_ANTBDEFAULT)
++ ant |= BB_ANTENNA_B;
++
++ if (chan == 14)
++ ant |= BB_ANTATTEN_CHAN14;
++
++ rtl8180_write_phy(dev, 0x10, ant);
++}
++
++void grf5101_rf_set_channel(struct ieee80211_hw *dev,
++ struct ieee80211_conf *conf)
++{
++ struct rtl8180_priv *priv = dev->priv;
++ u32 txpw = priv->channels[conf->channel - 1].val & 0xFF;
++ u32 chan = conf->channel - 1;
++
++ /* set TX power */
++ write_grf5101(dev, 0x15, 0x0);
++ write_grf5101(dev, 0x06, txpw);
++ write_grf5101(dev, 0x15, 0x10);
++ write_grf5101(dev, 0x15, 0x0);
++
++ /* set frequency */
++ write_grf5101(dev, 0x07, 0x0);
++ write_grf5101(dev, 0x0B, chan);
++ write_grf5101(dev, 0x07, 0x1000);
++
++ grf5101_write_phy_antenna(dev, chan);
++}
++
++void grf5101_rf_stop(struct ieee80211_hw *dev)
++{
++ struct rtl8180_priv *priv = dev->priv;
++ u32 anaparam;
++
++ anaparam = priv->anaparam;
++ anaparam &= 0x000fffff;
++ anaparam |= 0x3f900000;
++ rtl8180_set_anaparam(priv, anaparam);
++
++ write_grf5101(dev, 0x07, 0x0);
++ write_grf5101(dev, 0x1f, 0x45);
++ write_grf5101(dev, 0x1f, 0x5);
++ write_grf5101(dev, 0x00, 0x8e4);
++}
++
++void grf5101_rf_init(struct ieee80211_hw *dev)
++{
++ struct rtl8180_priv *priv = dev->priv;
++
++ rtl8180_set_anaparam(priv, priv->anaparam);
++
++ write_grf5101(dev, 0x1f, 0x0);
++ write_grf5101(dev, 0x1f, 0x0);
++ write_grf5101(dev, 0x1f, 0x40);
++ write_grf5101(dev, 0x1f, 0x60);
++ write_grf5101(dev, 0x1f, 0x61);
++ write_grf5101(dev, 0x1f, 0x61);
++ write_grf5101(dev, 0x00, 0xae4);
++ write_grf5101(dev, 0x1f, 0x1);
++ write_grf5101(dev, 0x1f, 0x41);
++ write_grf5101(dev, 0x1f, 0x61);
++
++ write_grf5101(dev, 0x01, 0x1a23);
++ write_grf5101(dev, 0x02, 0x4971);
++ write_grf5101(dev, 0x03, 0x41de);
++ write_grf5101(dev, 0x04, 0x2d80);
++ write_grf5101(dev, 0x05, 0x68ff); /* 0x61ff original value */
++ write_grf5101(dev, 0x06, 0x0);
++ write_grf5101(dev, 0x07, 0x0);
++ write_grf5101(dev, 0x08, 0x7533);
++ write_grf5101(dev, 0x09, 0xc401);
++ write_grf5101(dev, 0x0a, 0x0);
++ write_grf5101(dev, 0x0c, 0x1c7);
++ write_grf5101(dev, 0x0d, 0x29d3);
++ write_grf5101(dev, 0x0e, 0x2e8);
++ write_grf5101(dev, 0x10, 0x192);
++ write_grf5101(dev, 0x11, 0x248);
++ write_grf5101(dev, 0x12, 0x0);
++ write_grf5101(dev, 0x13, 0x20c4);
++ write_grf5101(dev, 0x14, 0xf4fc);
++ write_grf5101(dev, 0x15, 0x0);
++ write_grf5101(dev, 0x16, 0x1500);
++
++ write_grf5101(dev, 0x07, 0x1000);
++
++ /* baseband configuration */
++ rtl8180_write_phy(dev, 0, 0xa8);
++ rtl8180_write_phy(dev, 3, 0x0);
++ rtl8180_write_phy(dev, 4, 0xc0);
++ rtl8180_write_phy(dev, 5, 0x90);
++ rtl8180_write_phy(dev, 6, 0x1e);
++ rtl8180_write_phy(dev, 7, 0x64);
++
++ grf5101_write_phy_antenna(dev, 1);
++
++ rtl8180_write_phy(dev, 0x11, 0x88);
++
++ if (rtl818x_ioread8(priv, &priv->map->CONFIG2) &
++ RTL818X_CONFIG2_ANTENNA_DIV)
++ rtl8180_write_phy(dev, 0x12, 0xc0); /* enable ant diversity */
++ else
++ rtl8180_write_phy(dev, 0x12, 0x40); /* disable ant diversity */
++
++ rtl8180_write_phy(dev, 0x13, 0x90 | priv->csthreshold);
++
++ rtl8180_write_phy(dev, 0x19, 0x0);
++ rtl8180_write_phy(dev, 0x1a, 0xa0);
++ rtl8180_write_phy(dev, 0x1b, 0x44);
++}
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_dev.c
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_dev.c 2007-12-17 17:37:09.000000000 -0500
-@@ -0,0 +1,1054 @@
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_dev.c 2007-12-21 12:28:05.000000000 -0500
+@@ -0,0 +1,1071 @@
+
+/*
+ * Linux device driver for RTL8180 / RTL8185
@@ -1210,6 +1384,7 @@
+#include "rtl8180_rtl8225.h"
+#include "rtl8180_sa2400.h"
+#include "rtl8180_max2820.h"
++#include "rtl8180_grf5101.h"
+
+MODULE_AUTHOR("Michael Wu <flamingice at sourmilk.net>");
+MODULE_AUTHOR("Andrea Merello <andreamrl at tiscali.it>");
@@ -1287,6 +1462,9 @@
+ rx_status.phymode = dev->conf.phymode;
+ rx_status.mactime = le64_to_cpu(entry->tsft);
+ rx_status.flag |= RX_FLAG_TSFT;
++ if (flags & RTL8180_RX_DESC_FLAG_CRC32_ERR)
++ rx_status.flag |= RX_FLAG_FAILED_FCS_CRC;
++
+ ieee80211_rx_irqsafe(dev, skb, &rx_status);
+
+ skb = new_skb;
@@ -1390,6 +1568,8 @@
+ unsigned int idx, prio;
+ dma_addr_t mapping;
+ u32 tx_flags;
++ u16 plcp_len = 0;
++ __le16 rts_duration = 0;
+
+ prio = control->queue;
+ ring = &priv->tx_ring[prio];
@@ -1413,24 +1593,26 @@
+ *((struct ieee80211_tx_control **) skb->cb) =
+ kmemdup(control, sizeof(*control), GFP_ATOMIC);
+
-+ spin_lock_irqsave(&priv->lock, flags);
-+ idx = (ring->idx + skb_queue_len(&ring->queue)) % ring->entries;
-+ entry = &ring->desc[idx];
-+
+ if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS)
-+ entry->rts_duration =
-+ ieee80211_rts_duration(dev, priv->if_id, skb->len, control);
++ rts_duration = ieee80211_rts_duration(dev, priv->if_id, skb->len, control);
+
+ if (!priv->r8185) {
+ unsigned int remainder;
+
-+ entry->plcp_len =
-+ DIV_ROUND_UP(16 * (skb->len + 4), (control->rate->rate * 2) / 10);
-+ remainder = (16 * (skb->len + 4)) % ((control->rate->rate * 2) / 10);
++ plcp_len = DIV_ROUND_UP(16 * (skb->len + 4),
++ (control->rate->rate * 2) / 10);
++ remainder = (16 * (skb->len + 4)) %
++ ((control->rate->rate * 2) / 10);
+ if (remainder > 0 && remainder <= 6)
-+ entry->plcp_len |= 1 << 15;
++ plcp_len |= 1 << 15;
+ }
+
++ spin_lock_irqsave(&priv->lock, flags);
++ idx = (ring->idx + skb_queue_len(&ring->queue)) % ring->entries;
++ entry = &ring->desc[idx];
++
++ entry->rts_duration = rts_duration;
++ entry->plcp_len = cpu_to_le16(plcp_len);
+ entry->tx_buf = cpu_to_le32(mapping);
+ entry->frame_len = cpu_to_le32(skb->len);
+ entry->flags2 = control->alt_retry_rate != -1 ?
@@ -1551,7 +1733,8 @@
+ }
+
+ priv->rf_init(dev);
-+ rtl818x_iowrite16(priv, &priv->map->BRSR, 0x01F3);
++ if (priv->r8185)
++ rtl818x_iowrite16(priv, &priv->map->BRSR, 0x01F3);
+ return 0;
+}
+
@@ -1785,6 +1968,11 @@
+
+ priv->rf_stop(dev);
+
++ rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG);
++ reg = rtl818x_ioread8(priv, &priv->map->CONFIG4);
++ rtl818x_iowrite8(priv, &priv->map->CONFIG4, reg | RTL818X_CONFIG4_VCOOFF);
++ rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL);
++
+ free_irq(priv->pdev->irq, dev);
+
+ rtl8180_free_rx_ring(dev);
@@ -2087,6 +2275,9 @@
+ break;
+ case 5:
+ rf_name = "GCT";
++ priv->rf_init = grf5101_rf_init;
++ priv->rf_stop = grf5101_rf_stop;
++ priv->rf_set_chan = grf5101_rf_set_channel;
+ break;
+ case 9:
+ if (rtl8180_rtl8225_is_z2(dev)) {
@@ -2237,8 +2428,8 @@
+module_init(rtl8180_init);
+module_exit(rtl8180_exit);
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180.h 2007-12-17 17:37:09.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180.h 2007-12-21 12:28:05.000000000 -0500
@@ -0,0 +1,153 @@
+#ifndef RTL8180_H
+#define RTL8180_H
@@ -2394,8 +2585,8 @@
+
+#endif /* RTL8180_H */
diff -up linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.23.noarch/drivers/net/wireless/Kconfig
---- linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig 2007-12-17 17:36:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig 2007-12-17 17:37:09.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig 2007-12-21 12:19:55.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig 2007-12-21 12:28:05.000000000 -0500
@@ -553,6 +553,11 @@ config USB_ZD1201
To compile this driver as a module, choose M here: the
module will be called zd1201.
@@ -2409,8 +2600,8 @@
tristate "Realtek 8187 USB support"
depends on MAC80211 && USB && WLAN_80211 && EXPERIMENTAL
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_rtl8225.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_rtl8225.h 2007-12-17 17:37:09.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_rtl8225.h 2007-12-21 12:28:05.000000000 -0500
@@ -0,0 +1,28 @@
+#ifndef RTL8180_RTL8225_H
+#define RTL8180_RTL8225_H
@@ -2440,9 +2631,43 @@
+}
+
+#endif /* RTL8180_RTL8225_H */
+diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_grf5101.h
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_grf5101.h 2007-12-21 12:28:05.000000000 -0500
+@@ -0,0 +1,30 @@
++#ifndef RTL8180_GRF5101_H
++#define RTL8180_GRF5101_H
++
++/*
++ * Radio tuning for GCT GRF5101 on RTL8180
++ *
++ * Copyright 2007 Andrea Merello <andreamrl at tiscali.it>
++ *
++ * Code from the BSD driver and the rtl8181 project have been
++ * very useful to understand certain things
++ *
++ * I want to thanks the Authors of such projects and the Ndiswrapper
++ * project Authors.
++ *
++ * A special Big Thanks also is for all people who donated me cards,
++ * making possible the creation of the original rtl8180 driver
++ * from which this code is derived!
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#define GRF5101_ANTENNA 0xA3
++
++void grf5101_rf_init(struct ieee80211_hw *);
++void grf5101_rf_stop(struct ieee80211_hw *);
++void grf5101_rf_set_channel(struct ieee80211_hw *, struct ieee80211_conf *);
++
++#endif /* RTL8180_GRF5101_H */
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_max2820.c
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_max2820.c 2007-12-17 17:37:09.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_max2820.c 2007-12-21 12:28:05.000000000 -0500
@@ -0,0 +1,142 @@
+/*
+ * Radio tuning for Maxim max2820 on RTL8180
linux-2.6-wireless-pending.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.17 -r 1.18 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.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- linux-2.6-wireless-pending.patch 17 Dec 2007 23:04:26 -0000 1.17
+++ linux-2.6-wireless-pending.patch 21 Dec 2007 17:35:23 -0000 1.18
@@ -1,6 +1,209 @@
+diff -up linux-2.6.23.noarch/include/linux/nl80211.h.orig linux-2.6.23.noarch/include/linux/nl80211.h
+--- linux-2.6.23.noarch/include/linux/nl80211.h.orig 2007-12-21 10:43:39.000000000 -0500
++++ linux-2.6.23.noarch/include/linux/nl80211.h 2007-12-21 11:57:47.000000000 -0500
+@@ -7,6 +7,18 @@
+ */
+
+ /**
++ * DOC: Station handling
++ *
++ * Stations are added per interface, but a special case exists with VLAN
++ * interfaces. When a station is bound to an AP interface, it may be moved
++ * into a VLAN identified by a VLAN interface index (%NL80211_ATTR_STA_VLAN).
++ * The station is still assumed to belong to the AP interface it was added
++ * to.
++ *
++ * TODO: need more info?
++ */
++
++/**
+ * enum nl80211_commands - supported nl80211 commands
+ *
+ * @NL80211_CMD_UNSPEC: unspecified command to catch errors
+@@ -37,6 +49,35 @@
+ * userspace to request deletion of a virtual interface, then requires
+ * attribute %NL80211_ATTR_IFINDEX.
+ *
++ * @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified
++ * by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC.
++ * @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT or
++ * %NL80211_ATTR_KEY_THRESHOLD.
++ * @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA,
++ * %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC and %NL80211_ATTR_KEY_CIPHER
++ * attributes.
++ * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX
++ * or %NL80211_ATTR_MAC.
++ *
++ * @NL80211_CMD_GET_BEACON: retrieve beacon information (returned in a
++ * %NL80222_CMD_NEW_BEACON message)
++ * @NL80211_CMD_SET_BEACON: set the beacon on an access point interface
++ * using the %NL80211_ATTR_BEACON_INTERVAL, %NL80211_ATTR_DTIM_PERIOD,
++ * %NL80211_BEACON_HEAD and %NL80211_BEACON_TAIL attributes.
++ * @NL80211_CMD_NEW_BEACON: add a new beacon to an access point interface,
++ * parameters are like for %NL80211_CMD_SET_BEACON.
++ * @NL80211_CMD_DEL_BEACON: remove the beacon, stop sending it
++ *
++ * @NL80211_CMD_GET_STATION: Get station attributes for station identified by
++ * %NL80211_ATTR_MAC on the interface identified by %NL80211_ATTR_IFINDEX.
++ * @NL80211_CMD_SET_STATION: Set station attributes for station identified by
++ * %NL80211_ATTR_MAC on the interface identified by %NL80211_ATTR_IFINDEX.
++ * @NL80211_CMD_NEW_STATION: Add a station with given attributes to the
++ * the interface identified by %NL80211_ATTR_IFINDEX.
++ * @NL80211_CMD_DEL_STATION: Remove a station identified by %NL80211_ATTR_MAC
++ * or, if no MAC address given, all stations, on the interface identified
++ * by %NL80211_ATTR_IFINDEX.
++ *
+ * @NL80211_CMD_MAX: highest used command number
+ * @__NL80211_CMD_AFTER_LAST: internal use
+ */
+@@ -54,6 +95,21 @@ enum nl80211_commands {
+ NL80211_CMD_NEW_INTERFACE,
+ NL80211_CMD_DEL_INTERFACE,
+
++ NL80211_CMD_GET_KEY,
++ NL80211_CMD_SET_KEY,
++ NL80211_CMD_NEW_KEY,
++ NL80211_CMD_DEL_KEY,
++
++ NL80211_CMD_GET_BEACON,
++ NL80211_CMD_SET_BEACON,
++ NL80211_CMD_NEW_BEACON,
++ NL80211_CMD_DEL_BEACON,
++
++ NL80211_CMD_GET_STATION,
++ NL80211_CMD_SET_STATION,
++ NL80211_CMD_NEW_STATION,
++ NL80211_CMD_DEL_STATION,
++
+ /* add commands here */
+
+ /* used to define NL80211_CMD_MAX below */
+@@ -75,6 +131,36 @@ enum nl80211_commands {
+ * @NL80211_ATTR_IFNAME: network interface name
+ * @NL80211_ATTR_IFTYPE: type of virtual interface, see &enum nl80211_iftype
+ *
++ * @NL80211_ATTR_MAC: MAC address (various uses)
++ *
++ * @NL80211_ATTR_KEY_DATA: (temporal) key data; for TKIP this consists of
++ * 16 bytes encryption key followed by 8 bytes each for TX and RX MIC
++ * keys
++ * @NL80211_ATTR_KEY_IDX: key ID (u8, 0-3)
++ * @NL80211_ATTR_KEY_CIPHER: key cipher suite (u32, as defined by IEEE 802.11
++ * section 7.3.2.25.1, e.g. 0x000FAC04)
++ * @NL80211_ATTR_KEY_SEQ: transmit key sequence number (IV/PN) for TKIP and
++ * CCMP keys, each six bytes in little endian
++ *
++ * @NL80211_ATTR_BEACON_INTERVAL: beacon interval in TU
++ * @NL80211_ATTR_DTIM_PERIOD: DTIM period for beaconing
++ * @NL80211_ATTR_BEACON_HEAD: portion of the beacon before the TIM IE
++ * @NL80211_ATTR_BEACON_TAIL: portion of the beacon after the TIM IE
++ *
++ * @NL80211_ATTR_STA_AID: Association ID for the station (u16)
++ * @NL80211_ATTR_STA_FLAGS: flags, nested element with NLA_FLAG attributes of
++ * &enum nl80211_sta_flags.
++ * @NL80211_ATTR_STA_LISTEN_INTERVAL: listen interval as defined by
++ * IEEE 802.11 7.3.1.6 (u16).
++ * @NL80211_ATTR_STA_SUPPORTED_RATES: supported rates, array of supported
++ * rates as defined by IEEE 802.11 7.3.2.2 but without the length
++ * restriction (at most %NL80211_MAX_SUPP_RATES).
++ * @NL80211_ATTR_STA_VLAN: interface index of VLAN interface to move station
++ * to, or the AP interface the station was originally added to to.
++ * @NL80211_ATTR_STA_STATS: statistics for a station, part of station info
++ * given for %NL80211_CMD_GET_STATION, nested attribute containing
++ * info as possible, see &enum nl80211_sta_stats.
++ *
+ * @NL80211_ATTR_MAX: highest attribute number currently defined
+ * @__NL80211_ATTR_AFTER_LAST: internal use
+ */
+@@ -89,12 +175,34 @@ enum nl80211_attrs {
+ NL80211_ATTR_IFNAME,
+ NL80211_ATTR_IFTYPE,
+
++ NL80211_ATTR_MAC,
++
++ NL80211_ATTR_KEY_DATA,
++ NL80211_ATTR_KEY_IDX,
++ NL80211_ATTR_KEY_CIPHER,
++ NL80211_ATTR_KEY_SEQ,
++ NL80211_ATTR_KEY_DEFAULT,
++
++ NL80211_ATTR_BEACON_INTERVAL,
++ NL80211_ATTR_DTIM_PERIOD,
++ NL80211_ATTR_BEACON_HEAD,
++ NL80211_ATTR_BEACON_TAIL,
++
++ NL80211_ATTR_STA_AID,
++ NL80211_ATTR_STA_FLAGS,
++ NL80211_ATTR_STA_LISTEN_INTERVAL,
++ NL80211_ATTR_STA_SUPPORTED_RATES,
++ NL80211_ATTR_STA_VLAN,
++ NL80211_ATTR_STA_STATS,
++
+ /* add attributes here, update the policy in nl80211.c */
+
+ __NL80211_ATTR_AFTER_LAST,
+ NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
+ };
+
++#define NL80211_MAX_SUPP_RATES 32
++
+ /**
+ * enum nl80211_iftype - (virtual) interface types
+ *
+@@ -126,4 +234,50 @@ enum nl80211_iftype {
+ NL80211_IFTYPE_MAX = __NL80211_IFTYPE_AFTER_LAST - 1
+ };
+
++/**
++ * enum nl80211_sta_flags - station flags
++ *
++ * Station flags. When a station is added to an AP interface, it is
++ * assumed to be already associated (and hence authenticated.)
++ *
++ * @NL80211_STA_FLAG_AUTHORIZED: station is authorized (802.1X)
++ * @NL80211_STA_FLAG_SHORT_PREAMBLE: station is capable of receiving frames
++ * with short barker preamble
++ * @NL80211_STA_FLAG_WME: station is WME/QoS capable
++ */
++enum nl80211_sta_flags {
++ __NL80211_STA_FLAG_INVALID,
++ NL80211_STA_FLAG_AUTHORIZED,
++ NL80211_STA_FLAG_SHORT_PREAMBLE,
++ NL80211_STA_FLAG_WME,
++
++ /* keep last */
++ __NL80211_STA_FLAG_AFTER_LAST,
++ NL80211_STA_FLAG_MAX = __NL80211_STA_FLAG_AFTER_LAST - 1
++};
++
++/**
++ * enum nl80211_sta_stats - station statistics
++ *
++ * These attribute types are used with %NL80211_ATTR_STA_STATS
++ * when getting information about a station.
++ *
++ * @__NL80211_STA_STAT_INVALID: attribute number 0 is reserved
++ * @NL80211_STA_STAT_INACTIVE_TIME: time since last activity (u32, msecs)
++ * @NL80211_STA_STAT_RX_BYTES: total received bytes (u32, from this station)
++ * @NL80211_STA_STAT_TX_BYTES: total transmitted bytes (u32, to this station)
++ * @__NL80211_STA_STAT_AFTER_LAST: internal
++ * @NL80211_STA_STAT_MAX: highest possible station stats attribute
++ */
[...23193 lines suppressed...]
/*
* DMA descriptor defines.
@@ -65739,8 +70808,8 @@
/*
* Word5
diff -up linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500usb.h.orig linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500usb.h
---- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500usb.h.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500usb.h 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500usb.h.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500usb.h 2007-12-21 11:47:25.000000000 -0500
@@ -430,10 +430,21 @@
/*
@@ -65776,8 +70845,8 @@
/*
* TX descriptor format for TX, PRIO, ATIM and Beacon Ring.
diff -up linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.h.orig linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.h
---- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.h.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.h 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.h.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.h 2007-12-21 11:47:25.000000000 -0500
@@ -1082,8 +1082,8 @@
/*
* DMA descriptor defines.
@@ -65790,8 +70859,8 @@
/*
* TX descriptor format for TX, PRIO, ATIM and Beacon Ring.
diff -up linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c.orig linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c
---- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00rfkill.c 2007-12-21 11:47:25.000000000 -0500
@@ -23,11 +23,6 @@
Abstract: rt2x00 rfkill routines.
*/
@@ -65877,8 +70946,8 @@
void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev)
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00dump.h
---- /dev/null 2007-12-17 08:39:35.531330196 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00dump.h 2007-12-17 17:44:53.000000000 -0500
+--- /dev/null 2007-12-21 08:33:07.834165456 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00dump.h 2007-12-21 11:47:25.000000000 -0500
@@ -0,0 +1,121 @@
+/*
+ Copyright (C) 2004 - 2007 rt2x00 SourceForge Project
@@ -66002,8 +71071,8 @@
+
+#endif /* RT2X00DUMP_H */
diff -up linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c.orig linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c
---- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00firmware.c 2007-12-21 11:47:25.000000000 -0500
@@ -23,11 +23,6 @@
Abstract: rt2x00 firmware loading routines.
*/
@@ -66017,8 +71086,8 @@
#include <linux/kernel.h>
#include <linux/module.h>
diff -up linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.c
---- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.c 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2500pci.c 2007-12-21 11:47:25.000000000 -0500
@@ -24,11 +24,6 @@
Supported chipsets: RT2560.
*/
@@ -66365,8 +71434,8 @@
.probe = rt2x00pci_probe,
.remove = __devexit_p(rt2x00pci_remove),
diff -up linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt61pci.c.orig linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt61pci.c
---- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt61pci.c.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt61pci.c 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt61pci.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt61pci.c 2007-12-21 11:47:25.000000000 -0500
@@ -24,11 +24,6 @@
Supported chipsets: RT2561, RT2561s, RT2661.
*/
@@ -67103,8 +72172,8 @@
.probe = rt2x00pci_probe,
.remove = __devexit_p(rt2x00pci_remove),
diff -up linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c
---- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.c 2007-12-21 11:47:25.000000000 -0500
@@ -23,11 +23,6 @@
Abstract: rt2x00 generic pci device routines.
*/
@@ -67278,8 +72347,8 @@
* Device initialization handlers.
*/
diff -up linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h.orig linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h
---- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt2x00pci.h 2007-12-21 11:47:25.000000000 -0500
@@ -57,7 +57,7 @@
/*
* Register access.
@@ -67329,8 +72398,8 @@
/*
* Device initialization handlers.
diff -up linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt73usb.c
---- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt73usb.c 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rt2x00/rt73usb.c 2007-12-21 11:47:25.000000000 -0500
@@ -24,11 +24,6 @@
Supported chipsets: rt2571W & rt2671.
*/
@@ -67888,8 +72957,8 @@
.probe = rt2x00usb_probe,
.disconnect = rt2x00usb_disconnect,
diff -up linux-2.6.23.noarch/drivers/net/wireless/p54pci.c.orig linux-2.6.23.noarch/drivers/net/wireless/p54pci.c
---- linux-2.6.23.noarch/drivers/net/wireless/p54pci.c.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/p54pci.c 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/p54pci.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/p54pci.c 2007-12-21 11:47:25.000000000 -0500
@@ -141,6 +141,7 @@ static irqreturn_t p54p_simple_interrupt
static int p54p_read_eeprom(struct ieee80211_hw *dev)
{
@@ -68111,8 +73180,8 @@
static int __devinit p54p_probe(struct pci_dev *pdev,
diff -up linux-2.6.23.noarch/drivers/net/wireless/hostap/hostap_ioctl.c.orig linux-2.6.23.noarch/drivers/net/wireless/hostap/hostap_ioctl.c
---- linux-2.6.23.noarch/drivers/net/wireless/hostap/hostap_ioctl.c.orig 2007-12-17 16:00:01.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/hostap/hostap_ioctl.c 2007-12-17 17:45:06.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/hostap/hostap_ioctl.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/hostap/hostap_ioctl.c 2007-12-21 11:47:25.000000000 -0500
@@ -1089,6 +1089,9 @@ static int prism2_ioctl_giwrange(struct
range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_WPA2 |
IW_ENC_CAPA_CIPHER_TKIP | IW_ENC_CAPA_CIPHER_CCMP;
@@ -68124,8 +73193,8 @@
}
diff -up linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c.orig linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c
---- linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c 2007-12-21 11:47:25.000000000 -0500
@@ -27,6 +27,7 @@ static const struct pci_device_id b43_pc
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4321) },
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4324) },
@@ -68135,8 +73204,8 @@
};
MODULE_DEVICE_TABLE(pci, b43_pci_bridge_tbl);
diff -up linux-2.6.23.noarch/drivers/ssb/main.c.orig linux-2.6.23.noarch/drivers/ssb/main.c
---- linux-2.6.23.noarch/drivers/ssb/main.c.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/ssb/main.c 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/ssb/main.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/ssb/main.c 2007-12-21 11:47:25.000000000 -0500
@@ -872,14 +872,22 @@ EXPORT_SYMBOL(ssb_clockspeed);
static u32 ssb_tmslow_reject_bitmask(struct ssb_device *dev)
@@ -68162,8 +73231,8 @@
}
return (SSB_TMSLOW_REJECT_22 | SSB_TMSLOW_REJECT_23);
diff -up linux-2.6.23.noarch/drivers/ssb/pci.c.orig linux-2.6.23.noarch/drivers/ssb/pci.c
---- linux-2.6.23.noarch/drivers/ssb/pci.c.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/ssb/pci.c 2007-12-17 17:44:53.000000000 -0500
+--- linux-2.6.23.noarch/drivers/ssb/pci.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/ssb/pci.c 2007-12-21 11:47:25.000000000 -0500
@@ -212,29 +212,29 @@ static inline u8 ssb_crc8(u8 crc, u8 dat
return t[crc ^ data];
}
@@ -68554,9 +73623,9 @@
err = -EINVAL;
goto out_kfree;
diff -up linux-2.6.23.noarch/Documentation/feature-removal-schedule.txt.orig linux-2.6.23.noarch/Documentation/feature-removal-schedule.txt
---- linux-2.6.23.noarch/Documentation/feature-removal-schedule.txt.orig 2007-12-17 17:44:47.000000000 -0500
-+++ linux-2.6.23.noarch/Documentation/feature-removal-schedule.txt 2007-12-17 17:44:53.000000000 -0500
-@@ -333,3 +333,20 @@ Why: This driver has been marked obsolet
+--- linux-2.6.23.noarch/Documentation/feature-removal-schedule.txt.orig 2007-12-21 10:43:26.000000000 -0500
++++ linux-2.6.23.noarch/Documentation/feature-removal-schedule.txt 2007-12-21 11:57:47.000000000 -0500
+@@ -333,3 +333,28 @@ Why: This driver has been marked obsolet
Who: Stephen Hemminger <shemminger at linux-foundation.org>
---------------------------
@@ -68570,10 +73639,18 @@
+
+---------------------------
+
-+What: iee80211 softmac wireless networking component
++What: ieee80211 softmac wireless networking component
+When: 2.6.26 (or after removal of bcm43xx and port of zd1211rw to mac80211)
+Files: net/ieee80211/softmac
+Why: No in-kernel drivers will depend on it any longer.
+Who: John W. Linville <linville at tuxdriver.com>
+
+---------------------------
++
++What: rc80211-simple rate control algorithm for mac80211
++When: 2.6.26
++Files: net/mac80211/rc80211-simple.c
++Why: This algorithm was provided for reference but always exhibited bad
++ responsiveness and performance and has some serious flaws. It has been
++ replaced by rc80211-pid.
++Who: Stefano Brivio <stefano.brivio at polimi.it>
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.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- linux-2.6-wireless.patch 17 Dec 2007 23:04:28 -0000 1.14
+++ linux-2.6-wireless.patch 21 Dec 2007 17:35:24 -0000 1.15
@@ -1,386 +1,323 @@
-diff -up linux-2.6.23.noarch/MAINTAINERS.orig linux-2.6.23.noarch/MAINTAINERS
---- linux-2.6.23.noarch/MAINTAINERS.orig 2007-12-17 15:59:19.000000000 -0500
-+++ linux-2.6.23.noarch/MAINTAINERS 2007-12-17 17:23:03.000000000 -0500
-@@ -2489,6 +2489,12 @@ M: mtk.manpages at gmail.com
- W: ftp://ftp.kernel.org/pub/linux/docs/manpages
- S: Maintained
-
-+MARVELL LIBERTAS WIRELESS DRIVER
-+P: Dan Williams
-+M: dcbw at redhat.com
-+L: libertas-dev at lists.infradead.org
-+S: Maintained
-+
- MARVELL MV643XX ETHERNET DRIVER
- P: Dale Farnsworth
- M: dale at farnsworth.org
-diff -up linux-2.6.23.noarch/net/mac80211/ieee80211_rate.c.orig linux-2.6.23.noarch/net/mac80211/ieee80211_rate.c
---- linux-2.6.23.noarch/net/mac80211/ieee80211_rate.c.orig 2007-12-17 16:00:08.000000000 -0500
-+++ linux-2.6.23.noarch/net/mac80211/ieee80211_rate.c 2007-12-17 17:23:10.000000000 -0500
-@@ -33,6 +33,7 @@ int ieee80211_rate_control_register(stru
- if (!strcmp(alg->ops->name, ops->name)) {
- /* don't register an algorithm twice */
- WARN_ON(1);
-+ mutex_unlock(&rate_ctrl_mutex);
- return -EALREADY;
- }
- }
-@@ -59,11 +60,11 @@ void ieee80211_rate_control_unregister(s
- list_for_each_entry(alg, &rate_ctrl_algs, list) {
- if (alg->ops == ops) {
- list_del(&alg->list);
-+ kfree(alg);
- break;
- }
+diff -up linux-2.6.23.noarch/net/mac80211/rx.c.orig linux-2.6.23.noarch/net/mac80211/rx.c
+--- linux-2.6.23.noarch/net/mac80211/rx.c.orig 2007-12-21 10:56:14.000000000 -0500
++++ linux-2.6.23.noarch/net/mac80211/rx.c 2007-12-21 10:56:21.000000000 -0500
+@@ -1443,6 +1443,7 @@ void __ieee80211_rx(struct ieee80211_hw
+ struct ieee80211_sub_if_data *prev = NULL;
+ struct sk_buff *skb_new;
+ u8 *bssid;
++ int hdrlen;
+
+ /*
+ * key references and virtual interfaces are protected using RCU
+@@ -1472,6 +1473,18 @@ void __ieee80211_rx(struct ieee80211_hw
+ rx.fc = le16_to_cpu(hdr->frame_control);
+ type = rx.fc & IEEE80211_FCTL_FTYPE;
+
++ /*
++ * Drivers are required to align the payload data to a four-byte
++ * boundary, so the last two bits of the address where it starts
++ * may not be set. The header is required to be directly before
++ * the payload data, padding like atheros hardware adds which is
++ * inbetween the 802.11 header and the payload is not supported,
++ * the driver is required to move the 802.11 header further back
++ * in that case.
++ */
++ hdrlen = ieee80211_get_hdrlen(rx.fc);
++ WARN_ON_ONCE(((unsigned long)(skb->data + hdrlen)) & 3);
++
+ if (type == IEEE80211_FTYPE_DATA || type == IEEE80211_FTYPE_MGMT)
+ local->dot11ReceivedFragmentCount++;
+
+diff -up linux-2.6.23.noarch/net/mac80211/sta_info.c.orig linux-2.6.23.noarch/net/mac80211/sta_info.c
+--- linux-2.6.23.noarch/net/mac80211/sta_info.c.orig 2007-12-21 10:56:14.000000000 -0500
++++ linux-2.6.23.noarch/net/mac80211/sta_info.c 2007-12-21 10:56:21.000000000 -0500
+@@ -14,6 +14,7 @@
+ #include <linux/slab.h>
+ #include <linux/skbuff.h>
+ #include <linux/if_arp.h>
++#include <linux/timer.h>
+
+ #include <net/mac80211.h>
+ #include "ieee80211_i.h"
+@@ -306,7 +307,8 @@ static void sta_info_cleanup(unsigned lo
}
- mutex_unlock(&rate_ctrl_mutex);
-- kfree(alg);
+ read_unlock_bh(&local->sta_lock);
+
+- local->sta_cleanup.expires = jiffies + STA_INFO_CLEANUP_INTERVAL;
++ local->sta_cleanup.expires =
++ round_jiffies(jiffies + STA_INFO_CLEANUP_INTERVAL);
+ add_timer(&local->sta_cleanup);
}
- EXPORT_SYMBOL(ieee80211_rate_control_unregister);
-diff -up linux-2.6.23.noarch/net/mac80211/ieee80211.c.orig linux-2.6.23.noarch/net/mac80211/ieee80211.c
---- linux-2.6.23.noarch/net/mac80211/ieee80211.c.orig 2007-12-17 16:00:08.000000000 -0500
-+++ linux-2.6.23.noarch/net/mac80211/ieee80211.c 2007-12-17 17:23:10.000000000 -0500
-@@ -427,7 +427,6 @@ static const struct header_ops ieee80211
- void ieee80211_if_setup(struct net_device *dev)
- {
- ether_setup(dev);
-- dev->header_ops = &ieee80211_header_ops;
- dev->hard_start_xmit = ieee80211_subif_start_xmit;
- dev->wireless_handlers = &ieee80211_iw_handler_def;
- dev->set_multicast_list = ieee80211_set_multicast_list;
-diff -up linux-2.6.23.noarch/net/mac80211/ieee80211_sta.c.orig linux-2.6.23.noarch/net/mac80211/ieee80211_sta.c
---- linux-2.6.23.noarch/net/mac80211/ieee80211_sta.c.orig 2007-12-17 16:00:08.000000000 -0500
-+++ linux-2.6.23.noarch/net/mac80211/ieee80211_sta.c 2007-12-17 17:23:10.000000000 -0500
-@@ -808,12 +808,8 @@ static void ieee80211_associated(struct
- sta_info_put(sta);
- }
- if (disassoc) {
-- union iwreq_data wrqu;
-- memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN);
-- wrqu.ap_addr.sa_family = ARPHRD_ETHER;
-- wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL);
-- mod_timer(&ifsta->timer, jiffies +
-- IEEE80211_MONITORING_INTERVAL + 30 * HZ);
-+ ifsta->state = IEEE80211_DISABLED;
-+ ieee80211_set_associated(dev, ifsta, 0);
- } else {
- mod_timer(&ifsta->timer, jiffies +
- IEEE80211_MONITORING_INTERVAL);
-diff -up linux-2.6.23.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.23.noarch/drivers/net/wireless/b43/main.c
---- linux-2.6.23.noarch/drivers/net/wireless/b43/main.c.orig 2007-12-17 16:00:01.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/b43/main.c 2007-12-17 17:23:03.000000000 -0500
-@@ -2163,7 +2163,6 @@ static void b43_mgmtframe_txantenna(stru
- static void b43_chip_exit(struct b43_wldev *dev)
+@@ -345,7 +347,8 @@ void sta_info_init(struct ieee80211_loca
+ INIT_LIST_HEAD(&local->sta_list);
+
+ init_timer(&local->sta_cleanup);
+- local->sta_cleanup.expires = jiffies + STA_INFO_CLEANUP_INTERVAL;
++ local->sta_cleanup.expires =
++ round_jiffies(jiffies + STA_INFO_CLEANUP_INTERVAL);
+ local->sta_cleanup.data = (unsigned long) local;
+ local->sta_cleanup.function = sta_info_cleanup;
+
+diff -up linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c.orig linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c
+--- linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c 2007-12-21 10:56:25.000000000 -0500
+@@ -38,6 +38,8 @@ static struct usb_device_id rtl8187_tabl
+ {USB_DEVICE(0x0846, 0x6a00)},
+ /* HP */
+ {USB_DEVICE(0x03f0, 0xca02)},
++ /* Sitecom */
++ {USB_DEVICE(0x0df6, 0x000d)},
+ {}
+ };
+
+diff -up linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.23.noarch/drivers/net/wireless/Kconfig
+--- linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig 2007-12-21 10:56:24.000000000 -0500
+@@ -587,15 +587,66 @@ config ADM8211
+ config P54_COMMON
+ tristate "Softmac Prism54 support"
+ depends on MAC80211 && WLAN_80211 && FW_LOADER && EXPERIMENTAL
++ ---help---
++ This is common code for isl38xx based cards.
++ This module does nothing by itself - the USB/PCI frontends
++ also need to be enabled in order to support any devices.
++
++ These devices require softmac firmware which can be found at
++ http://prism54.org/
++
++ If you choose to build a module, it'll be called p54common.
+
+ config P54_USB
+ tristate "Prism54 USB support"
+ depends on P54_COMMON && USB
+ select CRC32
++ ---help---
++ This driver is for USB isl38xx based wireless cards.
++ These are USB based adapters found in devices such as:
++
++ 3COM 3CRWE254G72
++ SMC 2862W-G
++ Accton 802.11g WN4501 USB
++ Siemens Gigaset USB
++ Netgear WG121
++ Netgear WG111
++ Medion 40900, Roper Europe
++ Shuttle PN15, Airvast WM168g, IOGear GWU513
++ Linksys WUSB54G
++ Linksys WUSB54G Portable
++ DLink DWL-G120 Spinnaker
++ DLink DWL-G122
++ Belkin F5D7050 ver 1000
++ Cohiba Proto board
++ SMC 2862W-G version 2
++ U.S. Robotics U5 802.11g Adapter
++ FUJITSU E-5400 USB D1700
++ Sagem XG703A
++ DLink DWL-G120 Cohiba
++ Spinnaker Proto board
++ Linksys WUSB54AG
++ Inventel UR054G
++ Spinnaker DUT
++
++ These devices require softmac firmware which can be found at
++ http://prism54.org/
++
++ If you choose to build a module, it'll be called p54usb.
+
+ config P54_PCI
+ tristate "Prism54 PCI support"
+ depends on P54_COMMON && PCI
++ ---help---
++ This driver is for PCI isl38xx based wireless cards.
++ This driver supports most devices that are supported by the
++ fullmac prism54 driver plus many devices which are not
++ supported by the fullmac driver/firmware.
++
++ This driver requires softmac firmware which can be found at
++ http://prism54.org/
++
++ If you choose to build a module, it'll be called p54pci.
+
+ source "drivers/net/wireless/iwlwifi/Kconfig"
+ source "drivers/net/wireless/hostap/Kconfig"
+diff -up linux-2.6.23.noarch/drivers/net/wireless/ipw2200.c.orig linux-2.6.23.noarch/drivers/net/wireless/ipw2200.c
+--- linux-2.6.23.noarch/drivers/net/wireless/ipw2200.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ipw2200.c 2007-12-21 10:56:24.000000000 -0500
+@@ -1233,9 +1233,19 @@ static ssize_t show_event_log(struct dev
{
- b43_radio_turn_off(dev, 1);
-- b43_leds_exit(dev);
- b43_gpio_cleanup(dev);
- /* firmware is released later */
- }
-@@ -2191,11 +2190,10 @@ static int b43_chip_init(struct b43_wlde
- err = b43_gpio_init(dev);
- if (err)
- goto out; /* firmware is released later */
-- b43_leds_init(dev);
-
- err = b43_upload_initvals(dev);
- if (err)
-- goto err_leds_exit;
-+ goto err_gpio_clean;
- b43_radio_turn_on(dev);
-
- b43_write16(dev, 0x03E6, 0x0000);
-@@ -2271,8 +2269,7 @@ out:
-
- err_radio_off:
- b43_radio_turn_off(dev, 1);
--err_leds_exit:
-- b43_leds_exit(dev);
-+err_gpio_clean:
- b43_gpio_cleanup(dev);
- return err;
+ struct ipw_priv *priv = dev_get_drvdata(d);
+ u32 log_len = ipw_get_event_log_len(priv);
+- struct ipw_event log[log_len];
++ u32 log_size;
++ struct ipw_event *log;
+ u32 len = 0, i;
+
++ /* not using min() because of its strict type checking */
++ log_size = PAGE_SIZE / sizeof(*log) > log_len ?
++ sizeof(*log) * log_len : PAGE_SIZE;
++ log = kzalloc(log_size, GFP_KERNEL);
++ if (!log) {
++ IPW_ERROR("Unable to allocate memory for log\n");
++ return 0;
++ }
++ log_len = log_size / sizeof(*log);
+ ipw_capture_event_log(priv, log_len, log);
+
+ len += snprintf(buf + len, PAGE_SIZE - len, "%08X", log_len);
+@@ -1244,6 +1254,7 @@ static ssize_t show_event_log(struct dev
+ "\n%08X%08X%08X",
+ log[i].time, log[i].event, log[i].data);
+ len += snprintf(buf + len, PAGE_SIZE - len, "\n");
++ kfree(log);
+ return len;
}
-@@ -3273,10 +3270,7 @@ static void b43_wireless_core_exit(struc
- return;
- b43_set_status(dev, B43_STAT_UNINIT);
-
-- mutex_unlock(&dev->wl->mutex);
-- b43_rfkill_exit(dev);
-- mutex_lock(&dev->wl->mutex);
+
+diff -up linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c
+--- linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2007-12-21 10:56:24.000000000 -0500
+@@ -6601,8 +6601,6 @@ static void __iwl_down(struct iwl_priv *
+ /* Unblock any waiting calls */
+ wake_up_interruptible_all(&priv->wait_command_queue);
+
+- iwl_cancel_deferred_work(priv);
-
-+ b43_leds_exit(dev);
- b43_rng_exit(dev->wl);
- b43_pio_free(dev);
- b43_dma_free(dev);
-@@ -3405,12 +3399,12 @@ static int b43_wireless_core_init(struct
- memset(wl->mac_addr, 0, ETH_ALEN);
- b43_upload_card_macaddress(dev);
- b43_security_init(dev);
-- b43_rfkill_init(dev);
- b43_rng_init(wl);
-
- b43_set_status(dev, B43_STAT_INITIALIZED);
-
-- out:
-+ b43_leds_init(dev);
-+out:
- return err;
-
- err_chip_exit:
-@@ -3499,6 +3493,10 @@ static int b43_start(struct ieee80211_hw
- int did_init = 0;
- int err = 0;
-
-+ /* First register RFkill.
-+ * LEDs that are registered later depend on it. */
-+ b43_rfkill_init(dev);
-+
- mutex_lock(&wl->mutex);
-
- if (b43_status(dev) < B43_STAT_INITIALIZED) {
-@@ -3528,6 +3526,8 @@ static void b43_stop(struct ieee80211_hw
- struct b43_wl *wl = hw_to_b43_wl(hw);
- struct b43_wldev *dev = wl->current_dev;
-
-+ b43_rfkill_exit(dev);
-+
- mutex_lock(&wl->mutex);
- if (b43_status(dev) >= B43_STAT_STARTED)
- b43_wireless_core_stop(dev);
-diff -up linux-2.6.23.noarch/drivers/net/wireless/b43/leds.c.orig linux-2.6.23.noarch/drivers/net/wireless/b43/leds.c
---- linux-2.6.23.noarch/drivers/net/wireless/b43/leds.c.orig 2007-12-17 16:00:01.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/b43/leds.c 2007-12-17 17:23:03.000000000 -0500
-@@ -163,6 +163,9 @@ static void b43_map_led(struct b43_wldev
- b43_register_led(dev, &dev->led_radio, name,
- b43_rfkill_led_name(dev),
- led_index, activelow);
-+ /* Sync the RF-kill LED state with the switch state. */
-+ if (dev->radio_hw_enable)
-+ b43_led_turn_on(dev, led_index, activelow);
- break;
- case B43_LED_WEIRD:
- case B43_LED_ASSOC:
-@@ -232,4 +235,5 @@ void b43_leds_exit(struct b43_wldev *dev
- b43_unregister_led(&dev->led_tx);
- b43_unregister_led(&dev->led_rx);
- b43_unregister_led(&dev->led_assoc);
-+ b43_unregister_led(&dev->led_radio);
+ /* Wipe out the EXIT_PENDING status bit if we are not actually
+ * exiting the module */
+ if (!exit_pending)
+@@ -6677,6 +6675,8 @@ static void iwl_down(struct iwl_priv *pr
+ mutex_lock(&priv->mutex);
+ __iwl_down(priv);
+ mutex_unlock(&priv->mutex);
++
++ iwl_cancel_deferred_work(priv);
}
-diff -up linux-2.6.23.noarch/drivers/net/wireless/b43/rfkill.c.orig linux-2.6.23.noarch/drivers/net/wireless/b43/rfkill.c
---- linux-2.6.23.noarch/drivers/net/wireless/b43/rfkill.c.orig 2007-12-17 16:00:01.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/b43/rfkill.c 2007-12-17 17:23:03.000000000 -0500
-@@ -25,6 +25,8 @@
- #include "rfkill.h"
- #include "b43.h"
-
-+#include <linux/kmod.h>
-+
-
- /* Returns TRUE, if the radio is enabled in hardware. */
- static bool b43_is_hw_radio_enabled(struct b43_wldev *dev)
-@@ -50,7 +52,10 @@ static void b43_rfkill_poll(struct input
- bool report_change = 0;
-
- mutex_lock(&wl->mutex);
-- B43_WARN_ON(b43_status(dev) < B43_STAT_INITIALIZED);
-+ if (unlikely(b43_status(dev) < B43_STAT_INITIALIZED)) {
-+ mutex_unlock(&wl->mutex);
-+ return;
-+ }
- enabled = b43_is_hw_radio_enabled(dev);
- if (unlikely(enabled != dev->radio_hw_enable)) {
- dev->radio_hw_enable = enabled;
-@@ -60,8 +65,12 @@ static void b43_rfkill_poll(struct input
- }
- mutex_unlock(&wl->mutex);
-- if (unlikely(report_change))
-- input_report_key(poll_dev->input, KEY_WLAN, enabled);
-+ /* send the radio switch event to the system - note both a key press
-+ * and a release are required */
-+ if (unlikely(report_change)) {
-+ input_report_key(poll_dev->input, KEY_WLAN, 1);
-+ input_report_key(poll_dev->input, KEY_WLAN, 0);
-+ }
- }
+ #define MAX_HW_RESTARTS 5
+@@ -9174,10 +9174,9 @@ static void iwl_pci_remove(struct pci_de
- /* Called when the RFKILL toggled in software. */
-@@ -69,13 +78,15 @@ static int b43_rfkill_soft_toggle(void *
- {
- struct b43_wldev *dev = data;
- struct b43_wl *wl = dev->wl;
-- int err = 0;
-+ int err = -EBUSY;
-
- if (!wl->rfkill.registered)
- return 0;
-
- mutex_lock(&wl->mutex);
-- B43_WARN_ON(b43_status(dev) < B43_STAT_INITIALIZED);
-+ if (b43_status(dev) < B43_STAT_INITIALIZED)
-+ goto out_unlock;
-+ err = 0;
- switch (state) {
- case RFKILL_STATE_ON:
- if (!dev->radio_hw_enable) {
-@@ -133,9 +144,25 @@ void b43_rfkill_init(struct b43_wldev *d
- rfk->poll_dev->poll = b43_rfkill_poll;
- rfk->poll_dev->poll_interval = 1000; /* msecs */
-
-+ rfk->poll_dev->input->name = rfk->name;
-+ rfk->poll_dev->input->id.bustype = BUS_HOST;
-+ rfk->poll_dev->input->id.vendor = dev->dev->bus->boardinfo.vendor;
-+ rfk->poll_dev->input->evbit[0] = BIT(EV_KEY);
-+ set_bit(KEY_WLAN, rfk->poll_dev->input->keybit);
-+
- err = rfkill_register(rfk->rfkill);
- if (err)
- goto err_free_polldev;
-+
-+#ifdef CONFIG_RFKILL_INPUT_MODULE
-+ /* B43 RF-kill isn't useful without the rfkill-input subsystem.
-+ * Try to load the module. */
-+ err = request_module("rfkill-input");
-+ if (err)
-+ b43warn(wl, "Failed to load the rfkill-input module. "
-+ "The built-in radio LED will not work.\n");
-+#endif /* CONFIG_RFKILL_INPUT */
-+
- err = input_register_polled_device(rfk->poll_dev);
- if (err)
- goto err_unreg_rfk;
-diff -up linux-2.6.23.noarch/drivers/net/wireless/zd1211rw/zd_mac.c.orig linux-2.6.23.noarch/drivers/net/wireless/zd1211rw/zd_mac.c
---- linux-2.6.23.noarch/drivers/net/wireless/zd1211rw/zd_mac.c.orig 2007-12-17 16:00:01.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/zd1211rw/zd_mac.c 2007-12-17 17:23:03.000000000 -0500
-@@ -1130,6 +1130,8 @@ static void zd_mac_rx(struct zd_mac *mac
- __skb_trim(skb, skb->len -
- (IEEE80211_FCS_LEN + sizeof(struct rx_status)));
+ IWL_DEBUG_INFO("*** UNLOAD DRIVER ***\n");
-+ ZD_ASSERT(IS_ALIGNED((unsigned long)skb->data, 4));
+- mutex_lock(&priv->mutex);
+ set_bit(STATUS_EXIT_PENDING, &priv->status);
+- __iwl_down(priv);
+- mutex_unlock(&priv->mutex);
+
- update_qual_rssi(mac, skb->data, skb->len, stats.signal,
- status->signal_strength);
++ iwl_down(priv);
-@@ -1166,15 +1168,19 @@ static void do_rx(unsigned long mac_ptr)
- int zd_mac_rx_irq(struct zd_mac *mac, const u8 *buffer, unsigned int length)
+ /* Free MAC hash list for ADHOC */
+ for (i = 0; i < IWL_IBSS_MAC_HASH_SIZE; i++) {
+@@ -9236,12 +9235,10 @@ static int iwl_pci_suspend(struct pci_de
{
- struct sk_buff *skb;
-+ unsigned int reserved =
-+ ALIGN(max_t(unsigned int,
-+ sizeof(struct zd_rt_hdr), ZD_PLCP_HEADER_SIZE), 4) -
-+ ZD_PLCP_HEADER_SIZE;
-
-- skb = dev_alloc_skb(sizeof(struct zd_rt_hdr) + length);
-+ skb = dev_alloc_skb(reserved + length);
- if (!skb) {
- struct ieee80211_device *ieee = zd_mac_to_ieee80211(mac);
- dev_warn(zd_mac_dev(mac), "Could not allocate skb.\n");
- ieee->stats.rx_dropped++;
- return -ENOMEM;
- }
-- skb_reserve(skb, sizeof(struct zd_rt_hdr));
-+ skb_reserve(skb, reserved);
- memcpy(__skb_put(skb, length), buffer, length);
- skb_queue_tail(&mac->rx_queue, skb);
- tasklet_schedule(&mac->rx_tasklet);
-diff -up linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.23.noarch/drivers/net/wireless/Kconfig
---- linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig 2007-12-17 16:00:00.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig 2007-12-17 17:23:03.000000000 -0500
-@@ -264,6 +264,7 @@ config IPW2200_DEBUG
- config LIBERTAS
- tristate "Marvell 8xxx Libertas WLAN driver support"
- depends on WLAN_80211
-+ select WIRELESS_EXT
- select IEEE80211
- select FW_LOADER
- ---help---
-diff -up linux-2.6.23.noarch/drivers/net/wireless/ipw2200.c.orig linux-2.6.23.noarch/drivers/net/wireless/ipw2200.c
---- linux-2.6.23.noarch/drivers/net/wireless/ipw2200.c.orig 2007-12-17 16:00:01.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ipw2200.c 2007-12-17 17:23:03.000000000 -0500
-@@ -10751,7 +10751,7 @@ static void ipw_bg_link_down(struct work
- mutex_unlock(&priv->mutex);
+ struct iwl_priv *priv = pci_get_drvdata(pdev);
+
+- mutex_lock(&priv->mutex);
+-
+ set_bit(STATUS_IN_SUSPEND, &priv->status);
+
+ /* Take down the device; powers it off, etc. */
+- __iwl_down(priv);
++ iwl_down(priv);
+
+ if (priv->mac80211_registered)
+ ieee80211_stop_queues(priv->hw);
+@@ -9250,8 +9247,6 @@ static int iwl_pci_suspend(struct pci_de
+ pci_disable_device(pdev);
+ pci_set_power_state(pdev, PCI_D3hot);
+
+- mutex_unlock(&priv->mutex);
+-
+ return 0;
}
--static int ipw_setup_deferred_work(struct ipw_priv *priv)
-+static int __devinit ipw_setup_deferred_work(struct ipw_priv *priv)
- {
- int ret = 0;
+@@ -9309,8 +9304,6 @@ static int iwl_pci_resume(struct pci_dev
-@@ -11600,7 +11600,8 @@ static void ipw_prom_free(struct ipw_pri
- #endif
+ printk(KERN_INFO "Coming out of suspend...\n");
+- mutex_lock(&priv->mutex);
+-
+ pci_set_power_state(pdev, PCI_D0);
+ err = pci_enable_device(pdev);
+ pci_restore_state(pdev);
+@@ -9324,7 +9317,6 @@ static int iwl_pci_resume(struct pci_dev
+ pci_write_config_byte(pdev, 0x41, 0x00);
--static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
-+static int __devinit ipw_pci_probe(struct pci_dev *pdev,
-+ const struct pci_device_id *ent)
- {
- int err = 0;
- struct net_device *net_dev;
-@@ -11767,7 +11768,7 @@ static int ipw_pci_probe(struct pci_dev
- return err;
+ iwl_resume(priv);
+- mutex_unlock(&priv->mutex);
+
+ return 0;
+ }
+diff -up linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c
+--- linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2007-12-21 10:43:36.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2007-12-21 10:56:24.000000000 -0500
+@@ -6246,8 +6246,6 @@ static void __iwl_down(struct iwl_priv *
+ /* Unblock any waiting calls */
+ wake_up_interruptible_all(&priv->wait_command_queue);
+
+- iwl_cancel_deferred_work(priv);
+-
+ /* Wipe out the EXIT_PENDING status bit if we are not actually
+ * exiting the module */
+ if (!exit_pending)
+@@ -6322,6 +6320,8 @@ static void iwl_down(struct iwl_priv *pr
+ mutex_lock(&priv->mutex);
+ __iwl_down(priv);
+ mutex_unlock(&priv->mutex);
++
++ iwl_cancel_deferred_work(priv);
}
--static void ipw_pci_remove(struct pci_dev *pdev)
-+static void __devexit ipw_pci_remove(struct pci_dev *pdev)
+ #define MAX_HW_RESTARTS 5
+@@ -8580,10 +8580,9 @@ static void iwl_pci_remove(struct pci_de
+
+ IWL_DEBUG_INFO("*** UNLOAD DRIVER ***\n");
+
+- mutex_lock(&priv->mutex);
+ set_bit(STATUS_EXIT_PENDING, &priv->status);
+- __iwl_down(priv);
+- mutex_unlock(&priv->mutex);
++
++ iwl_down(priv);
+
+ /* Free MAC hash list for ADHOC */
+ for (i = 0; i < IWL_IBSS_MAC_HASH_SIZE; i++) {
+@@ -8642,12 +8641,10 @@ static int iwl_pci_suspend(struct pci_de
{
- struct ipw_priv *priv = pci_get_drvdata(pdev);
- struct list_head *p, *q;
-diff -up linux-2.6.23.noarch/drivers/net/wireless/bcm43xx/bcm43xx_debugfs.c.orig linux-2.6.23.noarch/drivers/net/wireless/bcm43xx/bcm43xx_debugfs.c
---- linux-2.6.23.noarch/drivers/net/wireless/bcm43xx/bcm43xx_debugfs.c.orig 2007-10-09 16:31:38.000000000 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/bcm43xx/bcm43xx_debugfs.c 2007-12-17 17:23:03.000000000 -0500
-@@ -219,7 +219,7 @@ static ssize_t tsf_write_file(struct fil
- ssize_t buf_size;
- ssize_t res;
- unsigned long flags;
-- u64 tsf;
-+ unsigned long long tsf;
+ struct iwl_priv *priv = pci_get_drvdata(pdev);
- buf_size = min(count, sizeof (really_big_buffer) - 1);
- down(&big_buffer_sem);
-diff -up linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c
---- linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig 2007-12-17 16:00:01.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2007-12-17 17:23:03.000000000 -0500
-@@ -5059,8 +5059,10 @@ static void iwl_irq_tasklet(struct iwl_p
- * when we loaded driver, and is now set to "enable".
- * After we're Alive, RF_KILL gets handled by
- * iwl_rx_card_state_notif() */
-- if (!hw_rf_kill && !test_bit(STATUS_ALIVE, &priv->status))
-+ if (!hw_rf_kill && !test_bit(STATUS_ALIVE, &priv->status)) {
-+ clear_bit(STATUS_RF_KILL_HW, &priv->status);
- queue_work(priv->workqueue, &priv->restart);
-+ }
+- mutex_lock(&priv->mutex);
+-
+ set_bit(STATUS_IN_SUSPEND, &priv->status);
- handled |= CSR_INT_BIT_RF_KILL;
- }
-@@ -6527,6 +6529,7 @@ static void iwl_alive_start(struct iwl_p
- mutex_lock(&priv->mutex);
+ /* Take down the device; powers it off, etc. */
+- __iwl_down(priv);
++ iwl_down(priv);
+
+ if (priv->mac80211_registered)
+ ieee80211_stop_queues(priv->hw);
+@@ -8656,8 +8653,6 @@ static int iwl_pci_suspend(struct pci_de
+ pci_disable_device(pdev);
+ pci_set_power_state(pdev, PCI_D3hot);
- if (rc) {
-+ iwl_rate_control_unregister(priv->hw);
- IWL_ERROR("Failed to register network "
- "device (error %d)\n", rc);
- return;
-diff -up linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c
---- linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2007-12-17 16:00:01.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2007-12-17 17:23:03.000000000 -0500
-@@ -4743,8 +4743,10 @@ static void iwl_irq_tasklet(struct iwl_p
- * when we loaded driver, and is now set to "enable".
- * After we're Alive, RF_KILL gets handled by
- * iwl_rx_card_state_notif() */
-- if (!hw_rf_kill && !test_bit(STATUS_ALIVE, &priv->status))
-+ if (!hw_rf_kill && !test_bit(STATUS_ALIVE, &priv->status)) {
-+ clear_bit(STATUS_RF_KILL_HW, &priv->status);
- queue_work(priv->workqueue, &priv->restart);
-+ }
+- mutex_unlock(&priv->mutex);
+-
+ return 0;
+ }
- handled |= CSR_INT_BIT_RF_KILL;
- }
-@@ -6171,6 +6173,7 @@ static void iwl_alive_start(struct iwl_p
- mutex_lock(&priv->mutex);
+@@ -8715,8 +8710,6 @@ static int iwl_pci_resume(struct pci_dev
+
+ printk(KERN_INFO "Coming out of suspend...\n");
- if (rc) {
-+ iwl_rate_control_unregister(priv->hw);
- IWL_ERROR("Failed to register network "
- "device (error %d)\n", rc);
- return;
+- mutex_lock(&priv->mutex);
+-
+ pci_set_power_state(pdev, PCI_D0);
+ err = pci_enable_device(pdev);
+ pci_restore_state(pdev);
+@@ -8730,7 +8723,6 @@ static int iwl_pci_resume(struct pci_dev
+ pci_write_config_byte(pdev, 0x41, 0x00);
+
+ iwl_resume(priv);
+- mutex_unlock(&priv->mutex);
+
+ return 0;
+ }
- Previous message (by thread): rpms/xguest/F-8 xguest.spec,NONE,1.1 sources,1.1,1.2
- Next message (by thread): rpms/gnome-chemistry-utils/devel .cvsignore, 1.7, 1.8 gnome-chemistry-utils.spec, 1.15, 1.16 sources, 1.7, 1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list